diff --git a/apps/cpu/AcousticPulse/CMakeLists.txt b/apps/cpu/AcousticPulse/CMakeLists.txt
deleted file mode 100644
index abafdc458023fa7b144f71465330bdfd646e5922..0000000000000000000000000000000000000000
--- a/apps/cpu/AcousticPulse/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(AcousticPulse)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(ap BINARY)
diff --git a/apps/cpu/AcousticPulse/ap.cpp b/apps/cpu/AcousticPulse/ap.cpp
deleted file mode 100644
index ce4b07e7c6d487f44427e4a7579e873b94f1b3cf..0000000000000000000000000000000000000000
--- a/apps/cpu/AcousticPulse/ap.cpp
+++ /dev/null
@@ -1,261 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "VirtualFluids.h"
-
-using namespace std;
-
-
-void run()
-{
-   try
-   {
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      int    numOfThreads = 4;
-      double availMem = 5e9;
-
-      //40
-      //string  pathname = "d:/temp/AcousticPulse40Cube2y_test";
-      //double  endTime = 20;
-      //double  outTime = 20;
-      //LBMReal dx =  0.05;
-
-      //80
-      //string  pathname = "d:/temp/AcousticPulse80Cube2y";
-      //double  endTime = 40;
-      //double  outTime = 40;
-      //LBMReal dx = 0.025;
-
-      //160
-      //string  pathname = "d:/temp/AcousticPulse160Cube2y";
-      //double  endTime = 80;
-      //double  outTime = 80;
-      //LBMReal dx = 0.0125;
-
-      //LBMReal dx = 0.1; 
-      //LBMReal dx = 1.66666666667e-2; //120
-      
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 3.97e-7;
-
-      //////////////////////////////////////////////////////////////////////////
-      //DLR-F16 test
-      ////dx_coarse = 0.003 mm
-      string  pathname = "d:/temp/AcousticPulseXZ-4th-0.003";
-      int     endTime = 20;
-      double  outTime = 20;
-      LBMReal dx =  0.003;
-      LBMReal rhoLB = 0.0;
-      LBMReal nuLB = 8.66025e-6;
-      //////////////////////////////////////////////////////////////////////////
-      ////dx_coarse = 0.0015 mm
-      //string  pathname = "d:/temp/AcousticPulseXZ-4th-0.0015";
-      //double  endTime = 40;
-      //double  outTime = 40;
-      //LBMReal dx =  0.0015;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6*2.0;
-      ////////////////////////////////////////////////////////////////////////////
-      ////dx_coarse = 0.00075 mm
-      //string  pathname = "d:/temp/AcousticPulseXZ-4th-0.00075";
-      //double  endTime = 80;
-      //double  outTime = 80;
-      //LBMReal dx =  0.00075;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6*4.0;
-      //////////////////////////////////////////////////////////////////////////
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      int baseLevel = 0;
-      int refineLevel = 1;
-
-      //bounding box
-      double g_minX1 = -0.06;
-      double g_minX2 = -0.06;
-      double g_minX3 = -0.06;
-
-      double g_maxX1 = 0.06;
-      double g_maxX2 = 0.06;
-      double g_maxX3 = 0.06;
-
-      //double g_minX1 = -1;
-      //double g_minX2 = -1;
-      //double g_minX3 = -1;
-
-      //double g_maxX1 = 1;
-      //double g_maxX2 = 1;
-      //double g_maxX3 = 1;
-
-      vector<int>  blocknx(3);
-      blocknx[0] = 10;
-      blocknx[1] = 10;
-      blocknx[2] = 10;
-
-      //geometry
-      SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-
-      double blockLength = blocknx[0] * dx;
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-      grid->setPeriodicX1(true);
-      grid->setPeriodicX2(true);
-      grid->setPeriodicX3(true);
-
-
-      GenBlocksGridVisitor genBlocks(gridCube);
-      grid->accept(genBlocks);
-
-      SPtr<GbObject3D> refCube(new GbCuboid3D(-0.02,-0.02,-0.02,0.02,0.02,0.02));
-      if (myid==0) GbSystem3D::writeGeoObject(refCube.get(), pathname+"/geo/refCube", WbWriterVtkXmlBinary::getInstance());
-
-      if (refineLevel>0)
-      {
-         if (myid==0) UBLOG(logINFO, "Refinement - start");
-         RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel, comm);
-         refineHelper.addGbObject(refCube, refineLevel);
-         refineHelper.refine();
-         if (myid==0) UBLOG(logINFO, "Refinement - end");
-      }
-
-      SPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-      SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-      InteractorsHelper intHelper(grid, metisVisitor);
-      intHelper.selectBlocks();
-
-      ppblocks->process(0);
-      ppblocks.reset();
-
-
-      unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-      int ghostLayer = 3;
-      unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-      unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-      unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-      double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-      double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-         UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-         int minInitLevel = grid->getCoarsestInitializedLevel();
-         int maxInitLevel = grid->getFinestInitializedLevel();
-         for (int level = minInitLevel; level <= maxInitLevel; level++)
-         {
-            int nobl = grid->getNumberOfBlocks(level);
-            UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-            UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-         }
-         UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-         UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-         UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-      }
-
-      double bulckViscosity = 10.0*nuLB;
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel());
-      //dynamicPointerCast<CompressibleCumulant4thOrderViscosityLBMKernel>(kernel)->setBulkViscosity(bulckViscosity);
-      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel());
-      //dynamicPointerCast<CompressibleCumulantLBMKernel>(kernel)->setBulkOmegaToOmega(true);
-      //
-      SPtr<BCProcessor> bcProcessor(new BCProcessor());
-
-      kernel->setBCProcessor(bcProcessor);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-      if (refineLevel>0)
-      {
-         SetUndefinedNodesBlockVisitor undefNodesVisitor;
-         grid->accept(undefNodesVisitor);
-      }
-
-      //set connectors  
-     //SPtr<InterpolationProcessor> iProcessor(new CompressibleOffsetInterpolationProcessor());
-      SPtr<InterpolationProcessor> iProcessor(new CompressibleOffsetMomentsInterpolationProcessor());
-      //dynamicPointerCast<CompressibleOffsetMomentsInterpolationProcessor>(iProcessor)->setBulkViscosity(nuLB, bulckViscosity);
-      SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-
-      UBLOG(logINFO, "SetConnectorsBlockVisitor:start");
-      grid->accept(setConnsVisitor);
-      UBLOG(logINFO, "SetConnectorsBlockVisitor:end");
-
-      mu::Parser fctRoh;
-      //z
-      //fctRoh.SetExpr("epsilon*exp(-alpha*(x1*x1+x2*x2))");
-      //x
-      //fctRoh.SetExpr("epsilon*exp(-alpha*(x3*x3+x2*x2))");
-      //y
-      fctRoh.SetExpr("epsilon*exp(-alpha*scaleFactor*(x3*x3+x1*x1))");
-      //fctRoh.SetExpr("epsilon*exp(-alpha*(x3*x3+x1*x1))");
-
-      fctRoh.DefineConst("epsilon", 1e-3);
-      fctRoh.DefineConst("alpha", log(2.0)/(0.01));
-      fctRoh.DefineConst("scaleFactor", 277.777777779);
-      //fctRoh.SetExpr("x1*0.001");
-
-      //initialization of distributions
-      InitDistributionsBlockVisitor initVisitor;
-      initVisitor.setRho(fctRoh);
-      grid->accept(initVisitor);
-
-      //Postrozess
-      SPtr<UbScheduler> geoSch(new UbScheduler(1));
-      SPtr<CoProcessor> ppgeo(new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-      ppgeo->process(0);
-      ppgeo.reset();
-
-      if (myid==0) UBLOG(logINFO, "Preprozess - end");
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      SPtr<UbScheduler> visSch(new UbScheduler(outTime));
-      SPtr<WriteMacroscopicQuantitiesCoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-      writeMQCoProcessor->process(0);
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-      std::shared_ptr<NUPSCounterCoProcessor> nupsCoProcessor(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-      SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
-      calculator->addCoProcessor(nupsCoProcessor);
-      calculator->addCoProcessor(writeMQCoProcessor);
-
-      //omp_set_num_threads(1);
-
-      if (myid==0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
-      if (myid==0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-   run();
-}
-
diff --git a/apps/cpu/Applications.cmake b/apps/cpu/Applications.cmake
index 2ffe6747b6c8e3a884a4b90ff4fb70007df096bd..4baa53860f20cc7fa6239b115fdfaaf9ce20d6c1 100644
--- a/apps/cpu/Applications.cmake
+++ b/apps/cpu/Applications.cmake
@@ -1,67 +1,3 @@
-#add_subdirectory(tests)
-#add_subdirectory(Applications/gridRf)
-#add_subdirectory(Applications/greenvortex)
-# add_subdirectory(Applications/micropart)
-#add_subdirectory(Applications/sphere)
-#add_subdirectory(Applications/vfscript)
-#add_subdirectory(Applications/reefer)
-#add_subdirectory(Applications/bananas)
-#add_subdirectory(Applications/test1)
-#add_subdirectory(Applications/test2)
-#add_subdirectory(Applications/bananas2)
-# add_subdirectory(Applications/plate)
-# add_subdirectory(Applications/plate2)
-##add_subdirectory(Applications/FlowAroundCylinder)
-add_subdirectory(${APPS_ROOT_CPU}/LaminarTubeFlow)
-# add_subdirectory(Applications/LaminarTubeFlowConv)
-#add_subdirectory(Applications/cylinderSt)
-#add_subdirectory(Applications/mpichTest)
-# add_subdirectory(Applications/block_test)
-# add_subdirectory(Applications/bond_test)
-# add_subdirectory(Applications/bond_benchmark)
-# add_subdirectory(Applications/musis)
-##add_subdirectory(Applications/Hagen_Poiseuille_flow)
-##add_subdirectory(Applications/Hagen_Poiseuille_flow2)
-##add_subdirectory(Applications/mpi_benchmark)
-# add_subdirectory(Applications/shear)
-# add_subdirectory(Applications/wing)
-# add_subdirectory(Applications/bKanal)
-# add_subdirectory(Applications/bKanal2)
-# add_subdirectory(Applications/bKanalAv)
-# add_subdirectory(Applications/fetol_demo)
-# add_subdirectory(Applications/insitu_demo)
-# add_subdirectory(Applications/insitu_demoserver)
-# add_subdirectory(Applications/PlateWithPorousInlay)
-# add_subdirectory(Applications/stick)
-# add_subdirectory(Applications/band)
-# add_subdirectory(Applications/bone)
-# add_subdirectory(Applications/sbone)
-# add_subdirectory(Applications/bbone)
-# add_subdirectory(Applications/porplate2)
-# add_subdirectory(Applications/BeadPack)
-# add_subdirectory(Applications/town)
-##add_subdirectory(Applications/perm)
-#add_subdirectory(Applications/pChannel)
-#add_subdirectory(Applications/pDisk)
-#add_subdirectory(Applications/BoxBenchmark)
-#add_subdirectory(Applications/DHIT)
-#add_subdirectory(Applications/DLR-F16)
-#add_subdirectory(Applications/DLR-F16-Solid)
-#add_subdirectory(Applications/DLR-F16-Porous)
-#add_subdirectory(Applications/aperm)
-#add_subdirectory(Applications/f16test)
-#add_subdirectory(Applications/mirror)
-#add_subdirectory(Applications/levels)
-#add_subdirectory(Applications/AcousticPulse)
-#add_subdirectory(Applications/screw)
-#add_subdirectory(Applications/PoiseuilleFlow)
-#add_subdirectory(Applications/InterfaceTest)
-#add_subdirectory(Applications/teperm)
-#add_subdirectory(Applications/Thermoplast)
-#add_subdirectory(Applications/bChannelA)
-#add_subdirectory(Applications/ConvectionOfVortex)
-#add_subdirectory(Applications/CheckpointConverter)
-#add_subdirectory(Applications/bChannelVA)
-#add_subdirectory(Applications/OrganPipe)
-#add_subdirectory(Applications/LidDrivenCavity)
+
+add_subdirectory(${APPS_ROOT_CPU}/LidDrivenCavity)
 
diff --git a/apps/cpu/BeadPack/CMakeLists.txt b/apps/cpu/BeadPack/CMakeLists.txt
deleted file mode 100644
index 4a12b93fe4e384840145d2ae1d96c85bd12ef9c0..0000000000000000000000000000000000000000
--- a/apps/cpu/BeadPack/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(beadpack)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(beadpack BINARY)
diff --git a/apps/cpu/BeadPack/beadpack.cpp b/apps/cpu/BeadPack/beadpack.cpp
deleted file mode 100644
index e4c95117a9597a30becaa1a1e63c83bb10d9674e..0000000000000000000000000000000000000000
--- a/apps/cpu/BeadPack/beadpack.cpp
+++ /dev/null
@@ -1,438 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <vfluids.h>
-
-using namespace std;
-
-
-void sbonepd(const char *configname)
-{
-   try
-   {
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname, pathGeo;
-      int numOfThreads;
-      double availMem;
-
-      ConfigFileReader cf(configname);
-      if (!cf.read())
-      {
-         std::string exceptionText = "Unable to read configuration file\n";
-         throw exceptionText;
-      }
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (machine == "BOMBADIL")
-      {
-         numOfThreads = 4;
-         pathname = "d:/temp/bbone";
-         pathGeo = "d:/Data/Bone/BigBone";
-         availMem = 15.0e9;
-      }
-      else if (machine == "M01" || machine == "M02")
-      {
-         numOfThreads = 8;
-         pathname = cf.getValue("pathname");
-         pathGeo = cf.getValue("pathGeo");
-         availMem = 12.0e9;
-
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathname.c_str();
-            int status = mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if (myid == 0)
-         {
-            stringstream logFilename;
-            logFilename << pathname + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-
-
-      if (myid == 0) UBLOG(logINFO, "Testcase big bone");
-
-      Grid3DPtr grid(new Grid3D(comm));
-      double deltaVoxel = 11.658e-6;
-
-      double dx = deltaVoxel;
-
-      const int blocknx1 = 64;
-      const int blocknx2 = 64;
-      const int blocknx3 = 64;
-
-      LBMReal rho_LB = 0.0;
-      //nueWasser = 1e-6 m^2/s
-      double nu_real = 1e-6;
-      LBMReal dt = 5e-8; // s (frei gewählt)
-      //dx - frei gewählt
-      //
-      LBMReal nu_LB = nu_real / (dx*dx / dt);
-
-
-      //dp = 50000 Pa - 0 Pa = 50000 Pa
-      double dp_real = UbSystem::stringTo<double>(cf.getValue("pressure")); //5000;
-      //rho wasser = 1000 kg*m^-3
-      double rho_real = 1000;
-      //dp/rho = 50000/1000 = 50 m^2/s^2
-      double dp_div_rho_real = dp_real / rho_real;
-
-      double dp_LB = dp_div_rho_real / ((dx / dt)*(dx / dt));
-
-      bool with_forcing = true;
-
-      double rhoLBinflow;
-      if (with_forcing)
-      {
-         rhoLBinflow = 0.0;
-      }
-      else
-      {
-         rhoLBinflow = dp_LB*3.0;
-      }
-      double deltax = dx;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = 0;
-
-      double coord[6];
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(50000, 50000, 10000000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname, RestartPostprocessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (grid->getTimeStep() == 0)
-      {
-         if (myid == 0) UBLOG(logINFO, "Neustart..");
-
-         string boneFilename = pathGeo + "/cyl_bone2.raw";
-
-         int pmNX1 = 1164;  //abmessung einzelbild in x-richtung
-         int pmNX2 = 972; //abmessung einzelbild in y richtung
-         int pmNX3 = 900; //anzahl der bilder
-         //int pmNX3 = 10; //anzahl der bilder
-         float lthreshold = 109.0;
-         float uthreshold = 255.0;
-
-         GbVoxelMatrix3DPtr bone(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-         bone->readMatrixFromRawFile<unsigned char>(boneFilename, GbVoxelMatrix3D::BigEndian);
-
-         
-         bone->setVoxelMatrixDelta(deltaVoxel, deltaVoxel, deltaVoxel);
-
-         bone->setVoxelMatrixMininum(0.0, 0.0, 0.0);
-
-         if (myid == 0) bone->writeToVTKImageDataASCII(pathname + "/geo/bone");
-
-         ///////////////////////////////////////////////////////
-
-         ////////////////////////////////////////////////////////////////////////
-
-         double offset = 0.5e-3;
-         //bounding box
-         double g_minX1 = bone->getX1Minimum();
-         double g_minX2 = bone->getX2Minimum();
-         double g_minX3 = bone->getX3Minimum() - offset;
-
-         double g_maxX1 = bone->getX1Maximum();
-         double g_maxX2 = bone->getX2Maximum();
-         double g_maxX3 = bone->getX3Maximum() + offset;
-
-         double blockLength = (double)blocknx1*deltax;
-
-         grid->setPeriodicX1(false);
-         grid->setPeriodicX2(false);
-         grid->setPeriodicX3(true);
-         grid->setDeltaX(deltax);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         double forcing = 0;
-         if (with_forcing)
-         {
-            forcing = dp_LB / (blocknx3*grid->getNX3());
-         }
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "with forcing = " << with_forcing);
-            UBLOG(logINFO, "rho_LB = " << rho_LB);
-            UBLOG(logINFO, "nu_LB = " << nu_LB);
-            UBLOG(logINFO, "dp_LB = " << dp_LB);
-            UBLOG(logINFO, "forcing = " << forcing);
-            UBLOG(logINFO, "dx = " << dx << " m");
-            UBLOG(logINFO, "dt = " << dt << " s");
-            UBLOG(logINFO, "rho_real = " << rho_real << " kg*m^-3");
-            UBLOG(logINFO, "nu_real = " << nu_real << " m^2/s");
-            UBLOG(logINFO, "dp_real = " << dp_real << " Pa");
-
-            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
-            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
-            UBLOG(logINFO, "path = " << pathname);
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         //cylinder
-         double radius = 0.0036;
-         double cx1 = 0.007;
-         double cx2 = 0.0046;
-
-         GbObject3DPtr cylinder(new GbCylinder3D(cx1, cx2, g_minX3 - offset, cx1, cx2, g_maxX3 + offset, radius));
-         GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_minX3 - blockLength, g_maxX1 + blockLength, g_maxX2 + blockLength, g_minX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname + "/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_maxX3, g_maxX1 + blockLength, g_maxX2 + blockLength, g_maxX3 + blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname + "/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         //bone interactor
-         int bcOptionBone = 0; //0=simple Bounce Back, 1=quadr. BB, 2=thin wall
-         D3Q27BoundaryConditionAdapterPtr bcBone(new D3Q27NoSlipBCAdapter(bcOptionBone));
-         D3Q27InteractorPtr boneInt(new D3Q27Interactor(bone, grid, bcBone, Interactor3D::SOLID));
-
-         //wall interactors
-         int bcOptionWall = 0; //0=simple Bounce Back, 1=quadr. BB, 2=thin wall
-         D3Q27BoundaryConditionAdapterPtr bcWall(new D3Q27NoSlipBCAdapter(bcOptionWall));
-         D3Q27InteractorPtr cylInt(new D3Q27Interactor(cylinder, grid, bcWall, Interactor3D::INVERSESOLID));
-
-         D3Q27BoundaryConditionAdapterPtr denBCAdapterInflow(new D3Q27DensityBCAdapter(rhoLBinflow));
-         denBCAdapterInflow->setSecondaryBcOption(0);
-         D3Q27InteractorPtr inflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoInflow, grid, denBCAdapterInflow, Interactor3D::SOLID));
-
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapterOutflow(new D3Q27DensityBCAdapter(rho_LB));
-         denBCAdapterOutflow->setSecondaryBcOption(0);
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoOutflow, grid, denBCAdapterOutflow, Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW));
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(boneInt);
-         intHelper.addInteractor(cylInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.selectBlocks();
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nod = nob * (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nodg = nob * (blocknx1 + gl) * (blocknx2 + gl) * (blocknx3 + gl);
-         double needMemAll = double(nodg*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << nob);
-            UBLOG(logINFO, "Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*nodb);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         LBMKernel3DPtr kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-
-         mu::Parser fctForcingX3;
-         fctForcingX3.SetExpr("Fx3");
-         fctForcingX3.DefineConst("Fx3", forcing);
-
-         kernel->setForcingX3(fctForcingX3);
-         kernel->setWithForcing(true);
-
-         //BCProcessorPtr bcProc(new D3Q27ETForThinWallBCProcessor());
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-
-         //BC
-         intHelper.setBC();
-
-         //Press*1.6e8+(14.76-coordsX)/3.5*5000
-         //initialization of distributions
-         //mu::Parser fct;
-         //fct.SetExpr("(x1max-x1)/l*dp*3.0");
-         //fct.DefineConst("dp", dp_LB);
-         //fct.DefineConst("x3max", g_maxX3);
-         //fct.DefineConst("l", g_maxX3-g_minX3);
-
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(nu_LB, rho_LB);
-         //initVisitor.setRho(fct);
-         //initVisitor.setVx1(fct);
-         initVisitor.setVx1(0.0);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-
-
-         coord[0] = bone->getX1Minimum();
-         coord[1] = bone->getX2Minimum();
-         coord[2] = cylinder->getX3Centroid();
-         coord[3] = bone->getX1Maximum();
-         coord[4] = bone->getX2Maximum();
-         coord[5] = cylinder->getX3Centroid();
-
-         ////////////////////////////////////////////////////////
-         FILE * pFile;
-         string str = pathname + "/checkpoints/coord.txt";
-         pFile = fopen(str.c_str(), "w");
-         fprintf(pFile, "%f\n", coord[0]);
-         fprintf(pFile, "%f\n", coord[1]);
-         fprintf(pFile, "%f\n", coord[2]);
-         fprintf(pFile, "%f\n", coord[3]);
-         fprintf(pFile, "%f\n", coord[4]);
-         fprintf(pFile, "%f\n", coord[5]);
-         fclose(pFile);
-         ////////////////////////////////////////////////////////
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         ////////////////////////////////////////////////////////
-         FILE * pFile;
-         string str = pathname + "/checkpoints/coord.txt";
-         pFile = fopen(str.c_str(), "r");
-         fscanf(pFile, "%f\n", &coord[0]);
-         fscanf(pFile, "%f\n", &coord[1]);
-         fscanf(pFile, "%f\n", &coord[2]);
-         fscanf(pFile, "%f\n", &coord[3]);
-         fscanf(pFile, "%f\n", &coord[4]);
-         fscanf(pFile, "%f\n", &coord[5]);
-         fclose(pFile);
-         ////////////////////////////////////////////////////////
-
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-      }
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, numOfThreads, comm);
-
-      double outTime = 30000;
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      stepSch->addSchedule(10, 10, 10);
-      stepSch->addSchedule(100, 100, 100);
-      stepSch->addSchedule(1000, 1000, 1000);
-      stepSch->addSchedule(100, 1500, 2000);
-      stepSch->addSchedule(10000, 10000, 10000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv);
-
-      double dxd2 = deltax / 2.0;
-      D3Q27IntegrateValuesHelperPtr ih1(new D3Q27IntegrateValuesHelper(grid, comm, coord[0] - dxd2, coord[1] - dxd2, coord[2] - dxd2,
-         coord[3] + dxd2, coord[4] + dxd2, coord[5] + dxd2));
-      if (myid == 0) GbSystem3D::writeGeoObject(ih1->getBoundingBox().get(), pathname + "/geo/ih1", WbWriterVtkXmlBinary::getInstance());
-
-      double factorp = dp_real / dp_LB;
-      double factorv = dx / dt;
-      UbSchedulerPtr stepMV(new UbScheduler(100));
-      D3Q27MeanValuesPostprocessor mvp1(grid, stepMV, pathname + "/mv/mv1.txt", comm, ih1, factorp, factorv);
-
-
-      //D3Q27IntegrateValuesHelperPtr ih2(new D3Q27IntegrateValuesHelper(grid, comm, g_maxX1-2.0*deltax, g_minX2, g_minX3,
-      //   g_maxX1 - deltax, g_maxX2, g_maxX3));
-      //if (myid == 0) GbSystem3D::writeGeoObject(ih2->getBoundingBox().get(), pathname + "/geo/ih2", WbWriterVtkXmlBinary::getInstance());
-
-      //D3Q27MeanValuesPostprocessor mvp2(grid, stepSch, pathname + "/mv/mv2.txt", comm, ih2, factorp, factorv);
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      double endTime = UbSystem::stringTo<double>(cf.getValue("endTime")); //100001;//10001.0;
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepMV));
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-
-   if (argv != NULL)
-   {
-      sbonepd(argv[1]);
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/BeadPack/data/NewCentroids.txt b/apps/cpu/BeadPack/data/NewCentroids.txt
deleted file mode 100644
index ba415e9a87146cfac5004a4a3c1fd2fb6ad75d6f..0000000000000000000000000000000000000000
--- a/apps/cpu/BeadPack/data/NewCentroids.txt
+++ /dev/null
@@ -1,6864 +0,0 @@
-2.397382	1.487592	0.417539
-2.368312	0.792199	0.414552
-2.404938	2.334875	0.417688
-2.408864	2.601136	0.404545
-2.452162	1.733784	0.398378
-2.472830	1.032642	0.402264
-2.468872	3.203534	0.411805
-2.490606	0.355152	0.398030
-2.500741	2.847513	0.410899
-2.501491	3.461930	0.407456
-2.500772	4.533719	0.422211
-2.531121	0.099776	0.408834
-2.558878	2.130816	0.400204
-2.620484	3.703871	0.402419
-2.614297	4.973498	0.416388
-2.644836	0.817089	0.406291
-2.635581	1.892093	0.398605
-2.677556	1.652444	0.397556
-2.669632	3.966691	0.414338
-2.683929	4.230982	0.409732
-2.728095	3.262286	0.423016
-2.753871	2.333710	0.405806
-2.750204	2.847755	0.402449
-2.777037	1.429630	0.408025
-2.798280	1.170376	0.417204
-2.312500	1.244167	0.411111
-2.366619	3.733986	0.428577
-2.363713	4.770099	0.427030
-2.408919	3.997405	0.428757
-2.491375	6.236543	0.430558
-2.589587	5.468347	0.425744
-2.608462	6.005923	0.420077
-2.637723	5.740660	0.427030
-2.664545	2.572893	0.415289
-2.690426	4.716170	0.410213
-2.780526	0.172632	0.401579
-2.783232	3.521717	0.414343
-2.810497	2.085580	0.424530
-2.819956	0.425200	0.421333
-2.819569	4.457682	0.438086
-2.875584	0.925455	0.419610
-2.877581	1.836613	0.423629
-2.265437	0.469612	0.424563
-2.259412	3.500980	0.424902
-2.288827	0.202793	0.432346
-2.302544	3.008402	0.430059
-2.356620	5.347183	0.421549
-2.368495	5.600430	0.424516
-2.375093	5.864472	0.428385
-2.432959	4.265867	0.430612
-2.563371	1.290400	0.426457
-2.602632	0.558421	0.415789
-2.740566	6.211321	0.420189
-2.829774	5.125338	0.431955
-2.838870	5.382435	0.429739
-2.865577	3.788462	0.439872
-2.847897	5.915187	0.440374
-2.898192	3.055346	0.439769
-2.216304	1.783152	0.435652
-2.221633	2.760476	0.439932
-2.223838	3.253838	0.437576
-2.250484	4.436290	0.429677
-2.258552	6.356552	0.438069
-2.916866	4.065791	0.447194
-2.928049	2.513049	0.436402
-2.940404	4.720594	0.456318
-2.975446	0.030792	0.433267
-2.969467	1.592311	0.446756
-2.144865	1.535811	0.449392
-2.156744	2.021163	0.442558
-2.156667	2.267901	0.445185
-2.171579	1.063509	0.437193
-2.166571	4.189810	0.458810
-2.274286	6.090571	0.440714
-2.369961	5.077266	0.455352
-2.385510	1.964898	0.432857
-2.858182	0.678939	0.442879
-2.971250	3.340000	0.438750
-3.004615	1.326731	0.444615
-3.000741	2.265926	0.441296
-3.042338	0.280260	0.452403
-2.094858	0.035330	0.467264
-2.132318	4.651060	0.462185
-2.142250	5.478550	0.466050
-2.161797	3.918125	0.455859
-2.145514	4.923730	0.474622
-2.148750	5.214632	0.460147
-2.195714	2.506786	0.443214
-2.941860	6.391395	0.446977
-2.974000	6.154833	0.451167
-3.055106	0.528723	0.445106
-3.058617	2.027766	0.457766
-3.081667	1.067250	0.460333
-2.063247	0.837273	0.473961
-2.092911	3.675443	0.462532
-3.048129	4.291367	0.465396
-3.094164	0.790214	0.473523
-3.061724	5.223448	0.463448
-3.056184	5.756579	0.467895
-2.057681	0.324525	0.483042
-2.045430	1.293333	0.479194
-2.045737	2.946526	0.479158
-3.079532	5.489169	0.491065
-3.134628	2.888512	0.480992
-3.128677	3.869613	0.492581
-3.152727	1.765818	0.473273
-2.025338	3.420912	0.495304
-2.006329	4.409306	0.504913
-2.036471	6.218431	0.481765
-2.057520	5.966545	0.494797
-2.167024	5.732976	0.489167
-3.130435	4.535217	0.484493
-3.143043	2.634348	0.473478
-3.159627	3.167801	0.492116
-1.969557	1.845897	0.512681
-1.978909	0.585527	0.508655
-1.986923	2.689615	0.482308
-3.154933	6.001600	0.499933
-3.226455	0.106636	0.502455
-1.936972	1.054404	0.508532
-1.932615	2.168769	0.506000
-1.962500	2.444196	0.512768
-2.852981	5.625481	0.504904
-3.215521	2.400097	0.521671
-3.209871	4.781484	0.511806
-3.218000	3.433500	0.505750
-3.216122	4.110204	0.500204
-1.918834	3.856632	0.534275
-1.918261	1.586087	0.504348
-1.929562	5.083577	0.526350
-1.934507	5.338169	0.511831
-3.030447	4.983610	0.530000
-2.612966	5.216525	0.531949
-3.242780	1.275415	0.540361
-3.314545	1.517576	0.523939
-1.873882	0.138118	0.530235
-1.905200	4.762945	0.545200
-1.923365	5.594952	0.546346
-2.643443	3.031721	0.542787
-3.010687	3.587694	0.553548
-3.297042	3.669437	0.530282
-3.293654	4.351346	0.529038
-3.295675	5.044810	0.548927
-3.291660	5.332648	0.545929
-3.289350	5.657870	0.552599
-3.337926	0.339407	0.535407
-1.850217	3.090290	0.545290
-1.844217	5.836627	0.546988
-2.929859	2.756268	0.541761
-2.944545	3.086364	0.571364
-3.348621	0.782759	0.532414
-3.345065	2.166623	0.540909
-3.371015	1.038609	0.557594
-1.814949	0.388788	0.556465
-1.812745	1.256863	0.548039
-1.816522	2.840435	0.547391
-1.818585	3.604906	0.553491
-1.825911	4.121921	0.567340
-1.828148	0.835556	0.546481
-1.831011	6.089787	0.562926
-3.382353	1.753382	0.547941
-3.368929	4.582321	0.556071
-1.778737	4.525051	0.577929
-1.796909	6.365164	0.573091
-3.363967	6.160516	0.584321
-3.379647	3.914706	0.564000
-1.767957	2.000215	0.570860
-1.753034	2.605655	0.586414
-1.769918	3.343607	0.589536
-2.227092	0.668723	0.587943
-2.603869	1.503065	0.580352
-2.651250	1.001705	0.577614
-3.131751	6.325036	0.591823
-3.367500	5.897833	0.567167
-1.737204	1.734194	0.585806
-1.728414	2.337252	0.609207
-2.333005	2.151913	0.587432
-2.593492	2.401270	0.574921
-3.454105	2.508158	0.592842
-3.444286	4.162381	0.593401
-1.720179	1.479107	0.599524
-1.723238	4.936238	0.603238
-1.724337	5.434217	0.596747
-1.732581	0.618065	0.579032
-2.322714	0.020714	0.597714
-2.545033	3.848301	0.600458
-2.598500	0.265500	0.598375
-3.245395	1.952500	0.594211
-3.340714	2.715000	0.579286
-3.369130	6.396087	0.583913
-3.460809	3.489223	0.615469
-3.477054	0.140536	0.591339
-3.486379	0.603966	0.590000
-3.484865	1.971757	0.596892
-3.490536	1.330357	0.596964
-1.704972	1.040608	0.610442
-2.438477	0.507531	0.615103
-2.538158	4.723947	0.610197
-2.589894	4.377447	0.608511
-3.237879	0.587677	0.603838
-2.265368	1.378896	0.628067
-2.326066	1.646256	0.622701
-2.519722	1.812917	0.617639
-2.744512	1.927439	0.623963
-2.758642	0.061204	0.626296
-2.791951	1.679024	0.607073
-3.489624	5.489286	0.629023
-1.651161	4.308968	0.633935
-1.670833	5.676019	0.623889
-2.076077	3.182488	0.631675
-2.324197	4.569663	0.641580
-2.448690	1.151508	0.636111
-2.462908	6.001454	0.641684
-2.576327	3.291927	0.642218
-2.818669	6.096730	0.638403
-2.861266	2.353418	0.621899
-3.103488	1.480233	0.623605
-3.498596	5.195000	0.624561
-3.535577	1.580769	0.622115
-1.643774	0.225849	0.635094
-1.632230	2.987311	0.648918
-1.633757	5.196618	0.654538
-1.673731	3.804231	0.641154
-2.306959	2.417872	0.650372
-2.321044	3.387071	0.650135
-2.348478	4.144042	0.655643
-2.480896	5.739254	0.629701
-2.488994	0.820828	0.637515
-2.526848	3.567994	0.648854
-2.658209	6.280000	0.635970
-2.679266	2.178807	0.637982
-2.701818	2.794034	0.645966
-2.798589	4.234896	0.640290
-2.812050	3.416584	0.643043
-2.890765	1.048412	0.644824
-2.950000	3.040000	0.610000
-3.439524	4.813061	0.635374
-3.537865	3.738989	0.638315
-3.550663	0.866188	0.646906
-1.634384	5.934155	0.654292
-1.621625	6.201875	0.647625
-2.259130	3.634565	0.638696
-2.279091	1.907172	0.646768
-2.483165	2.612615	0.651927
-2.701071	1.248049	0.660769
-2.689926	5.880370	0.650815
-2.705106	0.497690	0.661489
-2.743851	0.777905	0.649730
-2.762778	4.604747	0.657424
-3.002613	1.862484	0.655871
-3.590247	0.387407	0.653765
-1.602545	1.265636	0.650364
-1.596048	3.544948	0.670447
-1.614746	4.711695	0.648983
-2.158065	2.643706	0.671853
-2.292331	5.574942	0.675315
-2.304000	3.869143	0.651143
-2.337895	3.117953	0.663450
-2.348532	4.893257	0.658807
-2.441409	5.354228	0.656644
-2.457704	2.882185	0.665333
-2.738983	5.419322	0.649831
-2.833563	4.860063	0.657250
-2.956210	2.968629	0.684435
-2.967804	4.436682	0.663318
-2.984370	5.906296	0.655037
-3.559372	2.208010	0.660471
-3.562955	5.792386	0.655568
-3.604661	1.123898	0.657542
-1.576404	4.068090	0.667978
-2.065062	2.033765	0.675741
-2.071416	4.043382	0.679075
-2.176311	6.350299	0.676013
-2.762201	3.713491	0.680252
-2.968413	0.645329	0.676617
-3.012778	0.133611	0.653889
-3.033940	2.537616	0.682848
-3.572809	6.316340	0.672723
-3.592857	4.620893	0.660893
-1.559213	0.475354	0.682677
-1.555547	0.748984	0.683672
-1.563000	1.879714	0.677571
-1.569689	2.137358	0.676684
-1.557460	2.729206	0.682222
-2.197280	2.908640	0.676000
-2.207910	6.061721	0.693238
-2.269611	0.946833	0.678389
-2.357645	0.259504	0.684545
-2.420127	6.254051	0.673291
-2.633662	5.012817	0.682629
-2.861502	5.178115	0.690990
-2.918478	2.112536	0.677681
-3.020902	3.278443	0.685984
-3.608667	3.989714	0.674476
-2.074688	2.294531	0.676563
-2.112326	1.160066	0.697841
-3.035946	5.656284	0.699527
-3.071687	0.387055	0.701963
-3.126940	5.192672	0.700043
-3.615870	4.983804	0.682391
-3.615655	6.046773	0.702843
-2.020390	3.669894	0.710496
-2.090877	1.557544	0.683860
-2.098194	0.179226	0.711387
-2.131899	4.748354	0.702658
-2.168091	0.433727	0.696273
-2.729212	3.980242	0.704545
-2.910952	6.396190	0.685238
-3.149504	4.244771	0.710458
-3.669000	2.437100	0.696400
-1.515508	2.456017	0.708559
-1.512258	5.511505	0.705699
-2.166268	5.266197	0.709014
-2.795035	3.161678	0.712448
-2.974080	4.058000	0.703120
-3.001826	1.270609	0.702435
-3.161604	1.084528	0.703396
-3.160127	2.172278	0.700000
-3.196029	3.030588	0.695735
-3.455374	4.407357	0.714361
-3.662241	4.262586	0.704741
-3.678974	1.781496	0.707863
-3.663786	3.310214	0.714643
-3.697296	0.664025	0.715597
-1.499756	3.242033	0.724350
-1.506481	4.499568	0.716358
-1.493799	4.973436	0.735307
-2.005123	0.905215	0.727362
-3.007302	3.800476	0.711111
-3.148400	2.783300	0.722600
-1.478393	1.002917	0.735417
-1.496667	1.485145	0.724565
-1.501742	6.389318	0.731136
-1.933623	1.371739	0.724493
-1.962326	4.279457	0.727442
-2.127321	5.007143	0.725089
-2.504146	2.023902	0.720732
-2.734013	2.545405	0.737864
-3.234436	1.664812	0.721278
-3.690556	3.560000	0.713611
-3.728997	0.185350	0.745380
-2.085038	4.496241	0.741729
-2.782862	5.656325	0.749399
-2.835618	0.285843	0.732697
-2.997536	4.684058	0.727246
-3.140611	6.086889	0.740611
-3.147182	0.826364	0.735273
-3.209386	4.514910	0.749675
-3.219636	3.986545	0.746727
-3.225019	5.491407	0.749011
-3.703736	5.610220	0.739011
-3.738947	1.494842	0.738632
-1.905000	0.011429	0.742143
-1.904796	5.291403	0.758100
-2.081667	3.412667	0.750667
-2.795053	1.484526	0.744000
-3.232353	0.188067	0.747059
-3.322683	1.427642	0.751951
-3.350551	2.319291	0.748425
-3.711596	5.226702	0.740000
-1.442583	3.743432	0.763100
-1.426824	4.257882	0.759294
-1.430851	5.808617	0.763298
-1.444762	6.077302	0.748571
-1.840419	2.143263	0.770210
-1.955492	5.879590	0.762705
-1.986272	6.176805	0.759882
-2.368182	5.130545	0.745455
-3.177489	3.459910	0.762960
-3.752035	3.803451	0.760619
-1.432299	0.271839	0.758851
-1.851186	0.237119	0.757627
-1.932055	0.469589	0.760137
-2.486620	1.367512	0.779390
-2.956429	5.419571	0.774429
-3.223431	4.790962	0.775816
-3.234353	3.723882	0.768588
-3.285859	2.574978	0.780661
-3.391176	1.184118	0.762941
-3.408194	3.053965	0.795507
-3.777143	0.920000	0.770286
-1.404593	2.972185	0.789444
-1.406768	4.725253	0.773434
-1.412171	5.260465	0.774961
-1.822931	4.681034	0.765690
-1.836053	1.868947	0.766579
-1.849159	0.705421	0.777290
-1.860621	1.616158	0.789209
-1.921852	2.600926	0.770185
-1.953125	6.397500	0.764375
-2.076073	1.796164	0.781826
-2.203869	5.809311	0.792066
-2.989551	1.631910	0.777865
-3.758429	4.754031	0.781047
-3.784390	2.231220	0.765122
-1.389431	1.249701	0.804251
-1.389762	1.734762	0.780476
-1.852257	2.850817	0.793035
-1.849811	5.538679	0.778868
-2.476749	0.052792	0.797138
-2.506463	2.266463	0.785122
-2.535452	5.552776	0.798194
-2.585108	4.191477	0.794554
-3.028158	4.963474	0.794263
-3.316235	0.435608	0.800314
-3.368723	0.699734	0.789681
-3.362439	2.064024	0.790610
-3.377851	5.004050	0.791240
-3.786757	2.847568	0.786216
-3.809590	0.439147	0.800341
-3.811440	1.186070	0.799728
-1.380195	2.258878	0.803366
-1.375563	3.466406	0.813000
-1.375208	1.987292	0.801875
-1.734930	3.178944	0.795634
-1.866233	1.137860	0.801349
-2.077397	5.481233	0.790000
-2.555560	1.630474	0.803319
-2.629226	5.252440	0.808542
-2.907613	2.741757	0.803964
-3.173286	5.840143	0.795143
-3.377489	5.698018	0.799780
-3.374660	5.999796	0.809048
-3.777983	5.866481	0.799313
-3.803864	4.073977	0.808750
-1.371229	4.010000	0.817973
-1.871671	3.861671	0.825633
-2.091046	0.659346	0.813007
-2.388529	4.367157	0.808922
-2.544516	0.647097	0.802419
-3.323380	6.306852	0.809630
-3.350526	5.261316	0.803684
-3.435177	1.800851	0.822979
-3.770916	6.232977	0.811527
-3.816222	3.103889	0.797222
-1.794958	5.065714	0.816387
-1.839585	3.474473	0.824984
-2.329545	0.741970	0.813485
-2.403438	3.724063	0.813750
-2.536557	3.081639	0.809344
-2.561082	4.564131	0.822754
-2.908693	0.863660	0.825229
-2.943148	3.586296	0.808889
-3.010943	2.320000	0.819057
-3.348889	0.951556	0.810889
-3.471038	0.236415	0.817642
-3.601707	2.000610	0.813171
-1.611400	1.677600	0.823800
-1.774286	4.110000	0.828869
-2.650233	4.804884	0.814884
-2.710141	1.034930	0.819014
-3.193696	1.892174	0.825761
-3.396579	3.332105	0.824737
-3.593151	1.313836	0.823973
-3.857794	1.988578	0.837990
-1.340148	0.490815	0.833852
-1.674087	5.383652	0.834087
-1.680149	0.067139	0.856219
-1.709560	1.397170	0.842327
-1.727326	6.336028	0.852009
-1.721634	0.921206	0.850428
-1.952759	4.875241	0.839103
-2.040645	3.022258	0.828925
-2.299583	2.060625	0.837708
-2.563333	0.351026	0.835449
-2.573607	6.145689	0.849208
-2.779414	4.403555	0.845391
-3.715385	2.627179	0.827436
-3.835978	5.421285	0.837933
-3.871071	2.445893	0.830536
-1.312034	5.530339	0.846356
-1.330120	0.053593	0.843952
-1.309809	2.524306	0.868565
-1.683378	2.599392	0.848986
-1.745817	5.753983	0.866361
-1.777284	6.041802	0.862741
-2.160153	3.857691	0.865294
-2.176571	4.218476	0.853714
-2.433579	3.974632	0.848211
-2.525333	6.392889	0.842222
-2.654748	3.441978	0.854676
-2.744180	2.941719	0.859688
-2.753918	2.295448	0.861493
-2.803908	6.258621	0.842759
-3.069479	6.320274	0.856192
-3.383600	2.793600	0.836000
-3.435035	4.647588	0.862084
-3.447405	3.606997	0.862624
-3.490390	4.128485	0.853030
-3.801609	5.013166	0.863958
-3.861077	4.320615	0.836308
-1.296452	4.491290	0.850484
-1.299860	6.307378	0.869755
-1.739548	4.398404	0.866506
-1.820364	2.390727	0.846545
-2.143789	1.369158	0.869158
-2.203188	3.227536	0.864855
-2.316842	1.180351	0.848421
-2.379250	1.824600	0.870000
-2.445319	3.295319	0.853404
-2.460857	0.950429	0.858429
-2.533789	5.812484	0.860248
-2.847848	1.960000	0.855696
-2.920777	0.050971	0.855243
-3.476173	3.863086	0.858272
-3.562095	5.394775	0.870133
-3.662546	4.487056	0.868488
-3.895920	1.723731	0.864925
-3.885516	3.349008	0.869405
-3.906026	0.689423	0.873429
-1.293172	1.526621	0.866276
-1.281688	3.230130	0.863636
-1.285058	5.057965	0.873256
-1.610789	3.921842	0.861579
-1.662078	0.334416	0.867662
-2.208000	3.591231	0.867385
-2.320694	1.550417	0.862083
-2.352879	0.491629	0.876402
-2.563237	2.743734	0.873817
-2.623462	1.873077	0.860577
-3.510606	1.536364	0.861818
-1.621017	1.161864	0.868305
-1.656279	1.985581	0.875349
-1.685665	3.674162	0.886069
-2.064332	2.429170	0.887148
-2.302759	5.397085	0.888621
-2.427705	2.495738	0.867049
-2.700635	0.150000	0.877460
-2.937527	5.810430	0.879247
-3.138703	0.616444	0.885649
-3.177879	3.224545	0.874444
-3.507094	2.474926	0.882118
-1.264448	0.979178	0.905042
-1.641003	0.599027	0.903186
-1.958750	3.250500	0.875500
-2.284030	2.305970	0.879104
-2.737640	5.954944	0.884719
-2.828667	4.147000	0.882000
-3.547773	0.535547	0.896761
-3.887363	3.622239	0.891294
-3.909011	4.569780	0.884066
-3.940263	1.468684	0.890526
-1.253410	6.032605	0.907241
-1.625374	2.241905	0.911871
-1.622440	4.635833	0.903333
-2.078704	2.168889	0.891481
-2.320027	2.874521	0.902986
-2.358804	5.992919	0.904976
-2.417100	4.796283	0.907063
-2.774314	5.044216	0.895196
-2.901889	3.355056	0.898611
-3.000382	1.095038	0.890916
-3.532148	6.196242	0.901611
-3.568757	1.035444	0.898757
-3.915479	5.668537	0.911755
-3.916205	6.058554	0.902590
-3.943674	0.168295	0.906023
-1.245827	0.711575	0.906299
-1.633989	2.975426	0.913936
-1.998702	5.681985	0.906489
-2.249545	4.605227	0.899886
-2.344211	6.250752	0.905338
-2.520085	5.037627	0.909576
-2.629735	3.707743	0.917168
-2.796157	0.483843	0.911065
-2.852662	3.842230	0.909281
-2.965039	3.091836	0.920664
-2.975780	1.418688	0.917589
-3.199946	1.266965	0.922195
-3.569256	4.878837	0.912140
-3.558571	5.131224	0.902653
-3.942876	3.881046	0.912222
-3.955171	2.686844	0.921217
-1.235251	3.672040	0.926488
-1.223385	4.813231	0.913692
-1.222681	5.767101	0.924275
-1.467032	2.747385	0.926042
-1.484718	0.822077	0.926232
-1.579177	5.140823	0.925127
-2.101038	6.019937	0.930692
-2.746882	5.460000	0.921118
-2.790596	1.666358	0.924503
-2.960647	6.077314	0.937627
-3.058412	2.082575	0.926223
-3.139735	5.320596	0.923576
-3.194096	2.945000	0.927711
-3.599104	2.952939	0.932616
-3.926241	6.387092	0.921135
-3.969286	1.005000	0.906429
-3.968000	2.232333	0.916500
-1.223284	0.286418	0.920448
-1.216129	2.753226	0.915806
-1.219004	5.307229	0.933939
-1.517917	5.647188	0.926979
-1.604080	3.430800	0.932800
-2.000000	4.640552	0.935521
-2.062077	0.040831	0.932971
-2.120691	6.368351	0.923298
-2.669925	0.813284	0.930672
-2.859073	4.746537	0.928683
-3.009104	4.522127	0.931642
-3.522596	2.210894	0.936255
-3.952545	5.216545	0.919636
-2.102935	0.413478	0.947754
-2.160833	2.668854	0.933646
-2.197617	0.917584	0.945336
-2.295225	0.241892	0.935225
-2.340513	5.653718	0.933974
-2.898299	2.515910	0.949433
-3.136286	5.645143	0.939657
-3.248462	4.161026	0.937179
-3.633443	0.782350	0.941366
-3.665512	3.475354	0.943780
-3.966357	4.817214	0.933786
-1.203127	1.761273	0.950873
-1.197041	2.108136	0.959675
-1.198472	3.008908	0.953450
-1.554718	4.157534	0.965147
-1.561045	5.920000	0.938955
-2.081849	5.252798	0.958491
-2.709218	3.189609	0.956034
-2.794648	1.230000	0.958592
-3.029576	4.016186	0.944576
-3.073704	3.737593	0.947963
-3.347132	4.410441	0.951838
-3.582606	5.926649	0.948670
-3.591888	3.224847	0.951480
-3.587091	5.654390	0.965896
-1.177792	3.923766	0.953117
-1.496143	4.414714	0.949429
-1.525031	6.176180	0.968354
-1.729424	4.870373	0.968339
-2.665758	1.448182	0.948333
-3.006909	1.800182	0.963333
-3.154424	0.305707	0.968822
-3.156456	1.603291	0.953038
-3.198233	5.064224	0.970517
-3.263884	0.052416	0.968807
-3.645668	1.718704	0.964615
-3.732841	0.033125	0.960227
-3.949706	2.943971	0.949265
-4.015778	0.408444	0.943778
-4.014265	1.241176	0.949412
-1.181769	1.238435	0.965034
-1.166528	3.423194	0.964028
-1.295723	4.267803	0.971272
-1.488462	3.171209	0.967582
-1.962958	3.657324	0.957042
-2.423423	3.518255	0.964094
-2.522401	2.076095	0.975515
-2.660000	3.986567	0.958209
-3.228920	2.395634	0.968263
-3.664131	0.306239	0.982165
-1.523655	1.506948	0.985542
-1.891134	1.993763	0.981546
-1.934558	4.250726	0.992177
-1.963838	0.807374	0.973636
-2.166076	4.845204	0.991090
-2.542938	1.162147	0.980395
-2.641094	2.519688	0.975469
-2.901918	0.263425	0.972466
-3.029474	4.261228	0.975263
-3.092979	2.718723	0.969787
-3.228386	6.131713	0.999114
-3.254305	3.897219	0.988874
-3.345795	5.506705	0.980000
-3.992872	4.125213	0.972660
-1.468807	4.911684	0.995579
-1.476220	5.396457	0.994685
-1.860000	3.054098	0.984918
-1.913974	1.345364	0.990066
-1.932464	5.454493	0.985217
-2.141969	1.937480	0.991260
-2.320667	5.153333	0.977333
-2.911980	5.226040	0.985248
-3.114300	0.859900	0.983100
-3.656426	3.739279	0.999459
-3.682578	4.245781	0.985781
-4.031020	3.180612	0.976327
-1.134942	4.599826	1.005581
-1.807582	5.242008	1.002664
-1.868811	0.223216	1.010617
-2.032481	1.117786	1.010840
-2.315714	0.014405	1.008452
-2.394439	4.184439	0.999112
-2.730625	5.731625	0.988375
-3.102121	4.755606	0.990455
-3.550635	2.701111	1.002910
-3.705417	1.460000	1.006250
-3.751892	2.308919	0.985676
-4.031121	5.446379	0.997500
-4.054758	2.454516	0.999355
-1.128452	2.395000	1.001786
-1.125000	5.531724	1.002069
-1.147391	0.504239	1.004891
-1.388894	4.652304	1.017235
-1.424488	3.841417	1.007953
-1.452677	0.323780	1.008504
-1.527427	2.468299	1.015975
-1.535000	6.400000	0.990000
-1.923284	6.215654	1.020765
-1.965618	1.738146	1.011124
-2.000923	2.847923	1.014077
-2.073362	3.433491	1.013879
-2.373387	1.347661	1.011935
-2.386604	3.112830	1.000377
-3.084390	3.495122	0.997073
-3.334043	4.847518	1.006667
-3.354638	5.844493	1.004493
-4.040190	4.383641	1.020788
-4.054638	2.013957	1.011489
-1.463051	1.779153	1.010000
-1.753936	2.778617	1.013830
-1.863553	0.508711	1.024654
-2.569657	0.531486	1.021943
-2.574615	0.010000	1.018462
-2.614414	4.313862	1.025448
-2.880625	0.700063	1.019688
-3.291429	2.147500	1.006786
-3.451975	1.978642	1.013457
-4.078571	1.640238	1.015238
-1.105259	6.259397	1.030690
-1.467759	2.075862	1.021638
-1.778759	1.550483	1.033862
-2.002813	3.987188	1.015313
-2.184810	4.398228	1.026835
-2.425111	4.488278	1.033000
-2.444648	0.769859	1.025211
-2.512006	5.314904	1.042866
-2.657029	6.349086	1.028114
-2.776438	2.730959	1.016986
-2.821739	0.984203	1.030145
-2.895489	6.382030	1.033759
-2.964153	4.958602	1.041695
-3.121290	5.891720	1.023333
-3.344231	1.454167	1.031731
-3.449132	1.219589	1.032100
-3.506912	0.107353	1.021029
-3.697500	1.198906	1.025469
-3.707475	4.697273	1.030657
-4.044763	5.872145	1.037326
-4.081846	0.825385	1.018923
-1.106707	1.485122	1.028537
-1.097320	5.033608	1.035464
-1.711202	1.809457	1.042907
-1.705263	5.525724	1.038750
-1.711566	3.235301	1.037349
-1.784030	1.093433	1.035224
-1.911446	5.877107	1.045537
-1.923237	2.593816	1.046184
-1.961901	5.028521	1.038873
-2.148022	1.571758	1.031209
-2.150877	5.535263	1.037544
-2.215120	0.650756	1.043643
-2.786273	2.106182	1.039909
-2.868906	3.616875	1.040391
-2.971798	5.471629	1.039438
-3.273469	1.036531	1.023673
-3.401111	0.328254	1.028571
-3.700880	1.968160	1.035520
-3.721598	6.119315	1.048311
-3.731921	3.991854	1.046291
-3.774390	0.974146	1.028537
-4.076887	3.438344	1.039205
-1.458144	3.591237	1.053608
-2.468173	2.330288	1.042019
-2.481825	1.580079	1.059802
-2.562054	2.936811	1.048595
-2.727699	4.552773	1.061475
-3.335229	3.130065	1.044837
-3.355696	3.438386	1.059272
-3.353281	5.256979	1.056719
-3.402579	0.717557	1.049321
-3.387769	6.350808	1.054115
-3.807518	3.127021	1.045745
-4.086526	3.701579	1.042737
-1.075000	4.112500	1.055385
-1.078333	4.355000	1.048889
-1.343299	2.302577	1.052577
-2.146349	3.063983	1.067967
-2.168985	5.794708	1.067600
-2.646436	4.833317	1.060149
-2.684048	0.310357	1.051905
-3.003115	0.489508	1.055246
-3.000920	2.299920	1.073040
-3.306829	2.634512	1.054878
-3.359425	1.720345	1.055402
-3.762390	2.549044	1.070000
-4.086694	6.129008	1.061983
-1.409247	0.574603	1.071423
-1.415899	1.281079	1.066978
-1.542207	1.036207	1.063793
-1.759046	3.960871	1.070913
-2.254000	2.151273	1.057818
-2.311180	3.944438	1.079551
-2.757742	1.863871	1.059677
-3.741739	5.469217	1.065130
-4.123350	0.045583	1.069369
-4.102563	4.650094	1.081313
-1.069763	0.777515	1.088876
-1.383464	5.171508	1.086927
-1.816339	4.535268	1.076339
-2.310297	1.106441	1.090424
-2.696045	6.091921	1.086384
-2.812427	0.058074	1.090923
-3.219877	1.920370	1.072222
-3.776679	2.824723	1.090000
-3.947168	5.034740	1.083353
-1.062269	1.039244	1.085462
-1.055388	1.927397	1.096895
-1.312022	0.120815	1.100730
-1.368933	3.352135	1.094663
-1.410439	5.798596	1.091140
-1.438595	2.953388	1.083306
-1.673463	1.318382	1.101974
-1.770277	2.383391	1.092907
-1.821115	3.462446	1.092086
-2.190444	3.713556	1.091444
-2.334571	2.555276	1.093436
-2.434861	5.820025	1.104810
-2.524808	1.835385	1.076923
-2.586500	5.563400	1.080500
-3.137896	6.375648	1.105043
-3.260388	0.512816	1.083981
-3.409390	2.889512	1.085488
-3.451176	4.225000	1.083971
-4.016903	0.600265	1.089912
-4.136770	1.069503	1.095590
-4.127400	3.944200	1.078000
-4.142364	2.240909	1.082182
-1.050250	0.294500	1.097500
-1.046941	2.731647	1.093176
-1.049630	3.244321	1.098580
-1.047273	3.737727	1.089394
-1.076241	6.011879	1.110709
-1.602805	0.115732	1.099512
-1.754380	0.851570	1.102562
-2.216496	6.175474	1.099416
-2.287222	1.767460	1.100952
-2.453077	6.129744	1.092308
-2.454624	3.727688	1.107052
-2.509065	3.315234	1.094393
-2.750714	3.404643	1.096786
-3.413152	3.729565	1.096304
-3.482273	3.973364	1.100909
-3.543064	4.469306	1.103179
-3.689076	5.017395	1.112227
-3.783444	0.500927	1.102252
-4.113622	6.383214	1.108724
-4.122259	5.229778	1.105630
-4.134774	2.855827	1.103835
-1.035225	5.739075	1.128575
-1.315020	2.638327	1.114286
-1.327222	4.052698	1.105476
-1.975623	2.200038	1.118717
-2.160670	4.157113	1.111495
-2.257073	3.291463	1.096341
-2.660528	5.097520	1.116341
-2.837485	2.954417	1.109141
-2.960945	5.724800	1.122109
-3.229266	4.574321	1.122283
-3.601795	5.271197	1.103590
-3.916301	1.817534	1.110342
-4.153655	1.369379	1.108759
-4.160659	0.300879	1.102967
-1.027251	4.803555	1.124882
-1.318231	6.387846	1.116846
-1.316667	1.568000	1.113111
-1.669193	5.776278	1.132377
-1.712500	4.312917	1.108542
-1.731586	6.035655	1.123103
-1.954286	3.233214	1.111071
-2.116400	0.215326	1.132189
-2.305795	0.414318	1.127008
-2.420592	4.949079	1.119934
-2.462093	0.193811	1.130154
-2.576349	0.949365	1.110635
-2.749035	2.349649	1.111228
-2.835813	1.504581	1.125567
-3.147434	3.286903	1.115752
-3.474736	6.086504	1.134085
-3.824179	0.754478	1.105821
-1.042597	0.036806	1.141403
-1.015289	2.982975	1.133967
-1.304578	1.923494	1.120843
-1.676667	0.349706	1.126373
-1.698793	6.281379	1.117759
-1.922314	4.791616	1.137118
-2.160328	1.308689	1.117541
-2.160164	2.373115	1.116885
-2.373435	6.371174	1.128217
-2.732892	3.820482	1.123735
-2.809591	4.094737	1.126374
-3.057020	1.052879	1.138990
-3.085870	2.533478	1.116087
-3.787529	5.723435	1.144635
-3.808516	4.475137	1.143104
-3.842378	3.523066	1.140372
-3.856058	2.141923	1.135769
-3.909710	1.369275	1.122899
-4.181786	1.825357	1.123214
-1.008873	3.494225	1.134789
-1.329345	0.814940	1.143155
-1.369534	6.052007	1.144731
-1.682694	3.687917	1.154250
-1.720263	2.089868	1.142303
-2.274423	5.321538	1.134423
-2.557638	2.690236	1.137165
-2.987347	3.866854	1.156502
-3.074758	0.084573	1.151293
-3.220732	4.301707	1.135366
-3.498224	0.966044	1.147383
-3.840977	6.325263	1.139699
-3.881721	0.268605	1.144605
-3.872857	3.791286	1.143714
-4.174059	4.190792	1.139109
-1.276575	4.855205	1.142329
-1.300854	1.073293	1.146951
-1.930897	0.029013	1.159193
-1.957391	5.642120	1.152446
-2.750941	5.347569	1.157020
-2.903973	3.208447	1.154612
-2.958254	1.973175	1.137143
-3.085391	3.020348	1.145130
-3.096380	1.454389	1.158643
-3.495410	2.499836	1.134918
-3.529241	0.514388	1.162110
-4.171959	4.923574	1.158179
-1.005208	1.289396	1.163509
-0.992558	5.205814	1.150233
-1.241750	3.552500	1.153750
-1.572026	2.685294	1.157908
-1.577356	4.517788	1.159808
-1.691725	2.970176	1.172817
-1.718028	5.053216	1.172653
-2.100571	4.595842	1.173451
-2.106222	6.383056	1.168333
-2.582894	1.360547	1.173473
-3.106418	0.685672	1.152239
-3.119667	5.242000	1.157778
-3.174783	4.066957	1.153043
-3.525658	4.810000	1.155000
-3.553691	3.085168	1.158523
-3.847615	5.258231	1.153692
-4.177056	3.117850	1.160467
-0.981475	2.277213	1.166393
-1.670117	0.614869	1.179155
-2.359342	2.836447	1.156974
-2.353275	5.568908	1.180387
-2.544195	3.976839	1.175000
-2.675947	0.722392	1.175482
-2.893846	5.970962	1.162212
-3.204839	3.617258	1.156129
-3.219476	5.713886	1.175764
-3.412326	2.273488	1.161395
-3.542567	1.587647	1.173422
-3.537478	5.818457	1.186647
-3.599783	6.319058	1.163188
-3.994650	2.637899	1.187395
-4.187927	5.699634	1.167439
-1.258122	3.126396	1.180305
-1.281478	4.483024	1.187354
-1.989054	0.661892	1.182568
-2.123402	2.691392	1.185155
-2.200373	5.079814	1.187578
-2.460388	4.695874	1.183350
-2.923806	1.266269	1.183731
-2.969677	2.753548	1.169032
-3.143390	1.710847	1.170678
-3.239277	1.234980	1.189518
-3.407509	5.036194	1.192076
-3.573355	3.546513	1.184770
-3.897380	4.793464	1.191054
-3.898947	0.019649	1.193860
-0.976316	0.520263	1.172632
-0.966866	2.522687	1.184627
-0.972500	4.528889	1.185208
-0.973534	5.461802	1.196007
-1.216288	5.338595	1.197391
-1.268571	0.365824	1.186044
-1.463746	4.275549	1.199634
-1.554854	2.274369	1.177767
-1.973971	1.490294	1.183529
-1.989829	0.932457	1.199010
-2.047612	5.378209	1.181194
-2.281799	0.866296	1.193228
-2.677113	5.860928	1.186495
-2.711143	1.138429	1.178429
-2.794024	0.486402	1.187805
-3.041176	6.157529	1.179412
-3.134706	2.116765	1.178529
-3.483315	5.547983	1.200580
-3.553636	1.841091	1.180364
-4.195686	5.460196	1.178627
-4.219247	2.444384	1.191096
-4.232700	0.526000	1.188200
-1.233130	2.864783	1.200522
-1.255333	3.823367	1.211367
-1.561583	1.646834	1.209151
-1.948912	3.704765	1.207206
-2.022527	6.050989	1.189341
-2.322781	3.513841	1.206424
-2.655697	3.126855	1.206439
-2.908750	1.737000	1.185000
-2.987224	4.492571	1.207510
-3.203176	2.811176	1.196118
-3.260543	0.871628	1.198450
-3.605191	2.126565	1.200916
-3.645474	0.021368	1.196421
-3.699377	3.300649	1.216831
-3.863871	1.131290	1.211548
-3.932133	4.033867	1.191600
-0.961502	1.554725	1.220733
-1.538750	1.920240	1.207596
-1.547023	3.915907	1.218605
-1.670119	4.777774	1.219139
-2.389449	2.001356	1.208771
-2.674101	1.688561	1.208273
-2.937399	4.765507	1.219696
-3.242438	0.294492	1.228600
-3.362075	0.053942	1.216307
-3.873204	5.962039	1.206311
-3.934674	2.375761	1.206522
-3.942133	2.992267	1.210267
-4.238052	1.592792	1.209481
-4.214545	4.453896	1.207532
-4.242757	0.852991	1.217804
-1.161917	1.727083	1.216667
-1.175139	2.138333	1.213472
-1.512676	3.168559	1.226324
-1.587367	3.440253	1.232937
-1.921019	1.237321	1.231434
-1.922661	4.099495	1.227431
-2.328993	4.337114	1.215973
-2.435750	0.619625	1.223625
-2.579707	2.188787	1.223138
-2.584300	3.537000	1.208200
-2.790947	2.585758	1.221061
-2.780000	4.336932	1.211364
-2.901224	5.137343	1.228706
-2.928966	0.850517	1.216983
-2.986050	3.460784	1.223697
-3.005648	4.230741	1.220741
-3.151056	4.996056	1.218732
-3.235876	5.454948	1.225000
-3.223860	5.985175	1.219298
-3.542931	0.252291	1.235739
-3.757184	4.219223	1.229320
-3.944364	5.518682	1.218864
-3.963382	3.260676	1.219710
-4.220690	5.938966	1.207069
-4.243544	3.621772	1.213165
-4.251184	2.054342	1.221513
-0.935085	4.010000	1.225085
-1.221944	2.420833	1.223889
-1.244286	1.366310	1.223810
-1.796533	5.373443	1.239552
-1.872292	2.773125	1.232431
-1.914118	1.924118	1.222000
-1.952243	4.373946	1.238135
-2.106504	3.917154	1.225772
-3.197087	2.348058	1.230388
-3.608202	0.748652	1.229213
-3.817568	1.611171	1.223694
-4.241705	3.362171	1.224961
-1.200744	0.608558	1.244233
-1.195580	4.232536	1.251812
-1.441181	5.463386	1.239055
-1.968723	0.401773	1.243546
-2.081929	1.713655	1.240508
-2.133590	2.031410	1.229103
-2.245104	5.972917	1.236771
-2.289583	1.547946	1.247470
-2.561310	0.409524	1.236786
-2.977692	0.320070	1.232937
-3.987723	0.897991	1.245134
-0.926601	4.273861	1.262673
-0.918961	5.001558	1.246234
-0.928209	6.184142	1.254627
-1.209368	5.074349	1.261152
-1.464815	4.984228	1.258981
-1.822110	1.688165	1.254862
-1.957462	5.157868	1.258528
-1.968053	2.441947	1.244956
-2.235692	4.817826	1.254901
-2.388850	3.144985	1.255811
-2.441931	5.168571	1.256757
-2.529577	2.463169	1.250000
-2.562342	4.457627	1.262975
-2.594444	6.251032	1.252222
-2.784205	5.587273	1.239545
-2.842091	6.269682	1.254136
-3.239173	3.850000	1.246241
-3.300349	4.800233	1.248023
-3.362906	2.042075	1.255434
-3.408627	3.270196	1.246078
-3.682017	2.371335	1.266307
-4.239324	6.192324	1.260206
-0.915054	2.063441	1.258495
-1.562464	0.838261	1.253478
-2.334837	2.272561	1.266748
-3.288995	6.235582	1.270767
-3.458150	1.357500	1.269150
-3.706593	1.391209	1.252747
-4.272817	2.683803	1.249859
-1.234016	5.852582	1.278484
-1.417994	4.694922	1.282821
-1.556632	5.239895	1.270895
-1.671720	4.127204	1.261183
-2.016038	3.446462	1.277962
-2.348333	1.292333	1.257333
-2.633853	1.935229	1.273211
-2.698684	4.696842	1.263421
-3.307324	1.561127	1.261549
-4.014045	1.988427	1.261461
-4.273681	4.710833	1.275417
-0.900545	2.820182	1.271818
-0.902540	3.668889	1.266667
-0.904518	1.805361	1.286807
-0.910569	5.917967	1.285285
-1.131903	6.365000	1.288419
-1.489452	0.247945	1.287705
-1.486585	1.401220	1.284146
-1.558714	6.388857	1.277286
-1.775616	3.240616	1.275205
-1.771563	1.037969	1.274688
-1.897778	6.275641	1.284217
-2.661915	2.869574	1.268298
-2.729163	0.224412	1.293643
-2.810000	3.649752	1.288515
-3.420698	2.733721	1.267209
-3.776604	1.938679	1.265660
-3.984275	6.180290	1.279638
-4.277500	4.006394	1.285433
-0.905478	0.722783	1.286261
-0.897876	3.334115	1.293584
-0.910754	0.214563	1.296310
-1.192807	3.352544	1.283333
-1.222201	5.583082	1.290629
-1.458500	2.481231	1.297269
-1.553254	1.148402	1.293669
-1.698462	0.010000	1.280000
-1.812785	0.211646	1.289367
-1.922767	3.028735	1.294269
-2.053412	5.829529	1.288118
-2.129537	3.200556	1.299722
-2.169713	2.926338	1.301083
-2.486207	1.098103	1.291853
-2.533433	5.411045	1.287687
-2.916073	2.165215	1.295446
-2.971407	5.406422	1.298593
-3.404677	4.357419	1.282419
-3.433929	4.603750	1.277321
-3.613864	1.152273	1.288333
-3.653990	2.641347	1.294301
-3.678217	4.659720	1.293881
-3.707610	3.925975	1.287547
-4.035810	0.413429	1.282286
-4.097035	3.814292	1.285531
-4.305370	1.105278	1.294537
-0.921429	0.985979	1.306455
-1.746818	2.555955	1.303545
-2.151045	1.115771	1.298259
-2.344308	4.087231	1.289077
-2.447355	1.759669	1.298347
-2.488227	5.997608	1.312928
-3.434656	5.299246	1.305180
-3.690606	5.418636	1.301818
-3.729651	6.156483	1.308779
-4.085942	0.156957	1.311957
-4.302000	2.935000	1.303063
-0.874149	4.724149	1.310957
-1.140308	2.654954	1.322923
-1.158462	4.679670	1.307308
-1.363647	6.250294	1.314588
-1.479080	0.507701	1.307356
-2.175613	0.547301	1.319724
-2.563146	5.666067	1.301798
-2.599423	4.185577	1.317356
-2.975263	2.433474	1.301895
-3.529494	4.139747	1.301013
-3.999146	4.245244	1.299390
-4.021944	1.482847	1.312083
-4.049314	1.735490	1.310098
-4.312768	0.318839	1.322202
-4.317212	1.372035	1.321327
-0.900000	6.400000	1.290000
-1.450000	0.010000	1.301818
-1.448333	5.699333	1.312833
-1.615981	6.151646	1.328196
-1.787560	3.892337	1.327629
-1.834861	4.601181	1.316389
-2.498667	0.841778	1.308667
-2.710398	4.952898	1.336748
-3.132793	1.916170	1.335559
-3.219355	2.592396	1.323041
-3.231739	3.429435	1.328696
-3.358132	2.968901	1.317143
-3.658475	5.166949	1.324322
-4.039680	3.500581	1.331512
-4.086304	1.233986	1.319130
-4.324355	1.803710	1.317742
-0.867500	3.070938	1.316250
-0.869730	5.667622	1.331351
-1.158635	1.151683	1.343714
-1.179364	0.173410	1.328439
-1.409143	2.746571	1.319714
-1.656441	5.576356	1.323390
-1.825833	0.775000	1.324333
-1.826612	2.229752	1.329174
-2.137075	5.594318	1.341281
-2.324439	3.834081	1.333184
-2.389058	2.658768	1.331522
-2.581344	3.763226	1.330538
-2.739205	6.052159	1.325568
-2.992016	0.555806	1.322177
-3.192179	3.159615	1.341325
-3.249042	0.546518	1.337029
-3.381086	3.644434	1.339095
-3.740415	0.936062	1.337306
-3.865490	5.021863	1.322451
-3.966364	6.395455	1.319091
-4.036400	4.614044	1.336978
-4.078589	0.665394	1.331992
-4.111341	2.253171	1.323537
-4.270000	6.400000	1.300000
-4.308716	5.305405	1.331757
-1.149106	0.854503	1.346126
-1.357895	2.238421	1.338421
-1.396420	3.588210	1.338827
-2.164020	6.189122	1.355898
-2.200957	2.485826	1.345391
-2.279438	0.237871	1.343373
-2.307586	4.560575	1.339483
-2.727000	0.913500	1.330000
-2.768797	3.956015	1.360301
-3.605538	2.901474	1.340518
-3.644286	4.914945	1.339451
-3.824559	0.695441	1.336912
-3.845833	2.806042	1.336667
-4.315200	4.261920	1.333520
-4.313750	5.044728	1.345707
-1.156528	6.096424	1.360000
-1.377477	4.066495	1.353925
-1.384706	0.975588	1.348088
-1.704571	4.378619	1.349333
-1.839889	6.030667	1.346667
-1.875227	4.927879	1.359318
-2.084819	2.243261	1.363080
-2.126173	1.371296	1.352531
-2.157342	3.651266	1.348987
-2.344268	5.771715	1.358410
-2.730000	3.340859	1.358591
-3.060522	3.692450	1.351044
-3.376984	1.788492	1.352738
-3.457834	3.898344	1.351529
-3.738717	0.450831	1.363302
-4.078687	5.148485	1.344545
-1.084583	0.408542	1.355729
-1.135497	3.637016	1.362356
-1.244487	1.955513	1.356282
-1.335696	1.603882	1.357637
-1.457939	5.945420	1.357939
-1.729015	1.359091	1.355985
-2.135015	4.216481	1.369120
-2.758523	1.415485	1.362700
-2.837645	5.802258	1.369613
-2.848545	3.035818	1.347636
-3.036848	5.651630	1.350652
-3.181591	4.399091	1.350227
-3.281456	4.145890	1.374919
-3.404486	2.420841	1.353551
-3.630000	4.404839	1.357419
-3.655556	5.664222	1.364000
-3.775558	0.175012	1.373753
-4.091207	2.804310	1.351552
-4.326549	5.560070	1.359155
-4.344778	0.665167	1.365167
-4.351406	2.237656	1.355156
-0.847818	1.228242	1.374000
-1.377763	2.996484	1.374338
-1.582590	2.116595	1.384269
-1.657879	2.796364	1.372828
-1.713889	0.433278	1.368389
-1.790446	3.553705	1.371473
-2.046124	0.109018	1.380233
-2.233437	5.276000	1.382000
-2.444154	4.926410	1.377436
-2.470517	3.368793	1.369598
-2.526916	1.529626	1.364579
-2.719306	2.353889	1.357500
-2.864492	1.898984	1.373743
-3.023582	4.027575	1.376157
-3.129722	4.659361	1.374972
-3.221282	1.051795	1.365641
-3.384872	5.723077	1.368718
-3.420748	5.985596	1.384709
-3.673100	1.740900	1.373100
-4.360917	0.051835	1.370000
-4.350606	3.778182	1.360606
-0.841000	2.608438	1.384438
-1.089630	2.986173	1.381687
-1.382932	0.724060	1.384286
-1.729583	1.895000	1.371111
-2.225150	1.873593	1.404012
-2.793818	4.511818	1.376182
-2.949115	0.122478	1.378496
-2.984740	6.023149	1.389513
-3.059641	6.287541	1.392238
-3.078446	2.930052	1.390104
-3.112981	0.775321	1.388226
-3.717143	6.391905	1.369048
-3.883071	3.700357	1.380857
-4.346309	3.184497	1.387349
-0.844133	0.483265	1.391173
-0.826000	3.870621	1.392828
-0.829286	4.488714	1.385857
-0.963611	2.389583	1.383472
-1.056606	5.241946	1.400317
-1.082564	3.890000	1.391731
-1.098129	4.437419	1.386516
-1.689801	5.830618	1.404967
-1.883774	5.639057	1.388962
-2.108968	0.797460	1.391706
-2.400566	6.292925	1.387453
-2.430973	2.912324	1.389189
-2.505862	0.143218	1.382874
-2.859053	2.783158	1.394105
-3.071224	5.173017	1.446753
-3.783445	2.159328	1.382773
-3.870891	4.432772	1.390000
-3.878529	5.775735	1.380588
-4.089015	5.650099	1.388670
-4.084909	5.392000	1.384182
-2.000500	2.634500	1.398500
-2.046866	4.727604	1.420346
-2.671796	0.564012	1.394910
-2.970301	4.954060	1.406466
-3.005614	1.461754	1.395614
-3.035809	1.207794	1.404118
-3.376698	0.763396	1.396604
-3.576977	1.961860	1.387442
-3.569504	3.149917	1.404628
-3.673413	5.915449	1.399940
-3.870000	5.277450	1.405839
-4.095899	4.862158	1.396619
-4.097667	3.068128	1.415026
-4.357117	4.510541	1.399369
-4.366977	2.510930	1.392326
-1.050526	1.380526	1.401447
-1.415051	3.335354	1.412475
-1.606606	3.723761	1.403303
-2.205000	6.400000	1.385000
-2.629545	2.674697	1.398333
-2.860000	1.641778	1.399333
-2.962241	3.241207	1.400000
-3.167941	5.842059	1.399265
-3.519714	3.419643	1.407786
-3.533788	0.053515	1.418703
-3.630476	3.667937	1.396032
-3.819254	3.074319	1.424859
-4.123897	2.549632	1.410221
-4.292117	5.823396	1.424528
-0.807556	2.212000	1.411778
-0.807763	5.174474	1.414079
-0.806409	5.432873	1.429282
-1.053097	4.886940	1.424291
-1.752398	5.149240	1.418363
-1.986961	5.359510	1.421029
-2.396250	0.447955	1.410795
-2.723195	5.304436	1.427594
-2.775779	1.144805	1.427955
-3.137885	1.655962	1.408269
-3.198026	2.169828	1.417854
-3.242581	1.373024	1.420282
-3.498679	0.534528	1.409811
-3.507470	0.969398	1.416506
-3.512042	6.241300	1.429443
-3.774858	3.461862	1.427085
-4.392708	0.914792	1.413333
-0.812923	1.482974	1.434308
-1.375444	4.365000	1.424889
-1.700197	3.048816	1.430724
-1.931885	0.573977	1.443977
-1.926968	1.515968	1.439258
-2.224978	3.416211	1.438326
-2.307626	0.958131	1.435455
-2.523114	4.662216	1.430120
-2.663684	6.390921	1.426053
-2.855479	0.735205	1.425548
-2.959091	0.970000	1.428030
-3.498934	1.561726	1.427005
-3.524577	2.209055	1.433532
-3.918663	3.961089	1.446386
-4.373262	3.455638	1.436099
-4.393878	2.010408	1.422857
-1.062055	2.156043	1.455368
-1.307524	5.321768	1.452958
-1.386154	3.824038	1.432500
-1.624685	0.671958	1.432448
-1.634444	4.911111	1.439753
-1.668833	1.595667	1.442722
-2.214474	5.017456	1.442018
-2.365397	5.518254	1.429524
-2.396709	3.608354	1.435570
-2.709792	2.116458	1.431250
-2.854478	0.395970	1.436567
-2.959224	4.347328	1.434310
-3.850247	1.293333	1.440988
-3.896721	6.014262	1.439672
-4.135205	6.029452	1.426164
-0.794451	4.920751	1.450751
-0.789545	1.963636	1.440000
-1.046000	5.488667	1.436000
-1.315153	0.374133	1.448316
-1.612015	4.608408	1.459204
-1.920444	0.949111	1.444667
-2.020000	3.986737	1.446316
-2.355709	0.699459	1.461047
-3.291993	0.155559	1.453706
-3.448842	4.791053	1.451526
-3.453307	5.074213	1.457387
-3.844691	4.802438	1.462346
-3.934620	1.057468	1.457911
-4.132540	4.398254	1.443810
-4.141161	0.895488	1.462665
-4.158165	1.917982	1.447431
-4.375161	6.080000	1.456129
-1.034009	1.632026	1.470881
-1.083352	5.739066	1.458791
-1.664194	2.363963	1.464885
-2.076054	4.456667	1.459660
-2.276301	2.104384	1.455068
-2.521081	3.985135	1.461351
-2.546716	1.290235	1.474604
-2.565544	3.128601	1.457358
-2.647702	1.761925	1.454783
-3.105244	0.339553	1.459268
-3.228527	4.922558	1.463721
-3.413919	1.191757	1.454865
-3.483619	5.517143	1.458571
-3.712296	4.118667	1.458741
-3.758879	1.526034	1.457845
-3.860100	5.536567	1.466667
-4.220435	1.632609	1.455109
-4.403351	2.752577	1.467268
-1.041712	4.145582	1.475479
-1.184957	2.443043	1.467478
-1.361250	4.864231	1.471731
-1.560867	4.207052	1.472543
-1.602414	0.100172	1.457586
-1.686452	0.903226	1.455484
-1.931212	3.245051	1.467172
-1.963409	3.736439	1.477652
-2.078350	0.353786	1.463786
-2.173713	1.621435	1.477848
-2.182375	5.938294	1.482074
-2.421783	4.377984	1.470698
-2.500455	2.231250	1.460795
-2.630492	3.550492	1.456393
-2.714774	5.567806	1.473613
-2.817516	4.755294	1.474444
-3.167261	5.474331	1.479904
-3.209437	6.098451	1.470423
-3.900410	1.866803	1.477336
-0.772708	2.837708	1.470208
-0.780220	4.257665	1.493901
-0.772667	6.136833	1.470833
-0.865840	3.540720	1.475040
-1.062985	0.631306	1.481903
-1.492881	1.762203	1.472373
-1.652105	5.376374	1.478187
-1.904151	4.266038	1.464717
-1.925045	1.778198	1.473784
-1.985544	1.196361	1.489592
-2.034770	2.011925	1.486109
-2.497372	1.972244	1.495160
-2.593307	6.172996	1.489416
-2.822593	2.544815	1.478272
-2.914925	3.488910	1.487744
-3.481295	2.622302	1.481295
-3.623568	0.749296	1.491044
-3.604557	1.332911	1.476456
-3.963407	3.290296	1.473704
-4.119423	4.120962	1.472692
-4.135503	6.272011	1.482328
-4.182327	0.486449	1.495163
-4.392415	4.811220	1.490707
-0.767037	5.896852	1.480370
-0.975932	0.052091	1.497338
-1.040000	1.890213	1.481915
-1.237054	3.171550	1.490388
-1.371509	0.128679	1.479623
-1.456471	5.527206	1.477941
-1.493114	5.120830	1.493806
-1.831138	0.017886	1.494797
-1.922759	2.860172	1.494741
-1.937105	2.412105	1.487105
-2.207647	2.737843	1.476078
-2.294492	1.213136	1.483390
-2.598608	0.341772	1.482025
-2.603097	5.828344	1.500903
-3.143769	2.414154	1.492846
-3.226022	3.914624	1.488065
-3.285193	2.796941	1.497969
-3.961523	2.361695	1.501351
-4.001818	2.099697	1.479848
-4.184000	3.654000	1.476286
-0.770244	0.706707	1.495976
-0.990336	3.218403	1.499412
-0.993832	6.247665	1.503293
-1.415000	1.205313	1.499375
-1.515524	6.316643	1.498112
-1.674980	3.305451	1.502941
-1.717576	1.147172	1.490202
-1.757295	6.291475	1.497705
-1.935255	5.856861	1.493212
-1.987935	6.378261	1.505109
-2.296000	4.758370	1.498667
-2.488413	2.489087	1.501827
-2.530078	5.140625	1.505000
-2.675082	4.338525	1.497541
-2.830833	6.246083	1.504083
-3.579063	0.300625	1.499844
-3.731556	2.497111	1.496667
-3.978500	0.305000	1.493625
-4.426387	1.191355	1.500129
-0.769730	1.730721	1.503784
-0.759173	3.309774	1.512105
-0.758119	6.386139	1.507723
-0.991527	4.633969	1.512824
-1.001000	2.774800	1.495400
-1.582949	3.949615	1.505128
-1.989300	5.113457	1.518889
-2.313013	3.179289	1.513598
-2.661130	2.895391	1.521609
-2.910377	2.314528	1.511887
-3.284897	6.349259	1.506296
-3.366479	2.000845	1.508662
-3.474921	4.530632	1.522079
-3.470196	4.262941	1.501373
-3.883431	6.274891	1.514453
-4.144576	1.386949	1.506610
-4.198478	3.895435	1.498043
-4.390608	6.356225	1.516852
-0.768269	0.270577	1.505769
-0.763622	1.015748	1.516378
-1.139143	3.428143	1.524821
-1.220058	5.075706	1.532680
-1.347322	4.607596	1.536393
-2.274233	4.040476	1.520106
-2.569324	1.014865	1.517838
-2.603963	0.764756	1.527500
-2.841714	4.150143	1.520000
-2.869740	3.757584	1.525651
-3.051639	2.662941	1.521050
-3.640380	5.323919	1.534133
-3.691373	1.102892	1.532647
-3.928506	0.569545	1.535227
-0.748310	4.680000	1.524648
-0.987244	5.990787	1.532441
-1.248358	1.777015	1.526567
-1.550845	0.325070	1.529789
-1.802545	4.053636	1.523091
-1.980920	6.115690	1.547070
-3.099281	0.020327	1.538497
-3.361878	3.238619	1.531271
-3.649297	3.878486	1.533514
-3.695610	2.750854	1.524878
-3.984727	1.617030	1.533030
-4.438533	1.461400	1.540900
-4.442609	1.734783	1.529891
-4.444211	0.239240	1.549357
-0.756059	2.420402	1.549812
-1.260738	6.266510	1.540940
-1.798763	0.263746	1.544089
-1.797333	2.091444	1.530333
-1.984824	3.488176	1.538765
-2.253588	0.060463	1.546250
-2.421066	1.682377	1.533607
-2.985594	2.067548	1.545441
-3.737570	4.579065	1.535140
-3.869872	0.828590	1.540128
-4.180617	1.144074	1.535926
-4.451597	0.504167	1.543403
-0.737656	5.659844	1.543594
-1.224308	5.936308	1.544154
-1.241796	1.002994	1.546347
-1.403705	1.987771	1.554940
-1.431962	5.774522	1.561411
-1.531302	3.529438	1.560947
-1.564082	1.387347	1.535918
-1.631932	2.610386	1.552850
-1.707153	6.052847	1.548681
-1.820317	4.755926	1.553175
-2.288794	2.338227	1.551844
-2.355030	6.114970	1.548698
-2.738489	0.159568	1.545827
-3.347873	0.396284	1.563863
-3.918151	0.035210	1.549874
-4.044706	5.844444	1.553007
-4.192803	0.188662	1.543949
-4.197474	5.242784	1.554794
-4.203944	4.642394	1.537887
-4.235577	2.139038	1.544423
-4.434722	3.936875	1.551806
-4.442787	4.327213	1.538197
-4.448652	3.676067	1.554607
-4.456964	2.344643	1.543750
-0.800000	3.062791	1.545116
-1.004716	1.106114	1.558777
-1.242222	2.874444	1.548889
-1.400196	2.692745	1.550196
-1.424984	2.437210	1.568464
-1.838259	4.488905	1.562587
-2.161698	2.972013	1.563585
-2.174203	5.455362	1.550435
-2.341538	1.445192	1.546154
-2.783852	6.011475	1.558934
-2.923148	5.443148	1.560926
-3.123909	3.354682	1.560045
-3.330597	3.504080	1.560995
-3.367290	5.315576	1.562679
-3.473529	2.971123	1.564278
-3.696269	5.047388	1.557985
-3.700952	6.109841	1.555238
-3.955831	5.078563	1.565887
-4.439916	5.322185	1.551597
-1.234712	5.573077	1.561731
-1.286710	3.651042	1.580684
-1.440571	6.075285	1.583052
-1.447722	0.553544	1.575612
-1.475618	3.141011	1.561124
-1.525000	2.897000	1.553667
-2.601826	4.864348	1.564261
-2.767320	5.070261	1.569216
-2.933440	4.550960	1.574240
-2.993046	0.540152	1.576701
-3.010172	1.798190	1.572543
-3.113846	4.181538	1.563462
-3.271791	0.905075	1.559851
-3.416989	3.758817	1.576559
-3.514000	5.818105	1.567316
-3.519744	1.801744	1.570564
-3.936667	2.870000	1.559216
-3.945766	2.617297	1.574595
-4.224419	2.381628	1.556512
-4.403148	2.995185	1.554630
-4.447183	5.065211	1.560282
-4.475577	0.759423	1.565000
-0.962102	5.076752	1.577261
-1.281275	2.216765	1.574314
-1.308767	4.160308	1.588062
-1.654043	5.636330	1.585213
-2.160443	0.566650	1.584926
-2.451379	2.732759	1.562586
-2.655973	1.533122	1.585204
-3.243027	0.650412	1.593995
-3.297971	1.596087	1.575072
-3.438551	4.027056	1.582991
-4.187818	2.875591	1.580273
-4.190299	5.512989	1.591413
-4.203366	4.981188	1.575347
-4.430524	5.647640	1.583708
-0.728545	3.729552	1.599179
-0.721798	3.993933	1.583596
-0.986327	2.538878	1.587143
-1.165962	0.215625	1.601851
-1.192875	1.284292	1.594875
-1.493164	0.978418	1.590791
-1.850159	5.494762	1.576190
-2.130696	2.535886	1.589747
-2.197714	3.627238	1.583905
-2.269738	5.681937	1.589372
-2.371268	3.810352	1.590211
-2.617372	3.772993	1.592190
-2.892852	3.012814	1.602281
-3.041767	4.790964	1.592450
-3.071364	5.695682	1.590000
-3.155168	3.080638	1.599195
-3.160909	3.696364	1.589636
-3.207455	1.157182	1.588091
-3.345200	2.304480	1.585920
-3.748878	5.743061	1.580510
-3.981260	4.541732	1.585984
-0.726214	1.294612	1.599854
-0.736584	0.035018	1.605089
-1.253784	1.530270	1.590405
-2.025625	5.647344	1.587031
-2.273548	4.529785	1.599140
-2.423152	5.356957	1.605109
-2.584795	3.358493	1.593973
-2.752480	1.945984	1.607402
-2.791207	0.925000	1.586034
-2.815650	3.271073	1.601243
-2.821694	1.340000	1.600242
-3.181145	4.427786	1.596794
-3.261724	4.668736	1.594368
-3.322450	5.647050	1.601750
-3.694539	4.328628	1.617157
-4.021296	3.506605	1.597284
-4.197219	3.269821	1.608724
-0.974479	0.400888	1.611853
-0.983810	4.371905	1.600000
-1.012857	0.844082	1.601224
-1.646993	1.907692	1.604336
-1.846406	0.763488	1.616335
-2.102105	1.405789	1.608852
-2.200965	6.301667	1.609693
-2.506053	5.606263	1.616474
-2.681911	4.584311	1.612222
-3.024609	6.152344	1.610000
-3.276097	5.907000	1.619774
-3.713101	2.263178	1.601705
-3.775961	3.660471	1.618667
-3.918159	4.169683	1.622857
-4.010230	3.770000	1.598851
-4.358293	0.015000	1.620488
-4.472182	4.581455	1.608545
-0.696613	5.090968	1.615000
-0.719866	0.493795	1.627679
-1.017292	3.683538	1.631046
-1.215000	4.397639	1.608194
-1.709596	0.518051	1.627243
-1.778246	4.996579	1.622982
-2.071391	2.232522	1.617913
-2.090305	4.899329	1.623049
-2.449971	6.348657	1.625714
-2.472749	0.193743	1.620877
-2.505934	4.187552	1.627676
-2.691379	2.382512	1.625714
-2.941346	1.552308	1.608846
-3.069811	1.354717	1.606981
-3.583735	2.046867	1.616145
-3.689470	0.110227	1.616364
-3.710000	6.398889	1.607778
-3.973333	5.365859	1.624293
-1.105986	5.352552	1.646334
-1.166204	4.774745	1.632263
-1.339167	0.780648	1.626944
-1.537314	2.208400	1.636057
-1.595452	4.405452	1.640268
-1.887895	2.622836	1.637778
-2.038412	0.179588	1.636765
-2.121786	1.820595	1.627024
-2.192567	0.834358	1.645012
-2.221387	5.193090	1.644307
-2.376127	4.966861	1.642658
-2.503281	0.501797	1.632188
-2.829292	5.775487	1.635708
-2.944620	1.120163	1.629837
-2.986806	3.976806	1.639660
-3.641019	4.799962	1.634264
-3.780306	0.376735	1.636871
-4.248761	2.619381	1.628230
-4.250000	0.701935	1.619032
-4.462857	5.905357	1.628316
-4.477893	3.232587	1.642053
-4.493467	2.113733	1.627467
-0.706134	2.170672	1.636050
-0.702661	2.665000	1.633952
-0.838036	5.289286	1.639643
-0.915652	5.523913	1.634348
-1.034953	2.982978	1.645235
-1.537404	4.792979	1.640128
-2.252240	4.274536	1.639508
-2.256756	0.331073	1.657415
-2.433750	2.984295	1.644103
-2.739123	0.456316	1.632281
-2.927964	0.287725	1.653593
-3.030484	0.797419	1.628226
-3.288969	2.568041	1.631753
-3.481951	6.053537	1.631707
-3.580914	3.487665	1.646802
-3.761316	1.715833	1.640746
-3.770975	3.306441	1.640254
-4.039739	4.786903	1.655970
-4.233115	5.989180	1.634590
-4.297778	4.160741	1.625185
-4.322048	1.933810	1.649143
-4.492160	2.572960	1.637360
-0.695914	4.468657	1.664029
-0.915476	2.030714	1.643452
-1.113953	3.943446	1.653176
-1.774355	1.486129	1.641129
-1.943632	3.071667	1.657265
-2.059400	4.116000	1.642800
-2.113106	3.290429	1.658359
-2.121168	3.866332	1.660326
-2.831393	2.737214	1.657183
-3.252421	1.824105	1.649368
-3.460317	1.049683	1.653571
-3.564028	0.542678	1.664431
-3.727297	2.967946	1.649243
-4.330256	0.937821	1.642179
-0.691250	1.912813	1.653594
-0.910055	4.826565	1.673740
-0.922410	5.780103	1.658821
-0.964932	2.293741	1.671837
-1.358267	3.349318	1.671136
-1.368904	3.922466	1.659041
-1.524912	1.588772	1.650000
-1.778817	5.249785	1.651398
-2.692378	4.008841	1.664634
-2.998027	5.035646	1.663061
-3.251611	5.099667	1.660556
-3.834559	2.046863	1.660882
-4.024505	6.116264	1.656209
-4.263784	3.521622	1.654865
-1.813393	2.298036	1.657500
-1.853136	3.861124	1.669586
-1.955000	0.435336	1.675268
-2.044195	4.621268	1.681512
-2.464138	3.579496	1.686021
-2.598293	2.139634	1.666829
-2.807923	0.693865	1.678406
-3.087521	5.287355	1.665785
-3.308256	1.367326	1.669186
-3.442282	0.176913	1.666107
-3.545322	2.446271	1.680271
-3.845761	5.948152	1.664457
-3.973889	3.106190	1.676270
-4.239911	4.419710	1.681071
-0.672903	6.231613	1.673226
-0.952544	1.772403	1.690318
-1.508011	5.303441	1.680054
-1.589954	0.752857	1.678433
-1.737854	2.847098	1.692122
-1.797099	4.243704	1.685185
-2.019873	4.352785	1.684051
-2.375893	1.028997	1.690502
-2.468286	4.693143	1.673714
-2.662185	5.278403	1.690868
-2.739500	3.557639	1.687333
-3.182638	0.219049	1.688466
-3.496163	6.324070	1.694462
-3.515096	1.504327	1.672788
-3.631197	5.548547	1.672564
-3.954221	5.647662	1.681688
-3.970862	1.375862	1.665690
-4.235410	1.535246	1.676885
-4.485430	6.163620	1.680995
-0.686071	0.840119	1.682024
-0.682757	3.481243	1.694919
-0.934254	3.414420	1.689779
-1.194069	2.670414	1.685724
-1.207066	0.548430	1.691322
-1.576944	1.200000	1.680833
-1.593934	3.782960	1.704357
-1.689830	3.113182	1.684773
-1.727073	0.987805	1.676341
-1.757381	3.561190	1.697619
-1.892667	1.915048	1.695302
-1.978451	0.984965	1.698204
-2.353333	1.861481	1.679074
-2.574662	6.012180	1.701429
-2.659870	3.091948	1.689351
-2.702273	1.141591	1.672727
-2.928421	2.488900	1.698708
-4.125302	1.761581	1.697953
-4.520167	2.826833	1.682333
-0.675414	5.480446	1.700382
-0.674226	5.847484	1.712452
-0.677565	2.916477	1.702953
-0.818763	1.516598	1.691031
-1.140895	6.109579	1.700105
-1.163425	1.948370	1.708204
-1.583333	0.147241	1.689655
-1.830334	1.239554	1.709136
-1.819859	5.782535	1.691690
-1.851429	3.317792	1.696818
-2.007812	5.350443	1.715568
-2.170545	1.175818	1.694000
-2.589126	1.769417	1.695825
-2.971289	4.333822	1.705600
-3.072556	2.850224	1.705426
-3.236045	2.099364	1.704273
-3.266602	6.162492	1.703625
-3.321994	4.233826	1.708296
-3.458267	4.963600	1.691733
-3.548182	3.184318	1.701023
-3.669038	0.913269	1.686346
-3.665476	4.069762	1.710179
-3.750217	1.464130	1.695217
-4.248958	6.224792	1.695521
-4.516889	4.130444	1.693333
-0.928231	0.640615	1.705308
-0.962101	1.308986	1.710000
-1.127143	3.246032	1.702222
-1.284556	3.054497	1.714911
-1.372308	0.345144	1.713365
-1.969246	1.634295	1.716328
-2.064439	5.896257	1.706791
-2.326026	5.913675	1.708377
-2.354870	2.114348	1.702957
-2.430735	0.725588	1.701471
-2.481136	4.439205	1.710852
-2.603632	2.607164	1.717313
-2.683644	6.264810	1.719096
-2.808866	4.839446	1.724106
-3.531286	2.711857	1.709571
-3.599438	1.265542	1.721888
-3.873981	1.131165	1.707864
-4.017748	0.193576	1.718742
-4.027791	0.735465	1.706279
-4.085203	0.993446	1.706014
-4.087789	2.026131	1.709196
-4.090513	3.984359	1.707487
-4.219310	5.750739	1.712660
-4.282021	3.802766	1.700851
-4.295229	0.383119	1.705688
-4.306798	1.292895	1.714868
-4.515061	3.494268	1.712195
-0.658387	4.793548	1.715968
-1.198252	2.410699	1.717063
-1.341818	4.926364	1.705682
-1.431375	5.558768	1.730516
-1.553537	4.138830	1.736056
-2.265521	2.793542	1.708958
-2.351506	2.552108	1.719699
-2.369351	3.326703	1.721081
-2.437557	1.286989	1.717443
-2.755130	5.537642	1.733782
-3.033690	5.921310	1.724310
-3.039137	2.261223	1.719640
-3.447565	0.784555	1.730628
-3.774957	0.692051	1.719829
-4.512482	4.854184	1.720426
-4.536667	1.127576	1.710606
-0.667147	4.199679	1.741410
-0.939191	0.163003	1.745796
-1.056800	6.360750	1.730650
-1.407143	1.382786	1.732464
-1.535682	6.386477	1.724318
-1.597251	5.920584	1.736495
-1.627419	2.428226	1.721774
-1.766871	6.371224	1.726327
-2.026434	2.835035	1.733916
-2.227391	1.614720	1.733851
-3.249157	3.885542	1.725060
-3.792339	5.215088	1.724737
-3.845244	3.899756	1.722317
-4.051800	0.444600	1.722400
-0.670085	0.260085	1.735043
-0.929215	4.564660	1.751675
-0.957786	2.745496	1.734962
-1.097273	4.206676	1.752159
-1.350000	1.127250	1.726250
-1.357246	0.086087	1.731304
-1.460235	1.806235	1.735176
-1.558051	5.050636	1.745466
-1.707887	4.624227	1.744072
-1.723529	1.708382	1.730735
-1.989700	6.284500	1.741100
-2.469211	2.334211	1.729868
-2.730625	4.255208	1.731563
-2.904379	0.040339	1.751977
-3.810997	2.460587	1.748915
-3.947943	6.373698	1.756901
-3.957391	2.250725	1.733768
-4.538054	1.628725	1.744430
-0.661928	1.088373	1.748855
-0.876766	6.063027	1.756439
-1.293458	6.385981	1.751121
-1.605000	3.362813	1.743750
-1.848566	6.026846	1.760108
-1.999664	3.640839	1.760101
-2.251781	4.764658	1.742740
-2.459710	1.542319	1.744203
-2.607610	0.900467	1.760852
-2.638116	0.046014	1.764638
-2.832222	1.732857	1.735079
-2.973258	3.665955	1.740449
-3.130698	0.989369	1.760897
-3.164359	5.508462	1.737821
-3.244433	4.859691	1.748969
-3.523662	5.214085	1.762934
-3.612949	4.550897	1.739872
-3.832077	4.666385	1.756000
-4.077617	2.472228	1.752124
-4.291404	5.109298	1.744211
-4.525140	5.471215	1.744953
-4.542299	0.387126	1.746207
-4.545935	0.108130	1.757317
-4.545273	0.889273	1.743091
-0.883966	4.066724	1.749310
-1.108300	4.985200	1.763650
-1.291156	5.175306	1.756735
-1.694590	5.451475	1.746393
-1.823007	0.114755	1.763881
-1.993542	2.418125	1.754792
-2.122870	2.035093	1.756111
-2.609321	5.021196	1.776984
-2.826739	2.138261	1.745217
-3.126612	1.634973	1.759180
-3.165041	3.513577	1.754797
-3.437705	4.712623	1.752787
-3.815400	4.952560	1.767680
-4.313649	5.354459	1.752973
-4.533721	3.800093	1.764605
-4.550495	1.371287	1.762673
-0.897813	3.169688	1.757344
-1.167071	3.509607	1.782250
-1.380000	4.332763	1.767763
-1.430849	2.850425	1.777028
-1.481852	2.600370	1.755926
-1.712796	2.086452	1.765054
-1.957789	5.092632	1.772526
-2.334559	3.987000	1.782971
-3.354138	4.487069	1.758276
-3.413290	5.467915	1.776059
-3.784074	2.734120	1.769259
-4.049540	2.760460	1.767816
-4.204961	2.250472	1.767638
-4.218242	3.051923	1.769121
-4.435158	0.632127	1.772262
-4.533979	4.380052	1.767958
-4.546462	1.912718	1.775436
-4.544689	2.331340	1.777703
-1.056332	1.543317	1.781005
-1.127021	1.042766	1.774043
-1.223600	4.580400	1.765800
-1.461413	4.586848	1.768370
-2.234722	3.087500	1.791493
-2.253333	5.431354	1.791736
-2.619775	2.859775	1.779213
-2.626923	5.758889	1.778291
-2.860619	6.095773	1.770619
-3.028152	1.967725	1.786540
-3.066245	4.607844	1.786989
-3.430299	1.945373	1.777164
-3.482381	2.203690	1.770476
-3.635591	5.935118	1.776772
-3.786878	6.164049	1.781073
-3.918333	4.389444	1.765741
-3.946087	1.591304	1.777304
-0.646410	3.164038	1.801987
-1.623657	6.173433	1.788955
-1.900724	4.831743	1.800080
-2.178360	6.118818	1.805326
-2.344363	0.047170	1.797170
-2.670833	1.362667	1.790333
-3.096691	0.440216	1.789065
-3.400719	3.615683	1.788417
-3.497626	3.887671	1.804589
-4.265859	4.850391	1.791406
-4.539952	5.109904	1.791483
-0.638440	5.242200	1.808360
-0.851122	5.053163	1.799082
-1.152404	0.784421	1.812552
-1.191529	5.631294	1.791882
-1.429020	3.581520	1.802804
-2.222167	2.328208	1.805042
-2.625152	0.310649	1.802900
-2.768042	3.802917	1.804833
-3.124835	3.264286	1.801648
-3.374620	3.348511	1.810274
-3.671913	1.902696	1.793304
-4.044250	5.909125	1.790625
-4.069301	5.005175	1.800699
-4.100303	3.656162	1.802929
-4.259716	0.151344	1.817261
-4.306178	2.806497	1.804140
-0.639834	3.909006	1.808785
-0.685412	2.476118	1.799412
-1.233151	3.767740	1.807055
-1.705125	0.334750	1.797125
-1.900301	5.572711	1.807470
-2.136870	5.669696	1.809261
-2.275625	3.716250	1.799167
-2.933679	3.426038	1.807453
-3.099167	4.140833	1.803472
-3.315025	2.807635	1.813645
-3.306162	3.085051	1.816061
-3.499698	5.719430	1.814262
-3.511980	1.708416	1.811188
-3.865299	3.494321	1.814891
-3.908630	1.850822	1.804247
-4.098278	4.229569	1.811292
-4.330000	2.471558	1.811558
-4.545000	5.724189	1.796622
-4.563585	3.034340	1.795849
-0.897862	0.868690	1.819448
-1.104310	5.875324	1.829014
-1.221237	2.179175	1.816082
-1.309111	1.621143	1.827810
-1.366310	5.795833	1.811190
-1.411324	2.334412	1.812794
-1.447577	2.053148	1.833983
-1.478288	3.172432	1.823063
-2.020404	0.727879	1.817980
-2.810392	4.498758	1.815163
-3.119536	2.618543	1.843422
-3.163333	0.010000	1.805000
-3.253840	2.342640	1.818480
-3.342589	0.512816	1.827443
-3.531172	2.949448	1.814690
-3.573375	0.329625	1.820438
-4.081818	1.223766	1.809221
-4.077013	4.582554	1.825455
-4.342857	4.618214	1.803214
-0.641742	1.628949	1.840150
-0.646178	0.634522	1.844650
-0.835368	6.311789	1.820947
-0.857317	3.614390	1.819268
-1.360428	6.050272	1.836654
-1.642979	1.385319	1.815319
-1.906335	4.059050	1.831131
-1.934486	2.175081	1.838541
-2.123121	2.621676	1.829422
-2.153662	0.499415	1.844923
-2.227568	1.370811	1.828378
-2.229691	4.450617	1.830062
-2.386491	5.698333	1.826140
-2.525803	1.968705	1.835181
-2.645839	0.572416	1.829396
-2.894848	1.262121	1.826212
-2.982651	5.654419	1.842302
-3.230519	5.752078	1.829913
-3.309177	1.176450	1.830823
-3.533577	4.335122	1.829756
-3.755714	5.721250	1.829464
-3.876006	0.906433	1.839878
-4.080000	5.257462	1.828231
-4.106087	3.393623	1.821449
-4.324221	4.021388	1.836856
-0.846293	0.417857	1.848333
-0.880267	4.326310	1.848930
-0.946172	3.842813	1.842266
-1.314286	4.097619	1.831905
-1.551087	0.957464	1.836159
-1.563429	0.522762	1.834857
-1.646162	5.680669	1.846655
-1.711392	2.629304	1.842278
-1.985111	1.404667	1.826889
-2.188706	3.472824	1.839118
-2.437050	6.187969	1.848621
-2.513032	3.800323	1.835226
-2.517931	5.473687	1.846393
-2.613920	3.374198	1.849599
-2.834133	1.018700	1.852867
-3.061975	6.222654	1.845247
-3.205280	0.748960	1.838800
-3.586787	0.061155	1.844260
-3.768364	3.136614	1.857000
-3.846652	5.437602	1.845701
-0.618938	6.064779	1.842212
-1.110329	0.356548	1.862027
-1.189344	2.862459	1.840000
-1.193067	1.269067	1.848533
-1.841073	4.431512	1.853902
-2.484199	3.140331	1.859282
-2.637258	4.679274	1.844677
-2.817318	3.199080	1.853870
-2.853511	0.439008	1.850916
-2.851061	5.124182	1.860242
-2.900266	1.521293	1.854905
-2.980833	0.643571	1.844762
-3.130679	1.375299	1.858451
-3.340513	1.535385	1.846154
-3.402414	5.960000	1.845862
-3.652201	3.660647	1.861748
-3.734896	2.221111	1.859028
-3.800183	0.221005	1.850000
-4.089070	5.514651	1.846667
-4.286825	1.075556	1.839206
-4.283770	0.810656	1.846066
-4.340451	1.776285	1.861701
-0.619115	2.105929	1.858584
-0.625698	0.043605	1.853953
-0.714203	1.317536	1.854638
-0.836517	1.934944	1.854382
-0.954328	5.622313	1.858358
-1.411066	0.735279	1.865736
-1.762482	0.817445	1.857518
-1.823356	0.569726	1.860137
-2.388480	4.245673	1.855731
-2.377813	5.109875	1.864250
-2.404938	0.550000	1.853951
-2.662500	1.605882	1.853382
-3.027500	3.047813	1.859479
-3.026415	4.876792	1.850189
-3.386989	2.559659	1.866080
-3.849830	0.500284	1.859205
-4.199762	0.585595	1.851905
-4.321822	3.276215	1.859766
-4.558580	5.997870	1.858580
-4.572113	4.615493	1.854789
-0.614651	3.656047	1.855581
-0.603939	5.650606	1.865758
-0.612682	4.608492	1.876592
-0.616131	4.981055	1.878593
-0.871656	2.946146	1.882325
-1.237967	5.396429	1.874341
-1.646351	4.842342	1.875360
-2.118047	4.210078	1.875742
-2.133211	0.220183	1.865229
-2.141865	4.942538	1.880734
-2.188727	0.971273	1.861455
-2.771845	2.339821	1.867976
-2.779231	1.933654	1.854231
-2.828517	5.869952	1.876890
-2.874884	4.040388	1.873760
-2.995111	5.387222	1.867556
-3.164277	4.378072	1.870783
-3.630617	3.372901	1.873765
-3.766393	4.243279	1.865246
-3.841224	1.319184	1.855306
-4.228097	6.053545	1.877239
-4.337525	5.581287	1.880248
-4.344611	2.064278	1.869222
-4.350441	3.622687	1.874053
-0.817277	2.277574	1.885248
-0.842570	5.390782	1.879441
-0.883333	1.131959	1.888866
-1.002857	2.442208	1.877143
-1.160650	0.080224	1.902623
-1.681488	5.243962	1.895744
-1.678667	3.957333	1.871778
-1.994531	3.218672	1.881328
-2.013190	1.164724	1.886748
-2.136034	1.811552	1.869828
-2.276061	0.746364	1.879596
-2.445789	4.826526	1.877474
-2.572905	1.143953	1.891588
-2.848247	2.879935	1.880455
-3.056256	3.854566	1.885753
-3.102500	5.107381	1.878690
-3.229880	5.312048	1.867470
-3.349754	0.109344	1.880656
-4.561316	6.395789	1.872895
-4.583798	2.565039	1.879845
-0.754257	2.706824	1.883649
-1.040356	5.210156	1.898022
-1.795131	3.740785	1.891257
-1.872618	2.973168	1.902147
-2.375671	0.298758	1.901443
-2.392806	1.739774	1.900935
-2.397760	2.894792	1.896250
-2.602667	4.106513	1.891231
-3.011782	0.226238	1.882772
-3.348776	5.062092	1.895663
-3.565660	6.147689	1.896085
-4.356725	1.485352	1.897852
-4.368551	5.845072	1.886957
-4.582350	3.265683	1.892186
-0.598883	6.326214	1.901165
-0.853804	5.845435	1.894891
-1.072824	4.722118	1.898529
-1.108393	1.770268	1.894286
-1.335000	4.760367	1.905932
-1.441757	3.893694	1.903559
-1.489929	0.221560	1.902128
-1.563444	1.616325	1.912715
-1.613636	2.980390	1.892857
-1.631085	0.023101	1.901008
-1.646772	1.879494	1.906519
-1.782105	1.064605	1.896316
-1.799063	2.379063	1.885938
-1.805405	1.545541	1.893919
-2.143532	5.217621	1.904498
-2.805277	2.613388	1.906710
-3.279637	1.791613	1.902661
-3.308992	4.049758	1.907702
-3.595976	4.998415	1.891707
-3.635037	4.739526	1.917606
-3.648061	0.801531	1.900000
-3.712469	1.111967	1.902259
-3.742698	1.692540	1.892857
-4.005149	6.171045	1.896493
-4.336339	4.292679	1.894196
-4.581236	4.015674	1.904213
-0.818778	4.757333	1.916000
-1.003008	2.109593	1.909756
-1.033366	3.333366	1.908020
-1.494497	1.212910	1.912593
-1.598904	4.431233	1.896986
-1.736772	3.234055	1.921299
-1.895109	3.456304	1.901630
-1.934252	5.808766	1.920945
-2.037414	3.860948	1.907069
-2.319167	1.164500	1.900667
-3.475545	0.986455	1.916636
-3.627189	1.466959	1.910829
-3.737796	6.373578	1.925687
-3.838714	5.958143	1.900429
-3.906202	2.913876	1.910620
-3.930261	4.063913	1.910957
-0.619701	0.894132	1.922934
-1.102599	3.081864	1.918136
-1.094952	4.445810	1.922000
-1.191317	6.231779	1.924164
-1.305691	2.536334	1.927203
-1.328830	0.494947	1.925426
-1.313681	0.971656	1.919264
-1.444816	6.284041	1.924122
-1.822197	6.223712	1.916136
-1.931591	0.352091	1.925909
-2.264385	6.365246	1.918689
-2.487353	5.909225	1.938102
-2.580691	6.379724	1.924608
-2.608087	4.368634	1.919235
-2.776284	0.769128	1.928349
-2.835910	6.328648	1.930295
-3.170375	6.014250	1.919000
-3.622787	5.517541	1.911967
-4.148733	6.375067	1.909667
-0.607845	3.400276	1.941188
-1.143065	3.965645	1.924032
-1.650435	3.521818	1.936522
-1.894806	1.801395	1.928915
-2.114975	4.675990	1.935939
-2.221935	5.882608	1.943817
-2.434364	4.559364	1.934636
-2.444000	2.197294	1.925882
-2.671799	6.103422	1.937670
-2.982667	1.759667	1.926250
-3.277480	4.658880	1.939240
-3.631765	2.522549	1.918431
-3.761321	4.496011	1.943558
-4.363033	6.259180	1.926393
-4.491238	5.317143	1.932667
-4.593481	2.118191	1.938840
-4.592968	2.821677	1.924645
-0.587750	4.353750	1.932500
-0.875672	1.701940	1.929701
-1.017064	0.594771	1.942615
-1.078911	2.672376	1.940099
-1.717011	4.207346	1.950754
-2.289366	1.996828	1.946082
-2.419091	0.940455	1.937879
-2.418067	3.526267	1.941733
-2.555841	2.470354	1.940442
-2.584231	5.235962	1.935577
-2.881471	4.706569	1.934706
-3.018433	2.388571	1.947465
-3.731520	3.908922	1.940931
-3.948571	2.596000	1.930571
-4.029376	0.329792	1.953222
-4.029186	0.052558	1.939186
-4.064748	3.169928	1.941871
-4.129091	1.916733	1.952614
-4.356326	0.370447	1.952236
-4.442838	1.236824	1.946284
-4.609423	1.064615	1.926346
-0.588276	2.952931	1.940000
-0.909754	0.021921	1.962660
-1.423832	5.248598	1.947944
-1.544714	5.465500	1.945357
-1.807324	5.023239	1.943662
-2.653214	3.619732	1.942411
-3.011233	0.856575	1.947671
-3.283732	6.235455	1.951148
-3.297656	3.778205	1.962784
-3.316973	2.139027	1.955081
-3.482636	6.385182	1.943727
-3.563961	4.107488	1.950097
-3.612580	0.546953	1.968010
-3.901389	3.722500	1.942593
-3.992083	0.694435	1.963512
-4.014368	2.152414	1.947586
-4.109179	3.876188	1.955660
-4.132675	1.633640	1.957807
-4.144792	5.756771	1.944375
-4.184151	2.634717	1.936981
-4.588851	3.529109	1.960517
-4.608621	0.565000	1.952069
-0.599724	1.865690	1.969414
-1.276845	5.027798	1.970516
-1.347785	3.016203	1.957278
-1.569012	2.454691	1.954691
-1.631862	2.211034	1.960897
-2.047892	1.602973	1.967784
-2.160577	2.835192	1.943846
-2.340818	2.647636	1.958364
-2.676269	2.130746	1.951642
-2.845319	4.286596	1.950638
-3.054428	1.125161	1.978270
-3.235781	0.310625	1.957656
-3.516241	3.162766	1.959291
-3.558919	2.064414	1.956937
-3.697763	5.255263	1.950526
-4.106194	0.952090	1.965858
-4.365345	5.015309	1.965855
-4.383235	3.015647	1.965000
-4.591244	4.877358	1.959171
-4.608263	0.274324	1.969846
-0.582742	2.327097	1.966452
-0.586609	4.106781	1.982103
-0.605129	0.398635	1.978007
-1.062565	3.661299	1.982305
-1.221848	1.986250	1.971033
-1.343731	4.488846	1.976962
-1.816048	1.309435	1.974355
-1.920575	5.339342	1.985068
-1.975764	0.926650	1.977931
-1.984815	6.057901	1.966914
-2.453108	1.362973	1.957973
-2.714261	4.879478	1.964522
-2.922346	2.111006	1.972291
-3.515600	1.251000	1.962400
-3.532716	2.745000	1.967840
-3.910978	5.125378	1.969956
-4.594306	5.538056	1.958056
-4.618571	0.818413	1.967778
-0.976269	4.129254	1.965970
-1.000636	1.354162	1.978902
-1.350761	5.618122	1.982284
-1.511677	2.706129	1.978581
-1.529780	5.866154	1.973626
-1.796995	4.662759	1.982906
-1.948786	0.096837	1.990863
-2.303762	3.282257	1.987053
-2.745242	5.613855	1.999758
-2.989757	3.602014	1.991319
-3.247722	5.540116	1.984015
-3.465618	2.341798	1.969663
-3.816589	2.000047	1.982757
-4.129800	1.379200	1.975600
-4.148162	2.900515	1.983971
-4.156206	2.382286	1.997186
-4.399610	2.281818	1.975325
-4.593484	1.729895	1.977317
-0.584767	5.428178	1.993566
-0.589474	1.141789	1.984316
-0.832141	3.188498	2.002268
-0.980847	4.947619	1.988783
-1.262727	3.278977	1.986364
-1.344229	1.410647	1.991592
-1.452771	4.245582	1.999880
-1.747565	5.989026	2.000617
-2.515016	0.101286	1.996945
-2.584270	2.741601	2.002633
-3.248976	3.507831	2.002048
-3.407965	0.733473	2.003650
-3.492736	4.529623	1.980472
-4.252364	5.348909	1.993273
-4.584740	0.019769	1.995376
-4.618125	1.462411	1.993929
-0.577636	2.573273	1.988727
-0.627368	5.862693	2.007926
-1.196559	4.228925	1.998387
-1.394943	0.021364	2.006648
-1.410984	1.815902	1.995164
-2.053976	2.439277	1.987229
-2.361309	5.326806	2.004764
-2.522373	0.713458	2.006305
-2.632372	1.802051	1.998654
-2.657153	3.004555	2.006619
-2.925741	6.073651	2.013307
-2.978488	4.488023	1.998023
-3.057667	2.820444	1.996778
-3.155298	0.566905	2.000774
-3.238784	0.939189	1.990676
-3.897073	2.363780	1.998171
-3.918272	5.634319	2.010930
-4.123545	4.842075	2.007032
-4.593560	6.203400	2.006480
-1.174200	2.322600	2.009200
-1.546163	4.647558	2.001047
-1.555833	5.043222	2.011778
-1.610522	0.687130	2.011043
-1.961404	2.693509	1.997544
-2.041250	6.298672	2.011797
-2.046462	4.439923	2.009000
-2.130658	2.191118	2.007829
-2.268945	5.579592	2.022926
-2.285214	1.526923	2.010342
-3.361429	4.290592	2.014321
-3.431004	5.352450	2.013414
-3.857138	4.864862	2.020069
-3.945433	1.157647	2.022768
-3.984836	4.348770	2.013852
-0.793333	3.738519	2.027619
-0.799692	5.170359	2.018462
-0.802037	4.507506	2.041304
-0.800884	6.062376	2.021768
-0.791084	0.227711	2.015060
-0.815826	0.741826	2.023957
-0.864505	3.472192	2.031892
-1.116316	1.101283	2.027566
-1.278189	5.882189	2.027887
-1.713185	0.223926	2.027506
-2.077531	3.628364	2.030370
-2.255063	3.823797	2.009747
-3.021623	3.330026	2.031597
-3.127602	1.958480	2.023743
-3.166277	1.588701	2.024762
-3.606283	5.935664	2.019292
-3.906634	1.498414	2.026926
-4.254737	4.538195	2.014286
-4.357500	3.831250	2.016750
-4.375567	0.657730	2.033156
-4.492848	4.443671	2.017722
-0.794806	1.491473	2.028062
-0.779167	5.640417	2.028229
-0.818386	2.508133	2.043544
-1.142615	1.556308	2.017231
-1.511642	3.304627	2.029403
-1.814223	2.045340	2.028592
-2.140963	3.076741	2.037370
-2.324270	2.406180	2.028989
-2.436410	3.972308	2.018462
-2.546941	0.455434	2.038950
-2.671716	3.900539	2.032647
-2.741711	0.308684	2.023947
-2.811584	5.326739	2.035870
-2.790000	3.440319	2.031170
-3.379000	2.953600	2.037486
-3.419017	4.856532	2.034682
-3.682273	2.950909	2.037098
-3.874332	3.313529	2.028877
-4.028720	3.519040	2.025440
-4.046115	5.967962	2.031975
-4.398168	0.943194	2.040209
-4.574088	5.787409	2.032336
-4.630323	2.358710	2.016774
-0.561169	4.797922	2.037922
-1.030769	0.855000	2.033077
-1.040110	5.438453	2.040110
-1.116615	5.681385	2.030154
-1.292611	0.273744	2.047734
-1.323064	3.551272	2.042717
-1.390851	2.210213	2.033511
-2.101905	1.350595	2.031548
-2.255849	0.083606	2.049371
-2.709200	1.416267	2.031067
-3.066550	6.373755	2.042751
-3.178140	4.930698	2.031473
-3.324522	1.379478	2.034000
-3.377322	5.756995	2.039945
-3.467260	1.626575	2.042466
-3.493317	0.236277	2.054033
-3.755904	0.051165	2.054940
-3.770923	2.707385	2.035077
-3.773524	6.145619	2.035048
-3.924381	1.772286	2.034000
-4.147148	4.135387	2.052218
-4.264583	3.445000	2.035000
-0.570000	1.378525	2.046721
-1.231121	0.703049	2.050269
-2.262292	4.332708	2.042917
-2.314286	6.101203	2.048647
-2.524220	1.575780	2.050000
-2.643492	0.955794	2.055992
-2.726216	4.554775	2.044234
-2.770989	1.175714	2.046044
-2.951274	1.362972	2.056085
-3.010172	5.816978	2.063440
-3.133100	4.169100	2.057500
-3.241429	2.459206	2.055952
-3.280400	2.703200	2.040200
-3.513308	3.523308	2.048462
-4.246790	0.026914	2.039136
-4.400794	2.517143	2.045714
-4.612660	3.795638	2.056277
-4.611813	5.123212	2.047772
-4.625170	3.061818	2.049318
-4.625298	4.221192	2.052318
-0.556833	5.155833	2.058333
-0.787362	6.321411	2.061166
-0.795714	3.984000	2.049429
-1.279182	2.768931	2.057547
-1.595463	1.401806	2.062685
-1.958232	4.855016	2.064695
-2.005167	5.580958	2.059417
-2.055240	1.947644	2.063750
-2.495191	4.980710	2.064426
-2.930285	4.971585	2.068943
-2.990435	0.390580	2.056812
-3.303876	3.247697	2.062416
-3.536868	3.790495	2.065275
-3.621657	1.837426	2.072130
-3.731875	0.341250	2.059271
-3.971595	4.621396	2.069202
-3.982186	5.365628	2.060283
-4.371243	2.770113	2.060339
-4.377596	4.761672	2.072648
-4.406168	6.012243	2.061589
-0.784043	2.049574	2.055532
-0.985799	1.905465	2.076171
-1.019766	5.918361	2.083396
-1.715368	2.839789	2.060421
-1.778278	2.541483	2.074163
-1.852908	0.718652	2.070142
-1.949181	4.135198	2.081299
-2.288604	0.483063	2.070225
-2.285183	4.821829	2.069939
-2.796049	0.555640	2.083515
-2.814655	1.637471	2.075000
-2.930000	3.290000	2.040000
-3.051017	5.253559	2.058136
-3.412813	6.068854	2.068333
-3.952549	6.355724	2.075054
-4.218827	1.171349	2.082639
-0.573353	3.168699	2.086705
-0.788315	4.237865	2.074270
-0.905652	2.771848	2.076630
-1.027333	0.233200	2.078200
-1.257079	3.807423	2.090550
-1.449377	6.077574	2.083082
-1.570000	4.035109	2.079891
-1.640215	6.242903	2.077204
-1.735085	5.735495	2.090717
-1.794983	3.912594	2.093481
-2.030605	0.536178	2.084936
-2.220339	4.084373	2.094271
-2.479274	3.731129	2.083468
-2.558621	4.723621	2.068793
-2.555447	3.237977	2.089027
-2.992606	5.526704	2.092205
-3.341887	1.132830	2.074906
-3.623694	5.688949	2.096667
-3.740606	1.300152	2.075606
-3.769837	3.553455	2.078659
-4.153537	5.126234	2.094453
-4.164444	6.188593	2.089407
-4.394919	1.922298	2.081815
-0.556320	6.102320	2.083200
-0.561314	3.617371	2.095771
-0.752105	4.927368	2.082281
-0.999333	6.202800	2.079467
-1.501767	0.915700	2.094333
-1.748140	1.677791	2.085465
-1.776667	0.468014	2.087660
-1.827143	6.388667	2.090476
-2.035360	3.362882	2.103343
-2.145714	0.775764	2.091527
-2.162061	1.120611	2.091221
-2.211169	1.748831	2.084286
-2.264348	5.085466	2.091801
-2.478853	4.217202	2.091743
-2.505514	2.022243	2.086075
-2.696595	5.867500	2.091897
-2.711333	5.095333	2.077333
-2.847944	1.895234	2.084673
-2.887076	3.120292	2.098421
-2.916125	0.151500	2.095500
-3.135962	3.048732	2.089624
-3.383502	0.480135	2.099697
-3.540936	5.127362	2.100681
-3.613944	4.327746	2.097218
-3.782905	0.942997	2.095719
-4.155364	0.519136	2.092091
-4.150759	5.555063	2.080253
-4.226458	2.131956	2.094207
-4.409004	4.077925	2.093402
-0.567415	1.635122	2.103415
-0.786949	1.247797	2.095085
-1.540741	2.017325	2.107695
-1.562960	3.770072	2.107509
-1.665532	1.155957	2.092234
-1.879114	2.294629	2.116057
-2.014615	5.112821	2.103590
-2.579267	5.425267	2.098800
-3.075113	4.702105	2.103985
-3.121088	2.208435	2.102109
-3.675556	2.364444	2.086296
-3.816040	4.178020	2.096634
-4.357733	1.653600	2.094400
-4.405106	3.237943	2.099078
-4.621818	4.653826	2.102273
-4.645965	1.235263	2.093158
-0.556133	2.102533	2.099867
-0.568761	0.176018	2.104867
-0.576637	0.655045	2.115646
-0.833603	0.994377	2.121448
-0.846966	0.461241	2.114483
-1.237619	5.288762	2.108048
-1.812065	4.431336	2.119717
-1.898190	3.142381	2.104952
-2.388089	3.035689	2.120578
-2.507339	5.682817	2.118941
-2.922638	3.840624	2.117554
-3.010101	2.598480	2.116453
-3.473810	2.545714	2.097381
-3.901585	0.499390	2.104146
-3.910709	3.065787	2.122756
-0.560725	2.787874	2.119130
-0.760946	2.965946	2.122905
-1.322464	4.056957	2.111739
-1.361250	1.139145	2.118224
-1.703944	5.388239	2.122324
-1.710353	4.871529	2.114235
-1.820206	3.626186	2.117629
-1.900886	1.126835	2.108228
-2.261901	4.569091	2.117769
-2.583000	2.281000	2.102750
-2.825153	2.377761	2.128098
-2.809674	4.093370	2.118804
-3.273712	5.156564	2.127178
-3.635755	3.316763	2.120144
-4.324330	5.761134	2.124089
-4.411787	5.503992	2.131103
-4.649231	1.927885	2.111346
-0.551966	3.885674	2.129719
-0.555569	4.557294	2.138275
-0.546667	5.645580	2.133986
-0.810897	5.401410	2.122949
-0.955714	4.711579	2.124962
-0.997411	3.872946	2.129955
-1.108868	3.441698	2.113019
-1.145826	0.467982	2.131101
-1.152000	4.565286	2.130571
-1.202430	4.822077	2.138063
-1.203784	1.767432	2.120000
-1.456165	4.840226	2.125789
-1.490000	2.903231	2.124000
-1.647093	3.108789	2.138443
-1.776316	3.384211	2.115263
-2.163846	2.611905	2.136190
-2.405021	1.196008	2.134856
-2.684924	6.281667	2.138485
-2.839808	2.870577	2.125577
-3.139823	6.151947	2.129558
-3.196327	4.462836	2.135200
-3.573822	6.255096	2.125987
-3.656811	5.418993	2.147458
-3.825586	5.871650	2.142485
-3.989574	2.774255	2.128617
-4.610000	6.400000	2.115000
-4.651935	2.584839	2.114839
-0.750847	2.276780	2.130339
-1.007343	4.362841	2.146679
-1.054857	3.197048	2.143905
-1.093226	2.130645	2.136290
-1.148511	2.539198	2.146870
-1.397500	1.610972	2.134028
-1.478368	0.429540	2.142887
-1.956739	2.887826	2.131522
-2.071818	5.810341	2.136591
-2.118529	0.291912	2.147831
-2.135816	5.366667	2.136099
-3.140367	0.771193	2.137706
-3.162515	0.126140	2.140058
-3.230968	5.925242	2.142339
-4.174286	3.687143	2.124762
-4.206526	3.093368	2.134211
-4.210357	0.256339	2.136250
-4.407500	3.617000	2.134500
-4.395308	5.213077	2.141615
-4.415162	1.400767	2.152507
-4.631796	5.370299	2.138623
-4.638768	3.329668	2.144739
-0.725769	0.011538	2.143077
-1.189904	2.992596	2.145673
-1.205313	6.091875	2.146250
-1.552146	4.443765	2.151619
-1.863077	6.165275	2.147363
-1.881498	1.473921	2.161145
-2.058674	3.878934	2.163343
-2.267667	3.493250	2.141083
-2.409433	0.275709	2.160324
-2.538093	6.067034	2.156907
-2.706038	4.323585	2.157673
-3.175084	3.926034	2.150838
-3.402000	1.999533	2.150733
-3.403823	4.059932	2.162765
-3.543250	1.409500	2.137750
-3.603115	1.115246	2.137213
-3.640714	4.899524	2.137857
-3.728028	4.658451	2.148451
-3.949091	3.960663	2.165430
-4.095529	3.311294	2.147882
-4.170077	0.777846	2.144538
-0.547103	4.291121	2.163364
-0.763068	1.798125	2.163693
-0.964842	1.645579	2.158947
-0.982316	2.344737	2.153789
-1.188416	6.354505	2.152871
-1.390000	2.435596	2.156943
-1.757308	0.930000	2.168974
-1.762865	5.124568	2.176432
-2.336484	2.193077	2.157637
-2.364068	5.890085	2.159237
-2.873426	0.814143	2.165857
-3.288095	1.775000	2.155833
-3.701152	1.596848	2.158121
-3.820602	2.187349	2.154096
-3.974979	0.170083	2.162075
-3.999014	2.018310	2.161690
-4.458750	0.176977	2.166570
-4.635104	6.004583	2.155313
-0.539452	6.359726	2.162123
-1.111912	5.080735	2.161618
-1.173802	1.315950	2.159421
-1.426538	6.361394	2.163221
-1.493750	0.172880	2.178315
-1.499512	5.719878	2.158780
-1.540522	3.511381	2.185075
-2.233846	6.302010	2.184293
-2.325909	0.944848	2.178636
-2.443762	1.780396	2.166733
-2.510236	4.498850	2.179027
-2.555161	3.489677	2.168581
-2.761429	2.632976	2.161905
-2.953587	4.298804	2.169239
-3.041961	1.763007	2.169346
-3.616667	0.750698	2.163643
-3.654478	4.002836	2.166119
-3.936098	2.528699	2.176748
-4.193073	2.576094	2.179792
-4.403199	6.264412	2.172831
-4.649162	0.438534	2.174712
-4.646818	0.970455	2.173364
-0.562948	0.922500	2.182724
-1.232563	0.929625	2.183000
-1.395391	3.129565	2.177478
-1.455862	5.471724	2.172414
-1.513275	5.228838	2.191690
-1.630000	2.352642	2.173962
-1.975432	1.729388	2.185252
-2.095792	6.066264	2.200000
-2.706423	3.697664	2.179927
-3.352500	2.274000	2.168000
-3.420766	5.547033	2.182392
-3.445309	0.933454	2.184021
-3.774430	5.188228	2.171646
-4.598396	0.698160	2.191132
-1.290494	4.352889	2.207901
-2.199503	2.872762	2.191989
-2.405682	2.716909	2.196227
-2.480121	5.201660	2.198826
-2.684660	0.133223	2.206816
-2.749524	2.126786	2.182857
-2.786192	4.785771	2.201519
-3.142051	1.252692	2.186026
-3.581613	2.164032	2.180161
-3.946216	3.693514	2.183784
-4.071129	5.770040	2.191976
-4.167484	1.799097	2.199161
-4.618390	2.832634	2.196000
-4.660879	2.176374	2.189231
-0.967097	6.395484	2.192581
-1.094411	4.113042	2.204753
-1.440233	0.680543	2.195581
-1.559245	1.776415	2.194717
-2.146484	2.354176	2.199011
-2.554470	2.510000	2.195606
-3.163171	3.668902	2.193171
-3.193924	5.676181	2.206354
-3.329944	4.684551	2.197022
-3.341556	6.256778	2.193222
-3.536947	3.093009	2.209469
-3.739000	6.399000	2.183000
-4.026341	1.337268	2.198976
-4.166885	1.538361	2.191639
-4.198421	6.395000	2.191579
-4.382673	0.435220	2.210094
-4.450755	1.142453	2.191887
-1.297129	2.004484	2.218258
-2.061166	0.045276	2.210491
-2.271905	1.949524	2.199206
-2.357535	0.685634	2.205986
-2.935097	1.081039	2.219662
-3.455878	2.766486	2.208446
-3.908841	0.734663	2.220647
-3.944050	6.113524	2.224622
-3.944964	5.021241	2.210438
-4.167455	4.397818	2.205545
-4.217346	3.927668	2.216756
-4.320909	2.352576	2.199848
-4.644932	4.014527	2.222162
-0.546171	4.967229	2.230286
-0.794988	5.873963	2.237063
-0.938995	1.398141	2.227839
-1.378696	4.616377	2.210145
-1.576901	2.599624	2.226761
-1.709559	0.040662	2.210882
-1.711315	4.204877	2.230247
-1.867353	5.915686	2.214804
-2.139429	1.523048	2.216619
-2.437897	0.026172	2.235483
-2.552532	1.393427	2.237519
-2.779231	6.067527	2.227143
-3.197966	5.394972	2.227712
-3.182977	0.370194	2.229968
-3.527436	4.536026	2.215641
-3.823897	4.436197	2.220939
-4.033324	0.981633	2.229799
-4.051071	2.296952	2.239571
-4.178615	4.682872	2.222103
-4.335427	4.975366	2.224390
-4.437099	3.013969	2.220611
-4.589375	4.924010	2.217031
-4.655200	4.425600	2.218800
-0.539691	1.890619	2.224845
-0.536207	5.345402	2.240000
-0.637690	2.540854	2.240316
-1.261603	0.078092	2.228550
-1.265203	5.713514	2.224459
-1.347788	5.039135	2.224712
-1.779434	1.883208	2.229434
-1.862513	4.668901	2.228534
-1.884957	0.220261	2.224174
-2.224472	3.230081	2.227724
-2.341617	3.891320	2.240231
-2.359027	5.445324	2.240405
-2.907598	4.545196	2.229497
-2.924014	6.293116	2.247746
-2.978594	2.048906	2.220156
-3.152688	2.795336	2.236759
-3.198987	1.003671	2.239968
-3.322577	1.536810	2.232086
-3.683622	2.563465	2.232441
-3.690233	0.518915	2.229690
-4.184185	5.364630	2.240148
-4.646733	3.587833	2.232867
-4.651234	1.701591	2.241396
-0.554754	1.190352	2.241937
-0.550313	3.396677	2.245549
-0.562153	0.419059	2.256757
-0.669000	4.084143	2.231143
-0.727874	4.739275	2.238986
-0.967442	5.256860	2.230000
-1.024021	5.601678	2.250420
-1.320794	3.363730	2.238254
-1.416844	1.364867	2.252625
-1.656827	6.053896	2.240482
-2.027823	0.954962	2.246937
-2.102826	4.716522	2.226304
-2.651552	1.898103	2.232414
-2.844092	5.705036	2.247482
-2.931220	3.522857	2.244821
-3.012581	0.574919	2.247581
-3.070412	1.488765	2.244882
-3.172584	3.419101	2.234045
-3.475926	5.874321	2.231728
-3.649030	6.042313	2.235597
-4.225163	5.981276	2.246142
-4.389205	4.512045	2.230568
-4.463333	4.275789	2.237544
-0.768354	3.583171	2.257866
-0.933128	4.935922	2.248324
-0.950558	0.055020	2.250000
-1.029200	3.636831	2.260369
-1.099021	2.776154	2.248112
-1.679623	0.639434	2.242264
-1.815424	2.718644	2.250678
-1.956966	2.517528	2.247753
-2.034303	2.129084	2.259801
-2.593182	0.785682	2.236364
-2.741245	3.332101	2.256926
-3.815500	1.862333	2.241750
-3.814070	5.604186	2.240349
-3.948471	1.642851	2.255950
-4.208840	2.830552	2.248619
-4.560779	2.402532	2.248312
-0.533282	5.879590	2.266667
-0.540897	2.290493	2.269507
-0.757041	0.234794	2.266067
-0.770000	3.199115	2.255929
-1.187203	1.557106	2.271286
-1.236566	2.272929	2.268283
-1.670353	0.328471	2.261294
-1.718793	2.133448	2.255000
-1.994806	6.348101	2.255853
-2.031186	1.280339	2.270169
-2.036255	4.475404	2.265660
-2.161015	5.617481	2.268722
-2.640056	1.646348	2.268090
-2.629091	2.807500	2.256364
-2.668134	0.403085	2.271294
-2.815392	1.458387	2.260046
-3.056139	5.089430	2.262975
-3.390847	0.081230	2.265628
-3.375505	1.288165	2.264037
-3.417197	4.973131	2.275025
-3.436842	3.339684	2.260526
-3.446073	5.304977	2.272283
-3.704887	3.764561	2.274712
-3.717385	2.820769	2.248462
-3.838925	1.156262	2.263271
-4.656000	1.426333	2.259556
-0.755857	1.567143	2.262571
-0.756000	5.123838	2.268432
-0.757068	5.601142	2.280710
-0.795469	0.665429	2.275184
-0.928729	3.390847	2.272966
-0.973253	2.993373	2.258434
-1.594634	1.550366	2.268415
-1.612051	4.697436	2.268718
-2.101905	4.227619	2.262381
-2.131690	4.963451	2.265423
-2.421176	4.736642	2.286225
-2.561353	4.041014	2.270531
-2.688176	3.060486	2.274863
-2.939231	5.329402	2.273704
-3.019390	5.986098	2.276402
-3.115728	2.407616	2.276594
-3.411257	4.315286	2.279829
-3.853151	3.402059	2.277773
-3.984400	4.248933	2.259600
-4.437121	2.633485	2.268737
-4.436556	2.091000	2.262778
-4.458667	3.832917	2.262000
-4.640505	6.229343	2.266263
-0.760000	2.768070	2.268070
-0.923722	2.574233	2.287670
-0.990000	0.844112	2.271776
-1.468626	2.192748	2.278931
-1.704625	1.330875	2.287125
-1.903922	5.670915	2.287353
-2.006818	3.565808	2.278737
-2.054896	3.059167	2.275000
-2.478623	6.318000	2.294522
-2.552931	1.037915	2.291118
-2.919823	0.318009	2.291416
-2.988000	3.267000	2.273750
-3.001543	4.072394	2.280798
-3.168137	6.387081	2.286087
-3.175388	4.865437	2.286602
-3.513617	1.714468	2.268723
-3.612803	3.508333	2.283182
-3.644044	0.138603	2.278971
-3.911114	4.771969	2.293057
-4.083684	3.521729	2.282857
-4.219635	0.055401	2.279489
-4.430462	3.414740	2.283237
-0.534896	2.981354	2.280208
-0.539762	1.450952	2.285794
-0.738805	6.380377	2.290377
-0.862632	2.106813	2.296199
-1.003663	6.083762	2.282673
-1.064242	1.127980	2.287475
-1.160792	0.667624	2.286931
-1.331145	2.665771	2.295066
-1.322007	3.622847	2.301204
-1.442529	5.917529	2.287241
-1.473026	4.126842	2.287500
-2.294722	4.386333	2.285833
-2.375283	1.582170	2.285566
-2.597759	4.935862	2.284310
-2.993675	2.984701	2.290000
-3.402462	3.823231	2.301169
-3.502902	0.346814	2.300757
-3.815366	0.317154	2.285285
-3.809111	1.414667	2.278889
-3.835000	0.012353	2.288529
-4.049452	0.381918	2.279589
-4.635596	5.791927	2.280917
-0.737525	3.838416	2.291881
-0.766949	6.126949	2.295678
-0.889888	4.544906	2.309288
-0.995919	0.343860	2.305699
-1.243481	5.465414	2.299834
-1.301474	0.317053	2.289158
-1.400891	3.880545	2.307475
-1.549434	3.282453	2.292830
-1.733622	6.297135	2.300270
-1.870260	4.919545	2.303247
-1.878746	5.385559	2.312508
-2.326752	2.496838	2.303419
-2.335321	6.088899	2.294312
-2.372500	4.996176	2.295882
-2.537000	2.147000	2.293667
-2.688077	5.312051	2.294103
-2.806579	5.069123	2.304211
-3.211910	3.179775	2.297865
-3.339164	2.554695	2.312154
-3.331596	2.967766	2.290638
-3.895765	5.356588	2.294235
-4.244308	4.182923	2.289385
-4.662733	3.115291	2.298895
-0.751993	4.313838	2.320000
-1.538627	1.126415	2.318319
-1.645977	3.957931	2.304368
-1.913262	0.464946	2.313692
-1.899444	0.730185	2.318843
-2.133571	0.638333	2.302540
-2.236220	5.210697	2.320590
-2.397732	3.636320	2.316729
-2.633071	5.551929	2.310857
-2.730455	1.218030	2.300909
-3.160326	4.271739	2.299239
-3.530949	2.369854	2.305182
-4.398750	1.773571	2.310357
-4.431007	0.927987	2.306577
-4.654881	5.546071	2.308571
-1.034404	1.827294	2.325275
-1.667129	5.537129	2.315248
-1.808305	2.995254	2.321017
-1.821579	3.259323	2.322406
-1.863754	3.780853	2.326109
-2.280738	0.423839	2.335423
-2.453527	3.169130	2.333961
-2.610513	5.814103	2.330000
-2.789000	3.943400	2.311400
-2.992827	0.062560	2.330107
-3.591910	1.952022	2.310337
-3.616842	1.272406	2.323985
-3.658873	0.963237	2.334393
-4.035135	5.552973	2.315811
-4.373533	0.673952	2.322575
-4.456545	6.058364	2.304727
-4.658056	1.937611	2.342333
-4.635922	5.171714	2.328494
-0.523802	6.131818	2.330661
-0.808188	1.174161	2.334396
-0.886316	4.028246	2.317368
-1.350959	2.928082	2.326233
-1.349774	1.762594	2.337030
-1.436729	6.169159	2.324206
-1.607204	2.830645	2.325161
-1.672965	5.804024	2.345271
-1.764571	3.503905	2.325333
-2.195371	1.752522	2.343501
-2.247810	0.165143	2.324095
-2.769763	0.646126	2.337510
-2.852417	1.800083	2.325917
-2.905813	2.750813	2.332063
-3.351348	3.562809	2.323371
-3.580379	4.759300	2.341137
-3.807800	2.359800	2.333200
-3.993939	2.932727	2.319091
-4.124643	4.903750	2.324107
-4.667572	1.175723	2.336879
-1.100163	4.688455	2.339756
-1.150417	3.856111	2.331944
-1.427724	0.885854	2.339919
-1.627273	4.941818	2.332078
-1.832841	1.112564	2.357460
-2.200502	5.866164	2.344110
-2.211111	1.108889	2.325333
-2.316545	1.326364	2.336000
-2.528876	4.289438	2.332247
-2.919189	2.246892	2.334730
-3.125647	4.609964	2.353345
-3.287625	0.785000	2.335750
-3.481770	0.617472	2.350787
-3.670000	5.776667	2.330575
-3.698936	5.015390	2.349858
-3.800565	4.102177	2.340565
-3.991479	3.188343	2.343728
-4.119919	0.619514	2.344332
-4.165064	2.080833	2.345513
-4.246782	1.087356	2.334253
-4.407130	4.747523	2.345257
-0.522449	3.678571	2.342653
-1.201657	3.132857	2.351943
-1.207157	5.206559	2.364190
-1.202581	5.947903	2.354839
-1.791458	1.662917	2.343542
-1.981179	5.146103	2.355487
-2.331716	4.132781	2.353018
-2.385802	5.702099	2.339753
-2.387885	2.918077	2.356474
-2.680199	2.343625	2.358645
-3.430882	6.086029	2.346912
-3.523671	6.341529	2.362071
-3.776242	3.045839	2.346107
-4.163250	6.223114	2.364565
-4.240382	1.359013	2.355669
-4.447692	5.365128	2.351923
-0.552811	0.081281	2.372792
-0.781872	2.355882	2.364439
-1.157708	4.938819	2.363125
-1.541076	1.959861	2.372396
-1.600880	3.706053	2.370240
-1.730484	4.482881	2.369007
-2.778479	4.192350	2.362166
-2.888904	2.496849	2.354247
-3.046339	0.828142	2.363989
-3.149677	2.155806	2.359113
-3.199487	6.139231	2.358846
-3.768482	6.249805	2.365058
-3.913173	2.709904	2.355865
-4.016631	4.533690	2.366043
-4.303571	3.656964	2.355060
-4.666606	4.712294	2.352936
-4.673146	2.648652	2.353146
-0.528169	1.691831	2.361127
-0.568462	0.743956	2.366374
-0.744884	5.351163	2.362558
-0.764211	0.908129	2.369532
-1.191875	6.205313	2.360000
-1.396070	4.816422	2.376716
-1.811374	2.345906	2.379883
-2.001034	2.834828	2.365402
-2.496292	0.564607	2.365618
-2.776173	0.940864	2.366543
-3.123448	1.909655	2.359655
-3.170500	1.678000	2.359250
-3.240385	4.043846	2.368385
-3.417037	2.139185	2.378543
-3.528723	1.494681	2.360426
-3.653333	3.264651	2.370310
-3.678462	5.280000	2.370513
-4.202590	5.138012	2.372048
-4.401149	5.817241	2.362644
-4.661789	4.229368	2.369368
-0.526343	3.932090	2.382164
-0.532703	2.741689	2.379932
-0.553072	4.472440	2.395361
-0.617107	2.071322	2.378512
-1.112892	2.081010	2.393275
-1.350500	0.543083	2.376167
-1.442102	5.627159	2.380625
-1.863023	4.047674	2.376163
-1.861135	6.098298	2.381418
-1.875315	0.031748	2.380909
-1.987439	1.903049	2.374756
-2.054444	3.331778	2.364444
-2.146615	3.755795	2.387231
-2.271176	3.423971	2.373382
-2.715613	4.459368	2.387589
-2.948476	3.759529	2.385374
-3.267766	5.893040	2.390220
-3.361522	1.868478	2.381449
-3.553596	4.093933	2.371236
-3.623432	5.535680	2.386509
-3.911919	2.113023	2.382965
-4.013902	1.888780	2.376585
-4.205610	0.850732	2.372439
-4.218571	3.042619	2.374524
-4.278618	5.563309	2.391564
-4.592744	0.291353	2.388496
-0.520000	5.649462	2.389785
-1.002201	4.273684	2.394593
-1.240000	6.400000	2.370000
-1.485970	4.360224	2.382761
-1.906618	4.296176	2.381471
-2.107473	4.021648	2.382527
-2.220497	0.852236	2.393230
-2.485274	0.227221	2.411444
-2.591718	3.800264	2.392643
-2.689545	3.561212	2.384091
-2.943923	4.881077	2.390538
-2.958750	1.291389	2.403090
-3.258333	5.177937	2.385397
-3.425702	5.694737	2.387632
-3.430955	1.081180	2.394270
-3.882935	0.534457	2.379239
-3.911004	5.781632	2.390962
-4.280144	0.282383	2.397220
-4.443231	4.063593	2.398078
-4.447670	1.530000	2.393252
-4.438884	0.046884	2.396000
-4.676522	3.811522	2.378261
-0.526633	4.197437	2.406080
-0.524194	4.753978	2.398118
-0.768686	2.989705	2.411528
-0.774160	1.879920	2.403680
-0.961270	1.587540	2.403413
-1.049200	2.371000	2.390900
-1.258919	4.073243	2.403784
-1.479800	5.374200	2.400300
-1.533780	2.407835	2.406850
-2.670702	2.614503	2.396784
-3.052407	5.762685	2.397407
-3.227742	0.552742	2.408656
-3.546164	2.914795	2.389452
-3.721389	0.711944	2.398796
-4.053102	4.046241	2.403431
-4.088291	3.777778	2.397949
-4.210945	3.325879	2.407585
-0.524737	6.376165	2.419286
-0.964446	6.305997	2.426780
-0.995426	5.806628	2.413915
-1.293852	1.102295	2.412623
-1.552945	3.063630	2.408356
-1.601226	0.139811	2.407925
-1.671055	0.901350	2.415654
-2.058261	0.291196	2.409348
-2.223901	4.603369	2.418050
-2.344700	2.260950	2.409650
-2.507903	3.405161	2.401935
-2.609849	6.076679	2.413132
-2.962419	4.376250	2.417782
-3.206049	0.185556	2.398395
-3.667917	2.167917	2.398750
-3.742670	1.610631	2.415777
-3.885373	3.625672	2.408731
-4.044776	0.174627	2.408284
-4.415576	2.850643	2.425630
-4.637895	3.344737	2.398684
-4.669538	0.828615	2.415538
-4.664654	0.551567	2.420276
-0.529371	5.153457	2.427486
-0.532954	3.193077	2.426615
-0.726667	4.917246	2.412174
-0.769685	0.437244	2.420000
-0.974314	5.413268	2.423072
-1.139507	3.376761	2.417042
-1.701048	5.193100	2.422926
-2.111667	5.416250	2.407361
-2.195323	2.681255	2.420875
-2.647500	4.711333	2.411750
-3.201273	1.192061	2.425152
-3.768780	4.591585	2.429065
-4.006111	2.488333	2.417333
-4.038687	1.197879	2.417475
-4.434212	3.170322	2.431768
-4.659278	5.996495	2.413918
-0.736604	3.380377	2.427830
-0.955324	3.192676	2.440971
-0.980706	0.568941	2.418353
-1.113259	0.146593	2.434593
-1.192778	0.869630	2.430494
-1.223846	1.350769	2.417231
-1.453488	5.126628	2.426279
-2.168200	6.331188	2.445840
-2.203514	2.020324	2.428865
-2.572568	5.132568	2.441694
-2.709655	2.036724	2.417759
-2.840769	5.887038	2.442462
-2.945842	5.540368	2.430737
-3.109725	2.625902	2.438043
-3.124560	3.568160	2.429280
-3.553667	2.674000	2.416333
-3.956907	5.141546	2.426186
-4.003960	1.452819	2.425772
-4.173000	5.794667	2.420222
-4.208846	1.605577	2.417885
-4.227353	2.645294	2.424902
-4.233978	2.374199	2.437735
-4.418089	6.271178	2.435796
-4.681974	0.041053	2.433816
-0.532662	0.991295	2.441439
-0.934702	3.803841	2.445232
-0.978132	5.097253	2.432857
-1.279815	2.451296	2.438519
-1.304795	4.578356	2.435479
-1.497143	3.474000	2.433810
-1.694211	0.489158	2.430526
-1.870414	1.449172	2.437724
-2.087391	2.310580	2.427681
-2.102679	0.022321	2.442768
-2.231278	3.102180	2.440000
-2.470667	4.530000	2.436778
-3.207205	5.564083	2.451157
-3.424000	3.157739	2.450261
-3.773910	5.998077	2.453910
-4.036400	6.002450	2.445400
-4.247708	4.530104	2.438438
-4.438636	1.217121	2.427879
-4.460175	2.267544	2.429825
-4.674262	2.174098	2.430000
-0.931732	2.787087	2.442756
-1.360714	0.140833	2.442262
-1.387950	1.532733	2.455776
-1.541882	0.677294	2.440000
-1.864177	2.096203	2.447595
-1.900375	5.866375	2.452000
-2.505056	5.386517	2.438202
-2.544512	1.241674	2.458326
-2.739244	0.213025	2.451092
-2.948033	1.586230	2.437705
-3.191961	3.806078	2.444314
-3.213438	1.448542	2.444271
-3.271757	3.367027	2.448243
-3.330976	2.777886	2.446423
-3.349200	4.725467	2.441867
-4.673119	2.899174	2.447798
-0.527925	2.463145	2.464403
-0.764074	1.397870	2.469398
-0.992407	1.305741	2.453704
-1.137805	2.642195	2.451707
-1.194176	5.656484	2.453407
-1.576593	1.711239	2.464469
-1.754321	2.596605	2.459259
-1.769928	4.751151	2.463237
-1.816641	0.271390	2.461583
-2.029636	4.781844	2.465818
-2.093708	6.063596	2.464326
-2.413761	5.927064	2.451468
-2.444262	2.696230	2.450000
-2.459151	1.971550	2.465203
-2.501385	0.793723	2.470130
-2.851624	6.145635	2.457411
-2.887732	3.142784	2.452268
-3.497612	4.538209	2.455821
-3.846137	4.328164	2.472575
-3.858701	3.877597	2.460390
-4.114797	4.309926	2.470406
-0.730899	2.618820	2.474944
-1.245085	4.331898	2.480305
-1.486869	0.354720	2.469159
-2.189720	1.503808	2.478855
-2.890415	4.640829	2.473594
-2.945641	2.038333	2.460641
-3.271798	4.427472	2.473146
-3.493004	5.144635	2.469528
-3.540185	3.680556	2.457778
-3.592857	4.317619	2.460238
-3.804805	0.151289	2.476484
-4.236471	1.874853	2.461324
-4.396745	4.993632	2.472406
-4.465682	1.961667	2.471515
-4.670575	4.465747	2.465287
-0.933158	3.531228	2.474737
-1.145639	2.908797	2.475338
-1.515775	2.658169	2.472113
-1.568427	6.023387	2.480081
-1.766207	1.875862	2.475172
-1.901289	6.338328	2.482822
-1.988036	1.663571	2.469107
-2.129740	4.346364	2.479675
-2.351016	0.023594	2.497383
-2.633609	2.912782	2.481880
-2.657107	1.786038	2.497201
-2.661127	3.225352	2.474225
-2.657482	6.317482	2.480144
-2.707760	1.517656	2.485885
-3.158406	3.019275	2.468261
-3.277958	2.355870	2.489211
-3.377258	1.637742	2.474839
-3.878877	1.007935	2.485833
-4.058884	5.371373	2.483734
-4.409646	4.324513	2.488820
-4.673761	2.426923	2.478632
-0.640640	5.968160	2.501520
-0.753574	4.669398	2.494779
-0.956716	4.842799	2.499179
-1.348095	2.084603	2.485238
-1.448934	6.362738	2.490490
-1.631931	2.180621	2.486207
-1.687725	4.246825	2.495782
-1.996804	2.534536	2.487732
-2.071593	5.711062	2.488230
-2.300244	0.639593	2.490569
-2.313069	5.522277	2.484950
-2.380992	1.030413	2.500468
-2.462889	1.472000	2.482444
-2.492000	2.458182	2.481818
-2.816371	0.448871	2.484677
-2.967627	6.379831	2.488192
-3.075969	0.361323	2.504923
-3.297514	6.326851	2.499475
-3.425634	5.433239	2.485070
-3.474143	0.843429	2.487286
-3.527765	5.896332	2.504756
-3.684506	0.379691	2.487160
-3.795339	1.908898	2.481441
-3.818738	1.297767	2.485243
-3.860741	5.542525	2.496094
-3.954249	0.750363	2.491036
-4.298636	6.023750	2.486023
-4.659563	5.382313	2.495313
-0.532365	1.252230	2.500541
-0.549219	0.313125	2.494375
-0.709912	3.647478	2.504735
-0.740294	1.650294	2.486176
-1.150186	3.666097	2.500149
-1.367320	3.266000	2.505000
-1.622667	1.452889	2.490444
-1.910952	0.906786	2.503810
-1.981351	3.143649	2.490811
-2.233077	4.952203	2.505455
-2.306966	3.930112	2.495506
-2.484721	4.887462	2.501726
-2.728125	4.936250	2.489750
-2.999009	1.045129	2.503664
-3.086794	5.321435	2.500191
-3.232444	0.956889	2.490667
-3.507929	0.170165	2.507882
-3.491364	3.446136	2.488864
-3.574029	1.792662	2.497122
-4.672532	3.579241	2.492405
-0.529976	5.423501	2.523693
-0.761914	5.723301	2.518182
-0.779319	0.168637	2.532525
-0.925556	6.035291	2.516032
-1.171667	1.700000	2.500000
-1.446493	1.286716	2.507015
-1.543000	4.630150	2.520650
-1.890326	5.551630	2.510326
-1.960270	4.528378	2.497297
-2.399532	1.712222	2.512982
-2.389907	6.181757	2.526505
-2.667162	4.017297	2.501892
-2.739337	5.420422	2.508795
-2.856462	5.192736	2.516792
-3.001469	0.618898	2.510653
-3.033982	3.333009	2.507965
-3.071686	5.054767	2.516105
-3.418487	1.332237	2.508355
-3.703611	2.503889	2.507917
-3.734762	3.456786	2.507262
-3.983616	3.414915	2.512881
-4.046133	4.738267	2.503867
-4.131753	2.861169	2.512403
-4.438609	2.532180	2.513045
-4.652937	5.701599	2.517807
-4.678400	1.504800	2.493600
-0.772952	4.139692	2.521322
-0.766190	5.172619	2.510476
-0.963484	0.806129	2.525806
-1.023050	4.038450	2.519650
-1.389290	5.833470	2.531995
-1.543613	3.912941	2.521345
-1.650732	3.281288	2.527197
-1.948992	3.622868	2.521395
-2.372375	4.324125	2.514500
-2.897143	3.536327	2.502653
-3.310068	4.967055	2.514384
-3.380378	4.194244	2.526176
-3.618125	3.902813	2.511094
-3.743623	2.785217	2.511014
-3.876915	4.923682	2.520448
-3.967176	1.694824	2.514824
-4.307410	3.860392	2.527199
-4.429173	0.455276	2.525157
-4.655197	6.227566	2.518026
-4.665923	1.753462	2.519385
-0.531216	0.555000	2.518243
-0.744429	6.208286	2.526143
-0.934222	2.206111	2.529000
-0.983832	1.066287	2.527904
-1.238395	0.347778	2.525123
-1.672331	6.245276	2.530920
-1.769512	0.699512	2.529512
-2.041377	1.281138	2.541737
-2.053938	0.690702	2.552982
-2.394000	6.400000	2.508000
-2.756695	1.128898	2.522797
-2.853870	0.023448	2.549349
-3.112986	4.190569	2.530711
-3.130260	4.796104	2.526623
-3.303274	0.018053	2.534690
-3.985702	6.348764	2.532837
-4.537069	1.017759	2.516724
-4.673833	4.027667	2.516833
-0.536860	1.515041	2.538140
-0.537128	2.949773	2.560101
-0.755041	0.661488	2.531157
-0.847281	4.425392	2.545530
-1.187961	0.638750	2.541645
-1.235039	5.413586	2.552287
-1.331513	6.116933	2.555819
-1.681478	5.420522	2.532696
-1.692620	1.227380	2.548984
-1.852000	5.019163	2.537953
-1.979944	3.880281	2.548652
-2.128043	1.031304	2.535652
-2.260517	2.463276	2.533448
-2.541786	5.612937	2.544048
-2.556711	2.197763	2.529342
-2.891061	2.903128	2.543464
-2.939326	3.979775	2.541723
-3.015351	2.398129	2.557719
-3.250141	2.026761	2.535493
-3.424741	0.439310	2.531810
-3.580674	6.153820	2.530112
-3.941633	0.359660	2.535442
-4.453465	3.429604	2.532772
-0.521842	3.434803	2.546250
-1.086025	4.543185	2.561531
-1.209908	4.775505	2.547798
-1.459494	4.150759	2.539620
-1.898557	3.371443	2.545155
-1.942182	5.308682	2.556182
-2.185493	3.568028	2.544085
-2.353778	5.231185	2.551704
-2.503462	3.608956	2.560440
-2.816154	0.788077	2.542981
-3.378608	3.930253	2.544684
-3.537847	2.306794	2.555311
-3.833854	3.194688	2.542292
-4.077838	2.209730	2.534595
-4.131368	1.009368	2.552526
-4.168194	0.468472	2.554537
-4.301471	2.131176	2.542647
-0.952720	2.524400	2.559120
-1.414374	3.684019	2.573759
-1.501952	1.035833	2.576571
-2.420899	0.435043	2.573217
-2.628075	4.283054	2.564519
-2.807763	2.220274	2.560457
-3.550405	4.900270	2.563581
-3.610588	1.164163	2.563439
-3.902203	2.956780	2.547627
-4.128602	4.985508	2.564492
-4.203593	3.546587	2.560419
-4.414286	1.723036	2.550714
-4.459975	4.594081	2.565894
-4.480182	5.216364	2.556727
-4.652357	5.026650	2.568809
-4.666839	3.144943	2.557931
-0.525217	2.222717	2.560761
-0.960909	0.010000	2.554545
-0.996034	0.363190	2.565172
-1.359624	3.007970	2.568045
-1.607286	5.004429	2.563000
-1.711377	3.542395	2.569401
-1.768704	3.048611	2.572963
-2.088478	2.946957	2.562609
-2.292674	5.750698	2.563605
-2.644229	0.606432	2.570176
-2.860465	2.651395	2.558372
-2.930095	1.799714	2.577079
-3.091299	6.178468	2.580286
-3.334187	6.067355	2.586667
-3.638261	1.438261	2.560145
-3.727941	5.747647	2.557059
-3.828333	5.295370	2.562037
-3.855796	2.308938	2.578274
-4.091201	3.134047	2.584047
-4.250128	4.114615	2.559872
-4.278000	4.779000	2.565143
-4.436281	0.716942	2.565537
-0.517722	4.935316	2.575823
-0.932987	1.955325	2.584870
-1.174304	2.256311	2.588350
-1.380973	0.792478	2.578938
-1.577108	2.877169	2.578193
-1.685153	5.685194	2.593313
-1.747273	3.787727	2.564318
-1.892587	2.778187	2.591973
-1.988264	4.149097	2.583264
-2.166061	0.452929	2.574545
-2.310107	1.280643	2.591850
-2.367217	3.302565	2.579913
-2.442216	3.045412	2.580206
-2.593061	0.058131	2.597336
-2.624801	5.875909	2.591790
-3.044118	5.918235	2.576471
-3.333813	3.614676	2.574173
-3.600698	0.599070	2.577093
-3.663089	3.010244	2.582033
-4.441494	5.478276	2.585575
-4.494519	5.910000	2.573111
-0.520183	6.182385	2.584587
-0.519800	3.784400	2.584800
-0.521053	1.977895	2.582105
-0.749567	1.152987	2.596017
-0.990458	5.608431	2.601176
-1.175690	1.928103	2.581034
-1.204652	6.358182	2.590588
-1.248383	3.890240	2.589222
-1.316328	2.747574	2.606459
-1.881591	0.486667	2.603258
-2.244855	0.220217	2.587826
-2.451071	4.102262	2.588810
-2.754404	3.731124	2.599679
-2.793585	5.672981	2.591321
-3.433493	2.550478	2.596801
-4.257757	1.243694	2.604037
-4.453023	0.209302	2.580233
-0.740767	3.185879	2.603546
-0.744397	3.889397	2.596810
-0.790373	5.414533	2.606293
-1.141971	5.923019	2.615367
-1.381750	1.808500	2.593000
-1.773226	1.616989	2.592258
-2.696154	3.435128	2.598034
-2.871277	4.219574	2.592128
-3.877872	4.097340	2.592128
-4.055500	5.675900	2.597900
-4.189037	0.752222	2.600444
-4.245577	5.244615	2.587115
-4.325364	5.714904	2.607548
-4.661984	2.685709	2.607935
-4.663902	4.753049	2.602317
-0.532658	0.785443	2.605063
-0.537764	4.045000	2.625590
-0.948269	2.990641	2.609615
-1.086111	1.492778	2.605317
-1.134601	5.013497	2.605276
-1.790406	6.021265	2.628401
-1.995593	0.162667	2.609741
-2.299455	2.827891	2.614727
-2.707650	2.458060	2.629126
-3.076544	0.128456	2.607426
-3.171938	1.671125	2.606063
-3.287411	0.700670	2.615402
-3.312234	5.257056	2.615990
-3.512347	5.632721	2.621190
-3.525854	6.387561	2.603415
-3.709884	5.089884	2.603023
-3.736271	3.712712	2.598136
-3.748874	6.312517	2.605563
-3.915044	2.634167	2.619649
-4.507546	1.370417	2.611111
-4.673267	1.993663	2.601584
-0.531179	4.616829	2.626341
-0.532674	2.661444	2.626898
-0.533346	4.340769	2.633308
-0.728793	2.093621	2.613276
-0.759958	2.359792	2.623792
-0.758000	2.824846	2.617615
-1.151220	3.159762	2.625744
-1.410855	0.544737	2.617171
-1.437373	2.276314	2.626186
-1.461399	5.546923	2.619231
-2.032412	2.038235	2.618000
-2.826098	1.339268	2.606341
-3.130324	2.820926	2.620000
-3.287592	0.259634	2.624817
-3.353770	2.963811	2.623648
-3.675800	0.921400	2.610000
-3.982680	3.723196	2.620722
-4.015613	4.517350	2.630912
-4.144313	6.153359	2.631565
-4.660187	3.802336	2.628785
-4.661563	4.252969	2.612969
-4.682391	1.175652	2.609565
-0.532226	5.705110	2.645799
-0.748947	0.891579	2.620526
-0.960833	1.703214	2.626429
-1.167657	1.247483	2.641434
-1.488025	5.290988	2.634259
-1.526952	2.003524	2.629524
-1.673107	2.405000	2.634854
-1.743444	4.032384	2.633046
-1.765877	4.461801	2.628578
-2.102195	5.506234	2.645337
-2.163140	1.720814	2.623256
-2.241939	2.183091	2.629818
-2.622632	2.712105	2.623474
-2.642069	0.941724	2.619138
-2.806093	4.457417	2.633709
-3.041983	1.457190	2.623223
-3.039667	5.668500	2.622833
-3.076181	0.838611	2.629375
-3.219025	3.202086	2.641247
-3.253366	5.798000	2.630927
-3.459063	2.073750	2.636016
-3.606556	3.268036	2.635589
-3.621702	4.137518	2.638156
-3.701122	2.110102	2.629898
-3.918095	5.874127	2.628095
-3.935977	2.044828	2.629885
-4.188371	0.215140	2.644803
-4.359293	3.012989	2.641033
-4.447660	3.663723	2.622340
-4.664601	0.395460	2.635153
-0.524286	1.745714	2.628000
-1.246996	3.454032	2.643004
-1.248271	0.992944	2.651682
-1.440233	4.839535	2.634341
-1.475615	4.390462	2.642962
-2.129912	5.155242	2.637841
-2.250588	0.851307	2.642353
-2.522614	3.866863	2.639150
-2.920643	4.888006	2.645434
-3.070552	2.149816	2.648098
-3.084753	4.425157	2.647982
-3.367770	1.834865	2.638851
-3.531791	2.792090	2.627463
-3.590686	5.319840	2.647666
-3.680795	4.467500	2.635341
-3.751188	4.736875	2.642875
-3.863457	1.486543	2.631728
-3.900333	6.122111	2.636556
-4.085882	3.951078	2.638333
-4.157468	5.896709	2.637595
-4.187091	1.708182	2.641636
-0.540536	0.125179	2.640357
-0.990984	5.226230	2.637213
-1.023974	4.266538	2.638974
-1.243229	0.090646	2.663274
-1.364333	5.078000	2.644833
-1.573392	0.145636	2.666908
-1.856800	2.241600	2.645333
-2.218293	4.724042	2.655749
-2.657175	0.353234	2.664535
-3.395417	1.053833	2.657458
-3.759247	1.713011	2.647957
-4.079378	2.427772	2.652073
-0.958541	3.336865	2.662649
-1.060385	2.756154	2.661319
-1.186313	2.517095	2.678547
-1.240855	4.141453	2.656581
-1.632649	0.424106	2.665364
-1.921096	1.807123	2.657329
-2.034556	5.916006	2.669852
-2.044006	6.217596	2.666409
-2.068673	2.367092	2.668878
-2.276901	1.928592	2.652394
-2.279524	5.979921	2.651429
-2.305574	3.745574	2.650656
-2.624943	6.142586	2.672069
-2.670597	2.024925	2.650149
-2.711919	4.712551	2.668555
-3.261012	4.626640	2.660243
-3.511509	4.671321	2.660189
-3.970901	1.182973	2.654685
-4.123874	1.461982	2.652703
-4.351744	0.935814	2.650814
-4.667852	0.662349	2.659463
-4.669888	3.386180	2.648315
-0.734359	4.865846	2.673128
-0.775914	0.413710	2.674140
-0.961434	0.595814	2.673372
-1.009304	6.215304	2.671304
-2.137966	2.624068	2.675480
-2.224298	4.201157	2.674298
-2.411455	2.597818	2.668273
-2.594362	1.374947	2.678245
-2.836667	5.994881	2.669167
-2.864074	6.265556	2.682481
-2.937365	5.447814	2.679341
-3.229854	1.267816	2.687694
-3.431245	4.424440	2.677386
-4.266667	3.322510	2.677412
-4.671111	2.257222	2.666825
-0.540851	6.393617	2.672340
-0.736250	3.450357	2.665714
-0.747826	1.818478	2.665435
-1.340270	1.435811	2.683446
-1.450516	2.537613	2.679032
-1.727217	0.910061	2.680214
-1.729315	5.202904	2.686411
-2.187681	3.151304	2.676957
-2.251641	4.458750	2.676484
-2.266667	6.361897	2.691626
-2.526839	4.498705	2.689326
-2.528647	5.355714	2.680451
-2.604428	5.034797	2.690775
-2.903224	0.277632	2.682829
-3.131395	3.714264	2.686512
-3.153793	3.465862	2.668621
-3.342247	1.504270	2.668090
-3.680139	0.062404	2.688362
-4.171818	1.965682	2.673409
-4.181026	2.672821	2.667308
-4.420440	2.745535	2.684214
-4.657319	0.044933	2.687748
-0.529530	5.211745	2.687047
-0.546745	1.028019	2.698396
-0.906400	5.848400	2.676933
-0.920909	1.325207	2.682314
-1.237855	5.672013	2.703729
-1.332735	4.610122	2.694327
-1.503148	3.450247	2.688642
-1.556452	3.104301	2.689677
-1.667838	2.666419	2.690473
-1.861007	1.400104	2.696528
-1.887107	1.125028	2.706713
-2.005664	4.392920	2.687434
-2.031855	4.913345	2.699527
-2.105161	3.382796	2.687634
-2.153529	0.011176	2.680588
-2.346404	1.542959	2.697678
-2.430053	2.340160	2.691016
-2.572645	6.386777	2.690826
-2.585000	1.627097	2.685968
-2.860899	3.202360	2.685056
-3.165149	3.983731	2.696381
-3.503210	3.772399	2.694982
-3.774267	0.725600	2.683733
-3.937322	0.120711	2.708104
-3.956646	5.133634	2.705217
-4.207182	5.491572	2.705203
-4.420446	6.345785	2.700246
-0.776382	1.537884	2.705870
-0.908933	4.682267	2.688933
-1.016542	3.844034	2.700000
-1.513300	1.620800	2.697500
-1.674609	1.819922	2.699531
-1.925135	4.661189	2.699946
-2.172164	3.949179	2.702015
-2.505636	1.853636	2.688909
-3.078203	6.388281	2.708828
-3.200843	5.475172	2.705670
-3.604505	3.527143	2.696813
-3.685130	6.003239	2.708227
-3.790493	0.470987	2.706951
-4.158803	6.388632	2.703675
-4.238129	4.334082	2.709456
-4.430909	2.270000	2.685455
-4.444973	4.172295	2.704809
-1.014737	3.570526	2.694737
-1.602431	0.682099	2.717514
-1.882727	2.540420	2.712448
-1.921250	5.685395	2.708355
-2.512251	1.131602	2.716234
-2.831762	1.576211	2.712291
-2.856641	0.539733	2.715115
-2.868545	0.960933	2.717985
-3.129558	0.517666	2.720442
-3.133700	1.901145	2.721762
-3.387724	3.401870	2.703659
-3.581970	0.323788	2.711212
-3.964842	0.893079	2.724184
-3.998968	0.623175	2.709048
-4.629157	2.933652	2.707303
-4.660055	0.926813	2.714725
-4.657636	4.487818	2.707636
-0.531961	2.417647	2.716275
-0.777677	6.054949	2.711515
-0.966407	0.168982	2.715808
-1.513122	6.248416	2.722127
-2.372299	5.543678	2.717816
-2.448526	0.230842	2.718421
-2.620231	3.173308	2.713846
-2.964299	4.636075	2.719346
-2.986316	1.187632	2.709474
-3.203151	2.501005	2.721781
-3.465669	5.081260	2.714016
-3.526053	1.653947	2.709342
-3.518653	0.775699	2.727306
-3.853548	3.534903	2.715097
-4.370661	6.064793	2.722314
-4.634306	6.075231	2.729364
-4.652209	5.528023	2.713023
-0.595478	1.346752	2.730510
-0.784878	2.599106	2.729919
-1.124651	0.784574	2.734651
-1.309716	2.077441	2.733602
-1.379948	0.319636	2.741429
-1.491071	5.996429	2.724375
-1.585827	1.373309	2.724892
-1.818966	5.454414	2.734966
-2.023030	0.907879	2.726742
-2.070818	3.721727	2.726000
-2.463177	4.775156	2.733646
-2.479805	0.799707	2.732732
-2.709505	2.926847	2.733919
-2.751406	5.273438	2.724063
-2.910544	3.456463	2.742075
-3.604632	1.892316	2.720105
-3.942047	5.431913	2.740906
-3.982486	4.812057	2.741343
-4.250533	4.594533	2.722667
-4.371507	1.557911	2.734349
-4.435698	5.041977	2.717907
-4.438498	1.896197	2.732582
-4.452414	4.802069	2.716897
-4.470000	1.138500	2.723750
-4.650169	5.265932	2.724576
-0.788299	6.337631	2.755755
-0.903357	4.079860	2.743007
-0.988571	2.360268	2.740625
-1.181654	0.486850	2.735354
-1.234600	4.380000	2.728000
-1.434203	3.995942	2.733841
-1.800375	0.259083	2.746042
-1.803390	6.258475	2.743051
-1.815070	2.014930	2.730563
-1.940433	3.179300	2.742667
-2.288533	0.627200	2.739200
-2.450444	2.087667	2.735556
-2.707755	4.103980	2.734490
-3.203448	5.054253	2.736264
-3.252063	4.256349	2.731270
-3.292287	2.245919	2.742960
-3.363737	4.855758	2.730202
-3.418315	0.081573	2.736404
-3.511148	1.330383	2.756530
-3.651667	2.597299	2.743218
-3.765000	1.287222	2.724444
-3.955871	3.295226	2.740903
-3.974063	1.817902	2.746696
-4.014385	2.844115	2.744115
-4.316525	2.478559	2.736780
-4.632598	1.548583	2.734331
-0.543074	5.960777	2.753108
-0.546780	0.342542	2.739153
-0.774047	5.175117	2.764543
-0.790346	3.696199	2.764773
-1.178487	1.717311	2.742521
-1.759851	3.372239	2.746716
-1.880063	0.706313	2.752125
-2.736379	1.804138	2.739828
-2.895298	1.997440	2.748571
-3.284699	6.265060	2.747169
-3.399123	4.074035	2.741754
-3.460672	5.875126	2.750420
-3.863488	4.340349	2.747209
-4.205572	3.750663	2.758163
-4.462105	3.901316	2.736842
-4.649643	5.811786	2.742143
-0.535600	3.117200	2.750800
-0.762108	4.309307	2.767139
-0.754271	5.656042	2.764271
-1.399615	1.199872	2.749231
-1.491938	5.748682	2.760388
-1.776011	4.890730	2.765618
-1.816604	4.240472	2.757170
-2.030909	0.356783	2.758881
-2.129521	1.396322	2.775239
-2.162250	1.120125	2.773125
-2.298234	4.984857	2.769735
-2.436892	5.792243	2.769135
-2.950719	2.546601	2.766928
-3.037373	3.038898	2.760508
-3.332250	2.735700	2.761850
-3.421163	0.530720	2.771801
-3.749589	2.847363	2.769658
-3.915000	6.384521	2.767055
-4.201961	2.213137	2.751667
-4.568899	2.485321	2.757844
-0.537273	3.615795	2.759886
-0.564088	0.596101	2.761321
-0.960757	4.931568	2.776108
-1.042482	2.099433	2.778830
-1.068169	5.411901	2.771479
-1.215385	2.939091	2.771469
-1.228542	3.691146	2.765365
-1.363750	3.240766	2.773266
-1.648255	4.647562	2.778975
-1.762383	0.018135	2.797098
-2.169267	5.723933	2.771200
-2.289873	3.526709	2.760633
-2.515227	3.442500	2.755000
-2.687552	5.523237	2.778880
-2.721789	0.745474	2.762105
-2.926064	2.807128	2.771170
-3.533224	6.212694	2.766653
-4.041166	4.164028	2.778622
-4.395129	5.306258	2.782419
-4.658444	4.051778	2.753556
-0.999477	1.083721	2.791948
-1.185906	5.188898	2.777638
-1.221552	6.183190	2.779397
-1.630548	2.180411	2.791918
-1.636364	1.136667	2.776515
-1.773679	2.914811	2.777736
-1.941089	3.985545	2.779406
-2.278626	0.386565	2.781527
-2.447778	4.258086	2.782407
-2.654342	2.243772	2.780044
-2.754333	1.180889	2.770667
-2.916066	2.297377	2.778525
-3.024259	4.189630	2.764630
-3.163118	1.022971	2.793559
-4.026263	0.377105	2.780526
-4.201429	5.109341	2.778352
-4.384888	0.334218	2.798139
-4.416528	0.064306	2.770139
-4.661509	3.601509	2.774340
-0.552230	2.109189	2.786824
-0.560796	5.465995	2.800498
-0.776098	3.003943	2.800894
-0.983906	4.464017	2.804848
-2.251581	5.333185	2.802450
-2.522237	0.542345	2.801321
-2.928894	0.052211	2.793317
-3.881021	3.938290	2.798812
-4.102404	3.499519	2.797548
-4.238676	0.555588	2.790098
-4.231522	4.858478	2.781957
-0.558624	2.850201	2.814228
-0.731726	0.184772	2.805381
-1.195038	4.804427	2.794656
-1.328407	5.398956	2.798956
-1.444454	0.901965	2.801266
-1.555200	5.036350	2.798950
-1.858580	3.602301	2.815227
-2.022564	1.628974	2.795000
-2.077536	2.952899	2.796232
-2.917843	3.978824	2.793922
-3.124481	4.813485	2.806680
-3.192931	0.021954	2.802701
-3.622527	2.342582	2.803516
-3.672168	5.752937	2.795385
-3.863706	2.444924	2.798731
-3.914733	5.686000	2.798333
-4.163778	1.076044	2.803244
-4.661579	1.789474	2.787895
-0.544545	1.580000	2.798636
-0.549667	3.363067	2.809067
-0.885252	0.799496	2.804748
-1.725562	3.842630	2.820301
-1.739442	5.830172	2.812361
-1.989336	5.285071	2.808815
-2.316182	2.991727	2.808364
-2.395000	4.005000	2.817378
-2.480687	2.795267	2.815458
-2.705878	0.151832	2.808092
-2.739487	5.786769	2.811692
-2.990958	5.851250	2.815708
-3.006972	6.107156	2.805872
-3.120489	0.266895	2.828680
-3.227456	5.993713	2.819474
-3.440515	5.469152	2.819242
-3.599865	1.081892	2.809324
-3.699767	5.497674	2.807829
-3.694194	1.497258	2.802581
-3.780233	4.972907	2.806163
-3.859500	2.189167	2.803500
-4.660500	1.309750	2.802750
-1.005238	6.022585	2.816190
-1.462623	2.916721	2.808525
-2.246889	0.151556	2.820778
-2.423846	0.010000	2.810769
-2.428267	6.061333	2.817200
-2.479134	3.690397	2.821408
-2.830982	5.057991	2.826652
-2.912465	3.731690	2.815775
-3.331184	3.616184	2.824145
-3.509651	2.938488	2.822907
-3.696212	3.096212	2.813788
-4.168136	3.033559	2.808305
-4.159818	5.722000	2.811636
-4.381796	3.515550	2.829142
-4.404800	5.830633	2.831267
-4.466186	0.688186	2.824419
-4.644556	3.195148	2.814675
-0.545783	6.218313	2.833434
-0.574760	3.861336	2.841336
-0.813333	2.206875	2.816250
-0.970211	0.391368	2.821474
-0.988667	1.850000	2.819778
-1.289531	5.897469	2.840375
-1.328988	0.666883	2.836316
-1.402370	4.233642	2.832659
-1.457434	1.836579	2.839967
-1.470444	3.758222	2.829185
-1.600000	5.527407	2.839226
-2.018788	2.178333	2.825227
-2.401940	3.234776	2.831741
-2.686957	4.343430	2.834831
-3.007709	5.244916	2.831006
-3.037314	1.687143	2.828571
-3.294829	1.687222	2.837607
-3.846580	4.593446	2.840959
-4.431607	5.558571	2.819643
-4.446545	4.438091	2.826727
-0.552609	4.746783	2.844348
-1.001827	1.552019	2.831058
-0.999157	3.132410	2.830723
-1.422444	0.029259	2.834370
-2.075393	0.586517	2.835955
-2.458202	5.176404	2.835618
-2.680229	3.867163	2.853954
-2.711356	3.588136	2.828814
-2.965081	0.743257	2.844821
-3.594733	3.965800	2.839733
-3.720891	3.715487	2.850084
-3.759394	5.239091	2.837803
-4.018971	1.339485	2.840662
-4.268873	4.035352	2.842923
-4.636082	4.692990	2.843196
-0.564335	1.843064	2.856821
-0.559474	4.481140	2.862456
-0.755000	1.008173	2.841635
-0.780370	1.964259	2.846852
-0.785723	3.272215	2.860154
-1.134459	3.350796	2.864140
-1.212135	3.940391	2.861744
-1.211509	2.278679	2.839623
-1.935429	6.071333	2.853000
-1.978088	2.729681	2.858685
-2.199812	6.135564	2.858195
-2.231859	2.297692	2.853654
-2.931264	4.415824	2.857637
-3.293438	5.690341	2.856790
-3.337346	2.008499	2.861743
-3.580435	2.094348	2.850435
-3.841543	1.088743	2.850286
-3.934828	3.065000	2.842069
-4.005836	6.168662	2.857695
-4.191637	0.812847	2.856584
-4.333110	1.321159	2.852805
-4.386641	3.170859	2.859805
-4.636063	0.254344	2.854525
-4.646082	2.038144	2.848557
-0.826298	5.422009	2.879142
-0.994683	5.643303	2.874163
-1.115623	4.210101	2.871953
-1.162965	0.244070	2.867638
-1.619528	4.356604	2.852642
-1.635628	4.095953	2.867256
-1.993547	0.125893	2.870587
-2.047526	4.204742	2.868351
-2.096887	4.548675	2.861258
-2.208592	1.771549	2.859437
-2.224318	2.774545	2.849091
-2.352203	1.282203	2.858305
-2.551788	2.499416	2.868978
-2.718065	2.698581	2.859742
-2.997885	1.385962	2.855288
-3.042971	5.599239	2.874964
-3.216967	4.470219	2.874727
-3.257376	5.276540	2.866844
-3.377000	0.287667	2.857083
-3.439677	2.516075	2.860108
-3.485000	3.210250	2.850750
-3.514041	4.247876	2.861503
-3.618968	4.790903	2.855097
-3.731266	3.349177	2.859684
-3.783857	0.268429	2.850000
-3.925894	1.581014	2.860725
-4.626012	6.306607	2.860714
-0.547826	4.994783	2.865362
-0.554017	4.138547	2.868205
-0.577396	0.831245	2.879660
-0.794940	0.569116	2.878594
-1.232000	2.695800	2.861200
-1.319910	5.006306	2.869279
-1.715000	3.165417	2.868125
-1.820732	2.350000	2.868293
-1.853889	4.472111	2.871000
-2.365019	0.985393	2.874869
-2.352108	4.587189	2.875189
-2.437465	1.707465	2.862254
-2.651959	0.965284	2.878325
-2.711473	3.341240	2.877209
-3.210428	3.344385	2.872086
-3.595860	4.499409	2.869946
-3.658588	0.617062	2.878814
-3.675091	6.383727	2.875909
-3.704701	0.869104	2.875522
-3.752941	4.157765	2.864471
-3.884757	5.937427	2.869515
-4.186545	5.976021	2.872513
-4.209742	1.816753	2.878196
-4.244762	6.236190	2.859881
-4.405328	2.110246	2.868443
-4.619400	4.958133	2.877800
-4.633015	2.716332	2.871910
-4.642273	4.278030	2.857879
-0.989286	2.630260	2.879026
-1.098768	1.319783	2.888696
-1.350645	3.494274	2.881694
-1.453417	4.792814	2.885075
-1.525772	0.507805	2.881545
-1.618000	2.490571	2.870429
-1.670000	6.083451	2.891882
-1.828544	1.741553	2.877961
-2.185620	0.803471	2.872562
-2.239863	2.031684	2.890756
-2.746094	1.402969	2.876094
-3.265742	3.085781	2.889180
-3.349922	3.869845	2.876744
-3.385773	0.917629	2.874948
-3.399282	4.666133	2.883149
-4.093054	4.477096	2.887635
-4.120047	2.538821	2.887217
-4.365804	2.897054	2.881339
-0.587417	2.589970	2.904024
-0.795717	5.882245	2.905281
-0.805333	1.714267	2.890000
-1.475362	2.681159	2.882464
-2.001504	1.915398	2.883805
-2.254959	3.802764	2.883740
-2.298175	2.542698	2.890238
-2.638041	1.975773	2.894124
-2.716267	6.030800	2.891511
-2.870189	4.795245	2.897623
-3.280994	1.423205	2.909295
-3.716032	1.722857	2.889048
-3.790059	1.967059	2.892941
-4.048138	2.024575	2.892186
-4.421913	0.937478	2.887826
-0.780663	4.635128	2.909643
-0.820641	1.251352	2.907367
-0.990283	2.888679	2.894434
-1.214394	1.903788	2.898333
-1.241000	1.076235	2.899353
-1.251497	1.532925	2.895170
-1.334063	2.480208	2.891250
-1.591203	5.270886	2.901646
-1.738281	1.505313	2.893906
-1.988533	3.383743	2.913084
-2.048613	2.473323	2.913968
-2.056667	5.519128	2.916744
-2.163088	4.794118	2.900049
-2.498072	6.279699	2.893072
-2.504000	1.468600	2.889000
-2.627000	4.884200	2.893700
-3.079634	2.080650	2.908659
-3.092132	3.572574	2.893750
-3.144036	2.846637	2.906054
-3.577731	0.163529	2.899916
-3.757257	6.151600	2.907714
-4.149273	3.266364	2.909636
-4.210175	0.149605	2.910307
-4.638151	0.517395	2.895714
-0.562613	5.727789	2.910402
-0.575678	1.164746	2.908559
-0.920709	3.499803	2.914921
-1.004144	6.261781	2.917500
-1.062536	0.611312	2.921341
-1.185833	0.010000	2.912083
-1.450863	4.530203	2.915685
-1.985848	5.820939	2.914874
-2.023400	6.304800	2.899800
-2.085569	5.055976	2.917358
-2.251351	4.356351	2.901622
-2.477079	5.428168	2.912079
-2.546971	3.035477	2.918133
-2.600449	4.627978	2.904719
-2.907442	0.387442	2.912558
-3.118970	2.343212	2.913333
-3.513097	5.224773	2.925938
-3.795065	0.030325	2.910844
-3.895146	2.677961	2.902039
-3.978011	3.695966	2.918977
-0.778571	2.765306	2.907551
-0.821531	2.440714	2.927143
-1.410306	6.114585	2.930044
-1.423771	6.373829	2.915829
-1.578886	3.378257	2.931629
-1.821166	5.112914	2.929580
-1.825929	1.270796	2.917345
-2.136087	3.161196	2.923750
-2.674141	1.646520	2.919780
-3.210132	0.757368	2.907500
-3.232430	4.097664	2.926776
-3.507990	3.453920	2.919749
-4.062528	5.268210	2.925795
-4.180732	1.540427	2.930915
-4.373627	2.635840	2.936933
-4.387752	4.669922	2.913488
-4.624673	1.088844	2.920251
-4.627841	2.286705	2.918182
-0.992422	5.164297	2.929219
-1.661173	6.361939	2.926071
-1.685920	1.943793	2.930057
-1.736331	0.977171	2.938768
-1.729010	2.715623	2.942204
-1.825287	5.622184	2.920805
-2.259347	5.891847	2.946705
-2.662846	0.364154	2.924385
-2.862826	5.413913	2.931087
-2.963523	3.280783	2.939075
-3.121375	6.280750	2.925625
-3.380063	1.173365	2.940283
-3.905000	0.725987	2.924013
-4.047445	2.288248	2.935401
-4.057355	4.977806	2.936710
-4.456875	1.716354	2.917500
-0.585404	2.304485	2.949522
-0.582712	5.236356	2.933983
-1.043333	3.735310	2.948178
-1.346042	5.667292	2.935417
-2.273591	6.372317	2.940270
-2.824747	2.143434	2.936061
-2.844615	6.230256	2.929744
-2.853065	4.171429	2.955377
-3.097868	3.863807	2.938629
-4.608776	5.418299	2.942313
-0.745729	6.141563	2.938125
-1.975950	1.084380	2.948264
-2.113418	3.606962	2.942532
-2.268871	1.552097	2.938710
-2.325197	5.636535	2.947717
-2.677410	5.228584	2.962410
-2.859203	1.822319	2.949420
-3.056356	5.022712	2.964350
-3.131000	2.590000	2.942800
-3.350226	4.983982	2.951538
-3.522110	5.682110	2.957156
-3.519710	1.598696	2.946667
-4.369305	2.353874	2.966556
-4.382044	3.815660	2.962013
-4.609503	3.429752	2.954876
-4.607908	5.681503	2.950392
-0.630000	6.400000	2.930000
-0.778592	4.123944	2.948732
-0.793213	4.993371	2.972081
-0.832313	3.873955	2.958507
-1.043587	4.672310	2.966474
-1.068624	0.886746	2.972963
-1.201522	4.449755	2.972364
-1.211739	3.118804	2.956087
-1.293286	0.441714	2.954143
-1.439294	2.073176	2.971676
-1.506768	1.572348	2.971311
-1.582976	0.756976	2.961756
-1.610675	0.124262	2.966793
-1.640513	3.638376	2.960684
-1.724115	0.362718	2.975062
-1.905962	3.031122	2.966218
-1.954537	0.825610	2.966244
-2.029538	3.835692	2.952154
-2.570364	5.664227	2.963500
-2.589734	1.220631	2.963688
-2.589788	4.111555	2.964488
-2.772178	0.599530	2.967054
-2.963931	0.982901	2.966069
-3.381854	6.183609	2.969371
-3.428922	2.257059	2.956863
-3.856667	0.476250	2.954896
-4.061374	5.553132	2.958626
-4.440645	4.195806	2.954194
-4.451496	6.150709	2.956142
-4.604857	2.972714	2.969171
-4.603529	5.945529	2.962059
-4.634242	0.822121	2.950606
-0.673841	3.557256	2.963659
-1.010698	2.274767	2.969767
-1.446349	3.097460	2.960794
-1.589677	1.322581	2.967097
-1.821967	5.375738	2.974098
-2.251799	3.397226	2.975488
-2.409465	0.290053	2.969626
-2.556105	0.736105	2.965684
-3.122000	1.208667	2.971111
-3.323333	6.397778	2.955000
-3.438519	0.697593	2.970556
-3.540000	1.878205	2.964188
-3.787949	1.307564	2.956795
-4.147686	2.791843	2.971843
-4.140172	4.728970	2.980129
-4.279718	5.443099	2.967606
-4.378636	4.918818	2.973182
-4.623243	3.737027	2.958919
-0.584430	1.404051	2.971772
-0.591183	0.380860	2.976774
-0.595098	3.049248	2.991732
-1.179446	5.487196	2.990369
-1.379280	0.210800	2.984400
-1.489661	1.083842	2.990367
-1.803846	0.618173	2.979760
-1.970240	1.464251	2.979701
-2.468077	2.138154	2.981769
-2.516000	5.915280	2.979360
-2.550647	0.084676	2.982806
-2.820882	2.895882	2.963235
-2.881604	2.427380	2.989626
-3.101616	0.539167	2.990783
-3.372746	0.041051	2.982271
-3.608080	2.766449	2.985435
-3.699009	2.511509	2.990819
-3.931100	3.446100	2.980400
-4.009053	0.951053	2.973684
-4.073558	3.929519	2.973269
-4.205401	4.244453	2.985766
-1.104513	4.938407	2.990442
-1.338686	1.311752	2.985839
-1.430426	4.010426	2.985638
-1.574441	5.748323	3.002484
-1.641067	2.957467	2.976667
-1.978692	0.430093	2.989346
-2.404566	4.815029	2.985838
-2.494366	4.409718	2.982958
-3.157006	1.845150	2.996407
-3.412473	5.913055	2.997527
-3.938529	4.280711	3.002010
-4.599196	4.001929	2.999678
-0.811795	1.493462	2.992179
-0.962454	0.085810	3.014282
-1.059556	5.862111	2.993667
-1.078889	1.711389	2.988056
-1.178089	6.085122	3.002846
-1.487313	2.331194	2.989701
-1.656981	4.911294	3.009865
-1.791356	4.681073	3.002655
-2.552769	3.498769	2.987231
-2.768261	3.131087	2.985652
-2.901264	1.558276	2.995057
-3.052028	0.081538	3.006573
-3.501915	3.710395	3.012948
-3.670876	5.887883	2.996934
-3.885631	6.353584	3.007952
-3.938226	1.796774	2.991129
-3.982487	0.260160	3.016417
-4.313269	5.173948	3.007120
-4.346824	6.392118	3.002471
-4.383024	0.503902	3.007171
-4.563333	5.178148	2.995741
-4.627188	1.560000	2.983125
-4.616522	4.498913	2.992391
-0.574348	5.966087	3.008152
-0.847073	4.360813	3.004797
-0.831297	0.318973	3.015622
-1.309068	2.894472	3.012050
-1.303876	3.712416	3.020758
-1.794305	4.256983	3.015932
-2.146888	1.269947	3.020186
-2.465091	3.864545	3.011727
-2.831880	5.656453	3.015556
-2.868916	1.234011	3.021111
-3.144691	5.851303	3.022443
-3.344422	2.699456	3.012177
-3.641162	5.008485	3.013586
-3.763290	5.653032	3.007806
-3.849693	5.406858	3.014483
-3.853712	2.903939	3.005076
-4.206617	3.605613	3.017361
-4.463099	0.146959	3.014094
-0.619245	0.134340	3.031321
-0.776604	5.644340	3.017107
-1.434645	5.456120	3.025519
-1.858778	2.137443	3.028125
-2.246563	0.470000	3.016172
-2.293333	5.157879	3.012879
-2.409600	1.883920	3.024160
-2.918045	2.687594	3.022481
-2.939975	6.012574	3.032277
-3.015106	3.033404	3.017553
-3.031495	4.592732	3.017268
-3.084866	4.289286	3.023170
-3.090000	5.392331	3.023006
-3.554808	1.361538	3.014615
-3.851057	4.848238	3.024626
-4.112820	0.502762	3.029622
-4.160495	1.222387	3.018288
-0.604194	1.656636	3.030276
-0.785479	0.807671	3.028082
-1.190548	2.123151	3.015616
-1.227989	5.166931	3.035556
-1.328938	0.876372	3.032566
-1.839646	6.226814	3.026726
-1.922000	4.036727	3.014000
-2.036383	1.704823	3.027730
-2.648554	2.311281	3.035289
-2.697941	6.395000	3.018824
-2.807178	0.194724	3.034110
-2.872027	3.916351	3.025946
-3.352867	0.468400	3.027867
-3.596714	5.454714	3.033857
-3.808177	2.271302	3.035573
-4.362868	5.669412	3.031912
-4.402759	1.153276	3.016724
-0.591667	2.059286	3.025714
-0.995349	4.046395	3.033140
-1.310984	1.722131	3.031639
-1.476782	5.098276	3.039425
-1.827576	0.012424	3.030909
-2.165479	0.229175	3.047228
-2.507978	5.039551	3.042135
-3.224842	4.770791	3.050253
-3.665972	1.103833	3.055250
-3.859615	3.197308	3.027308
-3.979545	5.775909	3.028485
-4.076650	3.050911	3.056404
-4.358105	3.354373	3.055452
-4.376240	1.928640	3.036240
-4.411852	1.474568	3.034691
-4.611852	1.865556	3.024815
-4.604184	1.318367	3.039694
-0.603711	4.297062	3.054175
-1.071839	0.389425	3.047241
-1.114377	2.486748	3.062340
-1.291735	4.682653	3.045918
-1.926182	4.897939	3.045758
-2.134639	2.932990	3.040103
-2.226963	3.986667	3.050444
-2.260786	5.418176	3.064025
-2.357424	3.634444	3.051566
-2.357818	2.835273	3.038182
-2.606012	2.816190	3.051905
-2.838409	3.475455	3.036818
-3.208217	0.964650	3.047261
-3.608493	0.433797	3.058464
-3.697647	4.651569	3.046471
-3.711103	3.544412	3.052059
-3.854268	4.025223	3.053185
-3.860929	5.142301	3.056195
-4.229257	2.142012	3.062167
-4.238431	0.978627	3.045294
-4.356806	0.758194	3.044722
-4.580442	2.505959	3.063363
-0.615091	3.318649	3.069221
-0.836852	2.113386	3.071852
-0.937294	6.056706	3.047059
-1.029681	1.944043	3.059894
-1.301309	4.214698	3.071779
-2.036773	5.275100	3.065100
-2.116545	2.195818	3.064682
-2.178099	0.974678	3.067427
-2.326323	0.718215	3.077677
-2.340226	3.089173	3.057669
-2.365336	2.363109	3.079397
-2.504116	0.510145	3.073275
-2.698911	3.694719	3.061386
-2.767626	4.997071	3.080657
-2.955570	6.392405	3.058734
-3.140643	1.590000	3.061053
-3.240539	0.247246	3.057425
-3.342381	5.428294	3.064960
-3.430638	2.936064	3.055745
-3.651544	3.064926	3.056029
-3.754658	1.539530	3.058718
-4.303206	4.470802	3.068473
-0.600556	2.796389	3.063611
-0.629172	0.616847	3.082930
-0.728088	1.871324	3.063824
-0.795752	5.242920	3.068319
-0.868333	1.045591	3.067796
-1.140300	3.509200	3.064400
-1.344414	3.302207	3.081172
-1.667595	4.473797	3.060253
-1.809377	3.813863	3.081713
-1.831977	2.506186	3.080819
-1.851461	3.541685	3.066067
-2.005217	4.402174	3.067702
-2.164639	2.673436	3.075326
-2.366364	4.208267	3.080398
-2.369153	1.141864	3.067119
-2.452162	2.621622	3.063784
-3.166927	6.061094	3.065625
-3.254877	3.647654	3.072222
-3.366824	4.262128	3.082804
-3.492162	4.796967	3.086186
-3.714184	4.397245	3.071429
-3.942389	2.493097	3.064956
-4.570455	4.779318	3.082143
-0.590200	6.240400	3.074400
-0.616429	5.447989	3.089577
-0.620177	0.982920	3.077168
-0.839900	3.130000	3.080348
-1.092000	2.755636	3.087182
-1.332266	2.646059	3.088079
-2.035725	4.664638	3.079420
-2.372338	6.080390	3.065974
-2.629547	6.191317	3.087613
-2.672617	5.463925	3.084346
-2.695846	2.573923	3.081692
-2.907789	5.223579	3.084105
-2.963410	3.686994	3.078728
-3.150000	5.940000	3.050000
-3.327005	2.448122	3.087310
-3.368018	1.743514	3.075946
-3.600000	0.010000	3.060000
-3.626393	4.168525	3.077705
-3.733908	0.198966	3.076782
-0.614457	4.822659	3.091685
-0.629560	3.779223	3.106736
-1.067917	1.485641	3.102564
-1.095000	1.155476	3.081905
-1.276556	5.848222	3.086000
-1.394232	0.628652	3.094569
-1.497568	6.120967	3.122077
-1.664955	5.524324	3.092252
-1.808000	5.792933	3.081467
-1.870442	1.880088	3.090796
-1.941758	6.006703	3.103242
-2.072295	0.638197	3.089344
-2.124315	6.191986	3.089863
-2.228841	4.516522	3.079130
-2.388758	1.400229	3.103693
-2.500719	0.941871	3.090863
-2.728981	5.875370	3.081389
-3.165393	3.217416	3.083483
-3.322698	3.402857	3.086190
-3.414000	3.183400	3.077400
-3.471455	4.509515	3.101381
-3.542456	6.354199	3.094128
-3.628608	3.922152	3.083544
-3.660653	2.063015	3.091658
-3.920761	1.143370	3.087391
-3.958051	4.571186	3.103729
-3.978148	1.383519	3.082407
-4.337213	3.048197	3.078852
-4.581728	0.364938	3.093519
-0.829332	6.313819	3.111169
-1.526292	1.825899	3.097191
-1.545745	4.687660	3.098511
-1.636916	3.183383	3.112246
-1.730515	1.661838	3.103235
-2.133487	5.713026	3.102993
-2.136038	1.920189	3.091509
-2.219130	4.941159	3.093333
-2.480000	1.641707	3.092561
-2.637381	1.462857	3.087619
-2.636863	1.820196	3.088235
-3.044909	0.775455	3.099636
-3.229945	5.170685	3.113151
-3.392329	3.983425	3.096027
-4.089104	6.053582	3.089552
-4.307248	4.019060	3.103490
-4.462569	3.596147	3.088991
-4.578966	2.108828	3.093931
-0.614406	4.554266	3.107063
-0.611190	4.043690	3.106905
-1.078693	3.264602	3.114716
-1.298685	6.285014	3.120630
-1.309775	0.016854	3.114494
-1.494802	0.393164	3.108870
-1.537893	3.816679	3.116643
-1.550377	4.260849	3.103113
-1.569021	2.534000	3.112383
-1.924551	2.799449	3.116435
-2.634435	3.295043	3.115565
-2.638000	4.770286	3.110286
-2.691007	4.519424	3.113381
-3.193438	2.207344	3.100781
-3.602194	0.831484	3.106839
-3.612222	6.101111	3.099667
-3.847700	6.028650	3.112100
-4.132923	1.897769	3.111308
-4.309740	5.918842	3.119385
-4.578312	3.209740	3.104286
-0.854523	2.866231	3.127588
-0.858194	3.640220	3.127048
-0.896061	0.552963	3.122727
-1.044767	5.313837	3.117326
-1.052529	4.288059	3.122471
-1.476947	3.534466	3.132176
-1.639533	5.969844	3.128599
-1.675067	4.032400	3.110533
-1.893800	3.246800	3.119500
-1.912118	0.219082	3.127012
-2.060135	0.019324	3.115135
-2.746538	1.016955	3.133494
-3.053333	4.050476	3.109286
-3.074449	3.454487	3.124601
-3.335948	5.692714	3.121970
-3.400792	2.065667	3.121667
-3.614847	3.313190	3.120123
-3.733200	1.815200	3.113867
-3.825814	3.772326	3.113721
-3.903465	1.997228	3.121683
-4.308075	1.693369	3.133610
-4.560851	6.311560	3.115248
-0.880652	1.692717	3.118804
-0.871169	4.790974	3.133117
-1.044895	5.658531	3.145431
-1.220912	3.957541	3.139751
-1.316803	4.916531	3.125034
-1.528333	2.805238	3.122381
-1.685254	2.297119	3.123559
-1.773426	1.394422	3.137729
-2.090484	4.169677	3.120968
-2.349530	0.054201	3.130940
-2.452821	4.608803	3.125470
-2.486731	5.288770	3.128414
-2.978380	4.827887	3.141502
-3.096190	5.621524	3.122286
-3.477760	0.223120	3.125520
-3.785692	0.646000	3.141577
-4.070934	0.753391	3.133356
-4.570667	0.645487	3.129487
-4.570980	4.299118	3.125588
-0.634694	2.487296	3.143112
-1.291184	1.937763	3.135000
-1.316212	1.504394	3.136818
-1.917964	5.546764	3.142509
-2.592751	0.270106	3.156376
-2.692348	2.069103	3.152902
-2.692326	4.268372	3.128372
-2.994000	1.968000	3.132000
-3.015357	0.295714	3.133690
-3.047959	1.375714	3.132041
-3.224744	4.468590	3.132051
-3.389455	1.498364	3.130364
-3.435285	1.015854	3.139756
-3.581090	2.331280	3.149668
-4.096705	6.305233	3.141783
-4.104336	3.361538	3.144755
-4.352766	2.811064	3.133191
-4.585814	2.760000	3.118372
-0.636207	1.231379	3.141494
-0.858750	3.378523	3.146591
-0.876538	2.556667	3.148718
-1.093429	3.006190	3.145714
-1.638036	2.054286	3.150804
-1.695693	1.144818	3.149489
-2.156349	1.495556	3.142698
-2.256075	1.720093	3.150280
-2.387438	5.779835	3.157769
-2.661560	3.946086	3.162569
-2.939948	2.227959	3.160103
-3.212189	6.331108	3.156216
-3.269810	0.677286	3.152048
-3.273492	1.286508	3.154206
-3.804286	2.696807	3.140924
-4.039974	1.628675	3.157870
-4.074884	4.101163	3.136744
-4.099206	5.115556	3.138571
-4.270000	0.045100	3.165267
-0.628686	5.085200	3.161257
-0.853501	5.846024	3.168457
-0.882227	1.306597	3.163655
-0.963894	5.072861	3.174543
-1.147487	0.696884	3.164271
-1.389164	4.473908	3.171752
-1.620114	0.908523	3.156364
-1.872750	0.972125	3.152875
-2.023167	3.691000	3.148500
-2.067673	3.440204	3.167837
-2.150000	6.397500	3.143333
-2.374500	6.323833	3.164833
-2.808937	0.421884	3.160242
-3.215714	2.989429	3.150286
-3.523583	2.597250	3.160833
-3.631647	5.220884	3.167068
-3.843342	0.916247	3.172986
-4.197966	2.391441	3.155678
-4.324233	4.721104	3.159877
-4.519342	0.894737	3.156053
-4.548725	5.541544	3.161074
-0.617551	5.755510	3.155102
-0.863176	5.468243	3.166284
-1.147528	0.190148	3.183100
-1.304255	5.615691	3.176064
-1.577111	5.295827	3.180938
-1.637439	0.615732	3.159024
-1.704110	6.389863	3.166027
-2.122802	2.435495	3.174835
-2.311452	2.068710	3.156613
-2.562715	3.041900	3.178914
-2.801111	0.754138	3.184215
-2.869286	0.010714	3.150000
-2.915226	4.419095	3.174422
-2.938462	1.730888	3.175207
-4.073960	5.373926	3.175336
-4.205161	1.426022	3.159677
-4.332582	6.215879	3.168297
-4.547045	5.802045	3.168068
-0.852059	4.541324	3.176176
-1.062056	6.219065	3.172991
-1.548302	0.026981	3.185535
-2.157048	3.197048	3.178667
-2.190839	5.973077	3.182168
-3.178317	3.860099	3.179505
-3.935281	5.592809	3.175281
-4.057363	4.873035	3.190000
-4.157851	5.699256	3.173471
-4.287514	0.322977	3.187225
-4.537803	6.064470	3.180227
-4.556304	5.017826	3.168478
-0.644805	2.232857	3.190260
-0.827101	4.172678	3.202531
-1.481391	1.290397	3.192583
-1.662885	0.239808	3.185288
-1.775054	5.050975	3.201552
-1.845149	0.477127	3.198507
-2.828082	3.011289	3.202925
-2.884167	3.277647	3.190588
-3.178375	2.629500	3.178375
-3.447256	5.035915	3.184634
-3.569355	1.652903	3.182581
-3.578505	5.646168	3.193178
-3.829828	0.395603	3.192845
-4.003011	0.052707	3.195663
-4.006403	3.601367	3.196079
-4.006761	2.828732	3.194930
-4.009735	2.215503	3.195291
-4.129688	2.618281	3.176875
-4.562500	1.682500	3.180500
-1.100619	3.725457	3.213540
-1.121461	4.774270	3.194719
-1.254048	0.436587	3.197937
-1.271545	5.357091	3.208409
-1.433535	3.036768	3.203838
-2.089831	0.417119	3.199492
-2.612594	0.021992	3.226729
-2.906904	5.462703	3.206904
-2.986506	6.208476	3.206766
-3.029881	2.836119	3.209284
-3.094375	1.119018	3.201696
-3.506393	0.623279	3.192623
-3.854138	3.368161	3.207414
-4.360326	2.572065	3.194674
-4.552857	3.828000	3.183429
-0.671004	1.478476	3.214535
-0.893686	3.890784	3.215333
-1.093647	5.965176	3.209765
-1.345943	2.165314	3.220457
-1.735185	2.952074	3.208741
-1.854113	4.551210	3.210403
-2.033529	3.938235	3.215147
-2.037834	5.055207	3.216636
-2.245432	4.727037	3.202099
-2.552426	5.985503	3.213077
-2.629018	5.686727	3.215018
-2.841224	1.448776	3.204694
-3.498508	3.529905	3.219937
-3.771905	1.314139	3.213956
-3.780090	5.796937	3.218243
-4.096180	4.346242	3.219410
-4.305568	3.767622	3.214649
-4.306196	4.991196	3.202935
-4.304371	5.495166	3.211656
-4.339828	4.253621	3.195345
-4.521964	4.545018	3.221964
-4.537808	5.290000	3.210959
-4.556061	1.139697	3.198788
-0.672273	0.334034	3.217898
-0.918170	2.316027	3.228571
-1.127735	4.514872	3.229872
-1.149238	0.956000	3.213238
-1.317200	2.420640	3.214000
-1.374259	1.058580	3.227716
-1.879778	0.730556	3.219667
-1.939800	1.572400	3.207800
-1.957241	6.309261	3.225468
-2.248630	3.795260	3.234986
-2.337640	0.324607	3.227865
-2.414355	3.991452	3.215161
-2.651865	1.252694	3.219275
-3.194630	0.438148	3.227259
-3.284820	5.931317	3.229611
-3.409754	6.164472	3.227359
-3.542304	5.899032	3.222811
-3.759279	6.268417	3.234028
-4.063841	3.860530	3.218411
-4.272075	0.603208	3.226478
-4.438263	2.285154	3.228067
-1.100035	1.755140	3.238287
-1.396304	0.204130	3.226087
-1.446935	4.069032	3.225403
-1.473917	5.802581	3.237512
-1.836693	5.308645	3.232829
-1.911972	2.302066	3.231033
-2.041579	1.135439	3.228596
-2.323631	3.400238	3.230298
-2.445578	4.875378	3.234940
-2.501333	4.381583	3.228000
-2.506585	3.742846	3.233659
-2.548824	3.495588	3.222647
-2.710833	1.639792	3.221667
-2.776364	6.355522	3.237037
-2.781136	2.754545	3.219773
-2.853036	4.100714	3.220893
-2.920097	2.539094	3.235825
-3.238390	1.887881	3.228475
-3.514534	1.251093	3.236478
-3.614271	2.876979	3.220000
-3.822205	4.211614	3.234370
-4.080400	0.988400	3.217600
-4.528400	2.982356	3.230178
-0.652368	5.984474	3.239386
-0.666346	2.995321	3.243397
-0.893905	0.227524	3.236952
-0.916875	0.853068	3.237216
-1.228861	1.295730	3.240819
-1.530302	1.574523	3.247236
-1.540603	4.931525	3.247305
-1.717143	3.404347	3.247599
-1.740000	4.770467	3.235421
-1.868088	4.139755	3.240441
-2.540769	0.743793	3.252944
-2.785979	6.059897	3.231959
-3.828168	3.007634	3.234275
-4.311209	1.115055	3.234615
-4.518472	4.076332	3.249782
-0.666284	3.511093	3.249617
-0.678100	0.023100	3.244200
-0.883947	1.902456	3.250000
-1.058477	2.104371	3.247881
-1.779060	6.136410	3.249060
-1.996316	2.048308	3.256805
-2.273600	2.936000	3.237600
-2.300614	5.102982	3.252544
-2.531639	2.486393	3.238525
-2.914909	5.720909	3.240727
-3.135303	2.389773	3.252727
-3.199200	4.942840	3.257160
-3.366212	2.792727	3.258030
-3.734706	5.452549	3.250353
-4.013623	5.884058	3.238116
-4.274386	3.510702	3.255000
-4.534149	1.445319	3.249681
-4.537750	3.417000	3.238500
-0.672097	0.812097	3.246452
-1.258895	2.859448	3.264807
-1.372066	5.128404	3.268873
-1.421961	0.814314	3.255490
-2.162281	4.358947	3.248421
-2.466018	1.822301	3.257788
-2.950806	3.867258	3.251452
-2.981073	0.586590	3.264713
-3.059174	0.086281	3.264876
-3.573616	4.325203	3.270738
-3.756717	0.036919	3.263838
-3.825387	4.978297	3.267678
-4.264125	3.206500	3.249500
-4.284859	0.859366	3.260423
-4.285374	5.239728	3.266463
-4.526383	1.924610	3.258298
-0.667500	1.999500	3.258000
-1.691441	3.670932	3.263390
-1.699643	2.698669	3.283117
-1.718824	4.346387	3.264790
-2.023896	1.788701	3.262468
-2.319667	0.897444	3.267000
-2.320213	2.601915	3.255532
-2.477054	2.794274	3.277676
-2.515971	2.234029	3.268417
-2.738491	2.359340	3.268868
-2.971437	5.062874	3.270958
-3.018412	5.952396	3.281894
-3.070036	4.610253	3.279603
-3.359710	2.269203	3.270580
-3.412261	5.292783	3.269217
-3.494262	1.871557	3.263852
-3.677897	4.744369	3.286799
-4.044340	0.304528	3.256604
-4.205278	2.950556	3.263611
-0.691536	2.706519	3.282321
-0.883673	6.083527	3.285745
-1.351625	1.744750	3.267500
-1.374437	4.724225	3.286690
-1.704851	5.687264	3.291020
-1.708961	1.854156	3.270779
-1.968805	3.049386	3.285358
-1.981371	4.810323	3.279194
-2.282026	1.240727	3.292883
-2.788843	3.496942	3.273388
-2.812378	0.191443	3.297988
-2.817926	4.664815	3.280593
-3.109238	4.291143	3.275238
-3.267059	1.638431	3.276863
-3.486346	0.033109	3.288718
-3.544865	4.053243	3.274324
-3.997885	3.178846	3.271154
-4.103137	1.227451	3.265098
-4.513952	0.192455	3.278024
-0.688708	4.384125	3.291125
-0.703504	1.729562	3.292044
-1.031356	0.411525	3.280339
-1.177556	2.617778	3.284667
-1.231375	3.159625	3.289625
-1.220660	3.423160	3.297264
-1.362374	3.717393	3.291362
-1.959298	2.605165	3.296364
-2.073175	0.882169	3.298254
-2.126652	5.531448	3.292986
-2.765682	5.206477	3.295909
-2.894255	1.223191	3.278298
-2.941932	0.944659	3.282841
-3.178269	0.904038	3.281731
-3.402778	3.042222	3.279167
-3.561203	3.789622	3.295636
-3.750350	3.617273	3.291608
-3.770370	3.951605	3.283704
-4.305909	2.026970	3.279545
-0.677734	6.230156	3.301328
-0.911784	1.534054	3.307351
-0.940000	0.010000	3.270000
-0.968112	1.100629	3.293846
-2.540758	5.101061	3.286515
-2.766400	1.868400	3.294700
-3.076829	3.646341	3.305061
-3.254907	5.501173	3.310247
-3.291830	0.190850	3.299739
-3.400732	6.392317	3.298780
-3.444010	0.411719	3.299115
-3.432021	3.287553	3.295745
-3.647155	0.258707	3.295776
-3.780231	2.260694	3.302486
-3.937465	1.825493	3.293239
-3.985688	6.130182	3.315195
-3.997286	2.449286	3.295000
-4.436531	6.394898	3.303061
-0.711304	1.056877	3.311344
-0.712129	3.251000	3.321581
-0.903538	3.035846	3.304462
-0.952764	2.724874	3.317889
-1.058195	4.084269	3.319914
-1.463140	6.242369	3.324766
-1.470167	1.957333	3.301000
-1.478756	3.270207	3.312280
-1.600000	4.557344	3.300938
-1.959000	5.733900	3.302800
-2.318019	5.355566	3.314057
-2.335828	0.581943	3.316306
-2.369762	3.154206	3.307222
-2.489781	1.073880	3.306721
-2.513500	1.521625	3.306313
-2.582061	4.147576	3.310667
-2.612906	0.487048	3.327368
-3.101185	5.284007	3.320348
-3.116667	2.099964	3.318261
-3.413227	0.825777	3.313108
-3.630116	3.129767	3.301279
-3.647680	1.031438	3.319150
-3.830065	1.559351	3.305325
-3.985270	0.571577	3.307973
-4.482375	0.471167	3.315125
-0.730143	0.572837	3.335931
-1.167188	4.983984	3.314297
-1.239842	4.289974	3.326359
-1.728485	2.442121	3.304848
-2.083719	4.583058	3.316364
-2.237778	1.896481	3.316852
-2.607163	5.402837	3.328365
-2.698647	4.904839	3.334404
-2.739351	3.748442	3.316948
-3.038594	1.547711	3.330683
-3.247910	3.455149	3.317836
-3.320208	3.689375	3.306250
-3.562347	2.128265	3.316327
-4.183710	4.574234	3.329718
-0.704343	4.905182	3.341533
-0.938067	4.379412	3.326807
-1.434355	2.695323	3.317097
-1.581443	2.218247	3.344021
-2.044536	1.378900	3.335601
-2.075455	5.281515	3.330076
-2.078043	2.825652	3.317391
-2.325359	4.527124	3.327778
-2.359091	6.075195	3.318052
-3.127534	3.170434	3.338428
-3.305636	1.109697	3.332242
-3.763161	2.527548	3.337935
-3.830400	5.232000	3.327867
-4.001527	2.827679	3.392439
-4.479174	4.843760	3.333347
-0.689848	3.996667	3.333788
-0.693718	4.637051	3.334103
-1.165525	6.371381	3.336961
-1.191645	5.787500	3.336382
-1.479186	0.600000	3.337209
-1.765105	0.083636	3.340420
-1.836429	1.236508	3.340635
-1.914854	3.570766	3.342956
-2.010439	0.108070	3.337982
-2.026650	6.087340	3.337931
-2.075036	0.622929	3.351357
-2.205199	6.271618	3.350663
-2.313947	2.370614	3.340088
-2.720944	4.409485	3.349270
-3.110397	4.037960	3.359943
-3.137921	5.729406	3.334356
-3.183256	6.134477	3.340407
-3.344367	4.191265	3.345753
-3.347170	3.929811	3.330755
-3.399488	4.795116	3.338419
-3.604627	1.468806	3.330149
-3.733486	6.021101	3.334404
-4.189689	1.810518	3.344560
-4.218923	4.099538	3.329385
-4.248507	6.050149	3.337463
-4.494141	3.640202	3.332222
-0.694255	5.476596	3.340957
-0.960743	3.539459	3.351588
-0.955457	5.313241	3.360055
-0.974037	3.271101	3.343028
-1.160000	0.010000	3.320000
-1.170545	1.526000	3.342182
-1.647168	0.414661	3.362861
-1.666387	0.760126	3.359580
-1.806439	3.905707	3.349707
-2.205125	5.785625	3.360271
-2.342308	4.229128	3.351949
-2.426775	5.592085	3.352769
-2.570470	4.620671	3.347651
-3.359532	2.528857	3.356208
-3.357500	1.414474	3.350000
-3.669065	0.761667	3.354187
-3.780441	2.003676	3.346029
-3.903947	1.105197	3.363750
-3.955556	4.699487	3.344017
-4.408723	5.695213	3.343191
-4.474307	2.744270	3.351049
-0.703883	5.226019	3.356117
-0.928766	6.330519	3.361169
-0.986410	0.641603	3.360577
-1.203947	6.119035	3.364123
-1.477129	5.572327	3.357772
-1.646381	1.380667	3.360952
-1.765496	1.631908	3.364351
-1.808670	5.916543	3.362766
-2.166053	1.615263	3.359145
-2.197257	4.909115	3.360442
-2.258090	0.117990	3.365628
-3.133893	1.304966	3.358993
-3.510227	4.564091	3.347727
-3.674583	0.503250	3.355333
-3.700986	1.766056	3.350704
-3.984545	4.055455	3.351970
-3.995192	6.386250	3.353462
-4.215000	2.237245	3.360612
-0.717593	2.387685	3.371204
-0.733443	3.736437	3.377395
-0.936000	5.586594	3.385125
-0.959219	4.839023	3.375508
-1.244359	1.992821	3.366795
-1.492329	4.334932	3.372808
-1.553333	3.893333	3.361053
-1.596829	6.033537	3.361829
-1.642966	4.127797	3.366695
-1.713297	3.156341	3.374384
-1.755254	0.994746	3.357119
-1.929274	3.300484	3.370242
-1.945629	4.372781	3.377483
-2.094600	4.147133	3.375900
-2.184783	3.568127	3.378462
-2.579851	3.292677	3.376840
-2.684412	0.922353	3.370662
-3.654634	3.378537	3.382561
-4.062946	5.190775	3.373023
-4.229800	4.829800	3.361800
-4.479769	0.730615	3.367615
-4.484519	3.203558	3.360865
-0.719000	5.728667	3.375467
-1.503617	2.464787	3.373511
-1.558000	1.138471	3.386647
-1.873205	0.298974	3.370256
-2.566308	2.013231	3.377308
-2.710959	5.877021	3.382705
-3.004556	3.405089	3.381479
-3.033134	1.858507	3.369552
-3.276524	4.460024	3.386952
-3.375288	5.722404	3.370481
-3.809317	2.788075	3.372609
-4.052438	2.034000	3.386594
-4.223701	6.298110	3.371575
-4.465769	5.930577	3.370385
-4.479692	4.335077	3.368769
-4.477500	5.122639	3.370833
-1.206513	5.529145	3.400461
-1.236098	0.590585	3.394683
-1.395841	1.421327	3.391416
-1.499293	3.516061	3.385960
-1.559850	2.905225	3.397800
-1.670920	5.421954	3.388391
-1.699559	6.314485	3.389265
-1.899748	5.512516	3.393899
-2.503975	0.175607	3.399038
-2.703851	2.586988	3.394689
-3.036400	0.316267	3.389911
-3.508704	5.503333	3.397623
-3.569434	2.693585	3.387925
-3.585949	4.977487	3.403282
-4.200000	5.817963	3.379444
-4.212059	0.170000	3.382941
-4.220891	2.488317	3.388812
-4.469638	0.989783	3.389565
-4.461429	6.181633	3.380816
-4.473043	5.459783	3.382174
-0.762303	1.302191	3.402079
-1.008214	2.479762	3.400595
-1.385273	0.376800	3.406691
-1.374078	5.957670	3.401165
-1.400000	0.010000	3.372500
-1.605376	5.141221	3.408427
-2.099082	2.258163	3.392857
-2.310636	2.122182	3.394818
-2.453523	6.300303	3.406023
-2.458192	5.847910	3.401751
-2.785277	5.594298	3.405277
-3.163502	6.378953	3.411372
-3.302319	0.604589	3.398986
-3.350310	2.030543	3.399302
-3.930986	0.818630	3.415507
-3.959143	1.364000	3.392143
-3.968500	5.430833	3.394500
-4.221932	2.747273	3.392159
-4.227679	1.379464	3.397679
-4.455167	1.258662	3.404201
-0.948082	5.861049	3.425601
-1.032595	1.324524	3.423119
-1.195985	1.097406	3.425761
-1.254394	3.927197	3.414508
-1.429759	5.328072	3.410000
-1.547729	0.176507	3.420306
-2.719419	1.406977	3.404767
-2.949719	2.315082	3.420304
-2.960939	4.839797	3.420203
-3.169821	2.716786	3.398929
-3.473288	1.665856	3.419452
-3.567881	2.368390	3.403559
-3.860154	0.206462	3.406615
-3.907055	3.781650	3.417508
-3.919124	5.677591	3.404161
-4.189924	0.438550	3.415420
-4.460909	3.878523	3.404091
-4.470857	2.481714	3.396571
-0.876481	5.074630	3.412593
-1.240714	0.835000	3.405952
-1.539889	1.760000	3.420667
-2.119273	0.327932	3.437886
-2.182996	3.289401	3.427753
-2.502078	1.295974	3.417273
-2.552551	3.917092	3.422857
-2.877074	2.047340	3.425691
-2.929024	2.712683	3.423049
-3.356792	5.095849	3.407925
-3.620413	5.751770	3.424690
-4.174317	5.569137	3.418561
-4.393981	1.566852	3.414722
-0.762000	2.144909	3.432455
-1.073061	2.910000	3.416735
-1.813571	4.912755	3.426429
-1.823795	2.155281	3.438020
-1.859094	2.857774	3.435736
-2.041282	3.794359	3.438872
-2.290507	3.970254	3.442535
-2.536849	3.005000	3.428767
-2.926563	4.204063	3.418438
-2.925222	6.295611	3.433278
-2.976618	2.966029	3.431127
-3.447737	6.007956	3.425912
-3.933119	3.505505	3.433211
-4.023758	4.934395	3.440637
-4.048842	1.605946	3.433822
-0.762436	0.133846	3.436282
-0.995049	3.809126	3.434175
-1.016585	0.129538	3.452985
-1.197365	5.219606	3.450197
-1.284557	4.532966	3.452446
-1.602663	4.767389	3.452611
-1.832177	0.576122	3.438299
-1.849655	4.665747	3.432069
-1.887389	1.894522	3.445987
-2.167692	2.545846	3.430000
-2.219464	1.031250	3.436429
-2.276897	2.772155	3.434914
-2.726145	1.156867	3.439759
-2.767590	3.118313	3.438494
-2.809948	3.967098	3.438290
-2.831514	1.673267	3.442510
-3.067233	0.752327	3.441384
-3.604090	5.250396	3.453087
-4.152908	3.634610	3.442979
-4.173825	0.698470	3.448415
-4.213556	3.870667	3.423556
-4.238462	4.323718	3.444872
-1.176264	3.641319	3.446044
-1.876234	5.171778	3.462594
-2.200676	3.028514	3.446351
-2.371243	4.744320	3.451243
-2.389252	1.680204	3.453333
-2.564915	6.074542	3.463559
-2.723043	2.846957	3.442899
-2.731190	0.687738	3.447738
-2.897033	5.363445	3.455502
-2.954559	4.453088	3.448603
-3.081200	1.072350	3.453950
-3.542308	2.941209	3.443077
-3.615494	6.208670	3.450043
-3.696286	4.142286	3.440714
-3.983646	4.286133	3.452155
-4.151250	3.120417	3.440417
-1.009744	4.589829	3.468889
-1.021572	1.942704	3.463019
-1.188974	4.773846	3.447179
-1.265739	0.161565	3.453565
-1.273765	2.228704	3.461049
-1.388697	4.959910	3.476472
-1.914797	6.382276	3.454146
-2.307419	1.433065	3.451613
-2.400120	3.700876	3.468167
-2.400805	5.003678	3.455862
-2.612584	3.546292	3.449551
-2.923717	0.027368	3.476776
-3.241155	2.955988	3.464985
-3.257635	1.801554	3.463784
-3.700615	1.251385	3.460103
-4.165758	0.957374	3.455960
-4.409133	3.432954	3.472222
-4.417432	4.568716	3.463268
-0.773524	1.888667	3.474286
-0.804188	2.875550	3.478429
-1.007265	2.232059	3.482941
-1.014430	0.916709	3.458987
-1.007377	1.690328	3.467213
-1.278167	2.481833	3.467833
-1.300968	3.004409	3.476505
-1.641486	1.981622	3.462703
-1.893117	0.816104	3.460000
-1.911757	2.408745	3.471757
-1.971908	1.066151	3.474375
-2.460598	0.862735	3.467009
-2.613200	1.789000	3.464200
-2.871736	6.050826	3.469256
-2.941061	5.792122	3.477510
-3.195745	5.928404	3.473245
-3.874434	3.254660	3.479968
-3.920682	5.926515	3.461364
-4.025422	0.029333	3.475156
-4.411440	1.851206	3.483502
-0.770526	0.788246	3.467719
-1.244783	1.717681	3.477681
-1.497561	0.907195	3.469146
-1.584133	5.819867	3.473333
-1.731273	4.462727	3.478909
-2.391034	3.437586	3.467586
-2.407568	0.393063	3.474414
-2.493813	4.397813	3.475000
-2.664854	0.016505	3.483398
-2.685325	6.297597	3.476883
-2.879163	0.495665	3.483498
-2.888760	3.621405	3.484339
-3.128704	5.038765	3.482654
-3.195870	4.717640	3.487994
-3.278938	0.357611	3.485310
-3.365754	6.242291	3.475251
-3.437944	3.513084	3.474673
-3.647738	0.095714	3.475714
-3.706200	4.559600	3.467400
-3.769000	3.017250	3.472250
-4.261822	5.051051	3.492079
-4.417360	2.133600	3.481240
-4.423878	0.044354	3.477551
-4.435373	2.987910	3.468060
-0.753902	6.006585	3.476341
-0.797816	2.592031	3.499885
-0.804186	0.377535	3.493023
-1.247821	2.743619	3.501362
-1.381667	4.142308	3.491026
-2.190882	4.385539	3.495343
-2.205542	5.146988	3.484819
-2.489651	2.463953	3.483140
-3.131683	2.492970	3.487822
-3.584681	1.944043	3.480319
-4.145551	3.371066	3.496801
-0.801513	4.187697	3.499342
-1.686505	3.745922	3.497087
-1.725340	3.486456	3.505388
-1.836324	6.135784	3.509608
-1.860210	4.147832	3.495594
-2.073947	4.743158	3.494211
-2.104306	2.030417	3.489583
-2.880749	5.102834	3.507166
-3.054516	3.815726	3.493548
-3.241429	2.249365	3.507937
-3.324112	5.320374	3.492056
-3.403786	3.159500	3.499643
-3.749744	5.516282	3.498910
-3.797517	6.380455	3.516818
-3.872024	0.435893	3.500893
-4.402427	4.130921	3.500209
-1.304086	3.273555	3.516080
-1.360000	5.734000	3.512000
-1.842734	1.419820	3.517014
-2.438542	5.248177	3.514740
-2.629204	5.085664	3.508850
-2.688757	0.316836	3.521808
-2.924505	1.293297	3.504615
-3.094264	5.513876	3.510698
-3.284159	0.931416	3.505310
-3.480577	4.035096	3.511442
-3.638841	3.654493	3.514130
-3.809916	4.813866	3.508151
-4.017895	2.277895	3.503553
-4.398525	0.308579	3.513770
-0.788962	3.441038	3.515472
-0.993971	6.129779	3.511691
-1.041897	4.251897	3.513793
-1.055692	0.446443	3.527826
-1.826870	5.722672	3.520687
-1.973503	5.943450	3.603259
-2.250000	5.486522	3.517043
-2.261957	5.989946	3.520924
-2.708000	4.211333	3.523111
-2.743023	4.716434	3.522093
-2.788528	3.369722	3.532472
-2.885842	0.930891	3.518812
-3.201917	3.604889	3.534417
-3.242938	1.551688	3.523000
-3.412978	3.784831	3.521236
-3.493961	1.093052	3.532792
-3.529607	0.312295	3.532000
-3.688077	3.900769	3.507500
-3.809408	5.074737	3.513750
-0.786604	4.450000	3.520755
-1.077148	3.132096	3.540687
-1.519091	6.386883	3.521818
-1.513103	3.132759	3.518276
-2.037143	4.983571	3.526143
-2.063333	5.643141	3.535449
-2.169247	1.246986	3.530959
-2.384167	1.927222	3.517639
-2.502780	0.618976	3.534537
-2.511014	2.206329	3.538841
-2.517432	2.730137	3.539016
-2.707544	2.361930	3.518070
-3.157757	4.240514	3.531028
-3.306923	1.261346	3.522500
-3.402194	0.066367	3.532266
-3.515069	4.297743	3.534688
-3.701127	1.593333	3.528333
-3.881118	1.778882	3.529627
-4.108615	1.187385	3.518462
-4.386084	5.288112	3.527692
-0.783415	6.242683	3.527805
-1.069558	3.402210	3.546022
-1.171906	5.950809	3.552689
-1.433935	3.769379	3.544379
-1.601975	1.550191	3.540000
-1.670513	2.403077	3.533333
-1.723911	2.659815	3.545978
-2.111745	0.030468	3.550170
-2.168486	1.790784	3.554541
-3.149109	0.144368	3.552759
-3.216360	3.326207	3.545900
-3.370914	2.735635	3.542995
-3.519486	0.579673	3.543224
-3.555029	4.746192	3.549477
-3.934834	4.525762	3.542384
-4.114264	6.073953	3.537907
-4.382345	0.568207	3.541379
-0.798571	3.928571	3.545000
-0.795075	4.711940	3.542537
-0.825455	1.038485	3.548182
-0.824388	3.187908	3.555306
-0.835980	1.523660	3.556438
-1.096763	4.988426	3.567339
-1.347276	6.203621	3.555483
-1.406832	0.700495	3.551188
-1.417287	2.041117	3.549043
-1.930345	1.666069	3.551379
-1.978804	3.059185	3.553804
-1.980733	2.659400	3.549933
-2.222301	0.805739	3.558011
-2.225758	0.541273	3.554545
-3.521333	6.396889	3.540667
-3.735049	0.931845	3.545728
-3.796731	2.356731	3.535000
-4.047059	0.272745	3.538039
-4.118435	4.712652	3.552087
-0.826979	5.429532	3.572255
-1.592180	6.166992	3.559549
-2.026656	5.372125	3.575750
-2.419442	3.191076	3.568606
-2.454767	1.098895	3.560756
-2.459337	4.143976	3.567349
-2.517759	1.496207	3.550000
-2.606235	5.709471	3.564000
-2.987215	3.192877	3.566712
-3.121023	0.536093	3.568791
-3.155263	2.006974	3.553947
-3.497115	2.170224	3.567821
-3.480618	1.442542	3.577482
-3.655549	5.980445	3.574036
-3.860755	6.141415	3.561698
-4.139005	4.079147	3.565261
-4.146094	5.335938	3.551250
-4.377450	3.689060	3.554966
-1.000896	2.736418	3.560746
-1.089823	5.689381	3.586047
-1.467798	2.616607	3.569583
-1.520377	4.539811	3.567484
-1.527162	1.311892	3.565541
-1.617700	5.587100	3.571550
-1.742822	1.181245	3.574689
-2.080283	6.242085	3.586862
-2.100789	1.490132	3.561711
-2.668729	5.349171	3.568674
-2.689067	3.752000	3.571067
-3.504744	0.828205	3.563846
-3.638485	2.530758	3.563485
-3.776165	0.665090	3.578746
-4.357639	0.836898	3.579769
-4.364430	4.805436	3.572416
-4.361447	5.825921	3.561711
-4.370833	5.582083	3.559583
-1.032941	4.006176	3.583015
-1.092876	0.714335	3.583219
-1.343956	3.522637	3.578242
-1.585598	4.011624	3.586068
-1.712356	0.289540	3.582069
-1.936200	0.197600	3.571200
-1.994712	4.529640	3.594317
-2.019883	3.432953	3.589357
-2.356000	5.697778	3.569778
-2.885849	2.519245	3.575597
-3.098333	5.269643	3.575714
-3.143341	6.160935	3.591449
-3.242362	3.973568	3.582563
-3.336667	4.914394	3.567576
-3.330278	5.568167	3.580944
-3.814118	2.103529	3.589538
-3.895985	4.012117	3.580730
-4.060552	6.342566	3.588585
-4.077802	5.770055	3.582253
-4.358352	6.075824	3.571978
-4.351011	6.341011	3.581180
-1.239780	1.301282	3.597179
-1.373055	5.489539	3.606455
-1.403016	1.105794	3.584206
-1.573488	0.520640	3.590116
-1.607930	4.280881	3.598943
-1.715376	0.922688	3.587634
-1.812428	3.254529	3.601377
-2.300053	6.379158	3.590526
-2.551389	4.862361	3.588750
-3.038653	1.751036	3.594870
-3.418352	2.426758	3.593077
-3.432773	5.820504	3.585714
-3.638235	3.209804	3.587598
-3.675680	2.792426	3.593550
-3.880611	5.307889	3.590000
-4.120774	1.815806	3.592903
-4.228667	2.943939	3.591879
-4.351444	1.106203	3.593209
-4.368831	2.735455	3.583636
-0.831892	5.699527	3.596216
-0.860798	0.604172	3.598221
-0.953507	5.209478	3.603284
-1.078051	5.422542	3.600169
-1.097869	1.509016	3.595410
-1.353439	1.536688	3.605605
-1.594301	5.327306	3.608342
-1.710547	1.785323	3.605970
-1.711310	2.998363	3.615239
-2.079528	4.009571	3.599442
-2.258778	2.270833	3.609222
-2.293003	0.217157	3.612875
-2.368526	2.934211	3.601158
-2.686800	2.004571	3.601314
-3.000103	4.038144	3.594948
-3.011321	1.499245	3.589057
-3.420137	4.533288	3.591096
-3.771192	4.306995	3.606736
-3.964481	1.008506	3.602597
-0.858421	3.698684	3.618202
-1.118328	6.332958	3.610836
-1.365673	4.730481	3.608462
-1.444706	2.361373	3.608725
-1.609464	2.187321	3.599643
-1.894737	3.653053	3.606947
-2.007513	0.657919	3.615685
-2.127989	2.857759	3.615287
-2.475612	5.491122	3.615306
-2.734535	4.459942	3.609070
-2.926564	0.258650	3.613190
-3.760132	3.454305	3.608874
-3.805699	5.763656	3.620573
-4.095254	2.521949	3.605424
-4.109853	1.424265	3.597794
-4.324235	3.195882	3.617529
-4.353294	1.405059	3.602588
-4.340872	2.481544	3.615235
-1.656794	4.976327	3.627983
-1.832141	3.908049	3.635095
-2.004595	2.219459	3.614189
-2.517605	4.609191	3.631327
-2.900786	0.705286	3.625571
-3.135421	4.493645	3.611776
-3.472200	5.102000	3.616400
-3.833333	0.010000	3.607778
-3.859952	1.409614	3.621981
-3.995315	3.060961	3.633123
-4.036269	5.120896	3.611194
-4.072019	3.826442	3.625577
-4.229516	2.245484	3.609516
-0.842791	4.961744	3.619767
-0.875985	1.274672	3.631606
-1.173196	3.812165	3.627423
-1.288864	0.481761	3.631250
-1.361410	4.357436	3.630641
-1.442927	2.865000	3.625122
-1.461458	5.966667	3.633802
-2.212659	3.615635	3.638690
-2.258171	4.896286	3.629314
-2.621233	1.277808	3.634795
-2.682417	1.008083	3.631917
-2.752484	1.506369	3.641783
-2.743786	5.918786	3.631786
-3.070000	2.739500	3.617000
-3.138867	5.735123	3.629901
-3.296475	0.713852	3.629098
-4.009187	5.524228	3.624309
-4.079085	0.526078	3.637320
-4.238174	0.145434	3.634658
-0.873237	2.058417	3.635252
-1.230324	0.930356	3.647152
-1.416786	1.790982	3.637143
-1.460544	0.299456	3.638095
-1.534621	3.349798	3.650303
-1.734420	5.927800	3.655780
-2.236679	4.626900	3.648524
-2.291632	2.618289	3.647816
-2.901389	5.601389	3.630972
-3.010299	3.456866	3.634478
-3.020556	6.398889	3.624444
-3.389636	1.926727	3.629273
-3.765329	0.243699	3.645517
-3.866575	2.626740	3.639337
-4.319156	1.663556	3.645600
-4.326316	3.926491	3.631404
-1.063832	1.124673	3.648318
-1.129432	4.434545	3.640682
-2.408044	6.151240	3.660744
-2.463636	5.896883	3.641429
-2.540143	0.139810	3.652190
-2.558349	3.405000	3.653761
-2.830933	2.205333	3.641067
-2.850198	2.998218	3.647426
-2.927826	4.289437	3.663299
-2.952154	4.647846	3.646308
-4.058421	2.083289	3.643026
-1.114412	1.811471	3.646471
-1.126947	2.076632	3.652105
-1.128448	2.914138	3.655517
-1.155578	0.248741	3.666871
-1.381409	0.052610	3.675935
-1.427500	5.147440	3.660595
-1.781304	2.026739	3.657174
-1.823369	4.750494	3.678820
-2.090000	2.455522	3.647910
-2.375476	1.312143	3.647857
-2.410528	3.891901	3.674261
-2.649032	3.997097	3.650000
-2.825607	2.746262	3.660748
-2.854724	4.900394	3.656929
-3.423136	2.964746	3.654068
-3.497750	5.390875	3.652250
-0.879020	1.769020	3.653922
-0.900541	5.944472	3.678575
-0.902661	0.228548	3.668226
-1.137848	4.695949	3.672405
-1.174272	2.382722	3.682880
-1.813803	0.019108	3.682629
-2.232843	4.198235	3.662745
-2.256964	3.359107	3.656964
-2.313989	1.565319	3.667979
-2.646986	2.549658	3.671575
-2.663993	3.161282	3.677839
-2.714146	0.519024	3.657805
-2.774667	1.775500	3.661500
-2.937754	1.978941	3.676102
-2.955349	1.105659	3.672713
-2.995269	5.951935	3.681774
-3.048717	2.338586	3.683272
-3.096353	0.852941	3.667412
-3.440046	3.356250	3.675463
-3.450560	6.110960	3.663920
-3.837167	3.723348	3.670129
-4.033214	3.535268	3.665893
-4.046842	0.775000	3.661711
-1.808913	0.505261	3.682609
-1.838953	5.528014	3.688412
-2.227154	1.049112	3.693029
-2.248829	5.300360	3.679820
-2.517407	1.731414	3.690135
-2.660769	0.758803	3.683675
-2.666480	6.156786	3.684235
-3.116240	4.873872	3.694039
-3.209700	1.078300	3.698200
-3.265307	6.376316	3.686272
-3.438344	1.687748	3.680265
-3.675392	1.810506	3.688101
-3.673581	4.077973	3.683514
-4.294481	2.001749	3.681803
-4.275556	4.545313	3.691146
-0.907067	0.850933	3.681600
-0.905059	2.989882	3.688706
-1.354592	3.972602	3.693469
-1.592407	3.616420	3.687593
-1.991146	0.914167	3.695052
-2.038626	0.389121	3.688132
-2.195904	3.108883	3.698883
-2.365789	4.408421	3.686842
-2.761622	6.394865	3.677838
-3.102171	2.983808	3.697651
-3.579631	5.634538	3.699103
-3.661583	4.949778	3.698861
-3.985089	4.884464	3.699196
-4.259547	4.270121	3.705438
-0.895179	4.320893	3.695536
-1.192140	4.176347	3.711107
-1.824200	5.270600	3.693000
-1.903364	6.389813	3.694766
-1.956197	1.864648	3.694225
-1.979416	1.191948	3.709286
-2.188473	5.816158	3.706355
-2.462765	5.069625	3.703481
-2.508131	0.401495	3.697009
-3.235451	2.573819	3.705625
-3.243717	5.109867	3.703982
-3.338710	0.475968	3.691290
-3.643618	4.511709	3.698141
-3.988761	1.620000	3.707212
-4.056410	2.788051	3.703897
-1.149167	3.577667	3.707500
-1.192019	5.234327	3.714904
-1.855158	2.504421	3.702211
-1.898356	5.041507	3.708219
-2.622368	2.898053	3.715632
-2.785364	3.565099	3.715695
-2.903910	5.359799	3.724211
-2.914907	6.217920	3.717547
-3.034556	3.691000	3.710222
-3.189835	1.363992	3.715679
-3.269425	5.950402	3.713966
-3.317425	4.345389	3.714731
-3.591875	0.032500	3.706063
-3.651161	1.283125	3.705804
-3.672727	5.215455	3.705354
-3.958605	5.963688	3.723121
-4.002914	4.344686	3.712686
-4.279778	3.445778	3.704667
-0.919053	4.574852	3.715325
-0.939395	2.542326	3.718419
-1.774891	4.470876	3.719124
-1.892888	2.830036	3.725740
-2.131833	5.089167	3.711167
-2.196483	2.017585	3.737987
-2.444197	0.899343	3.724854
-2.440845	2.417042	3.714789
-2.461032	3.634603	3.716825
-2.788235	0.010000	3.707647
-2.859148	3.873409	3.724432
-3.373578	0.237890	3.721193
-3.576405	3.841373	3.719477
-3.748596	3.016082	3.719766
-3.988727	0.123000	3.724909
-4.249200	5.188100	3.726700
-0.923194	6.218168	3.728586
-0.917119	3.476949	3.722881
-0.933932	2.284274	3.724615
-1.181592	2.648726	3.733503
-1.517328	0.841422	3.738799
-1.789158	4.156842	3.735684
-2.465282	2.023944	3.729085
-2.725344	5.159924	3.739771
-3.140618	0.338146	3.729045
-3.267075	5.371429	3.729728
-3.289306	2.123750	3.721528
-3.666542	0.482712	3.748427
-3.685304	6.185217	3.726522
-3.810000	4.702361	3.723472
-3.930424	3.298545	3.732303
-3.942857	2.360974	3.733636
-4.265306	5.440408	3.725306
-4.283409	0.407045	3.713182
-1.243195	3.140237	3.742071
-1.278407	5.794973	3.751209
-1.462332	6.351989	3.763320
-1.753713	6.207178	3.744455
-1.794405	2.261548	3.736310
-1.937076	5.761345	3.738596
-2.525655	6.372768	3.745238
-2.991322	5.100460	3.739425
-3.276217	4.664957	3.744174
-3.407711	1.238554	3.736627
-3.486901	2.625704	3.741831
-3.567667	3.575400	3.752967
-4.218723	5.932553	3.726809
-1.337426	2.181864	3.762663
-1.545693	5.757154	3.756217
-1.756458	1.574792	3.737500
-1.801667	3.466778	3.752056
-1.948269	1.446346	3.742692
-2.015576	4.283680	3.756320
-2.057742	3.789194	3.748978
-2.363485	0.640644	3.756515
-2.690689	5.537356	3.760467
-2.944967	0.492026	3.752157
-3.281111	3.169630	3.746852
-3.298616	3.739322	3.757627
-3.702703	2.292568	3.741892
-3.794123	5.493070	3.743596
-3.927421	1.895833	3.754206
-3.985020	1.220040	3.756397
-4.196594	0.966006	3.757337
-4.220826	6.191364	3.752645
-4.261449	0.666957	3.741159
-4.259714	5.698857	3.734571
-0.985059	3.232485	3.778491
-1.272739	6.068185	3.769236
-1.285315	0.699505	3.768468
-1.499862	3.074050	3.771433
-1.565455	4.708446	3.771378
-1.575000	1.148276	3.748621
-1.610522	2.521522	3.770478
-1.637533	2.785267	3.756867
-2.047045	4.858864	3.758636
-2.076195	1.657345	3.758938
-2.085028	5.542486	3.766851
-2.093977	0.157614	3.760795
-2.184409	6.069685	3.748976
-3.193821	1.625472	3.768726
-3.223512	3.474762	3.770000
-3.417595	4.050541	3.770622
-3.438681	0.968462	3.755055
-3.629388	2.054694	3.751633
-3.675122	1.037561	3.749024
-0.947723	5.553762	3.763267
-1.261549	4.993662	3.766901
-1.536697	1.448394	3.774312
-1.546081	2.014542	3.773516
-2.135556	6.396667	3.763333
-2.924900	1.341833	3.779100
-3.017800	0.069546	3.777959
-3.646996	1.536567	3.778712
-3.668889	0.801944	3.756389
-4.031692	4.600154	3.777744
-4.236581	1.251453	3.764615
-4.238854	3.688854	3.762604
-0.982157	3.853922	3.785441
-1.004648	0.449805	3.786563
-1.190667	5.552933	3.775867
-1.287440	3.394480	3.781120
-1.608261	0.135280	3.782919
-2.600072	2.238406	3.776594
-2.716133	4.201067	3.777467
-2.740327	4.656797	3.776013
-2.848103	0.899770	3.781954
-3.194101	1.891573	3.778315
-3.487753	6.338590	3.779339
-3.921791	6.226418	3.783358
-4.215491	4.793757	3.779249
-4.239844	2.647813	3.771406
-0.954167	4.811875	3.778750
-1.255373	1.677015	3.795224
-1.266757	1.927838	3.787297
-1.352030	3.718687	3.803851
-1.536410	4.426325	3.795983
-1.574925	3.853134	3.775224
-1.849075	0.247543	3.805377
-1.943402	3.137191	3.806160
-2.075802	2.661975	3.781481
-2.428472	4.796806	3.780278
-2.541972	5.327606	3.777324
-2.762424	0.326212	3.778788
-3.172292	4.153125	3.782917
-3.558060	4.278881	3.800709
-3.951446	0.360602	3.785542
-0.964462	4.112615	3.794000
-0.980444	1.426000	3.789556
-0.979500	2.779300	3.793900
-0.979587	5.060000	3.803140
-1.788588	1.032316	3.809040
-2.287656	1.774531	3.796406
-2.583407	4.404505	3.791209
-2.795714	2.392101	3.799916
-2.943462	1.608590	3.793205
-2.984982	2.597365	3.808845
-3.065603	3.278621	3.799397
-3.108304	3.914620	3.805322
-3.352420	5.722038	3.799936
-3.471351	0.662819	3.807876
-3.543376	5.903939	3.808824
-3.877725	5.102036	3.797305
-3.902031	0.615430	3.810039
-4.029571	5.325643	3.810643
-4.189388	2.389429	3.814327
-1.123409	0.026688	3.818669
-1.575769	1.709231	3.796731
-1.586066	5.495972	3.810664
-1.626818	0.375682	3.797045
-2.287799	0.374654	3.815409
-2.411731	5.713269	3.800769
-2.655126	4.907787	3.823165
-2.852521	5.754062	3.821541
-3.417876	4.945693	3.821298
-3.538654	3.122404	3.805577
-3.560331	4.727769	3.808926
-3.666056	3.334648	3.809437
-4.029684	4.106013	3.808101
-4.197668	1.507720	3.812850
-0.996267	1.932800	3.810800
-1.219149	1.431277	3.809574
-1.293288	4.509452	3.814795
-1.340098	1.202580	3.833317
-1.416392	2.685979	3.809485
-1.554643	4.161964	3.817321
-1.758516	1.305875	3.830326
-1.863944	0.727702	3.828292
-1.960325	2.102927	3.816423
-2.038682	5.289591	3.828773
-2.191282	0.823718	3.817051
-2.621394	3.811010	3.819615
-2.813229	3.329561	3.832853
-3.576476	2.853429	3.828143
-3.714331	2.533622	3.814173
-3.840172	3.935776	3.810690
-3.891606	0.894234	3.821168
-0.989180	5.313115	3.823279
-1.013289	1.667105	3.828026
-1.037898	0.702102	3.836433
-1.305089	2.907054	3.825536
-1.483580	4.952716	3.821111
-1.568846	2.273077	3.813462
-1.600612	5.199592	3.819388
-1.808010	3.725000	3.841505
-2.001864	4.626780	3.826610
-2.226575	4.003119	3.833211
-2.265714	2.813354	3.827391
-2.414140	3.285478	3.830701
-2.484146	4.101341	3.835823
-2.480196	2.657647	3.842745
-2.612025	5.851139	3.826076
-2.653333	1.897895	3.824912
-3.102788	4.388077	3.829135
-3.143949	5.568587	3.835072
-3.451230	5.218095	3.835357
-3.479667	2.236167	3.816500
-1.206214	6.306214	3.841714
-1.355476	5.377143	3.840873
-1.694931	3.245590	3.844271
-1.710000	6.400000	3.820000
-1.969778	4.014222	3.833333
-2.120260	0.577857	3.848409
-2.115833	2.307222	3.847222
-2.321618	5.472228	3.854271
-2.332692	0.100994	3.850577
-2.424881	3.017698	3.843333
-3.190769	2.790385	3.834103
-3.589134	0.245118	3.842362
-3.834236	2.787896	3.853084
-3.847627	3.524350	3.840000
-4.157373	2.994235	3.842196
-4.163709	3.256490	3.841656
-4.177059	0.010000	3.836176
-4.169239	1.831576	3.842989
-4.196250	3.926528	3.826944
-1.024028	5.777109	3.847630
-1.066828	0.964793	3.858069
-1.317531	4.765188	3.860837
-1.410784	0.490833	3.857598
-2.036099	3.546233	3.854798
-2.173925	1.444393	3.843084
-2.185427	4.457607	3.861068
-2.608333	1.107886	3.859756
-2.930259	4.090570	3.849378
-3.003571	0.715238	3.845357
-3.075562	2.114894	3.862766
-3.094457	6.354286	3.849314
-3.303696	6.163519	3.862557
-3.872283	2.141096	3.851370
-3.902742	5.688871	3.837903
-4.017373	2.579407	3.841949
-0.996667	6.400000	3.833333
-1.377303	2.433717	3.867500
-1.607308	6.038615	3.858308
-1.748700	1.876100	3.849500
-2.286061	3.748485	3.846364
-2.297710	3.503588	3.860916
-2.362897	2.215888	3.866308
-2.566667	0.010370	3.850000
-2.659042	1.372682	3.876054
-2.703492	1.647354	3.867725
-2.800518	6.021224	3.870918
-2.799713	2.099936	3.874236
-3.266733	0.804158	3.853564
-3.444808	4.509808	3.856154
-4.011448	3.751136	3.877706
-4.159160	0.245378	3.858824
-1.392857	0.235714	3.866633
-1.630379	0.620530	3.863939
-2.137879	3.307652	3.865833
-2.277927	4.967683	3.862805
-2.767586	0.630251	3.886708
-2.916837	3.086122	3.865000
-3.121379	5.822069	3.860517
-3.238194	2.315139	3.858333
-1.041948	6.053831	3.877857
-1.072161	3.000879	3.886667
-1.071473	4.387649	3.889467
-1.089537	2.161907	3.891526
-1.725268	4.902282	3.888254
-1.741048	2.981210	3.882097
-2.041583	6.221636	3.893298
-2.311548	6.239409	3.899572
-2.343905	5.936381	3.876476
-2.356045	5.205522	3.885149
-2.416818	4.559318	3.871364
-2.457843	1.560667	3.887294
-2.880462	1.830923	3.868308
-3.182508	0.538482	3.889571
-3.414054	0.011351	3.875135
-3.442055	1.854466	3.882648
-3.870278	1.447500	3.865278
-4.133096	2.104184	3.880544
-4.126016	5.020398	3.884382
-1.062308	1.223590	3.880256
-1.332128	0.940426	3.885957
-1.354314	4.280131	3.890588
-1.484259	3.502889	3.902519
-2.215044	4.725575	3.887699
-2.410140	1.281121	3.897383
-2.554127	0.247922	3.900000
-2.539763	6.096746	3.905030
-2.728371	6.302664	3.905145
-2.742199	2.634894	3.886738
-2.950735	4.568382	3.878088
-2.982245	3.511633	3.875918
-3.413097	1.542258	3.890194
-3.821959	1.691031	3.884021
-3.916574	3.094815	3.885463
-4.118641	5.570924	3.889511
-4.135045	0.496396	3.887838
-1.074895	3.447622	3.902238
-1.207647	3.928941	3.897529
-1.760492	5.662077	3.900492
-1.817834	5.914331	3.899299
-2.164541	1.194031	3.909439
-2.281833	2.496000	3.899750
-2.872903	2.840968	3.888226
-2.889346	4.821308	3.899346
-3.058333	6.082613	3.907613
-3.070530	0.945303	3.905530
-3.354669	2.974587	3.899504
-3.417505	5.487027	3.916881
-3.767880	6.019954	3.902028
-3.801765	4.163137	3.887451
-3.819785	4.872366	3.894194
-4.128087	3.507652	3.897913
-1.724321	4.325309	3.907037
-1.803188	5.389710	3.906449
-2.073256	1.860930	3.912558
-2.592700	3.440900	3.906500
-2.782827	0.120169	3.913924
-2.861646	1.128608	3.902785
-2.970928	0.299283	3.917342
-3.104324	1.198649	3.904324
-3.231019	0.160370	3.909861
-3.723417	3.733583	3.905250
-3.757400	4.412700	3.902200
-3.778661	1.199643	3.905625
-4.102824	0.762137	3.912519
-4.092645	5.827025	3.908512
-1.085419	4.653935	3.917097
-1.112279	2.483628	3.927349
-1.140637	0.264111	3.929151
-1.384311	5.622800	3.918356
-1.381343	5.144179	3.916716
-1.735655	3.981138	3.922448
-1.774819	4.632691	3.927108
-1.808542	5.141042	3.908333
-1.885698	1.671396	3.933077
-2.355000	1.030676	3.917297
-3.051471	5.272206	3.913529
-3.431364	2.451061	3.910152
-3.826696	0.189554	3.912143
-1.120667	3.693167	3.917500
-1.410000	0.013659	3.930000
-1.447867	3.982000	3.927200
-1.718065	2.136129	3.920000
-1.875156	0.482595	3.941661
-1.879059	2.657412	3.920941
-2.030288	5.040385	3.924423
-2.393962	4.324528	3.919623
-2.520315	0.521374	3.942027
-2.634545	0.853831	3.927338
-2.745048	5.330571	3.924571
-2.862208	4.337083	3.932917
-3.394216	0.385226	3.938711
-3.462143	3.337619	3.924762
-3.793968	5.326825	3.928175
-1.861351	2.411892	3.927297
-1.970320	0.041715	3.952384
-2.073031	5.947478	3.952876
-2.192685	5.701644	3.947616
-2.620537	3.176157	3.946777
-2.906632	5.521969	3.941451
-2.963333	3.757634	3.933441
-3.534716	1.176023	3.938295
-3.548932	6.144369	3.944612
-3.664707	5.098000	3.951488
-3.702292	1.907000	3.944375
-4.066696	6.085507	3.940088
-1.121394	4.909212	3.953333
-1.417277	3.245982	3.959063
-1.445176	1.852196	3.956549
-1.969375	0.924375	3.943958
-2.076455	0.308973	3.971149
-2.418036	1.910357	3.941250
-2.705797	4.015217	3.939420
-3.003043	2.366242	3.956025
-3.108365	1.459519	3.943942
-3.131439	4.819928	3.951799
-3.307322	1.047541	3.953224
-3.313723	6.391702	3.952128
-3.389401	3.580539	3.947784
-3.433043	3.861159	3.943333
-3.741584	6.339306	3.956377
-1.431587	1.586508	3.950317
-1.421378	6.167774	3.968127
-1.508778	2.872333	3.961556
-1.682638	0.857242	3.978633
-1.946168	4.425911	3.977430
-2.519096	2.406497	3.955593
-2.591886	5.132982	3.959868
-2.752143	3.641224	3.951735
-2.857952	5.097128	3.966862
-3.142857	3.101048	3.961905
-3.325130	1.312597	3.961104
-3.327596	5.915385	3.957596
-3.336505	2.087849	3.962527
-3.401478	2.722435	3.962174
-3.713889	5.775926	3.957222
-3.859000	4.633364	3.959364
-4.059259	4.415231	3.960509
-4.061579	6.356118	3.955526
-1.138643	5.172362	3.970905
-1.146667	1.819677	3.970645
-1.168052	2.745233	3.976919
-1.179963	0.531355	3.974139
-1.438571	0.742294	3.976494
-1.897360	3.363360	3.974960
-1.918000	6.400000	3.944000
-1.969126	2.896764	3.974595
-2.166406	4.217266	3.971875
-2.394024	0.788293	3.963537
-2.478011	3.655580	3.970994
-2.580781	5.653906	3.963906
-2.612491	2.854684	3.972379
-3.203557	2.552420	3.975656
-3.370667	4.737333	3.975778
-4.075000	1.328276	3.963621
-1.229889	5.923667	3.993111
-1.460955	4.584777	3.986115
-1.531410	1.080865	3.989647
-1.679803	1.496908	3.984211
-1.815604	6.149780	3.975824
-2.690690	4.517816	3.977816
-3.072870	1.708148	3.978426
-3.177869	4.567951	3.982787
-3.320537	4.320289	3.976818
-3.480478	0.853072	3.993242
-3.654141	2.157071	3.976667
-3.668633	5.533381	3.978273
-3.708828	0.969609	3.982422
-3.795844	0.445325	3.971169
-4.034076	1.596902	3.988696
-4.060000	1.015278	3.973148
-4.050396	4.790990	3.975941
-1.149490	4.159796	3.985510
-1.163176	3.225203	3.989932
-1.158266	5.433988	3.992775
-1.522937	5.847619	3.991825
-1.923130	1.163652	3.984000
-1.936447	1.413553	3.983684
-1.953333	4.815167	3.983750
-2.555789	4.727594	3.984135
-2.863881	1.485224	3.993582
-3.226452	3.338548	3.975968
-3.272617	4.058505	3.990000
-3.662043	3.972787	4.005809
-3.737778	0.721667	3.971944
-1.480651	2.152055	4.008664
-1.493559	1.335254	3.994576
-1.528309	3.751654	4.008640
-2.003121	3.830709	3.998936
-2.171720	2.095161	3.994839
-2.618046	4.255977	3.996437
-3.209722	3.787639	3.997639
-3.642574	3.508713	3.993366
-3.668765	1.392469	3.997284
-4.014143	2.302929	3.996929
-1.174043	1.569787	4.000851
-1.195385	0.798077	4.011058
-1.552593	2.613992	4.016626
-1.889204	4.162301	4.014248
-2.025264	5.489421	4.020378
-2.149137	1.635268	4.020655
-2.225543	2.970870	4.016957
-2.519130	5.395489	4.016033
-2.749442	0.396000	4.017907
-3.272000	5.287905	4.009048
-3.656526	2.677371	4.018638
-3.971456	1.844175	4.006796
-1.562379	5.342103	4.022172
-2.137395	2.701261	4.015462
-2.422847	3.910569	4.025907
-3.077714	4.229486	4.025600
-3.133553	5.067237	4.014079
-3.624582	0.064558	4.035895
-3.644667	2.401778	4.018556
-3.973489	3.308006	4.026822
-4.021324	0.068971	4.008676
-1.172708	5.679583	4.024583
-1.232868	1.332574	4.037721
-1.635098	6.322451	4.046803
-1.883923	1.985414	4.030608
-3.054423	2.749038	4.020192
-3.261343	5.689627	4.034925
-3.596150	4.847914	4.033155
-3.607051	1.640000	4.034423
-3.620196	4.580833	4.030931
-3.972107	5.170868	4.033802
-3.998970	2.903273	4.028364
-1.211837	1.084490	4.030408
-1.485652	4.833370	4.034130
-1.578532	5.071147	4.051009
-1.629899	0.437475	4.044007
-1.961341	2.226951	4.035366
-2.115556	0.755556	4.032593
-2.622308	1.999038	4.033654
-3.547455	0.576818	4.051273
-3.631944	2.985000	4.044583
-3.663305	3.251674	4.052833
-4.003902	0.329512	4.028537
-1.184935	6.166623	4.036364
-1.258153	2.286908	4.058835
-1.557931	0.159770	4.038046
-1.956522	5.741739	4.044348
-2.046183	3.149167	4.060161
-2.071088	2.455026	4.058549
-2.179605	3.656974	4.046645
-2.284118	0.571000	4.056059
-2.301500	3.211583	4.045667
-2.519739	5.884870	4.047130
-2.977036	0.528458	4.058696
-2.998252	3.286699	4.042233
-3.008382	1.941156	4.055723
-3.042654	3.964691	4.048395
-3.151750	3.553000	4.043250
-3.241519	1.869494	4.046203
-3.424214	5.075000	4.052643
-3.983438	4.137500	4.047031
-3.983469	5.426735	4.044286
-1.235093	4.492500	4.061944
-1.251232	2.021667	4.059420
-1.268105	2.985333	4.072070
-1.540000	4.272745	4.045882
-1.596813	3.092637	4.050659
-1.639075	3.367746	4.068208
-1.669583	1.740556	4.048889
-2.351440	0.314647	4.068152
-2.375349	2.776395	4.059651
-2.573182	1.760455	4.048864
-2.895506	0.788892	4.071139
-3.012622	5.724085	4.059085
-3.150498	0.733817	4.070498
-3.581289	4.230028	4.064818
-3.924339	2.647845	4.075776
-3.974464	0.582679	4.055357
-1.274863	3.451096	4.075479
-1.671325	2.328400	4.080675
-1.736788	2.805907	4.064767
-1.755170	3.593333	4.065850
-1.800112	0.240615	4.068492
-1.968904	5.233151	4.066849
-2.174454	4.886639	4.075042
-2.199159	0.096726	4.077345
-2.199727	5.146909	4.069727
-2.426809	4.941712	4.070934
-2.772703	2.444919	4.077676
-3.155814	6.257519	4.067442
-3.175948	0.351046	4.081307
-3.954922	3.573047	4.065781
-1.293926	6.381846	4.088926
-2.088242	4.624424	4.079697
-2.116387	6.381849	4.077227
-2.166684	1.003211	4.079895
-2.457485	0.062695	4.086437
-2.758406	5.787943	4.094524
-2.820913	1.721142	4.086393
-2.922311	6.366642	4.086764
-2.990517	0.106034	4.072586
-3.123953	5.477945	4.086996
-3.546950	5.312293	4.088392
-3.546667	5.908404	4.080939
-3.612683	0.324146	4.066829
-3.915388	3.894828	4.085862
-3.912196	5.686627	4.087843
-1.306749	2.550000	4.098848
-2.157586	1.378793	4.081034
-2.576116	2.620083	4.086281
-2.694523	4.920492	4.096769
-2.748185	1.009963	4.101593
-2.957197	2.980071	4.099834
-3.270641	1.605385	4.088077
-3.371342	3.154204	4.127942
-3.938875	2.080375	4.086625
-1.283467	3.723467	4.095467
-1.605691	6.049675	4.101301
-1.664854	4.475437	4.093495
-1.698364	1.275636	4.093273
-2.172872	6.140745	4.094362
-2.191875	4.000313	4.093281
-2.269903	5.390388	4.103350
-2.326667	2.314063	4.094271
-2.358774	3.461806	4.101548
-2.376119	4.158209	4.086866
-2.408837	2.085116	4.100349
-2.456364	3.016606	4.103394
-2.781635	1.267788	4.095000
-3.157874	2.207874	4.097087
-3.564692	3.725000	4.103231
-3.870444	6.145444	4.114290
-3.926517	0.824494	4.094157
-1.311690	5.000352	4.114542
-1.344164	0.284947	4.115089
-1.553516	5.631641	4.111563
-1.650806	1.989032	4.095323
-1.828526	5.008237	4.119359
-2.109486	3.411200	4.112400
-2.281979	5.884599	4.111283
-2.342673	4.662508	4.116898
-2.417857	1.427857	4.112083
-2.489187	0.963902	4.112033
-2.623611	2.236389	4.100278
-2.652621	3.795931	4.106000
-2.697075	6.055975	4.120849
-2.813571	2.738661	4.119286
-2.820292	4.686642	4.106058
-2.853112	4.129751	4.111411
-2.906494	2.174113	4.113247
-2.925789	3.559211	4.100263
-2.949097	5.969375	4.103611
-2.995736	1.086822	4.104341
-3.213063	2.912523	4.112252
-3.386466	0.165414	4.109323
-3.519681	1.995745	4.108617
-3.894000	1.411590	4.112615
-3.918298	1.160426	4.103830
-1.280877	4.728596	4.108772
-1.299744	3.987179	4.116538
-1.325789	5.282782	4.130902
-1.732331	5.810339	4.129280
-1.773263	0.648178	4.122246
-1.780719	5.527964	4.118263
-2.229483	4.409138	4.111034
-2.310274	1.201918	4.117397
-2.387547	5.631863	4.129741
-2.411894	6.112727	4.121288
-2.492475	4.436568	4.128515
-2.645389	0.685171	4.128131
-2.653636	1.526783	4.126364
-2.720359	5.517545	4.122395
-2.769535	3.303372	4.116860
-2.928490	5.306615	4.119740
-2.979943	4.489716	4.120398
-3.363703	6.110167	4.131109
-1.586429	4.037857	4.126071
-1.704898	4.776871	4.132313
-2.252638	1.891656	4.125767
-2.357013	6.369497	4.132013
-2.960627	4.914269	4.138478
-3.461948	1.449351	4.137143
-3.486912	5.626324	4.133088
-3.510476	6.327429	4.120095
-3.855654	3.093145	4.137915
-3.873609	4.349112	4.126568
-1.322388	1.714478	4.127164
-1.321087	4.236739	4.136413
-1.365153	0.928282	4.138650
-1.732527	3.841648	4.138242
-1.770343	1.046514	4.147943
-1.804444	3.190667	4.140444
-2.590000	6.288678	4.135289
-2.630282	3.521567	4.153605
-2.681739	0.183370	4.134130
-2.705341	3.027045	4.134318
-3.121439	1.300758	4.140909
-3.422566	2.245044	4.141239
-3.456080	2.552049	4.152606
-3.833010	4.849465	4.149465
-3.839389	1.670229	4.150687
-1.327879	5.537879	4.147273
-1.410866	0.548656	4.161936
-1.765921	2.563026	4.143947
-2.287037	2.557037	4.138889
-2.374528	1.675283	4.138113
-2.434333	5.194833	4.154389
-2.550968	1.215161	4.144194
-2.597183	4.064225	4.142394
-3.472273	3.427348	4.153182
-1.809070	0.018023	4.166628
-1.888000	6.331497	4.180395
-2.685750	5.269250	4.160125
-3.442746	3.962977	4.174827
-3.546120	1.048770	4.167319
-3.786078	5.896667	4.151961
-1.360678	5.784153	4.167712
-1.381646	0.031013	4.161013
-1.418356	1.484612	4.180776
-2.759804	4.372255	4.162647
-2.896541	3.799248	4.169323
-3.003520	2.558715	4.174413
-3.429726	1.767260	4.161370
-3.448776	2.852653	4.164082
-3.835313	0.177604	4.161771
-1.386883	1.198182	4.170779
-1.399200	2.778933	4.176800
-1.905475	1.770380	4.187152
-1.930815	0.849741	4.185630
-2.516944	3.261389	4.187361
-3.037444	1.546457	4.178655
-3.300665	0.925831	4.190818
-3.448285	4.455793	4.185696
-3.832000	2.428909	4.176545
-1.378909	6.042636	4.184636
-1.757206	5.276520	4.190882
-1.863497	4.586993	4.192587
-2.563196	0.421753	4.182990
-3.336488	3.644080	4.195318
-3.760373	5.163593	4.200814
-3.780947	5.434579	4.190421
-3.781049	3.434012	4.195988
-3.796154	2.841692	4.184923
-1.833788	6.043652	4.204573
-1.902731	0.435419	4.201145
-1.913409	1.294091	4.200568
-2.062097	4.175645	4.186774
-2.136757	5.648649	4.193243
-2.364719	3.714607	4.197640
-2.947861	0.314975	4.205323
-3.351898	1.217810	4.195839
-3.397627	0.397966	4.191525
-3.398163	4.867959	4.186327
-3.761321	1.922000	4.205321
-3.778943	0.656179	4.203496
-3.792404	3.701827	4.197692
-3.793765	4.120353	4.197647
-1.442268	4.452862	4.212528
-1.447722	1.905886	4.210506
-1.463909	3.590453	4.220041
-1.564433	0.772296	4.227995
-1.937399	3.959641	4.212960
-1.993729	1.524068	4.198305
-2.002563	0.183266	4.219246
-2.142703	0.384865	4.204324
-2.361239	0.770642	4.212339
-2.799455	1.952228	4.209554
-3.220625	2.420188	4.211250
-3.224818	2.679909	4.206364
-3.265556	4.650427	4.218860
-3.308824	5.862353	4.198627
-3.357396	0.658958	4.206875
-3.370698	4.208372	4.204884
-3.752719	2.192120	4.214424
-1.446917	2.368417	4.215333
-1.456293	3.267854	4.219561
-1.793671	4.280058	4.227312
-1.800128	2.134231	4.229231
-1.878263	2.960297	4.224746
-1.890704	2.371972	4.215775
-1.945145	3.681503	4.212428
-2.050746	5.894030	4.226806
-3.201277	4.390851	4.207872
-3.219358	3.393850	4.229599
-3.304082	2.043469	4.206735
-3.731794	6.356500	4.223941
-3.781351	0.960811	4.213243
-1.746508	1.482937	4.238333
-1.884167	3.422583	4.227333
-1.981121	4.817375	4.244484
-2.039922	2.005273	4.246545
-2.109260	2.827577	4.243903
-2.593720	4.669795	4.235768
-2.600000	2.826092	4.227931
-3.191879	3.855030	4.235697
-3.189310	4.970345	4.225345
-3.341474	5.446421	4.220105
-3.584889	0.795778	4.222667
-3.778846	0.403462	4.214231
-1.457317	3.011463	4.231707
-1.461753	3.854639	4.236701
-3.153958	4.111042	4.240313
-3.302932	5.191152	4.243508
-1.983881	2.596866	4.241194
-2.039935	5.082810	4.252680
-2.124087	2.272198	4.255728
-2.138085	0.630372	4.254787
-2.146279	3.816977	4.246163
-3.092638	3.155337	4.255215
-3.176400	0.153000	4.256500
-3.644798	6.085253	4.259495
-3.705741	5.684136	4.248889
-3.727759	1.208448	4.239310
-1.473950	6.306807	4.252521
-1.523095	4.934000	4.266429
-2.032015	5.383460	4.270228
-2.038216	4.416865	4.266541
-2.220492	3.070758	4.264470
-3.156563	5.672500	4.256172
-3.287015	6.364259	4.268601
-3.688889	1.471242	4.260719
-1.524311	5.436347	4.270539
-1.547198	2.137857	4.270440
-1.549250	0.337500	4.265333
-1.547455	1.041909	4.270000
-1.570251	1.677538	4.273668
-1.595647	0.079483	4.279009
-1.905055	5.683956	4.277418
-2.232347	1.520102	4.276939
-2.486176	5.425588	4.275074
-2.592000	2.445444	4.270500
-2.941571	5.518846	4.278910
-2.951255	3.379176	4.278980
-3.216667	1.756092	4.268621
-3.626197	4.687508	4.284164
-3.683448	3.913966	4.266897
-3.688750	4.433611	4.265417
-3.702593	2.637593	4.265185
-1.508478	5.184348	4.273696
-1.549188	2.591015	4.279239
-3.046726	6.243673	4.288540
-3.055605	0.862803	4.282994
-3.078394	3.624599	4.290255
-1.532941	4.678971	4.281912
-1.548020	4.227228	4.287525
-1.554086	5.898710	4.290645
-1.565714	1.314643	4.287619
-2.265227	3.319773	4.280909
-2.285609	4.986346	4.300128
-2.465328	5.937810	4.282993
-2.937143	5.795866	4.302006
-2.986862	4.295372	4.306676
-3.032062	5.143093	4.282371
-3.582606	0.240394	4.305273
-3.606727	4.963200	4.299345
-3.676000	0.010000	4.280667
-1.978824	1.076824	4.293294
-2.119353	6.258557	4.304677
-2.152924	1.254503	4.302865
-2.246392	6.040619	4.299072
-2.439262	3.935403	4.310940
-2.480400	2.214467	4.301067
-2.779673	5.066667	4.296993
-2.923910	1.298269	4.316597
-2.962195	1.766765	4.316968
-2.997188	0.621875	4.300313
-3.039072	2.827629	4.298557
-3.080297	2.000396	4.294059
-3.128544	5.992492	4.311715
-3.251351	1.465946	4.293694
-3.609955	3.276532	4.304730
-3.667660	3.011702	4.286809
-1.650462	2.837370	4.320636
-2.039000	3.246429	4.305286
-2.140220	1.762802	4.315165
-2.160449	0.895000	4.313596
-2.188302	3.567170	4.318459
-2.180685	4.617808	4.307397
-2.240736	0.192393	4.312577
-2.369253	2.865000	4.314770
-2.479015	4.209562	4.312956
-2.501304	0.212372	4.314032
-2.563879	1.968318	4.315935
-2.686416	1.743410	4.314393
-2.764310	0.509914	4.317586
-2.801656	6.326225	4.312715
-2.928379	0.066421	4.320926
-3.030959	4.724110	4.296986
-3.041673	2.266809	4.319377
-3.147817	1.112792	4.310558
-3.578505	0.533737	4.317153
-3.631702	1.714787	4.301277
-3.624300	2.411200	4.304300
-1.644769	3.426690	4.325587
-2.237667	4.286000	4.310667
-2.249333	5.252417	4.319583
-2.368828	1.049375	4.327930
-2.495314	1.561882	4.329446
-2.562570	4.922793	4.324022
-2.629231	0.010000	4.308462
-2.658502	1.353913	4.319855
-2.741253	2.191798	4.328392
-2.791610	0.785381	4.324831
-2.818996	3.611528	4.323668
-2.840078	3.136039	4.326824
-2.868145	6.060806	4.316290
-3.181016	0.456203	4.322246
-1.658316	3.122105	4.336316
-1.665974	0.552403	4.333442
-1.688981	1.913719	4.340413
-2.303750	2.034259	4.334815
-2.332584	2.411461	4.327753
-2.349630	0.412963	4.314444
-2.702955	3.929167	4.326667
-2.805439	4.805088	4.331930
-2.830843	1.538795	4.324337
-2.855169	4.551356	4.332203
-2.877704	1.035111	4.329037
-2.958047	3.990118	4.332189
-3.137547	5.362642	4.324717
-3.521488	5.847741	4.340854
-3.569650	5.486434	4.331049
-3.604706	3.559412	4.319412
-3.596800	4.215467	4.322933
-1.658459	5.650824	4.343262
-1.638000	6.137226	4.341290
-1.672864	4.486667	4.348967
-2.203143	4.038000	4.327429
-2.253889	5.498889	4.334259
-2.449405	3.471071	4.343571
-2.502727	0.595657	4.361145
-2.535307	5.690000	4.346842
-2.567725	3.052515	4.340299
-2.576524	3.703777	4.347253
-2.697931	5.885172	4.329310
-2.741420	4.193977	4.341761
-2.851932	2.431364	4.335909
-3.537655	5.226966	4.345241
-1.646709	3.728101	4.341392
-2.264980	5.790648	4.358178
-2.377500	0.010000	4.327500
-2.399076	1.312554	4.356304
-2.389434	1.789434	4.345472
-2.606494	6.134945	4.357860
-2.633235	1.086765	4.335000
-2.693206	3.364667	4.363714
-2.726962	2.642405	4.345443
-3.552063	1.941429	4.345397
-1.662475	3.979208	4.352277
-1.695789	2.329035	4.357281
-1.721842	5.092829	4.371382
-2.372953	6.246062	4.360259
-2.382881	4.476017	4.363898
-2.627625	4.442375	4.354625
-2.755682	0.254545	4.353409
-2.803288	2.876301	4.356027
-2.832128	5.303830	4.352979
-3.240448	2.963632	4.358969
-3.490905	3.782387	4.368107
-3.529189	1.289595	4.356486
-3.522604	6.357988	4.357337
-3.542258	2.186452	4.352581
-1.679832	6.383613	4.364454
-1.744808	0.913333	4.367821
-1.762068	1.183346	4.375677
-2.381563	4.749792	4.361875
-2.490851	2.654468	4.362340
-2.545410	0.863934	4.369262
-2.572941	6.385765	4.361059
-2.572308	5.194835	4.373242
-3.506667	2.733548	4.364301
-1.740659	4.811923	4.385714
-2.709459	5.513378	4.369730
-1.766395	0.330349	4.383256
-1.785546	2.573843	4.393100
-1.869191	0.694220	4.391156
-2.250000	2.643855	4.384880
-3.302930	2.251245	4.400330
-3.414346	1.067991	4.399393
-3.413360	6.092400	4.399040
-3.476889	1.529444	4.382333
-1.780150	5.878100	4.403150
-1.839664	0.086765	4.402437
-3.366831	5.626541	4.411715
-3.387686	2.509628	4.411529
-3.418191	0.805106	4.401702
-3.461188	3.092772	4.391287
-1.753871	5.407903	4.404516
-1.790130	1.676364	4.399870
-3.372039	0.088092	4.412895
-3.422033	3.420440	4.405659
-1.832656	3.578984	4.420078
-1.869385	4.101423	4.429231
-3.417193	4.560000	4.413158
-3.422449	4.800612	4.410612
-3.420000	4.073171	4.410976
-1.835120	3.283600	4.426720
-1.854615	3.835804	4.430490
-2.985375	2.620625	4.420500
-3.402115	4.316154	4.420000
-3.396567	5.046269	4.422687
-3.411875	1.763333	4.415417
-1.888414	2.816414	4.439379
-1.921985	6.370773	4.454072
-1.942976	1.352390	4.447024
-2.421905	3.221429	4.430000
-3.267258	3.224839	4.427903
-3.381739	0.334348	4.422609
-1.874386	4.610175	4.446053
-1.895455	6.102216	4.451591
-1.929106	1.872846	4.450244
-2.031634	0.500113	4.465380
-3.285890	3.633252	4.453804
-3.339167	1.993000	4.443167
-3.336800	5.342000	4.445400
-3.357778	0.573056	4.435556
-1.881967	4.357705	4.450984
-1.927667	5.234667	4.459778
-1.941207	4.969310	4.462299
-1.943193	2.361849	4.458739
-1.946067	3.064719	4.449888
-2.281107	3.778730	4.464139
-3.202211	4.889158	4.469579
-3.222500	2.714812	4.468925
-3.276398	1.279814	4.458882
-1.911379	2.111379	4.455517
-1.956587	5.523571	4.473571
-2.021105	5.799830	4.480397
-2.016705	1.605549	4.475780
-2.955467	4.987378	4.470178
-3.297115	5.873654	4.459615
-1.968889	0.906481	4.470556
-2.041504	0.232481	4.475564
-2.030139	3.425486	4.484167
-3.167750	4.372083	4.478500
-3.182201	5.152327	4.488239
-3.202281	6.209298	4.483333
-3.211528	0.930833	4.478750
-3.288889	3.885000	4.465278
-2.023051	2.607712	4.486102
-2.085117	4.752368	4.498889
-2.162039	5.105137	4.514118
-2.188956	0.027071	4.501650
-3.137778	2.434192	4.498485
-3.164298	0.261818	4.490083
-3.178559	4.106695	4.490508
-3.193238	4.630286	4.487714
-3.222206	1.627059	4.479853
-2.112585	4.194153	4.506356
-2.388241	6.031667	4.507454
-3.110000	0.017125	4.501000
-3.133874	1.860270	4.500450
-3.146815	3.428000	4.500444
-3.150125	0.681375	4.496250
-2.043220	3.683559	4.499322
-2.078488	3.928256	4.506163
-2.080877	1.126491	4.502105
-2.143235	2.845252	4.511807
-2.142185	0.737059	4.510000
-2.162036	3.174253	4.515701
-2.195234	1.414299	4.517196
-2.420727	5.516000	4.502909
-3.092024	5.753988	4.513988
-2.083636	4.481091	4.509818
-2.129890	6.037403	4.519945
-2.136481	2.158333	4.517222
-2.147413	5.365035	4.521608
-2.171013	1.912278	4.520253
-2.517957	0.374946	4.532177
-2.611892	2.870579	4.528996
-2.639500	2.342538	4.529577
-2.965216	6.326264	4.529954
-3.017746	0.466879	4.518786
-3.054196	3.141538	4.521748
-3.087407	1.429012	4.517407
-3.125645	2.122581	4.510000
-2.182571	2.419524	4.527810
-2.261818	1.677219	4.531604
-2.284662	3.413818	4.537534
-2.299140	0.529892	4.534140
-2.368175	3.002000	4.546975
-2.898807	3.353263	4.541649
-2.928312	4.164262	4.540295
-2.974531	3.611563	4.533281
-2.984802	5.996980	4.534109
-3.035253	1.178687	4.525758
-3.055048	3.859429	4.526857
-3.099677	5.502903	4.517742
-2.201294	6.287824	4.538647
-2.201583	5.622734	4.538705
-2.387429	2.229968	4.546286
-2.384335	5.253536	4.550875
-2.450701	0.081274	4.545796
-2.657893	2.056588	4.556825
-2.673548	1.546828	4.540538
-2.763293	5.149102	4.553802
-2.802667	3.819304	4.549739
-2.887919	2.252483	4.546309
-2.906238	0.700693	4.542772
-2.928047	1.623395	4.540744
-2.914365	1.994444	4.544683
-2.962179	4.728974	4.541859
-3.044590	2.888197	4.530984
-2.280435	0.271957	4.538913
-2.294800	0.918600	4.542200
-2.301515	4.893788	4.551667
-2.312439	1.174878	4.547073
-2.309103	4.029655	4.550828
-2.726194	4.601754	4.558694
-2.725085	4.331017	4.563941
-2.774916	1.125028	4.553911
-2.844211	5.784737	4.541228
-2.941930	4.460526	4.547018
-2.967167	0.940333	4.540500
-2.979506	5.288395	4.543951
-2.291538	4.609385	4.556769
-2.456503	3.606713	4.563497
-2.515185	1.033426	4.557130
-2.511747	3.871710	4.564758
-2.524069	5.024372	4.568009
-2.575205	1.286712	4.559110
-2.623849	5.376653	4.566318
-2.613053	5.920929	4.567212
-2.669851	0.613806	4.562612
-2.685503	4.064550	4.566720
-2.712057	0.869220	4.561986
-2.715388	3.560728	4.563107
-2.717687	6.388582	4.564104
-2.746135	1.800491	4.560245
-2.738658	4.873087	4.567517
-2.769551	6.130843	4.562978
-2.781688	0.388831	4.558831
-2.833500	3.021857	4.559286
-2.835000	2.745700	4.561000
-2.867373	5.508814	4.558559
-2.935610	0.197561	4.545122
-2.286970	4.363636	4.558182
-2.410946	1.958784	4.560405
-2.410723	5.755904	4.566145
-2.408519	2.482593	4.561111
-2.430769	1.498205	4.565385
-2.454750	0.745000	4.564750
-2.476559	4.215484	4.570753
-2.509652	4.752609	4.570870
-2.621308	2.607196	4.570280
-2.648615	5.639692	4.572615
-2.698732	0.138310	4.561972
-2.851094	1.366250	4.559688
-2.393023	2.731163	4.565581
-2.503182	1.733030	4.570000
-2.523095	6.235595	4.577262
-2.551757	3.370135	4.575676
-2.614267	3.130667	4.572133
-2.845000	2.492000	4.567000
-2.509355	4.466290	4.579032
-3.527562	3.019352	0.627099
-3.443333	3.203333	0.580000
\ No newline at end of file
diff --git a/apps/cpu/BeadPack/paper/1-s2.0-S0309170813000183-main.pdf b/apps/cpu/BeadPack/paper/1-s2.0-S0309170813000183-main.pdf
deleted file mode 100644
index 127843eccb4d05dc32b1fbeabc2c81fffc7043fc..0000000000000000000000000000000000000000
Binary files a/apps/cpu/BeadPack/paper/1-s2.0-S0309170813000183-main.pdf and /dev/null differ
diff --git a/apps/cpu/BoxBenchmark/CMakeLists.txt b/apps/cpu/BoxBenchmark/CMakeLists.txt
deleted file mode 100644
index ddae32fc951e23ba59082c74efa55d861fd814f3..0000000000000000000000000000000000000000
--- a/apps/cpu/BoxBenchmark/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(BoxBenchmark)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(bb BINARY)
diff --git a/apps/cpu/BoxBenchmark/bb.cfg b/apps/cpu/BoxBenchmark/bb.cfg
deleted file mode 100644
index c2abee2e2781b8f9ffb781ddc6a29ee474cc5073..0000000000000000000000000000000000000000
--- a/apps/cpu/BoxBenchmark/bb.cfg
+++ /dev/null
@@ -1,25 +0,0 @@
-pathname = d:/temp/BoxBenchmark
-numOfThreads = 4
-availMem = 11e9
-
-#Grid
-length =  32 32 32 
-blocknx = 8 8 8
-
-dx = 1
-refineLevel = 0
-
-#Simulation
-uLB = 0.001
-Re = 10
-
-
-outTime = 1000
-endTime = 1000
-
-logToFile = false
-
-cpStep     = 10000     
-cpStepStart= 100000
-restart    = false    
-restartStep= 100000
\ No newline at end of file
diff --git a/apps/cpu/BoxBenchmark/bb.cpp b/apps/cpu/BoxBenchmark/bb.cpp
deleted file mode 100644
index 5bf050216aaab09a751a4535ff50cbf5c72a442c..0000000000000000000000000000000000000000
--- a/apps/cpu/BoxBenchmark/bb.cpp
+++ /dev/null
@@ -1,321 +0,0 @@
-#include <iostream>
-#include <string>
-#include <vector>
-#include <sstream> //istringstream
-#include <iostream> // cout
-#include <fstream> // ifstream
-
-#include "VirtualFluids.h"
-
-using namespace std;
-
-
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathname = config.getValue<string>("pathname");
-      int             numOfThreads = config.getValue<int>("numOfThreads");
-      vector<int>     blocknx = config.getVector<int>("blocknx");
-      double          uLB = config.getValue<double>("uLB");
-      double          endTime = config.getValue<double>("endTime");
-      double          outTime = config.getValue<double>("outTime");
-      double          availMem = config.getValue<double>("availMem");
-      int             refineLevel = config.getValue<int>("refineLevel");
-      double          Re = config.getValue<double>("Re");
-      double          dx = config.getValue<double>("dx");
-      vector<double>  length = config.getVector<double>("length");
-      bool            logToFile = config.getValue<bool>("logToFile");
-
-      double          cpStep      = config.getValue<double>("cpStep");
-      double          cpStepStart = config.getValue<double>("cpStepStart");
-      bool            restart     = config.getValue<bool>("restart");
-      double          restartStep = config.getValue<double>("restartStep");
-
-      //UbLog::reportingLevel() = UbLog::logLevelFromString("DEBUG3");
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathname.c_str();
-            mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-   }
-#endif 
-
-         if (myid == 0)
-         {
-            stringstream logFilename;
-            logFilename << pathname + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-}
-
-      LBMReal dLB = length[1] / dx;
-      LBMReal rhoLB = 0.0;
-      LBMReal nuLB = (uLB*dLB) / Re;
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      //bounding box
-      double g_minX1 = 0.0;
-      double g_minX2 = 0.0;
-      double g_minX3 = 0.0;
-
-      double g_maxX1 = length[0];
-      double g_maxX2 = length[1];
-      double g_maxX3 = length[2];
-
-      //geometry
-      SPtr<GbObject3D> box(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      //if (myid == 0) GbSystem3D::writeGeoObject(box.get(), pathname + "/geo/box", WbWriterVtkXmlBinary::getInstance());
-
-      SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      //if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-
-      double blockLength = blocknx[0] * dx;
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      SPtr<UbScheduler> rSch2(new UbScheduler(cpStep, cpStepStart));
-      MPIIORestartCoProcessor rcp(grid, rSch2, pathname, comm);
-
-      if (!restart)
-      {
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "uLb = " << uLB);
-            UBLOG(logINFO, "rho = " << rhoLB);
-            UBLOG(logINFO, "nuLb = " << nuLB);
-            UBLOG(logINFO, "Re = " << Re);
-            UBLOG(logINFO, "dx = " << dx);
-            UBLOG(logINFO, "length = " << length[0] << " " << length[1] << " " << length[2]);
-            UBLOG(logINFO, "blocknx = " << blocknx[0] << " " << blocknx[1] << " " << blocknx[2]);
-            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
-            UBLOG(logINFO, "number of processes = " << comm->getNumberOfProcesses());
-            UBLOG(logINFO, "number of threads = " << numOfThreads);
-            UBLOG(logINFO, "Preprocess - start");
-         }
-
-         grid->setDeltaX(dx);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-
-         //if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         SPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         //int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         //D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         //SPtr<D3Q27Interactor> boxInt(new D3Q27Interactor(box, grid, bcObst, Interactor3D::INVERSESOLID));
-
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-         InteractorsHelper intHelper(grid, metisVisitor);
-         //intHelper.addInteractor(boxInt);
-         intHelper.selectBlocks();
-
-         ppblocks->process(0);
-         ppblocks.reset();
-
-         //set connectors
-         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         //SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         //grid->accept(setConnsVisitor);
-
-         unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-         int ghostLayer = 3;
-         unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-         unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-         unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-         double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-            UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         SPtr<LBMKernel> kernel;
-         //kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel());
-         kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel());
-         SPtr<BCProcessor> bcProc(new BCProcessor());
-         kernel->setBCProcessor(bcProc);
-         kernel->setForcingX1(0.1);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         intHelper.setBC();
-
-         //BoundaryConditionBlockVisitor bcVisitor;
-         //grid->accept(bcVisitor);
-
-         //initialization of distributions
-         InitDistributionsBlockVisitor initVisitor;
-         initVisitor.setVx1(0.5);
-         grid->accept(initVisitor);
-
-         if (myid == 0) UBLOG(logINFO, "Preprocess - end");
-      }
-      else
-      {
-         rcp.restart((int)restartStep);
-         grid->setTimeStep(restartStep);
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         if (myid==0) UBLOG(logINFO, "Restart - end");
-      }
-
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      SPtr<UbScheduler> visSch(new UbScheduler(outTime));
-      SPtr<CoProcessor> mqCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm));
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-      SPtr<CoProcessor> nupsCoProcessor(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-      //omp_set_num_threads(numOfThreads);
-      SPtr<Calculator> calculator(new BasicCalculator(grid, visSch, (int)endTime));
-      calculator->addCoProcessor(nupsCoProcessor);
-      calculator->addCoProcessor(mqCoProcessor);
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
-/**
- * Reads csv file into table, exported as a vector of vector of doubles.
- * @param inputFileName input file name (full path).
- * @return data as vector of vector of doubles.
- */
-vector<vector<double>> parse2DCsvFile(string inputFileName) {
- 
-    vector<vector<double> > data;
-    ifstream inputFile(inputFileName);
-    int l = 0;
- 
-    while (inputFile) {
-        l++;
-        string s;
-        if (!getline(inputFile, s)) break;
-        if (s[0] != '#') {
-            istringstream ss(s);
-            vector<double> record;
- 
-            while (ss) {
-                string line;
-                if (!getline(ss, line, ';'))
-                    break;
-                try {
-                    record.push_back(stof(line));
-                }
-                catch (const std::invalid_argument e) {
-                    //cout << "NaN found in file " << inputFileName << " line " << l
-                    //     << endl;
-                    //e.what();
-                }
-            }
- 
-            data.push_back(record);
-        }
-    }
- 
-    if (!inputFile.eof()) {
-        cerr << "Could not read file " << inputFileName << "\n";
-        //__throw_invalid_argument("File not found.");
-    }
- 
-    return data;
-}
-
-void createPoints()
-{
-   string inputFile = "d:/Projects/SFB880/DLR-F16/PIANO/LambVector/grid.csv";
-   vector<vector<double>> data = parse2DCsvFile(inputFile);
-   
-   std::vector<UbTupleFloat3> nodes(data.size());
-   int i = 0;
-   for (auto x : data) 
-   {
-      nodes[i] =(UbTupleFloat3(float(x[0]), float(x[1]), float(x[2])));
-      i++;
-   }
-
-   string file = "d:/Projects/SFB880/DLR-F16/PIANO/LambVector/grid";
-   std::string partName = WbWriterVtkXmlASCII::getInstance()->writeNodes(file,nodes);
-}
-
-int main(int argc, char* argv[])
-{
-   //if (argv != NULL)
-   //{
-   //   if (argv[1] != NULL)
-   //   {
-         run(string(argv[1]));
-         //createPoints();
-      //}
-      //else
-      //{
-      //   cout << "Configuration file is missing!" << endl;
-      //}
-   //}
-
-}
-
diff --git a/apps/cpu/BoxBenchmark/bbVB.cfg b/apps/cpu/BoxBenchmark/bbVB.cfg
deleted file mode 100644
index b5be695b7ffdc8a0bb3da6e6072e346fa1f7dc91..0000000000000000000000000000000000000000
--- a/apps/cpu/BoxBenchmark/bbVB.cfg
+++ /dev/null
@@ -1,13 +0,0 @@
-##########################################
-#Configuration of VirtualFluids-Benchmark#
-##########################################
-
-#available memory on the computing node [Bytes]
-availMem = 64e9
-
-#block size: 16 or 32
-blockNx = 32 32 32
-
-#computational domain
-length = 256 256 256
-
diff --git a/apps/cpu/CheckpointConverter/CMakeLists.txt b/apps/cpu/CheckpointConverter/CMakeLists.txt
deleted file mode 100644
index ee2615af2b22422878f6e18e7070585f20d242f6..0000000000000000000000000000000000000000
--- a/apps/cpu/CheckpointConverter/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(CheckpointConverter)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(cpc BINARY)
diff --git a/apps/cpu/CheckpointConverter/cbc.cfg b/apps/cpu/CheckpointConverter/cbc.cfg
deleted file mode 100644
index 3f00fe22452a988622c7fff90c5701877c4d9c7d..0000000000000000000000000000000000000000
--- a/apps/cpu/CheckpointConverter/cbc.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-path = d:/temp/BreugemChannelAnisotrop
-step = 100
-numberOfProcesses = 4
\ No newline at end of file
diff --git a/apps/cpu/CheckpointConverter/cpc.cpp b/apps/cpu/CheckpointConverter/cpc.cpp
deleted file mode 100644
index 1ef1ad8f4ead0330620713fea61fb1ae51f5bbd5..0000000000000000000000000000000000000000
--- a/apps/cpu/CheckpointConverter/cpc.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "VirtualFluids.h"
-
-using namespace std;
-
-
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string path = config.getString("path");
-      int    step = config.getValue<int>("step");
-      int    numberOfProcesses = config.getValue<int>("numberOfProcesses");
-      
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      CheckpointConverter converter(grid, path, comm);
-      converter.convert(step, numberOfProcesses);
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout << "Configuration file is missing!" << endl;
-      }
-   }
-
-}
-
diff --git a/apps/cpu/ConvectionOfVortex/CMakeLists.txt b/apps/cpu/ConvectionOfVortex/CMakeLists.txt
deleted file mode 100644
index 671dfcfeb944ed53dbe6192461db463f97a4e6f8..0000000000000000000000000000000000000000
--- a/apps/cpu/ConvectionOfVortex/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(ConvectionOfVortex)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(cov BINARY)
diff --git a/apps/cpu/ConvectionOfVortex/cov.cpp b/apps/cpu/ConvectionOfVortex/cov.cpp
deleted file mode 100644
index 2782060b9d68f2673e840ec4b882b0a66544c564..0000000000000000000000000000000000000000
--- a/apps/cpu/ConvectionOfVortex/cov.cpp
+++ /dev/null
@@ -1,314 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "VirtualFluids.h"
-
-using namespace std;
-
-
-void run()
-{
-   try
-   {
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      int    numOfThreads = 4;
-      double availMem = 5e9;
-
-      
-
-      //////////////////////////////////////////////////////////////////////////
-      //DLR-F16 test
-      //dx_coarse = 0.003 mm
-
-      string  pathname = "d:/temp/ConvectionOfVortex_0.003_4th";
-      int     endTime = 10000;
-      double  outTime = 10;
-      LBMReal dx =  0.003;
-      LBMReal rhoLB = 0.0;
-      LBMReal nuLB = 8.66025e-6;
-      double yFactor = 1.0;
-
-      //string  pathname = "d:/temp/ConvectionOfVortex_0.003_square";
-      //int     endTime = 20;
-      //double  outTime = 10;
-      //LBMReal dx =  0.003;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6;
-
-      //////////////////////////////////////////////////////////////////////////
-      ////dx_coarse = 0.0015 mm
-      //string  pathname = "d:/temp/ConvectionOfVortex_0.0015";
-      //double  endTime = 40;
-      //double  outTime = 40;
-      //LBMReal dx =  0.0015;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6*2.0;
-      ////////////////////////////////////////////////////////////////////////////
-      //dx_coarse = 0.00075 mm
-
-      //string  pathname = "d:/temp/ConvectionOfVortex_0.00075_4th_moments";
-      //double  endTime = 2000;
-      //double  outTime = 10;
-      //LBMReal dx =  0.00075;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6*4.0;
-      //double yFactor = 4.0;
-
-      string  pathname = "d:/temp/ConvectionOfVortex_0.00075_moments";
-      //double  endTime = 160;
-      //double  outTime = 160;
-      //LBMReal dx =  0.00075;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6*4.0;
-
-      //////////////////////////////////////////////////////////////////////////
-      ////dx_coarse = 0.000375 mm
-      //string  pathname = "d:/temp/ConvectionOfVortex_0.000375";
-      //double  endTime = 80;
-      //double  outTime = 80;
-      //LBMReal dx =  0.00075;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6*8.0;
-      //////////////////////////////////////////////////////////////////////////
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      int baseLevel = 0;
-      int refineLevel = 1;
-
-      //bounding box
-      double g_minX1 = -0.045;
-      double g_minX2 = -0.015/yFactor;
-      double g_minX3 = -0.06;
-
-      double g_maxX1 = 0.045;
-      double g_maxX2 = 0.015/yFactor;
-      double g_maxX3 = 0.06;
-
-      vector<int>  blocknx(3);
-      blocknx[0] = 10;
-      blocknx[1] = 10;
-      blocknx[2] = 10;
-
-      //geometry
-      SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-
-      double blockLength = blocknx[0] * dx;
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-      grid->setPeriodicX1(true);
-      grid->setPeriodicX2(true);
-      grid->setPeriodicX3(true);
-
-
-      GenBlocksGridVisitor genBlocks(gridCube);
-      grid->accept(genBlocks);
-
-      SPtr<BCAdapter> outflowBCAdapter(new DensityBCAdapter(rhoLB));
-      outflowBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingOutflowBCAlgorithm()));
-
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(outflowBCAdapter);
-
-      SPtr<BCProcessor> bcProc;
-      bcProc = SPtr<BCProcessor>(new BCProcessor());
-
-      SPtr<GbObject3D> refCube(new GbCuboid3D(g_minX1-blockLength,-0.02,-0.02,g_maxX1+blockLength,0.02,0.02));
-      if (myid==0) GbSystem3D::writeGeoObject(refCube.get(), pathname+"/geo/refCube", WbWriterVtkXmlBinary::getInstance());
-
-      if (refineLevel>0)
-      {
-         if (myid==0) UBLOG(logINFO, "Refinement - start");
-         RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel, comm);
-         refineHelper.addGbObject(refCube, refineLevel);
-         refineHelper.refine();
-         if (myid==0) UBLOG(logINFO, "Refinement - end");
-      }
-
-      SPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-      //outflow
-      GbCuboid3DPtr geoOutflow1(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-      if (myid==0) GbSystem3D::writeGeoObject(geoOutflow1.get(), pathname+"/geo/geoOutflow1", WbWriterVtkXmlASCII::getInstance());
-      SPtr<D3Q27Interactor> outflowIntr1 = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow1, grid, outflowBCAdapter, Interactor3D::SOLID));
-
-      GbCuboid3DPtr geoOutflow2(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-      if (myid==0) GbSystem3D::writeGeoObject(geoOutflow2.get(), pathname+"/geo/geoOutflow2", WbWriterVtkXmlASCII::getInstance());
-      SPtr<D3Q27Interactor> outflowIntr2 = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow2, grid, outflowBCAdapter, Interactor3D::SOLID));
-      
-      GbCuboid3DPtr geoOutflow3(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-      if (myid==0) GbSystem3D::writeGeoObject(geoOutflow3.get(), pathname+"/geo/geoOutflow3", WbWriterVtkXmlASCII::getInstance());
-      SPtr<D3Q27Interactor> outflowIntr3 = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow3, grid, outflowBCAdapter, Interactor3D::SOLID));
-
-      GbCuboid3DPtr geoOutflow4(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-      if (myid==0) GbSystem3D::writeGeoObject(geoOutflow4.get(), pathname+"/geo/geoOutflow4", WbWriterVtkXmlASCII::getInstance());
-      SPtr<D3Q27Interactor> outflowIntr4 = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow4, grid, outflowBCAdapter, Interactor3D::SOLID));
-
-      SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-      InteractorsHelper intHelper(grid, metisVisitor);
-      //intHelper.addInteractor(outflowIntr1);
-      //intHelper.addInteractor(outflowIntr2);
-      //intHelper.addInteractor(outflowIntr3);
-      //intHelper.addInteractor(outflowIntr4);
-      intHelper.selectBlocks();
-
-      ppblocks->process(0);
-      ppblocks.reset();
-
-      //set connectors  
-      //SPtr<InterpolationProcessor> iProcessor(new CompressibleOffsetInterpolationProcessor());
-      SPtr<InterpolationProcessor> iProcessor(new CompressibleOffsetMomentsInterpolationProcessor());
-      //dynamicPointerCast<CompressibleOffsetMomentsInterpolationProcessor>(iProcessor)->setBulkOmegaToOmega(true);
-      //SPtr<InterpolationProcessor> iProcessor(new CompressibleOffsetSquarePressureInterpolationProcessor());
-      SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-
-      UBLOG(logINFO, "SetConnectorsBlockVisitor:start");
-      grid->accept(setConnsVisitor);
-      UBLOG(logINFO, "SetConnectorsBlockVisitor:end");
-
-      unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-      int ghostLayer = 3;
-      unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-      unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-      unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-      double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-      double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-         UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-         int minInitLevel = grid->getCoarsestInitializedLevel();
-         int maxInitLevel = grid->getFinestInitializedLevel();
-         for (int level = minInitLevel; level <= maxInitLevel; level++)
-         {
-            int nobl = grid->getNumberOfBlocks(level);
-            UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-            UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-         }
-         UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-         UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-         UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-      }
-
-
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel());
-      //dynamicPointerCast<CompressibleCumulant4thOrderViscosityLBMKernel>(kernel)->setBulkViscosity(10.0*nuLB);
-      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel());
-      //dynamicPointerCast<CompressibleCumulantLBMKernel>(kernel)->setBulkOmegaToOmega(true);
-      //
-      SPtr<BCProcessor> bcProcessor(new BCProcessor());
-
-      kernel->setBCProcessor(bcProcessor);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-      if (refineLevel>0)
-      {
-         SetUndefinedNodesBlockVisitor undefNodesVisitor;
-         grid->accept(undefNodesVisitor);
-      }
-
-      intHelper.setBC();
-
-      double Ma = 0.005;
-
-      mu::Parser initRho, initVx1, initVx2; 
-      initRho.SetExpr("rhoLB + (-(rho0*epsilon^2)/2) * exp(1-(scaleFactor*(x1^2+x3^2))/R^2) + (1/(2*gamma*rho0)) * ((-(rho0*epsilon^2)/2) * exp(1-(scaleFactor*(x1^2+x3^2))/R^2))^2");
-      initRho.DefineConst("rhoLB", rhoLB);
-      initRho.DefineConst("rho0", rhoLB+1.0);
-      initRho.DefineConst("R", 0.1);
-      initRho.DefineConst("gamma", 0.1);
-      initRho.DefineConst("epsilon", 0.14);
-      initRho.DefineConst("scaleFactor", 277.777777779);
-
-      initVx1.SetExpr("-epsilon*c0*((x3*scaleFactor1)/R)*exp(0.5*(1-scaleFactor*(x1^2+x3^2)/R^2))");
-      initVx1.DefineConst("c0", 1.0/std::sqrt(3.0));
-      initVx1.DefineConst("scaleFactor", 277.777777779);
-      initVx1.DefineConst("scaleFactor1", 16.6666666667);
-      initVx1.DefineConst("epsilon", 0.14);
-      initVx1.DefineConst("R", 0.1);
-
-      initVx2.SetExpr("V0 + epsilon*c0*((x1*scaleFactor1)/R)*exp(0.5*(1-scaleFactor*(x1^2+x3^2)/R^2))");
-      initVx2.DefineConst("c0", 1.0/std::sqrt(3.0));
-      initVx2.DefineConst("scaleFactor", 277.777777779);
-      initVx2.DefineConst("scaleFactor1", 16.6666666667);
-      initVx2.DefineConst("epsilon", 0.14);
-      initVx2.DefineConst("R", 0.1);
-      initVx2.DefineConst("V0", -Ma/(1.0/std::sqrt(3.0)));
-
-
-      //initialization of distributions
-      InitDistributionsBlockVisitor initVisitor;
-      initVisitor.setRho(initRho);
-      initVisitor.setVx1(initVx1);
-      initVisitor.setVx3(initVx2);
-      grid->accept(initVisitor);
-
-      grid->accept(bcVisitor);
-
-      //Postrozess
-      SPtr<UbScheduler> geoSch(new UbScheduler(1));
-      SPtr<CoProcessor> ppgeo(new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-      ppgeo->process(0);
-      ppgeo.reset();
-
-      if (myid==0) UBLOG(logINFO, "Preprozess - end");
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      SPtr<UbScheduler> visSch(new UbScheduler(outTime));
-      SPtr<WriteMacroscopicQuantitiesCoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-      writeMQCoProcessor->process(0);
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-      std::shared_ptr<NUPSCounterCoProcessor> nupsCoProcessor(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-      //SPtr<UbScheduler> tavSch(new UbScheduler(1, 0, endTime));
-      //SPtr<TimeAveragedValuesCoProcessor> tav(new TimeAveragedValuesCoProcessor(grid, pathname, WbWriterVtkXmlBinary::getInstance(), tavSch, comm,
-      //   TimeAveragedValuesCoProcessor::Density | TimeAveragedValuesCoProcessor::Velocity | TimeAveragedValuesCoProcessor::Fluctuations));
-      //tav->setWithGhostLayer(true);
-
-      SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
-      calculator->addCoProcessor(nupsCoProcessor);
-      calculator->addCoProcessor(writeMQCoProcessor);
-      //calculator->addCoProcessor(tav);
-
-      //omp_set_num_threads(1);
-
-      if (myid==0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
-      if (myid==0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-   run();
-}
-
diff --git a/apps/cpu/CylinderSt/CMakeLists.txt b/apps/cpu/CylinderSt/CMakeLists.txt
deleted file mode 100644
index 5e13bd6602ede27bcfc4baded712194118506571..0000000000000000000000000000000000000000
--- a/apps/cpu/CylinderSt/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(cylinder_st)
-
-INCLUDE(${SOURCE_ROOT}/core/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES core)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(cylinder_st BINARY)
diff --git a/apps/cpu/CylinderSt/cylinder_st.cpp b/apps/cpu/CylinderSt/cylinder_st.cpp
deleted file mode 100644
index e25250c0b69af9cc73e8f8dd031cdeebda835309..0000000000000000000000000000000000000000
--- a/apps/cpu/CylinderSt/cylinder_st.cpp
+++ /dev/null
@@ -1,425 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "numerics/geometry3d/CoordinateTransformation3D.h"
-#include "Grid3D.h"
-#include "GenBlocksGridVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "RefineInterGbObjectsVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "MPICommunicator.h"
-#include "D3Q27ETBCProcessor.h"
-#include "SimulationParameters.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "D3Q27SetConnectorsBlockVisitor.h"
-#include "NullCommunicator.h"
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "CalculationManager.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27VelocityBCAdapter.h"
-#include "D3Q27DensityBCAdapter.h"
-#include "D3Q27BoundaryConditionAdapter.h"
-#include "StringUtil.hpp"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "D3Q27CompactInterpolationProcessor.h"
-#include "D3Q27PressureDifferencePostprocessor.h"
-#include "D3Q27IntegrateValuesHelper.h"
-#include "RestartPostprocessor.h"
-#include "SolidBlocksHelper.h"
-#include "NUPSCounterPostprocessor.h"
-#include "BlocksPostprocessor.h"
-#include "LBMKernelETD3Q27BGK.h"
-#include "EmergencyExitPostprocessor.h"
-#include "D3Q27ForcesPostprocessor.h"
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      int numOfThreads = 1;
-      double availMem = 0;
-
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "c:/temp/cylinder_st";
-         numOfThreads = 3;
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/koskuche/scratch/cylinder_st";
-         numOfThreads = 8;
-         availMem = 12.0e9;
-
-         if(myid ==0)
-         {
-           stringstream logFilename;
-           logFilename <<  pathname + "/logfile.txt";
-           UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      double dx = 0.00207051;
-
-      double L1 = 2.5;
-      double L2, L3, H;
-      L2 = L3 = H = 0.41;
-
-      LBMReal radius = 0.05;
-      LBMReal uLB = 0.05;
-      LBMReal Re = 1000.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = L2 / dx;
-      //LBMReal nueLB = (uLB*l)/Re;
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = 2;
-
-      //obstacle
-      GbObject3DPtr cylinder(new GbCylinder3D(0.5, 0.2, -0.1, 0.5, 0.2, L3+0.1, radius));
-      GbSystem3D::writeGeoObject(cylinder.get(),pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-      D3Q27InteractorPtr cylinderInt;
-
-      //bounding box
-      double d_minX1 = 0.0;
-      double d_minX2 = 0.0;
-      double d_minX3 = 0.0;
-
-      double d_maxX1 = L1;
-      double d_maxX2 = L2;
-      double d_maxX3 = L3;
-
-      double offs = dx;
-
-      //double g_minX1 = d_minX1-offs-0.499999*dx;
-      double g_minX1 = d_minX1-offs;
-      double g_minX2 = d_minX2-offs;
-      double g_minX3 = d_minX3-offs;
-
-      double g_maxX1 = d_maxX1+offs;
-      double g_maxX2 = d_maxX2+offs;
-      double g_maxX3 = d_maxX3+offs;
-
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-
-      const int blocknx1 = 10;
-      const int blocknx2 = 10;
-      const int blocknx3 = 10;
-      
-      dx = (0.41+2*dx)/(20.0*(int)blocknx2);
-
-      double blockLength = blocknx1*dx;
-
-      //refinement area
-      //double rf = cylinder->getLengthX1()/5;
-      //GbObject3DPtr refineCube(new  GbCuboid3D(cylinder->getX1Minimum()-rf, cylinder->getX2Minimum()-rf, cylinder->getX3Minimum(), 
-      //   cylinder->getX1Maximum()+6.0*rf, cylinder->getX2Maximum()+rf, cylinder->getX3Maximum()));
-      GbObject3DPtr refineCube(new  GbCuboid3D(g_minX1 + 20.0*blockLength, g_minX2 + 6.0*blockLength, cylinder->getX3Minimum(), 
-                                               g_minX1 + 33.0*blockLength, g_maxX2 - 6.0*blockLength, cylinder->getX3Maximum()));
-
-      Grid3DPtr grid(new Grid3D());
-
-      UbSchedulerPtr rSch(new UbScheduler(100000, 100000));
-      RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY));
-
-      //UbSchedulerPtr emSch(new UbScheduler(1000, 1000));
-      //EmergencyExitPostprocessor em(grid, emSch, pathname+"/checkpoints/emex.txt", rp, comm);
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if/*(cstr== NULL)*/(cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-
-         grid = rp->restart(UbSystem::stringTo<int>(opt));
-         rp->reconnect();
-
-         //cylinderInt = 
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"L = " << l );
-            UBLOG(logINFO,"v = " << uLB );
-            UBLOG(logINFO,"rho = " << rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-            UBLOG(logINFO,"Re = " << Re );
-            UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-        
-         grid->setDeltaX(dx);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-         
-         // UbTupleDouble6 bouningBox(gridCube->getX1Minimum(),gridCube->getX2Minimum(),gridCube->getX3Minimum(),
-                                   // gridCube->getX1Maximum(),gridCube->getX2Maximum(),gridCube->getX3Maximum());
-         // UbTupleInt3 blockNx(blocknx1, blocknx2, blocknx3);
-         // UbTupleInt3 gridNx(8, 16, 16);
-         // grid = Grid3DPtr(new Grid3D(bouningBox, blockNx, gridNx));
-         
-         if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-         if(myid ==0) GbSystem3D::writeGeoObject(refineCube.get(),pathname + "/geo/refineCube", WbWriterVtkXmlBinary::getInstance());
-      
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-
-         //walls
-         GbCuboid3DPtr addWallYmin (new GbCuboid3D(d_minX1-blockLength, d_minX2-blockLength, d_minX3-blockLength, d_maxX1+blockLength, d_minX2, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-      
-         GbCuboid3DPtr addWallZmin (new GbCuboid3D(d_minX1-blockLength, d_minX2-blockLength, d_minX3-blockLength, d_maxX1+blockLength, d_maxX2+blockLength, d_minX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax (new GbCuboid3D(d_minX1-blockLength, d_maxX2, d_minX3-blockLength, d_maxX1+blockLength, d_maxX2+2.0*blockLength, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-blockLength, d_minX2-blockLength, d_maxX3, d_maxX1+blockLength, d_maxX2+blockLength, d_maxX3+2.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-blockLength, d_minX2-blockLength, d_minX3-blockLength, d_minX1, d_maxX2+blockLength, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1, d_minX2-blockLength, d_minX3-blockLength, d_maxX1+2.0*blockLength, d_maxX2+blockLength, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            RefineCrossAndInsideGbObjectBlockVisitor refVisitor(refineCube, baseLevel, refineLevel-1);
-            grid->accept(refVisitor);
-
-            RatioBlockVisitor ratioVisitor(refineLevel);
-            grid->accept(ratioVisitor);
-
-            RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-            grid->accept(ratioSmoothVisitor);
-
-            OverlapBlockVisitor overlapVisitor(refineLevel);
-            grid->accept(overlapVisitor);
-
-            std::vector<int> dirs;
-            D3Q27System::getLBMDirections(dirs);
-            SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-            grid->accept(interDirsVisitor);
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         MetisPartitioningGridVisitor metisVisitor(numOfThreads, D3Q27System::B, comm, false);
-         grid->accept( metisVisitor );
-
-         SolidBlocksHelper sd(grid, comm);
-
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         cylinderInt = D3Q27InteractorPtr ( new D3Q27Interactor(cylinder, grid, bcObst,Interactor3D::SOLID));
-
-         //walls
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst,Interactor3D::SOLID));
-
-         mu::Parser fct;
-         fct.SetExpr("16*U*x2*x3*(H-x2)*(H-x3)/H^4");
-         fct.DefineConst("U", uLB);
-         fct.DefineConst("H", H);
-
-         //inflow
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-         velBCAdapter->setSecondaryBcOption(2);
-         D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-         sd.addInteractor(cylinderInt);
-         sd.addInteractor(addWallYminInt);
-         sd.addInteractor(addWallZminInt);
-         sd.addInteractor(addWallYmaxInt);
-         sd.addInteractor(addWallZmaxInt);
-         sd.addInteractor(inflowInt);
-         sd.addInteractor(outflowInt);
-         
-         sd.deleteSolidBlocks();
-         
-         grid->accept( metisVisitor );
-
-
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-
-         double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }            
-
-         LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27BGK(blocknx1, blocknx2, blocknx3, true));
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //walls
-         grid->addAndInitInteractor(addWallYminInt);
-         grid->addAndInitInteractor(addWallZminInt);
-         grid->addAndInitInteractor(addWallYmaxInt);
-         grid->addAndInitInteractor(addWallZmaxInt);
-
-         //obstacle
-         grid->addAndInitInteractor(cylinderInt);
-
-         //inflow
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         grid->addAndInitInteractor(outflowInt);
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //initialization of distributions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(1.0);
-         initVisitor.setVx1(fct);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, comm, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-         
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-      }
-
-      double outTime = 50000.0;
-      UbSchedulerPtr visSch(new UbScheduler(outTime));
-      visSch->addSchedule(1000, 1000, 10000);
-      visSch->addSchedule(10000, 10000, 50000);
-      visSch->addSchedule(1, 1, 10000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      double fdx = grid->getDeltaX(grid->getFinestInitializedLevel());
-      double point1[3] = {0.45, 0.20, 0.205};
-      double point2[3] = {0.55, 0.20, 0.205};
-
-      D3Q27IntegrateValuesHelperPtr h1(new D3Q27IntegrateValuesHelper(grid, comm, 
-         point1[0]-1.0*fdx, point1[1]-1.0*fdx, point1[2]-1.0*fdx, 
-         point1[0], point1[1], point1[2]));
-      if(myid ==0) GbSystem3D::writeGeoObject(h1->getBoundingBox().get(),pathname + "/geo/iv1", WbWriterVtkXmlBinary::getInstance());
-      D3Q27IntegrateValuesHelperPtr h2(new D3Q27IntegrateValuesHelper(grid, comm, 
-         point2[0], point2[1]-1.0*fdx, point2[2]-1.0*fdx, 
-         point2[0]+1.0*fdx, point2[1], point2[2]));
-      if(myid ==0) GbSystem3D::writeGeoObject(h2->getBoundingBox().get(),pathname + "/geo/iv2", WbWriterVtkXmlBinary::getInstance());
-      D3Q27PressureDifferencePostprocessor rhopp(grid, visSch, pathname + "/results/rho_diff.txt", h1, h2, conv, comm);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 10));
-      double area = (radius*radius*H)/fdx;
-      double v    = 4.0*uLB/9.0;
-      D3Q27ForcesPostprocessor fp(grid, visSch, pathname + "/results/forces.txt", cylinderInt, comm, rhoLB, v, area, D3Q27ForcesPostprocessor::X, D3Q27ForcesPostprocessor::Y);
-
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double endTime = 1000001.0;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/DHIT/CMakeLists.txt b/apps/cpu/DHIT/CMakeLists.txt
deleted file mode 100644
index e1ffbe8e27f2b9260b10381ec0d29988248cbcd0..0000000000000000000000000000000000000000
--- a/apps/cpu/DHIT/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(dhit)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(dhit BINARY)
diff --git a/apps/cpu/DHIT/dhit.cfg b/apps/cpu/DHIT/dhit.cfg
deleted file mode 100644
index d7c0cfd4f438c0a29505b1a00e8a96ab5b262689..0000000000000000000000000000000000000000
--- a/apps/cpu/DHIT/dhit.cfg
+++ /dev/null
@@ -1,21 +0,0 @@
-pathname = d:/temp/DHIT_Green
-numOfThreads = 4
-availMem = 11e9
-
-#Grid
-length =  128 128 128 
-blocknx = 32 32 32
-
-initTime = 10
-
-outTime = 1
-endTime = 10
-
-logToFile = false
-
-#Simulation
-initFile = d:/Projects/DHIT/Velocities.txt
-nuLB = 1.2395e-2
-uRMS = 0.0234
-lambda = 0.1
-
diff --git a/apps/cpu/DHIT/dhit.cpp b/apps/cpu/DHIT/dhit.cpp
deleted file mode 100644
index 57d9bdca7f1674621ec675f950061bda30d35bb7..0000000000000000000000000000000000000000
--- a/apps/cpu/DHIT/dhit.cpp
+++ /dev/null
@@ -1,269 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "VirtualFluids.h"
-
-using namespace std;
-
-
-void run(string configname)
-{
-   try
-   {
-      //Sleep(30000);
-
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathname = config.getString("pathname");
-      int             numOfThreads = config.getInt("numOfThreads");
-      vector<int>     blocknx = config.getVector<int>("blocknx");
-      double          endTime = config.getDouble("endTime");
-      double          outTime = config.getDouble("outTime");
-      double          availMem = config.getDouble("availMem");
-      vector<double>  length = config.getVector<double>("length");
-      bool            logToFile = config.getBool("logToFile");
-      string          initFile = config.getString("initFile");
-      double          nuLB = config.getDouble("nuLB");
-      double          uRMS = config.getDouble("uRMS");
-      double          lambda = config.getDouble("lambda");
-      double          initTime = config.getDouble("initTime");
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathname.c_str();
-            mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if (myid == 0)
-         {
-            stringstream logFilename;
-            logFilename << pathname + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      //LBMReal uLB = 0.032;
-      LBMReal dx = 1.0;
-      LBMReal rhoLB = 0.0;
-
-
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      //bounding box
-      double g_minX1 = 0.0;
-      double g_minX2 = 0.0;
-      double g_minX3 = 0.0;
-
-      double g_maxX1 = length[0];//-1.0;
-      double g_maxX2 = length[1];//-1.0;
-      double g_maxX3 = length[2];//-1.0;
-
-      //geometry
-      SPtr<GbObject3D> box(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(box.get(), pathname + "/geo/box", WbWriterVtkXmlBinary::getInstance());
-
-      SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-
-      double blockLength = blocknx[0] * dx;
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      if (myid == 0)
-      {
-         //UBLOG(logINFO, "uLb = " << uLB);
-         UBLOG(logINFO, "rho = " << rhoLB);
-         UBLOG(logINFO, "nuLb = " << nuLB);
-         UBLOG(logINFO, "uRMS = " << uRMS);
-         UBLOG(logINFO, "lambda = " << lambda);
-         UBLOG(logINFO, "Re = " << (uRMS*lambda)/nuLB);
-         UBLOG(logINFO, "dx = " << dx);
-         UBLOG(logINFO, "length = " << length[0] << " " << length[1] << " " << length[2]);
-         UBLOG(logINFO, "blocknx = " << blocknx[0] << " " << blocknx[1] << " " << blocknx[2]);
-         UBLOG(logINFO, "number of processes = " << comm->getNumberOfProcesses());
-         UBLOG(logINFO, "number of threads = " << numOfThreads);
-         UBLOG(logINFO, "Preprocess - start");
-      }
-
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-      grid->setPeriodicX1(true);
-      grid->setPeriodicX2(true);
-      grid->setPeriodicX3(true);
-
-      if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-      GenBlocksGridVisitor genBlocks(gridCube);
-      grid->accept(genBlocks);
-
-      WriteBlocksSPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-      SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW));
-      InteractorsHelper intHelper(grid, metisVisitor);
-      //intHelper.addInteractor(boxInt);
-      intHelper.selectBlocks();
-
-      ppblocks->process(0);
-      ppblocks.reset();
-
-      //set connectors
-      InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-      SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-      grid->accept(setConnsVisitor);
-
-      //domain decomposition for threads
-      PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      grid->accept(pqPartVisitor);
-
-      unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-      int ghostLayer = 3;
-      unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-      unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-      unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-      double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-      double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-         UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-         int minInitLevel = grid->getCoarsestInitializedLevel();
-         int maxInitLevel = grid->getFinestInitializedLevel();
-         for (int level = minInitLevel; level <= maxInitLevel; level++)
-         {
-            int nobl = grid->getNumberOfBlocks(level);
-            UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-            UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-         }
-         UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-         UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-         UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-      }
-
-      SPtr<LBMKernel> kernel;
-
-      //kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-      kernel = SPtr<LBMKernel>(new InitDensityLBMKernel(blocknx[0], blocknx[1], blocknx[2]));
-
-      SPtr<BCProcessor> bcProc(new BCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-      intHelper.setBC();
-
-      //initialization of distributions
-      InitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-      double u_LB = 0.01;
-      mu::Parser inflowProfileVx1, inflowProfileVx2, inflowProfileVx3;
-      inflowProfileVx1.DefineConst("U", u_LB);
-      inflowProfileVx1.DefineConst("PI", PI);
-      inflowProfileVx1.DefineConst("L1", g_maxX1-g_minX1);
-      inflowProfileVx1.DefineConst("L2", g_maxX2-g_minX2);
-      inflowProfileVx1.DefineConst("L3", g_maxX3-g_minX3);
-      inflowProfileVx1.SetExpr("U*cos(2.0*PI*x1/L1)*sin(2.0*PI*x2/L2)*sin(2.0*PI*x3/L3)");
-      inflowProfileVx2.DefineConst("U", u_LB);
-      inflowProfileVx2.DefineConst("PI", PI);
-      inflowProfileVx2.DefineConst("L1", g_maxX1-g_minX1);
-      inflowProfileVx2.DefineConst("L2", g_maxX2-g_minX2);
-      inflowProfileVx2.DefineConst("L3", g_maxX3-g_minX3);
-      inflowProfileVx2.SetExpr("-U*cos(2.0*PI*x1/L1)*sin(2.0*PI*x2/L2)*cos(2.0*PI*x3/L3)");
-      inflowProfileVx3.DefineConst("U", u_LB);
-      inflowProfileVx3.DefineConst("PI", PI);
-      inflowProfileVx3.DefineConst("L1", g_maxX1-g_minX1);
-      inflowProfileVx3.DefineConst("L2", g_maxX2-g_minX2);
-      inflowProfileVx3.DefineConst("L3", g_maxX3-g_minX3);
-      inflowProfileVx3.SetExpr("-U/2.0*sin(8.0*PI*(x1)/(L1))*cos(8.0*PI*(x3)/L3)");
-      initVisitor.setVx1(inflowProfileVx1);
-      initVisitor.setVx2(inflowProfileVx2);
-      initVisitor.setVx3(inflowProfileVx3);
-      //InitDistributionsFromFileBlockVisitor initVisitor(nuLB, rhoLB, initFile);
-      grid->accept(initVisitor);
-
-      //boundary conditions grid
-      {
-         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         WriteBoundaryConditionsSPtr<CoProcessor> ppgeo(
-            new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-         grid->coProcess(0);
-      }
-
-      if (myid == 0) UBLOG(logINFO, "Preprocess - end");
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      SPtr<UbScheduler> outputSch(new UbScheduler(outTime));
-      WriteMacroscopicQuantitiesCoProcessor pp(grid, outputSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-
-      const SPtr<ConcreteCalculatorFactory> calculatorFactory = std::make_shared<ConcreteCalculatorFactory>(outputSch);
-      CalculationManagerPtr initialisation(new CalculationManager(grid, numOfThreads, endTime, calculatorFactory, CalculatorType::HYBRID));
-      if (myid == 0) UBLOG(logINFO, "Initialisation-start");
-      initialisation->calculate();
-      if (myid == 0) UBLOG(logINFO, "Initialisation-end");
-
-
-      kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], IncompressibleCumulantLBMKernel::NORMAL));
-      kernel->setBCProcessor(bcProc);
-      SetKernelBlockVisitor kernelVisitor2(kernel, nuLB, availMem, needMem, SetKernelBlockVisitor::ChangeKernel);
-      grid->accept(kernelVisitor2);
-
-      SPtr<UbScheduler> visSch(new UbScheduler(outTime));
-
-      if (myid==0) UBLOG(logINFO, "Simulation-start");
-      grid->setTimeStep(initTime+1.0);
-
-      const SPtr<ConcreteCalculatorFactory> calculatorFactory2 = std::make_shared<ConcreteCalculatorFactory>(visSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, calculatorFactory2, CalculatorType::HYBRID));
-      calculation->calculate();
-      if (myid==0) UBLOG(logINFO, "Simulation-end");
-
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout << "Configuration file is missing!" << endl;
-      }
-   }
-
-}
-
diff --git a/apps/cpu/DLR-F16-Porous/CMakeLists.txt b/apps/cpu/DLR-F16-Porous/CMakeLists.txt
deleted file mode 100644
index 915b463bc2ae8dd535dff489381544b904c7a85e..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16-Porous/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(f16porous)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(f16porous BINARY)
diff --git a/apps/cpu/DLR-F16-Porous/f16-porous.cfg b/apps/cpu/DLR-F16-Porous/f16-porous.cfg
deleted file mode 100644
index e545b1cf1a1ce68de7c0046401cabb281e2fe021..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16-Porous/f16-porous.cfg
+++ /dev/null
@@ -1,65 +0,0 @@
-pathOut = d:/temp/DLR-F16-Porous
-pathGeo = d:/Projects/SFB880/DLR-F16/Geometry
-
-fngFileNoTapeFull = F16_broad_Quad_noTape_full.stl
-fngFileFull = F16_broad_Quad_thickTape_full.stl
-
-fngFileNoTapeBody = F16_broad_Quad_noTape_body.stl
-fngFileBody = F16_broad_Quad_thickTape_body.stl
-
-fngFileTE = F16_broad_Quad_trailingEdge.stl
-
-#pmNX = 537 2286 1122     
-pmNX = 537 2286 10     
-lthreshold  = 11538  
-uthreshold  = 65535  
-voxelDeltaX = 0.013393e-3 0.013393e-3 0.013393e-3  
-pathGeoTEvoxel = d:/Projects/SFB880/DLR-F16/A4_Forschungsdaten_Scan_Ganzer_Abschnitt_Hinterkante_Tychsen/CT-2017-019_2/F16-TE-PA80-110-537x2286x10_11538_rotate.raw
-
-accuracy = 0
-
-numOfThreads = 1
-availMem = 3.5e9
-
-logToFile = false
-
-#x1min x1max x2min x2max x3min x3max [m]
-boundingBox = -0.3 1.17 0.0 0.03 -1.17 1.17
-
-blockNx = 10 10 10
-
-refineLevel = 6
-
-#deltaXfine = 0.003 #level 0
-#deltaXfine = 0.0015 #level 1
-#deltaXfine = 0.00075 #level 2
-#deltaXfine = 0.000375 #level 3
-#deltaXfine = 0.0001875 #level 4
-#deltaXfine = 0.00009375 #level 5
-deltaXfine = 0.000046875 #level 6
-#deltaXfine = 0.0000234375 #level 7
-
-startDistance = -1.0e-3
-refineDistance = 0.6e-3
-
-writeBlocks = true
-
-newStart = true
-restartStep = 30
-
-nupsStep = 1000 1000 10000000
-
-cpStep = 40
-cpStart = 40
-
-outTimeStep = 40
-outTimeStart = 40
-
-timeAvStart = 0
-timeAvStop  = 40000
-
-endTime = 40
-
-
-
-
diff --git a/apps/cpu/DLR-F16-Porous/f16.cpp b/apps/cpu/DLR-F16-Porous/f16.cpp
deleted file mode 100644
index cbc94322586f6d6a03a61d237c2f4712a234ce80..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16-Porous/f16.cpp
+++ /dev/null
@@ -1,774 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <PointerDefinitions.h>
-#include "VirtualFluids.h"
-#include <omp.h>
-using namespace std;
-
-
-//////////////////////////////////////////////////////////////////////////
-void initPteBlock(SPtr<Grid3D> grid, SPtr<Block3D> block)
-{
-   int gridRank = grid->getRank();
-   int blockRank = block->getRank();
-
-   if (blockRank == gridRank)
-   {
-      SPtr<ILBMKernel> kernel = block->getKernel();
-      if (!kernel)
-         throw UbException(UB_EXARGS, "The LBM kernel isn't exist in block: "+block->toString());
-
-      SPtr<BCArray3D> bcArray = kernel->getBCProcessor()->getBCArray();
-      SPtr<DistributionArray3D> distributions = kernel->getDataSet()->getFdistributions();
-
-      LBMReal f[D3Q27System::ENDF+1];
-
-      size_t nx1 = distributions->getNX1();
-      size_t nx2 = distributions->getNX2();
-      size_t nx3 = distributions->getNX3();
-
-      for (int ix3=0; ix3<bcArray->getNX3(); ix3++)
-         for (int ix2=0; ix2<bcArray->getNX2(); ix2++)
-            for (int ix1=0; ix1<bcArray->getNX1(); ix1++)
-            {
-               D3Q27System::calcCompFeq(f, 0, 0, 0, 0);
-               distributions->setDistribution(f, ix1, ix2, ix3);
-               distributions->setDistributionInv(f, ix1, ix2, ix3);
-            }
-      block->setActive(true);
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void initPteFs(SPtr<Grid3D> grid, vector<SPtr<Block3D>>& vectorTE)
-{
-   for (SPtr<Block3D> block : vectorTE)
-   {
-      initPteBlock(grid, block);
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathOut = config.getValue<string>("pathOut");
-      string          pathGeo = config.getValue<string>("pathGeo");
-      string          fngFileNoTapeFull = config.getValue<string>("fngFileNoTapeFull");
-      string          fngFileFull = config.getValue<string>("fngFileFull");
-      string          fngFileNoTapeBody = config.getValue<string>("fngFileNoTapeBody");
-      string          fngFileBody = config.getValue<string>("fngFileBody");
-      string          fngFileTE = config.getValue<string>("fngFileTE");
-
-      int             accuracy = config.getValue<int>("accuracy");
-      int             numOfThreads = config.getValue<int>("numOfThreads");
-      vector<int>     blockNx = config.getVector<int>("blockNx");
-      vector<double>  boundingBox = config.getVector<double>("boundingBox");
-      double          restartStep = config.getValue<double>("restartStep");
-      double          cpStart = config.getValue<double>("cpStart");
-      double          cpStep = config.getValue<double>("cpStep");
-      int             endTime = config.getValue<int>("endTime");
-      double          outTimeStep = config.getValue<double>("outTimeStep");
-      double          outTimeStart = config.getValue<double>("outTimeStart");
-      double          availMem = config.getValue<double>("availMem");
-      int             refineLevel = config.getValue<int>("refineLevel");
-      bool            logToFile = config.getValue<bool>("logToFile");
-      double          deltaXfine = config.getValue<double>("deltaXfine");
-      double          refineDistance = config.getValue<double>("refineDistance");
-      double          startDistance = config.getValue<double>("startDistance");
-      vector<double>  nupsStep = config.getVector<double>("nupsStep");
-      bool            newStart = config.getValue<bool>("newStart");
-      bool            writeBlocks = config.getValue<bool>("writeBlocks");
-
-      double          timeAvStart       = config.getValue<double>("timeAvStart");
-      double          timeAvStop        = config.getValue<double>("timeAvStop");
-
-      vector<int>     pmNX              = config.getVector<int>("pmNX");
-      double          lthreshold        = config.getValue<double>("lthreshold");
-      double          uthreshold        = config.getValue<double>("uthreshold");
-      vector<float>   voxelDeltaX       = config.getVector<float>("voxelDeltaX");
-      string          pathGeoTEvoxel    = config.getValue<string>("pathGeoTEvoxel");
-      
-
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid==0)
-         {
-            const char* str = pathOut.c_str();
-            mkdir(str, S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH);
-         }
-#endif 
-
-         if (myid==0)
-         {
-            stringstream logFilename;
-            logFilename<<pathOut+"/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Point 1");
-         UBLOG(logINFO, "PID = "<<myid<<" Total Physical Memory (RAM): "<<Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used: "<<Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-      }
-
-
-      //the geometry is in mm
-
-      double g_minX1 = boundingBox[0];//*1000.0;
-      double g_minX2 = boundingBox[2];//*1000.0;
-      double g_minX3 = boundingBox[4];//*1000.0;
-      double g_maxX1 = boundingBox[1];//*1000.0;
-      double g_maxX2 = boundingBox[3];//*1000.0;
-      double g_maxX3 = boundingBox[5];//*1000.0;
-      //deltaXfine *=1000.0;
-
-      //////////////////////////////////////////////////////////////////////////
-      double deltaXcoarse = deltaXfine*(double)(1<<refineLevel);
-      //////////////////////////////////////////////////////////////////////////
-      double blockLength = (double)blockNx[0]*deltaXcoarse;
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-      double Re = 1e6;
-
-      double rhoLB = 0.0;
-      double rhoReal = 1.2041; //(kg/m3)
-      //double nueReal = 153.5e-7; //m^2/s
-      double uReal = 55; //m/s
-      double lReal = 0.3;//m
-      //double uReal = Re*nueReal / lReal;
-      double nuReal = (uReal*lReal)/Re; //m^2/s
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-      double Ma = 0.15;//Ma-Real!
-      double csReal = uReal / Ma;
-      double hLB = lReal / deltaXcoarse;
-
-      LBMUnitConverter unitConverter(lReal, csReal, rhoReal, hLB);
-
-      double uLB = uReal   * unitConverter.getFactorVelocityWToLb();
-      double nuLB = nuReal * unitConverter.getFactorViscosityWToLb();
-      double lLB = lReal/deltaXcoarse;
-      //double nuLB = (uLB*lLB)/Re; //0.005;
-      //double nuLB = 0.005;
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      ////////////////////////////////////////////////////////////////////////
-      //Grid
-      //////////////////////////////////////////////////////////////////////////
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      //BC adapters
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new ThinWallNoSlipBCAlgorithm()));
-
-      //SPtr<BCAdapter> slipBCAdapter(new SlipBCAdapter());
-      //slipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new SlipBCAlgorithm()));
-
-      mu::Parser fct;
-      fct.SetExpr("U");
-      fct.DefineConst("U", uLB);
-      SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-      velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityWithDensityBCAlgorithm()));
-
-      //fct.SetExpr("U");
-      //fct.DefineConst("U", 0.01);
-      //SPtr<BCAdapter> velBCAdapterOut(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-      //velBCAdapterOut->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityBCAlgorithm()));
-
-      SPtr<BCAdapter> outflowBCAdapter(new DensityBCAdapter(rhoLB));
-      outflowBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingOutflowBCAlgorithm()));
-
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      bcVisitor.addBC(velBCAdapter);
-      bcVisitor.addBC(outflowBCAdapter);
-
-      SPtr<BCProcessor> bcProc;
-      //bcProc = SPtr<BCProcessor>(new BCProcessor());
-      bcProc = SPtr<BCProcessor>(new ThinWallBCProcessor());
-
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel());
-      //t = 21.8, P = 1.0145 atm, Relative Humidity = 45.8, Second Coefficient of Viscosity = 3120
      //Ash, R. L., Zuckerwar, A. J., & Zheng, Z. (1991). Second coefficient of viscosity in air.
-      double bulckViscosity = 3120 * nuLB;
-      dynamicPointerCast<CompressibleCumulant4thOrderViscosityLBMKernel>(kernel)->setBulkViscosity(bulckViscosity);
-      kernel->setBCProcessor(bcProc);
-
-      SPtr<LBMKernel> spKernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel());
-      spKernel->setBCProcessor(bcProc);
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<UbScheduler> rSch(new UbScheduler(cpStep, cpStart));
-      SPtr<MPIIORestartCoProcessor> restartCoProcessor(new MPIIORestartCoProcessor(grid, rSch, pathOut, comm));
-      restartCoProcessor->setLBMKernel(kernel);
-      restartCoProcessor->setBCProcessor(bcProc);
-
-      SPtr<UbScheduler> mSch(new UbScheduler(cpStep, cpStart));
-      SPtr<MPIIOMigrationCoProcessor> migCoProcessor(new MPIIOMigrationCoProcessor(grid, mSch, pathOut+"/mig", comm));
-      migCoProcessor->setLBMKernel(kernel);
-      migCoProcessor->setBCProcessor(bcProc);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Point 2");
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-      }
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "Parameters:");
-         UBLOG(logINFO, "* Re                  = "<<Re);
-         UBLOG(logINFO, "* Ma                  = "<<Ma);
-         UBLOG(logINFO, "* velocity (uReal)    = "<<uReal<<" m/s");
-         UBLOG(logINFO, "* viscosity (nuReal)  = "<<nuReal<<" m^2/s");
-         UBLOG(logINFO, "* chord length (lReal)= "<<lReal<<" m");
-         UBLOG(logINFO, "* velocity LB (uLB)   = "<<uLB);
-         UBLOG(logINFO, "* viscosity LB (nuLB) = "<<nuLB);
-         UBLOG(logINFO, "* chord length (l_LB) = "<<lLB<<" dx_base");
-         UBLOG(logINFO, "* dx_base             = "<<deltaXcoarse<<" m");
-         UBLOG(logINFO, "* dx_refine           = "<<deltaXfine<<" m");
-         UBLOG(logINFO, "* blocknx             = "<<blockNx[0]<<"x"<<blockNx[1]<<"x"<<blockNx[2]);
-         UBLOG(logINFO, "* refineDistance      = "<<refineDistance);
-         UBLOG(logINFO, "* number of levels    = "<<refineLevel+1);
-         UBLOG(logINFO, "* number of threads   = "<<numOfThreads);
-         UBLOG(logINFO, "* number of processes = "<<comm->getNumberOfProcesses());
-         UBLOG(logINFO, "* path = "<<pathOut);
-       }
-
-      if (newStart)
-      {
-         ////////////////////////////////////////////////////////////////////////
-         //define grid
-         //////////////////////////////////////////////////////////////////////////
-         grid->setDeltaX(deltaXcoarse);
-         grid->setBlockNX(blockNx[0], blockNx[1], blockNx[2]);
-
-         SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid==0) GbSystem3D::writeGeoObject(gridCube.get(), pathOut+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         grid->setPeriodicX1(false);
-         grid->setPeriodicX2(true);
-         grid->setPeriodicX3(false);
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Preprocessing - start");
-            UBLOG(logINFO, "PID = "<<myid<<" Point 3");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-         //////////////////////////////////////////////////////////////////////////
-
-
-         //voxelMatrixTransformation(pmNX, lthreshold, uthreshold, voxelDeltaX, pathGeoTEvoxel, pathOut, comm);
-
-         //return;
-
-
-         SPtr<GbTriFaceMesh3D> fngMeshTE;
-         if (myid==0) UBLOG(logINFO, "Read fngMeshTE:start");
-         fngMeshTE = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+fngFileTE, "fngMeshTE", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-         if (myid==0) UBLOG(logINFO, "Read fngMeshTE:end");
-         fngMeshTE->rotate(0.0, 0.5, 0.0);
-         fngMeshTE->translate(0.0, 0.0, 0.0012 - 0.0000192);
-         if (myid==0) GbSystem3D::writeGeoObject(fngMeshTE.get(), pathOut+"/geo/fngMeshTE", WbWriterVtkXmlBinary::getInstance());
-
-         SPtr<Interactor3D> fngIntrTE = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshTE, grid, noSlipBCAdapter, Interactor3D::SOLID, (Interactor3D::Accuracy)accuracy));
-
-         double zTranslate = -0.0001308;
-
-         if (refineLevel>0 && myid==0 && writeBlocks)
-         {
-            if (myid==0) UBLOG(logINFO, "Refinement - start");
-            int rank = grid->getRank();
-            grid->setRank(0);
-
-            SPtr<GbTriFaceMesh3D> fngMeshNoTapeFull;
-            if (myid==0) UBLOG(logINFO, "Read fngFileNoTapeFull:start");
-            fngMeshNoTapeFull = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+fngFileNoTapeFull, "fngMeshNoTapeBody", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read fngFileNoTapeFull:end");
-            fngMeshNoTapeFull->rotate(0.0, 0.5, 0.0);
-            if (myid==0) GbSystem3D::writeGeoObject(fngMeshNoTapeFull.get(), pathOut+"/geo/fngMeshNoTapeFull", WbWriterVtkXmlBinary::getInstance());
-
-            SPtr<Interactor3D> fngIntrNoTapeFull = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshNoTapeFull, grid, noSlipBCAdapter, Interactor3D::SOLID, (Interactor3D::Accuracy)accuracy));
-
-            int level;
-
-			level = 1;
-			if (refineLevel - level >= 0)
-			{
-				dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrNoTapeFull)->refineBlockGridToLevel(level, startDistance, refineDistance);
-			}
-
-            level = 2;
-			if (refineLevel - level >= 0)
-			{
-				dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrNoTapeFull)->refineBlockGridToLevel(level, startDistance, refineDistance);
-			}
-
-            level = 3;
-            if (refineLevel - level >= 0)
-            {
-               dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrNoTapeFull)->refineBlockGridToLevel(level, startDistance, 24.0*refineDistance);
-            }
-
-            level = 4;
-            if (refineLevel - level >= 0)
-            {
-               dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrNoTapeFull)->refineBlockGridToLevel(level, startDistance, 12.0*refineDistance);
-            }
-
-            level = 5;
-            if (refineLevel - level >= 0)
-            {
-               dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrNoTapeFull)->refineBlockGridToLevel(level, startDistance, 6.0*refineDistance);
-            }
-
-            level = 6;
-            if (refineLevel - level >= 0)
-            {
-               dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrNoTapeFull)->refineBlockGridToLevel(level, startDistance, 3.0*refineDistance);
-               RefineCrossAndInsideGbObjectBlockVisitor refVisitorTE(fngMeshTE, level);
-               grid->accept(refVisitorTE);
-            }
-
-            ///////delete solid blocks
-            if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - start");
-
-            SPtr<GbTriFaceMesh3D> fngMeshNoTapeBody;
-            if (myid==0) UBLOG(logINFO, "Read fngFileNoTapeBody:start");
-            fngMeshNoTapeBody = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+fngFileNoTapeBody, "fngMeshNoTapeBody", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read fngFileNoTapeBody:end");
-            fngMeshNoTapeBody->rotate(0.0, 0.5, 0.0);
-            fngMeshNoTapeBody->translate(0.0, 0.0, zTranslate);
-            //fngMeshNoTapeBody->translate(0.0, 0.0, -0.00011);
-            
-            if (myid==0) GbSystem3D::writeGeoObject(fngMeshNoTapeBody.get(), pathOut+"/geo/fngMeshNoTapeBody", WbWriterVtkXmlBinary::getInstance());
-
-            SPtr<Interactor3D> fngIntrNoTapeBody = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshNoTapeBody, grid, noSlipBCAdapter, Interactor3D::SOLID, (Interactor3D::Accuracy)accuracy));//, Interactor3D::POINTS));
-
-            SetSolidBlocksBlockVisitor v(fngIntrNoTapeBody);
-            grid->accept(v);
-            std::vector<SPtr<Block3D>>& sb = fngIntrNoTapeBody->getSolidBlockSet();
-            for (SPtr<Block3D> block : sb)
-            {
-               grid->deleteBlock(block);
-            }
-            fngIntrNoTapeBody->removeSolidBlocks();
-            fngIntrNoTapeBody->removeBcBlocks();
-
-
-            if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - end");
-            //////////////////////////////////////////
-
-            {
-               WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-               ppblocks.process(0);
-            }
-
-            grid->setRank(rank);
-
-            RatioBlockVisitor ratioVisitor(refineLevel);
-            CheckRatioBlockVisitor checkRatio(refineLevel);
-            int count = 0;
-
-            do {
-               if (myid==0) UBLOG(logINFO, "ratioVisitor - start");
-               grid->accept(ratioVisitor);
-               if (myid==0) UBLOG(logINFO, "ratioVisitor - end");
-               if (myid==0) UBLOG(logINFO, "checkRatio - start");
-               checkRatio.resetState();
-               grid->accept(checkRatio);
-               if (myid==0) UBLOG(logINFO, "checkRatio - end");
-               if (myid==0) UBLOG(logINFO, "count = "<<count++<<" state = "<<checkRatio.getState());
-            } while (!checkRatio.getState());
-
-
-            {
-               WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-               ppblocks.process(1);
-            }
-
-            OverlapBlockVisitor overlapVisitor(refineLevel, false);
-            grid->accept(overlapVisitor);
-
-            if (myid==0) UBLOG(logINFO, "Refinement - end");
-         }
-         else if (refineLevel>0 && !writeBlocks)
-         {
-            migCoProcessor->readBlocks(0);
-         }
-         grid->updateDistributedBlocks(comm);
-
-         std::vector<int> dirs;
-         for (int i = D3Q27System::E; i<=D3Q27System::TS; i++)
-         {
-            dirs.push_back(i);
-         }
-         SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-         grid->accept(interDirsVisitor);
-
-         //walls
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathOut+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathOut+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //wall interactors
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, velBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoInflow.get(), pathOut+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathOut+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         SPtr<D3Q27Interactor> inflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //outflow
-         SPtr<D3Q27Interactor> outflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, outflowBCAdapter, Interactor3D::SOLID));
-
-         //airfoil
-         SPtr<GbTriFaceMesh3D> fngMeshBody;
-         if (myid==0) UBLOG(logINFO, "Read fngFileBody:start");
-         fngMeshBody = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+fngFileBody, "fngMeshBody", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-         if (myid==0) UBLOG(logINFO, "Read fngFileBody:end");
-         fngMeshBody->rotate(0.0, 0.5, 0.0);
-         //fngMeshBody->translate(0.0, 0.0, -0.00011);
-         fngMeshBody->translate(0.0, 0.0, zTranslate);
-         if (myid==0) GbSystem3D::writeGeoObject(fngMeshBody.get(), pathOut+"/geo/fngMeshBody", WbWriterVtkXmlBinary::getInstance());
-
-         SPtr<Interactor3D> fngIntrBody = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshBody, grid, noSlipBCAdapter, Interactor3D::SOLID, (Interactor3D::Accuracy)accuracy));
-         fngMeshBody.reset();
-
-         GbCuboid3DPtr geoAddWallP(new GbCuboid3D(0.269, g_minX2-blockLength, 0.0016, 0.27028, g_maxX2+blockLength, 0.0076));
-         if (myid==0) GbSystem3D::writeGeoObject(geoAddWallP.get(), pathOut+"/geo/geoAddWallP", WbWriterVtkXmlASCII::getInstance());
-         SPtr<D3Q27Interactor> addWallPIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoAddWallP, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         //////////////////////////////////////////////////////////////////////////
-         vector<double> origin(3);
-         origin[0] = 0;
-         origin[1] = 0;
-         origin[2] = 0;
-
-         double vmZtranslate = 0.0042 - 0.007587;
-
-         SPtr<GbVoxelMatrix3D> voxelMatrix1(new GbVoxelMatrix3D(pmNX[0], pmNX[1], pmNX[2], 0, lthreshold, uthreshold));
-         voxelMatrix1->readMatrixFromRawFile<unsigned short>(pathGeoTEvoxel, GbVoxelMatrix3D::BigEndian);
-         voxelMatrix1->setVoxelMatrixDelta(voxelDeltaX[0], voxelDeltaX[1], voxelDeltaX[2]);
-         voxelMatrix1->setVoxelMatrixMininum(origin[0], origin[1], origin[2]);
-
-         voxelMatrix1->rotate90aroundZ();
-         voxelMatrix1->rotate90aroundZ();
-         voxelMatrix1->rotate90aroundZ();
-         voxelMatrix1->rotate90aroundX();
-         voxelMatrix1->translate(0.2813, 0, vmZtranslate);
-         double offset = ((g_maxX2-g_minX2)/2.0 - voxelMatrix1->getLengthX2())/2.0;
-         voxelMatrix1->setVoxelMatrixMinX2(g_minX2+offset);
-
-         if (myid==0) voxelMatrix1->writeToVTKImageDataAppended(pathOut+"/geo/fngTEvoxel1");
-
-         SPtr<D3Q27Interactor> fngIntrTEvoxel1 = SPtr<D3Q27Interactor>(new D3Q27Interactor(voxelMatrix1, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         SPtr<GbVoxelMatrix3D> voxelMatrix2(new GbVoxelMatrix3D(pmNX[0], pmNX[1], pmNX[2], 0, lthreshold, uthreshold));
-         voxelMatrix2->readMatrixFromRawFile<unsigned short>(pathGeoTEvoxel, GbVoxelMatrix3D::BigEndian);
-         voxelMatrix2->setVoxelMatrixDelta(voxelDeltaX[0], voxelDeltaX[1], voxelDeltaX[2]);
-         voxelMatrix2->setVoxelMatrixMininum(origin[0], origin[1], origin[2]);
-
-         voxelMatrix2->rotate90aroundZ();
-         voxelMatrix2->rotate90aroundZ();
-         voxelMatrix2->rotate90aroundZ();
-         voxelMatrix2->rotate90aroundX();
-         voxelMatrix2->translate(0.2813, 0, vmZtranslate);
-         voxelMatrix2->mirrorY();
-         voxelMatrix2->setVoxelMatrixMinX2(voxelMatrix1->getX2Maximum());
-
-         if (myid==0) voxelMatrix2->writeToVTKImageDataAppended(pathOut+"/geo/fngTEvoxel2");
-
-         SPtr<D3Q27Interactor> fngIntrTEvoxel2 = SPtr<D3Q27Interactor>(new D3Q27Interactor(voxelMatrix2, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         //////////////////////////////////////////////////////////////////////////
-
-         ////////////////////////////////////////////
-         //METIS
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(inflowIntr);
-         intHelper.addInteractor(outflowIntr);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(fngIntrBody);
-         intHelper.addInteractor(addWallPIntr);
-         intHelper.addInteractor(fngIntrTEvoxel1);
-         intHelper.addInteractor(fngIntrTEvoxel2);
-         intHelper.selectBlocks();
-
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - end");
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 4");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-         //////////////////////////////////////
-
-         unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-         int ghostLayer = 3;
-         unsigned long long numberOfNodesPerBlock = (unsigned long long)(blockNx[0])* (unsigned long long)(blockNx[1])* (unsigned long long)(blockNx[2]);
-         unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-         unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blockNx[0]+ghostLayer) * (blockNx[1]+ghostLayer) * (blockNx[2]+ghostLayer);
-         double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27*sizeof(double)+sizeof(int)+sizeof(float)*4));
-         double needMem = needMemAll/double(comm->getNumberOfProcesses());
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Number of blocks = "<<numberOfBlocks);
-            UBLOG(logINFO, "Number of nodes  = "<<numberOfNodes);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level "<<level<<" = "<<nobl);
-               UBLOG(logINFO, "Number of nodes for level "<<level<<" = "<<nobl*numberOfNodesPerBlock);
-            }
-            UBLOG(logINFO, "Necessary memory  = "<<needMemAll<<" bytes");
-            UBLOG(logINFO, "Necessary memory per process = "<<needMem<<" bytes");
-            UBLOG(logINFO, "Available memory per process = "<<availMem<<" bytes");
-         }
-
-         if (writeBlocks)
-         {
-            migCoProcessor->writeBlocks(0);
-         }
-
-         {
-            WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppblocks.process(2);
-         }
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (myid==0) UBLOG(logINFO, "SetKernelBlockVisitor:end");
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 5");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-
-         if (refineLevel>0)
-         {
-            SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         if (myid==0) UBLOG(logINFO, "SetUndefinedNodesBlockVisitor:end");
-
-         //BC
-         intHelper.setBC();
-
-         if (myid==0) UBLOG(logINFO, "intHelper.setBC():end");
-         if (myid==0) UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-
-         if (myid==0) UBLOG(logINFO, "vectorTE:start");
-         SetSolidBlocksBlockVisitor v1(fngIntrTE);
-         grid->accept(v1);
-         SetBcBlocksBlockVisitor v2(fngIntrTE);
-         grid->accept(v2);
-         std::vector<SPtr<Block3D>>& vectorTE = fngIntrTE->getSolidBlockSet();
-         std::vector<SPtr<Block3D>>& bb = fngIntrTE->getBcBlocks();
-         vectorTE.insert(vectorTE.end(), bb.begin(), bb.end());
-         if (myid==0) UBLOG(logINFO, "vectorTE:end");
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 6");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-
-         //initialization of distributions
-         InitDistributionsBlockVisitor initVisitor;
-         initVisitor.setVx1(fct);
-         grid->accept(initVisitor);
-
-         initPteFs(grid, vectorTE);
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 7");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-
-         //Post process
-         {
-            SPtr<UbScheduler> geoSch(new UbScheduler(1));
-            WriteBoundaryConditionsCoProcessor ppgeo(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppgeo.process(0);
-         }
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 8");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-
-         /////////////////////////////////////////////////////////////////////////////
-         if (myid==0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         //restartCoProcessor->restart((int)restartStep);
-         migCoProcessor->restart((int)restartStep);
-         grid->setTimeStep(restartStep);
-
-         WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-         ppblocks.process(3);
-         ////////////////////////////////////////////////////////////////////////////
-      }
-      ////set connectors
-      SPtr<InterpolationProcessor> iProcessor(new CompressibleOffsetMomentsInterpolationProcessor());
-      dynamicPointerCast<CompressibleOffsetMomentsInterpolationProcessor>(iProcessor)->setBulkViscosity(nuLB, bulckViscosity);
-      SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-      grid->accept(setConnsVisitor);
-
-      //bcVisitor should be accept after initialization!!!!
-      grid->accept(bcVisitor);
-      if (myid == 0) UBLOG(logINFO, "grid->accept(bcVisitor):end");
-
-      ////sponge layer
-      GbCuboid3DPtr spongeLayerX1max(new GbCuboid3D(g_maxX1 - 0.35, g_minX2 - blockLength, g_minX3 - blockLength, g_maxX1 + blockLength, g_maxX2 + blockLength, g_maxX3 + blockLength));
-      if (myid == 0) GbSystem3D::writeGeoObject(spongeLayerX1max.get(), pathOut + "/geo/spongeLayerX1max", WbWriterVtkXmlASCII::getInstance());
-      SpongeLayerBlockVisitor slVisitorX1max(spongeLayerX1max, spKernel, nuLB, D3Q27System::E);
-      grid->accept(slVisitorX1max);
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      std::shared_ptr<NUPSCounterCoProcessor> nupsCoProcessor(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTimeStep, outTimeStart));
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Point 9");
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-      }
-
-      SPtr<WriteMacroscopicQuantitiesCoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, stepSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-
-      SPtr<GbObject3D> bbBox(new GbCuboid3D(g_minX1-blockLength, (g_maxX2-g_minX2)/2.0, g_minX3-blockLength, g_maxX1+blockLength, (g_maxX2-g_minX2)/2.0+deltaXcoarse, g_maxX3+blockLength));
-      if (myid==0) GbSystem3D::writeGeoObject(bbBox.get(), pathOut+"/geo/bbBox", WbWriterVtkXmlASCII::getInstance());
-      SPtr<WriteMQFromSelectionCoProcessor> writeMQSelectCoProcessor(new WriteMQFromSelectionCoProcessor(grid, stepSch, bbBox, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-
-      SPtr<UbScheduler> tavSch(new UbScheduler(1, timeAvStart, timeAvStop));
-      SPtr<TimeAveragedValuesCoProcessor> tav(new TimeAveragedValuesCoProcessor(grid, pathOut, WbWriterVtkXmlBinary::getInstance(), tavSch, comm,
-         TimeAveragedValuesCoProcessor::Density | TimeAveragedValuesCoProcessor::Velocity | TimeAveragedValuesCoProcessor::Fluctuations));
-      tav->setWithGhostLayer(true);
-
-	  //set microfons
-	  SPtr<UbScheduler> stepMV(new UbScheduler(1, 0, 1000000));
-	  SPtr<MicrophoneArrayCoProcessor> micCoProcessor(new MicrophoneArrayCoProcessor(grid, stepSch, pathOut, comm));
-	  double offsetX1 = 0.017;
-	  double offsetZ1 = 0.11375;
-	  std::vector<UbTupleFloat3> nodes;
-	  for (int i = 0; i <= 10; i++)
-	  {
-		  micCoProcessor->addMicrophone(Vector3D(0.3 + deltaXcoarse + offsetX1 * double(i), 0.015, 0.0 - offsetZ1 * double(i)));
-		  nodes.push_back(UbTupleFloat3(float(0.3 + deltaXcoarse + offsetX1 * float(i)), float(0.015), float(0.0 - offsetZ1 * float(i))));
-	  }
-	  double offsetX2 = 0.1;
-	  for (int i = 0; i <= 6; i++)
-	  {
-		  micCoProcessor->addMicrophone(Vector3D(0.17 + offsetX2 * double(i), 0.015, -1.1375));
-		  nodes.push_back(UbTupleFloat3(float(0.17 + offsetX2 * float(i)), float(0.015), float(-1.1375)));
-	  }
-
-	  if (myid == 0) WbWriterVtkXmlBinary::getInstance()->writeNodes(pathOut + "/geo/mic", nodes);
-	  ///////////////////////////////////////////////////////////
-
-      //omp_set_num_threads(numOfThreads);
-      SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
-      calculator->addCoProcessor(nupsCoProcessor);
-	  calculator->addCoProcessor(micCoProcessor);
-      calculator->addCoProcessor(restartCoProcessor);
-      calculator->addCoProcessor(writeMQSelectCoProcessor);
-      calculator->addCoProcessor(writeMQCoProcessor);
-      calculator->addCoProcessor(tav);
-
-      if (myid==0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
-      if (myid==0) UBLOG(logINFO, "Simulation-end");
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Point 10");
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-      }
-   }
-   catch (std::exception& e)
-   {
-      cerr<<e.what()<<endl<<flush;
-   }
-   catch (std::string& s)
-   {
-      cerr<<s<<endl;
-   }
-   catch (...)
-   {
-      cerr<<"unknown exception"<<endl;
-   }
-
-}
-
-
-int main(int argc, char* argv[])
-{
-
-   if (argv!=NULL)
-   {
-      if (argv[1]!=NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout<<"Configuration file must be set!: "<<argv[0]<<" <config file>"<<endl<<std::flush;
-      }
-   }
-
-   //test_run();
-
-   //SuperMUC
-   //MPI_Finalize();
-
-   return 0;
-}
-
diff --git a/apps/cpu/DLR-F16-Solid/CMakeLists.txt b/apps/cpu/DLR-F16-Solid/CMakeLists.txt
deleted file mode 100644
index f7a6686b451de9e72a280b6f52287ba70e8df092..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16-Solid/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(f16solid)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake)  
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(f16solid BINARY)
diff --git a/apps/cpu/DLR-F16-Solid/f16-solid-coarse.cfg b/apps/cpu/DLR-F16-Solid/f16-solid-coarse.cfg
deleted file mode 100644
index b7d71f4f0d3eb0333b387d107cc2b0d154e29deb..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16-Solid/f16-solid-coarse.cfg
+++ /dev/null
@@ -1,63 +0,0 @@
-pathOut = d:/temp/DLR-F16-Solid-L1-BV
-pathGeo = d:/Projects/SFB880/DLR-F16/Geometry
-
-fngFileWhole1 = F16_broad_Quad_noTape_full.stl
-fngFileWhole2 = F16_broad_Quad_thickTape_full.stl
-
-accuracy = 0
-
-reinit = false
-pathReInit = /work/koskuche/DLR-F16_L1
-stepReInit = 10000
-
-numOfThreads = 8
-availMem = 10e9
-
-logToFile = false
-
-#x1min x1max x2min x2max x3min x3max [m]
-#boundingBox = -0.90 2.1 0.0 0.03 -0.66 0.66
-#boundingBox = -0.90 1.5 0.0 0.03 -0.66 0.66
-#boundingBox = -0.125 0.45 0.0 0.03 -1.05 0.1
-
-#boundingBox = -0.125 1.5 0.0 0.03 -1.1 0.3
-#boundingBox = -0.90 1.5 0.0 0.03 -1.05 0.66
-#boundingBox = -0.30 2.52 0.0 0.03 -2.08 2.08
-boundingBox = -0.3 1.17 0.0 0.03 -1.17 1.17
-
-blockNx = 10 10 10
-
-refineLevel = 1
-
-#deltaXfine = 0.003 #level 0
-deltaXfine = 0.0015 #level 1
-#deltaXfine = 0.00075 #level 2
-#deltaXfine = 0.000375 #level 3
-#deltaXfine = 0.0001875 #level 4
-#deltaXfine = 0.00009375 #level 5
-#deltaXfine = 0.000046875 #level 6
-#deltaXfine = 0.0000234375 #level 7
-
-startDistance = -1.0e-3
-refineDistance = 0.6e-3
-#refineDistance = 30.0e-3
-
-writeBlocks = false
-
-newStart = false
-restartStep = 15010
-
-cpStep = 10
-cpStart = 10
-
-outTimeStep = 10
-outTimeStart = 10
-
-timeAvStart = 14000
-timeAvStop  = 15000
-
-nupsStep = 100 100 10000000
-
-endTime = 15020
-
-
diff --git a/apps/cpu/DLR-F16-Solid/f16-solid.cfg b/apps/cpu/DLR-F16-Solid/f16-solid.cfg
deleted file mode 100644
index f6c05a2a0b99f42ed64b631c38b9b0d576a248d5..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16-Solid/f16-solid.cfg
+++ /dev/null
@@ -1,56 +0,0 @@
-pathOut = d:/temp/DLR-F16-Solid
-pathGeo = d:/Projects/SFB880/DLR-F16/Geometry
-
-fngFileWhole1 = F16_broad_Quad_noTape_full.stl
-fngFileWhole2 = F16_broad_Quad_thickTape_full.stl
-
-accuracy = 1
-
-numOfThreads = 4
-availMem = 10e9
-
-logToFile = false
-
-#x1min x1max x2min x2max x3min x3max [m]
-#boundingBox = -0.3 1.17 0.0 0.03 -1.17 1.17
-boundingBox = -0.3 1.17 0.0 0.03 -0.7 0.7
-
-blockNx = 10 10 10
-
-refineLevel = 3
-
-#deltaXfine = 0.003 #level 0
-#deltaXfine = 0.0015 #level 1
-#deltaXfine = 0.00075 #level 2
-#deltaXfine = 0.000375 #level 3
-#deltaXfine = 0.0001875 #level 4
-deltaXfine = 0.00009375  #level 5
-#deltaXfine = 0.000046875 #level 6
-#deltaXfine = 0.0000234375 #level 7
-
-startDistance = -1.0e-3
-refineDistance = 0.6e-3
-#refineDistance = 1e-3
-
-writeBlocks = true
-
-newStart = true
-restartStep = 238000
-
-cpStep = 1000
-cpStart = 3000
-
-outTimeStep = 100
-outTimeStart = 100
-
-endTime = 238000
-
-
-#Cp
-pcpStart = 1000000
-pcpStop  = 1000000
-
-timeAvStart = 100
-timeAvStop  = 40000
-
-nupsStep = 1000 1000 10000000
diff --git a/apps/cpu/DLR-F16-Solid/f16.cpp b/apps/cpu/DLR-F16-Solid/f16.cpp
deleted file mode 100644
index 321793153557256f208e8d98a1f739e58a800604..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16-Solid/f16.cpp
+++ /dev/null
@@ -1,754 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <PointerDefinitions.h>
-#include "VirtualFluids.h"
-#include <omp.h>
-using namespace std;
-
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathOut = config.getValue<string>("pathOut");
-      string          pathGeo = config.getValue<string>("pathGeo");
-      string          fngFileWhole1 = config.getValue<string>("fngFileWhole1");
-      string          fngFileWhole2 = config.getValue<string>("fngFileWhole2");
-      //string          tapeFile = config.getValue<string>("tapeFile");
-      int             accuracy = config.getValue<int>("accuracy");
-      int             numOfThreads = config.getValue<int>("numOfThreads");
-      vector<int>     blockNx = config.getVector<int>("blockNx");
-      vector<double>  boundingBox = config.getVector<double>("boundingBox");
-      double          restartStep = config.getValue<double>("restartStep");
-      double          cpStart = config.getValue<double>("cpStart");
-      double          cpStep = config.getValue<double>("cpStep");
-      int             endTime = config.getValue<int>("endTime");
-      double          outTimeStep = config.getValue<double>("outTimeStep");
-      double          outTimeStart = config.getValue<double>("outTimeStart");
-      double          availMem = config.getValue<double>("availMem");
-      int             refineLevel = config.getValue<int>("refineLevel");
-      bool            logToFile = config.getValue<bool>("logToFile");
-      double          deltaXfine = config.getValue<double>("deltaXfine");
-      double          refineDistance = config.getValue<double>("refineDistance");
-      double          startDistance = config.getValue<double>("startDistance");
-      vector<double>  nupsStep = config.getVector<double>("nupsStep");
-      bool            newStart = config.getValue<bool>("newStart");
-      bool            writeBlocks = config.getValue<bool>("writeBlocks");
-      //string          pathReInit = config.getValue<string>("pathReInit");
-      //int             stepReInit = config.getValue<int>("stepReInit");
-      //bool            reinit = config.getValue<bool>("reinit");
-
-      //double          pcpStart = config.getValue<double>("pcpStart");
-      //double          pcpStop  = config.getValue<double>("pcpStop");
-
-      double          timeAvStart       = config.getValue<double>("timeAvStart");
-      double          timeAvStop        = config.getValue<double>("timeAvStop");
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid==0)
-         {
-            const char* str = pathOut.c_str();
-            mkdir(str, S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH);
-         }
-#endif 
-
-         if (myid==0)
-         {
-            stringstream logFilename;
-            logFilename<<pathOut+"/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Point 1");
-         UBLOG(logINFO, "PID = "<<myid<<" Total Physical Memory (RAM): "<<Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used: "<<Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-      }
-
-
-      //the geometry is in mm
-
-      double g_minX1 = boundingBox[0];//*1000.0;
-      double g_minX2 = boundingBox[2];//*1000.0;
-      double g_minX3 = boundingBox[4];//*1000.0;
-      double g_maxX1 = boundingBox[1];//*1000.0;
-      double g_maxX2 = boundingBox[3];//*1000.0;
-      double g_maxX3 = boundingBox[5];//*1000.0;
-      //deltaXfine *=1000.0;
-
-      //////////////////////////////////////////////////////////////////////////
-      double deltaXcoarse = deltaXfine*(double)(1<<refineLevel);
-      //////////////////////////////////////////////////////////////////////////
-      double blockLength = (double)blockNx[0]*deltaXcoarse;
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-      double Re = 1e6;
-
-      double rhoLB = 0.0;
-      double rhoReal = 1.2041; //(kg/m3)
-      //double nueReal = 153.5e-7; //m^2/s
-      double uReal = 50; //m/s
-      double lReal = 0.3;//m
-      //double uReal = Re*nueReal / lReal;
-      double nuReal = (uReal*lReal)/Re; //m^2/s
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-      double Ma = 0.15;//Ma-Real!
-      double csReal = uReal / Ma;
-      double hLB = lReal / deltaXcoarse;
-
-      LBMUnitConverter unitConverter(lReal, csReal, rhoReal, hLB);
-
-      double uLB = uReal   * unitConverter.getFactorVelocityWToLb();
-      double nuLB = nuReal * unitConverter.getFactorViscosityWToLb();
-      double lLB = lReal/deltaXcoarse;
-      //double nuLB = (uLB*lLB)/Re; //0.005;
-      //double nuLB = 0.005;
-
-      if (myid==0) UBLOG(logINFO, unitConverter.toString());
-     
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      //SPtr<GbObject3D> mic6(new GbCuboid3D(0.3, 0.015, -0.46+4.25*deltaXcoarse, 0.3+deltaXcoarse, 0.015+deltaXcoarse, -0.46+5.25*deltaXcoarse));
-      //if (myid==0) GbSystem3D::writeGeoObject(mic6.get(), pathOut+"/geo/mic6", WbWriterVtkXmlBinary::getInstance());
-
-      //GbCuboid3DPtr spongeLayerX1max(new GbCuboid3D(g_maxX1-0.35, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-      //if (myid==0) GbSystem3D::writeGeoObject(spongeLayerX1max.get(), pathOut+"/geo/spongeLayerX1max", WbWriterVtkXmlASCII::getInstance());
-      //return;
-
-
-      ////////////////////////////////////////////////////////////////////////
-      //Grid
-      //////////////////////////////////////////////////////////////////////////
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      //BC adapters
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-
-      SPtr<BCAdapter> slipBCAdapter(new SlipBCAdapter());
-      slipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new SlipBCAlgorithm()));
-
-      mu::Parser fct;
-      fct.SetExpr("U");
-      fct.DefineConst("U", uLB);
-      SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-      velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityWithDensityBCAlgorithm()));
-
-      //fct.SetExpr("U");
-      //fct.DefineConst("U", 0.01);
-      //SPtr<BCAdapter> velBCAdapterOut(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-      //velBCAdapterOut->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityBCAlgorithm()));
-
-      SPtr<BCAdapter> outflowBCAdapter(new DensityBCAdapter(rhoLB));
-      outflowBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingOutflowBCAlgorithm()));
-
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      bcVisitor.addBC(velBCAdapter);
-      bcVisitor.addBC(outflowBCAdapter);
-
-      SPtr<BCProcessor> bcProc;
-      bcProc = SPtr<BCProcessor>(new BCProcessor());
-
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel());
-      //t = 21.8, P = 1.0145 atm, Relative Humidity = 45.8, Second Coefficient of Viscosity = 3120
      //Ash, R. L., Zuckerwar, A. J., & Zheng, Z. (1991). Second coefficient of viscosity in air.
-      double bulckViscosity = 3120 * nuLB;
-      dynamicPointerCast<CompressibleCumulant4thOrderViscosityLBMKernel>(kernel)->setBulkViscosity(bulckViscosity);
-
-      kernel->setBCProcessor(bcProc);
-
-      SPtr<LBMKernel> spKernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel());
-      spKernel->setBCProcessor(bcProc);
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      //SPtr<UbScheduler> rSch(new UbScheduler(cpStep, cpStart));
-      //SPtr<MPIIORestartCoProcessor> restartCoProcessor(new MPIIORestartCoProcessor(grid, rSch, pathOut, comm));
-      //restartCoProcessor->setLBMKernel(kernel);
-      //restartCoProcessor->setBCProcessor(bcProc);
-
-      SPtr<UbScheduler> mSch(new UbScheduler(cpStep, cpStart));
-      SPtr<MPIIOMigrationCoProcessor> migCoProcessor(new MPIIOMigrationCoProcessor(grid, mSch, pathOut+"/mig", comm));
-      migCoProcessor->setLBMKernel(kernel);
-      migCoProcessor->setBCProcessor(bcProc);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Point 2");
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-      }
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "Parameters:");
-         UBLOG(logINFO, "* Re                  = "<<Re);
-         UBLOG(logINFO, "* Ma                  = "<<Ma);
-         UBLOG(logINFO, "* velocity (uReal)    = "<<uReal<<" m/s");
-         UBLOG(logINFO, "* viscosity (nuReal)  = "<<nuReal<<" m^2/s");
-         UBLOG(logINFO, "* chord length (lReal)= "<<lReal<<" m");
-         UBLOG(logINFO, "* velocity LB (uLB)   = "<<uLB);
-         UBLOG(logINFO, "* viscosity LB (nuLB) = "<<nuLB);
-         UBLOG(logINFO, "* chord length (l_LB) = "<<lLB<<" dx_base");
-         UBLOG(logINFO, "* dx_base             = "<<deltaXcoarse<<" m");
-         UBLOG(logINFO, "* dx_refine           = "<<deltaXfine<<" m");
-         UBLOG(logINFO, "* blocknx             = "<<blockNx[0]<<"x"<<blockNx[1]<<"x"<<blockNx[2]);
-         UBLOG(logINFO, "* refineDistance      = "<<refineDistance);
-         UBLOG(logINFO, "* number of levels    = "<<refineLevel+1);
-         UBLOG(logINFO, "* number of threads   = "<<numOfThreads);
-         UBLOG(logINFO, "* number of processes = "<<comm->getNumberOfProcesses());
-         UBLOG(logINFO, "* path = "<<pathOut);
-      }
-
-      if (newStart)
-      {
-         ////////////////////////////////////////////////////////////////////////
-         //define grid
-         //////////////////////////////////////////////////////////////////////////
-         grid->setDeltaX(deltaXcoarse);
-         grid->setBlockNX(blockNx[0], blockNx[1], blockNx[2]);
-
-         SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid==0) GbSystem3D::writeGeoObject(gridCube.get(), pathOut+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         grid->setPeriodicX1(false);
-         grid->setPeriodicX2(true);
-         grid->setPeriodicX3(false);
-
-
-         //GbCuboid3DPtr spongeLayerX1max(new GbCuboid3D(g_maxX1-0.4, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         //if (myid==0) GbSystem3D::writeGeoObject(spongeLayerX1max.get(), pathOut+"/geo/spongeLayerX1max", WbWriterVtkXmlASCII::getInstance());
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Preprocessing - start");
-         }
-
-         {
-            WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppblocks.process(0);
-         }
-         
-         //SPtr<GbObject3D> fngMeshWhole(new GbCylinder3D(15.0, 0.0, 0.0, 15.0, 100.0, 0.0, 25.0));
-         //GbSystem3D::writeGeoObject(fngMeshWhole.get(), pathOut + "/geo/fngMeshWholeCylinder", WbWriterVtkXmlBinary::getInstance());
-
-         SPtr<GbTriFaceMesh3D> fngMeshWhole1;
-         if (myid==0) UBLOG(logINFO, "Read fngFileWhole1:start");
-         fngMeshWhole1 = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+fngFileWhole1, "fngMeshWhole1", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-         if (myid==0) UBLOG(logINFO, "Read fngFileWhole1:end");
-         fngMeshWhole1->rotate(0.0, 0.5, 0.0);
-         //fngMeshWhole->scale(1e3,1e3,1e3);
-         //fngMeshWhole->translate(1.932008e-5-149.867,-0.03-49.95,-0.0172298-1.32814);
-         if (myid==0) GbSystem3D::writeGeoObject(fngMeshWhole1.get(), pathOut+"/geo/fngMeshWhole1", WbWriterVtkXmlBinary::getInstance());
-
-         SPtr<GbTriFaceMesh3D> fngMeshWhole2;
-         if (myid==0) UBLOG(logINFO, "Read fngFileWhole2:start");
-         fngMeshWhole2 = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+fngFileWhole2, "fngMeshWhole2", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-         if (myid==0) UBLOG(logINFO, "Read fngFileWhole2:end");
-         fngMeshWhole2->rotate(0.0, 0.5, 0.0);
-         //fngMeshWhole->scale(1e3,1e3,1e3);
-         //fngMeshWhole->translate(1.932008e-5-149.867,-0.03-49.95,-0.0172298-1.32814);
-         if (myid==0) GbSystem3D::writeGeoObject(fngMeshWhole2.get(), pathOut+"/geo/fngMeshWhole2", WbWriterVtkXmlBinary::getInstance());
-
-         //SPtr<GbTriFaceMesh3D> tapeMesh;
-         //if (myid==0) UBLOG(logINFO, "Read fngFileWhole:start");
-         //tapeMesh = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+tapeFile, "tapeMesh", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-         //if (myid==0) UBLOG(logINFO, "Read fngFileWhole:end");
-         //tapeMesh->rotate(0.0, 0.5, 0.0);
-         ////fngMeshWhole->scale(1e3,1e3,1e3);
-         //tapeMesh->translate(0.0,0.0,-0.001085);
-         //if (myid==0) GbSystem3D::writeGeoObject(tapeMesh.get(), pathOut+"/geo/tapeMesh", WbWriterVtkXmlBinary::getInstance());
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 3");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-         //////////////////////////////////////////////////////////////////////////
-         SPtr<Interactor3D> fngIntrWhole1 = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshWhole1, grid, noSlipBCAdapter, Interactor3D::SOLID, (Interactor3D::Accuracy)accuracy));//, Interactor3D::POINTS));
-         SPtr<Interactor3D> fngIntrWhole2 = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshWhole2, grid, noSlipBCAdapter, Interactor3D::SOLID, (Interactor3D::Accuracy)accuracy));
-
-         if (refineLevel>0 && myid==0 && writeBlocks)
-         {
-            if (myid==0) UBLOG(logINFO, "Refinement - start");
-            int rank = grid->getRank();
-            grid->setRank(0);
-
-
-            int level;
-
-            level = 1;
-            if (refineLevel - level >= 0)
-            {
-               dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrWhole1)->refineBlockGridToLevel(level, startDistance, refineDistance);
-               //SPtr<GbObject3D> refCylinderL1(new GbCylinder3D(0.3, -0.03, 0.001, 0.3, 0.06, 0.001, 0.1));
-               //RefineCrossAndInsideGbObjectBlockVisitor refVisitorCylinderL1(refCylinderL1, level);
-               //grid->accept(refVisitorCylinderL1);
-
-               //SPtr<GbObject3D> refBoxL1(new GbCuboid3D(0.15, -0.03, -0.035, 0.45, 0.06, 0.035));
-               //if (myid==0) GbSystem3D::writeGeoObject(refBoxL1.get(), pathOut+"/geo/refBoxL1", WbWriterVtkXmlASCII::getInstance());
-               //RefineCrossAndInsideGbObjectBlockVisitor refVisitorBoxL1(refBoxL1, level);
-               //grid->accept(refVisitorBoxL1);
-            }
-            
-            level = 2;
-            if (refineLevel - level >= 0)
-            {
-               dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrWhole1)->refineBlockGridToLevel(level, startDistance, refineDistance);
-            }
-
-            level = 3;
-            if (refineLevel - level >= 0)
-            {
-               //SPtr<GbObject3D> refCylinderL1(new GbCylinder3D(0.015, -0.03, 0.0, 0.015, 0.06, 0.0, 0.03));
-               //GbSystem3D::writeGeoObject(refCylinderL1.get(), pathOut + "/geo/refCylinderL1", WbWriterVtkXmlBinary::getInstance());
-               //RefineCrossAndInsideGbObjectBlockVisitor refVisitorCylinderL1(refCylinderL1, level);
-               //grid->accept(refVisitorCylinderL1);
-
-               ////SPtr<GbObject3D> refBoxL1(new GbCuboid3D(0.015, -0.03, -0.03, 1.100, 0.06, 0.03));
-               ////SPtr<GbObject3D> refBoxL1(new GbCuboid3D(0.12, -0.02625, -0.03, 1.0, 0.06, 0.03));
-               //SPtr<GbObject3D> refBoxL1(new GbCuboid3D(0.12, -0.02625, -0.03, 0.34, 0.06, 0.03));
-               //if (myid==0) GbSystem3D::writeGeoObject(refBoxL1.get(), pathOut+"/geo/refBoxL1", WbWriterVtkXmlASCII::getInstance());
-               //RefineCrossAndInsideGbObjectBlockVisitor refVisitorBoxL1(refBoxL1, level);
-               //grid->accept(refVisitorBoxL1);
-
-               //SPtr<GbObject3D> refCylinderL1(new GbCylinder3D(0.3, -0.03, 0.001, 0.3, 0.06, 0.001, 0.03));
-               //GbSystem3D::writeGeoObject(refCylinderL1.get(), pathOut + "/geo/refCylinderL1", WbWriterVtkXmlBinary::getInstance());
-               //RefineCrossAndInsideGbObjectBlockVisitor refVisitorCylinderL1(refCylinderL1, level);
-               //grid->accept(refVisitorCylinderL1);
-
-               SPtr<GbObject3D> refBoxL2(new GbCuboid3D(0.15, -0.03, -0.015, 0.42, 0.06, 0.015));
-               if (myid==0) GbSystem3D::writeGeoObject(refBoxL2.get(), pathOut+"/geo/refBoxL2", WbWriterVtkXmlASCII::getInstance());
-               RefineCrossAndInsideGbObjectBlockVisitor refVisitorBoxL2(refBoxL2, level);
-               grid->accept(refVisitorBoxL2);
-
-               //dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrWhole1)->refineBlockGridToLevel(level, startDistance, 24.0*refineDistance);
-               dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrWhole1)->refineBlockGridToLevel(level, startDistance, 12.0*refineDistance);
-            }
-
-            //level = 4;
-            //if (refineLevel - level >= 0)
-            //{
-            //   //SPtr<GbObject3D> refCylinderL2(new GbCylinder3D(0.015, -0.03, 0.0, 0.015, 0.06, 0.0, 0.03));
-            //   //GbSystem3D::writeGeoObject(refCylinderL2.get(), pathOut + "/geo/refCylinderL2", WbWriterVtkXmlBinary::getInstance());
-            //   //RefineCrossAndInsideGbObjectBlockVisitor refVisitorCylinderL2(refCylinderL2, level);
-            //   //grid->accept(refVisitorCylinderL2);
-
-            //   //SPtr<GbObject3D> refBoxL2(new GbCuboid3D(0.15, -0.03, -0.015, 0.7, 0.06, 0.015));
-            //   SPtr<GbObject3D> refBoxL2(new GbCuboid3D(0.15, -0.03, -0.015, 0.42, 0.06, 0.015));
-            //   if (myid==0) GbSystem3D::writeGeoObject(refBoxL2.get(), pathOut+"/geo/refBoxL2", WbWriterVtkXmlASCII::getInstance());
-            //   RefineCrossAndInsideGbObjectBlockVisitor refVisitorBoxL2(refBoxL2, level);
-            //   grid->accept(refVisitorBoxL2);
-
-            //   //SPtr<GbObject3D> refCylinderL1(new GbCylinder3D(0.3, -0.03, 0.001, 0.3, 0.06, 0.001, 0.03));
-            //   //GbSystem3D::writeGeoObject(refCylinderL1.get(), pathOut + "/geo/refCylinderL1", WbWriterVtkXmlBinary::getInstance());
-            //   //RefineCrossAndInsideGbObjectBlockVisitor refVisitorCylinderL1(refCylinderL1, level);
-            //   //grid->accept(refVisitorCylinderL1);
-
-            //   dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrWhole1)->refineBlockGridToLevel(level, startDistance, 6.0*refineDistance);
-            //}
-
-            //level = 5;
-            //if (refineLevel - level >= 0)
-            //{
-            //   //SPtr<GbObject3D> refCylinderL3(new GbCylinder3D(0.015, -0.03, 0.0, 0.015, 0.06, 0.0, 0.025));
-            //   //GbSystem3D::writeGeoObject(refCylinderL3.get(), pathOut + "/geo/refCylinderL3", WbWriterVtkXmlBinary::getInstance());
-            //   //RefineCrossAndInsideGbObjectBlockVisitor refVisitorCylinderL3(refCylinderL3, level);
-            //   //grid->accept(refVisitorCylinderL3);
-
-            //   //SPtr<GbObject3D> refBoxL3(new GbCuboid3D(0.15, -0.03, -0.010, 0.32, 0.06, 0.012));
-            //   //if (myid==0) GbSystem3D::writeGeoObject(refBoxL3.get(), pathOut+"/geo/refBoxL3", WbWriterVtkXmlASCII::getInstance());
-            //   //RefineCrossAndInsideGbObjectBlockVisitor refVisitorBoxL3(refBoxL3, level);
-            //   //grid->accept(refVisitorBoxL3);
-
-            //   dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrWhole1)->refineBlockGridToLevel(level, startDistance, 6.0*refineDistance);
-            //}
-
-            //level = 6;
-            //if (refineLevel - level >= 0)
-            //{
-            //   //SPtr<GbObject3D> refBoxL4(new GbCuboid3D(0.15, -0.03, -0.005, 0.31, 0.06, 0.01));
-            //   //if (myid==0) GbSystem3D::writeGeoObject(refBoxL4.get(), pathOut+"/geo/refBoxL4", WbWriterVtkXmlASCII::getInstance());
-            //   //RefineCrossAndInsideGbObjectBlockVisitor refVisitorBoxL4(refBoxL4, level);
-            //   //grid->accept(refVisitorBoxL4);
-
-            //   dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrWhole1)->refineBlockGridToLevel(level, startDistance, 3.0*refineDistance);
-            //}
-
-            //level = 7;
-            //if (refineLevel - level >= 0)
-            //{
-            //   dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrWhole1)->refineBlockGridToLevel(level, startDistance, refineDistance);
-            //}
-
-            //dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrWhole1)->refineBlockGridToLevel(refineLevel, startDistance, refineDistance);
-            //
-
-            /////delete solid blocks
-            if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - start");
-
-            SetSolidBlocksBlockVisitor v(fngIntrWhole1);
-            grid->accept(v);
-            std::vector<SPtr<Block3D>>& sb = fngIntrWhole1->getSolidBlockSet();
-            for (SPtr<Block3D> block : sb)
-            {
-               grid->deleteBlock(block);
-            }
-            fngIntrWhole1->removeSolidBlocks();
-            fngIntrWhole1->removeBcBlocks();
-
-            //SPtr<GbObject3D> delBox(new GbCuboid3D(0.03, -0.03, -0.010, 0.2, 0.06, 0.012));
-            //if (myid==0) GbSystem3D::writeGeoObject(delBox.get(), pathOut+"/geo/delBox", WbWriterVtkXmlASCII::getInstance());
-            //SPtr<D3Q27Interactor> delBoxInter(new D3Q27Interactor(delBox, grid, noSlipBCAdapter, Interactor3D::SOLID));
-            //SetSolidBlockVisitor v(delBoxInter, BlockType::SOLID);
-            //grid->accept(v);
-            //std::vector<SPtr<Block3D>>& sb = delBoxInter->getSolidBlockSet();
-            //for (SPtr<Block3D> block : sb)
-            //{
-            //   grid->deleteBlock(block);
-            //}
-            //delBoxInter->removeSolidBlocks();
-            //delBoxInter->removeBcBlocks();
-
-            if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - end");
-            ////////////////////////////////////////
-
-            {
-               WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-               ppblocks.process(1);
-            }
-
-            grid->setRank(rank);
-
-            RatioBlockVisitor ratioVisitor(refineLevel);
-            CheckRatioBlockVisitor checkRatio(refineLevel);
-            int count = 0;
-
-            do {
-               if (myid==0) UBLOG(logINFO, "ratioVisitor - start");
-               grid->accept(ratioVisitor);
-               if (myid==0) UBLOG(logINFO, "ratioVisitor - end");
-               if (myid==0) UBLOG(logINFO, "checkRatio - start");
-               checkRatio.resetState();
-               grid->accept(checkRatio);
-               if (myid==0) UBLOG(logINFO, "checkRatio - end");
-               if (myid==0) UBLOG(logINFO, "count = "<<count++<<" state = "<<checkRatio.getState());
-            } while (!checkRatio.getState());
-
-
-            {
-               WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-               ppblocks.process(2);
-            }
-
-            OverlapBlockVisitor overlapVisitor(refineLevel, false);
-            grid->accept(overlapVisitor);
-
-            if (myid==0) UBLOG(logINFO, "Refinement - end");
-         }
-         //else
-         //{
-         //   migCoProcessor->readBlocks(0);
-         //}
-         grid->updateDistributedBlocks(comm);
-
-         //if (writeBlocks)
-         //{
-         //   migCoProcessor->writeBlocks(0);
-         //}
-
-         std::vector<int> dirs;
-         for (int i = D3Q27System::E; i<=D3Q27System::TS; i++)
-         {
-            dirs.push_back(i);
-         }
-         SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-         grid->accept(interDirsVisitor);
-
-         //walls
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathOut+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathOut+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //wall interactors
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, velBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoInflow.get(), pathOut+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathOut+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         SPtr<D3Q27Interactor> inflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //outflow
-         SPtr<D3Q27Interactor> outflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, outflowBCAdapter, Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         //METIS
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B, MetisPartitioner::RECURSIVE));
-         //std::dynamic_pointer_cast<MetisPartitioningGridVisitor>(metisVisitor)->setNumberOfProcesses(4000);
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(inflowIntr);
-         intHelper.addInteractor(outflowIntr);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(fngIntrWhole2);
-         intHelper.selectBlocks();
-
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - end");
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 4");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-         //////////////////////////////////////
-
-         {
-            WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppblocks.process(3);
-         }
-
-
-         unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-         int ghostLayer = 3;
-         unsigned long long numberOfNodesPerBlock = (unsigned long long)(blockNx[0])* (unsigned long long)(blockNx[1])* (unsigned long long)(blockNx[2]);
-         unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-         unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blockNx[0]+ghostLayer) * (blockNx[1]+ghostLayer) * (blockNx[2]+ghostLayer);
-         double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27*sizeof(double)+sizeof(int)+sizeof(float)*4));
-         double needMem = needMemAll/double(comm->getNumberOfProcesses());
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Number of blocks = "<<numberOfBlocks);
-            UBLOG(logINFO, "Number of nodes  = "<<numberOfNodes);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level "<<level<<" = "<<nobl);
-               UBLOG(logINFO, "Number of nodes for level "<<level<<" = "<<nobl*numberOfNodesPerBlock);
-            }
-            UBLOG(logINFO, "Necessary memory  = "<<needMemAll<<" bytes");
-            UBLOG(logINFO, "Necessary memory per process = "<<needMem<<" bytes");
-            UBLOG(logINFO, "Available memory per process = "<<availMem<<" bytes");
-         }
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (myid==0) UBLOG(logINFO, "SetKernelBlockVisitor:end");
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 5");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-
-         if (refineLevel>0)
-         {
-            SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         if (myid==0) UBLOG(logINFO, "SetUndefinedNodesBlockVisitor:end");
-
-         //BC
-         intHelper.setBC();
-
-        
-         if (myid==0) UBLOG(logINFO, "intHelper.setBC():end");
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 6");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-
-         //initialization of distributions
-         InitDistributionsBlockVisitor initVisitor;
-         initVisitor.setVx1(fct);
-         grid->accept(initVisitor);
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 7");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-
-         //Post process
-         {
-            SPtr<UbScheduler> geoSch(new UbScheduler(1));
-            WriteBoundaryConditionsCoProcessor ppgeo(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppgeo.process(0);
-         }
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 8");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-
-         if (myid==0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         //restartCoProcessor->restart((int)restartStep);
-         migCoProcessor->restart((int)restartStep);
-         grid->setTimeStep(restartStep);
-         ////////////////////////////////////////////////////////////////////////////
-         WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-         ppblocks.process(0);
-         ////////////////////////////////////////////////////////////////////////////
-      }
-      
-      ////set connectors
-      SPtr<InterpolationProcessor> iProcessor(new CompressibleOffsetMomentsInterpolationProcessor());
-      dynamicPointerCast<CompressibleOffsetMomentsInterpolationProcessor>(iProcessor)->setBulkViscosity(nuLB, bulckViscosity);
-      SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-      grid->accept(setConnsVisitor);
-
-      //bcVisitor should be accept after initialization!!!!
-      grid->accept(bcVisitor);
-      if (myid == 0) UBLOG(logINFO, "grid->accept(bcVisitor):end");
-
-      ////sponge layer
-      GbCuboid3DPtr spongeLayerX1max(new GbCuboid3D(g_maxX1-0.35, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-      if (myid==0) GbSystem3D::writeGeoObject(spongeLayerX1max.get(), pathOut+"/geo/spongeLayerX1max", WbWriterVtkXmlASCII::getInstance());
-      SpongeLayerBlockVisitor slVisitorX1max(spongeLayerX1max, spKernel, nuLB, D3Q27System::E);
-      grid->accept(slVisitorX1max);
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      std::shared_ptr<CoProcessor> nupsCoProcessor(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTimeStep, outTimeStart));
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Point 9");
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-      }
-
-      SPtr<CoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, stepSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-
-      SPtr<GbObject3D> bbBox(new GbCuboid3D(g_minX1-blockLength, (g_maxX2-g_minX2)/2.0, g_minX3-blockLength, g_maxX1+blockLength, (g_maxX2-g_minX2)/2.0+deltaXcoarse, g_maxX3+blockLength));
-      if (myid==0) GbSystem3D::writeGeoObject(bbBox.get(), pathOut+"/geo/bbBox", WbWriterVtkXmlASCII::getInstance());
-      SPtr<WriteMQFromSelectionCoProcessor> writeMQSelectCoProcessor(new WriteMQFromSelectionCoProcessor(grid, stepSch, bbBox, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-
-      SPtr<UbScheduler> tavSch(new UbScheduler(1, timeAvStart, timeAvStop));
-      SPtr<TimeAveragedValuesCoProcessor> tav(new TimeAveragedValuesCoProcessor(grid, pathOut, WbWriterVtkXmlBinary::getInstance(), tavSch, comm,
-         TimeAveragedValuesCoProcessor::Density | TimeAveragedValuesCoProcessor::Velocity | TimeAveragedValuesCoProcessor::Fluctuations));
-      tav->setWithGhostLayer(true);
-
-      SPtr<UbScheduler> stepMV(new UbScheduler(1, 0, 1000000));
-      SPtr<MicrophoneArrayCoProcessor> micCoProcessor(new MicrophoneArrayCoProcessor(grid, stepSch, pathOut, comm) );
-      double offsetX1 = 0.017;
-      double offsetZ1 = 0.11375;
-      std::vector<UbTupleFloat3> nodes;
-      //for (int i = 0; i <= 10; i++)
-      for (int i = 0; i <= 6; i++)
-      {
-         micCoProcessor->addMicrophone(Vector3D(0.3+deltaXcoarse+offsetX1*double(i), 0.015, 0.0-offsetZ1*double(i)));
-         nodes.push_back(UbTupleFloat3(float(0.3+deltaXcoarse+offsetX1*float(i)), float(0.015), float(0.0-offsetZ1*float(i))));
-      }
-      //double offsetX2 = 0.1;
-      //for (int i = 0; i <= 6; i++)
-      //{
-      //   micCoProcessor->addMicrophone(Vector3D(0.17+offsetX2*double(i), 0.015, -1.1375));
-      //   nodes.push_back(UbTupleFloat3(float(0.17+offsetX2*float(i)), float(0.015), float(-1.1375)));
-      //}
-      
-      if (myid==0) WbWriterVtkXmlBinary::getInstance()->writeNodes(pathOut+"/geo/mic", nodes);
-
-      //omp_set_num_threads(numOfThreads);
-      SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
-      calculator->addCoProcessor(nupsCoProcessor);
-      calculator->addCoProcessor(micCoProcessor);
-      //calculator->addCoProcessor(restartCoProcessor);
-      calculator->addCoProcessor(migCoProcessor);
-      //calculator->addCoProcessor(writeMQSelectCoProcessor);
-      calculator->addCoProcessor(writeMQCoProcessor);
-      calculator->addCoProcessor(tav);
-
-
-      if (myid==0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
-      if (myid==0) UBLOG(logINFO, "Simulation-end");
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Point 10");
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-      }
-   }
-   catch (std::exception& e)
-   {
-      cerr<<e.what()<<endl<<flush;
-   }
-   catch (std::string& s)
-   {
-      cerr<<s<<endl;
-   }
-   catch (...)
-   {
-      cerr<<"unknown exception"<<endl;
-   }
-
-}
-
-
-int main(int argc, char* argv[])
-{
-   //Sleep(30000);
-
-   if (argv!=NULL)
-   {
-      if (argv[1]!=NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout<<"Configuration file must be set!: "<<argv[0]<<" <config file>"<<endl<<std::flush;
-      }
-   }
-
-   //test_run();
-   
-   //SuperMUC
-   //MPI_Finalize();
-
-   return 0;
-}
-
diff --git a/apps/cpu/DLR-F16/Bombadil.cfg b/apps/cpu/DLR-F16/Bombadil.cfg
deleted file mode 100644
index 0196e80f4e12cffd18d4b6d4524d148d6a7acd0a..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16/Bombadil.cfg
+++ /dev/null
@@ -1,27 +0,0 @@
-pathOut = d:/temp/fng
-pathGeo = d:/Projects/SFB880/FNG/A1_Forschungsdaten_Profilgeometrie_STL_CATIA_Rossian
-fngFileWhole = f16-ascii.stl
-fngFileBodyPart = f16-body-part-ascii.stl
-fngFileTrailingEdge = f16-trailing-edge-ascii.stl
-
-numOfThreads = 1
-availMem = 20e9
-refineLevel = 3
-blockNx = 16 16 16
-uLB = 0.1
-
-#x1min x1max x2min x2max x3min x3max [mm]
-boundingBox = -50 400 45 55 -60 80 
-deltaXfine = 0.1
-
-restartStep = 10000
-restartStepStart = 10000
-
-outTime = 1000
-endTime = 1000
-
-logToFile = false
-
-porousTralingEdge = false
-
-thinWall = false
\ No newline at end of file
diff --git a/apps/cpu/DLR-F16/CMakeLists.txt b/apps/cpu/DLR-F16/CMakeLists.txt
deleted file mode 100644
index 3ed3128e03a02a782427078f73ec49c5cca5d805..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(f16)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(f16 BINARY)
diff --git a/apps/cpu/DLR-F16/DLR-F16-Phoenix.cfg b/apps/cpu/DLR-F16/DLR-F16-Phoenix.cfg
deleted file mode 100644
index 3cf6b61b3f2fbafe3c99bec79d2668c5db5b7833..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16/DLR-F16-Phoenix.cfg
+++ /dev/null
@@ -1,54 +0,0 @@
-pathOut = /home/koskuche/work/DLR-F16
-pathGeo = /home/koskuche/data/DLR-F16
-fngFileWhole = f16-ascii.stl
-#fngFileWhole = grundgeometrie-direkter-export.stl
-#fngFileWhole = grundgeometrie-mittel.stl
-
-#fngFileWhole = cylinder.ASCII.stl
-
-fngFileBodyPart = f16-body-part-ascii.stl
-fngFileTrailingEdge = f16-trailing-edge-ascii.stl
-zigZagTape = 2zackenbaender0.stl
-
-numOfThreads = 20
-availMem = 64e9
-refineLevel = 8
-blockNx = 7 6 7
-#blockNx = 21 6 13
-#blockNx = 294 12 247
-uLB = 0.1
-
-#x1min x1max x2min x2max x3min x3max [m]
-boundingBox = -0.90 1.20 0.035 0.065 -0.65 0.65
-#boundingBox = -0.1 0.60 0.035 0.065 -0.3 0.3
-#boundingBox = -10e-3 310e-3 0.035 0.065 -21e-3 21e-3
-
-#boundingBox = -0.255 0.27 0.035 0.065 -0.17 0.155
-#boundingBox = -0.255 0.27 0.035 0.185 -0.17 0.155
-
-#deltaXfine = 0.005 #level 0
-#deltaXfine = 0.0025 #level 1
-#deltaXfine = 0.00125 #level 2
-#deltaXfine = 0.000625 #level 3
-#deltaXfine = 0.0003125 #level 4
-#deltaXfine = 0.00015625 #level 5
-#deltaXfine = 0.000078125 #level 6
-#deltaXfine = 0.0000390625 #level 7
-deltaXfine = 0.00001953125 #level 8
-
-
-refineDistance = 0.1
-
-restartStep = 100
-restartStepStart = 100
-
-outTime = 100
-endTime = 100
-
-logToFile = true
-
-porousTralingEdge = false
-
-thinWall = false
-
-nupsStep = 10 10 10000000
diff --git a/apps/cpu/DLR-F16/F16Bombadil.cfg b/apps/cpu/DLR-F16/F16Bombadil.cfg
deleted file mode 100644
index a27fbb5cf7eaddab5ea9becd3f8f18e4fe6428a2..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16/F16Bombadil.cfg
+++ /dev/null
@@ -1,39 +0,0 @@
-pathOut = d:/temp/fngPorous
-pathGeo = d:/Projects/SFB880/FNG/A1_Forschungsdaten_Profilgeometrie_STL_CATIA_Rossian
-#fngFileWhole = f16-ascii.stl
-fngFileWhole = grundgeometrie-direkter-export.stl
-fngFileBodyPart = f16-body-part-ascii.stl
-fngFileTrailingEdge = f16-trailing-edge-ascii.stl
-zigZagTape = 2zackenbaender0.stl
-
-numOfThreads = 4
-availMem = 20e9
-refineLevel = 8
-#blockNx = 8 4 8
-blockNx = 21 6 13
-uLB = 0.1
-
-#x1min x1max x2min x2max x3min x3max [m]
-boundingBox = -0.90 1.20 0.035 0.065 -0.65 0.65
-
-#deltaXfine = 0.001
-#deltaXfine = 0.00375
-#deltaXfine = 1.46484375e-5
-#deltaXfine = 0.00001171875
-#deltaXfine = 9.765625e-6
-deltaXfine = 19.53125e-6
-#10e-6
-
-refineDistance = 0.3
-
-restartStep = 10000
-restartStepStart = 10000
-
-outTime = 1
-endTime = 2000
-
-logToFile = false
-
-porousTralingEdge = true
-
-thinWall = false
diff --git a/apps/cpu/DLR-F16/F16BombadilTest.cfg b/apps/cpu/DLR-F16/F16BombadilTest.cfg
deleted file mode 100644
index 4ee554a1cc477af62a25ffdfdc7d1fb70e817f01..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16/F16BombadilTest.cfg
+++ /dev/null
@@ -1,51 +0,0 @@
-pathOut = d:/temp/f16Grid_x21
-pathGeo = d:/Projects/SFB880/DLR-F16/A1_Forschungsdaten_Profilgeometrie_STL_CATIA_Rossian
-#fngFileWhole = f16-ascii.stl
-fngFileWhole = grundgeometrie-direkter-export.stl
-#fngFileWhole = grundgeometrie-mittel.stl
-fngFileBodyPart = f16-body-part-ascii.stl
-fngFileTrailingEdge = f16-trailing-edge-ascii.stl
-zigZagTape = 2zackenbaender0.stl
-
-numOfThreads = 4
-availMem = 10e9
-refineLevel = 8
-blockNx = 21 6 6
-#blockNx = 21 6 13
-#blockNx = 294 12 247
-uLB = 0.1
-
-#x1min x1max x2min x2max x3min x3max [m]
-boundingBox = -0.90 1.20 0.035 0.065 -0.65 0.65
-#boundingBox = -0.90 1.20 0.035 0.065 -0.65 0.65048
-#boundingBox = -0.1 0.60 0.035 0.065 -0.3 0.3
-#boundingBox = -10e-3 310e-3 0.035 0.065 -21e-3 21e-3
-
-#deltaXfine = 0.005 #level 0
-#deltaXfine = 0.0025 #level 1
-#deltaXfine = 0.00125 #level 2
-#deltaXfine = 0.000625 #level 3
-#deltaXfine = 0.0003125 #level 4
-#deltaXfine = 0.00015625 #level 5
-#deltaXfine = 0.000078125 #level 6
-#deltaXfine = 0.0000390625 #level 7
-deltaXfine = 0.00001953125 #level 8
-
-
-refineDistance = 0.3
-
-restartStep = 100000
-restartStepStart = 100000
-
-outTime = 1000
-endTime = 200000
-
-logToFile = false
-
-porousTralingEdge = false
-
-thinWall = false
-
-testBox=false
-
-nupsStep = 10 10 10000000
\ No newline at end of file
diff --git a/apps/cpu/DLR-F16/F16BombadilTest10e-6.cfg b/apps/cpu/DLR-F16/F16BombadilTest10e-6.cfg
deleted file mode 100644
index 9066cf548a47cbede96e5a15e51060c76283d17b..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16/F16BombadilTest10e-6.cfg
+++ /dev/null
@@ -1,72 +0,0 @@
-pathOut = d:/temp/DLR-F16
-pathGeo = d:/Projects/SFB880/DLR-F16/A1_Forschungsdaten_Profilgeometrie_STL_CATIA_Rossian
-#fngFileWhole = f16-ascii.stl
-fngFileWhole = grundgeometrie-direkter-export.stl
-#fngFileWhole = grundgeometrie-mittel.stl
-fngFileBodyPart = f16-body-part-ascii.stl
-fngFileTrailingEdge = f16-trailing-edge-ascii.stl
-zigZagTape = 2zackenbaender0.stl
-
-numOfThreads = 1
-availMem = 13e9
-refineLevel = 9 #10
-#blockNx = 7 8 8
-#blockNx = 7 6 7
-blockNx = 21 6 13
-uLB = 0.1
-
-#x1min x1max x2min x2max x3min x3max [m]
-boundingBox = -0.90 1.20 0.035 0.065 -0.65 0.65
-
-#boundingBox = -0.90 1.1992 0.035 0.065 -0.65 0.65
-#boundingBox = -0.1 0.635 0.035 0.065 -0.3 0.3
-#boundingBox = -10e-3 310e-3 0.035 0.065 -21e-3 25e-3
-
-#boundingBox = 0 65.6e-3 35e-3 75e-3 -30e-3 0
-
-
-#deltaXfine = 5120e-6 #level 0
-#deltaXfine = 2560e-6 #level 1
-#deltaXfine = 1280e-6 #level 2
-#deltaXfine = 640e-6 #level 3
-#deltaXfine = 320e-6 #level 4
-#deltaXfine = 160e-6 #level 5
-#deltaXfine = 80e-6 #level 6
-#deltaXfine = 40e-6 #level 7
-#deltaXfine = 20e-6 #level 8
-#deltaXfine = 10e-6 #level 9
-#deltaXfine = 0.000009765625
-
-#deltaXfine = 0.005 #level 0
-#deltaXfine = 0.0025 #level 1
-#deltaXfine = 0.00125 #level 2
-#deltaXfine = 0.000625 #level 3
-#deltaXfine = 0.0003125 #level 4
-#deltaXfine = 0.00015625 #level 5
-#deltaXfine = 0.000078125 #level 6
-#deltaXfine = 0.0000390625 #level 7
-#deltaXfine = 0.00001953125 #level 8
-deltaXfine = 0.000009765625 #level 9
-
-#deltaXfine = 6.5e-6
-
-startDistance = -1.0
-refineDistance = 0.3
-
-newStart = true
-restartStep = 10
-
-cpStart = 1
-cpStep = 1
-
-outTime = 1000
-endTime = 1
-
-logToFile = false
-
-porousTralingEdge = true
-
-thinWall = false
-
-
-nupsStep = 100 100 10000000
\ No newline at end of file
diff --git a/apps/cpu/DLR-F16/F16BombadilTestSmall.cfg b/apps/cpu/DLR-F16/F16BombadilTestSmall.cfg
deleted file mode 100644
index cce67bbcf397ce8493f52343735e7619f618f795..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16/F16BombadilTestSmall.cfg
+++ /dev/null
@@ -1,53 +0,0 @@
-pathOut = d:/temp/fng6
-pathGeo = d:/Projects/SFB880/FNG/A1_Forschungsdaten_Profilgeometrie_STL_CATIA_Rossian
-#fngFileWhole = f16-ascii.stl
-fngFileWhole = grundgeometrie-direkter-export.stl
-#fngFileWhole = grundgeometrie-mittel.stl
-fngFileBodyPart = f16-body-part-ascii.stl
-fngFileTrailingEdge = f16-trailing-edge-ascii.stl
-zigZagTape = 2zackenbaender0.stl
-
-numOfThreads = 1
-availMem = 10e9
-refineLevel = 1
-#blockNx = 8 4 8
-blockNx = 21 6 13
-#blockNx = 294 12 247
-uLB = 0.1
-
-#x1min x1max x2min x2max x3min x3max [m]
-#boundingBox = -0.90 1.20 0.035 0.065 -0.65 0.65
-#boundingBox = -0.1 0.60 0.035 0.065 -0.3 0.3
-#boundingBox = -10e-3 310e-3 0.035 0.065 -21e-3 21e-3
-
-boundingBox = -0.360 0.660 0.035 0.065 -0.30 0.30
-
-
-#deltaXfine = 0.005 #level 0
-#deltaXfine = 0.0025 #level 1
-#deltaXfine = 0.00125 #level 2
-#deltaXfine = 0.000625 #level 3
-#deltaXfine = 0.0003125 #level 4
-#deltaXfine = 0.00015625 #level 5
-#deltaXfine = 0.000078125 #level 6
-#deltaXfine = 0.0000390625 #level 7
-deltaXfine = 0.00001953125 #level 8
-
-
-refineDistance = 0.3
-
-restartStep = 100
-restartStepStart = 100
-
-outTime = 100
-endTime = 100
-
-logToFile = false
-
-porousTralingEdge = false
-
-thinWall = false
-
-testBox=true
-
-nupsStep = 10 10 10000000
\ No newline at end of file
diff --git a/apps/cpu/DLR-F16/f16-porous.cfg b/apps/cpu/DLR-F16/f16-porous.cfg
deleted file mode 100644
index f28f60eeb33d0ace58adc7af3cb0c1d5f26cc6cb..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16/f16-porous.cfg
+++ /dev/null
@@ -1,78 +0,0 @@
-15
-fngFileWhole1 = grundgeometrie-direkter-export.stl
-fngFileWhole2 = f16-ascii.stl
-#fngFileWhole = grundgeometrie-mittel.stl
-fngFileBodyPart = f16-body-part-ascii.stl
-fngFileTrailingEdge = f16-trailing-edge-ascii.stl
-zigZagTape = 2zackenbaender0.stl
-#sampleFilename = f16-pte-669x2945x1119.raw
-#sampleFilename = f16-pte-669x2945x100.raw
-#sampleFilename = f16-pte-15.stl #test10_1.stl
-sampleFilename = output.stl
-
-
-#pathReInit = d:/temp/DLR-F16_L0_vx0_V
-pathReInit = d:/temp/DLR-F16_L2_init
-stepReInit = 0
-
-numOfThreads = 1
-availMem = 13e9
-
-uLB = 0.1
-
-#x1min x1max x2min x2max x3min x3max [m]
-#deltaXfine = 0.00001171875
-#deltaXfine = 0.00075
-boundingBox = -0.90 1.20 0.035 0.065 -0.65 0.65
-blockNx = 10 10 10
-
-#deltaXfine = 13393e-9
-#boundingBox = -0.90 1.19145087 0.035 0.06928608 -0.65 0.65
-#blockNx = 10 10 10
-
-#boundingBox = -0.90 1.19998697917 0.035 6.49869791667e-2 -0.65 0.65
-#deltaXfine = 1.30208333333e-5
-#blockNx = 9 9 9
-
-refineLevel = 0
-
-deltaXfine = 0.003 #level 0
-#deltaXfine = 0.0015 #level 1
-#deltaXfine = 0.00075 #level 2
-#deltaXfine = 0.000375 #level 3
-#deltaXfine = 0.0001875 #level 4
-#deltaXfine = 0.00009375 #level 5
-#deltaXfine = 0.000046875 #level 6
-#deltaXfine = 0.0000234375 #level 7
-#deltaXfine = 0.00001171875 #level 8
-#deltaXfine = 13393e-9 #level 8
-
-startDistance = -1.0
-refineDistance = 0.3
-
-writeBlocks = true
-
-newStart = true
-restartStep = 60000
-
-cpStart = 60000
-cpStep = 60000
-
-outTimeStep = 60000
-outTimeStart = 60000
-endTime = 60000
-
-logToFile = false
-
-porousTralingEdge = false
-
-thinWall = true
-
-#Cp
-pcpStart = 10
-pcpStop = 100
-p_inf = -0.00759931
-
-
-
-nupsStep = 1000 1000 10000000
\ No newline at end of file
diff --git a/apps/cpu/DLR-F16/f16-solid.cfg b/apps/cpu/DLR-F16/f16-solid.cfg
deleted file mode 100644
index a0774b8410e3bfb2cefb3a9069d49ed10fc81c65..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16/f16-solid.cfg
+++ /dev/null
@@ -1,81 +0,0 @@
-pathOut = d:/temp/DLR-F16_L0_A
-pathGeo = d:/Projects/SFB880/DLR-F16/A1_Forschungsdaten_Profilgeometrie_STL_CATIA_Rossian
-fngFileWhole1 = grundgeometrie-direkter-export.stl
-fngFileWhole2 = f16-ascii.stl
-
-#fngFileWhole = grundgeometrie-mittel.stl
-fngFileBodyPart = f16-body-part-ascii.stl
-fngFileTrailingEdge = f16-trailing-edge-ascii.stl
-zigZagTape = 2zackenbaender0.stl
-#sampleFilename = f16-pte-669x2945x1119.raw
-#sampleFilename = f16-pte-669x2945x100.raw
-#sampleFilename = f16-pte-15.stl #test10_1.stl
-sampleFilename = output.stl
-
-pathReInit = /work/koskuche/DLR-F16_L7
-stepReInit = 10000
-
-numOfThreads = 4
-availMem = 3e9
-
-uLB = 0.1
-
-#x1min x1max x2min x2max x3min x3max [m]
-#deltaXfine = 0.00001171875
-#deltaXfine = 0.00075
-boundingBox = -0.90 1.20 0.035 0.065 -0.65 0.65
-blockNx = 10 10 10
-
-#deltaXfine = 13393e-9
-#boundingBox = -0.90 1.19145087 0.035 0.06928608 -0.65 0.65
-#blockNx = 10 10 10
-
-#boundingBox = -0.90 1.19998697917 0.035 6.49869791667e-2 -0.65 0.65
-#deltaXfine = 1.30208333333e-5
-#blockNx = 9 9 9
-
-refineLevel = 0
-
-deltaXfine = 0.003 #level 0
-#deltaXfine = 0.0015 #level 1
-#deltaXfine = 0.00075 #level 2
-#deltaXfine = 0.000375 #level 3
-#deltaXfine = 0.0001875 #level 4
-#deltaXfine = 0.00009375 #level 5
-#deltaXfine = 0.000046875 #level 6
-#eltaXfine = 0.0000234375 #level 7
-#deltaXfine = 0.00001171875 #level 8
-
-startDistance = -1.0
-#refineDistance = 1.2
-refineDistance = 0.6
-#refineDistance = 0.3
-
-writeBlocks = true
-
-newStart = false
-restartStep = 15000
-chunk = 160
-
-cpStep = 20000
-cpStart = 20000
-
-outTimeStep = 20000
-outTimeStart = 20000
-
-endTime = 20000
-
-logToFile = false
-
-porousTralingEdge = false
-
-thinWall = false
-
-#Cp
-pcpStart = 1000000
-pcpStop  = 1000000
-
-timeAvStart = 1000000
-timeAvStop  = 1400000
-
-nupsStep = 100 100 10000000
diff --git a/apps/cpu/DLR-F16/f16.cpp b/apps/cpu/DLR-F16/f16.cpp
deleted file mode 100644
index 10cb017ac26ec9b4e78df89c6b08c6d32f24ab43..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16/f16.cpp
+++ /dev/null
@@ -1,1305 +0,0 @@
-#include <iostream>
-#include <string>
-
-
-#include "VirtualFluids.h"
-#include <omp.h>
-using namespace std;
-
-double rangeRandom1()
-{
-   return (2.0*rand())/RAND_MAX-1.0;
-}
-
-void setBC(SPtr<Grid3D> grid, string pathGeo, string fngFileWhole, string zigZagTape, vector<double>  boundingBox, double uLB, double rhoLB, double blockLength, SPtr<BCProcessor> bcProcessor)
-{
-   SPtr<Communicator> comm = MPICommunicator::getInstance();
-   int myid = comm->getProcessID();
-   
-   std::vector<std::vector<SPtr<Block3D>> > blockVector;
-   int minInitLevel;
-   int maxInitLevel;
-   int gridRank;
-
-   gridRank = comm->getProcessID();
-   minInitLevel = grid->getCoarsestInitializedLevel();
-   maxInitLevel = grid->getFinestInitializedLevel();
-   blockVector.resize(maxInitLevel+1);
-   for (int level = minInitLevel; level<=maxInitLevel; level++)
-   {
-      grid->getBlocks(level, gridRank, true, blockVector[level]);
-   }
-
-   for (int level = minInitLevel; level<=maxInitLevel; level++)
-   {
-      for(SPtr<Block3D> block : blockVector[level])
-      {
-         if (block)
-         {
-            SPtr<ILBMKernel> kernel = block->getKernel();
-            kernel->setBCProcessor(bcProcessor->clone(kernel));
-         }
-      }
-   }
-   
-   SetUndefinedNodesBlockVisitor undefNodesVisitor;
-   grid->accept(undefNodesVisitor);
-   
-   SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-   noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-   if (myid==0) UBLOG(logINFO, "Read fngFileWhole:start");
-   SPtr<GbTriFaceMesh3D> fngMeshWhole = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+fngFileWhole, "fngMeshWhole", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-   if (myid==0) UBLOG(logINFO, "Read fngFileWhole:end");
-   fngMeshWhole->rotate(0.0, 0.5, 0.0);
-   SPtr<D3Q27TriFaceMeshInteractor> fngIntrWhole = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshWhole, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-   if (myid==0) UBLOG(logINFO, "Read zigZagTape:start");
-   string ZckbndFilename = pathGeo+"/"+zigZagTape;
-   SPtr<GbTriFaceMesh3D> meshBand1(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape1"));
-   meshBand1->rotate(0.0, 5, 0.0);
-   meshBand1->translate(15, 0, -12.850);
-   // Zackenband2
-   SPtr<GbTriFaceMesh3D> meshBand2(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape2"));
-   meshBand2->rotate(0.0, 5, 0.0);
-   meshBand2->translate(15, 5, -12.850);
-
-   SPtr<GbTriFaceMesh3D> meshBand5(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape5"));
-   meshBand5->rotate(0.0, -1, 0.0);
-   meshBand5->rotate(0.0, 0.0, 180.0);
-   //meshBand5->translate(30, 0, -37.3);
-   meshBand5->translate(30, 0, -37.2);
-   
-   // Zackenband6
-   SPtr<GbTriFaceMesh3D> meshBand6(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape6"));
-   meshBand6->rotate(0.0, -1, 0.0);
-   meshBand6->rotate(0.0, 0.0, 180.0);
-   //meshBand6->translate(30, 5, -37.3);
-   meshBand6->translate(30, 5, -37.2);
-
-   SPtr<D3Q27TriFaceMeshInteractor> triBand1Interactor(new D3Q27TriFaceMeshInteractor(meshBand1, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-   SPtr<D3Q27TriFaceMeshInteractor> triBand2Interactor(new D3Q27TriFaceMeshInteractor(meshBand2, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-   SPtr<D3Q27TriFaceMeshInteractor> triBand3Interactor(new D3Q27TriFaceMeshInteractor(meshBand5, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-   SPtr<D3Q27TriFaceMeshInteractor> triBand4Interactor(new D3Q27TriFaceMeshInteractor(meshBand6, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-
-   mu::Parser fct;
-   fct.SetExpr("U");
-   fct.DefineConst("U", uLB);
-   SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-   velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityWithDensityBCAlgorithm()));
-
-   SPtr<BCAdapter> outflowBCAdapter(new DensityBCAdapter(rhoLB));
-   outflowBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingOutflowBCAlgorithm()));
-
-   double g_minX1 = boundingBox[0]*1000.0;
-   double g_minX2 = boundingBox[2]*1000.0;
-   double g_minX3 = boundingBox[4]*1000.0;
-
-   double g_maxX1 = boundingBox[1]*1000.0;
-   double g_maxX2 = boundingBox[3]*1000.0;
-   double g_maxX3 = boundingBox[5]*1000.0;
-   
-   GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-   
-   GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-   
-   SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, velBCAdapter, Interactor3D::SOLID));
-   SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, velBCAdapter, Interactor3D::SOLID));
-   //inflow
-   GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-   //outflow
-   GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-   //inflow
-   SPtr<D3Q27Interactor> inflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-   //outflow
-   SPtr<D3Q27Interactor> outflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, outflowBCAdapter, Interactor3D::SOLID));
-
-   SetSolidBlockVisitor v1(fngIntrWhole, BlockType::BC);
-   grid->accept(v1);
-
-   SetSolidBlockVisitor v2(triBand1Interactor, BlockType::BC);
-   grid->accept(v2);
-
-   SetSolidBlockVisitor v3(triBand1Interactor, BlockType::BC);
-   grid->accept(v3);
-
-   SetSolidBlockVisitor v4(triBand2Interactor, BlockType::BC);
-   grid->accept(v4);
-   
-   SetSolidBlockVisitor v5(triBand3Interactor, BlockType::BC);
-   grid->accept(v5);
-
-   SetSolidBlockVisitor v6(triBand4Interactor, BlockType::BC);
-   grid->accept(v6);
-
-   SetSolidBlockVisitor v7(addWallZminInt, BlockType::BC);
-   grid->accept(v7);
-
-   SetSolidBlockVisitor v8(addWallZmaxInt, BlockType::BC);
-   grid->accept(v8);
-
-   SetSolidBlockVisitor v9(inflowIntr, BlockType::BC);
-   grid->accept(v9);
-
-   SetSolidBlockVisitor v10(outflowIntr, BlockType::BC);
-   grid->accept(v10);
-   
-   inflowIntr->initInteractor();
-   outflowIntr->initInteractor();
-   addWallZminInt->initInteractor();
-   addWallZmaxInt->initInteractor();
-   fngIntrWhole->initInteractor();
-   triBand1Interactor->initInteractor();
-   triBand2Interactor->initInteractor();
-   triBand3Interactor->initInteractor();
-   triBand3Interactor->initInteractor();
-   triBand4Interactor->initInteractor();
-}
-
-void run(string configname)
-{
-   try
-   {
-
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathOut = config.getValue<string>("pathOut");
-      string          pathGeo = config.getValue<string>("pathGeo");
-      string          fngFileWhole1 = config.getValue<string>("fngFileWhole1");
-      string          fngFileWhole2 = config.getValue<string>("fngFileWhole2");
-      string          fngFileTrailingEdge = config.getValue<string>("fngFileTrailingEdge");
-      string          fngFileBodyPart = config.getValue<string>("fngFileBodyPart");
-      string          zigZagTape = config.getValue<string>("zigZagTape");
-      int             numOfThreads = config.getValue<int>("numOfThreads");
-      vector<int>     blockNx = config.getVector<int>("blockNx");
-      vector<double>  boundingBox = config.getVector<double>("boundingBox");
-      double          uLB = config.getValue<double>("uLB");
-      double          restartStep = config.getValue<double>("restartStep");
-      double          cpStart = config.getValue<double>("cpStart");
-      double          cpStep = config.getValue<double>("cpStep");
-      double          endTime = config.getValue<double>("endTime");
-      double          outTimeStep = config.getValue<double>("outTimeStep");
-      double          outTimeStart = config.getValue<double>("outTimeStart");
-      double          availMem = config.getValue<double>("availMem");
-      int             refineLevel = config.getValue<int>("refineLevel");
-      bool            logToFile = config.getValue<bool>("logToFile");
-      bool            porousTralingEdge = config.getValue<bool>("porousTralingEdge");
-      double          deltaXfine = config.getValue<double>("deltaXfine")*1000.0;
-      bool            thinWall = config.getValue<bool>("thinWall");
-      double          refineDistance = config.getValue<double>("refineDistance");
-      double          startDistance = config.getValue<double>("startDistance");
-      vector<double>  nupsStep = config.getVector<double>("nupsStep");
-      bool            newStart = config.getValue<bool>("newStart");
-      bool            writeBlocks = config.getValue<bool>("writeBlocks");
-      string          sampleFilename = config.getValue<string>("sampleFilename");
-      string          pathReInit = config.getValue<string>("pathReInit");
-      int             stepReInit = config.getValue<int>("stepReInit");
-      
-      double          pcpStart = config.getValue<double>("pcpStart");
-      double          pcpStop  = config.getValue<double>("pcpStop");
-      //double          p_inf    = config.getValue<double>("p_inf");
-      
-      double          timeAvStart       = config.getValue<double>("timeAvStart");
-      double          timeAvStop        = config.getValue<double>("timeAvStop");
-      
-      int             chunk = config.getValue<int>("chunk");
-
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid==0)
-         {
-            const char* str = pathOut.c_str();
-            mkdir(str, S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH);
-         }
-#endif 
-
-         if (myid==0)
-         {
-            stringstream logFilename;
-            logFilename<<pathOut+"/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Point 1");
-         UBLOG(logINFO, "PID = "<<myid<<" Total Physical Memory (RAM): "<<Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used: "<<Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-      }
-
-
-      //the geometry is in mm
-
-      double g_minX1 = boundingBox[0]*1000.0;
-      double g_minX2 = boundingBox[2]*1000.0;
-      double g_minX3 = boundingBox[4]*1000.0;
-
-      double g_maxX1 = boundingBox[1]*1000.0;
-      double g_maxX2 = boundingBox[3]*1000.0;
-      double g_maxX3 = boundingBox[5]*1000.0;
-
-      //////////////////////////////////////////////////////////////////////////
-      double deltaXcoarse = deltaXfine*(double)(1<<refineLevel);
-      //double nx2_temp = floor((g_maxX2 - g_minX2) / (deltaXcoarse*(double)blockNx[0]));
-
-      //deltaXcoarse = (g_maxX2 - g_minX2) / (nx2_temp*(double)blockNx[0]);
-      //UBLOG(logINFO, "nx2_temp:"<<nx2_temp);
-      //g_maxX2 -= 0.5* deltaXcoarse;
-      //////////////////////////////////////////////////////////////////////////
-      double blockLength = (double)blockNx[0]*deltaXcoarse;
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-      double Re = 1e6;
-
-      double rhoLB = 0.0;
-      double rhoReal = 1.2041; //(kg/m3)
-      //double nueReal = 153.5e-7; //m^2/s
-      double uReal = 55; //m/s
-      double lReal = 0.3;//m
-      //double uReal = Re*nueReal / lReal;
-      double nuReal = (uReal*lReal)/Re; //m^2/s
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-      double Ma = 0.15;//Ma-Real!
-      //double csReal = uReal / Ma;
-      //double hLB = lReal / deltaXcoarse;
-
-      //LBMUnitConverter unitConverter(lReal, csReal, rhoReal, hLB);
-
-      //double u_LB = uReal   * unitConverter.getFactorVelocityWToLb();
-      //double nu_LB = nueReal * unitConverter.getFactorViscosityWToLb();
-      double lLB = lReal*1000.0/deltaXcoarse;
-      double nuLB = (uLB*lLB)/Re; //0.005;
-      //double nuLB = 0.005;
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      ////////////////////////////////////////////////////////////////////////
-      //Grid
-      //////////////////////////////////////////////////////////////////////////
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      //BC adapters
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      if (thinWall)
-      {
-         noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new ThinWallNoSlipBCAlgorithm()));
-      }
-      else
-      {
-         noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-      }
-
-      SPtr<BCAdapter> slipBCAdapter(new SlipBCAdapter());
-      slipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new SlipBCAlgorithm()));
-
-      mu::Parser fct;
-      fct.SetExpr("U");
-      fct.DefineConst("U", uLB);
-      SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-      velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityWithDensityBCAlgorithm()));
-      //velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityBCAlgorithm()));
-
-      SPtr<BCAdapter> outflowBCAdapter(new DensityBCAdapter(rhoLB));
-      outflowBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingOutflowBCAlgorithm()));
-      //denBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      //bcVisitor.addBC(slipBCAdapter);
-      bcVisitor.addBC(velBCAdapter);
-      bcVisitor.addBC(outflowBCAdapter);
-
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant2LBMKernel(blockNx[0], blockNx[1], blockNx[2], CompressibleCumulant2LBMKernel::NORMAL));
-      SPtr<BCProcessor> bcProc;
-      if (thinWall)
-      {
-         bcProc = SPtr<BCProcessor>(new ThinWallBCProcessor());
-      }
-      else
-      {
-         bcProc = SPtr<BCProcessor>(new BCProcessor());
-      }
-      kernel->setBCProcessor(bcProc);
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<UbScheduler> rSch(new UbScheduler(cpStep, cpStart));
-      //MPIIORestartCoProcessor rcp(grid, rSch, pathOut, comm);
-      //rcp.setChunk(chunk);
-      
-      SPtr<UbScheduler> rSch2(new UbScheduler(restartStep));
-      //RestartCoProcessor rp(grid, rSch2, comm, pathOut, RestartCoProcessor::BINARY);
-     
-      //MPIIORestart2CoProcessor rcp2(grid, rSch2, pathOut+"/mpiio2", comm);      
-      //rcp2.setLBMKernel(kernel);
-      //rcp2.setBCProcessor(bcProc);
-      
-      
-      MPIIORestart1CoProcessor rcp3(grid, rSch, pathOut+"/mpiio3", comm);
-      rcp3.setLBMKernel(kernel);
-      rcp3.setBCProcessor(bcProc);
-      
-      //MPIIORestart3CoProcessor rcp4(grid, rSch, pathOut+"/mpiio4", comm);
-      //rcp4.setLBMKernel(kernel);
-      //rcp4.setBCProcessor(bcProc);
-      //////////////////////////////////////////////////////////////////////////
-
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Point 2");
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-      }
-
-      //if (grid->getTimeStep() == 0)
-      if (newStart)
-      {
-         ////////////////////////////////////////////////////////////////////////
-         //define grid
-         //////////////////////////////////////////////////////////////////////////
-         grid->setDeltaX(deltaXcoarse);
-         grid->setBlockNX(blockNx[0], blockNx[1], blockNx[2]);
-
-         SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid==0) GbSystem3D::writeGeoObject(gridCube.get(), pathOut+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         grid->setPeriodicX1(false);
-         grid->setPeriodicX2(true);
-         grid->setPeriodicX3(false);
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "* Re                  = "<<Re);
-            UBLOG(logINFO, "* Ma                  = "<<Ma);
-            UBLOG(logINFO, "* velocity (uReal)    = "<<uReal<<" m/s");
-            UBLOG(logINFO, "* viscosity (nuReal)  = "<<nuReal<<" m^2/s");
-            UBLOG(logINFO, "* chord length (lReal)= "<<lReal<<" m");
-            UBLOG(logINFO, "* velocity LB (uLB)   = "<<uLB);
-            UBLOG(logINFO, "* viscosity LB (nuLB) = "<<nuLB);
-            UBLOG(logINFO, "* chord length (l_LB) = "<<lLB<<" dx_base");
-            UBLOG(logINFO, "* dx_base             = "<<deltaXcoarse/1000<<" m");
-            UBLOG(logINFO, "* dx_refine           = "<<deltaXfine/1000<<" m");
-            UBLOG(logINFO, "* blocknx             = "<<blockNx[0]<<"x"<<blockNx[1]<<"x"<<blockNx[2]);
-            UBLOG(logINFO, "* refineDistance      = "<<refineDistance);
-            UBLOG(logINFO, "* number of levels    = "<<refineLevel+1);
-            UBLOG(logINFO, "* number of threads   = "<<numOfThreads);
-            UBLOG(logINFO, "* number of processes = "<<comm->getNumberOfProcesses());
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         SPtr<GbTriFaceMesh3D> fngMeshWhole1;
-         SPtr<GbTriFaceMesh3D> fngMeshWhole2;
-         SPtr<GbTriFaceMesh3D> fngMeshBodyPart;
-         SPtr<GbTriFaceMesh3D> fngMeshTrailingEdge;
-         SPtr<GbTriFaceMesh3D> porousTrailingEdge;
-         if (porousTralingEdge)
-         {
-            if (myid==0) UBLOG(logINFO, "Read fngFileBodyPart:start");
-            fngMeshBodyPart = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+fngFileBodyPart, "fngMeshBody", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read fngFileBodyPart:end");
-            fngMeshBodyPart->rotate(0.0, 0.5, 0.0);
-            if (myid==0) GbSystem3D::writeGeoObject(fngMeshBodyPart.get(), pathOut+"/geo/fngMeshBody", WbWriterVtkXmlBinary::getInstance());
-
-            if (myid==0) UBLOG(logINFO, "Read fngFileTrailingEdge:start");
-            fngMeshTrailingEdge = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+fngFileTrailingEdge, "fngMeshTrailingEdge", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read fngFileTrailingEdge:end");
-            fngMeshTrailingEdge->rotate(0.0, 0.5, 0.0);
-            fngMeshTrailingEdge->translate(-0.05, 0, 1.3);
-            if (myid==0) GbSystem3D::writeGeoObject(fngMeshTrailingEdge.get(), pathOut+"/geo/fngMeshTrailingEdge", WbWriterVtkXmlBinary::getInstance());
-
-            if (myid==0) UBLOG(logINFO, "Read porousTrailingEdge:start");
-            //porousTrailingEdge = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+sampleFilename, "porousTrailingEdge", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            porousTrailingEdge = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+sampleFilename, "porousTrailingEdge", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read porousTrailingEdge:end");
-            porousTrailingEdge->rotate(90, -90, 0.0);
-            porousTrailingEdge->rotate(0, -4.3, 0.0);
-            //porousTrailingEdge->translate(280.5, 40.0, 3.5);
-            porousTrailingEdge->translate(276, 15.95, 3.5);
-            if (myid==0) GbSystem3D::writeGeoObject(porousTrailingEdge.get(), pathOut+"/geo/porousTrailingEdge", WbWriterVtkXmlASCII::getInstance());
-
-            //string samplePathname = pathGeo+"/"+sampleFilename;
-
-            //int pmNX1 = 669;
-            //int pmNX2 = 2945;
-            //int pmNX3 = 100;
-
-            //double deltaVoxelX1 = 13393e-6;
-            //double deltaVoxelX2 = 13393e-6;
-            //double deltaVoxelX3 = 13393e-6;
-
-            //double lthreshold = 11538;
-            //double uthreshold = 65535;
-
-            //if (myid==0) UBLOG(logINFO, "read voxel matrix: start");
-            //GbVoxelMatrix3DPtr porousTrailingEdge(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0.0 , lthreshold, uthreshold));
-            //porousTrailingEdge->readMatrixFromRawFile<unsigned short>(samplePathname, GbVoxelMatrix3D::BigEndian);
-            //porousTrailingEdge->setVoxelMatrixDelta((float)deltaVoxelX1, (float)deltaVoxelX2, (float)deltaVoxelX3);
-            //porousTrailingEdge->setVoxelMatrixMininum(0.0, 0.0, 0.0);
-            //if (myid==0) UBLOG(logINFO, "read voxel matrix: end");
-
-            //if (myid==0) UBLOG(logINFO, "rotate voxel matrix: start");
-            //porousTrailingEdge->rotate90aroundZ();
-            //porousTrailingEdge->rotate90aroundZ();
-            //porousTrailingEdge->rotate90aroundZ();
-            //porousTrailingEdge->rotate90aroundX();
-            //porousTrailingEdge->rotateAroundY(0.07);
-            //porousTrailingEdge->translate(276, 15.95, 3.26);
-            //
-            //if (myid==0) UBLOG(logINFO, "rotate voxel matrix: end");
-
-            ////if (myid==0) porousTrailingEdge->writeToVTKImageDataASCII(pathOut+"/geo/PorousTrailingEdge");
-            //if (myid==0) porousTrailingEdge->writeToVTKImageDataAppended(pathOut+"/geo/PorousTrailingEdge");
-
-         }
-         else
-         {
-            //if (myid==0) UBLOG(logINFO, "Read fngFileWhole1:start");
-            //fngMeshWhole1 = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+fngFileWhole1, "fngMeshWhole1", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            //if (myid==0) UBLOG(logINFO, "Read fngFileWhole1:end");
-            //fngMeshWhole1->rotate(0.0, 0.5, 0.0);
-            //if (myid==0) GbSystem3D::writeGeoObject(fngMeshWhole1.get(), pathOut+"/geo/fngMeshWhole1", WbWriterVtkXmlBinary::getInstance());
-            
-            if (myid==0) UBLOG(logINFO, "Read fngFileWhole2:start");
-            fngMeshWhole2 = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+fngFileWhole2, "fngMeshWhole2", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read fngFileWhole2:end");
-            fngMeshWhole2->rotate(0.0, 0.5, 0.0);
-            if (myid==0) GbSystem3D::writeGeoObject(fngMeshWhole2.get(), pathOut+"/geo/fngMeshWhole2", WbWriterVtkXmlBinary::getInstance());
-         }
-
-         //////////////////////////////////////////////////////////////////////////
-         // Zackenband
-         //////////////////////////////////////////////////////////////////////////
-         //top
-         //////////////////////////////////////////////////////////////////////////
-         if (myid==0) UBLOG(logINFO, "Read zigZagTape:start");
-         string ZckbndFilename = pathGeo+"/"+zigZagTape;
-         SPtr<GbTriFaceMesh3D> meshBand1(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape1"));
-         meshBand1->rotate(0.0, 5, 0.0);
-         meshBand1->translate(15, 0, -12.850);
-         if (myid==0) GbSystem3D::writeGeoObject(meshBand1.get(), pathOut+"/geo/zigZagTape1", WbWriterVtkXmlASCII::getInstance());
-         // Zackenband2
-         SPtr<GbTriFaceMesh3D> meshBand2(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape2"));
-         meshBand2->rotate(0.0, 5, 0.0);
-         meshBand2->translate(15, 5, -12.850);
-         if (myid==0) GbSystem3D::writeGeoObject(meshBand2.get(), pathOut+"/geo/zigZagTape2", WbWriterVtkXmlASCII::getInstance());
-         //// Zackenband3
-         //SPtr<GbTriFaceMesh3D> meshBand3(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape3"));
-         //meshBand3->rotate(0.0, 5, 0.0);
-         //meshBand3->translate(15, 0, -12.35);
-         //if (myid==0) GbSystem3D::writeGeoObject(meshBand3.get(), pathOut+"/geo/zigZagTape3", WbWriterVtkXmlASCII::getInstance());
-         //// Zackenband4
-         //SPtr<GbTriFaceMesh3D> meshBand4(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape4"));
-         //meshBand4->rotate(0.0, 5, 0.0);
-         //meshBand4->translate(15, 5, -12.35);
-         //if (myid==0) GbSystem3D::writeGeoObject(meshBand4.get(), pathOut+"/geo/zigZagTape4", WbWriterVtkXmlASCII::getInstance());
-
-         //bottom
-         SPtr<GbTriFaceMesh3D> meshBand5(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape5"));
-         meshBand5->rotate(0.0, -1, 0.0);
-         meshBand5->rotate(0.0, 0.0, 180.0);
-         //meshBand5->translate(30, 0, -37.3);
-         meshBand5->translate(30, 0, -37.2);
-         if (myid==0) GbSystem3D::writeGeoObject(meshBand5.get(), pathOut+"/geo/zigZagTape5", WbWriterVtkXmlASCII::getInstance());
-         // Zackenband6
-         SPtr<GbTriFaceMesh3D> meshBand6(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape6"));
-         meshBand6->rotate(0.0, -1, 0.0);
-         meshBand6->rotate(0.0, 0.0, 180.0);
-         //meshBand6->translate(30, 5, -37.3);
-         meshBand6->translate(30, 5, -37.2);
-         if (myid==0) GbSystem3D::writeGeoObject(meshBand6.get(), pathOut+"/geo/zigZagTape6", WbWriterVtkXmlASCII::getInstance());
-         //// Zackenband7
-         //SPtr<GbTriFaceMesh3D> meshBand7(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape7"));
-         //meshBand7->rotate(0.0, 5, 0.0);
-         //meshBand7->translate(15, 0, -12.35);
-         //if (myid==0) GbSystem3D::writeGeoObject(meshBand7.get(), pathOut+"/geo/zigZagTape7", WbWriterVtkXmlASCII::getInstance());
-         //// Zackenband8
-         //SPtr<GbTriFaceMesh3D> meshBan8(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape8"));
-         //meshBan8->rotate(0.0, 5, 0.0);
-         //meshBan8->translate(15, 5, -12.35);
-         //if (myid==0) GbSystem3D::writeGeoObject(meshBan8.get(), pathOut+"/geo/zigZagTape8", WbWriterVtkXmlASCII::getInstance());
-         if (myid==0) UBLOG(logINFO, "Read zigZagTape:end");
-
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 3");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-         //////////////////////////////////////////////////////////////////////////
-         //return;
-
-         //SPtr<Interactor3D> fngIntrWhole1;
-         SPtr<Interactor3D> fngIntrWhole2;
-         SPtr<Interactor3D> fngIntrBodyPart;
-         SPtr<Interactor3D> fngIntrTrailingEdge;
-         SPtr<Interactor3D> porousIntrTrailingEdge;
-
-         if (porousTralingEdge)
-         {
-            fngIntrBodyPart = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshBodyPart, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-            fngIntrTrailingEdge = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshTrailingEdge, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-            porousIntrTrailingEdge = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(porousTrailingEdge, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-         }
-         else
-         {
-            //fngIntrWhole1 = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshWhole1, grid, noSlipBCAdapter, Interactor3D::SOLID));
-            fngIntrWhole2 = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshWhole2, grid, noSlipBCAdapter, Interactor3D::SOLID));//, Interactor3D::POINTS));
-         }
-
-         SPtr<D3Q27TriFaceMeshInteractor> triBand1Interactor(new D3Q27TriFaceMeshInteractor(meshBand1, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-         SPtr<D3Q27TriFaceMeshInteractor> triBand2Interactor(new D3Q27TriFaceMeshInteractor(meshBand2, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-         SPtr<D3Q27TriFaceMeshInteractor> triBand3Interactor(new D3Q27TriFaceMeshInteractor(meshBand5, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-         SPtr<D3Q27TriFaceMeshInteractor> triBand4Interactor(new D3Q27TriFaceMeshInteractor(meshBand6, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-
-         if (refineLevel>0&&myid==0&&writeBlocks)
-         {
-            if (myid==0) UBLOG(logINFO, "Refinement - start");
-            //RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            //refineHelper.addGbObject(geo, refineLevel);
-            //refineHelper.refine();
-
-            //RefineAroundGbObjectHelper refineHelper1(grid, refineLevel-1, boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(geoIntr1), 0.0, 10.0, comm);
-            //refineHelper1.refine();
-            //RefineAroundGbObjectHelper refineHelper2(grid, refineLevel, boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(geoIntr2), -1.0, 5.0, comm);
-            //refineHelper2.refine();
-
-
-            int rank = grid->getRank();
-            grid->setRank(0);
-
-            if (porousTralingEdge)
-            {
-                dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrBodyPart)->refineBlockGridToLevel(refineLevel-1, startDistance, refineDistance);
-            }
-            else
-            {
-                dynamicPointerCast<D3Q27TriFaceMeshInteractor>(fngIntrWhole2)->refineBlockGridToLevel(refineLevel, startDistance, refineDistance);
-            }
-
-            //boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triBand1Interactor)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-            //boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triBand2Interactor)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-            //boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triBand3Interactor)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-            //boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triBand4Interactor)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-
-
-            //SPtr<GbObject3D> fngBox(new GbCuboid3D(fngMeshWhole->getX1Minimum(), fngMeshWhole->getX2Minimum(), fngMeshWhole->getX3Minimum(),
-            //                                    fngMeshWhole->getX1Maximum(), fngMeshWhole->getX2Maximum(), fngMeshWhole->getX3Maximum()));
-            //if (myid==0) GbSystem3D::writeGeoObject(fngBox.get(), pathOut+"/geo/fngBox", WbWriterVtkXmlASCII::getInstance());
-
-            //RefineCrossAndInsideGbObjectBlockVisitor refVisitor0(fngBox, refineLevel);
-            //grid->accept(refVisitor0);
-
-
-            //SPtr<GbObject3D> bandTopBox(new GbCuboid3D(meshBand1->getX1Minimum(), meshBand1->getX2Minimum(), meshBand1->getX3Minimum(),
-            //   meshBand1->getX1Maximum(), meshBand1->getX2Maximum(), meshBand1->getX3Maximum()));
-            //if (myid==0) GbSystem3D::writeGeoObject(bandTopBox.get(), pathOut+"/geo/bandTopBox", WbWriterVtkXmlASCII::getInstance());
-
-            //RefineCrossAndInsideGbObjectBlockVisitor refVisitor1(bandTopBox, refineLevel-1);
-            //grid->accept(refVisitor1);
-
-            //SPtr<GbObject3D> bandBottomBox(new GbCuboid3D(meshBand5->getX1Minimum(), meshBand5->getX2Minimum(), meshBand5->getX3Minimum(),
-            //   meshBand5->getX1Maximum(), meshBand5->getX2Maximum(), meshBand5->getX3Maximum()));
-            //if (myid==0) GbSystem3D::writeGeoObject(bandBottomBox.get(), pathOut+"/geo/bandBottomBox", WbWriterVtkXmlASCII::getInstance());
-
-            //RefineCrossAndInsideGbObjectBlockVisitor refVisitor2(bandBottomBox, refineLevel-1);
-            //grid->accept(refVisitor2);
-
-            //SPtr<GbObject3D> teBox1(new GbCuboid3D(269.0, 0.0, 1.0, 270.0, 100.0, 8.5));
-            // for porous teY
-            //SPtr<GbObject3D> teBox1(new GbCuboid3D(269.0, 0.0, -10.0, 310.0, 100.0, 20.5));
-            //SPtr<GbObject3D> teBox1(new GbCuboid3D(200.0, 0.0, -20.0, 400.0, 100.0, 20.0));
-            //if (myid==0) GbSystem3D::writeGeoObject(teBox1.get(), pathOut+"/geo/teBox1", WbWriterVtkXmlASCII::getInstance());
-
-            //RefineCrossAndInsideGbObjectBlockVisitor refVisitor3(teBox1, 5);
-            //grid->accept(refVisitor3);
-
-            //SPtr<GbObject3D> teBox2(new GbCuboid3D(271.0, 0.0, 3.0, 279.0, 100.0, 5.7));
-            //if (myid==0) GbSystem3D::writeGeoObject(teBox2.get(), pathOut+"/geo/teBox2", WbWriterVtkXmlASCII::getInstance());
-
-            //RefineCrossAndInsideGbObjectBlockVisitor refVisitor4(teBox2, refineLevel);
-            //grid->accept(refVisitor4);
-
-            //level 1
-            SPtr<GbObject3D> wakeBoxL1(new GbCuboid3D(200.0, 0.0, -20.0, 2000.0, 100.0, 20.0));
-            if (myid==0) GbSystem3D::writeGeoObject(wakeBoxL1.get(), pathOut+"/geo/wakeBoxL1", WbWriterVtkXmlASCII::getInstance());
-            RefineCrossAndInsideGbObjectBlockVisitor refVisitorWakeBoxL1(wakeBoxL1, 1);
-            grid->accept(refVisitorWakeBoxL1);
-            
-            //level 4
-            //SPtr<GbObject3D> teBoxL5(new GbCuboid3D(200.0, 0.0, -20.0, 400.0, 100.0, 20.0));
-            //if (myid==0) GbSystem3D::writeGeoObject(teBoxL5.get(), pathOut+"/geo/teBoxL5", WbWriterVtkXmlASCII::getInstance());
-            //RefineCrossAndInsideGbObjectBlockVisitor refVisitorTeBoxL5(teBoxL5, 4);
-            //grid->accept(refVisitorTeBoxL5);
-            
-            //level 5
-            //SPtr<GbObject3D> teBoxL6(new GbCuboid3D(270.0, 0.0, -3.0, 320.0, 100.0, 10.0));
-            //if (myid==0) GbSystem3D::writeGeoObject(teBoxL6.get(), pathOut+"/geo/teBoxL6", WbWriterVtkXmlASCII::getInstance());
-            //RefineCrossAndInsideGbObjectBlockVisitor refVisitorTeBoxL6(teBoxL6, 5);
-            //grid->accept(refVisitorTeBoxL6);
-
-            grid->setRank(rank);
-
-            {
-               WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-               ppblocks.process(0);
-            }
-
-            ////////////////////////////////////////////
-            //METIS
-            //SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-            ////////////////////////////////////////////
-            /////delete solid blocks
-            if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - start");
-            //InteractorsHelper intHelper(grid, metisVisitor);
-            //if (porousTralingEdge)
-            //{
-            //   intHelper.addInteractor(fngIntrBodyPart);
-            //}
-            //else
-            //{
-            //   intHelper.addInteractor(fngIntrWhole);
-            //}
-            //////////////////////////////////////////////////////////////////////////
-
-            //intHelper.selectBlocks();
-
-            if (porousTralingEdge)
-            {
-               SetSolidBlockVisitor v(fngIntrBodyPart, BlockType::SOLID);
-               grid->accept(v);
-               std::vector<SPtr<Block3D>>& sb = fngIntrBodyPart->getSolidBlockSet();
-               for(SPtr<Block3D> block : sb)
-               {
-                  grid->deleteBlock(block);
-               }
-               fngIntrBodyPart->removeSolidBlocks();
-               fngIntrBodyPart->removeBcBlocks();
-            }
-            else
-            {
-               SetSolidBlockVisitor v(fngIntrWhole2, BlockType::SOLID);
-               grid->accept(v);
-               std::vector<SPtr<Block3D>>& sb = fngIntrWhole2->getSolidBlockSet();
-               for(SPtr<Block3D> block : sb)
-               {
-                  grid->deleteBlock(block);
-               }
-               fngIntrWhole2->removeSolidBlocks();
-               fngIntrWhole2->removeBcBlocks();
-            }
-
-            if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - end");
-            //////////////////////////////////////
-
-            //if (porousTralingEdge)
-            //{
-            //   grid->setRank(0);
-            //   boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(fngIntrTrailingEdge)->refineBlockGridToLevel(refineLevel, startDistance, refineDistance);
-            //   grid->setRank(rank);
-
-            //   //SPtr<GbObject3D> trailingEdgeCube(new GbCuboid3D(fngMeshTrailingEdge->getX1Minimum()-blockLength, fngMeshTrailingEdge->getX2Minimum(), fngMeshTrailingEdge->getX3Minimum()-blockLength/2.0,
-            //   //   fngMeshTrailingEdge->getX1Maximum()+blockLength, fngMeshTrailingEdge->getX2Maximum(), fngMeshTrailingEdge->getX3Maximum()+blockLength/2.0));
-            //   //if (myid == 0) GbSystem3D::writeGeoObject(trailingEdgeCube.get(), pathOut + "/geo/trailingEdgeCube", WbWriterVtkXmlASCII::getInstance());
-
-            //   //RefineCrossAndInsideGbObjectBlockVisitor refVisitor(trailingEdgeCube, refineLevel);
-            //   //grid->accept(refVisitor);
-            //}
-
-            RatioBlockVisitor ratioVisitor(refineLevel);
-            CheckRatioBlockVisitor checkRatio(refineLevel);
-            int count = 0;
-
-            do {
-               grid->accept(ratioVisitor);
-               checkRatio.resetState();
-               grid->accept(checkRatio);
-               if (myid==0) UBLOG(logINFO, "count = "<<count++<<" state = "<<checkRatio.getState());
-            } while (!checkRatio.getState());
-
-            //RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-            //grid->accept(ratioSmoothVisitor);
-
-            {
-               WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-               ppblocks.process(1);
-            }
-
-            OverlapBlockVisitor overlapVisitor(refineLevel, false);
-            grid->accept(overlapVisitor);
-
-            //std::vector<int> dirs;
-            //for (int i = D3Q27System::E; i <= D3Q27System::TS; i++)
-            //{
-            //   dirs.push_back(i);
-            //}
-            //SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-            //grid->accept(interDirsVisitor);
-
-            if (myid==0) UBLOG(logINFO, "Refinement - end");
-         }
-         grid->updateDistributedBlocks(comm);
-
-         //if (writeBlocks)
-         //{
-         //   grid->updateDistributedBlocks(comm);
-         //   rcp.writeBlocks(0);
-         //}
-         //else
-         //{
-           //rcp.readBlocks(restartStep);
-           //grid->setTimeStep(restartStep);
-         //}
-
-         //return;
-
-         //Sleep(1000*myid);
-
-           
-
-
-         std::vector<int> dirs;
-         for (int i = D3Q27System::E; i<=D3Q27System::TS; i++)
-         {
-            dirs.push_back(i);
-         }
-         SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-         grid->accept(interDirsVisitor);
-
-         //walls
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathOut+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathOut+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-
-
-         //wall interactors
-         //SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, slipBCAdapter, Interactor3D::SOLID));
-         //SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, slipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, velBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoInflow.get(), pathOut+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathOut+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         SPtr<D3Q27Interactor> inflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //outflow
-         SPtr<D3Q27Interactor> outflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, outflowBCAdapter, Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         //METIS
-         //grid->deleteBlockIDs();
-         //RenumberBlockVisitor renumber;
-         //grid->accept(renumber);
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(inflowIntr);
-         intHelper.addInteractor(outflowIntr);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(triBand1Interactor);
-         intHelper.addInteractor(triBand2Interactor);
-         intHelper.addInteractor(triBand3Interactor);
-         intHelper.addInteractor(triBand4Interactor);
-         
-
-         if (porousTralingEdge)
-         {
-            intHelper.addInteractor(fngIntrBodyPart);
-            intHelper.addInteractor(porousIntrTrailingEdge);
-
-            //string samplePathname = pathGeo+"/"+sampleFilename;
-
-            //double pmNX1 = 669;
-            //double pmNX2 = 2945;
-            //double pmNX3 = 1119;
-
-            //double deltaVoxelX1 = 13393e-6;
-            //double deltaVoxelX2 = 13393e-6;
-            //double deltaVoxelX3 = 13393e-6;
-            //
-            //double lthreshold = 11538;
-            //double uthreshold = 65535;
-
-            //if (myid==0) UBLOG(logINFO, "read voxel matrix: start");
-            //GbVoxelMatrix3DPtr porousTrailingEdge(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-            //porousTrailingEdge->readMatrixFromRawFile<unsigned short>(samplePathname, GbVoxelMatrix3D::BigEndian);
-            //porousTrailingEdge->setVoxelMatrixDelta((float)deltaVoxelX1, (float)deltaVoxelX2, (float)deltaVoxelX3);
-            //porousTrailingEdge->setVoxelMatrixMininum(0.0, 0.0, 0.0);
-            //if (myid==0) UBLOG(logINFO, "read voxel matrix: end");
-
-            //if (myid==0) UBLOG(logINFO, "rotate voxel matrix: start");
-            //porousTrailingEdge->rotate90aroundZ();
-            //porousTrailingEdge->rotate90aroundX();
-            //if (myid==0) UBLOG(logINFO, "rotate voxel matrix: end");
-
-            //if (myid==0) porousTrailingEdge->writeToVTKImageDataASCII(pathOut+"/geo/PorousTrailingEdge");
-         }
-         else
-         {
-            intHelper.addInteractor(fngIntrWhole2);
-         }
-
-         //////////////////////////////////////////////////////////////////////////
-         intHelper.selectBlocks();
-
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - end");
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 4");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-         //////////////////////////////////////
-
-         {
-            WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppblocks.process(2);
-         }
-
-         unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-         int ghostLayer = 3;
-         unsigned long long numberOfNodesPerBlock = (unsigned long long)(blockNx[0])* (unsigned long long)(blockNx[1])* (unsigned long long)(blockNx[2]);
-         unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-         unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blockNx[0]+ghostLayer) * (blockNx[1]+ghostLayer) * (blockNx[2]+ghostLayer);
-         double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27*sizeof(double)+sizeof(int)+sizeof(float)*4));
-         double needMem = needMemAll/double(comm->getNumberOfProcesses());
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Number of blocks = "<<numberOfBlocks);
-            UBLOG(logINFO, "Number of nodes  = "<<numberOfNodes);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level "<<level<<" = "<<nobl);
-               UBLOG(logINFO, "Number of nodes for level "<<level<<" = "<<nobl*numberOfNodesPerBlock);
-            }
-            UBLOG(logINFO, "Necessary memory  = "<<needMemAll<<" bytes");
-            UBLOG(logINFO, "Necessary memory per process = "<<needMem<<" bytes");
-            UBLOG(logINFO, "Available memory per process = "<<availMem<<" bytes");
-         }
-
-         //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel(blockNx[0], blockNx[1], blockNx[2], CompressibleCumulantLBMKernel::NORMAL));
-         ////SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel(blockNx[0], blockNx[1], blockNx[2], IncompressibleCumulantLBMKernel::NORMAL));
-
-         //SPtr<BCProcessor> bcProc;
-
-         //if (thinWall)
-         //{
-            //bcProc = SPtr<BCProcessor>(new ThinWallBCProcessor());
-         //}
-         //else
-         //{
-            //bcProc = SPtr<BCProcessor>(new BCProcessor());
-         //}
-
-         //kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (myid==0) UBLOG(logINFO, "SetKernelBlockVisitor:end");
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 5");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-
-         if (refineLevel>0)
-         {
-            SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         if (myid==0) UBLOG(logINFO, "SetUndefinedNodesBlockVisitor:end");
-
-         //BC
-         intHelper.setBC();
-         if (myid==0) UBLOG(logINFO, "intHelper.setBC():end");
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 6");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-
-
-
-         //initialization of distributions
-         mu::Parser inflowProfileVx1, inflowProfileVx2, inflowProfileVx3;
-         inflowProfileVx1.SetExpr("U*rangeRandom1()");
-         inflowProfileVx1.DefineConst("U", uLB);
-         inflowProfileVx1.DefineFun("rangeRandom1", rangeRandom1);
-         inflowProfileVx2.SetExpr("0.1*U*rangeRandom1()");
-         inflowProfileVx2.DefineConst("U", uLB);
-         inflowProfileVx2.DefineFun("rangeRandom1", rangeRandom1);
-         inflowProfileVx3.SetExpr("0.1*U*rangeRandom1()");
-         inflowProfileVx3.DefineConst("U", uLB);
-         inflowProfileVx3.DefineFun("rangeRandom1", rangeRandom1);
-
-         InitDistributionsBlockVisitor initVisitor1(nuLB, rhoLB);
-         initVisitor1.setVx1(fct);
-         ////initVisitor.setVx1(inflowProfileVx1);
-         ////initVisitor.setVx2(inflowProfileVx2);
-         ////initVisitor.setVx3(inflowProfileVx3);
-         ////initVisitor.setNu(nuLB);
-         grid->accept(initVisitor1);
-
-
-
-         ////set connectors
-         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
-         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         
-         //SPtr<Grid3D> oldGrid(new Grid3D(comm));
-         //
-         ////with MPIIORestartCoProcessor
-         //SPtr<UbScheduler> iSch(new UbScheduler());
-         //MPIIORestart1CoProcessor rcpInit(oldGrid, iSch, pathReInit, comm);
-         //rcpInit.setChunk(chunk);
-         //rcpInit.restart(stepReInit);
-
-         //////with MPIIORestart2CoProcessor
-         ////SPtr<UbScheduler> iSch(new UbScheduler());
-         ////MPIIORestart2CoProcessor rcp(oldGrid, iSch, pathReInit, comm);
-         ////rcp.readBlocks(stepReInit);
-         ////SPtr<Grid3DVisitor> newMetisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-         ////oldGrid->accept(newMetisVisitor);
-         ////rcp.readDataSet(stepReInit);
-         ////rcp.readBoundaryConds(stepReInit);
-
-         //InitDistributionsWithInterpolationGridVisitor initVisitor(oldGrid, iProcessor, nuLB);
-         //grid->accept(initVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //bcVisitor should be accept after initialization!!!!
-         grid->accept(bcVisitor);
-         if (myid==0) UBLOG(logINFO, "grid->accept(bcVisitor):end");
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 7");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-
-
-         //Postrozess
-         {
-            SPtr<UbScheduler> geoSch(new UbScheduler(1));
-            WriteBoundaryConditionsCoProcessor ppgeo(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm);
-            ppgeo.process(0);
-         }
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "PID = "<<myid<<" Point 8");
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         }
-
-         //fngIntrWhole1.reset();
-         fngIntrWhole2.reset();
-
-         ////SPtr<UbScheduler> rSch(new UbScheduler(cpStep, cpStart));
-         ////MPIIORestartCoProcessor rcp(grid, rSch, pathOut, comm);
-
-         GbCuboid3DPtr sponfeLayerBB1(new GbCuboid3D(g_maxX1-750, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathOut+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-         SpongeLayerBlockVisitor slVisitor(sponfeLayerBB1);
-
-         if (myid==0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         
-         //rcp2.process(restartStep);
-         //return;
-         //////////////////////////////////////////////////////////////////////////
-         //////MPIIORestart2CoProcessor
-         //SPtr<UbScheduler> iSch(new UbScheduler());
-         //rcp2.readBlocks(restartStep);
-         //grid->updateDistributedBlocks(comm);
-         
-         //SPtr<Grid3DVisitor> newMetisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-         //grid->accept(newMetisVisitor);
-         
-         //rcp2.restart((int)restartStep);
-         //grid->setTimeStep(restartStep);
-         
-         //rcp.readBlocks(restartStep);
-         //rcp.readDataSet(restartStep);
-         //rcp.readBoundaryConds(restartStep);
-         //grid->setTimeStep(restartStep);
-         
-         //setBC(grid, pathGeo, fngFileWhole2, zigZagTape, boundingBox, uLB, rhoLB, blockLength, bcProc);
-         
-         //rp.process(restartStep);
-
-         rcp3.restart((int)restartStep);
-         grid->setTimeStep(restartStep);
-         
-         //{
-            //WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut+"/mpiio3", WbWriterVtkXmlASCII::getInstance(), comm);
-            //ppblocks.process(0);
-         //}
-         
-         //{
-            //SPtr<UbScheduler> stepSch(new UbScheduler(1));
-            //WriteMacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathOut+"/mpiio3", WbWriterVtkXmlBinary::getInstance(), conv, comm);
-            //pp.process(restartStep);
-         //} 
- 
-         //{
-           
-            //SPtr<UbScheduler> geoSch(new UbScheduler(1));
-            //WriteBoundaryConditionsCoProcessor ppgeo(grid, geoSch, pathOut+"/mpiio3", WbWriterVtkXmlBinary::getInstance(), conv, comm);
-            //ppgeo.process(0);
-         //}
-
-         //rcp3.process(restartStep);
-         
-         //return;
-         
-         
-     
-            
-         
-                 
-         ////////////////////////////////////////////////////////////////////////////
-         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         grid->accept(bcVisitor);
-
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-         
-      }
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTimeStep,outTimeStart));
-
-
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Point 9");
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-      }
-
-      ////////////////////////////////////////////////////////////////////////
-      ////MPIIORestart2CoProcessor 
-      //grid->deleteBlockIDs();
-      //RenumberBlockVisitor renumber;
-      //grid->accept(renumber);
-      //SPtr<UbScheduler> iSch(new UbScheduler(1));
-      //MPIIORestart2CoProcessor rcpInit(grid, iSch, pathOut+"/mpiio2", comm);
-      //rcpInit.process(0);
-      ////////////////////////////////////////////////////////////////////////
-
-      //////////////////////////////////////////////////////////////////////////
-      ////MPIIORestartCoProcessor 
-      //SPtr<UbScheduler> iSch(new UbScheduler(1));
-      //MPIIORestartCoProcessor rcpInit(grid, iSch, pathOut, comm);
-      //rcpInit.process(0);
-      //////////////////////////////////////////////////////////////////////////
-
-      WriteMacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm);
-      //pp.process(0);
-
-      //rcp.process(0);
-
-      //return;
-
-      //////////////////////////////////////////////////////////////////////////
-      ////Forces calculation
-      //////////////////////////////////////////////////////////////////////////
-      //if (myid==0) UBLOG(logINFO, "Read fngFileWhole2:start");
-      //SPtr<GbTriFaceMesh3D> fngMeshWhole2 = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+fngFileWhole2, "fngMeshWhole2", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-      //if (myid==0) UBLOG(logINFO, "Read fngFileWhole2:end");
-      //fngMeshWhole2->rotate(0.0, 0.5, 0.0);
-      //SPtr<D3Q27TriFaceMeshInteractor> fngIntrWhole2 = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshWhole2, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-      //SetSolidBlockVisitor fngVisitor(fngIntrWhole2, SetSolidBlockVisitor::BC);
-      //grid->accept(fngVisitor);
-      //fngIntrWhole2->initInteractor();
-      
-      //grid->accept(bcVisitor);
-
-      //string ZckbndFilename = pathGeo+"/"+zigZagTape;
-      //SPtr<GbTriFaceMesh3D> meshBand1(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape1"));
-      //meshBand1->rotate(0.0, 5, 0.0);
-      //meshBand1->translate(15, 0, -12.850);
-      //// Zackenband2
-      //SPtr<GbTriFaceMesh3D> meshBand2(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape2"));
-      //meshBand2->rotate(0.0, 5, 0.0);
-      //meshBand2->translate(15, 5, -12.850);
-
-      //SPtr<GbTriFaceMesh3D> meshBand5(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape5"));
-      //meshBand5->rotate(0.0, -1, 0.0);
-      //meshBand5->rotate(0.0, 0.0, 180.0);
-      //meshBand5->translate(30, 0, -37.2);
-      //// Zackenband6
-      //SPtr<GbTriFaceMesh3D> meshBand6(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape6"));
-      //meshBand6->rotate(0.0, -1, 0.0);
-      //meshBand6->rotate(0.0, 0.0, 180.0);
-      //meshBand6->translate(30, 5, -37.2);
-
-      //SPtr<D3Q27TriFaceMeshInteractor> triBand1Interactor(new D3Q27TriFaceMeshInteractor(meshBand1, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-      //SPtr<D3Q27TriFaceMeshInteractor> triBand2Interactor(new D3Q27TriFaceMeshInteractor(meshBand2, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-      //SPtr<D3Q27TriFaceMeshInteractor> triBand3Interactor(new D3Q27TriFaceMeshInteractor(meshBand5, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-      //SPtr<D3Q27TriFaceMeshInteractor> triBand4Interactor(new D3Q27TriFaceMeshInteractor(meshBand6, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-
-      //SetSolidOrTransBlockVisitor band1Visitor(triBand1Interactor, SetSolidOrTransBlockVisitor::TRANS);
-      //grid->accept(band1Visitor);
-      //triBand1Interactor->initInteractor();
-
-      //SetSolidOrTransBlockVisitor band2Visitor(triBand2Interactor, SetSolidOrTransBlockVisitor::TRANS);
-      //grid->accept(band2Visitor);
-      //triBand2Interactor->initInteractor();
-
-      //SetSolidOrTransBlockVisitor band3Visitor(triBand3Interactor, SetSolidOrTransBlockVisitor::TRANS);
-      //grid->accept(band3Visitor);
-      //triBand3Interactor->initInteractor();
-
-      //SetSolidOrTransBlockVisitor band4Visitor(triBand4Interactor, SetSolidOrTransBlockVisitor::TRANS);
-      //grid->accept(band4Visitor);
-      //triBand4Interactor->initInteractor();
-
-      //double b    = 30; //wingspan
-      //double t    = 300; //chord length
-      //double area = (b*t)/(deltaXcoarse*deltaXcoarse);
-      //double v    = uLB;
-
-      //CalculateForcesCoProcessor fp(grid, stepSch, pathOut + "/forces/forces.txt", comm, v, area);
-      //fp.addInteractor(fngIntrWhole2);
-      //fp.addInteractor(triBand1Interactor);
-      //fp.addInteractor(triBand2Interactor);
-      //fp.addInteractor(triBand3Interactor);
-      //fp.addInteractor(triBand4Interactor);
-      //////////////////////////////////////////////////////////////////////////
-
-      //////////////////////////////////////////////////////////////////////////
-      ////Cp calculation
-      //////////////////////////////////////////////////////////////////////////
-      //SPtr<UbScheduler> pcpSch(new UbScheduler(1, pcpStart, pcpStop));
-
-      //double planeCenter = g_minX2+(g_maxX2-g_minX2)/2.0;
-      //double planeX2min = planeCenter-deltaXfine;
-      //double planeX2max = planeCenter;//planeCenter+deltaXfine;
-      //GbCuboid3DPtr plane(new GbCuboid3D(g_minX1,planeX2min,g_minX3,g_maxX1,planeX2max,g_maxX3));
-      //if (myid==0) GbSystem3D::writeGeoObject(plane.get(), pathOut+"/geo/plane", WbWriterVtkXmlASCII::getInstance());
-
-      //PressureCoefficientCoProcessor pcp(grid, pcpSch, plane, pathOut+"/cp/cp", comm);
-      //pcp.addInteractor(fngIntrWhole2);
-      //////////////////////////////////////////////////////////////////////////
-
-      SPtr<UbScheduler> tavSch(new UbScheduler(1, timeAvStart, timeAvStop));
-      TimeAveragedValuesSPtr<CoProcessor> tav(new TimeAveragedValuesCoProcessor(grid, pathOut, WbWriterVtkXmlBinary::getInstance(), tavSch, comm,
-        TimeAveragedValuesCoProcessor::Density | TimeAveragedValuesCoProcessor::Velocity | TimeAveragedValuesCoProcessor::Fluctuations));
-      tav->setWithGhostLayer(true);
-
-      SPtr<IntegrateValuesHelper> mic1(new IntegrateValuesHelper(grid, comm,300-deltaXcoarse,35,-600-deltaXcoarse,
-         300,65,-600));
-      if (myid==0) GbSystem3D::writeGeoObject(mic1->getBoundingBox().get(), pathOut+"/geo/mic1", WbWriterVtkXmlBinary::getInstance());
-      SPtr<UbScheduler> stepMV(new UbScheduler(1));
-      //TimeseriesCoProcessor tsp1(grid, stepMV, mic1, pathOut+"/mic/mic1", comm);
-
-      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepSch));
-      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, tavSch, CalculationManager::MPI));
-
-
-      const SPtr<ConcreteCalculatorFactory> calculatorFactory = std::make_shared<ConcreteCalculatorFactory>(stepSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, calculatorFactory, CalculatorType::PREPOSTBC));
-
-      if (myid==0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid==0) UBLOG(logINFO, "Simulation-end");
-      
-      ////////////////////////////////////////////////////////////////////////
-      //MPIIORestart2CoProcessor 
-      //grid->deleteBlockIDs();
-      //RenumberBlockVisitor renumber;
-      //grid->accept(renumber);
-      //SPtr<UbScheduler> iSch(new UbScheduler(1));
-      //MPIIORestart2CoProcessor rcpInit(grid, iSch, pathOut+"/mpiio2", comm);
-      //rcpInit.process(0);
-      ////////////////////////////////////////////////////////////////////////
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Point 10");
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-      }
-   }
-   catch (std::exception& e)
-   {
-      cerr<<e.what()<<endl<<flush;
-   }
-   catch (std::string& s)
-   {
-      cerr<<s<<endl;
-   }
-   catch (...)
-   {
-      cerr<<"unknown exception"<<endl;
-   }
-
-}
-
-int main(int argc, char* argv[])
-{
-
-   if (argv!=NULL)
-   {
-      if (argv[1]!=NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout<<"Configuration file must be set!: "<<argv[0]<<" <config file>"<<endl<<std::flush;
-      }
-   }
-
-   return 0;
-}
-
diff --git a/apps/cpu/DLR-F16/startJobPhoenix.slrm b/apps/cpu/DLR-F16/startJobPhoenix.slrm
deleted file mode 100644
index 666fa2a97efae9416875987448185890692bc632..0000000000000000000000000000000000000000
--- a/apps/cpu/DLR-F16/startJobPhoenix.slrm
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-#SBATCH -J f16 
-#SBATCH --ntasks=300
-#SBATCH --ntasks-per-node=1
-#SBATCH --time=08:00:00 
-
-module load lib/boost/1.63.0/intel
-module load mpi/intelmpi/2017.2.174
-module load intel-studio-2017
-
-APP=./f16
-CONF=./DLR-F16-Phoenix.cfg
-
-mpiexec $APP $CONF
\ No newline at end of file
diff --git a/apps/cpu/FlowAroundCylinder/CMakeLists.txt b/apps/cpu/FlowAroundCylinder/CMakeLists.txt
deleted file mode 100644
index f90461ae0426645645aee95d7861b12817464445..0000000000000000000000000000000000000000
--- a/apps/cpu/FlowAroundCylinder/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(cylinder)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake)  
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(cylinder BINARY)
diff --git a/apps/cpu/FlowAroundCylinder/cylinder.cfg b/apps/cpu/FlowAroundCylinder/cylinder.cfg
deleted file mode 100644
index 3dd05a82b55438dc59653f15d4373d26d3238daf..0000000000000000000000000000000000000000
--- a/apps/cpu/FlowAroundCylinder/cylinder.cfg
+++ /dev/null
@@ -1,22 +0,0 @@
-pathOut = d:/temp/cylinder_test
-
-numOfThreads = 4
-availMem = 15e9
-refineLevel = 1 
-blockNx = 25 41 41
-uLB = 0.001
-dx = 0.005
-#dx = 0.01
-
-logToFile = false
-
-newStart = true
-restartStep = 1000
-
-cpStart = 1000
-cpStep = 1000
-
-outTime = 100
-endTime = 100000
-
-nupsStep = 100 100 10000000
\ No newline at end of file
diff --git a/apps/cpu/FlowAroundCylinder/cylinder.cpp b/apps/cpu/FlowAroundCylinder/cylinder.cpp
deleted file mode 100644
index ed3decfcaa58e62e1d629f141e71af08df51f932..0000000000000000000000000000000000000000
--- a/apps/cpu/FlowAroundCylinder/cylinder.cpp
+++ /dev/null
@@ -1,347 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "VirtualFluids.h"
-
-using namespace std;
-
-
-//////////////////////////////////////////////////////////////////////////
-void run(string configname)
-{
-   try
-   {
-      //DEBUG///////////////////////////////////////
-      //Sleep(30000);
-      /////////////////////////////////////////////
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathOut = config.getValue<string>("pathOut");
-      double          uLB = config.getValue<double>("uLB");
-      double          restartStep = config.getValue<double>("restartStep");
-      double          cpStart = config.getValue<double>("cpStart");
-      double          cpStep = config.getValue<double>("cpStep");
-      double          endTime = config.getValue<double>("endTime");
-      double          outTime = config.getValue<double>("outTime");
-      double          availMem = config.getValue<double>("availMem");
-      int             refineLevel = config.getValue<int>("refineLevel");
-      bool            logToFile = config.getValue<bool>("logToFile");
-      vector<double>  nupsStep = config.getVector<double>("nupsStep");
-      bool            newStart = config.getValue<bool>("newStart");
-      int             numOfThreads = config.getValue<int>("numOfThreads");
-      vector<int>     blockNx = config.getVector<int>("blockNx");
-      double          dx = config.getValue<double>("dx");
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid==0)
-         {
-            const char* str = pathOut.c_str();
-            mkdir(str, S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH);
-         }
-#endif 
-
-         if (myid==0)
-         {
-            stringstream logFilename;
-            logFilename<<pathOut+"/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      if (myid == 0) UBLOG(logINFO, "Test case: flow around cylinder");
-
-      
-
-      double L1 = 2.5;
-      double L2, L3, H;
-      L2 = L3 = H = 0.41;
-
-      LBMReal Re = 20.0;
-      LBMReal radius = 0.05;
-      LBMReal rhoReal = 1.0; //kg/m^3
-      LBMReal uReal = 0.45;//m/s
-      LBMReal nueReal = (uReal*radius*2.0)/Re;
-      
-      LBMReal rhoLB = 0.0;
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      //BC
-      SPtr<BCAdapter> noSlipAdapter(new NoSlipBCAdapter());
-      noSlipAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-
-      mu::Parser fct;
-      fct.SetExpr("16*U*x2*x3*(H-x2)*(H-x3)/H^4");
-      fct.DefineConst("U", uLB);
-      fct.DefineConst("H", H);
-      SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-      velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityWithDensityBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapter(new DensityBCAdapter(rhoLB));
-      denBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingOutflowBCAlgorithm()));
-      
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipAdapter);
-      bcVisitor.addBC(velBCAdapter);
-      bcVisitor.addBC(denBCAdapter);
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<UbScheduler> rSch(new UbScheduler(cpStep, cpStart));
-      //RestartCoProcessor rp(grid, rSch, comm, pathOut, RestartCoProcessor::BINARY);
-      MPIIORestartCoProcessor rcp(grid, rSch, pathOut, comm);
-      //////////////////////////////////////////////////////////////////////////
-
-      ////cylinder
-      SPtr<GbObject3D> cylinder(new GbCylinder3D(0.5, 0.2, -0.1, 0.5, 0.2, L3+0.1, radius));
-      GbSystem3D::writeGeoObject(cylinder.get(), pathOut+"/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-      
-      SPtr<D3Q27Interactor> cylinderInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(cylinder, grid, noSlipAdapter, Interactor3D::SOLID));
-
-      if (newStart)
-      {
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Number of processes = "<<comm->getNumberOfProcesses());
-            UBLOG(logINFO, "Number of threads = "<<numOfThreads);
-            UBLOG(logINFO, "path = "<<pathOut);
-            UBLOG(logINFO, "L = "<<L1/dx);
-            UBLOG(logINFO, "H = "<<H/dx);
-            UBLOG(logINFO, "uReal = "<<uReal<<" m/s");
-            UBLOG(logINFO, "rhoReal = "<<rhoReal<<" kg/m^3");
-            UBLOG(logINFO, "nueReal = "<<nueReal<<" m^2/s");
-            UBLOG(logINFO, "uLB = "<<uLB);
-            UBLOG(logINFO, "rhoLB = "<<rhoLB);
-            UBLOG(logINFO, "nueLB = "<<nueLB);
-            UBLOG(logINFO, "Re = "<<Re);
-            UBLOG(logINFO, "dx coarse= "<<dx);
-            UBLOG(logINFO, "dx fine = "<<dx/(1<<refineLevel) );
-            UBLOG(logINFO, "Number of level = "<<refineLevel+1);
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         SPtr<GbObject3D> refCylinder(new GbCylinder3D(0.5, 0.2, -0.1, 0.5, 0.2, L3+0.1, radius+7.0*dx/(1<<refineLevel)));
-         GbSystem3D::writeGeoObject(refCylinder.get(), pathOut+"/geo/refCylinder", WbWriterVtkXmlBinary::getInstance());
-
-         //bounding box
-         double g_minX1 = 0.0;
-         double g_minX2 = 0.0;
-         double g_minX3 = 0.0;
-
-         double g_maxX1 = L1;
-         double g_maxX2 = L2;
-         double g_maxX3 = L3;
-
-         SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid==0) GbSystem3D::writeGeoObject(gridCube.get(), pathOut+"/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-         const int blocknx1 = blockNx[0];
-         const int blocknx2 = blockNx[1];
-         const int blocknx3 = blockNx[2];
-
-         double blockLength = blocknx1*dx;
-
-         grid->setDeltaX(dx);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         //walls
-         GbCuboid3DPtr addWallYmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_minX2, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathOut+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1-blockLength, g_maxX2, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathOut+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathOut+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathOut+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoInflow.get(), pathOut+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathOut+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         SPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         if (refineLevel>0)
-         {
-            if (myid==0) UBLOG(logINFO, "Refinement - start");
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel, comm);
-            refineHelper.addGbObject(refCylinder, refineLevel);
-            refineHelper.refine();
-            if (myid==0) UBLOG(logINFO, "Refinement - end");
-         }
-
-         //walls
-         SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, noSlipAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, noSlipAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlipAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlipAdapter, Interactor3D::SOLID));
-
-         //inflow
-         SPtr<D3Q27Interactor> inflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //outflow
-         SPtr<D3Q27Interactor> outflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
-
-         
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(cylinderInt);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.selectBlocks();
-
-
-         ppblocks->process(0);
-         ppblocks.reset();
-
-         unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-         int ghostLayer = 3;
-         unsigned long long numberOfNodesPerBlock = (unsigned long long)(blockNx[0])* (unsigned long long)(blockNx[1])* (unsigned long long)(blockNx[2]);
-         unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-         unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blockNx[0]+ghostLayer) * (blockNx[1]+ghostLayer) * (blockNx[2]+ghostLayer);
-         double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27*sizeof(double)+sizeof(int)+sizeof(float)*4));
-         double needMem = needMemAll/double(comm->getNumberOfProcesses());
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Number of blocks = "<<numberOfBlocks);
-            UBLOG(logINFO, "Number of nodes  = "<<numberOfNodes);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level "<<level<<" = "<<nobl);
-               UBLOG(logINFO, "Number of nodes for level "<<level<<" = "<<nobl*numberOfNodesPerBlock);
-            }
-            UBLOG(logINFO, "Necessary memory  = "<<needMemAll<<" bytes");
-            UBLOG(logINFO, "Necessary memory per process = "<<needMem<<" bytes");
-            UBLOG(logINFO, "Available memory per process = "<<availMem<<" bytes");
-         }
-
-         SPtr<LBMKernel> kernel(new CompressibleCumulantLBMKernel());
-
-         SPtr<BCProcessor> bcProc(new BCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel>0)
-         {
-            SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         intHelper.setBC();
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //initialization of distributions
-         InitDistributionsBlockVisitor initVisitor;
-         initVisitor.setVx1(fct);
-         grid->accept(initVisitor);
-
-;
-         grid->accept(bcVisitor);
-
-         //Postrozess
-         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         SPtr<CoProcessor> ppgeo(
-            new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), comm));
-         ppgeo->process(0);
-         ppgeo.reset();
-
-         if (myid==0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         rcp.restart((int)restartStep);
-         grid->setTimeStep(restartStep);
-
-         grid->accept(bcVisitor);
-      }
-
-	  //set connectors
-	  InterpolationProcessorPtr iProcessor(new CompressibleOffsetMomentsInterpolationProcessor());
-	  SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-	  grid->accept(setConnsVisitor);
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTime));
-
-	  SPtr<CoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, stepSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-
-      //double area = (2.0*radius*H)/(dx*dx);
-      //double v    = 4.0*uLB/9.0;
-      //CalculateForcesCoProcessor fp(grid, stepSch, pathOut + "/results/forces.txt", comm, v, area);
-      //fp.addInteractor(cylinderInt);
-
-	  SPtr<UbScheduler> nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-	  std::shared_ptr<CoProcessor> nupsCoProcessor(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-	  omp_set_num_threads(numOfThreads);
-	  SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-	  SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
-	  calculator->addCoProcessor(nupsCoProcessor);
-	  calculator->addCoProcessor(writeMQCoProcessor);
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-	  calculator->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if (argv!=NULL)
-   {
-      if (argv[1]!=NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout<<"Configuration file must be set!: "<<argv[0]<<" <config file>"<<endl<<std::flush;
-      }
-   }
-   return 0;
-}
-
diff --git a/apps/cpu/FlowAroundCylinder/cylinder.cpp.old b/apps/cpu/FlowAroundCylinder/cylinder.cpp.old
deleted file mode 100644
index ea310c84f8f2ea691391538bc4a9e6d03777e938..0000000000000000000000000000000000000000
--- a/apps/cpu/FlowAroundCylinder/cylinder.cpp.old
+++ /dev/null
@@ -1,755 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <vfluids.h>
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      int numOfThreads = 1;
-      double availMem = 0;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "d:/temp/cylinder_20nu";
-         numOfThreads = 4;
-         availMem = 10.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/koskuche/scratch/cylinder_Re20nu2l";
-         numOfThreads = 1;
-         availMem = 12.0e9;
-
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      double dx = 0.1;
-
-      double L1 = 2.5;
-      double L2, L3, H;
-      L2 = L3 = H = 0.41;
-
-      LBMReal radius = 0.05;
-      LBMReal rhoReal = 1.0; //kg/m^3
-      LBMReal uReal = 0.45;//m/s
-      LBMReal uLB = 0.05;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
-
-      //LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter(1.0, 1/sqrt(3.0)*(uReal/uLB), 1.0, 1.0/dx, dx*dx*dx));
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = 3;
-
-      //obstacle
-      GbObject3DPtr cylinder(new GbCylinder3D(0.5, 0.2, -0.1, 0.5, 0.2, L3+0.1, radius));
-      GbSystem3D::writeGeoObject(cylinder.get(),pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-      GbObject3DPtr refCylinder(new GbCylinder3D(0.5, 0.2, -0.1, 0.5, 0.2, L3+0.1, radius+2.0*dx/(1<<refineLevel)));
-      GbSystem3D::writeGeoObject(refCylinder.get(),pathname + "/geo/refCylinder", WbWriterVtkXmlBinary::getInstance());
-
-      D3Q27InteractorPtr cylinderInt;
-
-      //bounding box
-      double d_minX1 = 0.0;
-      double d_minX2 = 0.0;
-      double d_minX3 = 0.0;
-
-      double d_maxX1 = L1;
-      double d_maxX2 = L2;
-      double d_maxX3 = L3;
-
-      double offs = dx;
-
-      //double g_minX1 = d_minX1-offs-0.499999*dx;
-      double g_minX1 = d_minX1-offs;
-      double g_minX2 = d_minX2-offs;
-      double g_minX3 = d_minX3-offs;
-
-      double g_maxX1 = d_maxX1+offs;
-      double g_maxX2 = d_maxX2+offs;
-      double g_maxX3 = d_maxX3+offs;
-
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-
-      const int blocknx1 = 8;
-      const int blocknx2 = 8;
-      const int blocknx3 = 8;
-
-      dx = (0.41+2.0*dx)/(10.0*(int)blocknx2);
-
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-
-      double blockLength = blocknx1*dx;
-
-      //refinement area
-      double rf = cylinder->getLengthX1()/4;
-      GbObject3DPtr refineCube(new  GbCuboid3D(cylinder->getX1Minimum()-rf, cylinder->getX2Minimum()-rf, cylinder->getX3Minimum(), 
-        cylinder->getX1Maximum()+rf, cylinder->getX2Maximum()+rf, cylinder->getX3Maximum()));
-//       GbObject3DPtr refineCube(new  GbCuboid3D(g_minX1 + 7.05*blockLength, g_minX2 + 3.05*blockLength, cylinder->getX3Minimum(), 
-//          g_minX1 + 12.95*blockLength, g_maxX2 - 3.05*blockLength, cylinder->getX3Maximum()));
-
-      Grid3DPtr grid(new Grid3D(comm));
-
-      UbSchedulerPtr rSch(new UbScheduler(100000, 100000));
-      //RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY));
-
-      //UbSchedulerPtr emSch(new UbScheduler(1000, 1000));
-      //EmergencyExitPostprocessor em(grid, emSch, pathname+"/checkpoints/emex.txt", rp, comm);
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if/*(cstr== NULL)*/(cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-
-         //grid = rp->restart(UbSystem::stringTo<int>(opt));
-         //rp->reconnect();
-
-         //cylinderInt = 
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"Number of processes = " << comm->getNumberOfProcesses() );
-            UBLOG(logINFO,"path = " << pathname );
-            UBLOG(logINFO,"L = " << L1/dx );
-            UBLOG(logINFO,"H = " << H/dx );
-            UBLOG(logINFO,"v = " << uLB );
-            UBLOG(logINFO,"rho = " << rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-            UBLOG(logINFO,"Re = " << Re );
-            UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,"Number of level = " << refineLevel+1 );
-            //UBLOG(logINFO,conv->toString() );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-         grid->setDeltaX(dx);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-         // UbTupleDouble6 bouningBox(gridCube->getX1Minimum(),gridCube->getX2Minimum(),gridCube->getX3Minimum(),
-         // gridCube->getX1Maximum(),gridCube->getX2Maximum(),gridCube->getX3Maximum());
-         // UbTupleInt3 blockNx(blocknx1, blocknx2, blocknx3);
-         // UbTupleInt3 gridNx(8, 16, 16);
-         // grid = Grid3DPtr(new Grid3D(bouningBox, blockNx, gridNx));
-
-         if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-         if(myid ==0) GbSystem3D::writeGeoObject(refineCube.get(),pathname + "/geo/refineCube", WbWriterVtkXmlBinary::getInstance());
-
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-
-         //walls
-         GbCuboid3DPtr addWallYmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_minX2, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_minX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_maxX2, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_maxX3, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_minX1, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            //refineHelper.addGbObject(refineCube, refineLevel);
-            refineHelper.addGbObject(refCylinder, refineLevel);
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-         grid->accept( metisVisitor );
-
-         SolidBlocksHelper sd(grid, comm);
-
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         cylinderInt = D3Q27InteractorPtr ( new D3Q27Interactor(cylinder, grid, bcObst,Interactor3D::SOLID));
-
-         //walls
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst,Interactor3D::SOLID));
-
-         mu::Parser fct;
-         fct.SetExpr("16*U*x2*x3*(H-x2)*(H-x3)/H^4");
-         fct.DefineConst("U", uLB);
-         fct.DefineConst("H", H);
-
-         //inflow
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-         velBCAdapter->setSecondaryBcOption(2);
-         D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-         sd.addInteractor(cylinderInt);
-         sd.addInteractor(addWallYminInt);
-         sd.addInteractor(addWallZminInt);
-         sd.addInteractor(addWallYmaxInt);
-         sd.addInteractor(addWallZmaxInt);
-         sd.addInteractor(inflowInt);
-         sd.addInteractor(outflowInt);
-
-         sd.deleteSolidBlocks();
-
-         grid->accept( metisVisitor );
-
-         sd.setTransBlocks();
-
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-
-         double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }            
-
-         LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //walls
-         grid->addAndInitInteractor(addWallYminInt);
-         grid->addAndInitInteractor(addWallZminInt);
-         grid->addAndInitInteractor(addWallYmaxInt);
-         grid->addAndInitInteractor(addWallZmaxInt);
-
-         //obstacle
-         grid->addAndInitInteractor(cylinderInt);
-
-         //inflow
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         grid->addAndInitInteractor(outflowInt);
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //initialization of distributions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(nueLB, rhoLB);
-         initVisitor.setVx1(fct);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, comm, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-      }
-
-      double outTime = 10000.0;
-      UbSchedulerPtr visSch(new UbScheduler(outTime));
-      //visSch->addSchedule(1000, 1000, 10000);
-      //visSch->addSchedule(10000, 10000, 50000);
-      //visSch->addSchedule(100, 100, 10000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      double fdx = grid->getDeltaX(grid->getFinestInitializedLevel());
-      double point1[3] = {0.45, 0.20, 0.205};
-      double point2[3] = {0.55, 0.20, 0.205};
-
-      D3Q27IntegrateValuesHelperPtr h1(new D3Q27IntegrateValuesHelper(grid, comm, 
-         point1[0]-1.0*fdx, point1[1]-1.0*fdx, point1[2]-1.0*fdx, 
-         point1[0], point1[1], point1[2]));
-      if(myid ==0) GbSystem3D::writeGeoObject(h1->getBoundingBox().get(),pathname + "/geo/iv1", WbWriterVtkXmlBinary::getInstance());
-      D3Q27IntegrateValuesHelperPtr h2(new D3Q27IntegrateValuesHelper(grid, comm, 
-         point2[0], point2[1]-1.0*fdx, point2[2]-1.0*fdx, 
-         point2[0]+1.0*fdx, point2[1], point2[2]));
-      if(myid ==0) GbSystem3D::writeGeoObject(h2->getBoundingBox().get(),pathname + "/geo/iv2", WbWriterVtkXmlBinary::getInstance());
-      //D3Q27PressureDifferencePostprocessor rhopp(grid, visSch, pathname + "/results/rho_diff.txt", h1, h2, conv, comm);
-      D3Q27PressureDifferencePostprocessor rhopp(grid, visSch, pathname + "/results/rho_diff.txt", h1, h2, rhoReal, uReal, uLB, comm);
-      
-      double area = (2.0*radius*H)/(dx*dx);
-      double v    = 4.0*uLB/9.0;
-      D3Q27ForcesPostprocessor fp(grid, visSch, pathname + "/results/forces.txt", comm, v, area);
-      fp.addInteractor(cylinderInt);
-      
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 40));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double endTime = 100001.0;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
-//////////////////////////////////////////////////////////////////////////
-void run2(const char *cstr)
-{
-   try
-   {
-      Sleep(30000);
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      int numOfThreads = 1;
-      double availMem = 0;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "d:/temp/cylinder_20nu";
-         numOfThreads = 4;
-         availMem = 10.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/koskuche/scratch/cylinder_Re20nu4l";
-         numOfThreads = 1;
-         availMem = 12.0e9;
-
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      double dx = 0.01;
-
-      double L1 = 2.5*2.0;
-      double L2, L3, H;
-      L2 = L3 = H = 0.41*2.0;
-
-      LBMReal radius = 0.05*2.0;
-      LBMReal rhoReal = 1.0; //kg/m^3
-      LBMReal uReal = 0.45;//m/s
-      LBMReal uLB = 0.05;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
-
-      //LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter(1.0, 1/sqrt(3.0)*(uReal/uLB), 1.0, 1.0/dx, dx*dx*dx));
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = 1;
-
-      //obstacle
-      GbObject3DPtr cylinder(new GbCylinder3D(0.5*2.0, 0.2*2.0, -0.1, 0.5*2.0, 0.2*2.0, L3+0.1, radius));
-      GbSystem3D::writeGeoObject(cylinder.get(),pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-      GbObject3DPtr refCylinder(new GbCylinder3D(0.5*2.0, 0.2*2.0, -0.1, 0.5*2.0, 0.2*2.0, L3+0.1, radius+7.0*dx/(1<<refineLevel)));
-      GbSystem3D::writeGeoObject(refCylinder.get(),pathname + "/geo/refCylinder", WbWriterVtkXmlBinary::getInstance());
-
-      D3Q27InteractorPtr cylinderInt;
-
-      //bounding box
-      double d_minX1 = 0.0;
-      double d_minX2 = 0.0;
-      double d_minX3 = 0.0;
-
-      double d_maxX1 = L1;
-      double d_maxX2 = L2;
-      double d_maxX3 = L3;
-
-      //double offs = dx;
-      double offs = 0;
-
-      //double g_minX1 = d_minX1-offs-0.499999*dx;
-      double g_minX1 = d_minX1;
-      double g_minX2 = d_minX2-7.0*dx;
-      double g_minX3 = d_minX3;
-
-      double g_maxX1 = d_maxX1;
-      double g_maxX2 = d_maxX2;
-      double g_maxX3 = d_maxX3;
-
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-
-      const int blocknx1 = 8;
-      const int blocknx2 = 8;
-      const int blocknx3 = 8;
-
-      //dx = (0.41+2.0*dx)/(10.0*(int)blocknx2);
-
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-
-      double blockLength = blocknx1*dx;
-
-      //refinement area
-      double rf = cylinder->getLengthX1()/4;
-      GbObject3DPtr refineCube(new  GbCuboid3D(cylinder->getX1Minimum()-rf, cylinder->getX2Minimum()-rf, cylinder->getX3Minimum(), 
-         cylinder->getX1Maximum()+rf, cylinder->getX2Maximum()+rf, cylinder->getX3Maximum()));
-      //       GbObject3DPtr refineCube(new  GbCuboid3D(g_minX1 + 7.05*blockLength, g_minX2 + 3.05*blockLength, cylinder->getX3Minimum(), 
-      //          g_minX1 + 12.95*blockLength, g_maxX2 - 3.05*blockLength, cylinder->getX3Maximum()));
-
-      Grid3DPtr grid(new Grid3D(comm));
-
-      UbSchedulerPtr rSch(new UbScheduler(100000, 100000));
-      //RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY));
-
-      //UbSchedulerPtr emSch(new UbScheduler(1000, 1000));
-      //EmergencyExitPostprocessor em(grid, emSch, pathname+"/checkpoints/emex.txt", rp, comm);
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if/*(cstr== NULL)*/(cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-
-         //grid = rp->restart(UbSystem::stringTo<int>(opt));
-         //rp->reconnect();
-
-         //cylinderInt = 
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"Number of processes = " << comm->getNumberOfProcesses() );
-            UBLOG(logINFO,"path = " << pathname );
-            UBLOG(logINFO,"L = " << L1/dx );
-            UBLOG(logINFO,"H = " << H/dx );
-            UBLOG(logINFO,"v = " << uLB );
-            UBLOG(logINFO,"rho = " << rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-            UBLOG(logINFO,"Re = " << Re );
-            UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,"Number of level = " << refineLevel+1 );
-            //UBLOG(logINFO,conv->toString() );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-         grid->setDeltaX(dx);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-         // UbTupleDouble6 bouningBox(gridCube->getX1Minimum(),gridCube->getX2Minimum(),gridCube->getX3Minimum(),
-         // gridCube->getX1Maximum(),gridCube->getX2Maximum(),gridCube->getX3Maximum());
-         // UbTupleInt3 blockNx(blocknx1, blocknx2, blocknx3);
-         // UbTupleInt3 gridNx(8, 16, 16);
-         // grid = Grid3DPtr(new Grid3D(bouningBox, blockNx, gridNx));
-
-         if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-         if(myid ==0) GbSystem3D::writeGeoObject(refineCube.get(),pathname + "/geo/refineCube", WbWriterVtkXmlBinary::getInstance());
-
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-
-         //walls
-         GbCuboid3DPtr addWallYmin (new GbCuboid3D(d_minX1-blockLength, d_minX2-blockLength, d_minX3-blockLength, d_maxX1+blockLength, d_minX2, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin (new GbCuboid3D(d_minX1-blockLength, d_minX2-blockLength, d_minX3-blockLength, d_maxX1+blockLength, d_maxX2+blockLength, d_minX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax (new GbCuboid3D(d_minX1-blockLength, d_maxX2, d_minX3-blockLength, d_maxX1+blockLength, d_maxX2+blockLength, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-blockLength, d_minX2-blockLength, d_maxX3, d_maxX1+blockLength, d_maxX2+blockLength, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-blockLength, d_minX2-blockLength, d_minX3-blockLength, d_minX1, d_maxX2+blockLength, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1, d_minX2-blockLength, d_minX3-blockLength, d_maxX1+blockLength, d_maxX2+blockLength, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            //refineHelper.addGbObject(refineCube, refineLevel);
-            refineHelper.addGbObject(refCylinder, refineLevel);
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-         grid->accept( metisVisitor );
-
-         SolidBlocksHelper sd(grid, comm);
-
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         cylinderInt = D3Q27InteractorPtr ( new D3Q27Interactor(cylinder, grid, bcObst,Interactor3D::SOLID));
-
-         //walls
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst,Interactor3D::SOLID));
-
-         mu::Parser fct;
-         fct.SetExpr("16*U*x2*x3*(H-x2)*(H-x3)/H^4");
-         fct.DefineConst("U", uLB);
-         fct.DefineConst("H", H);
-
-         //inflow
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-         velBCAdapter->setSecondaryBcOption(2);
-         D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-         sd.addInteractor(cylinderInt);
-         sd.addInteractor(addWallYminInt);
-         sd.addInteractor(addWallZminInt);
-         sd.addInteractor(addWallYmaxInt);
-         sd.addInteractor(addWallZmaxInt);
-         sd.addInteractor(inflowInt);
-         sd.addInteractor(outflowInt);
-
-         sd.deleteSolidBlocks();
-
-         grid->accept( metisVisitor );
-
-         sd.setTransBlocks();
-
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-
-         double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }            
-
-         LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //walls
-         grid->addAndInitInteractor(addWallYminInt);
-         grid->addAndInitInteractor(addWallZminInt);
-         grid->addAndInitInteractor(addWallYmaxInt);
-         grid->addAndInitInteractor(addWallZmaxInt);
-
-         //obstacle
-         grid->addAndInitInteractor(cylinderInt);
-
-         //inflow
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         grid->addAndInitInteractor(outflowInt);
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //initialization of distributions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(nueLB, rhoLB);
-         initVisitor.setVx1(fct);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, comm, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-      }
-
-      double outTime = 100.0;
-      UbSchedulerPtr visSch(new UbScheduler(outTime));
-      //visSch->addSchedule(1000, 1000, 10000);
-      //visSch->addSchedule(10000, 10000, 50000);
-      //visSch->addSchedule(100, 100, 10000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      double fdx = grid->getDeltaX(grid->getFinestInitializedLevel());
-      double point1[3] = {0.45, 0.20, 0.205};
-      double point2[3] = {0.55, 0.20, 0.205};
-
-      D3Q27IntegrateValuesHelperPtr h1(new D3Q27IntegrateValuesHelper(grid, comm, 
-         point1[0]-1.0*fdx, point1[1]-1.0*fdx, point1[2]-1.0*fdx, 
-         point1[0], point1[1], point1[2]));
-      if(myid ==0) GbSystem3D::writeGeoObject(h1->getBoundingBox().get(),pathname + "/geo/iv1", WbWriterVtkXmlBinary::getInstance());
-      D3Q27IntegrateValuesHelperPtr h2(new D3Q27IntegrateValuesHelper(grid, comm, 
-         point2[0], point2[1]-1.0*fdx, point2[2]-1.0*fdx, 
-         point2[0]+1.0*fdx, point2[1], point2[2]));
-      if(myid ==0) GbSystem3D::writeGeoObject(h2->getBoundingBox().get(),pathname + "/geo/iv2", WbWriterVtkXmlBinary::getInstance());
-      //D3Q27PressureDifferencePostprocessor rhopp(grid, visSch, pathname + "/results/rho_diff.txt", h1, h2, conv, comm);
-      D3Q27PressureDifferencePostprocessor rhopp(grid, visSch, pathname + "/results/rho_diff.txt", h1, h2, rhoReal, uReal, uLB, comm);
-
-      double area = (2.0*radius*H)/(dx*dx);
-      double v    = 4.0*uLB/9.0;
-      D3Q27ForcesPostprocessor fp(grid, visSch, pathname + "/results/forces.txt", comm, v, area);
-      fp.addInteractor(cylinderInt);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 40));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double endTime = 100001.0;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-
-   run2(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/FlowAroundCylinder/cylinder.cpp1 b/apps/cpu/FlowAroundCylinder/cylinder.cpp1
deleted file mode 100644
index b7ddec982c4a70a153fb1f6bf95de85c903fcc6a..0000000000000000000000000000000000000000
--- a/apps/cpu/FlowAroundCylinder/cylinder.cpp1
+++ /dev/null
@@ -1,383 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "numerics/geometry3d/CoordinateTransformation3D.h"
-#include "Grid3D.h"
-#include "GenBlocksGridVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "RefineInterGbObjectsVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "MPICommunicator.h"
-#include "D3Q27ETBCProcessor.h"
-#include "SimulationParameters.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "D3Q27SetConnectorsBlockVisitor.h"
-#include "NullCommunicator.h"
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "CalculationManager.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27VelocityBCAdapter.h"
-#include "D3Q27DensityBCAdapter.h"
-#include "D3Q27BoundaryConditionAdapter.h"
-#include "StringUtil.hpp"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "D3Q27CompactInterpolationProcessor.h"
-#include "D3Q27PressureDifferencePostprocessor.h"
-#include "D3Q27IntegrateValuesHelper.h"
-#include "RestartPostprocessor.h"
-#include "SolidBlocksHelper.h"
-#include "NUPSCounterPostprocessor.h"
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      int numOfThreads = 1;
-      double availMem = 0;
-
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "c:/temp/cylinder";
-         numOfThreads = 1;
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/koskuche/scratch/cylinder";
-         numOfThreads = 8;
-         availMem = 12.0e9;
-
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile.txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      const double dx = 0.00205*5.0;
-
-      double L1 = 2.5;
-      double L2 = 0.41;
-      double L3 = 0.41;
-
-      LBMReal radius = 0.05;
-      LBMReal uLB = 0.01;
-      LBMReal Re = 100.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = L2 / dx;
-      //LBMReal nueLB = (uLB*l)/Re;
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = 0;
-
-      //obstacle
-      GbObject3DPtr cylinder(new GbCylinder3D(0.5, 0.2, -0.1, 0.5, 0.2, L3+0.1, radius));
-      GbSystem3D::writeGeoObject(cylinder.get(),pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-      //bounding box
-      double g_minX1 = 0.0;
-      double g_minX2 = 0.0;
-      double g_minX3 = 0.0;
-
-      double g_maxX1 = L1;
-      double g_maxX2 = L2;
-      double g_maxX3 = L3;
-
-      double offs = dx;
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1-offs, g_minX2-offs, g_minX3-offs*2, g_maxX1+offs, g_maxX2+offs, g_maxX3+offs*2));
-
-      //refinement area
-      double rf = cylinder->getLengthX1();
-      GbObject3DPtr refineCube(new  GbCuboid3D(cylinder->getX1Minimum()-rf, cylinder->getX2Minimum()-rf/2, cylinder->getX3Minimum(), 
-                                               cylinder->getX1Maximum()+2*rf, cylinder->getX2Maximum()+rf, cylinder->getX3Maximum()));
-
-      const int blocknx1 = 6;
-      const int blocknx2 = 6;
-      const int blocknx3 = 6;
-      
-      double blockLength = blocknx1*dx;
-
-      Grid3DPtr grid(new Grid3D());
-      UbSchedulerPtr rSch(new UbScheduler(50000, 50000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY);
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if(cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-
-         grid = rp.restart(UbSystem::stringTo<int>(opt));
-         rp.reconnect();
-
-         SimulationParametersPtr param = SimulationParameters::getInstanz();
-         param->setCollisionModelType(SimulationParameters::COMPRESSIBLE);
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"L = " << l );
-            UBLOG(logINFO,"v = " << uLB );
-            UBLOG(logINFO,"rho = " << rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-            UBLOG(logINFO,"Re = " << Re );
-            UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-         SimulationParametersPtr param = SimulationParameters::getInstanz();
-         param->setCollisionModelType(SimulationParameters::COMPRESSIBLE);
-         param->setRho(rhoLB);
-         param->setVelocityX(uLB);
-         param->setViscosity(nueLB);
-
-         grid->setDeltaX(dx);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-         if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-         if(myid ==0) GbSystem3D::writeGeoObject(refineCube.get(),pathname + "/geo/refineCube", WbWriterVtkXmlBinary::getInstance());
-      
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-
-         //walls
-         GbCuboid3DPtr addWallYmin (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_minX2, g_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-      
-         GbCuboid3DPtr addWallZmin (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax (new GbCuboid3D(g_minX1-blockLength, g_maxX2, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+2.0*blockLength, g_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+2.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow (new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+2.0*blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            RefineCrossAndInsideGbObjectBlockVisitor refVisitor(refineCube, baseLevel, refineLevel-1);
-            grid->accept(refVisitor);
-
-            RatioBlockVisitor ratioVisitor(refineLevel);
-            grid->accept(ratioVisitor);
-
-            RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-            grid->accept(ratioSmoothVisitor);
-
-            OverlapBlockVisitor overlapVisitor(refineLevel);
-            grid->accept(overlapVisitor);
-
-            std::vector<int> dirs;
-            D3Q27System::getLBMDirections(dirs);
-            SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-            grid->accept(interDirsVisitor);
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         MetisPartitioningGridVisitor metisVisitor(numOfThreads, D3Q27System::B, comm, false);
-         grid->accept( metisVisitor );
-
-         SolidBlocksHelper sd(grid, comm);
-      
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         D3Q27InteractorPtr cylinderInt( new D3Q27Interactor(cylinder, grid, bcObst,Interactor3D::SOLID));
-
-         sd.addInteractor(cylinderInt);
-         sd.deleteSolidBlocks();
-
-         grid->accept( metisVisitor );
-
-         //if(myid ==0) grid->writeBlocks(pathname + "/grid/blocks" + StringUtil::toString(myid), 0, WbWriterVtkXmlBinary::getInstance(), false);
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-
-         double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNummberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }            
-
-         LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //walls
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst,Interactor3D::SOLID));
-         grid->addAndInitInteractor(addWallYminInt);
-
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcObst,Interactor3D::SOLID));
-         grid->addAndInitInteractor(addWallZminInt);
-
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst,Interactor3D::SOLID));
-         grid->addAndInitInteractor(addWallYmaxInt);
-
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst,Interactor3D::SOLID));
-         grid->addAndInitInteractor(addWallZmaxInt);
-
-         //inflow
-         double Cz = geoInflow->getX3Centroid();
-         double Hz = geoInflow->getLengthX3()-2.0*blockLength;
-         double Cy = geoInflow->getX2Centroid();
-         double Hy = geoInflow->getLengthX2()-2.0*blockLength;
-         mu::Parser fct = MathUtil::getDuctParaboloidX(Cy,Hy,Cz,Hz,uLB);
-
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-         velBCAdapter->setSecondaryBcOption(2);
-         D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-         grid->addAndInitInteractor(outflowInt);
-
-         //obstacle
-         grid->addAndInitInteractor(cylinderInt);
-      
-         sd.updateGrid();
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         //D3Q27InterpolationProcessorPtr iProcessor(new D3Q27CompactInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //initialization of distributions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(1.0);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         if(myid ==0) grid->writeBlocks(pathname + "/grid/blocks" + StringUtil::toString(myid), 0, WbWriterVtkXmlBinary::getInstance(), false);
-
-         {
-            UbSchedulerPtr geoSch(new UbScheduler(1));
-            D3Q27MacroscopicQuantitiesPostprocessor ppgeo(grid, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, geoSch, comm, true);
-            grid->doPostProcess(0);
-         }
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-      }
-
-      double outTime = 50000.0;
-      UbSchedulerPtr visSch(new UbScheduler(outTime));
-      visSch->addSchedule(10000, 10000, 50000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv, visSch, comm);
-
-      double fdx = grid->getDeltaX(grid->getCoarsestInitializedLevel());
-      D3Q27IntegrateValuesHelperPtr h1(new D3Q27IntegrateValuesHelper(grid, comm, 
-         refineCube->getX1Minimum()-2.0*fdx-blockLength, gridCube->getX2Minimum()-1.0*fdx, cylinder->getX3Minimum()-1.0*fdx, 
-         refineCube->getX1Minimum()-1.0*fdx-blockLength, gridCube->getX2Maximum()+1.0*fdx, cylinder->getX3Maximum()+1.0*fdx));
-      if(myid ==0) GbSystem3D::writeGeoObject(h1->getBoundingBox().get(),pathname + "/geo/iv1", WbWriterVtkXmlBinary::getInstance());
-      D3Q27IntegrateValuesHelperPtr h2(new D3Q27IntegrateValuesHelper(grid, comm, 
-         refineCube->getX1Maximum()+1.0*fdx+blockLength, gridCube->getX2Minimum()-1.0*fdx, cylinder->getX3Minimum()-1.0*fdx, 
-         refineCube->getX1Maximum()+2.0*fdx+blockLength, gridCube->getX2Maximum()+1.0*fdx, cylinder->getX3Maximum()+1.0*fdx));
-      if(myid ==0) GbSystem3D::writeGeoObject(h2->getBoundingBox().get(),pathname + "/geo/iv2", WbWriterVtkXmlBinary::getInstance());
-      D3Q27PressureDifferencePostprocessor rhopp(grid, pathname + "/results/rho_diff.txt", h1, h2, conv, visSch, comm);
-
-      NUPSCounterPostprocessor npr(grid, visSch, pathname + "/results/nups.txt", comm);
-
-      double endTime = 1000001.0;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/FlowAroundCylinder/cylinder.cpp2 b/apps/cpu/FlowAroundCylinder/cylinder.cpp2
deleted file mode 100644
index 35d9e975742e0365e4c4827d4bb8f3ebbacf3d4b..0000000000000000000000000000000000000000
--- a/apps/cpu/FlowAroundCylinder/cylinder.cpp2
+++ /dev/null
@@ -1,400 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "numerics/geometry3d/CoordinateTransformation3D.h"
-#include "Grid3D.h"
-#include "GenBlocksGridVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "RefineInterGbObjectsVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "MPICommunicator.h"
-#include "D3Q27ETBCProcessor.h"
-#include "SimulationParameters.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "D3Q27SetConnectorsBlockVisitor.h"
-#include "NullCommunicator.h"
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "CalculationManager.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27VelocityBCAdapter.h"
-#include "D3Q27DensityBCAdapter.h"
-#include "D3Q27BoundaryConditionAdapter.h"
-#include "StringUtil.hpp"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "D3Q27CompactInterpolationProcessor.h"
-#include "D3Q27PressureDifferencePostprocessor.h"
-#include "D3Q27IntegrateValuesHelper.h"
-#include "RestartPostprocessor.h"
-#include "SolidBlocksHelper.h"
-#include "NUPSCounterPostprocessor.h"
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      int numOfThreads = 1;
-      double availMem = 0;
-
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "c:/temp/cylinder";
-         numOfThreads = 1;
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/koskuche/scratch/cylinder3";
-         numOfThreads = 8;
-         availMem = 12.0e9;
-
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile.txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else if(machine == "ESLOGIN001" || machine == "ESLOGIN002" || machine == "ESLOGIN003")      
-      {
-         pathname = "/zhome/academic/HLRS/xrm/xrmkuchr/work/cylinder";
-         numOfThreads = 16;
-         availMem = 12.0e9;
-
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile.txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE: " + machine);
-
-      const double dx = 0.00205*5.0;
-
-      double L1 = 2.5;
-      double L2 = 0.41;
-      double L3 = 0.41;
-
-      LBMReal radius = 0.05;
-      LBMReal uLB = 0.01;
-      LBMReal Re = 100.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = L2 / dx;
-      //LBMReal nueLB = (uLB*l)/Re;
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = 0;
-
-      //obstacle
-      GbObject3DPtr cylinder(new GbCylinder3D(0.5, 0.2, -0.1, 0.5, 0.2, L3+0.1, radius));
-      GbSystem3D::writeGeoObject(cylinder.get(),pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-      //bounding box
-      double g_minX1 = 0.0;
-      double g_minX2 = 0.0;
-      double g_minX3 = 0.0;
-
-      double g_maxX1 = L1;
-      double g_maxX2 = L2;
-      double g_maxX3 = L3;
-
-      double offs = dx;
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1-offs, g_minX2-offs, g_minX3-offs*2, g_maxX1+offs, g_maxX2+offs, g_maxX3+offs*2));
-
-      //refinement area
-      double rf = cylinder->getLengthX1();
-      GbObject3DPtr refineCube(new  GbCuboid3D(cylinder->getX1Minimum()-rf, cylinder->getX2Minimum()-rf/2, cylinder->getX3Minimum(), 
-                                               cylinder->getX1Maximum()+2*rf, cylinder->getX2Maximum()+rf, cylinder->getX3Maximum()));
-
-      const int blocknx1 = 6;
-      const int blocknx2 = 6;
-      const int blocknx3 = 6;
-      
-      double blockLength = blocknx1*dx;
-
-      Grid3DPtr grid(new Grid3D());
-      UbSchedulerPtr rSch(new UbScheduler(50000, 50000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY);
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if(cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-
-         grid = rp.restart(UbSystem::stringTo<int>(opt));
-         rp.reconnect();
-
-         SimulationParametersPtr param = SimulationParameters::getInstanz();
-         param->setCollisionModelType(SimulationParameters::COMPRESSIBLE);
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"Number of threads = " << numOfThreads );
-            UBLOG(logINFO,"L = " << l );
-            UBLOG(logINFO,"v = " << uLB );
-            UBLOG(logINFO,"rho = " << rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-            UBLOG(logINFO,"Re = " << Re );
-            UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-         SimulationParametersPtr param = SimulationParameters::getInstanz();
-         param->setCollisionModelType(SimulationParameters::COMPRESSIBLE);
-         param->setRho(rhoLB);
-         param->setVelocityX(uLB);
-         param->setViscosity(nueLB);
-
-         grid->setDeltaX(dx);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-         if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-         if(myid ==0) GbSystem3D::writeGeoObject(refineCube.get(),pathname + "/geo/refineCube", WbWriterVtkXmlBinary::getInstance());
-      
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-
-         //walls
-         GbCuboid3DPtr addWallYmin (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_minX2, g_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-      
-         GbCuboid3DPtr addWallZmin (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax (new GbCuboid3D(g_minX1-blockLength, g_maxX2, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+2.0*blockLength, g_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+2.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow (new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+2.0*blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            RefineCrossAndInsideGbObjectBlockVisitor refVisitor(refineCube, baseLevel, refineLevel-1);
-            grid->accept(refVisitor);
-
-            RatioBlockVisitor ratioVisitor(refineLevel);
-            grid->accept(ratioVisitor);
-
-            RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-            grid->accept(ratioSmoothVisitor);
-
-            OverlapBlockVisitor overlapVisitor(refineLevel);
-            grid->accept(overlapVisitor);
-
-            std::vector<int> dirs;
-            D3Q27System::getLBMDirections(dirs);
-            SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-            grid->accept(interDirsVisitor);
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         MetisPartitioningGridVisitor metisVisitor(numOfThreads, D3Q27System::B, comm, false);
-         grid->accept( metisVisitor );
-
-         SolidBlocksHelper sd(grid, comm);
-      
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         D3Q27InteractorPtr cylinderInt( new D3Q27Interactor(cylinder, grid, bcObst,Interactor3D::SOLID));
-
-         sd.addInteractor(cylinderInt);
-         sd.deleteSolidBlocks();
-
-         grid->accept( metisVisitor );
-
-         //if(myid ==0) grid->writeBlocks(pathname + "/grid/blocks" + StringUtil::toString(myid), 0, WbWriterVtkXmlBinary::getInstance(), false);
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-
-         double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNummberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }            
-
-         LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //walls
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst,Interactor3D::SOLID));
-         grid->addAndInitInteractor(addWallYminInt);
-
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcObst,Interactor3D::SOLID));
-         grid->addAndInitInteractor(addWallZminInt);
-
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst,Interactor3D::SOLID));
-         grid->addAndInitInteractor(addWallYmaxInt);
-
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst,Interactor3D::SOLID));
-         grid->addAndInitInteractor(addWallZmaxInt);
-
-         //inflow
-         double Cz = geoInflow->getX3Centroid();
-         double Hz = geoInflow->getLengthX3()-2.0*blockLength;
-         double Cy = geoInflow->getX2Centroid();
-         double Hy = geoInflow->getLengthX2()-2.0*blockLength;
-         mu::Parser fct = MathUtil::getDuctParaboloidX(Cy,Hy,Cz,Hz,uLB);
-
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-         velBCAdapter->setSecondaryBcOption(2);
-         D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-         grid->addAndInitInteractor(outflowInt);
-
-         //obstacle
-         grid->addAndInitInteractor(cylinderInt);
-      
-         sd.updateGrid();
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         //D3Q27InterpolationProcessorPtr iProcessor(new D3Q27CompactInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //initialization of distributions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(1.0);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         if(myid ==0) grid->writeBlocks(pathname + "/grid/blocks" + StringUtil::toString(myid), 0, WbWriterVtkXmlBinary::getInstance(), false);
-
-         {
-            UbSchedulerPtr geoSch(new UbScheduler(1));
-            D3Q27MacroscopicQuantitiesPostprocessor ppgeo(grid, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, geoSch, comm, true);
-            grid->doPostProcess(0);
-         }
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-      }
-
-      double outTime = 50000.0;
-      UbSchedulerPtr visSch(new UbScheduler(outTime));
-      visSch->addSchedule(1000, 0, 5001);
-
-      //D3Q27MacroscopicQuantitiesPostprocessor pp(grid, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv, visSch, comm);
-//
-      //double fdx = grid->getDeltaX(grid->getFinestInitializedLevel());
-      //double point1[3] = {0.45, 0.20, 0.205};
-      //double point2[3] = {0.55, 0.20, 0.205};
-//
-      //D3Q27IntegrateValuesHelperPtr h1(new D3Q27IntegrateValuesHelper(grid, comm, 
-         //point1[0]-2.0*fdx-blockLength, point1[1]-1.0*fdx, point1[2]-1.0*fdx, 
-         //point1[0]-1.0*fdx-blockLength, point1[1]+1.0*fdx, point1[2]+1.0*fdx));
-      //if(myid ==0) GbSystem3D::writeGeoObject(h1->getBoundingBox().get(),pathname + "/geo/iv1", WbWriterVtkXmlBinary::getInstance());
-      //D3Q27IntegrateValuesHelperPtr h2(new D3Q27IntegrateValuesHelper(grid, comm, 
-         //point2[0]+1.0*fdx+blockLength, point2[1]-1.0*fdx, point2[2]-1.0*fdx, 
-         //point2[0]+2.0*fdx+blockLength, point2[1]+1.0*fdx, point2[2]+1.0*fdx));
-      //if(myid ==0) GbSystem3D::writeGeoObject(h2->getBoundingBox().get(),pathname + "/geo/iv2", WbWriterVtkXmlBinary::getInstance());
-      //D3Q27PressureDifferencePostprocessor rhopp(grid, pathname + "/results/rho_diff.txt", h1, h2, conv, visSch, comm);
-
-      NUPSCounterPostprocessor npr(grid, visSch, pathname + "/results/nups.txt", comm);
-
-      double endTime = 5001.0;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/Hagen_Poiseuille_flow/CMakeLists.txt b/apps/cpu/Hagen_Poiseuille_flow/CMakeLists.txt
deleted file mode 100644
index a08cabcebb8ad5a1bbc9279c8acd9f1577cdfd36..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(pflow)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(pflow BINARY)
diff --git a/apps/cpu/Hagen_Poiseuille_flow/pf1.cfg b/apps/cpu/Hagen_Poiseuille_flow/pf1.cfg
deleted file mode 100644
index 68de4f8f90c49e5d50ae00749742a7eb1b27882a..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow/pf1.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-pathname = d:/temp/pflow1
-numOfThreads = 4
-availMem = 8e9
-logToFile = false
-blocknx = 10 10 10
-gridnx = 2 1 2
-nuLB = 1e-2
-forcing = 5e-8
-deltax = 0.1
-
-refineLevel = 0
-logToFile=false
-thinWall = false
-
-restartStep = 100000
-
-endTime = 100000
-outTime = 100000
\ No newline at end of file
diff --git a/apps/cpu/Hagen_Poiseuille_flow/pf2.cfg b/apps/cpu/Hagen_Poiseuille_flow/pf2.cfg
deleted file mode 100644
index 348eb0c962aec6742b9882cf83b4935cd3d2c83d..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow/pf2.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-pathname = d:/temp/pflow2
-numOfThreads = 4
-availMem = 8e9
-logToFile = false
-blocknx = 10 10 10
-gridnx = 2 0.5 2
-nuLB = 1e-2
-forcing = 6.25e-9
-deltax = 0.05
-
-refineLevel = 0
-logToFile=false
-thinWall = false
-
-restartStep = 400000
-
-endTime = 400000
-outTime = 400000
\ No newline at end of file
diff --git a/apps/cpu/Hagen_Poiseuille_flow/pf3.cfg b/apps/cpu/Hagen_Poiseuille_flow/pf3.cfg
deleted file mode 100644
index 1104e07971f97a0fefc7f8f21a1bf29602bbb5d3..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow/pf3.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-pathname = d:/temp/pflow4
-numOfThreads = 8
-availMem = 8e9
-logToFile = false
-blocknx = 10 10 10
-gridnx = 2 0.25 2
-nuLB = 1e-2
-forcing = 7.8125e-10
-deltax = 0.025
-
-refineLevel = 0
-logToFile=false
-thinWall = false
-
-restartStep = 400000
-
-endTime = 1600000
-outTime = 400000
\ No newline at end of file
diff --git a/apps/cpu/Hagen_Poiseuille_flow/pf4.cfg b/apps/cpu/Hagen_Poiseuille_flow/pf4.cfg
deleted file mode 100644
index c7b2430129b76170a69cb863c76ce991c7fe3fac..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow/pf4.cfg
+++ /dev/null
@@ -1,19 +0,0 @@
-pathname = d:/temp/pflow4
-numOfThreads = 8
-availMem = 8e9
-logToFile = false
-blocknx = 10 10 10
-gridnx = 2 0.25 2
-nuLB = 1e-2
-forcing = 7.8125e-10
-deltax = 0.025
-
-refineLevel = 1
-logToFile=false
-thinWall = false
-
-restartStep = 400000
-
-endTime = 1600000
-#outTime = 400000
-outTime = 400
\ No newline at end of file
diff --git a/apps/cpu/Hagen_Poiseuille_flow/pfDP.cfg b/apps/cpu/Hagen_Poiseuille_flow/pfDP.cfg
deleted file mode 100644
index e70b0c343bce3568839c3aa734a2585fcf350886..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow/pfDP.cfg
+++ /dev/null
@@ -1,24 +0,0 @@
-pathname = d:/temp/pflowDP
-numOfThreads = 1
-availMem = 3e9
-logToFile = false
-blocknx = 10 10 10
-boundingBox = 20 20 20 
-nuLB = 0.01
-dpLB = 1e-6 #9.99685e-7
-deltax = 1
-#deltax = 3.9999999e-6
-
-#deltax = 1
-
-refineLevel = 0
-thinWall = false
-
-
-newStart    = true
-restartStep = 100
-
-cpStep      = 100
-cpStepStart = 100
-outTime     = 1
-endTime     = 100
diff --git a/apps/cpu/Hagen_Poiseuille_flow/pflow.cpp b/apps/cpu/Hagen_Poiseuille_flow/pflow.cpp
deleted file mode 100644
index 559ba2bd0ea94894ec7d34a41f831ad912b54db7..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow/pflow.cpp
+++ /dev/null
@@ -1,734 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <VirtualFluids.h>
-
-using namespace std;
-
-
-//void pflowForcing(string configname)
-//{
-//   try
-//   {
-//      ConfigurationFile   config;
-//      config.load(configname);
-//
-//      string          pathname = config.getString("pathname");
-//      int             numOfThreads = config.getInt("numOfThreads");
-//      vector<int>     blocknx = config.getVector<int>("blocknx");
-//      vector<double>  gridnx = config.getVector<double>("gridnx");
-//      double          nuLB = config.getDouble("nuLB");
-//      double          endTime = config.getDouble("endTime");
-//      double          outTime = config.getDouble("outTime");
-//      double          availMem = config.getDouble("availMem");
-//      int             refineLevel = config.getInt("refineLevel");
-//      bool            logToFile = config.getBool("logToFile");
-//      double          restartStep = config.getDouble("restartStep");
-//      double          forcing = config.getDouble("forcing");
-//      bool            thinWall = config.getBool("thinWall");
-//      double          deltax = config.getDouble("deltax");
-//
-//
-//      SPtr<Communicator> comm = MPICommunicator::getInstance();
-//      int myid = comm->getProcessID();
-//
-//      if (logToFile)
-//      {
-//#if defined(__unix__)
-//         if (myid == 0)
-//         {
-//            const char* str = pathname.c_str();
-//            mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-//         }
-//#endif 
-//
-//         if (myid == 0)
-//         {
-//            stringstream logFilename;
-//            logFilename << pathname + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-//            UbLog::output_policy::setStream(logFilename.str());
-//         }
-//      }
-//
-//      double dx = deltax;
-//
-//      const int blocknx1 = blocknx[0];
-//      const int blocknx2 = blocknx[1];
-//      const int blocknx3 = blocknx[2];
-//
-//      LBMReal rhoLB = 0.0;
-//
-//      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-//
-//      const int baseLevel = 0;
-//
-//      //bounding box
-//      double g_minX1 = 0;
-//      double g_minX2 = 0;
-//      double g_minX3 = 0;
-//
-//      double g_maxX1 = gridnx[0];
-//      double g_maxX2 = gridnx[1];
-//      double g_maxX3 = gridnx[2];
-//
-//      double blockLength = blocknx1*dx;
-//
-//      SPtr<Grid3D> grid(new Grid3D(comm));
-//      grid->setPeriodicX1(true);
-//      grid->setPeriodicX2(true);
-//      grid->setPeriodicX3(false);
-//      grid->setDeltaX(dx);
-//      grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-//
-//      SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-//      if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-//
-//      //////////////////////////////////////////////////////////////////////////
-//      //restart
-//      SPtr<UbScheduler> rSch(new UbScheduler(restartStep, restartStep));
-//      RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
-//      //////////////////////////////////////////////////////////////////////////
-//
-//      if (grid->getTimeStep() == 0)
-//      {
-//         GenBlocksGridVisitor genBlocks(gridCube);
-//         grid->accept(genBlocks);
-//
-//         if (myid == 0)
-//         {
-//            UBLOG(logINFO, "Parameters:");
-//            UBLOG(logINFO, "forcing = " << forcing);
-//            UBLOG(logINFO, "rho = " << rhoLB);
-//            UBLOG(logINFO, "nu = " << nuLB);
-//            UBLOG(logINFO, "dx = " << dx);
-//            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
-//            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
-//            UBLOG(logINFO, "Preprozess - start");
-//         }
-//
-//         //////////////////////////////////////////////////////////////////////////
-//         //refinement
-//         double blockLengthX3Fine = grid->getDeltaX(refineLevel) * blocknx[2];
-//
-//         GbCuboid3DPtr refineBoxTop(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_maxX3 - blockLengthX3Fine, g_maxX1 + blockLength, g_maxX2 + blockLength, g_maxX3 + blockLength));
-//         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxTop.get(), pathname + "/geo/refineBoxTop", WbWriterVtkXmlASCII::getInstance());
-//
-//         //GbCuboid3DPtr refineBoxBottom(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3+offsetMinX3+blockLengthX3Fine));
-//         GbCuboid3DPtr refineBoxBottom(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_minX3 - blockLengthX3Fine, g_maxX1 + blockLength, g_maxX2 + blockLength, g_minX3 + blockLengthX3Fine));
-//         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxBottom.get(), pathname + "/geo/refineBoxBottom", WbWriterVtkXmlASCII::getInstance());
-//
-//         if (refineLevel > 0)
-//         {
-//            if (myid == 0) UBLOG(logINFO, "Refinement - start");
-//            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-//            refineHelper.addGbObject(refineBoxTop, refineLevel);
-//            refineHelper.addGbObject(refineBoxBottom, refineLevel);
-//            refineHelper.refine();
-//            if (myid == 0) UBLOG(logINFO, "Refinement - end");
-//         }
-//         //////////////////////////////////////////////////////////////////////////
-//
-//         //walls
-//         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_minX3 - blockLength, g_maxX1 + blockLength, g_maxX2 + blockLength, g_minX3));
-//         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname + "/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-//
-//         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_maxX3, g_maxX1 + blockLength, g_maxX2 + blockLength, g_maxX3 + blockLength));
-//         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname + "/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-//
-//         //wall interactors
-//         int bbOption = 1;
-//         D3Q27BoundaryConditionAdapterPtr bcNoSlip(new D3Q27NoSlipBCAdapter(bbOption));
-//         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcNoSlip, Interactor3D::SOLID));
-//         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcNoSlip, Interactor3D::SOLID));
-//
-//         ////////////////////////////////////////////
-//         //METIS
-//         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-//         ////////////////////////////////////////////
-//         /////delete solid blocks
-//         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-//         InteractorsHelper intHelper(grid, metisVisitor);
-//         intHelper.addInteractor(addWallZminInt);
-//         intHelper.addInteractor(addWallZmaxInt);
-//         intHelper.selectBlocks();
-//         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-//         //////////////////////////////////////
-//
-//         //set connectors
-//         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-//         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-//         grid->accept(setConnsVisitor);
-//
-//         //domain decomposition for threads
-//         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-//         grid->accept(pqPartVisitor);
-//
-//         WriteBlocksSPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-//         ppblocks->process(0);
-//         ppblocks.reset();
-//
-//         unsigned long nob = grid->getNumberOfBlocks();
-//         int gl = 3;
-//         unsigned long nodb = (blocknx1) * (blocknx2) * (blocknx3);
-//         unsigned long nod = nob * (blocknx1) * (blocknx2) * (blocknx3);
-//         unsigned long nodg = nob * (blocknx1 + gl) * (blocknx2 + gl) * (blocknx3 + gl);
-//         double needMemAll = double(nodg*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-//         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-//
-//         if (myid == 0)
-//         {
-//            UBLOG(logINFO, "Number of blocks = " << nob);
-//            UBLOG(logINFO, "Number of nodes  = " << nod);
-//            int minInitLevel = grid->getCoarsestInitializedLevel();
-//            int maxInitLevel = grid->getFinestInitializedLevel();
-//            for (int level = minInitLevel; level <= maxInitLevel; level++)
-//            {
-//               int nobl = grid->getNumberOfBlocks(level);
-//               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nob);
-//               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nob*nodb);
-//            }
-//            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-//            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-//            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-//         }
-//
-//         LBMKernel3DPtr kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-//
-//         mu::Parser fctForcingX1;
-//         fctForcingX1.SetExpr("Fx1");
-//         fctForcingX1.DefineConst("Fx1", forcing);
-//
-//         kernel->setWithForcing(true);
-//         kernel->setForcingX1(fctForcingX1);
-//
-//         SPtr<BCProcessor> bcProc;
-//         BoundaryConditionPtr noSlipBC;
-//
-//         if (thinWall)
-//         {
-//            bcProc = SPtr<BCProcessor>(new D3Q27ETForThinWallBCProcessor());
-//            noSlipBC = BoundaryConditionPtr(new ThinWallNoSlipBoundaryCondition());
-//         }
-//         else
-//         {
-//            bcProc = SPtr<BCProcessor>(new D3Q27ETBCProcessor());
-//            noSlipBC = BoundaryConditionPtr(new NoSlipBoundaryCondition());
-//         }
-//
-//         bcProc->addBC(noSlipBC);
-//
-//         kernel->setBCProcessor(bcProc);
-//
-//         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-//         grid->accept(kernelVisitor);
-//
-//         //////////////////////////////////
-//         //undef nodes for refinement
-//         if (refineLevel > 0)
-//         {
-//            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-//            grid->accept(undefNodesVisitor);
-//         }
-//
-//         //BC
-//         intHelper.setBC();
-//         BoundaryConditionBlockVisitor bcVisitor;
-//         grid->accept(bcVisitor);
-//
-//         //initialization of distributions
-//         D3Q27ETInitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-//         grid->accept(initVisitor);
-//
-//         //Postrozess
-//         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-//         MacroscopicQuantitiesSPtr<CoProcessor> ppgeo(
-//            new MacroscopicQuantitiesCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, true));
-//         ppgeo->process(0);
-//         ppgeo.reset();
-//
-//         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-//      }
-//      else
-//      {
-//         mu::Parser fctForcingX1;
-//         mu::Parser fctForcingX2;
-//         mu::Parser fctForcingX3;
-//         fctForcingX1.SetExpr("Fx1");
-//         fctForcingX1.DefineConst("Fx1", forcing);
-//         fctForcingX2.SetExpr("0.0");
-//         fctForcingX3.SetExpr("0.0");
-//
-//         SetForcingBlockVisitor forcingVisitor(fctForcingX1, fctForcingX2, fctForcingX3);
-//         grid->accept(forcingVisitor);
-//
-//         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-//         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-//         grid->accept(setConnsVisitor);
-//
-//         //domain decomposition for threads
-//         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-//         grid->accept(pqPartVisitor);
-//      }
-//
-//      SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-//      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-//
-//      SPtr<UbScheduler> stepSch(new UbScheduler(outTime));
-//
-//      MacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv);
-//
-//      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepSch));
-//      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-//      calculation->calculate();
-//      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-//   }
-//   catch (std::exception& e)
-//   {
-//      cerr << e.what() << endl << flush;
-//   }
-//   catch (std::string& s)
-//   {
-//      cerr << s << endl;
-//   }
-//   catch (...)
-//   {
-//      cerr << "unknown exception" << endl;
-//   }
-//
-//}
-//////////////////////////////////////////////////////////////////////////
-void pflowdp(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathname = config.getValue<string>("pathname");
-      int             numOfThreads = config.getValue<int>("numOfThreads");
-      vector<int>     blocknx = config.getVector<int>("blocknx");
-      vector<double>  boundingBox = config.getVector<double>("boundingBox");
-      double          nuLB = config.getValue<double>("nuLB");
-      double          endTime = config.getValue<double>("endTime");
-      double          outTime = config.getValue<double>("outTime");
-      double          availMem = config.getValue<double>("availMem");
-      int             refineLevel = config.getValue<int>("refineLevel");
-      bool            logToFile = config.getValue<bool>("logToFile");
-      double          restartStep = config.getValue<double>("restartStep");
-      double          dpLB = config.getValue<double>("dpLB");
-      bool            thinWall = config.getValue<bool>("thinWall");
-      double          deltax = config.getValue<double>("deltax");
-      double          cpStep = config.getValue<double>("cpStep");
-      double          cpStepStart = config.getValue<double>("cpStepStart");
-      bool            newStart = config.getValue<bool>("newStart");
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      LBMReal rhoLB = 0.0;
-      double rhoLBinflow = dpLB * 3.0;
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      //bounding box
-      double g_minX1 = 0;
-      double g_minX2 = 0;
-      double g_minX3 = 0;
-
-      double g_maxX1 = boundingBox[0];
-      double g_maxX2 = boundingBox[1];
-      double g_maxX3 = boundingBox[2];
-
-      double blockLength = 3.0 * deltax;
-
-      double h = (g_maxX2) / 2.0;
-      double dex = g_maxX1;
-      double Umax = (1.0 / (4.0 * nuLB)) * (dpLB / dex) * (h * h);
-      double Re = (4 * h * Umax) / (3 * nuLB);
-
-      //bc
-      LBMReal uLB = 0.01;
-      mu::Parser fct;
-      fct.SetExpr("U");
-      fct.DefineConst("U", uLB);
-      SPtr<BCAdapter> denBCAdapterInflow(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-      //denBCAdapterInflow->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityWithDensityBCAlgorithm()));
-      denBCAdapterInflow->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityBCAlgorithm()));
-
-      //SPtr<BCAdapter> denBCAdapterOutflow(new DensityBCAdapter(rhoLB));
-      //denBCAdapterOutflow->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingOutflowBCAlgorithm()));
-      ////denBCAdapterOutflow->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-
-      //SPtr<BCAdapter> slipBCAdapter(new SlipBCAdapter());
-      ////slipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingSlipBCAlgorithm()));
-      //slipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new SlipBCAlgorithm()));
-      //
-
-      //SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      //noSlipBCAdapter->setBcAlgorithm(NoSlipSPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-
-      //BoundaryConditionsBlockVisitor bcVisitor;
-      //bcVisitor.addBC(noSlipBCAdapter);
-      //bcVisitor.addBC(slipBCAdapter);
-      //bcVisitor.addBC(denBCAdapterInflow);
-      //bcVisitor.addBC(denBCAdapterOutflow);
-
-
-
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-
-      //SPtr<BCAdapter> denBCAdapterInflow(new DensityBCAdapter(rhoLBinflow));
-      //denBCAdapterInflow->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapterOutflow(new DensityBCAdapter(rhoLB));
-      denBCAdapterOutflow->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-
-      //BS visitor
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      bcVisitor.addBC(denBCAdapterInflow);
-      bcVisitor.addBC(denBCAdapterOutflow);
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-      grid->setPeriodicX1(false);
-      grid->setPeriodicX2(true);
-      grid->setPeriodicX3(false);
-      grid->setDeltaX(deltax);
-      grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-
-      SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-      double k1 = 4;
-      double k2 = 8;
-
-      SPtr<GbObject3D> refineCube1_1(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2 / k1 - 1.0, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(refineCube1_1.get(), pathname + "/geo/refineCube1_1", WbWriterVtkXmlBinary::getInstance());
-
-      SPtr<GbObject3D> refineCube1_2(new GbCuboid3D(g_minX1, g_maxX2 - g_maxX2 / k1 + 1.0, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(refineCube1_2.get(), pathname + "/geo/refineCube1_2", WbWriterVtkXmlBinary::getInstance());
-
-      SPtr<GbObject3D> refineCube2_1(new GbCuboid3D(g_minX1 + 2 * blockLength + 2 * deltax, g_minX2, g_minX3, g_maxX1 - 2 * blockLength - 2 * deltax, g_maxX2 / k2 - 1.0, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(refineCube2_1.get(), pathname + "/geo/refineCube2_1", WbWriterVtkXmlBinary::getInstance());
-
-      SPtr<GbObject3D> refineCube2_2(new GbCuboid3D(g_minX1 + 2 * blockLength + 2 * deltax, g_maxX2 - g_maxX2 / k2 + 1.0, g_minX3, g_maxX1 - 2 * blockLength - 2 * deltax, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(refineCube2_2.get(), pathname + "/geo/refineCube2_2", WbWriterVtkXmlBinary::getInstance());
-
-      SPtr<GbObject3D> refineCube2_3(new GbCuboid3D(g_minX1 + blockLength + 2 * deltax, g_minX2 + blockLength + 2 * deltax, g_minX3 + blockLength + 2 * deltax, g_maxX1 - blockLength - 2 * deltax, g_maxX2 - blockLength - 2 * deltax, g_maxX3 - blockLength - 2 * deltax));
-      if (myid == 0) GbSystem3D::writeGeoObject(refineCube2_3.get(), pathname + "/geo/refineCube2_3", WbWriterVtkXmlBinary::getInstance());
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      //SPtr<UbScheduler> rSch(new UbScheduler(restartStep));
-      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
-
-      //SPtr<UbScheduler> rSch2(new UbScheduler(cpStep, cpStepStart));
-      //MPIIORestart1CoProcessor rcp(grid, rSch2, pathname, comm);
-
-      SPtr<LBMKernel> kernel;
-      kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel());
-
-      SPtr<BCProcessor> bcProc(new BCProcessor());
-      //SPtr<BCProcessor> bcProc = SPtr<BCProcessor>(new ThinWallBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      //rcp.setLBMKernel(kernel);
-      //rcp.setBCProcessor(bcProc);
-      //rcp.setChunk(1);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (newStart)
-      {
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "h = " << h);
-            UBLOG(logINFO, "rho = " << rhoLB);
-            UBLOG(logINFO, "nue = " << nuLB);
-            UBLOG(logINFO, "Re = " << Re);
-            UBLOG(logINFO, "dx = " << deltax);
-            UBLOG(logINFO, "dpLB = " << dpLB);
-            UBLOG(logINFO, "Umax = " << Umax);
-            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
-            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
-            UBLOG(logINFO, "path = " << pathname);
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         //walls
-         GbCuboid3DPtr addWallYmin(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_minX3 - blockLength, g_maxX1 + blockLength, g_minX2, g_maxX3 + blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname + "/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1 - blockLength, g_maxX2, g_minX3 - blockLength, g_maxX1 + blockLength, g_maxX2 + blockLength, g_maxX3 + blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname + "/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_minX3 - blockLength, g_maxX1 + blockLength, g_maxX2 + blockLength, g_minX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname + "/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_maxX3, g_maxX1 + blockLength, g_maxX2 + blockLength, g_maxX3 + blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname + "/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-
-         //GbCuboid3DPtr addWallXmax(new GbCuboid3D(g_maxX1-4.0*deltax, g_maxX2, g_minX3 - 4.0*blockLength, g_maxX1 + 4.0*blockLength, g_maxX2 + 4.0*blockLength, g_maxX3 + 4.0*blockLength));
-         //if (myid == 0) GbSystem3D::writeGeoObject(addWallXmax.get(), pathname+"/geo/addWallXmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_minX3 - blockLength, g_minX1, g_maxX2 + blockLength, g_maxX3 + blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname + "/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2 - blockLength, g_minX3 - blockLength, g_maxX1 + blockLength, g_maxX2 + blockLength, g_maxX3 + blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname + "/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         //GbCuboid3DPtr geoOutflowSolid(new GbCuboid3D(g_maxX1-1.0*deltax, g_minX2 - 4.0*blockLength, g_minX3 - 4.0*blockLength, g_maxX1 + 4.0*blockLength, g_maxX2+4.0*blockLength, g_maxX3 + 4.0*blockLength));
-         //if (myid == 0) GbSystem3D::writeGeoObject(geoOutflowSolid.get(), pathname + "/geo/geoOutflowSolid", WbWriterVtkXmlASCII::getInstance());
-
-         ////inflow
-         //GbCuboid3DPtr geoInflow (new GbCuboid3D(g_minX1-4.0*blockLength, g_minX2-4.0*blockLength, g_minX3-4.0*blockLength, g_maxX1+4.0*blockLength, g_maxX2+4.0*blockLength, g_minX3));
-         //if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         ////outflow
-         //GbCuboid3DPtr geoOutflow (new GbCuboid3D(g_minX1-4.0*blockLength, g_minX2-4.0*blockLength, g_maxX3, g_maxX1+4.0*blockLength, g_maxX2+4.0*blockLength, g_maxX3+4.0*blockLength));
-         //if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         SPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         if (refineLevel > 0)
-         {
-            if (myid == 0) UBLOG(logINFO, "Refinement - start");
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel, comm);
-            //refineHelper.addGbObject(refineCube1_1, 1);
-            //refineHelper.addGbObject(refineCube1_2, 1);
-            //refineHelper.addGbObject(refineCube2_1, 2);
-            //refineHelper.addGbObject(refineCube2_2, 2);
-            refineHelper.addGbObject(refineCube2_3, refineLevel);
-            refineHelper.refine();
-            if (myid == 0) UBLOG(logINFO, "Refinement - end");
-         }
-
-         //walls
-         SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         //SPtr<D3Q27Interactor> addWallXmaxInt(new D3Q27Interactor(addWallXmax, grid, denBCAdapterOutflow,Interactor3D::SOLID));
-
-         SPtr<D3Q27Interactor> inflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, denBCAdapterInflow, Interactor3D::SOLID));
-
-         //outflow
-         SPtr<D3Q27Interactor> outflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denBCAdapterOutflow, Interactor3D::SOLID));
-         //SPtr<D3Q27Interactor> outflowSolidInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         //METIS
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-
-         //intHelper.addInteractor(addWallYminInt);
-         //intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-
-         intHelper.addInteractor(inflowInt);
-
-         intHelper.addInteractor(outflowInt);
-
-         //die Geschwindigkeit Randbedingung soll Ausflüß überdecken !!!!!
-
-
-
-         intHelper.selectBlocks();
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         //set connectors
-         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         ppblocks->process(0);
-         ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx[0]) * (blocknx[1]) * (blocknx[2]);
-         unsigned long nod = nob * (blocknx[0]) * (blocknx[1]) * (blocknx[2]);
-         unsigned long nodg = nob * (blocknx[0] + gl) * (blocknx[1] + gl) * (blocknx[1] + gl);
-         double needMemAll = double(nodg * (27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << nob);
-            UBLOG(logINFO, "Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl * nodb);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         //SPtr<LBMKernel> kernel;
-         //kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], IncompressibleCumulantLBMKernel::NORMAL));
-         //kernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], CompressibleCumulantLBMKernel::NORMAL));
-         //}
-         //kernel->setWithForcing(true);
-         //kernel->setForcingX1(2e-6);
-         //SPtr<BCProcessor> bcProc(new BCProcessor());
-         //kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //walls
-         intHelper.setBC();
-
-         grid->accept(bcVisitor);
-
-
-         //initialization of distributions
-         //mu::Parser fct;
-         //fct.SetExpr("-(1.0/(2.0*nu))*(dp/dx)*((x2-h)^2 - h^2)");
-         //fct.DefineConst("dp", dpLB);
-         //fct.DefineConst("dx", dex);
-         //fct.DefineConst("h", h);
-         //fct.DefineConst("nu", nuLB);
-
-         mu::Parser fct;
-         fct.SetExpr("(x1max-x1)/l*dp*3.0");
-         fct.DefineConst("dp", dpLB);
-         fct.DefineConst("x1max", g_maxX1);
-         fct.DefineConst("l", g_maxX1 - g_minX1);
-
-         InitDistributionsBlockVisitor initVisitor;
-         //initVisitor.setVx1(fct);
-         //initVisitor.setVx1(uLB);
-         //initVisitor.setVx3(fct);
-         //initVisitor.setRho(fct);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         SPtr<CoProcessor> ppgeo(
-            new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-         ppgeo->process(0);
-         ppgeo.reset();
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         //rcp.readBlocks(restartStep);
-         //SPtr<Grid3DVisitor> newMetisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-         //grid->accept(newMetisVisitor);
-         //rcp.readDataSet(restartStep);
-         //rcp.readBoundaryConds(restartStep);
-
-         //rcp.restart((int)restartStep);
-
-         grid->setTimeStep(restartStep);
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         grid->accept(bcVisitor);
-
-         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         WriteBoundaryConditionsCoProcessor ppgeo = WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm);
-         ppgeo.process(1);
-
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-      }
-      SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-      SPtr<CoProcessor> npr(new NUPSCounterCoProcessor (grid, nupsSch, numOfThreads, comm));
-
-      //write data for visualization of macroscopic quantities
-      SPtr<UbScheduler> visSch(new UbScheduler(outTime));
-      SPtr<WriteMacroscopicQuantitiesCoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, visSch, pathname, 
-      WbWriterVtkXmlASCII::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
-
-      SPtr<UbScheduler> AdjForcSch(new UbScheduler());
-      AdjForcSch->addSchedule(10, 0, 10000000);
-      SPtr<IntegrateValuesHelper> intValHelp(new IntegrateValuesHelper(grid, comm,
-         g_minX1, g_minX2, g_minX3,
-         g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(intValHelp->getBoundingBox().get(), pathname + "/geo/IntValHelp", WbWriterVtkXmlBinary::getInstance());
-
-      double vxTarget = uLB;
-      AdjustForcingCoProcessor AdjForcPPPtr(grid, AdjForcSch, pathname, intValHelp, vxTarget, comm);
-
-      //start simulation 
-      //omp_set_num_threads(numOfThreads);
-      SPtr<UbScheduler> stepGhostLayer(new UbScheduler(outTime));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
-      calculator->addCoProcessor(npr);
-      calculator->addCoProcessor(writeMQCoProcessor);
-      //calculator->addCoProcessor(migCoProcessor);
-      //calculator->addCoProcessor(restartCoProcessor);
-
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (std::exception & e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string & s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-      {
-         //pflowForcing(string(argv[1]));
-         pflowdp(string(argv[1]));
-      }
-      else
-      {
-         cout << "Configuration file is missing!" << endl;
-      }
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/Hagen_Poiseuille_flow2/CMakeLists.txt b/apps/cpu/Hagen_Poiseuille_flow2/CMakeLists.txt
deleted file mode 100644
index 89a138ea268f1b62abda3e9d472e656fcf28f8cb..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow2/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(pflow2)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(pflow2 BINARY)
diff --git a/apps/cpu/Hagen_Poiseuille_flow2/pf1.cfg b/apps/cpu/Hagen_Poiseuille_flow2/pf1.cfg
deleted file mode 100644
index 68de4f8f90c49e5d50ae00749742a7eb1b27882a..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow2/pf1.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-pathname = d:/temp/pflow1
-numOfThreads = 4
-availMem = 8e9
-logToFile = false
-blocknx = 10 10 10
-gridnx = 2 1 2
-nuLB = 1e-2
-forcing = 5e-8
-deltax = 0.1
-
-refineLevel = 0
-logToFile=false
-thinWall = false
-
-restartStep = 100000
-
-endTime = 100000
-outTime = 100000
\ No newline at end of file
diff --git a/apps/cpu/Hagen_Poiseuille_flow2/pf2.cfg b/apps/cpu/Hagen_Poiseuille_flow2/pf2.cfg
deleted file mode 100644
index 348eb0c962aec6742b9882cf83b4935cd3d2c83d..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow2/pf2.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-pathname = d:/temp/pflow2
-numOfThreads = 4
-availMem = 8e9
-logToFile = false
-blocknx = 10 10 10
-gridnx = 2 0.5 2
-nuLB = 1e-2
-forcing = 6.25e-9
-deltax = 0.05
-
-refineLevel = 0
-logToFile=false
-thinWall = false
-
-restartStep = 400000
-
-endTime = 400000
-outTime = 400000
\ No newline at end of file
diff --git a/apps/cpu/Hagen_Poiseuille_flow2/pf3.cfg b/apps/cpu/Hagen_Poiseuille_flow2/pf3.cfg
deleted file mode 100644
index 1104e07971f97a0fefc7f8f21a1bf29602bbb5d3..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow2/pf3.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-pathname = d:/temp/pflow4
-numOfThreads = 8
-availMem = 8e9
-logToFile = false
-blocknx = 10 10 10
-gridnx = 2 0.25 2
-nuLB = 1e-2
-forcing = 7.8125e-10
-deltax = 0.025
-
-refineLevel = 0
-logToFile=false
-thinWall = false
-
-restartStep = 400000
-
-endTime = 1600000
-outTime = 400000
\ No newline at end of file
diff --git a/apps/cpu/Hagen_Poiseuille_flow2/pf4.cfg b/apps/cpu/Hagen_Poiseuille_flow2/pf4.cfg
deleted file mode 100644
index c7b2430129b76170a69cb863c76ce991c7fe3fac..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow2/pf4.cfg
+++ /dev/null
@@ -1,19 +0,0 @@
-pathname = d:/temp/pflow4
-numOfThreads = 8
-availMem = 8e9
-logToFile = false
-blocknx = 10 10 10
-gridnx = 2 0.25 2
-nuLB = 1e-2
-forcing = 7.8125e-10
-deltax = 0.025
-
-refineLevel = 1
-logToFile=false
-thinWall = false
-
-restartStep = 400000
-
-endTime = 1600000
-#outTime = 400000
-outTime = 400
\ No newline at end of file
diff --git a/apps/cpu/Hagen_Poiseuille_flow2/pfDP.cfg b/apps/cpu/Hagen_Poiseuille_flow2/pfDP.cfg
deleted file mode 100644
index a79eae0329df5c9ccab9c1a9b82d4cfcceaef40f..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow2/pfDP.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-pathname = d:/temp/pflowDP_compact_5_10-3_NoAveraging
-numOfThreads = 4
-availMem = 8e9
-logToFile = false
-blocknx = 10 10 2
-gridnx = 4 2 0.2
-nuLB = 5e-3
-dpLB = 1e-7
-deltax = 0.1
-
-refineLevel = 1
-logToFile=false
-thinWall = false
-
-restartStep = 100000
-
-endTime = 500000
-outTime = 50000
\ No newline at end of file
diff --git a/apps/cpu/Hagen_Poiseuille_flow2/pflow2.cpp b/apps/cpu/Hagen_Poiseuille_flow2/pflow2.cpp
deleted file mode 100644
index 68ba4e9e93eeaf1bd2593a14233a828839324cd2..0000000000000000000000000000000000000000
--- a/apps/cpu/Hagen_Poiseuille_flow2/pflow2.cpp
+++ /dev/null
@@ -1,337 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <VirtualFluids.h>
-
-using namespace std;
-
-
-void pflowdp(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathname = config.getString("pathname");
-      int             numOfThreads = config.getValue<int>("numOfThreads");
-      vector<int>     blocknx = config.getVector<int>("blocknx");
-      vector<double>  gridnx = config.getVector<double>("gridnx");
-      double          nuLB = config.getValue<double>("nuLB");
-      double          endTime = config.getValue<double>("endTime");
-      double          outTime = config.getValue<double>("outTime");
-      double          availMem = config.getValue<double>("availMem");
-      int             refineLevel = config.getValue<int>("refineLevel");
-      bool            logToFile = config.getValue<bool>("logToFile");
-      double          restartStep = config.getValue<double>("restartStep");
-      double          dpLB = config.getValue<double>("dpLB");
-      bool            thinWall = config.getValue<bool>("thinWall");
-      double          deltax = config.getValue<double>("deltax");
-
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      LBMReal rhoLB = 0.0;
-      double rhoLBinflow = dpLB*3.0;
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-            //bounding box
-            double g_minX1 = 0;
-            double g_minX2 = 0;
-            double g_minX3 = 0;
-      
-            double g_maxX1 = gridnx[0];
-            double g_maxX2 = gridnx[1];
-            double g_maxX3 = gridnx[2];
-
-      double blockLength = (double)blocknx[0]*deltax;
-
-      double h = (g_maxX2) / 2.0;
-      double dex = g_maxX1;
-      double Umax = (1.0 / (4.0*nuLB))*(dpLB / dex)*(h*h);
-      double Re = (4 * h*Umax) / (3 * nuLB);
-
-      //bc
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapterInflow(new DensityBCAdapter(rhoLBinflow));
-      denBCAdapterInflow->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapterOutflow(new DensityBCAdapter(rhoLB));
-      denBCAdapterOutflow->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-
-      //BS visitor
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      bcVisitor.addBC(denBCAdapterInflow);
-      bcVisitor.addBC(denBCAdapterOutflow);
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-      grid->setPeriodicX1(false);
-      grid->setPeriodicX2(false);
-      grid->setPeriodicX3(true);
-      grid->setDeltaX(deltax);
-      grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-
-      SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-      double k1 = 4;
-      double k2 = 8;
-
-      SPtr<GbObject3D> refineCube1_1(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2 / k1 - 1.0, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(refineCube1_1.get(), pathname + "/geo/refineCube1_1", WbWriterVtkXmlBinary::getInstance());
-
-      SPtr<GbObject3D> refineCube1_2(new GbCuboid3D(g_minX1, g_maxX2 - g_maxX2 / k1 + 1.0, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(refineCube1_2.get(), pathname + "/geo/refineCube1_2", WbWriterVtkXmlBinary::getInstance());
-
-      SPtr<GbObject3D> refineCube2_1(new GbCuboid3D(g_minX1 + 2 * blockLength + 2 * deltax, g_minX2, g_minX3, g_maxX1 - 2 * blockLength - 2 * deltax, g_maxX2 / k2 - 1.0, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(refineCube2_1.get(), pathname + "/geo/refineCube2_1", WbWriterVtkXmlBinary::getInstance());
-
-      SPtr<GbObject3D> refineCube2_2(new GbCuboid3D(g_minX1 + 2 * blockLength + 2 * deltax, g_maxX2 - g_maxX2 / k2 + 1.0, g_minX3, g_maxX1 - 2 * blockLength - 2 * deltax, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(refineCube2_2.get(), pathname + "/geo/refineCube2_2", WbWriterVtkXmlBinary::getInstance());
-
-      SPtr<GbObject3D> refineCube2_3(new GbCuboid3D(g_minX1 + blockLength + 2 * deltax, g_minX2 + blockLength + 2 * deltax, g_minX3 + blockLength + 2 * deltax, g_maxX1 - blockLength - 2 * deltax, g_maxX2 - blockLength - 2 * deltax, g_maxX3 - blockLength - 2 * deltax));
-      if (myid == 0) GbSystem3D::writeGeoObject(refineCube2_3.get(), pathname + "/geo/refineCube2_3", WbWriterVtkXmlBinary::getInstance());
-
-      SPtr<GbObject3D> refineCube3(new GbCuboid3D(g_minX1 + 2.0*(g_maxX1/3.0), g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(refineCube3.get(), pathname + "/geo/refineCube3", WbWriterVtkXmlBinary::getInstance());
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      //SPtr<UbScheduler> rSch(new UbScheduler(restartStep));
-      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (grid->getTimeStep() == 0)
-      {
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "h = " << h);
-            UBLOG(logINFO, "rho = " << rhoLB);
-            UBLOG(logINFO, "nue = " << nuLB);
-            UBLOG(logINFO, "Re = " << Re);
-            UBLOG(logINFO, "dx = " << deltax);
-            UBLOG(logINFO, "dpLB = " << dpLB);
-            UBLOG(logINFO, "Umax = " << Umax);
-            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
-            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
-            UBLOG(logINFO, "path = " << pathname);
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         //walls
-         GbCuboid3DPtr addWallYmin (new GbCuboid3D(g_minX1-4.0*blockLength, g_minX2-4.0*blockLength, g_minX3-4.0*blockLength, g_maxX1+4.0*blockLength, g_minX2, g_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax (new GbCuboid3D(g_minX1-4.0*blockLength, g_maxX2, g_minX3-4.0*blockLength, g_maxX1+4.0*blockLength, g_maxX2+4.0*blockLength, g_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1 - 4.0*blockLength, g_minX2 - 4.0*blockLength, g_minX3 - 4.0*blockLength, g_minX1, g_maxX2 + 4.0*blockLength, g_maxX3 + 4.0*blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname + "/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2 - 4.0*blockLength, g_minX3 - 4.0*blockLength, g_maxX1 + 4.0*blockLength, g_maxX2 + 4.0*blockLength, g_maxX3 + 4.0*blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname + "/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         ////inflow
-         //GbCuboid3DPtr geoInflow (new GbCuboid3D(g_minX1-4.0*blockLength, g_minX2-4.0*blockLength, g_minX3-4.0*blockLength, g_maxX1+4.0*blockLength, g_maxX2+4.0*blockLength, g_minX3));
-         //if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         ////outflow
-         //GbCuboid3DPtr geoOutflow (new GbCuboid3D(g_minX1-4.0*blockLength, g_minX2-4.0*blockLength, g_maxX3, g_maxX1+4.0*blockLength, g_maxX2+4.0*blockLength, g_maxX3+4.0*blockLength));
-         //if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         SPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         if (refineLevel > 0)
-         {
-            if (myid == 0) UBLOG(logINFO, "Refinement - start");
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel, comm);
-            //refineHelper.addGbObject(refineCube1_1, 1);
-            //refineHelper.addGbObject(refineCube1_2, 1);
-            //refineHelper.addGbObject(refineCube2_1, 2);
-            //refineHelper.addGbObject(refineCube2_2, 2);
-            //refineHelper.addGbObject(refineCube2_3, refineLevel);
-            refineHelper.addGbObject(refineCube3, refineLevel);
-            
-            refineHelper.refine();
-            if (myid == 0) UBLOG(logINFO, "Refinement - end");
-         }
-
-         //walls
-         SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, noSlipBCAdapter,Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, noSlipBCAdapter,Interactor3D::SOLID));
-
-         SPtr<D3Q27Interactor> inflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, denBCAdapterInflow, Interactor3D::SOLID));
-
-         //outflow
-         SPtr<D3Q27Interactor> outflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denBCAdapterOutflow, Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         //METIS
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.selectBlocks();
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         ppblocks->process(0);
-         ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx[0]) * (blocknx[1]) * (blocknx[2]);
-         unsigned long nod = nob * (blocknx[0]) * (blocknx[1]) * (blocknx[2]);
-         unsigned long nodg = nob * (blocknx[0] + gl) * (blocknx[1] + gl) * (blocknx[1] + gl);
-         double needMemAll = double(nodg*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << nob);
-            UBLOG(logINFO, "Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*nodb);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         int kernelType = 2;
-         SPtr<LBMKernel> kernel;
-         kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel());
-         //}
-
-         SPtr<BCProcessor> bcProc(new BCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //walls
-         intHelper.setBC();
-
-         grid->accept(bcVisitor);
-
-         //initialization of distributions
-         mu::Parser fct;
-         fct.SetExpr("-(1.0/(2.0*nu))*(dp/dx)*((x2-h)^2 - h^2)");
-         fct.DefineConst("dp", dpLB);
-         fct.DefineConst("dx", dex);
-         fct.DefineConst("h", h);
-         fct.DefineConst("nu", nuLB);
-
-         InitDistributionsBlockVisitor initVisitor;
-         //initVisitor.setVx1(fct);
-         initVisitor.setVx1(0.0);
-         //initVisitor.setVx3(fct);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         SPtr<CoProcessor> ppgeo(
-            new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-         ppgeo->process(0);
-         ppgeo.reset();
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         grid->accept(bcVisitor);
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-      }
-      SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-      SPtr<NUPSCounterCoProcessor> npr(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTime));
-
-      SPtr<WriteMacroscopicQuantitiesCoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-
-
-      omp_set_num_threads(numOfThreads);
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepSch, endTime));
-      calculator->addCoProcessor(npr);
-      calculator->addCoProcessor(writeMQCoProcessor);
-
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-      {
-         //pflowForcing(string(argv[1]));
-         pflowdp(string(argv[1]));
-      }
-      else
-      {
-         cout << "Configuration file is missing!" << endl;
-      }
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/IncludsList.cmake b/apps/cpu/IncludsList.cmake
index 98341df07ca3318610f9f32fe840c5bce7e7fd8c..d5ceb5de7764c40bb3fc2bc8e58de6ef9dd8c3dc 100644
--- a/apps/cpu/IncludsList.cmake
+++ b/apps/cpu/IncludsList.cmake
@@ -2,9 +2,7 @@ INCLUDE_DIRECTORIES(${APPS_ROOT_CPU})
 INCLUDE(${CMAKE_SOURCE_DIR}/src/cpu/VirtualFluidsCore/IncludsList.cmake)
 
 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/basics)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/basics/numerics/geometry3d)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/basics/numerics/geometry3d/Creator)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/basics/numerics/geometry3d/KdTree)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/basics/geometry3d)
 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/basics/basics/container)
 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/basics/basics/memory)
 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/basics/basics/objects)
diff --git a/apps/cpu/InterfaceTest/CMakeLists.txt b/apps/cpu/InterfaceTest/CMakeLists.txt
deleted file mode 100644
index f98f769a042768ee014aa7001873d88e0212240b..0000000000000000000000000000000000000000
--- a/apps/cpu/InterfaceTest/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(InterfaceTest)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(itest BINARY)
diff --git a/apps/cpu/InterfaceTest/itest.cpp b/apps/cpu/InterfaceTest/itest.cpp
deleted file mode 100644
index 104305be9e8f0fde44bb8d5f129fb3a55786b70a..0000000000000000000000000000000000000000
--- a/apps/cpu/InterfaceTest/itest.cpp
+++ /dev/null
@@ -1,224 +0,0 @@
-#include <iostream>
-#include <string>
-#include <omp.h>
-
-#include "VirtualFluids.h"
-
-using namespace std;
-
-
-void run()
-{
-   try
-   {
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      int    numOfThreads = 4;
-      double availMem = 5e9;
-
-      //40
-      string  pathname = "d:/temp/InterfaceTest";
-      int  endTime = 2000;
-      double  outTime = 100;
-      LBMReal dx =  0.05;
-      
-      LBMReal rhoLB = 0.0;
-      LBMReal nuLB = 3.97e-7;
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      int baseLevel = 0;
-      int refineLevel = 1;
-
-      //bounding box
-      double g_minX1 = -1.0;
-      double g_minX2 = -1.0;
-      double g_minX3 = -1.0;
-
-      double g_maxX1 = 1.0;
-      double g_maxX2 = 1.0;
-      double g_maxX3 = 1.0;
-
-      vector<int>  blocknx(3);
-      blocknx[0] = 10;
-      blocknx[1] = 10;
-      blocknx[2] = 10;
-
-      //geometry
-      SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-
-      double blockLength = blocknx[0] * dx;
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<Grid3D> oldGrid(new Grid3D(comm));
-      SPtr<UbScheduler> rSch(new UbScheduler(10));
-      //MPIIORestartCoProcessor rcp(oldGrid, rSch, pathname, comm);
-      //rcp.restart(0);
-      //////////////////////////////////////////////////////////////////////////
-
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-      grid->setPeriodicX1(true);
-      grid->setPeriodicX2(true);
-      grid->setPeriodicX3(true);
-
-
-      GenBlocksGridVisitor genBlocks(gridCube);
-      grid->accept(genBlocks);
-
-      SPtr<GbObject3D> refCube(new GbCuboid3D(-0.4,-0.4,-0.4,0.4,0.4,0.4));
-      if (myid==0) GbSystem3D::writeGeoObject(refCube.get(), pathname+"/geo/refCube", WbWriterVtkXmlBinary::getInstance());
-
-      if (refineLevel>0)
-      {
-         if (myid==0) UBLOG(logINFO, "Refinement - start");
-         RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel, comm);
-         refineHelper.addGbObject(refCube, refineLevel);
-         refineHelper.refine();
-         if (myid==0) UBLOG(logINFO, "Refinement - end");
-      }
-
-      SPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-      SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-      InteractorsHelper intHelper(grid, metisVisitor);
-      intHelper.selectBlocks();
-
-      ppblocks->process(0);
-      ppblocks.reset();
-
-      //set connectors
-      //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
-      InterpolationProcessorPtr iProcessor(new CompressibleOffsetMomentsInterpolationProcessor());
-      dynamicPointerCast<CompressibleOffsetMomentsInterpolationProcessor>(iProcessor)->setBulkOmegaToOmega(true);
-      SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-
-      UBLOG(logINFO, "SetConnectorsBlockVisitor:start");
-      grid->accept(setConnsVisitor);
-      UBLOG(logINFO, "SetConnectorsBlockVisitor:end");
-
-      //domain decomposition for threads
-      PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      grid->accept(pqPartVisitor);
-
-
-      unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-      int ghostLayer = 3;
-      unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-      unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-      unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-      double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-      double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-         UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-         int minInitLevel = grid->getCoarsestInitializedLevel();
-         int maxInitLevel = grid->getFinestInitializedLevel();
-         for (int level = minInitLevel; level <= maxInitLevel; level++)
-         {
-            int nobl = grid->getNumberOfBlocks(level);
-            UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-            UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-         }
-         UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-         UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-         UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-      }
-
-
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel());
-      dynamicPointerCast<CompressibleCumulantLBMKernel>(kernel)->setRelaxationParameter(CompressibleCumulantLBMKernel::NORMAL);
-      //
-      SPtr<BCProcessor> bcProcessor(new BCProcessor());
-
-      kernel->setBCProcessor(bcProcessor);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-      if (refineLevel>0)
-      {
-         SetUndefinedNodesBlockVisitor undefNodesVisitor;
-         grid->accept(undefNodesVisitor);
-      }
-
-      //initialization of distributions
-      InitDistributionsBlockVisitor initVisitor;
-      initVisitor.setVx1(0.001);
-      initVisitor.setVx2(0.001);
-      initVisitor.setVx3(0.001);
-      grid->accept(initVisitor);
-
-      //InitDistributionsWithCoarseGridBlockVisitor initVisitor(oldGrid, grid, iProcessor, nuLB);
-      //grid->accept(initVisitor);
-
-
-      //Postrozess
-      SPtr<UbScheduler> geoSch(new UbScheduler(1));
-      SPtr<CoProcessor> ppgeo(new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-      ppgeo->process(0);
-      ppgeo.reset();
-
-      if (myid==0) UBLOG(logINFO, "Preprozess - end");
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      SPtr<UbScheduler> visSch(new UbScheduler(outTime));
-      SPtr<WriteMacroscopicQuantitiesCoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-      SPtr<NUPSCounterCoProcessor> nupsCoProcessor(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-      omp_set_num_threads(numOfThreads);
-      SPtr<Calculator> calculator(new BasicCalculator(grid, visSch, endTime));
-      calculator->addCoProcessor(nupsCoProcessor);
-      calculator->addCoProcessor(writeMQCoProcessor);
-
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-   //if (argv != NULL)
-   //{
-      //if (argv[1] != NULL)
-      //{
-      //   run(string(argv[1]));
-      //}
-      //else
-      //{
-      //   cout << "Configuration file is missing!" << endl;
-      //}
-   //}
-
-   run();
-}
-
diff --git a/apps/cpu/LaminarTubeFlowConv/CMakeLists.txt b/apps/cpu/LaminarTubeFlowConv/CMakeLists.txt
deleted file mode 100644
index 31cf787822aedf1f4c43cc6a1eb20a722209306f..0000000000000000000000000000000000000000
--- a/apps/cpu/LaminarTubeFlowConv/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(ltfc)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(ltfc BINARY)
diff --git a/apps/cpu/LaminarTubeFlowConv/ltf.cpp b/apps/cpu/LaminarTubeFlowConv/ltf.cpp
deleted file mode 100644
index 44ed43de11db630ea185b6db89fbe70f420b6cce..0000000000000000000000000000000000000000
--- a/apps/cpu/LaminarTubeFlowConv/ltf.cpp
+++ /dev/null
@@ -1,279 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "vfluids.h"
-
-using namespace std;
-
-
-int x[3] = { 120, 240, 480 };
-int y[3] = { 20, 40, 80 };
-int z[3] = { 20, 40, 80 };
-
-//int x[3] = { 120, 120, 120 };
-//int y[3] = { 20, 20, 20 };
-//int z[3] = { 20, 20, 20 };
-double nuLB = 0.001;
-double dp[3] = { 25000.0, 100000.0, 400000.0 };
-double tout[3] = { 4000.0, 16000.0, 64000.0 };
-double tend[3] = { 100001.0, 400001.0, 1600001.0 };
-//double deltax[3] = { 1.0, 0.5, 0.25 };
-double deltax[3] = { 1.0, 1.0, 1.0 };
-
-
-void run(int tn)
-{
-   try
-   {
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      int numOfThreads = 1;
-      double availMem = 0;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "d:/temp/ltfc" + UbSystem::toString(tn);
-         numOfThreads = 1;
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/koskuche/scratch/ltfc"+UbSystem::toString(tn);
-         numOfThreads = 8;
-         availMem = 12.0e9;
-
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathname.c_str();
-            int status = mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename << pathname + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + "_" + UbSystem::toString(myid) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      double dx = deltax[tn];
-
-      double L1 = x[tn];
-      double L2 = y[tn];
-      double L3 = z[tn];
-
-      LBMReal dLB = L2;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
-
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = 0;
-
-      //bounding box
-      double g_minX1 = 0.0;
-      double g_minX2 = -L2 / 2.0;
-      double g_minX3 = -L3 / 2.0;
-
-      double g_maxX1 = L1;
-      double g_maxX2 = L2 / 2.0;
-      double g_maxX3 = L3 / 2.0;
-
-      //obstacle
-      GbObject3DPtr cylinder(new GbCylinder3D(g_minX1-2.0*dx, 0.0, 0.0, g_maxX1+2.0*dx, 0.0, 0.0, dLB/2.0));
-      GbSystem3D::writeGeoObject(cylinder.get(),pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-      double offs = dx;
-      //GbObject3DPtr gridCube(new GbCuboid3D(g_minX1-offs, g_minX2-offs, g_minX3-offs, g_maxX1+offs, g_maxX2+offs, g_maxX3+offs));
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-      const int blocknx1 = 10;
-      const int blocknx2 = 10;
-      const int blocknx3 = 10;
-      
-      double blockLength = blocknx1*dx;
-
-      Grid3DPtr grid(new Grid3D(comm));
-      UbSchedulerPtr rSch(new UbScheduler(100000, 100000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname, RestartPostprocessor::BINARY);
-
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"L = " << l );
-            UBLOG(logINFO,"lLB = " << L1 );
-            UBLOG(logINFO,"rho = " << rhoLB );
-            UBLOG(logINFO,"nue = " << nuLB );
-            UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-         grid->setDeltaX(dx);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-         //grid->setPeriodicX3(true);
-
-         if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-      
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1 - 2.0*dx, g_minX2 - dx, g_minX3 - dx, g_minX1, g_maxX2, g_maxX3 + dx));
-          if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow (new GbCuboid3D(g_maxX1, g_minX2, g_minX3-dx, g_maxX1+2.0*dx, g_maxX2+dx, g_maxX3+dx));
-          if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         ppblocks->update(0);
-      
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         D3Q27InteractorPtr cylinderInt( new D3Q27Interactor(cylinder, grid, bcObst,Interactor3D::INVERSESOLID));
-
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter1(new D3Q27DensityBCAdapter(1.0/dp[tn]));
-         D3Q27InteractorPtr inflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, denBCAdapter1,Interactor3D::SOLID));
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter2(new D3Q27DensityBCAdapter(-1.0/dp[tn]));
-         denBCAdapter2->setSecondaryBcOption(0);
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoOutflow, grid, denBCAdapter2, Interactor3D::SOLID));
-         grid->addAndInitInteractor(outflowInt);
-
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(cylinderInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.selectBlocks();
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nod = nob * (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nodg = nob * (blocknx1 + gl) * (blocknx2 + gl) * (blocknx3 + gl);
-         double needMemAll = double(nodg*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << nob);
-            UBLOG(logINFO, "Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nob);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nob*nodb);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         LBMKernel3DPtr kernel;
-         rhoLB = 0.0;
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-
-         //
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         intHelper.setBC();
-
-         //initialization of distributions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-
-         mu::Parser vx1;
-         vx1.DefineConst("dp", dp[tn]);
-         vx1.DefineConst("L", x[tn]);
-         vx1.DefineConst("nu", nuLB);
-         vx1.DefineConst("r", z[tn] * 0.5); 
-         vx1.DefineConst("c", 0.0);
-         vx1.SetExpr("(2/dp)/(3.0*4.0*L*nu)*(r^2-((c-x2)^2+(c-x3)^2))");
-
-         initVisitor.setVx1(vx1);
-         grid->accept(initVisitor);
-
-
-         //Postrozess
-         {
-            UbSchedulerPtr geoSch(new UbScheduler(1));
-            D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-               new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, true));
-            ppgeo->update(0);
-            ppgeo.reset();
-         }
-
-      if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-
-      double outTime = tout[tn];
-      UbSchedulerPtr visSch(new UbScheduler(outTime));
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 30));
-      NUPSCounterPostprocessor npr(grid, nupsSch, numOfThreads, comm);
-
-      double endTime = tend[tn];
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(UbSystem::stringTo<int>(argv[1]));
-
-   return 0;
-}
-
diff --git a/apps/cpu/LidDrivenCavity/CMakeLists.txt b/apps/cpu/LidDrivenCavity/CMakeLists.txt
index cf76ed91b770c41224313329914517b2925ecd57..4e01ca8101dc265159ae5830b951be37a510d88f 100644
--- a/apps/cpu/LidDrivenCavity/CMakeLists.txt
+++ b/apps/cpu/LidDrivenCavity/CMakeLists.txt
@@ -1,27 +1,8 @@
-#CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
 
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-#PROJECT(LidDrivenCavity)
 
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
+PROJECT(LidDrivenCavity)
 
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-#FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
- #                        ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
- #                        ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-#SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-#SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-#SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
+INCLUDE(${APPS_ROOT_CPU}/IncludsList.cmake)
 
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-#CREATE_CAB_PROJECT(LidDrivenCavity BINARY)
 
-vf_add_library(BUILDTYPE binary DEPENDS VirtualFluidsCore VirtualFluidsBasic FILES LidDrivenCavity.cpp)
+vf_add_library(BUILDTYPE binary DEPENDS VirtualFluidsCore basics FILES LidDrivenCavity.cpp)
diff --git a/apps/cpu/LidDrivenCavity/LidDrivenCavity.cpp b/apps/cpu/LidDrivenCavity/LidDrivenCavity.cpp
index 6eb64ffe289c6815f88b3b63b5a6aecc7b5e5026..21d3f7bb70fc2c717b39ffb8bc37da0dad14782c 100644
--- a/apps/cpu/LidDrivenCavity/LidDrivenCavity.cpp
+++ b/apps/cpu/LidDrivenCavity/LidDrivenCavity.cpp
@@ -26,7 +26,7 @@
 //  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 ldc.cpp
+//! \file LidDrivenCavity.cpp
 //! \ingroup Applications
 //! \author Konstantin Kutscher
 //=======================================================================================
@@ -44,7 +44,9 @@ int main(int argc, char* argv[])
       //////////////////////////////////////////////////////////////////////////
       // Simulation parameters
       //////////////////////////////////////////////////////////////////////////
-      string path = "d:/temp/LidDrivenCavityClean";
+
+      // set your output path here
+      string path = "./output";
 
       const double L = 1.0;
       const double Re = 1000.0;
@@ -52,11 +54,11 @@ int main(int argc, char* argv[])
       const double dt = 0.5e-3;
       const unsigned int nx = 64;
 
-      const double timeStepOut = 10000;
-      const double timeStepEnd = 250000;
+      const double timeStepOut = 1000;
+      const double timeStepEnd = 25000;
 
       // Number of OpenMP threads
-      int numOfThreads = 1;
+      int numOfThreads = 4;
 
       //////////////////////////////////////////////////////////////////////////
 
@@ -84,13 +86,16 @@ int main(int argc, char* argv[])
       // set grid spacing
       grid->setDeltaX(dx);
       // set block size for three dimensions
-      grid->setBlockNX(64,64,64);
+      int blockSize = nx / 2;
+      grid->setBlockNX(blockSize,blockSize,blockSize);
       
       // Create simulation bounding box
       SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
       GbSystem3D::writeGeoObject(gridCube.get(), path + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
 
-      UBLOG(logINFO, "Lid Driven Cavity");
+      UBLOG(logINFO, "Lid Driven Cavity:");
+      UBLOG(logINFO, "Domain size = " << nx << " x "<< nx << " x "<< nx);
+      UBLOG(logINFO, "Block size = " << blockSize << " x "<< blockSize << " x "<< blockSize);
       UBLOG(logINFO, "velocity    = " << velocity << " m/s");
       UBLOG(logINFO, "velocityLB  = " << velocityLB);
       UBLOG(logINFO, "viscosityLB = " << viscosityLB);
@@ -110,10 +115,7 @@ int main(int argc, char* argv[])
       ppblocks.reset();
 
       // Create LBM kernel
-      
-      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CumulantK17LBMKernel());
-
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new LBMKernelETD3Q27BGK());
+      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CumulantK17LBMKernel());
 
       //////////////////////////////////////////////////////////////////////////
       // Create boundary conditions (BC)
@@ -209,8 +211,9 @@ int main(int argc, char* argv[])
       SPtr<CoProcessor> nupsCoProcessor(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
 
       // OpenMP threads control
+#ifdef _OPENMP
       omp_set_num_threads(numOfThreads);
-
+#endif
       // Create simulation
       SPtr<Calculator> calculator(new BasicCalculator(grid, visSch, (int)timeStepEnd));
       // Add coprocessors objects to simulation
diff --git a/apps/cpu/OrganPipe/CMakeLists.txt b/apps/cpu/OrganPipe/CMakeLists.txt
deleted file mode 100644
index 03f52af3309aa6cb207bbb9fb51d264f4ff77926..0000000000000000000000000000000000000000
--- a/apps/cpu/OrganPipe/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(OrganPipe)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(opipe BINARY)
diff --git a/apps/cpu/OrganPipe/OrganPipe.cpp b/apps/cpu/OrganPipe/OrganPipe.cpp
deleted file mode 100644
index 2435b3567d5179da7375fceacdf641b05302d18b..0000000000000000000000000000000000000000
--- a/apps/cpu/OrganPipe/OrganPipe.cpp
+++ /dev/null
@@ -1,527 +0,0 @@
-#include <iostream>
-#include <string>
-#include "VirtualFluids.h"
-
-
-using namespace std;
-void run(string configname)
-{
-   try
-   {
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (myid == 0) UBLOG(logINFO, "Testcase organ pipe");
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      ConfigurationFile   config;
-      config.load(configname);
-
-      bool            newStart = config.getValue<bool>("newStart");
-      double          restartStep = config.getValue<double>("restartStep");
-      double          cpStart = config.getValue<double>("cpStart");
-      double          cpStep = config.getValue<double>("cpStep");
-      int             endTime = config.getValue<int>("endTime");
-      double          outTimeStep = config.getValue<double>("outTimeStep");
-      double          outTimeStart = config.getValue<double>("outTimeStart");
-      double          availMem = config.getValue<double>("availMem");
-      bool            logToFile = config.getValue<bool>("logToFile");
-      vector<double>  nupsStep = config.getVector<double>("nupsStep");
-      string          pathOut = config.getValue<string>("pathOut");
-      string          pathGeo = config.getValue<string>("pathGeo");
-
-      string          opipeGeoFile = "/OrganPipeTransformed.stl";
-      string          inletTubeGeoFile = "/tubeTransformed.stl";
-
-      double          QN = config.getValue<double>("QN");
-
-      double  deltaXfine = 0.0000625;
-      const int baseLevel = 0;
-      int refineLevel = 9;
-      double deltaXcoarse = deltaXfine*(double)(1 << refineLevel);
-
-      LBMReal rho_LB = 0.0;
-      double rhoReal = 1.2041; //(kg/m3)
-      double L = 0.195; //m
-      double hLB = L / deltaXcoarse;
-      double csReal = 343.3;
-      double nuReal = 1.51e-5; //m^2/s
-
-      double Q = QN * 1e-3 / 60; //m^3/s
-      double D = 0.005; // m
-      double R = D / 2; // m
-      double A = UbMath::PI * pow(R,2);
-      double uReal = Q / A;
-      double muReal = nuReal * rhoReal;
-      double Re_inlet = D * uReal * rhoReal / muReal;
-      double lbd = 0.3164 / pow(Re_inlet,0.25);
-      double deltaP = (lbd / (2 * R)) * (rhoReal * pow(uReal,2) / 2);
-      double N = pow(R,2) / (2 * muReal * uReal) * deltaP - 3;
-
-      LBMUnitConverter unitConverter(L, csReal, rhoReal, hLB);
-      if (myid == 0) UBLOG(logINFO, unitConverter.toString());
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathOut.c_str();
-            mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if (myid == 0)
-         {
-            stringstream logFilename;
-            logFilename << pathOut + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      double nu_LB = nuReal * unitConverter.getFactorViscosityWToLb();
-      double u_LB = uReal * unitConverter.getFactorVelocityWToLb();
-
-      double offSetOrganPipe = 0.0083; //1.37;
-
-      vector<int> blocknx ={ 16, 16, 16 };
-
-      if (myid == 0) UBLOG(logINFO, "Read organ pipe geometry:start");
-      SPtr<GbTriFaceMesh3D> organPipeGeo = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo + opipeGeoFile, "opipeGeo", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-      organPipeGeo->translate(offSetOrganPipe, 0.0, 0.0);
-      if (myid == 0) UBLOG(logINFO, "Read organ pipe geometry:end");
-      if (myid == 0) GbSystem3D::writeGeoObject(organPipeGeo.get(), pathOut + "/geo/organPipeGeo", WbWriterVtkXmlBinary::getInstance());
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      //bounding box
-      vector<double> dim = {4.096, 4.096, 4.096};
-
-      double g_minX1 = 0;
-      double g_minX2 =  -dim[1]*0.5;
-      double g_minX3 =  -dim[2]*0.5;
-
-      double g_maxX1 =  dim[0];
-      double g_maxX2 =  dim[1]*0.5;
-      double g_maxX3 =  dim[2]*0.5;
-
-
-      double d_minX2 = -dim[1]*0.5;
-      double d_minX3 = -dim[2]*0.5;
-
-      double d_maxX1 = dim[0];
-      double d_maxX2 = dim[1]*0.5;
-      double d_maxX3 = dim[2]*0.5;
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "Parameters:");
-         UBLOG(logINFO, "QN                  = " << QN      << " [Nl/min]");
-         UBLOG(logINFO, "u_Real              = " << uReal   << " [m/s]");
-         UBLOG(logINFO, "rho_Real            = " << rhoReal << " [kg/m^3]");
-         UBLOG(logINFO, "nu_Real             = " << nuReal  << " [m^2/s]");
-         UBLOG(logINFO, "u_LB                = " << u_LB    << " [dx/dt]");
-         UBLOG(logINFO, "rho_LB              = " << rho_LB+1<< " [mass/dx^3]");
-         UBLOG(logINFO, "nu_LB               = " << nu_LB   << " [dx^2/dt]");
-         UBLOG(logINFO, "N                   = " << N);
-         UBLOG(logINFO, "dx coarse           = " << deltaXcoarse);
-         UBLOG(logINFO, "dx fine             = " << deltaXfine);
-         UBLOG(logINFO, "number of refinement levels = " << refineLevel);
-         UBLOG(logINFO, "number of processes = " << comm->getNumberOfProcesses());
-         UBLOG(logINFO, "path = " << pathOut);
-         UBLOG(logINFO, "Preprocess - start");
-      }
-
-      //BC adapters
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-
-      SPtr<BCAdapter> slipBCAdapter(new SlipBCAdapter());
-      slipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new SlipBCAlgorithm()));
-
-      double diameter_inlet = 0.005;
-      double cx1 = g_minX1;
-      double cx2 = 0.0;
-      double cx3 = 0.0;
-
-      //Å tigler, J. (2014). Analytical velocity profile in tube for laminar and turbulent flow. Engineering Mechanics, 21(6), 371-379.
-      mu::Parser fct;
-      //fct.SetExpr("U");
-      fct.SetExpr("U*(1-(((((x2-y0)^2+(x3-z0)^2)^0.5)/R)^NplusOne))");
-      fct.DefineConst("x0", cx1);
-      fct.DefineConst("y0", cx2);
-      fct.DefineConst("z0", cx3);
-      fct.DefineConst("R", diameter_inlet/2.0);
-      fct.DefineConst("U", u_LB*((N+3)/(N+1)));
-      fct.DefineConst("NplusOne", N+1.0);
-
-      SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-      velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityWithDensityBCAlgorithm()));
-
-      SPtr<BCAdapter> outflowBCAdapter(new DensityBCAdapter(rho_LB));
-      outflowBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingOutflowBCAlgorithm()));
-
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      bcVisitor.addBC(slipBCAdapter);
-      bcVisitor.addBC(velBCAdapter);
-      bcVisitor.addBC(outflowBCAdapter);
-
-      SPtr<BCProcessor> bcProc;
-      bcProc = SPtr<BCProcessor>(new BCProcessor());
-
-      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel());
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel());
-      double bulckViscosity = 3700.0*nu_LB;
-      if (myid == 0) UBLOG(logINFO, "bulckViscosity  =  "<< bulckViscosity);
-      dynamicPointerCast<CompressibleCumulant4thOrderViscosityLBMKernel>(kernel)->setBulkViscosity(bulckViscosity);
-      kernel->setBCProcessor(bcProc);
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<UbScheduler> mSch(new UbScheduler(cpStep, cpStart));
-      SPtr<MPIIOMigrationCoProcessor> migCoProcessor(new MPIIOMigrationCoProcessor(grid, mSch, pathOut + "/mig", comm));
-      migCoProcessor->setLBMKernel(kernel);
-      migCoProcessor->setBCProcessor(bcProc);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (newStart)
-      {
-         grid->setPeriodicX1(false);
-         grid->setPeriodicX2(false);
-         grid->setPeriodicX3(false);
-         grid->setDeltaX(deltaXcoarse);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-
-         //generate block grid
-         SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathOut + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-         GenBlocksGridVisitor genBlocks(gridCube);
-
-         grid->accept(genBlocks);
-
-         //geometry
-         if (myid == 0) UBLOG(logINFO, "Read inlet pipe geometry:start");
-         SPtr<GbTriFaceMesh3D> inletTubeGeo = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo + inletTubeGeoFile, "inPipeGeo", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-         inletTubeGeo->translate(offSetOrganPipe, 0.0, 0.0);
-         if (myid == 0) UBLOG(logINFO, "Read inlet pipe geometry:end");
-         if (myid == 0) GbSystem3D::writeGeoObject(inletTubeGeo.get(), pathOut + "/geo/inletTubeGeo", WbWriterVtkXmlBinary::getInstance());
-         SPtr<Interactor3D> organPipeInter = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(organPipeGeo, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-         SPtr<Interactor3D> inletTubeInter = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(inletTubeGeo, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         double op_offset = organPipeGeo->getX1Minimum() - inletTubeGeo->getX1Minimum();
-         double startX1it = inletTubeGeo->getX1Minimum();
-         //////////////////////////////////////////////////////////////////////////
-         //refinement
-        //refinement
-          //SPtr<GbObject3D> refineBoxL1(new GbCuboid3D(startX1it-0.8, -1.0, -1.0, startX1it + 1.75 + op_offset, 1.0, 1.0));
-         //if (myid == 0) GbSystem3D::writeGeoObject(refineBoxL1.get(), pathOut + "/geo/refineBoxL1", WbWriterVtkXmlBinary::getInstance());
-         SPtr<GbObject3D> refineBoxL2(new GbCuboid3D(startX1it-0.38, -0.55, -0.55, startX1it+1.25+op_offset, 0.55, 0.55));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxL2.get(), pathOut + "/geo/refineBoxL2", WbWriterVtkXmlBinary::getInstance());
-         SPtr<GbObject3D> refineBoxL3(new GbCuboid3D(startX1it-0.25, -0.28, -0.28, startX1it+0.8+op_offset-0.064, 0.28, 0.28));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxL3.get(), pathOut + "/geo/refineBoxL3", WbWriterVtkXmlBinary::getInstance());
-         SPtr<GbObject3D> refineBoxL4(new GbCuboid3D(startX1it-0.13, -0.15, -0.15, startX1it + 0.52 + op_offset-0.032, 0.15, 0.15));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxL4.get(), pathOut + "/geo/refineBoxL4", WbWriterVtkXmlBinary::getInstance());
-         SPtr<GbObject3D> refineBoxL5(new GbCuboid3D(startX1it-0.0633, -0.08, -0.08, startX1it + 0.3267 + op_offset, 0.08, 0.08));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxL5.get(), pathOut + "/geo/refineBoxL5", WbWriterVtkXmlBinary::getInstance());
-         SPtr<GbObject3D> refineBoxL6(new GbCuboid3D(startX1it, -0.042, -0.042, startX1it + 0.2634 + op_offset+0.016, 0.042, 0.042));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxL6.get(), pathOut + "/geo/refineBoxL6", WbWriterVtkXmlBinary::getInstance());
-         //SPtr<GbObject3D> refineBoxL62(new GbCuboid3D(startX1it + 0.1016 + op_offset, -0.0165, 0.0165, startX1it + 0.2634 + op_offset, 0.0165, 0.0365));
-         //if (myid == 0) GbSystem3D::writeGeoObject(refineBoxL62.get(), pathOut + "/geo/refineBoxL62", WbWriterVtkXmlBinary::getInstance());
-         SPtr<GbObject3D> refineBoxL7(new GbCuboid3D(startX1it, -0.03, -0.03, startX1it + 0.1516 + op_offset, 0.03, 0.03));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxL7.get(), pathOut + "/geo/refineBoxL7", WbWriterVtkXmlBinary::getInstance());
-         SPtr<GbObject3D> refineBoxL81(new GbCuboid3D(startX1it, -0.005, -0.005, startX1it + 0.02 + op_offset, 0.005, 0.005));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxL81.get(), pathOut + "/geo/refineBoxL81", WbWriterVtkXmlBinary::getInstance());
-         SPtr<GbObject3D> refineBoxL82(new GbCuboid3D(startX1it + 0.02, -0.0165, -0.0165, startX1it + 0.06 + op_offset, 0.0165, 0.0165));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxL82.get(), pathOut + "/geo/refineBoxL82", WbWriterVtkXmlBinary::getInstance());
-
-         SPtr<GbObject3D> refineBoxL83(new GbCuboid3D(startX1it+0.06, -0.0165, -0.0165, startX1it + 0.1016 + op_offset, 0.0165, 0.024));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxL83.get(), pathOut + "/geo/refineBoxL83", WbWriterVtkXmlBinary::getInstance());
-         SPtr<GbObject3D> refineBoxL9(new GbCuboid3D(startX1it+0.06, -0.0165, 0.01, startX1it + 0.09 + op_offset, 0.0165, 0.013));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxL9.get(), pathOut + "/geo/refineBoxL9", WbWriterVtkXmlBinary::getInstance());
-         if (refineLevel > 0)
-         {
-            if (myid == 0) UBLOG(logINFO, "Refinement - start");
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel, comm);
-            //refineHelper.addGbObject(refineBoxL1, refineLevel - 8);
-            refineHelper.addGbObject(refineBoxL2, refineLevel - 7);
-            refineHelper.addGbObject(refineBoxL3, refineLevel - 6);
-            refineHelper.addGbObject(refineBoxL4, refineLevel - 5);
-            refineHelper.addGbObject(refineBoxL5, refineLevel - 4);
-            refineHelper.addGbObject(refineBoxL6, refineLevel - 3);
-            //refineHelper.addGbObject(refineBoxL62, refineLevel-3);
-            refineHelper.addGbObject(refineBoxL7, refineLevel - 2);
-            refineHelper.addGbObject(refineBoxL81, refineLevel - 1);
-            refineHelper.addGbObject(refineBoxL82, refineLevel - 1);
-            refineHelper.addGbObject(refineBoxL83, refineLevel - 1);
-            refineHelper.addGbObject(refineBoxL9, refineLevel);
-            refineHelper.refine();
-            if (myid == 0) UBLOG(logINFO, "Refinement - end");
-         }
-         //////////////////////////////////////////////////////////////////////////
-
-         //walls
-         double blockLength = blocknx[0]*deltaXcoarse;
-         GbCuboid3DPtr addWallXmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallXmin.get(), pathOut + "/geo/addWallXmin", WbWriterVtkXmlASCII::getInstance());
-         GbCuboid3DPtr addWallYmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_minX2, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathOut + "/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-         GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1-blockLength, g_maxX2, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathOut + "/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathOut + "/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathOut + "/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //wall interactors
-         SPtr<D3Q27Interactor> addWallXminInt(new D3Q27Interactor(addWallXmin, grid, slipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, slipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, slipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, slipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, slipBCAdapter, Interactor3D::SOLID));
-
-         //inflow
-         GbCylinder3DPtr geoInflow(new GbCylinder3D(startX1it-deltaXfine*3.0, 0.0, 0.0, startX1it+deltaXfine*3.0, 0.0, 0.0, diameter_inlet));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathOut + "/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-         SPtr<D3Q27Interactor> inflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //GbCylinder3DPtr geoInflowCover(new GbCylinder3D(startX1it-deltaXfine*5.0, 0.0, 0.0, startX1it, 0.0, 0.0, diameter_inlet+deltaXfine*6.0));
-         GbCylinder3DPtr geoInflowCover(new GbCylinder3D(startX1it-0.05, 0.0, 0.0, startX1it, 0.0, 0.0, 0.006));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoInflowCover.get(), pathOut + "/geo/geoInflowCover", WbWriterVtkXmlASCII::getInstance());
-         SPtr<D3Q27Interactor> inflowCoverIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflowCover, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2 - deltaXcoarse, g_minX3 - deltaXcoarse, g_maxX1 + deltaXcoarse, g_maxX2 + deltaXcoarse, g_maxX3 + deltaXcoarse));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathOut + "/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-         SPtr<D3Q27Interactor> outflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, outflowBCAdapter, Interactor3D::SOLID));
-
-
-         ////////////////////////////////////////////
-         //METIS
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B, MetisPartitioner::RECURSIVE));
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(outflowIntr);
-         intHelper.addInteractor(addWallXminInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(inflowIntr);
-         intHelper.addInteractor(organPipeInter);
-         intHelper.addInteractor(inletTubeInter);
-         intHelper.addInteractor(inflowCoverIntr);
-         intHelper.selectBlocks();
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-
-         {
-            WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppblocks.process(0);
-         }
-
-         unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-         int ghostLayer = 3;
-         unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-         unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-         unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-         double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-            UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (myid == 0) UBLOG(logINFO, "SetKernelBlockVisitor:end");
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "PID = " << myid << " Point 5");
-            UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe() / 1073741824.0 << " GB");
-         }
-
-         if (refineLevel > 0)
-         {
-            bool twoTypeOfConnectorsCheck = false;
-            SetUndefinedNodesBlockVisitor undefNodesVisitor(twoTypeOfConnectorsCheck);
-            grid->accept(undefNodesVisitor);
-         }
-
-         if (myid == 0) UBLOG(logINFO, "SetUndefinedNodesBlockVisitor:end");
-
-         //BC
-         intHelper.setBC();
-         if (myid == 0) UBLOG(logINFO, "intHelper.setBC():end");
-
-         //initialization of distributions
-         InitDistributionsBlockVisitor initVisitor;
-         grid->accept(initVisitor);
-
-         //Geometry and boundary conditions
-         {
-            SPtr<UbScheduler> geoSch(new UbScheduler(1));
-            WriteBoundaryConditionsCoProcessor ppgeo(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppgeo.process(0);
-         }
-
-      }
-      else
-      {
-         //restartCoProcessor->restart((int)restartStep);
-         migCoProcessor->restart((int)restartStep);
-         grid->setTimeStep(restartStep);
-      }
-      ////set connectors
-      //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
-      SPtr<InterpolationProcessor> iProcessor(new CompressibleOffsetMomentsInterpolationProcessor());
-      dynamicPointerCast<CompressibleOffsetMomentsInterpolationProcessor>(iProcessor)->setBulkViscosity(nu_LB, bulckViscosity);
-      SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-      grid->accept(setConnsVisitor);
-
-      //bcVisitor should be accept after initialization!!!!
-      grid->accept(bcVisitor);
-      if (myid == 0) UBLOG(logINFO, "grid->accept(bcVisitor):end");
-
-
-
-      ////sponge layer
-      ////////////////////////////////////////////////////////////////////////////
-      /*GbCuboid3DPtr spongeLayerX1max(new GbCuboid3D(g_maxX1 - 0.4, g_minX2 - blockLength, g_minX3 - blockLength, g_maxX1 + blockLength, g_maxX2 + blockLength, g_maxX3 + blockLength));
-      if (myid == 0) GbSystem3D::writeGeoObject(spongeLayerX1max.get(), pathOut + "/geo/spongeLayerX1max", WbWriterVtkXmlASCII::getInstance());
-      SpongeLayerBlockVisitor slVisitorX1max(spongeLayerX1max, kernel, nu_LB, D3Q27System::E);
-      grid->accept(slVisitorX1max);
-
-      GbCuboid3DPtr spongeLayerX1min(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_minX3 - blockLength, g_minX1 + 0.2, g_maxX2 + blockLength, g_maxX3 + blockLength));
-      if (myid == 0) GbSystem3D::writeGeoObject(spongeLayerX1min.get(), pathOut + "/geo/spongeLayerX1min", WbWriterVtkXmlASCII::getInstance());
-      SpongeLayerBlockVisitor slVisitorX1min(spongeLayerX1min, spKernel, nuLB, D3Q27System::W);
-      grid->accept(slVisitorX1min);
-
-      GbCuboid3DPtr spongeLayerX2max(new GbCuboid3D(g_maxX1 - 0.4, g_minX2 - blockLength, g_minX3 - blockLength, g_maxX1 + blockLength, g_maxX2 + blockLength, g_maxX3 + blockLength));
-      if (myid == 0) GbSystem3D::writeGeoObject(spongeLayerX1max.get(), pathOut + "/geo/spongeLayerX1max", WbWriterVtkXmlASCII::getInstance());
-      SpongeLayerBlockVisitor slVisitorX1max(spongeLayerX1max, kernel, nu_LB, D3Q27System::E);
-      grid->accept(slVisitorX1max);
-
-      GbCuboid3DPtr spongeLayerX2min(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_minX3 - blockLength, g_minX1 + 0.2, g_maxX2 + blockLength, g_maxX3 + blockLength));
-      if (myid == 0) GbSystem3D::writeGeoObject(spongeLayerX1min.get(), pathOut + "/geo/spongeLayerX1min", WbWriterVtkXmlASCII::getInstance());
-      SpongeLayerBlockVisitor slVisitorX1min(spongeLayerX1min, spKernel, nuLB, D3Q27System::W);
-      grid->accept(slVisitorX1min);
-
-      GbCuboid3DPtr spongeLayerX3min(new GbCuboid3D(g_minX1 + 0.2, g_minX2 - blockLength, g_minX3 - blockLength, g_maxX1 - 0.4, g_maxX2 + blockLength, g_minX3 + 0.2));
-      if (myid == 0) GbSystem3D::writeGeoObject(spongeLayerX3min.get(), pathOut + "/geo/spongeLayerX3min", WbWriterVtkXmlASCII::getInstance());
-      SpongeLayerBlockVisitor slVisitorX3min(spongeLayerX3min, kernel, nuLB, D3Q27System::B);
-      grid->accept(slVisitorX3min);
-
-      GbCuboid3DPtr spongeLayerX3max(new GbCuboid3D(g_minX1 + 0.2, g_minX2 - blockLength, g_maxX3 - 0.2, g_maxX1 - 0.4, g_maxX2 + blockLength, g_maxX3 + blockLength));
-      if (myid == 0) GbSystem3D::writeGeoObject(spongeLayerX3max.get(), pathOut + "/geo/spongeLayerX3max", WbWriterVtkXmlASCII::getInstance());
-      SpongeLayerBlockVisitor slVisitorX3max(spongeLayerX3max, kernel, nuLB, D3Q27System::T);
-      grid->accept(slVisitorX3max);*/
-      /////////////////////////////////////////////////////////////////////////////
-
-      if (myid==0) UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-      if (myid==0) UBLOG(logINFO, "Preprozess - end");
-
-      int numOfThreads = 1;
-      SPtr<UbScheduler> nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      std::shared_ptr<NUPSCounterCoProcessor> nupsCoProcessor(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTimeStep, outTimeStart));
-
-      SPtr<WriteMacroscopicQuantitiesCoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, stepSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-
-      SPtr<UbScheduler> stepMV(new UbScheduler(1, 0, 1000000));
-      SPtr<MicrophoneArrayCoProcessor> micCoProcessor(new MicrophoneArrayCoProcessor(grid, stepSch, pathOut, comm));
-      std::vector<UbTupleFloat3> nodes;
-      micCoProcessor->addMicrophone(Vector3D(organPipeGeo->getX1Minimum()+0.0719, 0.0, organPipeGeo->getX3Maximum()+0.05));
-      nodes.push_back(UbTupleFloat3(float(organPipeGeo->getX1Minimum()+0.0719), float(0.0), float(organPipeGeo->getX3Maximum()+0.05)));
-      micCoProcessor->addMicrophone(Vector3D(organPipeGeo->getX1Maximum()+0.05, 0.0, organPipeGeo->getX3Centroid()));
-      nodes.push_back(UbTupleFloat3(float(organPipeGeo->getX1Maximum()+0.05), float(0.0), float(organPipeGeo->getX3Centroid())));
-
-      //additional mics for ray traysing
-      Vector3D vec1(g_minX1+0.5*deltaXcoarse, g_minX2+0.5*deltaXcoarse, g_minX3+0.5*deltaXcoarse);
-      micCoProcessor->addMicrophone(vec1);
-      nodes.push_back(UbTupleFloat3(float(vec1[0]), float(vec1[1]), float(vec1[2])));
-
-      Vector3D vec2(g_minX1+0.5*deltaXcoarse, g_maxX2-0.5*deltaXcoarse, g_minX3+0.5*deltaXcoarse);
-      micCoProcessor->addMicrophone(vec2);
-      nodes.push_back(UbTupleFloat3(float(vec2[0]), float(vec2[1]), float(vec2[2])));
-
-      Vector3D vec3(g_minX1+0.5*deltaXcoarse, g_minX2+0.5*deltaXcoarse, g_maxX3-0.5*deltaXcoarse);
-      micCoProcessor->addMicrophone(vec3);
-      nodes.push_back(UbTupleFloat3(float(vec3[0]), float(vec3[1]), float(vec3[2])));
-
-      Vector3D vec4(g_minX1+0.5*deltaXcoarse, g_maxX2-0.5*deltaXcoarse, g_maxX3-0.5*deltaXcoarse);
-      micCoProcessor->addMicrophone(vec4);
-      nodes.push_back(UbTupleFloat3(float(vec4[0]), float(vec4[1]), float(vec4[2])));
-
-      Vector3D vec5(organPipeGeo->getX1Minimum()+0.0719, 0.0, organPipeGeo->getX3Maximum());
-      micCoProcessor->addMicrophone(vec5);
-      nodes.push_back(UbTupleFloat3(float(vec5[0]), float(vec5[1]), float(vec5[2])));
-
-      Vector3D vec6(organPipeGeo->getX1Maximum(), 0.0, organPipeGeo->getX3Centroid());
-      micCoProcessor->addMicrophone(vec6);
-      nodes.push_back(UbTupleFloat3(float(vec6[0]), float(vec6[1]), float(vec6[2])));
-      //////////////////////////////////////////////////////////////////
-      
-      if (myid==0) WbWriterVtkXmlBinary::getInstance()->writeNodes(pathOut+"/geo/mic", nodes);
-
-
-      SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
-      calculator->addCoProcessor(nupsCoProcessor);
-      calculator->addCoProcessor(micCoProcessor);
-      calculator->addCoProcessor(migCoProcessor);
-      calculator->addCoProcessor(writeMQCoProcessor);
-      /////////////////////////////////////////////////////////////////////////////////////
-
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-
-   }
-   catch (std::exception& e)
-   {
-      cerr<<e.what()<<endl<<flush;
-   }
-   catch (std::string& s)
-   {
-      cerr<<s<<endl;
-   }
-   catch (...)
-   {
-      cerr<<"unknown exception"<<endl;
-   }
-
-}
-
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout << "Configuration file must be set!: " << argv[0] << " <config file>" << endl << std::flush;
-      }
-   }
-}
diff --git a/apps/cpu/OrganPipe/config.txt b/apps/cpu/OrganPipe/config.txt
deleted file mode 100644
index 1554322df784bbf754ac214318e72b1909acb1b3..0000000000000000000000000000000000000000
--- a/apps/cpu/OrganPipe/config.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-pathOut = e:/temp/OrganPipe
-pathGeo = d:/Projects/SFB880/OrganPipe/geo
-
-availMem = 2e9
-
-logToFile = false
-
-QN = 67.5 #Nl/min
-
-newStart = true
-restartStep = 250000
-
-cpStep = 8000
-cpStart = 258000
-
-outTimeStep = 1
-outTimeStart = 1
-
-nupsStep = 1000 1000 10000000
-
-endTime = 10
\ No newline at end of file
diff --git a/apps/cpu/PlateWithPorousInlay/CMakeLists.txt b/apps/cpu/PlateWithPorousInlay/CMakeLists.txt
deleted file mode 100644
index 18fd893e8a6b67bf87a6ab81a88a7b149cbcfc73..0000000000000000000000000000000000000000
--- a/apps/cpu/PlateWithPorousInlay/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(porplate)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(porplate BINARY)
diff --git a/apps/cpu/PlateWithPorousInlay/plate.cpp b/apps/cpu/PlateWithPorousInlay/plate.cpp
deleted file mode 100644
index ea5dca784dd82ffa27b3e9c5de0050438c5b87a7..0000000000000000000000000000000000000000
--- a/apps/cpu/PlateWithPorousInlay/plate.cpp
+++ /dev/null
@@ -1,700 +0,0 @@
-
-
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <vfluids.h>
-
-using namespace std;
-
-//////////////////////////////////////////////////////////////////////////
-void inlay(GbVoxelMatrix3DPtr pmMesh, string& pathname, int myid, int i, Grid3DPtr grid)
-{
-   int bbOptionPM = 2; //quadratic bounce back with for thin walls
-   D3Q27BoundaryConditionAdapterPtr noSlipPM(new D3Q27NoSlipBCAdapter(bbOptionPM));
-   D3Q27InteractorPtr inlayInt = D3Q27InteractorPtr(new D3Q27Interactor(pmMesh, grid, noSlipPM, Interactor3D::SOLID));
-
-   GbCuboid3DPtr inlayBox(new GbCuboid3D(pmMesh->getX1Minimum(), pmMesh->getX2Minimum(), pmMesh->getX3Minimum(), pmMesh->getX1Maximum(), pmMesh->getX2Maximum(), pmMesh->getX3Maximum()));
-   if (myid == 0) GbSystem3D::writeGeoObject(inlayBox.get(), pathname + "/geo/inlay" + UbSystem::toString(i), WbWriterVtkXmlASCII::getInstance());
-   D3Q27InteractorPtr inlayBoxInt = D3Q27InteractorPtr(new D3Q27Interactor(inlayBox, grid, noSlipPM, Interactor3D::SOLID));
-   SetSolidOrTransBlockVisitor v1(inlayBoxInt, SetSolidOrTransBlockVisitor::SOLID);
-   grid->accept(v1);
-   SetSolidOrTransBlockVisitor v2(inlayBoxInt, SetSolidOrTransBlockVisitor::TRANS);
-   grid->accept(v2);
-
-   vector<Block3DPtr> inlayBlocks;
-   vector<Block3DPtr>& sb = inlayBoxInt->getSolidBlockSet();
-   if (myid == 0) UBLOG(logINFO, "sb.size = " << sb.size());
-   inlayBlocks.insert(inlayBlocks.end(), sb.begin(), sb.end());
-   vector<Block3DPtr>& tb = inlayBoxInt->getTransBlockSet();
-   if (myid == 0) UBLOG(logINFO, "tb.size = " << tb.size());
-   inlayBlocks.insert(inlayBlocks.end(), tb.begin(), tb.end());
-
-   if (myid == 0) UBLOG(logINFO, "inlayBlocks.size = " << inlayBlocks.size());
-
-   BOOST_FOREACH(Block3DPtr block, inlayBlocks)
-   {
-      block->setActive(true);
-      inlayInt->setDifferencesToGbObject3D(block);
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void run(const char *cstr)
-{
-   try
-   {
-      string pathname;
-      string pathGeo;
-      string pathLog;
-      int numOfThreads = 1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      string machine = string(cstr);
-
-      if (machine == "my")
-      {
-         pathname = "d:/temp/porplate";
-         pathGeo = "d:/Data/plate";
-         pathLog = pathname;
-         numOfThreads = 4;
-         logfile = false;
-         availMem = 15.0e9;
-      }
-      else if (machine == "Ludwig")
-      {
-         pathname = "/work/koskuche/SFB880/porplate";
-         pathGeo = "/home/koskuche/data/plate";
-         pathLog = pathname;
-         numOfThreads = 8;
-         availMem = 12.0e9;///8*numOfThreads;
-         logfile = true;
-      }
-      else if (machine == "HLRS")
-      {
-         pathname = "/univ_1/ws1/ws/xrmkuchr-plate3-0";
-         pathGeo = "/zhome/academic/HLRS/xrm/xrmkuchr/data/plate";
-         pathLog = "/zhome/academic/HLRS/xrm/xrmkuchr/work/plate";
-         numOfThreads = 12;
-         availMem = 2.0e9;
-         logfile = true;
-      }
-      else if (machine == "HLRN")
-      {
-         pathname = "/gfs1/work/niikonst/scratch/porplate";
-         pathGeo = "/gfs1/work/niikonst/data/plate";
-         pathLog = pathname;
-         numOfThreads = 24;
-         availMem = 64.0e9;
-         logfile = true;
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-#if defined(__unix__)
-      if (myid==0) 
-      {
-         const char* str = pathLog.c_str();
-         int status=mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-      }
-#endif 
-
-      if (myid == 0 && logfile)
-      {
-         //UbLog::reportingLevel() = logDEBUG5;
-         logFilename << pathLog + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + "_" + UbSystem::toString(myid) + ".txt";
-         UbLog::output_policy::setStream(logFilename.str());
-      }
-
-      if (myid == 0) UBLOG(logINFO, "Testcase plate");
-
-      string PlatteFilename = pathGeo + "/Platte_bearbeitet2.stl";
-
-      string ZckbndFilename = pathGeo + "/2zackenbaender0.stl";
-
-      ///////////////Knotenabmessungen:
-      int nx[3], blocknx[3];
-      nx[0] = 90;//240;//120;//60;//86;//43;//65;//50;  //länge
-      nx[1] = 2;//2;//6;///1;//5;// //breite
-      nx[2] = 30;//64;//32;//18;//5;//15;//15; //höhe gebiet
-      blocknx[0] = 16;//10;//6;
-      blocknx[1] = 16;//10;//6;
-      blocknx[2] = 16;//10;//6;
-
-      int baseLevel = 0;
-      int refineLevel = 5;
-
-      double H = 600.0; // Kanalhöhe [mm]
-      double cdx = H / (double)(nx[2] * blocknx[2]);
-      double fdx = cdx / double(1 << refineLevel);
-
-      //double h = 200.0; // gewünschte Plattenhöhe in Gitterpunkten
-      //double fdx = plate->getLengthX3()/h;
-      //double cdx = fdx*double(1<<refineLevel);
-
-      LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      //////////////////////////////////////////////////////////////////////////
-      // physik
-      //////////////////////////////////////////////////////////////////////////
-
-      //////////////////////////////////////////////////////////////////////////
-      // Experiment Parametr
-      // Re = 1000000
-      // V = 16.05  # m / s
-      // p = 994.7  #hPa(manuell abgelesen von MUB)
-      // T = 21.78  #°C
-      // Luftfeuchte = 50.5   # %
-      //////////////////////////////////////////////////////////////////////////
-      // Simulation Parametr
-      //////////////////////////////////////////////////////////////////////////
-      double Re = 1e6; // 1133333.3333333335;
-      double rhoLB = 0.0;
-      double uLB = 0.1;
-      double lReal = 1000; //Plattenlänge in mm
-      double nuLB = (uLB*(lReal / cdx)) / Re;
-
-      int sizeSP = 4;
-      mu::Parser spongeLayer;
-      spongeLayer.SetExpr("x1>=(sizeX-sizeSP)/dx ? (sizeX-(x1+1))/sizeSP/2.0 + 0.5 : 1.0");
-      spongeLayer.DefineConst("sizeX", nx[0] * blocknx[0]);
-      spongeLayer.DefineConst("sizeSP", sizeSP*blocknx[0]);
-
-      Grid3DPtr grid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(1000, 1000, 10000000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname, RestartPostprocessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-      bool restart;
-
-      if (grid->getTimeStep() == 0)
-      {
-
-         if (myid == 0) UBLOG(logINFO, "Neustart..");
-         restart = false;
-         //////////////////////////////////////////////////////////////////////////
-         //Platte
-         GbTriFaceMesh3DPtr plate(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(PlatteFilename, "Netz"));
-         if (myid == 0) GbSystem3D::writeGeoObject(plate.get(), pathname + "/geo/platte", WbWriterVtkXmlBinary::getInstance());
-         //////////////////////////////////////////////////////////////////////////
-         // Zackenband
-         //////////////////////////////////////////////////////////////////////////
-         GbTriFaceMesh3DPtr meshBand1(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand"));
-         meshBand1->translate(5.0, -2.86, -14.717);
-         meshBand1->rotate(0.0, -0.5, 0.0);
-         if (myid == 0) GbSystem3D::writeGeoObject(meshBand1.get(), pathname + "/geo/Band1", WbWriterVtkXmlASCII::getInstance());
-         // Zackenband2
-         GbTriFaceMesh3DPtr meshBand2(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand2"));
-         meshBand2->translate(5.0, -7.86, -14.717);
-         meshBand2->rotate(0.0, -0.5, 0.0);
-         if (myid == 0) GbSystem3D::writeGeoObject(meshBand2.get(), pathname + "/geo/Band2", WbWriterVtkXmlASCII::getInstance());
-         // Zackenband3
-         GbTriFaceMesh3DPtr meshBand3(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand3"));
-         meshBand3->translate(5.0, -2.86, -14.417); //+0.3
-         meshBand3->rotate(0.0, -0.5, 0.0);
-         if (myid == 0) GbSystem3D::writeGeoObject(meshBand3.get(), pathname + "/geo/Band3", WbWriterVtkXmlASCII::getInstance());
-         // Zackenband4
-         GbTriFaceMesh3DPtr meshBand4(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand4"));
-         meshBand4->translate(5.0, -7.86, -14.417);
-         meshBand4->rotate(0.0, -0.5, 0.0);
-         if (myid == 0) GbSystem3D::writeGeoObject(meshBand4.get(), pathname + "/geo/Band4", WbWriterVtkXmlASCII::getInstance());
-         //////////////////////////////////////////////////////////////////////////
-
-         //////////////////////////////////////////////////////////////////////////
-         //porous inlay
-         // string pmFilename1  = pathGeo + "/CT-2014-039.raw";
-         // int pmNX1t=1333;  //abmessung einzelbild in x-richtung
-         // int pmNX2t=463; //abmessung einzelbild in y richtung
-         // int pmNX3t=1333; //anzahl der bilder
-         // float lthresholdt = 27686.97;
-         // float uthresholdt = 65535.0;
-
-         //// string pmFilename1  = pathGeo + "/membran370x357x101.raw";
-         //// int pmNX1t=370;  //abmessung einzelbild in x-richtung
-         //// int pmNX2t=357; //abmessung einzelbild in y richtung
-         //// int pmNX3t=101; //anzahl der bilder
-         //// float lthresholdt = 55.0;
-         //// float uthresholdt = 182.0;
-
-         // GbVoxelMatrix3DPtr pmMesht(new GbVoxelMatrix3D(pmNX1t,pmNX2t,pmNX3t,0,lthresholdt,uthresholdt));
-         // pmMesht->readMatrixFromRawFile<unsigned short>(pmFilename1);
-         // //pmMesht->readMatrixFromRawFile<unsigned char>(pmFilename1);
-         // double deltaX1 = 0.05/pmNX2t;
-         // double deltaX2 = 0.05/pmNX2t;
-         // double deltaX3 = 0.05/pmNX3t;
-         // double scaleFactort = 0.001;
-         // double deltat = 3.75*scaleFactort;
-         // pmMesht->setVoxelMatrixDelta(deltat, deltat, deltat);
-         // pmMesht->rotate90aroundX(); 
-         // pmMesht->rotate90aroundX();
-         // pmMesht->rotate90aroundX();
-         // double inlayXmin = 0;
-         // double inlayYmin = 0;
-         // double inlayZmin = 0;
-         // pmMesht->setVoxelMatrixMininum(inlayXmin, inlayYmin, inlayZmin);
-         // 
-         // if(myid == 0) pmMesht->writeToLegacyVTKBinary(pathname+"/geo/pmMesh");
-
-         // return;
-         ////////////////////////////////////////////////////////////////////////////
-
-         double blockLengthx1 = blocknx[0] * cdx; //geowerte
-         double blockLengthx2 = blockLengthx1;
-         double blockLengthx3 = blockLengthx1;
-
-         double geoLength[] = { nx[0] * blockLengthx1, nx[1] * blockLengthx2, nx[2] * blockLengthx3 };
-
-         double originX1 = plate->getX1Minimum() - plate->getLengthX1() / 4.0;
-         double originX2 = plate->getX2Minimum();
-         double originX3 = plate->getX3Minimum() - 299.5;
-
-
-         bool periodicx1 = false;
-         bool periodicx2 = true;
-         bool periodicx3 = false;
-
-         //bounding box
-         double g_minX1 = originX1;
-         double g_minX2 = originX2;
-         double g_minX3 = originX3;
-
-         double g_maxX1 = originX1 + geoLength[0];
-         double g_maxX2 = originX2 + geoLength[1];
-         double g_maxX3 = originX3 + geoLength[2];;
-
-
-         //set grid
-         grid->setDeltaX(cdx);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-         grid->setPeriodicX1(periodicx1);
-         grid->setPeriodicX2(periodicx2);
-         grid->setPeriodicX3(periodicx3);
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         gridCube->setCenterCoordinates(gridCube->getX1Centroid(), meshBand1->getX2Centroid(), gridCube->getX3Centroid());
-         if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         originX2 = gridCube->getX2Minimum();
-         g_minX2 = originX2;
-         g_maxX2 = originX2 + geoLength[1];
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         //////////////////////////////////////////////////////////////////////////
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* Parameters                            *");
-            UBLOG(logINFO, "* Re            =" << Re);
-            UBLOG(logINFO, "* nuLB          =" << nuLB);
-            UBLOG(logINFO, "* uLB           =" << uLB);
-            UBLOG(logINFO, "* cdx           =" << cdx);
-            UBLOG(logINFO, "* fdx           =" << fdx);
-            double Hzb = 0.6 / fdx;
-            UBLOG(logINFO, "* Height of Zackenband =" << Hzb);
-            UBLOG(logINFO, "* Re on Zackenband =" << (uLB*Hzb) / (nuLB*double(1 << refineLevel)));
-            UBLOG(logINFO, "* nx1/2/3       =" << nx[0] << "/" << nx[1] << "/" << nx[2]);
-            UBLOG(logINFO, "* blocknx1/2/3  =" << blocknx[0] << "/" << blocknx[1] << "/" << blocknx[2]);
-            UBLOG(logINFO, "* x1Periodic    =" << periodicx1);
-            UBLOG(logINFO, "* x2Periodic    =" << periodicx2);
-            UBLOG(logINFO, "* x3Periodic    =" << periodicx3);
-            UBLOG(logINFO, "* number of levels  =" << refineLevel + 1);
-            UBLOG(logINFO, "* path          =" << pathname);
-
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* number of threads    =" << numOfThreads);
-            UBLOG(logINFO, "* number of processes  =" << comm->getNumberOfProcesses());
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "*****************************************");
-         }
-         //////////////////////////////////////////////////////////////////////////
-
-
-         //////////////////////////////////////////////////////////////////////////
-         //refinement
-         GbCuboid3DPtr refinePlatteBox(new GbCuboid3D(plate->getX1Minimum() - 1.0, plate->getX2Minimum(), plate->getX3Minimum() + (plate->getX3Maximum() - plate->getX3Minimum()) / 2.0,
-            plate->getX1Maximum() + 40.0, plate->getX2Maximum(), plate->getX3Maximum() + 2.0));
-         if (myid == 0) GbSystem3D::writeGeoObject(refinePlatteBox.get(), pathname + "/geo/refinePlatteBox", WbWriterVtkXmlASCII::getInstance());
-
-         //inlay patch
-         GbCuboid3DPtr refineInlayBox(new GbCuboid3D(plate->getX1Maximum() - 85.0, plate->getX2Minimum(), plate->getX3Minimum() + (plate->getX3Maximum() - plate->getX3Minimum()) / 2.0,
-            plate->getX1Maximum() + 1.0, plate->getX2Maximum(), plate->getX3Maximum() + 1.0));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineInlayBox.get(), pathname + "/geo/refineInlayBox", WbWriterVtkXmlASCII::getInstance());
-
-         if (refineLevel > 0)
-         {
-            if (myid == 0) UBLOG(logINFO, "Refinement - start");
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(refinePlatteBox, refineLevel - 1);
-            refineHelper.addGbObject(refineInlayBox, refineLevel);
-
-            refineHelper.refine();
-            if (myid == 0) UBLOG(logINFO, "Refinement - end");
-         }
-
-         //if(myid == 0)
-         //{
-         //   UBLOG(logINFO,"Write blocks - start");
-         //   BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-         //   ppblocks->update(0);
-         //   UBLOG(logINFO,"Write blocks - end");
-         //}
-
-         //return;
-
-
-         {
-
-            ////walls
-            GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1 - blockLengthx1, g_minX2 - blockLengthx1, g_minX3 - blockLengthx1, g_maxX1 + blockLengthx1, g_maxX2 + blockLengthx1, g_minX3));
-            if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname + "/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-            GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1 - blockLengthx1, g_minX2 - blockLengthx1, g_maxX3, g_maxX1 + blockLengthx1, g_maxX2 + blockLengthx1, g_maxX3 + blockLengthx1));
-            if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname + "/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-            //walls
-            int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-            D3Q27BoundaryConditionAdapterPtr slip(new D3Q27SlipBCAdapter(bbOption));
-            D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, slip, Interactor3D::SOLID));
-            D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, slip, Interactor3D::SOLID));
-
-            /////////////////////////////////////////////////
-            ///interactoren
-            int bbOption1 = 1; //0=simple Bounce Back, 1=quadr. BB
-            D3Q27BoundaryConditionAdapterPtr noSlip(new D3Q27NoSlipBCAdapter(bbOption1));
-            D3Q27TriFaceMeshInteractorPtr triPlateInteractor(new D3Q27TriFaceMeshInteractor(plate, grid, noSlip, Interactor3D::SOLID, Interactor3D::POINTS));
-            D3Q27TriFaceMeshInteractorPtr triBand1Interactor(new D3Q27TriFaceMeshInteractor(meshBand1, grid, noSlip, Interactor3D::SOLID, Interactor3D::EDGES));
-            D3Q27TriFaceMeshInteractorPtr triBand2Interactor(new D3Q27TriFaceMeshInteractor(meshBand2, grid, noSlip, Interactor3D::SOLID, Interactor3D::EDGES));
-            D3Q27TriFaceMeshInteractorPtr triBand3Interactor(new D3Q27TriFaceMeshInteractor(meshBand3, grid, noSlip, Interactor3D::SOLID, Interactor3D::EDGES));
-            D3Q27TriFaceMeshInteractorPtr triBand4Interactor(new D3Q27TriFaceMeshInteractor(meshBand4, grid, noSlip, Interactor3D::SOLID, Interactor3D::EDGES));
-
-            //inflow
-            GbCuboid3DPtr velBCCuboid(new GbCuboid3D(originX1 - blockLengthx1, originX2 - blockLengthx1, originX3 - blockLengthx1,
-               originX1, originX2 + geoLength[1] + blockLengthx1, originX3 + geoLength[2] + blockLengthx1));
-            if (myid == 0) GbSystem3D::writeGeoObject(velBCCuboid.get(), pathname + "/geo/velBCCuboid", WbWriterVtkXmlASCII::getInstance());
-            D3Q27InteractorPtr velBCInteractor(new D3Q27Interactor(velBCCuboid, grid, Interactor3D::SOLID));
-
-            //inflow
-            double raiseVelSteps = 0;
-            vector<D3Q27BCFunction> velcX1BCs, dummy;
-
-            mu::Parser inflowProfile;
-            inflowProfile.SetExpr("uLB");
-            inflowProfile.DefineConst("uLB", uLB);
-            velcX1BCs.push_back(D3Q27BCFunction(inflowProfile, raiseVelSteps, D3Q27BCFunction::INFCONST));
-
-            D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter(velcX1BCs, dummy, dummy));
-            velBCInteractor->addBCAdapter(velBCAdapter);
-
-            //outflow
-            GbCuboid3DPtr densCuboid(new GbCuboid3D(originX1 + geoLength[0], originX2 - blockLengthx1, originX3 - blockLengthx1,
-               originX1 + geoLength[0] + blockLengthx1, originX2 + geoLength[1] + blockLengthx1, originX3 + geoLength[2] + blockLengthx1));
-            if (myid == 0) GbSystem3D::writeGeoObject(densCuboid.get(), pathname + "/geo/densCuboid", WbWriterVtkXmlASCII::getInstance());
-            D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-            D3Q27InteractorPtr densInteractor(new D3Q27Interactor(densCuboid, grid, denBCAdapter, Interactor3D::SOLID));
-
-            ////////////////////////////////////////////
-            //METIS
-            Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-
-            ////////////////////////////////////////////
-            /////delete solid blocks
-            if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-            InteractorsHelper intHelper(grid, metisVisitor);
-            intHelper.addInteractor(triPlateInteractor);
-            intHelper.addInteractor(triBand1Interactor);
-            intHelper.addInteractor(triBand2Interactor);
-            intHelper.addInteractor(triBand3Interactor);
-            intHelper.addInteractor(triBand4Interactor);
-            intHelper.addInteractor(addWallZminInt);
-            intHelper.addInteractor(addWallZmaxInt);
-            intHelper.addInteractor(densInteractor);
-            intHelper.addInteractor(velBCInteractor);
-            intHelper.selectBlocks();
-            if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-            //////////////////////////////////////
-
-            //domain decomposition for threads
-            if (numOfThreads > 1)
-            {
-               PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-               grid->accept(pqPartVisitor);
-            }
-
-            if (myid == 0)
-            {
-               UBLOG(logINFO, "Write blocks - start");
-               BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-               ppblocks->update(0);
-               UBLOG(logINFO, "Write blocks - end");
-            }
-
-            unsigned long nob = grid->getNumberOfBlocks();
-            unsigned long nod = nob * blocknx[0] * blocknx[1] * blocknx[2];
-            unsigned long nod_real = nob * (blocknx[0] + 3)*(blocknx[1] + 3)*(blocknx[2] + 3);
-            unsigned long nodb = (blocknx[0]) * (blocknx[1]) * (blocknx[2]);
-
-            double needMemAll = double(nod_real*(27 * sizeof(double) + sizeof(int)));
-            double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-            double nup = 0;
-
-            if (myid == 0)
-            {
-               UBLOG(logINFO, "Number of blocks = " << nob);
-               UBLOG(logINFO, "Number of nodes  = " << nod);
-               int minInitLevel = grid->getCoarsestInitializedLevel();
-               int maxInitLevel = grid->getFinestInitializedLevel();
-               for (int level = minInitLevel; level <= maxInitLevel; level++)
-               {
-                  int nobl = grid->getNumberOfBlocks(level);
-                  UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-                  UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*nodb);
-                  nup += nobl*nodb*double(1 << level);
-               }
-               UBLOG(logINFO, "Hypothetically time for calculation step for 120 nodes  = " << nup / 6.0e5 / (120 * 8) << " s");
-               UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-               UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-               UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-               UBLOG(logINFO, "Available memory per node/8.0 = " << (availMem / 8.0) << " bytes");
-            }
-
-            //////////////////////////////////////////
-            //set connectors
-            if (myid == 0) UBLOG(logINFO, "set connectors - start");
-            D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-            D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-            grid->accept(setConnsVisitor);
-            if (myid == 0) UBLOG(logINFO, "set connectors - end");
-
-            ////////////////////////////
-            LBMKernel3DPtr kernel;
-            //kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-
-            //with sponge layer
-            kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLBWithSpongeLayer(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-            kernel->setWithSpongeLayer(true);
-            kernel->setSpongeLayer(spongeLayer);
-
-            //BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-            BCProcessorPtr bcProc(new D3Q27ETForThinWallBCProcessor());
-            kernel->setBCProcessor(bcProc);
-            SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-            grid->accept(kernelVisitor);
-            //////////////////////////////////
-            //undef nodes
-            if (refineLevel > 0)
-            {
-               D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-               grid->accept(undefNodesVisitor);
-            }
-
-
-            intHelper.setBC();
-
-         }
-         //////////////////////////////////////////////////////////////////////////
-         //porous inlay
-         {
-            string pmFilename = pathGeo + "/CT-2014-039.raw";
-            int pmNX1 = 1333;  //abmessung einzelbild in x-richtung
-            int pmNX2 = 463; //abmessung einzelbild in y richtung
-            int pmNX3 = 1333; //anzahl der bilder
-            float lthreshold = 27686.97;
-            float uthreshold = 65535.0;
-
-            GbVoxelMatrix3DPtr pmMesh(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-            pmMesh->readMatrixFromRawFile<unsigned short>(pmFilename, GbVoxelMatrix3D::LittleEndian);
-
-            double scaleFactor = 0.001;
-            double delta = 3.75*scaleFactor;
-            pmMesh->setVoxelMatrixDelta(delta, delta, delta);
-            pmMesh->rotate90aroundX();
-            pmMesh->rotate90aroundX();
-            pmMesh->rotate90aroundX();
-
-            double inlayXmin = plate->getX1Maximum() - 5.0;//995.0;
-            double inlayYmin = gridCube->getX2Minimum();//180.0;
-            double inlayZmin = 8.84 + fdx;//8.73;
-
-            //pmMesh->setVoxelMatrixMininum(inlayXmin, inlayYmin, inlayZmin);
-            //if(myid == 0) pmMesh->writeToLegacyVTKBinary(pathname+"/geo/pmMesh");
-
-            int i = 0;
-            for (int y = 0; y <= 35; y += 10)
-               for (int x = 0; x <= 75; x += 10)
-               {
-                  if (myid == 0) UBLOG(logINFO, "inlay # " << i);
-                  pmMesh->setVoxelMatrixMininum(inlayXmin - (double)x, inlayYmin + (double)y, inlayZmin);
-                  inlay(pmMesh, pathname, myid, i, grid);
-                  i++;
-
-                  if (myid == 0) UBLOG(logINFO, "inlay # " << i);
-                  pmMesh->setVoxelMatrixMininum(inlayXmin - (double)(x + 5), inlayYmin + (double)y, inlayZmin);
-                  pmMesh->mirrorX();
-                  inlay(pmMesh, pathname, myid, i, grid);
-                  i++;
-
-                  if (myid == 0) UBLOG(logINFO, "inlay # " << i);
-                  pmMesh->setVoxelMatrixMininum(inlayXmin - (double)(x + 5), inlayYmin + (double)(y + 5), inlayZmin);
-                  pmMesh->mirrorY();
-                  inlay(pmMesh, pathname, myid, i, grid);
-                  i++;
-
-                  if (myid == 0) UBLOG(logINFO, "inlay # " << i);
-                  pmMesh->setVoxelMatrixMininum(inlayXmin - (double)x, inlayYmin + (double)(y + 5), inlayZmin);
-                  pmMesh->mirrorX();
-                  inlay(pmMesh, pathname, myid, i, grid);
-                  pmMesh->mirrorY();
-                  i++;
-               }
-
-            if (myid == 0)
-            {
-               UBLOG(logINFO, "mit VoxelMatrix");
-               UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-               UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-               UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-            }
-         }
-         //////////////////////////////////////////////////////////////////////////
-
-
-         //initialization of decompositions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-         initVisitor.setVx1(uLB);
-         grid->accept(initVisitor);
-
-         //Postprozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(),
-            unitConverter, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-         geoSch.reset();
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         restart = true;
-
-         ////////////////////////////////////////////////////////////////////////////
-         //change viscosity
-         Re = 1e6;
-         nuLB = ((uLB*(lReal/cdx))/Re)*1.043;
-         if (myid == 0) UBLOG(logINFO, "nuLB =" << nuLB);
-
-         int gridRank = grid->getRank();
-         int minInitLevel = grid->getCoarsestInitializedLevel();
-         int maxInitLevel = grid->getFinestInitializedLevel();
-
-         std::vector<std::vector<Block3DPtr> > blockVector;
-         blockVector.resize(maxInitLevel + 1);
-
-         for (int level = minInitLevel; level <= maxInitLevel; level++)
-         {
-            grid->getBlocks(level, gridRank, true, blockVector[level]);
-
-            BOOST_FOREACH(Block3DPtr block, blockVector[level])
-            {
-               LBMReal collFactor = LBMSystem::calcCollisionFactor(nuLB, block->getLevel());
-               block->getKernel()->setCollisionFactor(collFactor);
-            }
-         }
-         ////////////////////////////////////////////////////////////////////////////
-
-         //domain decomposition for threads
-         if (numOfThreads > 1)
-         {
-            PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-            grid->accept(pqPartVisitor);
-         }
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-         SetSpongeLayerBlockVisitor ssp(spongeLayer);
-         grid->accept(ssp);
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-      }
-      UbSchedulerPtr visSch(new UbScheduler());
-      //visSch->addSchedule(1,0,10);
-      visSch->addSchedule(100, 100, 1000);
-      //visSch->addSchedule(1000,1000,5000);
-      //visSch->addSchedule(5000,5000,100000);
-      //visSch->addSchedule(100000,100000,10000000);
-
-      visSch->addSchedule(1000, 1000, 10000000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), unitConverter);
-
-      double startStep = 33000;
-
-      UbSchedulerPtr resSchRMS(new UbScheduler());
-      resSchRMS->addSchedule(1000000, startStep, 10000000);
-      UbSchedulerPtr resSchMeans(new UbScheduler());
-      resSchMeans->addSchedule(1000000, startStep, 10000000);
-      UbSchedulerPtr stepAvSch(new UbScheduler());
-      int averageInterval = 100;
-
-      stepAvSch->addSchedule(averageInterval, 0, 10000000);
-      AverageValuesPostprocessor Avpp(grid, pathname, WbWriterVtkXmlBinary::getInstance(), visSch/*wann wird rausgeschrieben*/,
-         stepAvSch/*wann wird gemittelt*/, resSchMeans, resSchRMS/*wann wird resettet*/, restart);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 30));
-      nupsSch->addSchedule(500, 500, 1e6);
-      NUPSCounterPostprocessor npr(grid, nupsSch, numOfThreads, comm);
-
-      UbSchedulerPtr emSch(new UbScheduler(10));
-      EmergencyExitPostprocessor empr(grid, emSch, pathname, RestartPostprocessorPtr(&rp), comm);
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      double endTime = 100000001;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if (argc == 1)
-   {
-      cout << "Command line argument isn't specified!" << endl;
-      cout << "plate2 <machine name>" << endl;
-      return 1;
-   }
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/PoiseuilleFlow/CMakeLists.txt b/apps/cpu/PoiseuilleFlow/CMakeLists.txt
deleted file mode 100644
index 43ea7697a846d3453bcdf8e53f6b5a9622ee9e71..0000000000000000000000000000000000000000
--- a/apps/cpu/PoiseuilleFlow/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(pf)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(pf BINARY)
diff --git a/apps/cpu/PoiseuilleFlow/pf.cpp b/apps/cpu/PoiseuilleFlow/pf.cpp
deleted file mode 100644
index cdc3eb5f6351fc521be4be7cb7b922d807cb4b33..0000000000000000000000000000000000000000
--- a/apps/cpu/PoiseuilleFlow/pf.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "pf.h"
-
-using namespace std;
-
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   try
-   {
-      pf1();
-      return 0;
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-}
diff --git a/apps/cpu/PoiseuilleFlow/pf.h b/apps/cpu/PoiseuilleFlow/pf.h
deleted file mode 100644
index fd45a633945e3555136207cf194e8c74e652bed2..0000000000000000000000000000000000000000
--- a/apps/cpu/PoiseuilleFlow/pf.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef pf_h__
-#define pf_h__
-
-void pf1();
-//void pf2();
-//void pf3();
-//void pf4();
-
-#endif // pf_h__
\ No newline at end of file
diff --git a/apps/cpu/PoiseuilleFlow/pf1.cpp b/apps/cpu/PoiseuilleFlow/pf1.cpp
deleted file mode 100644
index e7f4bbf1baa03e235a4263c8c9a1293c1d51d7f3..0000000000000000000000000000000000000000
--- a/apps/cpu/PoiseuilleFlow/pf1.cpp
+++ /dev/null
@@ -1,206 +0,0 @@
-#include "pf.h"
-#include "VirtualFluids.h"
-#include "CheckpointConverter.h"
-
-using namespace std;
-
-//pipe flow with forcing
-void pf1()
-{
-   SPtr<Communicator> comm = MPICommunicator::getInstance();
-   int myid = comm->getProcessID();
-
-   //parameters
-   string          pathOut = "/gfs1/work/niikonst/pflow_pipe_forcing";
-   int             numOfThreads = 1;
-   int             blocknx[3] ={ 10,10,10 };
-   double          endTime = 10;
-   double          cpStart = 10;
-   double          cpStep = 10;
-   double          outTime = 10;
-   double          availMem = 8e9;
-   double          deltax = 1;
-   double          rhoLB = 0.0;
-   double          nuLB = 0.005;
-
-   //geometry definition
-
-   //simulation bounding box
-   double g_minX1 = 0.0;
-   double g_minX2 = -50.0;
-   double g_minX3 = -50.0;
-
-   double g_maxX1 = 2000;
-   double g_maxX2 = 50;
-   double g_maxX3 = 50;
-
-   //Sleep(15000);
-
-   SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-   if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathOut + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-   //cylinder
-   SPtr<GbObject3D> cylinder(new GbCylinder3D(g_minX1 - 2.0*deltax, 0.0, 0.0, g_maxX1 + 2.0*deltax, 0.0, 0.0, g_maxX2));
-   GbSystem3D::writeGeoObject(cylinder.get(), pathOut + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-   if (myid == 0)
-   {
-      UBLOG(logINFO, "rhoLB = " << rhoLB);
-      UBLOG(logINFO, "nuLB = " << nuLB);
-      UBLOG(logINFO, "deltaX = " << deltax);
-      UBLOG(logINFO, "Preprocess - start");
-   }
-
-   //Grid definition
-   SPtr<Grid3D> grid(new Grid3D(comm));
-   grid->setDeltaX(deltax);
-   grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-   grid->setPeriodicX1(true);
-   grid->setPeriodicX2(false);
-   grid->setPeriodicX3(false);
-
-   //blocks generating
-   GenBlocksGridVisitor genBlocks(gridCube);
-   grid->accept(genBlocks);
-
-   //boundary conditions definition 
-   //boundary conditions adapters
-   //////////////////////////////////////////////////////////////////////////////
-   SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-   noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-
-   //boundary conditions visitor
-   BoundaryConditionsBlockVisitor bcVisitor;
-   bcVisitor.addBC(noSlipBCAdapter);
-   //////////////////////////////////////////////////////////////////////////////////
-
-   //set boundary conditions for blocks and create process decomposition for MPI
-   SPtr<D3Q27Interactor> cylinderInt(new D3Q27Interactor(cylinder, grid, noSlipBCAdapter, Interactor3D::INVERSESOLID));
-   SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-   InteractorsHelper intHelper(grid, metisVisitor);
-   intHelper.addInteractor(cylinderInt);
-   intHelper.selectBlocks();
-
-   //write data for visualization of block grid
-   SPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm));
-   ppblocks->process(0);
-   //ppblocks.reset();
-
-   unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-   int ghostLayer = 3;
-   unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-   unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-   unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-   double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-   double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-   if (myid == 0)
-   {
-      UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-      UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-      int minInitLevel = grid->getCoarsestInitializedLevel();
-      int maxInitLevel = grid->getFinestInitializedLevel();
-      for (int level = minInitLevel; level <= maxInitLevel; level++)
-      {
-         int nobl = grid->getNumberOfBlocks(level);
-         UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-         UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-      }
-      UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-      UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-      UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-   }
-
-   //LBM kernel definition
-   SPtr<LBMKernel> kernel;
-   kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel());
-   SPtr<BCProcessor> bcProc(new BCProcessor());
-   kernel->setBCProcessor(bcProc);
-
-   //set forcing
-   mu::Parser fctForcingX1;
-   fctForcingX1.SetExpr("Fx1");
-   fctForcingX1.DefineConst("Fx1", 9e-7);
-   kernel->setWithForcing(true);
-   kernel->setForcingX1(fctForcingX1);
-
-   //create LBM kernel
-   SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-   grid->accept(kernelVisitor);
-
-   //set boundary conditions for nodes
-   intHelper.setBC();
-   grid->accept(bcVisitor);
-
-   //initialization of distributions
-   InitDistributionsBlockVisitor initVisitor;
-   grid->accept(initVisitor);
-
-   //set connectors
-   InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-   SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-   grid->accept(setConnsVisitor);
-
-   SPtr<UbScheduler> mSch(new UbScheduler(cpStep, cpStart));
-   //SPtr<MPIIORestartCoProcessor> restartCoProcessor(new MPIIORestartCoProcessor(grid, mSch, pathOut, comm));
-   //restartCoProcessor->setLBMKernel(kernel);
-   //restartCoProcessor->setBCProcessor(bcProc);
-
-   /*SPtr<MPIIOMigrationCoProcessor> migCoProcessor(new MPIIOMigrationCoProcessor(grid, mSch, pathOut + "/mig", comm));
-   migCoProcessor->setLBMKernel(kernel);
-   migCoProcessor->setBCProcessor(bcProc);*/
-
-   //SPtr<MPIIOMigrationBECoProcessor> migCoProcessor(new MPIIOMigrationBECoProcessor(grid, mSch, pathOut + "/mig", comm));
-   //migCoProcessor->setLBMKernel(kernel);
-   //migCoProcessor->setBCProcessor(bcProc);
-   //migCoProcessor->setNu(nuLB);
-
-   //SPtr<UtilConvertor> convertProcessor(new UtilConvertor(grid, pathOut, comm));
-   //convertProcessor->convert(300, 4);
-   //return;
-
-   //write data for visualization of boundary conditions
-   {
-      SPtr<UbScheduler> geoSch(new UbScheduler(1));
-      WriteBoundaryConditionsCoProcessor ppgeo(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), /*SPtr<LBMUnitConverter>(new LBMUnitConverter()),*/ comm);
-      ppgeo.process(0);
-   }
-   
-   if (myid == 0) UBLOG(logINFO, "Preprocess - end");
-
-   //grid=SPtr<Grid3D>(new Grid3D(comm));
-   //restartCoProcessor->restart(200);
-   SPtr<MPIIOMigrationBECoProcessor> migCoProcessor(new MPIIOMigrationBECoProcessor(grid, mSch, pathOut + "/mig", comm));
-   migCoProcessor->setLBMKernel(kernel);
-   migCoProcessor->setBCProcessor(bcProc);
-   migCoProcessor->setNu(nuLB);
-   migCoProcessor->restart(10);
-
-   ppblocks->process(1);
-
-   //write data for visualization of macroscopic quantities
-   SPtr<UbScheduler> visSch(new UbScheduler(outTime));
-   SPtr<WriteMacroscopicQuantitiesCoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, visSch, pathOut, 
-      WbWriterVtkXmlASCII::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
-
-   //performance control
-   SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-   SPtr<NUPSCounterCoProcessor> npr(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-   //start simulation 
-   //omp_set_num_threads(numOfThreads);
-   SPtr<UbScheduler> stepGhostLayer(new UbScheduler(outTime));
-   SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
-   calculator->addCoProcessor(npr);
-   calculator->addCoProcessor(writeMQCoProcessor);
-   calculator->addCoProcessor(migCoProcessor);
-   //calculator->addCoProcessor(restartCoProcessor);
-
-   if (myid == 0) UBLOG(logINFO, "Simulation-start");
-   calculator->calculate();
-   if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   
-   ppblocks->process(10);
-}
-
-
diff --git a/apps/cpu/PoiseuilleFlow/pf2.cpp b/apps/cpu/PoiseuilleFlow/pf2.cpp
deleted file mode 100644
index addb56c279c8fbddd51b6c03ac514014c9c33423..0000000000000000000000000000000000000000
--- a/apps/cpu/PoiseuilleFlow/pf2.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-//#include "pf.h"
-//
-//#include "VirtualFluids.h"
-//using namespace std;
-//
-////pipe flow with pressure drop
-//void pf2()
-//{
-//   SPtr<Communicator> comm = MPICommunicator::getInstance();
-//   int myid = comm->getProcessID();
-//
-//   //parameters
-//   string          pathname = "d:/temp/pflow_pipe_dp";
-//   int             numOfThreads = 1;
-//   int             blocknx[3] ={ 10,10,10 };
-//   double          endTime = 100000;
-//   double          outTime = 100;
-//   double          availMem = 8e9;
-//   double          deltax = 1;
-//   double          rhoLBInflow = 0.001;
-//   double          rhoLB = 0.0;
-//   double          nuLB = 0.005;
-//
-//   //geometry definition
-//
-//   //simulation bounding box
-//   double g_minX1 = 0.0;
-//   double g_minX2 = -5.0;
-//   double g_minX3 = -5.0;
-//
-//   double g_maxX1 = 30;
-//   double g_maxX2 = 5;
-//   double g_maxX3 = 5;
-//
-//   SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-//   if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-//
-//   //cylinder
-//   SPtr<GbObject3D> cylinder(new GbCylinder3D(g_minX1 - 2.0*deltax, 0.0, 0.0, g_maxX1 + 2.0*deltax, 0.0, 0.0, g_maxX2));
-//   GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-//
-//   //inflow
-//   GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-2.0*deltax, g_minX2-2.0*deltax, g_minX3-2.0*deltax, g_minX1, g_maxX2+2.0*deltax, g_maxX3+2.0*deltax));
-//   if (myid==0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-//
-//   //outflow
-//   GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-2.0*deltax, g_minX3-2.0*deltax, g_maxX1+2.0*deltax, g_maxX2+2.0*deltax, g_maxX3+2.0*deltax));
-//   if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-//
-//   if (myid == 0)
-//   {
-//      UBLOG(logINFO, "rhoLB = " << rhoLB);
-//      UBLOG(logINFO, "nuLB = " << nuLB);
-//      UBLOG(logINFO, "deltaX = " << deltax);
-//      UBLOG(logINFO, "Preprocess - start");
-//   }
-//
-//   //Grid definition
-//   SPtr<Grid3D> grid(new Grid3D(comm));
-//   grid->setDeltaX(deltax);
-//   grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-//   grid->setPeriodicX1(false);
-//   grid->setPeriodicX2(false);
-//   grid->setPeriodicX3(false);
-//
-//   if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-//
-//   //blocks generating
-//   GenBlocksGridVisitor genBlocks(gridCube);
-//   grid->accept(genBlocks);
-//
-//   //boundary conditions definition 
-//   //boundary conditions adapters
-//   //////////////////////////////////////////////////////////////////////////////
-//   SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-//   noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-//   SPtr<BCAdapter> denInflowBCAdapter(new DensityBCAdapter(rhoLBInflow));
-//   denInflowBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-//   SPtr<BCAdapter> denOutflowBCAdapter(new DensityBCAdapter(rhoLB));
-//   denOutflowBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-//
-//   //boundary conditions visitor
-//   BoundaryConditionsBlockVisitor bcVisitor;
-//   bcVisitor.addBC(noSlipBCAdapter);
-//   bcVisitor.addBC(denInflowBCAdapter);
-//   //////////////////////////////////////////////////////////////////////////////////
-//
-//   //set boundary conditions for blocks and create process decomposition for MPI
-//   //cylinder
-//   SPtr<D3Q27Interactor> cylinderInt(new D3Q27Interactor(cylinder, grid, noSlipBCAdapter, Interactor3D::INVERSESOLID));
-//   //inflow
-//   SPtr<D3Q27Interactor> inflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, denInflowBCAdapter, Interactor3D::SOLID));
-//   //outflow
-//   SPtr<D3Q27Interactor> outflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denOutflowBCAdapter, Interactor3D::SOLID));
-//
-//   SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-//   InteractorsHelper intHelper(grid, metisVisitor);
-//   intHelper.addInteractor(cylinderInt);
-//   intHelper.addInteractor(inflowInt);
-//   intHelper.addInteractor(outflowInt);
-//   intHelper.selectBlocks();
-//
-//   //write data for visualization of block grid
-//   WriteBlocksSPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-//   ppblocks->process(0);
-//   ppblocks.reset();
-//
-//   unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-//   int ghostLayer = 3;
-//   unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-//   unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-//   unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-//   double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-//   double needMem = needMemAll / double(comm->getNumberOfProcesses());
-//
-//   if (myid == 0)
-//   {
-//      UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-//      UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-//      int minInitLevel = grid->getCoarsestInitializedLevel();
-//      int maxInitLevel = grid->getFinestInitializedLevel();
-//      for (int level = minInitLevel; level <= maxInitLevel; level++)
-//      {
-//         int nobl = grid->getNumberOfBlocks(level);
-//         UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-//         UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-//      }
-//      UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-//      UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-//      UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-//   }
-//
-//   //LBM kernel definition
-//   SPtr<LBMKernel> kernel;
-//   kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], IncompressibleCumulantLBMKernel::NORMAL));
-//   SPtr<BCProcessor> bcProc(new BCProcessor());
-//   kernel->setBCProcessor(bcProc);
-//
-//   //create LBM kernel
-//   SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-//   grid->accept(kernelVisitor);
-//
-//   //set boundary conditions for nodes
-//   intHelper.setBC();
-//   grid->accept(bcVisitor);
-//
-//   //initialization of distributions
-//   InitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-//   grid->accept(initVisitor);
-//
-//   //set connectors
-//   InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-//   SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-//   grid->accept(setConnsVisitor);
-//
-//   //domain decomposition for threads
-//   PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-//   grid->accept(pqPartVisitor);
-//
-//   //write data for visualization of boundary conditions
-//   SPtr<UbScheduler> geoSch(new UbScheduler(1));
-//   WriteBoundaryConditionsSPtr<CoProcessor> ppgeo(
-//      new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
-//   ppgeo->process(0);
-//   ppgeo.reset();
-//
-//   if (myid == 0) UBLOG(logINFO, "Preprocess - end");
-//
-//   //write data for visualization of macroscopic quantities
-//   SPtr<UbScheduler> visSch(new UbScheduler(outTime));
-//   WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm);
-//
-//   //performance control
-//   SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-//   NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-//
-//   //start solver
-//   CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-//   if (myid == 0) UBLOG(logINFO, "Simulation-start");
-//   calculation->calculate();
-//   if (myid == 0) UBLOG(logINFO, "Simulation-end");
-//}
-//
-//
-//
diff --git a/apps/cpu/PoiseuilleFlow/pf3.cpp b/apps/cpu/PoiseuilleFlow/pf3.cpp
deleted file mode 100644
index a2bcd1edcf49cd0245853feed5e16e102932ca95..0000000000000000000000000000000000000000
--- a/apps/cpu/PoiseuilleFlow/pf3.cpp
+++ /dev/null
@@ -1,176 +0,0 @@
-//#include "pf.h"
-//#include "VirtualFluids.h"
-//
-//using namespace std;
-//
-////two plates flow with forcing
-//void pf3()
-//{
-//   SPtr<Communicator> comm = MPICommunicator::getInstance();
-//   int myid = comm->getProcessID();
-//
-//   //parameters
-//   string          pathname = "d:/temp/pflow_plates_forcing";
-//   int             numOfThreads = 1;
-//   int             blocknx[3] ={ 10,10,10 };
-//   double          endTime = 100000;
-//   double          outTime = 100;
-//   double          availMem = 8e9;
-//   double          deltax = 1;
-//   double          rhoLB = 0.0;
-//   double          nuLB = 0.005;
-//
-//   //geometry definition
-//
-//   //simulation bounding box
-//   double g_minX1 = 0.0;
-//   double g_minX2 = -5.0;
-//   double g_minX3 = -5.0;
-//
-//   double g_maxX1 = 30;
-//   double g_maxX2 = 5;
-//   double g_maxX3 = 5;
-//
-//   SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-//   if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-//
-//   //walls
-//   GbCuboid3DPtr addWallYmin(new GbCuboid3D(g_minX1-2.0*deltax, g_minX2-2.0*deltax, g_minX3-2.0*deltax, g_maxX1+2.0*deltax, g_minX2, g_maxX3+2.0*deltax));
-//   if (myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-//
-//   GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1-2.0*deltax, g_maxX2, g_minX3-2.0*deltax, g_maxX1+2.0*deltax, g_maxX2+2.0*deltax, g_maxX3+2.0*deltax));
-//   if (myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-//
-//   if (myid == 0)
-//   {
-//      UBLOG(logINFO, "rhoLB = " << rhoLB);
-//      UBLOG(logINFO, "nuLB = " << nuLB);
-//      UBLOG(logINFO, "deltaX = " << deltax);
-//      UBLOG(logINFO, "Preprocess - start");
-//   }
-//
-//   //Grid definition
-//   SPtr<Grid3D> grid(new Grid3D(comm));
-//   grid->setDeltaX(deltax);
-//   grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-//   grid->setPeriodicX1(true);
-//   grid->setPeriodicX2(false);
-//   grid->setPeriodicX3(true);
-//
-//   if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-//
-//   //blocks generating
-//   GenBlocksGridVisitor genBlocks(gridCube);
-//   grid->accept(genBlocks);
-//
-//   //boundary conditions definition 
-//   //boundary conditions adapters
-//   //////////////////////////////////////////////////////////////////////////////
-//   SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-//   noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-//
-//   //boundary conditions visitor
-//   BoundaryConditionsBlockVisitor bcVisitor;
-//   bcVisitor.addBC(noSlipBCAdapter);
-//   //////////////////////////////////////////////////////////////////////////////////
-//
-//   //set boundary conditions for blocks and create process decomposition for MPI
-//   //walls
-//   SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-//   SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-//
-//   SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-//   InteractorsHelper intHelper(grid, metisVisitor);
-//   intHelper.addInteractor(addWallYminInt);
-//   intHelper.addInteractor(addWallYmaxInt);
-//   intHelper.selectBlocks();
-//
-//   //write data for visualization of block grid
-//   WriteBlocksSPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-//   ppblocks->process(0);
-//   ppblocks.reset();
-//
-//   unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-//   int ghostLayer = 3;
-//   unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-//   unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-//   unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-//   double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-//   double needMem = needMemAll / double(comm->getNumberOfProcesses());
-//
-//   if (myid == 0)
-//   {
-//      UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-//      UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-//      int minInitLevel = grid->getCoarsestInitializedLevel();
-//      int maxInitLevel = grid->getFinestInitializedLevel();
-//      for (int level = minInitLevel; level <= maxInitLevel; level++)
-//      {
-//         int nobl = grid->getNumberOfBlocks(level);
-//         UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-//         UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-//      }
-//      UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-//      UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-//      UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-//   }
-//
-//   //LBM kernel definition
-//   SPtr<LBMKernel> kernel;
-//   kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], IncompressibleCumulantLBMKernel::NORMAL));
-//   SPtr<BCProcessor> bcProc(new BCProcessor());
-//   kernel->setBCProcessor(bcProc);
-//
-//   //set forcing
-//   mu::Parser fctForcingX1;
-//   fctForcingX1.SetExpr("Fx1");
-//   fctForcingX1.DefineConst("Fx1", 9e-7);
-//   kernel->setWithForcing(true);
-//   kernel->setForcingX1(fctForcingX1);
-//
-//   //create LBM kernel
-//   SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-//   grid->accept(kernelVisitor);
-//
-//   //set boundary conditions for nodes
-//   intHelper.setBC();
-//   grid->accept(bcVisitor);
-//
-//   //initialization of distributions
-//   InitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-//   grid->accept(initVisitor);
-//
-//   //set connectors
-//   InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-//   SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-//   grid->accept(setConnsVisitor);
-//
-//   //domain decomposition for threads
-//   PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-//   grid->accept(pqPartVisitor);
-//
-//   //write data for visualization of boundary conditions
-//   SPtr<UbScheduler> geoSch(new UbScheduler(1));
-//   WriteBoundaryConditionsSPtr<CoProcessor> ppgeo(
-//      new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
-//   ppgeo->process(0);
-//   ppgeo.reset();
-//
-//   if (myid == 0) UBLOG(logINFO, "Preprocess - end");
-//
-//   //write data for visualization of macroscopic quantities
-//   SPtr<UbScheduler> visSch(new UbScheduler(outTime));
-//   WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm);
-//
-//   //performance control
-//   SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-//   NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-//   
-//   //start solver
-//   CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-//   if (myid == 0) UBLOG(logINFO, "Simulation-start");
-//   calculation->calculate();
-//   if (myid == 0) UBLOG(logINFO, "Simulation-end");
-//}
-//
-//
diff --git a/apps/cpu/PoiseuilleFlow/pf4.cpp b/apps/cpu/PoiseuilleFlow/pf4.cpp
deleted file mode 100644
index 28e81e76a6f2ad1e47b6589a826ca5139a265547..0000000000000000000000000000000000000000
--- a/apps/cpu/PoiseuilleFlow/pf4.cpp
+++ /dev/null
@@ -1,189 +0,0 @@
-//#include "pf.h"
-//#include "VirtualFluids.h"
-//
-//using namespace std;
-//
-////two plates flow with pressure drop
-//void pf4()
-//{
-//   SPtr<Communicator> comm = MPICommunicator::getInstance();
-//   int myid = comm->getProcessID();
-//
-//   //parameters
-//   string          pathname = "d:/temp/pflow_plates_dp";
-//   int             numOfThreads = 4;
-//   int             blocknx[3] ={ 10,10,10 };
-//   double          endTime = 100000;
-//   double          outTime = 100;
-//   double          availMem = 8e9;
-//   double          deltax = 1;
-//   double          rhoLBInflow = 0.001;
-//   double          rhoLB = 0.0;
-//   double          nuLB = 0.005;
-//
-//   //geometry definition
-//
-//   //simulation bounding box
-//   double g_minX1 = 0.0;
-//   double g_minX2 = -5.0;
-//   double g_minX3 = -5.0;
-//
-//   double g_maxX1 = 30;
-//   double g_maxX2 = 5;
-//   double g_maxX3 = 5;
-//
-//   SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-//   if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-//
-//   //walls
-//   GbCuboid3DPtr addWallYmin(new GbCuboid3D(g_minX1-2.0*deltax, g_minX2-2.0*deltax, g_minX3-2.0*deltax, g_maxX1+2.0*deltax, g_minX2, g_maxX3+2.0*deltax));
-//   if (myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-//
-//   GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1-2.0*deltax, g_maxX2, g_minX3-2.0*deltax, g_maxX1+2.0*deltax, g_maxX2+2.0*deltax, g_maxX3+2.0*deltax));
-//   if (myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-//
-//   //inflow
-//   GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-2.0*deltax, g_minX2-2.0*deltax, g_minX3-2.0*deltax, g_minX1, g_maxX2+2.0*deltax, g_maxX3+2.0*deltax));
-//   if (myid==0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-//
-//   //outflow
-//   GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-2.0*deltax, g_minX3-2.0*deltax, g_maxX1+2.0*deltax, g_maxX2+2.0*deltax, g_maxX3+2.0*deltax));
-//   if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-//
-//   if (myid == 0)
-//   {
-//      UBLOG(logINFO, "rhoLB = " << rhoLB);
-//      UBLOG(logINFO, "nuLB = " << nuLB);
-//      UBLOG(logINFO, "deltaX = " << deltax);
-//      UBLOG(logINFO, "Preprocess - start");
-//   }
-//
-//   //Grid definition
-//   SPtr<Grid3D> grid(new Grid3D(comm));
-//   grid->setDeltaX(deltax);
-//   grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-//   grid->setPeriodicX1(false);
-//   grid->setPeriodicX2(false);
-//   grid->setPeriodicX3(true);
-//
-//   if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-//
-//   //blocks generating
-//   GenBlocksGridVisitor genBlocks(gridCube);
-//   grid->accept(genBlocks);
-//
-//   //boundary conditions definition 
-//   //boundary conditions adapters
-//   //////////////////////////////////////////////////////////////////////////////
-//   SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-//   noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-//   SPtr<BCAdapter> denInflowBCAdapter(new DensityBCAdapter(rhoLBInflow));
-//   denInflowBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-//   SPtr<BCAdapter> denOutflowBCAdapter(new DensityBCAdapter(rhoLB));
-//   denOutflowBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-//
-//   //BC visitor
-//   BoundaryConditionsBlockVisitor bcVisitor;
-//   bcVisitor.addBC(noSlipBCAdapter);
-//   bcVisitor.addBC(denInflowBCAdapter);
-//   //////////////////////////////////////////////////////////////////////////////////
-//
-//   //set boundary conditions for blocks and create process decomposition for MPI
-//   //walls
-//   SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-//   SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-//   //inflow
-//   SPtr<D3Q27Interactor> inflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, denInflowBCAdapter, Interactor3D::SOLID));
-//   //outflow
-//   SPtr<D3Q27Interactor> outflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denOutflowBCAdapter, Interactor3D::SOLID));
-//
-//   SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-//   InteractorsHelper intHelper(grid, metisVisitor);
-//   intHelper.addInteractor(addWallYminInt);
-//   intHelper.addInteractor(addWallYmaxInt);
-//   intHelper.addInteractor(inflowInt);
-//   intHelper.addInteractor(outflowInt);
-//   intHelper.selectBlocks();
-//
-//   //write data for visualization of block grid
-//   WriteBlocksSPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-//   ppblocks->process(0);
-//   ppblocks.reset();
-//
-//   unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-//   int ghostLayer = 3;
-//   unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-//   unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-//   unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-//   double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-//   double needMem = needMemAll / double(comm->getNumberOfProcesses());
-//
-//   if (myid == 0)
-//   {
-//      UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-//      UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-//      int minInitLevel = grid->getCoarsestInitializedLevel();
-//      int maxInitLevel = grid->getFinestInitializedLevel();
-//      for (int level = minInitLevel; level <= maxInitLevel; level++)
-//      {
-//         int nobl = grid->getNumberOfBlocks(level);
-//         UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-//         UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-//      }
-//      UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-//      UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-//      UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-//   }
-//
-//   //LBM kernel definition
-//   SPtr<LBMKernel> kernel;
-//   kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], IncompressibleCumulantLBMKernel::NORMAL));
-//   SPtr<BCProcessor> bcProc(new BCProcessor());
-//   kernel->setBCProcessor(bcProc);
-//
-//   //create LBM kernel
-//   SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-//   grid->accept(kernelVisitor);
-//
-//   //set boundary conditions for nodes
-//   intHelper.setBC();
-//   grid->accept(bcVisitor);
-//
-//   //initialization of distributions
-//   InitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-//   grid->accept(initVisitor);
-//
-//   //set connectors
-//   InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-//   SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-//   grid->accept(setConnsVisitor);
-//
-//   //domain decomposition for threads
-//   PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-//   grid->accept(pqPartVisitor);
-//
-//   //write data for visualization of boundary conditions
-//   SPtr<UbScheduler> geoSch(new UbScheduler(1));
-//   WriteBoundaryConditionsSPtr<CoProcessor> ppgeo(
-//      new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
-//   ppgeo->process(0);
-//   ppgeo.reset();
-//   
-//   if (myid == 0) UBLOG(logINFO, "Preprocess - end");
-//
-//   //write data for visualization of macroscopic quantities
-//   SPtr<UbScheduler> visSch(new UbScheduler(outTime));
-//   WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm);
-//
-//   //performance control
-//   SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-//   NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-//
-//   //start solver
-//   CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-//   if (myid == 0) UBLOG(logINFO, "Simulation-start");
-//   calculation->calculate();
-//   if (myid == 0) UBLOG(logINFO, "Simulation-end");
-//}
-//
-//
diff --git a/apps/cpu/Thermoplast/CMakeLists.txt b/apps/cpu/Thermoplast/CMakeLists.txt
deleted file mode 100644
index 5624b03136a7c901d1fe69fa224464104d3a08a6..0000000000000000000000000000000000000000
--- a/apps/cpu/Thermoplast/CMakeLists.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(thermoplast)
-IF(${USE_DEM_COUPLING})
-	INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-	INCLUDE(${SOURCE_ROOT}/DemCoupling/IncludsList.cmake)
-
-	#################################################################
-	###   LOCAL FILES                                             ###
-	#################################################################
-	FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-							 ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-							 ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
-	 
-	SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-	SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-	  
-	SET(CAB_ADDITIONAL_LINK_LIBRARIES ${CAB_ADDITIONAL_LINK_LIBRARIES} VirtualFluids)
-	
-	#message("CAB_ADDITIONAL_LINK_LIBRARIES: " ${CAB_ADDITIONAL_LINK_LIBRARIES})
-
-	#################################################################
-	###   CREATE PROJECT                                          ###
-	#################################################################
-	CREATE_CAB_PROJECT(thermoplast BINARY)
-ENDIF()
\ No newline at end of file
diff --git a/apps/cpu/Thermoplast/config.txt b/apps/cpu/Thermoplast/config.txt
deleted file mode 100644
index 18e7e7ea896acdc20527de1d6af9154fbac16e6b..0000000000000000000000000000000000000000
--- a/apps/cpu/Thermoplast/config.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-#simulation parameters
-
-#x1min x2min x3min x1max x2max x3max
-#boundingBox = 0 0 0 300 1520 2320
-
-#boundingBox = 60 1370 130 190 1530 320 #test bb
-
-boundingBox = 60 20 130 190 170 320 #test bb
-
-#boundingBox = 60 0 10 190 1530 750 #test bb 2
-
-#boundingBox = 60 0 10 190 1530 2320  #production bb
- 
-blocknx = 10 10 10 
-#blocknx = 300 420 320
-availMem = 25e9
-#uLB = 0.1
-uLB = 0.03
-Re = 300
-
-#PE parameters
-#test pe offset
-peMinOffset = 46 2 2
-peMaxOffset = -8 -25 -2
-
-#production pe offset
-#peMinOffset = 46 18 14
-#peMaxOffset = -8 -25 -23
-
-sphereTime = 10
-
-#geometry files
-pathGeo = d:/Projects/ThermoPlast/SimPerfMS
-michel = /Werkzeug_Michel_MS.stl
-plexiglas = /plexiglas.stl
-
-#obstacle
-obstacle = true
-obstacleGeo1 = /QuaderMS.stl #/DreieckMS_2.stl # DreieckSchoen.iges.stl #/QuaderMS.stl
-obstacleGeo2 = /KugelMS_2.stl
-obstacleGeo3 = /DreieckMS.stl
-
-pathOut = g:/temp/thermoplastObst
-
-logToFile = false
-
-#restart
-restart = false
-restartStep = 1000
-
-#timing
-nupsTime = 100 100 1000000
-cpStart = 1000
-cpStep =  1000
-outTime = 1000
-endTime = 100000
-
diff --git a/apps/cpu/Thermoplast/thermoplast.cpp b/apps/cpu/Thermoplast/thermoplast.cpp
deleted file mode 100644
index b14f4f83c129a1c54dfdab226a258486d607f1b5..0000000000000000000000000000000000000000
--- a/apps/cpu/Thermoplast/thermoplast.cpp
+++ /dev/null
@@ -1,763 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "PointerDefinitions.h"
-
-#include <iostream>
-#include <string>
-#include <memory>
-#include <array>
-
-#include "VirtualFluids.h"
-#include <MuParser/include/muParser.h>
-#include "ForceCalculator.h"
-
-
-#include <MovableObjectInteractor.h>
-#include <DemCoProcessor.h>
-#include <PePartitioningGridVisitor.h>
-
-#include <PePhysicsEngineMaterialAdapter.h>
-#include <PePhysicsEngineGeometryAdapter.h>
-#include <PePhysicsEngineSolverAdapter.h>
-#include "PeLoadBalancerAdapter.h"
-
-#include <VelocityBcReconstructor.h>
-#include <EquilibriumReconstructor.h>
-#include <ExtrapolationReconstructor.h>
-
-#include <DummyPhysicsEngineSolverAdapter.h>
-#include <DummyPhysicsEngineMaterialAdapter.h>
-#include <DummyPhysicsEngineGeometryAdapter.h>
-#include <WriteDemObjectsCoProcessor.h>
-#include <WritePeBlocksCoProcessor.h>
-
-#include "CreateDemObjectsCoProcessor.h"
-#include "RestartDemObjectsCoProcessor.h"
-
-using namespace std;
-
-//simulation bounding box
-double g_minX1 = 0;
-double g_minX2 = 0;
-double g_minX3 = 0;
-
-double g_maxX1 = 0;
-double g_maxX2 = 0;
-double g_maxX3 = 0;
-
-vector<double> peMinOffset;
-vector<double> peMaxOffset;
-
-string          pathOut;// = "d:/temp/thermoplastCluster";
-string          pathGeo;// = "d:/Projects/ThermoPlast/Geometrie";
-
-void addNozzle(SPtr<Grid3D> grid, SPtr<Communicator> comm, SPtr<BCAdapter> noSlipBCAdapter/*, InteractorsHelper& intHelper*/)
-{
-   int myid = comm->getProcessID();
-   if (myid==0) UBLOG(logINFO, "Add nozzles:start");
-
-   SPtr<UbScheduler> sch(new UbScheduler(1));
-   WriteGbObjectsCoProcessor gbObjectsCoProcessor(grid, sch, pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-
-   std::vector< SPtr<Interactor3D> > interactors;
-
-   for (int i = 0; i <= 55; i++)
-   {
-      SPtr<GbTriFaceMesh3D> bbGeo = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/n_bb_new/bb_new"+UbSystem::toString(i)+".stl", "bb", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-      SPtr<Interactor3D> bbInt = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(bbGeo, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-      //GbSystem3D::writeGeoObject(bbGeo.get(), pathOut+"/ns/bbGeo"+UbSystem::toString(i), WbWriterVtkXmlBinary::getInstance());
-      //intHelper.addInteractor(bbInt);
-      if (myid==0) gbObjectsCoProcessor.addGbObject(bbGeo);
-      interactors.push_back(bbInt);
-   }
-
-   for (int i = 0; i <= 334; i++)
-   {
-      SPtr<GbTriFaceMesh3D> bbGeo = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/n_bb/bb"+UbSystem::toString(i)+".stl", "bb", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-      SPtr<Interactor3D> bbInt = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(bbGeo, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-      //GbSystem3D::writeGeoObject(bbGeo.get(), pathOut+"/ns/bbGeo"+UbSystem::toString(i), WbWriterVtkXmlBinary::getInstance());
-      //intHelper.addInteractor(bbInt);
-      if (myid==0) gbObjectsCoProcessor.addGbObject(bbGeo);
-      interactors.push_back(bbInt);
-   }
-
-   for (int i = 0; i <= 51; i++)
-   {
-      SPtr<GbTriFaceMesh3D> bsGeo = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/n_bs/bs"+UbSystem::toString(i)+".stl", "bs", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-      SPtr<Interactor3D> bsInt = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(bsGeo, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-      //intHelper.addInteractor(bsInt);
-      if (myid==0) gbObjectsCoProcessor.addGbObject(bsGeo);
-      interactors.push_back(bsInt);
-   }
-
-   std::array<int, 6> n ={ 0,1,3,4,6,7 };
-
-   for (int i = 0; i < n.size(); i++)
-   {
-      SPtr<GbTriFaceMesh3D> biGeo = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/n_bi/bi"+UbSystem::toString(n[i])+".stl", "bi", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-      SPtr<Interactor3D> biInt = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(biGeo, grid, noSlipBCAdapter, Interactor3D::SOLID, Interactor3D::EDGES));
-      //intHelper.addInteractor(biInt);
-      if (myid==0) gbObjectsCoProcessor.addGbObject(biGeo);
-      interactors.push_back(biInt);
-   }
-
-   if (myid==0) gbObjectsCoProcessor.process(0);
-
-
-   for (SPtr<Interactor3D> interactor : interactors)
-   {
-      std::vector< std::shared_ptr<Block3D> > blockVector;
-      UbTupleInt3 blockNX=grid->getBlockNX();
-      SPtr<GbObject3D> geoObject(interactor->getGbObject3D());
-      double ext = 0.0;
-      std::array<double, 6> AABB ={ geoObject->getX1Minimum(),geoObject->getX2Minimum(),geoObject->getX3Minimum(),geoObject->getX1Maximum(),geoObject->getX2Maximum(),geoObject->getX3Maximum() };
-      grid->getBlocksByCuboid(AABB[0]-(double)val<1>(blockNX)*ext, AABB[1]-(double)val<2>(blockNX)*ext, AABB[2]-(double)val<3>(blockNX)*ext, AABB[3]+(double)val<1>(blockNX)*ext, AABB[4]+(double)val<2>(blockNX)*ext, AABB[5]+(double)val<3>(blockNX)*ext, blockVector);
-      for (std::shared_ptr<Block3D> block : blockVector)
-      {
-         if (block->getKernel())
-         {
-            interactor->setBCBlock(block);
-         }
-      }
-      interactor->initInteractor();
-   }
-
-   if (myid==0) UBLOG(logINFO, "Add nozzles:end");
-}
-
-std::shared_ptr<DemCoProcessor> makePeCoProcessor(SPtr<Grid3D> grid, SPtr<Communicator> comm, const SPtr<UbScheduler> peScheduler, const std::shared_ptr<LBMUnitConverter> lbmUnitConverter, int maxpeIterations)
-{
-   double peRelaxtion = 0.7;
-   //int maxpeIterations = 10000;
-   //Beschleunigung g
-   double g = 9.81 * lbmUnitConverter->getFactorAccWToLb();
-   //Vector3D globalLinearAcc(0.0, -g, 0.0);
-   //Vector3D globalLinearAcc(0.0, 0.0, -g);
-   Vector3D globalLinearAcc(0.0, 0.0, 0.0);
-
-   std::shared_ptr<PePhysicsEngineMaterialAdapter> planeMaterial = std::make_shared<PePhysicsEngineMaterialAdapter>("granular", 1.0, 0, 0.1 / 2, 0.1 / 2, 0.5, 1, 1, 0, 0);
-
-   const int gridNX1 = val<1>(grid->getBlockNX()) * grid->getNX1();
-   const int gridNX2 = val<2>(grid->getBlockNX()) * grid->getNX2();
-   const int gridNX3 = val<3>(grid->getBlockNX()) * grid->getNX3();
-
-   //UbTupleInt3 simulationDomain(gridNx, gridNy, gridNz);
-   //std::array<double, 6> simulationDomain = {1, 1, 1, 30, 30, 30};
-   std::array<double, 6> simulationDomain ={ g_minX1, g_minX2, g_minX3, g_minX1+gridNX1, g_minX2+gridNX2, g_minX3+gridNX3 };
-   UbTupleInt3 numberOfBlocks(grid->getNX1(), grid->getNX2(), grid->getNX3());
-   //UbTupleInt3 numberOfBlocks((simulationDomain[3]-simulationDomain[0])/val<1>(grid->getBlockNX()), (simulationDomain[4]-simulationDomain[1])/val<2>(grid->getBlockNX()), (simulationDomain[5]-simulationDomain[2])/val<3>(grid->getBlockNX()));
-   UbTupleBool3 isPeriodic(grid->isPeriodicX1(), grid->isPeriodicX2(), grid->isPeriodicX3());
-   Vector3D minOffset(peMinOffset[0], peMinOffset[1], peMinOffset[2]);
-   Vector3D maxOffset(peMaxOffset[0], peMaxOffset[1], peMaxOffset[2]);
-
-   SPtr<GbObject3D> boxPE(new GbCuboid3D(simulationDomain[0]+minOffset[0], simulationDomain[1]+minOffset[1], simulationDomain[2]+minOffset[2], simulationDomain[3]+maxOffset[0], simulationDomain[4]+maxOffset[1], simulationDomain[5]+maxOffset[2]));
-   GbSystem3D::writeGeoObject(boxPE.get(), pathOut + "/geo/boxPE", WbWriterVtkXmlBinary::getInstance());
-
-   std::shared_ptr<PeParameter> peParamter = std::make_shared<PeParameter>(peRelaxtion, maxpeIterations, globalLinearAcc,
-      planeMaterial, simulationDomain, numberOfBlocks, isPeriodic, minOffset, maxOffset);
-   std::shared_ptr<PeLoadBalancerAdapter> loadBalancer(new PeLoadBalancerAdapter(grid, comm->getNumberOfProcesses(), comm->getProcessID()));
-   std::shared_ptr<PhysicsEngineSolverAdapter> peSolver = std::make_shared<PePhysicsEngineSolverAdapter>(peParamter, loadBalancer);
-   //create obstacle
-   //test
-   std::dynamic_pointer_cast<PePhysicsEngineSolverAdapter>(peSolver)->createObstacle(Vector3D( 90, 260, 472), Vector3D( 115, 320, 460));
-   //production
-   //std::dynamic_pointer_cast<PePhysicsEngineSolverAdapter>(peSolver)->createObstacle(Vector3D( 90, 430, 472), Vector3D( 115, 320, 460));
-   //std::dynamic_pointer_cast<PePhysicsEngineSolverAdapter>(peSolver)->createObstacle(Vector3D( 100, 430, 1840), Vector3D( 130, 320, 470));
-   //std::dynamic_pointer_cast<PePhysicsEngineSolverAdapter>(peSolver)->createObstacle(Vector3D( 100, 821, 1159), Vector3D( 125, 625, 625));
-   //walberla::pe::createSphere(*globalBodyStorage, *forest, *storageId, 0, walberla::pe::Vec3( -720, 820, 1150), 900, global, communicating, infiniteMass);
-   //walberla::pe::createSphere(*globalBodyStorage, *forest, *storageId, 0, walberla::pe::Vec3( -720, 220, 472), 900, material, global, communicating, infiniteMass);
-
-   SPtr<CoProcessor> peblocks(new WritePeBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm, std::dynamic_pointer_cast<PePhysicsEngineSolverAdapter>(peSolver)->getBlockForest()));
-   peblocks->process(0);
-   peblocks.reset();
-
-   const std::shared_ptr<ForceCalculator> forceCalculator = std::make_shared<ForceCalculator>(comm);
-
-   return std::make_shared<DemCoProcessor>(grid, peScheduler, comm, forceCalculator, peSolver);
-}
-
-void createSpheres(double radius, Vector3D origin, int maxX2, int maxX3, double uLB, SPtr<CreateDemObjectsCoProcessor> createSphereCoProcessor)
-{
-   double d = 2.0*radius;
-   double dividerX2 = (double)maxX2/2.0;
-   double dividerX3 = (double)maxX3/2.0;
-   for (int x3 = 0; x3 < maxX3; x3++)
-      for (int x2 = 0; x2 < maxX2; x2++)
-         //for (int x1 = 0; x1 < 1; x1++)
-      {
-         //SPtr<GbObject3D> sphere(new GbSphere3D(origin[0]+2.0*d*(double)x1, origin[1]+(double)x2*1.0*d, origin[2]+(double)x3*1.0*d, radius));
-         SPtr<GbObject3D> sphere(new GbSphere3D(origin[0]+2.0*d, origin[1]+(double)x2*1.0*d, origin[2]+(double)x3*1.0*d, radius));
-         createSphereCoProcessor->addGeoObject(sphere, Vector3D(uLB, -uLB+uLB/dividerX2*(double)x2, -uLB+uLB/dividerX3*(double)x3));
-      }
-}
-
-void thermoplast(string configname)
-{
-   SPtr<Communicator> comm = MPICommunicator::getInstance();
-   int myid = comm->getProcessID();
-
-   ConfigurationFile   config;
-   config.load(configname);
-
-   vector<int>     blocknx = config.getVector<int>("blocknx");
-   vector<double>  boundingBox = config.getVector<double>("boundingBox");
-
-   int             endTime = config.getValue<int>("endTime");
-   double          outTime = config.getValue<double>("outTime");
-   double          availMem = config.getValue<double>("availMem");
-   double          uLB = config.getValue<double>("uLB");
-   double          Re = config.getValue<double>("Re");
-
-   string          michel = config.getValue<string>("michel");
-   string          plexiglas = config.getValue<string>("plexiglas");
-   double          sphereTime = config.getValue<double>("sphereTime");
-
-   double          cpStart = config.getValue<double>("cpStart");
-   double          cpStep = config.getValue<double>("cpStep");
-   bool            restart = config.getValue<bool>("restart");
-   int             restartStep = config.getValue<int>("restartStep");
-
-   peMinOffset = config.getVector<double>("peMinOffset");
-   peMaxOffset = config.getVector<double>("peMaxOffset");
-
-   pathOut = config.getValue<string>("pathOut");
-   pathGeo = config.getValue<string>("pathGeo");
-
-   vector<int>     nupsTime = config.getVector<int>("nupsTime");
-
-   bool            logToFile = config.getValue<bool>("logToFile");
-   if (logToFile)
-   {
-#if defined(__unix__)
-      if (myid==0)
-      {
-         const char* str = pathOut.c_str();
-         mkdir(str, S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH);
-      }
-#endif 
-
-      if (myid==0)
-      {
-         stringstream logFilename;
-         logFilename<<pathOut+"/logfile"+UbSystem::getTimeStamp()+".txt";
-         UbLog::output_policy::setStream(logFilename.str());
-      }
-   }
-
-   bool obstacle = config.getValue<bool>("obstacle");
-   string obstacleGeo1 = config.getValue<string>("obstacleGeo1");
-   string obstacleGeo2 = config.getValue<string>("obstacleGeo2");
-   string obstacleGeo3 = config.getValue<string>("obstacleGeo3");
-
-   if (myid==0) UBLOG(logINFO, "BEGIN LOGGING - " << UbSystem::getTimeStamp());
-
-   //parameters
-   //string          pathOut = "d:/temp/thermoplast3";
-   //string          pathGeo = "d:/Projects/ThermoPlast/Geometrie";
-   int             numOfThreads = 1;
-   //int             blocknx[3] ={ 10,10,10 };
-   //double          endTime = 1000000;
-   //double          outTime = 300;
-   //double          availMem = 8e9;
-   double          deltax = 1;
-   double          rhoLB = 0.0;
-   //double          uLB =  0.1;
-   double          radiusLB = 7.5;
-   double          radiusWorld = 1.5e-3;
-   //double          nuLB = 0.000333333;
-   //double          Re = (uLB*2.0*radiusLB)/nuLB;
-   //double          Re = 900;
-   double          nuLB = (uLB*2.0*radiusLB)/Re;
-
-   //geometry definition
-
-   //simulation bounding box
-   g_minX1 = boundingBox[0];
-   g_minX2 = boundingBox[1];
-   g_minX3 = boundingBox[2];
-
-   g_maxX1 = boundingBox[3];
-   g_maxX2 = boundingBox[4];
-   g_maxX3 = boundingBox[5];
-
-   double blockLength = blocknx[0]*deltax;
-
-   //Grid definition
-   SPtr<Grid3D> grid(new Grid3D(comm));
-   grid->setDeltaX(deltax);
-   grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-   grid->setPeriodicX1(false);
-   grid->setPeriodicX2(false);
-   grid->setPeriodicX3(false);
-
-   //boundary conditions definition 
-   //////////////////////////////////////////////////////////////////////////////
-   SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-   //noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-   noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new ThinWallNoSlipBCAlgorithm()));
-
-   mu::Parser fct;
-   fct.SetExpr("U");
-   fct.DefineConst("U", uLB);
-   SPtr<BCAdapter> inflowAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-   inflowAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityBCAlgorithm()));
-   //inflowAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityWithDensityBCAlgorithm()));
-
-   SPtr<BCAdapter> outflowAdapter(new DensityBCAdapter(rhoLB));
-   outflowAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new EqDensityBCAlgorithm()));
-   //outflowAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-   //outflowAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingOutflowBCAlgorithm()));
-
-   //sphere BC
-   mu::Parser fct2;
-   fct2.SetExpr("U");
-   fct2.DefineConst("U", 0.0);
-   SPtr<BCAdapter> velocityBcParticleAdapter(new VelocityBCAdapter(true, false, false, fct2, 0, BCFunction::INFCONST));
-   velocityBcParticleAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityWithDensityBCAlgorithm()));
-
-   //boundary conditions visitor
-   SPtr<BoundaryConditionsBlockVisitor> bcVisitor(new BoundaryConditionsBlockVisitor());
-   bcVisitor->addBC(noSlipBCAdapter);
-   bcVisitor->addBC(inflowAdapter);
-   bcVisitor->addBC(outflowAdapter);
-   bcVisitor->addBC(velocityBcParticleAdapter);
-   //////////////////////////////////////////////////////////////////////////////////
-
-   //LBM kernel definition
-   SPtr<LBMKernel> kernel;
-   kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel());
-   //SPtr<BCProcessor> bcProc(new BCProcessor());
-   SPtr<BCProcessor> bcProc(new ThinWallBCProcessor());
-   kernel->setBCProcessor(bcProc);
-
-   //if (myid==0) UBLOG(logINFO, "Read obstacleGeo1:start");
-   //SPtr<GbTriFaceMesh3D> obstacleGeo1geo = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+obstacleGeo1, "michelGeo", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-   //if (myid==0) UBLOG(logINFO, "Read obstacleGeo1:end");
-   //if (myid==0) GbSystem3D::writeGeoObject(obstacleGeo1geo.get(), pathOut+"/geo/obstacleGeo1", WbWriterVtkXmlBinary::getInstance());
-   //g_minX1 = obstacleGeo1geo->getX1Minimum();
-   //g_minX2 = obstacleGeo1geo->getX2Minimum();
-   //g_minX3 = obstacleGeo1geo->getX3Minimum();
-   //g_maxX1 = obstacleGeo1geo->getX1Maximum();
-   //g_maxX2 = obstacleGeo1geo->getX2Maximum();
-   //g_maxX3 = obstacleGeo1geo->getX3Maximum();
-
-
-
-   //blocks generating
-   SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-   if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathOut + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-   GenBlocksGridVisitor genBlocks(gridCube);
-   grid->accept(genBlocks);
-
-
-   //{
-     //SPtr<Interactor3D> obstacleGeo1int = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(obstacleGeo1geo, grid, noSlipBCAdapter, Interactor3D::SOLID));
-     //SPtr<Grid3DVisitor> peVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-      //InteractorsHelper intHelper(grid, peVisitor, true);
-     //intHelper.addInteractor(obstacleGeo1int);
-     //intHelper.selectBlocks();
-
-     ////create LBM kernel
-      ////SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, 1);
-      ////grid->accept(kernelVisitor);
-
-      ////SPtr<Interactor3D> obstacleGeo1int = SPtr<D3Q27Interactor>(new D3Q27Interactor(obstacleGeo1geo, grid, noSlipBCAdapter, Interactor3D::SOLID));
-      ////UBLOG(logINFO, "Obst: start");
-      ////std::vector< std::shared_ptr<Block3D> > blockVector;
-      ////UbTupleInt3 blockNX=grid->getBlockNX();
-      ////SPtr<GbObject3D> geoObject(obstacleGeo1int->getGbObject3D());
-      ////double ext = 0.0;
-      ////std::array<double, 6> AABB ={ geoObject->getX1Minimum(),geoObject->getX2Minimum(),geoObject->getX3Minimum(),geoObject->getX1Maximum(),geoObject->getX2Maximum(),geoObject->getX3Maximum() };
-      ////grid->getBlocksByCuboid(AABB[0]-(double)val<1>(blockNX)*ext, AABB[1]-(double)val<2>(blockNX)*ext, AABB[2]-(double)val<3>(blockNX)*ext, AABB[3]+(double)val<1>(blockNX)*ext, AABB[4]+(double)val<2>(blockNX)*ext, AABB[5]+(double)val<3>(blockNX)*ext, blockVector);
-      ////for (std::shared_ptr<Block3D> block : blockVector)
-      ////{
-         ////if (block->getKernel())
-         ////{
-            ////obstacleGeo1int->setBCBlock(block);
-         ////}
-      ////}
-      ////UBLOG(logINFO, "Obst: select blocks");
-      ////obstacleGeo1int->initInteractor();
-      ////UBLOG(logINFO, "Obst: end");
-
-      //SPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm));
-      //ppblocks->process(0);
-      //ppblocks.reset();
-   //}
-
-   //return;
-
-
-   /////////////////////////////////////////////////////
-   ////PE domain test
-   //std::array<double, 6> simulationDomain ={ g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3 };
-   //Vector3D minOffset(peMinOffset[0], peMinOffset[1], peMinOffset[2]);
-   //Vector3D maxOffset(peMaxOffset[0], peMaxOffset[1], peMaxOffset[2]);
-   //SPtr<GbObject3D> boxPE(new GbCuboid3D(simulationDomain[0]+minOffset[0], simulationDomain[1]+minOffset[1], simulationDomain[2]+minOffset[2], simulationDomain[3]+maxOffset[0], simulationDomain[4]+maxOffset[1], simulationDomain[5]+maxOffset[2]));
-   //GbSystem3D::writeGeoObject(boxPE.get(), pathOut + "/geo/boxPE", WbWriterVtkXmlBinary::getInstance());
-   //return;
-   //////////////////////////////////////////////////////
-
-
-   if (myid == 0)
-   {
-      UBLOG(logINFO, "Parameters:");
-      UBLOG(logINFO, "* uLB    = " << uLB);
-      UBLOG(logINFO, "* rhoLB  = " << rhoLB);
-      UBLOG(logINFO, "* nuLB   = " << nuLB);
-      UBLOG(logINFO, "* deltaX = " << deltax);
-      UBLOG(logINFO, "* radius = " << radiusLB);
-      UBLOG(logINFO, "* Re     = " << Re);
-      UBLOG(logINFO, "* number of threads   = "<<numOfThreads);
-      UBLOG(logINFO, "* number of processes = "<<comm->getNumberOfProcesses());
-      UBLOG(logINFO, "* path = "<<pathOut);
-      UBLOG(logINFO, "Preprocess - start");
-   }
-
-   //GbCuboid3DPtr geoInjector2(new GbCuboid3D(-12, -5, 1210, 64, 105, 1320));
-   //if (myid == 0) GbSystem3D::writeGeoObject(geoInjector2.get(), pathOut + "/geo/geoInjector2", WbWriterVtkXmlASCII::getInstance());
-
-   //GbCuboid3DPtr geoInjector5(new GbCuboid3D(-12, 1415, 205, 64, 1525, 315));
-   //if (myid == 0) GbSystem3D::writeGeoObject(geoInjector5.get(), pathOut + "/geo/geoInjector5", WbWriterVtkXmlASCII::getInstance());
-
-   GbCuboid3DPtr geoInjector4(new GbCuboid3D(-12, -5, 205, 64, 105, 315));
-   if (myid == 0) GbSystem3D::writeGeoObject(geoInjector4.get(), pathOut + "/geo/geoInjector4", WbWriterVtkXmlASCII::getInstance());
-
-   //GbCuboid3DPtr geoInjector7(new GbCuboid3D(28, 705, 542, 103, 815, 652));
-   //if (myid == 0) GbSystem3D::writeGeoObject(geoInjector7.get(), pathOut + "/geo/geoInjector7", WbWriterVtkXmlASCII::getInstance());
-
-   GbCuboid3DPtr testWallGeo(new GbCuboid3D(g_minX1-blockLength, g_minX2 - blockLength, g_maxX3, g_maxX1 + blockLength, g_maxX2 + blockLength, g_maxX3 + blockLength));
-   if (myid == 0) GbSystem3D::writeGeoObject(testWallGeo.get(), pathOut + "/geo/testWallGeo", WbWriterVtkXmlASCII::getInstance());
-
-   if (!restart)
-   {
-      //box
-      SPtr<GbObject3D> box(new GbCuboid3D(g_minX1-blockLength, g_minX2, g_minX3, g_maxX1+blockLength, g_maxX2, g_maxX3));
-      GbSystem3D::writeGeoObject(box.get(), pathOut + "/geo/box", WbWriterVtkXmlBinary::getInstance());
-
-      //michel
-      if (myid==0) UBLOG(logINFO, "Read michelGeo:start");
-      SPtr<GbTriFaceMesh3D> michelGeo = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+michel, "michelGeo", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-      if (myid==0) UBLOG(logINFO, "Read michelGeo:end");
-      if (myid==0) GbSystem3D::writeGeoObject(michelGeo.get(), pathOut+"/geo/michelGeo", WbWriterVtkXmlBinary::getInstance());
-
-      //plexiglas
-      if (myid==0) UBLOG(logINFO, "Read plexiglasGeo:start");
-      SPtr<GbTriFaceMesh3D> plexiglasGeo = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+plexiglas, "plexiglasGeo", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-      if (myid==0) UBLOG(logINFO, "Read plexiglasGeo:end");
-      if (myid==0) GbSystem3D::writeGeoObject(plexiglasGeo.get(), pathOut+"/geo/plexiglasGeo", WbWriterVtkXmlBinary::getInstance());
-
-      //inflow
-      GbCuboid3DPtr geoOutflowMichel(new GbCuboid3D(g_minX1-blockLength, g_minX2 - blockLength, g_minX3 - blockLength, g_minX1, g_maxX2 + blockLength, g_maxX3 + blockLength));
-      if (myid == 0) GbSystem3D::writeGeoObject(geoOutflowMichel.get(), pathOut + "/geo/geoOutflowMichel", WbWriterVtkXmlASCII::getInstance());
-
-      //outflow
-      GbCuboid3DPtr geoOutflowPlexiglas(new GbCuboid3D(g_maxX1, g_minX2 - blockLength, g_minX3 - blockLength, g_maxX1 + blockLength, g_maxX2 + blockLength, g_maxX3 + blockLength));
-      if (myid == 0) GbSystem3D::writeGeoObject(geoOutflowPlexiglas.get(), pathOut + "/geo/geoOutflowPlexiglas", WbWriterVtkXmlASCII::getInstance());
-
-      //set boundary conditions for blocks and create process decomposition for MPI
-      SPtr<D3Q27Interactor> boxInt(new D3Q27Interactor(box, grid, noSlipBCAdapter, Interactor3D::INVERSESOLID));
-
-      //inflow
-      //SPtr<D3Q27Interactor> inflowInjector2Int = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInjector2, grid, inflowAdapter, Interactor3D::SOLID));
-      //SPtr<D3Q27Interactor> inflowInjector5Int = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInjector5, grid, inflowAdapter, Interactor3D::SOLID));
-      SPtr<D3Q27Interactor> inflowInjector4Int = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInjector4, grid, inflowAdapter, Interactor3D::SOLID));
-      //SPtr<D3Q27Interactor> inflowInjector7Int = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInjector7, grid, inflowAdapter, Interactor3D::SOLID));
-
-      SPtr<D3Q27Interactor> outflowMichelInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflowMichel, grid, outflowAdapter, Interactor3D::SOLID));
-
-      //outflow
-      SPtr<D3Q27Interactor> outflowPlexiglasInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflowPlexiglas, grid, outflowAdapter, Interactor3D::SOLID));
-
-      //michel
-      SPtr<Interactor3D> michelInt = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(michelGeo, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-      //plexiglas
-      SPtr<Interactor3D> plexiglasInt = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(plexiglasGeo, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-      SPtr<D3Q27Interactor> testWallInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(testWallGeo, grid, inflowAdapter, Interactor3D::SOLID));
-
-      SPtr<Interactor3D> obstacleGeo1int, obstacleGeo2int, obstacleGeo3int;
-      if (obstacle)
-      {
-         //obstacleGeo1
-         if (myid==0) UBLOG(logINFO, "Read obstacleGeo1:start");
-         SPtr<GbTriFaceMesh3D> obstacleGeo1geo = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+obstacleGeo1, "michelGeo", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-         if (myid==0) UBLOG(logINFO, "Read obstacleGeo1:end");
-         if (myid==0) GbSystem3D::writeGeoObject(obstacleGeo1geo.get(), pathOut+"/geo/obstacleGeo1", WbWriterVtkXmlBinary::getInstance());
-         obstacleGeo1int = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(obstacleGeo1geo, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         //obstacleGeo2
-         if (myid==0) UBLOG(logINFO, "Read obstacleGeo2:start");
-         SPtr<GbTriFaceMesh3D> obstacleGeo2geo = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+obstacleGeo2, "michelGeo", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-         if (myid==0) UBLOG(logINFO, "Read obstacleGeo2:end");
-         if (myid==0) GbSystem3D::writeGeoObject(obstacleGeo2geo.get(), pathOut+"/geo/obstacleGeo2", WbWriterVtkXmlBinary::getInstance());
-         obstacleGeo2int = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(obstacleGeo2geo, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         //obstacleGeo3
-         if (myid==0) UBLOG(logINFO, "Read obstacleGeo3:start");
-         SPtr<GbTriFaceMesh3D> obstacleGeo3geo = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+obstacleGeo3, "michelGeo", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-         if (myid==0) UBLOG(logINFO, "Read obstacleGeo3:end");
-         if (myid==0) GbSystem3D::writeGeoObject(obstacleGeo3geo.get(), pathOut+"/geo/obstacleGeo3", WbWriterVtkXmlBinary::getInstance());
-         obstacleGeo3int = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(obstacleGeo3geo, grid, noSlipBCAdapter, Interactor3D::SOLID));
-      }
-
-      //////////////////////////////////////////////////////////////////////////
-      //SPtr<Grid3DVisitor> peVisitor(new PePartitioningGridVisitor(comm, demCoProcessor));
-      SPtr<Grid3DVisitor> peVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-      InteractorsHelper intHelper(grid, peVisitor, true);
-
-      //intHelper.addInteractor(obstacleGeo1int);
-
-      intHelper.addInteractor(boxInt);
-      intHelper.addInteractor(michelInt);
-      intHelper.addInteractor(plexiglasInt);
-      //intHelper.addInteractor(inflowInjector2Int);
-      //intHelper.addInteractor(inflowInjector5Int);
-      intHelper.addInteractor(inflowInjector4Int);
-      //intHelper.addInteractor(inflowInjector7Int);
-      intHelper.addInteractor(outflowPlexiglasInt);
-      intHelper.addInteractor(outflowMichelInt);
-      intHelper.addInteractor(obstacleGeo1int);
-      intHelper.addInteractor(obstacleGeo2int);
-      intHelper.addInteractor(obstacleGeo3int);
-      //intHelper.addInteractor(testWallInt);
-      intHelper.selectBlocks();
-
-      //write data for visualization of block grid
-      SPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm));
-      ppblocks->process(0);
-      ppblocks.reset();
-
-      unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-      int ghostLayer = 3;
-      unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-      unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-      unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-      double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-      double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-         UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-         int minInitLevel = grid->getCoarsestInitializedLevel();
-         int maxInitLevel = grid->getFinestInitializedLevel();
-         for (int level = minInitLevel; level <= maxInitLevel; level++)
-         {
-            int nobl = grid->getNumberOfBlocks(level);
-            UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-            UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-         }
-         UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-         UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-         UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-      }
-
-      //create LBM kernel
-      SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-      addNozzle(grid, comm, noSlipBCAdapter/*,intHelper*/);
-
-      intHelper.setBC();
-
-
-      ////////////////////////////////////////////////////////////////////////////////////////////////////
-      //{
-         ////UBLOG(logINFO, "Obst: start, rank="<<myid);
-            //std::vector< std::shared_ptr<Block3D> > blockVector;
-            //UbTupleInt3 blockNX=grid->getBlockNX();
-            //SPtr<GbObject3D> geoObject(obstacleGeo3int->getGbObject3D());
-            //double ext = 0.0;
-            //std::array<double, 6> AABB ={ geoObject->getX1Minimum(),geoObject->getX2Minimum(),geoObject->getX3Minimum(),geoObject->getX1Maximum(),geoObject->getX2Maximum(),geoObject->getX3Maximum() };
-            //grid->getBlocksByCuboid(AABB[0]-(double)val<1>(blockNX)*ext, AABB[1]-(double)val<2>(blockNX)*ext, AABB[2]-(double)val<3>(blockNX)*ext, AABB[3]+(double)val<1>(blockNX)*ext, AABB[4]+(double)val<2>(blockNX)*ext, AABB[5]+(double)val<3>(blockNX)*ext, blockVector);
-            //for (std::shared_ptr<Block3D> block : blockVector)
-            //{
-               //if (block->getKernel())
-               //{
-                  //obstacleGeo3int->setBCBlock(block);
-               //}
-            //}
-            //UBLOG(logINFO, "Obst: select blocks, number of blocks="<<blockVector.size()<<", rank="<<myid);
-            //obstacleGeo3int->initInteractor();
-            //UBLOG(logINFO, "Obst: end, rank="<<myid);
-      //}
-      //////////////////////////////////////////////////////////////////////////////////////////////////////
-            //initialization of distributions
-      InitDistributionsBlockVisitor initVisitor;
-      //initVisitor.setVx1(uLB);
-      grid->accept(initVisitor);
-
-      //write data for visualization of boundary conditions
-      {
-         //SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         //WriteBoundaryConditionsCoProcessor ppgeo(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-         //ppgeo.process(0);
-
-         //WriteMacroscopicQuantitiesCoProcessor ppInit(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm);
-         //ppInit.process(0);
-      }
-
-      if (myid == 0) UBLOG(logINFO, "Preprocess - end");
-   }
-   //restart
-   //UBLOG(logINFO, "restart definition - start, rank="<<myid);
-   SPtr<UbScheduler> restartSch(new UbScheduler(cpStep, cpStart));
-   //SPtr<MPIIORestartCoProcessor> restartCoProcessor(new MPIIORestartCoProcessor(grid, restartSch, pathOut, comm));
-   SPtr<MPIIOMigrationCoProcessor> restartCoProcessor(new MPIIOMigrationCoProcessor(grid, restartSch, pathOut, comm));
-   restartCoProcessor->setLBMKernel(kernel);
-   restartCoProcessor->setBCProcessor(bcProc);
-
-   if (restart)
-   {
-      //restartStep = restartCoProcessor->readCpTimeStep();
-      restartCoProcessor->restart(restartStep);
-   }
-
-   //PE initialization
-   double refLengthLb = radiusLB*2.0;
-   double refLengthWorld = radiusWorld*2.0;
-   const std::shared_ptr<LBMUnitConverter> lbmUnitConverter = std::make_shared<LBMUnitConverter>(refLengthWorld, LBMUnitConverter::WORLD_MATERIAL::AIR_20C, refLengthLb);
-   if (myid == 0) std::cout << lbmUnitConverter->toString() << std::endl;
-   double rhoSphere = 915 * lbmUnitConverter->getFactorDensityWToLb();  // kg/m^3
-   if (myid == 0) UBLOG(logINFO, "rhoSphere = "<<rhoSphere);
-   SPtr<PhysicsEngineMaterialAdapter> sphereMaterial(new PePhysicsEngineMaterialAdapter("Polypropylen", rhoSphere, 0, 0.15, 0.1, 0.45, 0.5, 1, 0, 0));
-   const int timestep = 2;
-   const SPtr<UbScheduler> peScheduler(new UbScheduler(timestep));
-   int maxpeIterations = 10;//endTime/2;
-   SPtr<DemCoProcessor> demCoProcessor = makePeCoProcessor(grid, comm, peScheduler, lbmUnitConverter, maxpeIterations);
-   demCoProcessor->setBlockVisitor(bcVisitor);
-
-   ////////////////////////////////////////////////////////////////////////////
-   ////generating spheres 
-   //UBLOG(logINFO, "generating spheres - start, rank="<<myid);
-   SPtr<UbScheduler> sphereScheduler(new UbScheduler(sphereTime/*10,10,10*/));
-   double toleranz = 0.0;//0.05;
-   SPtr<CreateDemObjectsCoProcessor> createSphereCoProcessor(new CreateDemObjectsCoProcessor(grid, sphereScheduler, comm, demCoProcessor, sphereMaterial, toleranz));
-   //UBLOG(logINFO, "generating spheres - stop, rank="<<myid);
-
-   ////restart
-   ////UBLOG(logINFO, "restart definition - start, rank="<<myid);
-   //SPtr<UbScheduler> restartSch(new UbScheduler(cpStep, cpStart));
-   ////SPtr<MPIIORestartCoProcessor> restartCoProcessor(new MPIIORestartCoProcessor(grid, restartSch, pathOut, comm));
-   //SPtr<MPIIOMigrationCoProcessor> restartCoProcessor(new MPIIOMigrationCoProcessor(grid, restartSch, pathOut, comm));
-   //restartCoProcessor->setLBMKernel(kernel);
-   //restartCoProcessor->setBCProcessor(bcProc);
-   SPtr<RestartDemObjectsCoProcessor> restartDemObjectsCoProcessor(new RestartDemObjectsCoProcessor(grid, restartSch, pathOut, demCoProcessor, createSphereCoProcessor, radiusLB, comm));
-   //UBLOG(logINFO, "restart definition - stop, rank="<<myid);
-
-   if (restart)
-   {
-      createSphereCoProcessor->setToleranz(0.05);
-      restartDemObjectsCoProcessor->restart(restartStep);
-      createSphereCoProcessor->setToleranz(toleranz);
-   }
-
-   //set connectors
-   //UBLOG(logINFO, "set connectors - start, rank="<<myid);
-   InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-   SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-   grid->accept(setConnsVisitor);
-   //UBLOG(logINFO, "set connectors - stop, rank="<<myid);
-
-   //BC visitor
-   //UBLOG(logINFO, "BC visitor - start, rank="<<myid);
-   grid->accept(*bcVisitor.get());
-   //UBLOG(logINFO, "BC visitor - stop, rank="<<myid);
-
-   //sphere prototypes
-   //UBLOG(logINFO, "sphere prototypes - start, rank="<<myid);
-   double d = 2.0*radiusLB;
-   int maxX2 = 5;
-   int maxX3 = 5;
-   //Vector3D origin1(g_minX1+peMinOffset[0]-1.5*d, geoInjector5->getX2Minimum()+1.4*d-6.0, geoInjector5->getX3Minimum()+1.5*d);
-   //createSpheres(radiusLB, origin1, maxX2, maxX3, uLB, createSphereCoProcessor);
-   //Vector3D origin2(g_minX1+peMinOffset[0]-1.5*d, geoInjector2->getX2Minimum()+2.2*d, geoInjector2->getX3Minimum()+1.5*d);
-   //createSpheres(radiusLB, origin2, maxX2, maxX3, uLB, createSphereCoProcessor);
-
-   Vector3D origin2(g_minX1+peMinOffset[0]-1.5*d, geoInjector4->getX2Minimum()+2.4*d, geoInjector4->getX3Minimum()+1.5*d);
-   createSpheres(radiusLB,origin2,maxX2,maxX3,uLB,createSphereCoProcessor);
-
-   //maxX2 = 7;
-   //maxX3 = 7;
-   //Vector3D origin3(g_minX1+peMinOffset[0]-1.5*d, geoInjector7->getX2Minimum()+0.5*d, geoInjector7->getX3Minimum()+0.5*d);
-   //createSpheres(radiusLB,origin3,maxX2,maxX3,uLB,createSphereCoProcessor);
-
-
-   createSphereCoProcessor->process(0);
-
-   //write data for visualization of macroscopic quantities
-   SPtr<UbScheduler> visSch(new UbScheduler(outTime));
-   SPtr<WriteMacroscopicQuantitiesCoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, visSch, pathOut,
-      WbWriterVtkXmlBinary::getInstance(), SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
-
-   SPtr<WriteBoundaryConditionsCoProcessor> writeBCCoProcessor(new WriteBoundaryConditionsCoProcessor(grid, visSch, pathOut,
-      WbWriterVtkXmlBinary::getInstance(), comm));
-
-   SPtr<WriteDemObjectsCoProcessor> writeDemObjectsCoProcessor(new WriteDemObjectsCoProcessor(grid, visSch, pathOut, WbWriterVtkXmlBinary::getInstance(), demCoProcessor, comm));
-
-   if (!restart)
-   {
-      writeMQCoProcessor->process(0);
-      writeBCCoProcessor->process(0);
-      writeDemObjectsCoProcessor->process(0);
-   }
-   ////performance control
-   SPtr<UbScheduler> nupsSch(new UbScheduler(nupsTime[0], nupsTime[1], nupsTime[2]));
-   SPtr<NUPSCounterCoProcessor> npr(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-   //start simulation 
-   //omp_set_num_threads(numOfThreads);
-   SPtr<UbScheduler> stepGhostLayer(peScheduler);
-   SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
-
-   calculator->addCoProcessor(npr);
-   calculator->addCoProcessor(createSphereCoProcessor);
-   calculator->addCoProcessor(demCoProcessor);
-   ////calculator->addCoProcessor(writeBCCoProcessor);
-   calculator->addCoProcessor(writeDemObjectsCoProcessor);
-   calculator->addCoProcessor(writeMQCoProcessor);
-   calculator->addCoProcessor(restartDemObjectsCoProcessor);
-   calculator->addCoProcessor(restartCoProcessor);
-
-   if (myid == 0) UBLOG(logINFO, "Simulation-start");
-   calculator->calculate();
-   if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   if (myid==0) UBLOG(logINFO, "END LOGGING - " << UbSystem::getTimeStamp());
-}
-
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   try
-   {
-      //Sleep(30000);
-      walberla::Environment env(argc, argv);
-
-      if (argv!=NULL)
-      {
-         //if (argv[1]!=NULL)
-         //{
-            //thermoplast(string("thermoplast.cfg"));
-         thermoplast(string("d:/Projects/VirtualFluidsGit/source/Applications/Thermoplast/config.txt"));
-         //}
-         //else
-         //{
-            //cout<<"Configuration file must be set!: "<<argv[0]<<" <config file>"<<endl<<std::flush;
-         //}
-      }
-      return 0;
-   }
-   catch (std::exception& e)
-   {
-      UBLOG(logERROR, e.what());
-   }
-   catch (std::string& s)
-   {
-      UBLOG(logERROR, s);
-   }
-   catch (...)
-   {
-      UBLOG(logERROR, "unknown exception");
-   }
-}
diff --git a/apps/cpu/VirtualFluids.h b/apps/cpu/VirtualFluids.h
index 2fd3321905ffdd14ba2860282b02e6e6bae9651c..360e0ec1d2a4141eabe7694ada015fe156be0468 100644
--- a/apps/cpu/VirtualFluids.h
+++ b/apps/cpu/VirtualFluids.h
@@ -1,91 +1,74 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  \
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 VirtualFluids.h
+//! \ingroup Applications
+//! \author Konstantin Kutscher
+//=======================================================================================
+
 #ifndef VirtualFluids_h__
 #define VirtualFluids_h__
 
 //VirtualFluids header files
- 
-#if defined VF_FETOL
-#define WIN32_LEAN_AND_MEAN
-#include <JM.h>
-#endif
 
 #ifdef _OPENMP
 #include <omp.h>
-#endif 
+#endif
 
-#include <basics/Core/PointerDefinitions.h>
+#include <PointerDefinitions.h>
 
 #include <MuParser/include/muParser.h>
-#include <MuParser/include/muParserBase.h>
-#include <MuParser/include/muParserBytecode.h>
-#include <MuParser/include/muParserCallback.h>
-#include <MuParser/include/muParserDef.h>
-#include <MuParser/include/muParserDLL.h>
-#include <MuParser/include/muParserError.h>
-#include <MuParser/include/muParserFixes.h>
-#include <MuParser/include/muParserInt.h>
-#include <MuParser/include/muParserStack.h>
-#include <MuParser/include/muParserTemplateMagic.h>
-#include <MuParser/include/muParserTest.h>
-#include <MuParser/include/muParserToken.h>
-#include <MuParser/include/muParserTokenReader.h>
+
 #include <basics/container/CbArray2D.h>
 #include <basics/container/CbArray3D.h>
 #include <basics/container/CbArray4D.h>
 #include <basics/container/CbVector.h>
-#include <basics/container/CbVectorPool.h>
-#include <basics/memory/MbMemPool.h>
-#include <basics/memory/MbSharedPointerDefines.h>
-#include <basics/memory/MbSmartPtr.h>
-#include <basics/memory/MbSmartPtrBase.h>
-#include <basics/objects/ObCreator.h>
-#include <basics/objects/ObFactory.h>
+
 #include <basics/objects/ObObject.h>
-#include <basics/objects/ObObjectCreator.h>
-#include <basics/objects/ObObjectFactory.h>
-#include <basics/objects/ObObjectManager.h>
-#include <basics/transmitter/TbTransmitter.h>
-#include <basics/transmitter/TbTransmitterLocal.h>
-#include <basics/transmitter/TbTransmitterMpiPool.h>
-#include <basics/utilities/UbAutoRun.hpp>
+
 #include <basics/utilities/UbComparators.h>
-#include <basics/utilities/UbConverter.h>
 #include <basics/utilities/UbEqual.h>
 #include <basics/utilities/UbException.h>
-#include <basics/utilities/UbFileInput.h>
-#include <basics/utilities/UbFileInputASCII.h>
-#include <basics/utilities/UbFileInputBinary.h>
-#include <basics/utilities/UbFileOutput.h>
-#include <basics/utilities/UbFileOutputASCII.h>
-#include <basics/utilities/UbFileOutputBinary.h>
 #include <basics/utilities/UbInfinity.h>
 #include <basics/utilities/UbKeys.h>
 #include <basics/utilities/UbLimits.h>
 #include <basics/utilities/UbLogger.h>
 #include <basics/utilities/UbMath.h>
-#include <basics/utilities/UbNupsTimer.h>
 #include <basics/utilities/UbObservable.h>
 #include <basics/utilities/UbObserver.h>
-#include <basics/utilities/UbPointerWrapper.h>
-#include <basics/utilities/UbRandom.h>
 #include <basics/utilities/UbScheduler.h>
-#include <basics/utilities/UbStaticPathMap.h>
-#include <basics/utilities/UbString.h>
-#include <basics/utilities/UbStringInputASCII.h>
 #include <basics/utilities/UbSystem.h>
-#include <basics/utilities/UbTableModel.h>
 #include <basics/utilities/UbTiming.h>
 #include <basics/utilities/UbTuple.h>
+
 #include <basics/writer/WbWriter.h>
-#include <basics/writer/WbWriterAvsASCII.h>
-#include <basics/writer/WbWriterAvsBinary.h>
-#include <basics/writer/WbWriterBOBJ.h>
-#include <basics/writer/WbWriterSunflow.h>
-#include <basics/writer/WbWriterTecPlotASCII.h>
-#include <basics/writer/WbWriterVtkASCII.h>
-#include <basics/writer/WbWriterVtkBinary.h>
 #include <basics/writer/WbWriterVtkXmlASCII.h>
 #include <basics/writer/WbWriterVtkXmlBinary.h>
-#include <basics/writer/WbWriterX3D.h>
 
 #include <BoundaryConditions/BCArray3D.h>
 #include <BoundaryConditions/BCProcessor.h>
@@ -93,44 +76,22 @@
 #include <BoundaryConditions/BCFunction.h>
 #include <BoundaryConditions/BoundaryConditions.h>
 #include <BoundaryConditions/BCAdapter.h>
-#include <BoundaryConditions/DensityBCAdapter.h>
 #include <BoundaryConditions/BCProcessor.h>
-#include <BoundaryConditions/ThinWallBCProcessor.h>
 #include <BoundaryConditions/NoSlipBCAdapter.h>
-#include <BoundaryConditions/SlipBCAdapter.h>
 #include <BoundaryConditions/VelocityBCAdapter.h>
 #include <BoundaryConditions/BCAlgorithm.h>
 #include <BoundaryConditions/VelocityBCAlgorithm.h>
-#include <BoundaryConditions/NonEqDensityBCAlgorithm.h>
-#include <BoundaryConditions/EqDensityBCAlgorithm.h>
 #include <BoundaryConditions/NoSlipBCAlgorithm.h>
-#include <BoundaryConditions/ThinWallNoSlipBCAlgorithm.h>
-#include <BoundaryConditions/HighViscosityNoSlipBCAlgorithm.h>
-#include <BoundaryConditions/SlipBCAlgorithm.h>
-#include <BoundaryConditions/NonReflectingOutflowBCAlgorithm.h>
-#include <BoundaryConditions/VelocityWithDensityBCAlgorithm.h>
 
 #include <Connectors/Block3DConnector.h>
-#include <Connectors/D3Q27ETCFOffVectorConnector.h>
-#include <Connectors/D3Q27ETFCOffVectorConnector.h>
 #include <Connectors/D3Q27ETFullDirectConnector.h>
-#include <Connectors/D3Q27ETFullVectorConnector.h>
 #include <Connectors/LocalBlock3DConnector.h>
-#include <Connectors/RemoteBlock3DConnector.h>
-#include <Connectors/CoarseToFineBlock3DConnector.h>
-#include <Connectors/CoarseToFineNodeSetBlock3DConnector.h>
-#include <Connectors/FineToCoarseBlock3DConnector.h>
-#include <Connectors/FineToCoarseNodeSetBlock3DConnector.h>
-#include <Connectors/ConnectorFactory.h>
-#include <Connectors/Block3DConnectorFactory.h>
 
 #include <Data/D3Q27EsoTwist3DSplittedVector.h>
-#include <Data/D3Q27EsoTwist3DSplittedVectorEx.h>
 #include <Data/DataSet3D.h>
 #include <Data/DistributionArray3D.h>
 #include <Data/EsoTwist3D.h>
 #include <Data/EsoTwistD3Q27System.h>
-#include <Data/VoidData3D.h>
 
 #include <Grid/Block3D.h>
 #include <Grid/Calculator.h>
@@ -139,168 +100,43 @@
 #include <Grid/Grid3DSystem.h>
 
 #include <Interactors/D3Q27Interactor.h>
-#include <Interactors/D3Q27TriFaceMeshInteractor.h>
 #include <Interactors/Interactor3D.h>
 #include <Interactors/InteractorsHelper.h>
 
 #include <CoProcessors/WriteBlocksCoProcessor.h>
-#include <CoProcessors/AdjustForcingCoProcessor.h>
-#include <CoProcessors/CalculateForcesCoProcessor.h>
 #include <CoProcessors/WriteMacroscopicQuantitiesCoProcessor.h>
-#include <CoProcessors/WriteMQFromSelectionCoProcessor.h>
 #include <CoProcessors/WriteBoundaryConditionsCoProcessor.h>
-//#include <CoProcessors/PathLineCoProcessor.h>
-//#include <CoProcessors/PathLineCoProcessorMcpart.h>
-#include <CoProcessors/PressureDifferenceCoProcessor.h>
-#include <CoProcessors/EmergencyExitCoProcessor.h>
 #include <CoProcessors/NUPSCounterCoProcessor.h>
-//#include <CoProcessors/Particles.h>
 #include <CoProcessors/CoProcessor.h>
-#include <CoProcessors/TurbulenceIntensityCoProcessor.h>
-#include <CoProcessors/AverageValuesCoProcessor.h>
-#include <CoProcessors/DecreaseViscosityCoProcessor.h>
-#include <CoProcessors/TimeseriesCoProcessor.h>
-#include <CoProcessors/ShearStressCoProcessor.h>
-#include <CoProcessors/QCriterionCoProcessor.h>
-#include <CoProcessors/InSituVTKCoProcessor.h>
-//#include <CoProcessors/MeanValuesCoProcessor.h>
-#include <CoProcessors/TimeAveragedValuesCoProcessor.h>
-#include <CoProcessors/InSituCatalystCoProcessor.h>
-#include <CoProcessors/MPIIORestartCoProcessor.h>
-#include <CoProcessors/MPIIOMigrationCoProcessor.h>
-#include <CoProcessors/MPIIOMigrationBECoProcessor.h>
-#include <CoProcessors/PressureCoefficientCoProcessor.h>
-#include <CoProcessors/LineTimeSeriesCoProcessor.h>
-#include <CoProcessors/MicrophoneArrayCoProcessor.h>
 
-#include <IntegrateValuesHelper.h>
-//#include <LBM/D3Q27CompactInterpolationProcessor.h>
-#include <LBM/IncompressibleOffsetInterpolationProcessor.h>
-#include <LBM/CompressibleOffsetInterpolationProcessor.h>
-#include <LBM/CompressibleOffsetMomentsInterpolationProcessor.h>
-#include <LBM/CompressibleOffsetSquarePressureInterpolationProcessor.h>
-#include <LBM/InterpolationHelper.h>
-#include <LBM/InterpolationProcessor.h>
-//#include <LBM/D3Q27OffsetInterpolationProcessor.h>
 #include <LBM/D3Q27System.h>
-#include <LBM/ICell.h>
-#include <LBM/InterpolationProcessor.h>
-#include <LBM/LBMKernel.h>
-#include <IncompressibleCumulantWithSpongeLayerLBMKernel.h>
 #include <LBM/LBMKernel.h>
-#include <LBM/IncompressibleCumulantLBMKernel.h>
-#include <LBM/CompressibleCumulantLBMKernel.h>
-#include <LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h>
-#include <LBM/InitDensityLBMKernel.h>
-#include <LBM/VoidLBMKernel.h>
+#include <LBM/ILBMKernel.h>
+#include <LBM/CumulantK17LBMKernel.h>
 #include <LBM/LBMSystem.h>
 #include <LBM/LBMUnitConverter.h>
-#include <LBM/LBMKernelETD3Q27BGK.h>
 
-#include <numerics/geometry3d/CoordinateTransformation3D.h>
-#include <numerics/geometry3d/GbCuboid3D.h>
-#include <numerics/geometry3d/GbCylinder3D.h>
-#include <numerics/geometry3d/GbHalfSpace3D.h>
-#include <numerics/geometry3d/GbHalfSpaceKrischan3D.h>
-#include <numerics/geometry3d/GbLine3D.h>
-#include <numerics/geometry3d/GbMeshTools3D.h>
-#include <numerics/geometry3d/GbObject3D.h>
-#include <numerics/geometry3d/GbObject3DManager.h>
-#include <numerics/geometry3d/GbObjectGroup3D.h>
-#include <numerics/geometry3d/GbPoint3D.h>
-#include <numerics/geometry3d/GbPolygon3D.h>
-#include <numerics/geometry3d/GbQuadFaceMesh3D.h>
-#include <numerics/geometry3d/GbSphere3D.h>
-#include <numerics/geometry3d/GbSystem3D.h>
-#include <numerics/geometry3d/GbTriangle3D.h>
-#include <numerics/geometry3d/GbTriangularMesh3D.h>
-#include <numerics/geometry3d/GbTriFaceMesh3D.h>
-#include <numerics/geometry3d/GbVector3D.h>
-#include <numerics/geometry3d/GbVoxelMatrix3D.h>
-#include <numerics/geometry3d/creator/GbCuboid3DCreator.h>
-#include <numerics/geometry3d/creator/GbCylinder3DCreator.h>
-#include <numerics/geometry3d/creator/GbLine3DCreator.h>
-#include <numerics/geometry3d/creator/GbObject3DCreator.h>
-#include <numerics/geometry3d/creator/GbObject3DFactory.h>
-#include <numerics/geometry3d/creator/GbPoint3DCreator.h>
-#include <numerics/geometry3d/creator/GbPolygon3DCreator.h>
-#include <numerics/geometry3d/creator/GbQuadFaceMesh3DCreator.h>
-#include <numerics/geometry3d/creator/GbSphere3DCreator.h>
-#include <numerics/geometry3d/creator/GbTriangle3DCreator.h>
-#include <numerics/geometry3d/creator/GbTriangularMesh3DCreator.h>
-#include <numerics/geometry3d/creator/GbTriFaceMesh3DCreator.h>
-#include <numerics/geometry3d/creator/GbVoxelMatrix3DCreator.h>
-#include <numerics/geometry3d/KdTree/KdNode.h>
-#include <numerics/geometry3d/KdTree/KdRay.h>
-#include <numerics/geometry3d/KdTree/KdSplitCandidate.h>
-#include <numerics/geometry3d/KdTree/KdSplitCandidateManager.h>
-#include <numerics/geometry3d/KdTree/KdTree.h>
-#include <numerics/geometry3d/KdTree/KdUtilities.h>
-#include <numerics/geometry3d/KdTree/intersectionhandler/KdCountLineIntersectionHandler.h>
-#include <numerics/geometry3d/KdTree/intersectionhandler/KdCountRayIntersectionHandler.h>
-#include <numerics/geometry3d/KdTree/intersectionhandler/KdLineIntersectionHandler.h>
-#include <numerics/geometry3d/KdTree/intersectionhandler/KdRayIntersectionHandler.h>
-#include <numerics/geometry3d/KdTree/splitalgorithms/KdSAHSplit.h>
-#include <numerics/geometry3d/KdTree/splitalgorithms/KdSpatiallMedianSplit.h>
-#include <numerics/geometry3d/KdTree/splitalgorithms/KdSplitAlgorithm.h>
+#include <geometry3d/CoordinateTransformation3D.h>
+#include <geometry3d/GbCuboid3D.h>
+#include <geometry3d/GbLine3D.h>
+#include <geometry3d/GbObject3D.h>
+#include <geometry3d/GbPoint3D.h>
+#include <geometry3d/GbPolygon3D.h>
+#include <geometry3d/GbSystem3D.h>
+#include <geometry3d/GbTriangle3D.h>
+#include <geometry3d/GbVector3D.h>
 
 #include <Parallel/Communicator.h>
-#include <Parallel/MetisPartitioner.h>
-#include <Parallel/MPICommunicator.h>
 #include <Parallel/NullCommunicator.h>
-#include <Parallel/PriorityQueueDecompositor.h>
-#include <Parallel/SimpleGeometricPartitioner.h>
-#include <Parallel/ZoltanPartitioner.h>
-#include <Parallel/BlocksDistributor.h>
 
-#include <Utilities/MathUtil.hpp>
 #include <Utilities/MemoryUtil.h>
-#include <Utilities/ConfigurationFile.hpp>
-#include <Utilities/VoxelMatrixUtil.hpp>
-#include <Utilities/ChangeRandomQs.hpp>
-#include <Utilities/CheckpointConverter.h>
 
 #include <Visitors/Block3DVisitor.h>
-#include <Visitors/CreateTransmittersHelper.h>
 #include <Visitors/InitDistributionsBlockVisitor.h>
 #include <Visitors/SetConnectorsBlockVisitor.h>
-#include <Visitors/SetUndefinedNodesBlockVisitor.h>
 #include <Visitors/GenBlocksGridVisitor.h>
 #include <Visitors/Grid3DVisitor.h>
-#include <Visitors/MetisPartitioningGridVisitor.h>
-#include <Visitors/OverlapBlockVisitor.h>
-#include <Visitors/PQueuePartitioningGridVisitor.h>
-#include <Visitors/RatioBlockVisitor.h>
-#include <Visitors/RatioSmoothBlockVisitor.h>
-#include <Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h>
-#include <Visitors/RefineInterGbObjectsVisitor.h>
-#include <Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h>
-#include <Visitors/SetInterpolationDirsBlockVisitor.h>
 #include <Visitors/SetKernelBlockVisitor.h>
-#include <Visitors/SetForcingBlockVisitor.h>
-#include <Visitors/SetSpongeLayerBlockVisitor.h>
-#include <Visitors/SetSolidBlocksBlockVisitor.h>
-#include <Visitors/SetBcBlocksBlockVisitor.h>
-#include <Visitors/RenumberBlockVisitor.h>
-#include <Visitors/ConnectorBlockVisitor.h>
-#include <Visitors/ViscosityBlockVisitor.h>
-#include <Visitors/BoundaryConditionsBlockVisitor.h>
 #include <Visitors/BoundaryConditionsBlockVisitor.h>
-#include <Visitors/ChangeBoundaryDensityBlockVisitor.h>
-#include <InitDistributionsFromFileBlockVisitor.h>
-#include <InitDistributionsWithInterpolationGridVisitor.h>
-#include <CheckRatioBlockVisitor.h>
-#include <SpongeLayerBlockVisitor.h>
-#include <ZoltanPartitioningGridVisitor.h>
-
-#include <Visitors/RefineCrossAndInsideGbObjectHelper.h>
-#include <RefineAroundGbObjectHelper.h>
-
-#if defined VF_FETOL
-   #include <FETOL/FETOLCalculator.h>
-   #include <FETOL/FETOLCommunicator.h>
-   #include <FETOL/FETOLSetConnectorsBlockVisitor.h>
-   #include <FETOL/FETOLTransmitterBondPool.h>   
-#endif
 
 #endif // VirtualFluids_h__
diff --git a/apps/cpu/Wing/Bombadil.cfg b/apps/cpu/Wing/Bombadil.cfg
deleted file mode 100644
index 4ee9dd64929b43391ede80ab568d53339b24be63..0000000000000000000000000000000000000000
--- a/apps/cpu/Wing/Bombadil.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-machine=Bombadil
-path="d:/temp/wing/"
-geoFile="d:/Data/SFB/grundgeometrie.stl"
-numOfThreads=1
-availMem=15e9
-refineLevel=5
-blocknx=8
-endTime=10
\ No newline at end of file
diff --git a/apps/cpu/Wing/CMakeLists.txt b/apps/cpu/Wing/CMakeLists.txt
deleted file mode 100644
index a507c94a98eede5c4bbc67e71159038f53d5bb80..0000000000000000000000000000000000000000
--- a/apps/cpu/Wing/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(wing)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(wing BINARY)
diff --git a/apps/cpu/Wing/wing.cpp b/apps/cpu/Wing/wing.cpp
deleted file mode 100644
index 78f4763e39d2bdd3fbea3d4e85fad4b30e01f03e..0000000000000000000000000000000000000000
--- a/apps/cpu/Wing/wing.cpp
+++ /dev/null
@@ -1,414 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <boost/pointer_cast.hpp>
-
-#include "vfluids.h"
-
-using namespace std;
-
-
-void setup(const char *cstr1, const char *cstr2)
-{
-   try
-   {
-      //Sleep(30000);
-
-      ConfigFileReader cf(cstr1);
-      if ( !cf.read() )
-      {
-         std::string exceptionText = "Unable to read configuration file\n";
-         throw exceptionText;
-      }
-
-      //parameters from config file
-      string machine = cf.getValue("machine");
-      string pathname = cf.getValue("path");
-      string geoFile = cf.getValue("geoFile");
-      int numOfThreads = UbSystem::stringTo<int>(cf.getValue("numOfThreads"));
-      double availMem = UbSystem::stringTo<double>(cf.getValue("availMem"));
-      int refineLevel = UbSystem::stringTo<int>(cf.getValue("refineLevel"));
-      int blocknx = UbSystem::stringTo<int>(cf.getValue("blocknx"));
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if(machine == "Bombadil") int dumy=0; 
-      else if(machine == "Ludwig" || machine == "HLRN")      
-      {
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown machine");
-
-      GbTriFaceMesh3DPtr geo (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(geoFile,"geo"));
-      if(myid == 0) GbSystem3D::writeGeoObject(geo.get(), pathname+"/geo/geo", WbWriterVtkXmlASCII::getInstance());
-
-      double dx = (fabs(geo->getX3Maximum()-geo->getX3Minimum())*10e-3)*(double)(1<<refineLevel);
-      dx /= 4.0;
-
-      double blockLength = blocknx*dx;
-
-      double offsetX1 = fabs(geo->getX1Maximum()-geo->getX1Minimum());
-      double h = fabs(geo->getX3Maximum()-geo->getX3Minimum());
-      double offsetX2 = fabs(geo->getX2Maximum()-geo->getX2Minimum())/3.0;
-      double offsetX3 = 3.0*h; //30.0*h;
-
-      double g_minX1 = geo->getX1Minimum()-offsetX1;
-      double g_minX2 = geo->getX2Minimum()+offsetX2;
-      double g_minX3 = geo->getX3Centroid()-offsetX3;
-
-      double g_maxX1 = geo->getX1Maximum()+5.0*offsetX1;
-      double g_maxX2 = g_minX2 + 4.0*blockLength; 
-      double g_maxX3 = geo->getX3Centroid()+offsetX3;
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-      double Re            = 1e6;
-
-      double rhoLB    = 0.0;
-      double rhoReal  = 1.0;
-      double nueReal  = 0.000015;//0.015;
-
-      double lReal    =  3.0;//<-m     ;//Profile laenge in cm(! cm nicht m !)
-      double uReal    = Re*nueReal/lReal;
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-      double Ma      = 0.1;//Ma-Real!
-      double csReal  = uReal/Ma;
-      double hLB     = lReal/dx;
-
-      LBMUnitConverter unitConverter(lReal, csReal, rhoReal, hLB);
-
-      double uLB     = uReal   * unitConverter.getFactorVelocityWToLb();
-      double nueLB   = nueReal * unitConverter.getFactorViscosityWToLb();
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      ////////////////////////////////////////////////////////////////////////
-      //Grid
-      //////////////////////////////////////////////////////////////////////////
-      Grid3DPtr grid(new Grid3D(comm));
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx, blocknx, blocknx);
-      
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      //gridCube->setCenterCoordinates(geo->getX1Centroid(), geo->getX2Centroid(), geo->getX3Centroid());
-      if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(),pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-      GenBlocksGridVisitor genBlocks(gridCube);
-      grid->accept(genBlocks);
-
-      grid->setPeriodicX2(true);
-      grid->setPeriodicX3(true);
-
-      double outTime = 1.0;
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      //PostprocessorPtr pp(new D3Q27MacroscopicQuantitiesPostprocessor(grid, stepSch, pathname + "/steps/step", WbWriterVtkXmlASCII::getInstance(), conv, comm));
-
-      UbSchedulerPtr rSch(new UbScheduler());
-      rSch->addSchedule(50,50,50);
-      RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::TXT));
-      
-
-      std::string opt;
-
-      if(cstr2!= NULL)
-         opt = std::string(cstr2);
-
-      if/*(cstr== NULL)*/(cstr2!= NULL)
-      {
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-         grid = rp->restart(UbSystem::stringTo<int>(opt));
-         rp->reconnect(grid);
-
-         SetForcingBlockVisitor forcingVisitor(0.0, 0.0, 0.0);
-         grid->accept(forcingVisitor);
-
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-      }
-      else
-{
-      //rp->addPostprocessor(pp);
-      if(myid ==0)
-      {
-         UBLOG(logINFO,"Parameters:");
-         UBLOG(logINFO, "* Re            ="<<Re);
-         UBLOG(logINFO, "* Ma            ="<<Ma);
-         UBLOG(logINFO, "* uReal         ="<<uReal);
-         UBLOG(logINFO, "* nueReal       ="<<nueReal);
-         UBLOG(logINFO, "* nue           ="<<nueLB);
-         UBLOG(logINFO, "* velocity      ="<<uLB);
-         //UBLOG(logINFO, "* LX1 (world/LB)="<<kanallaengeSI<<"/"<<kanallaengeSI/coarseNodeDx);
-         //UBLOG(logINFO, "* LX2 (world/LB)="<<kanalbreiteSI<<"/"<<kanalbreiteSI/coarseNodeDx);
-         //UBLOG(logINFO, "* LX3 (world/LB)="<<kanalhoeheSI<<"/"<<kanalhoeheSI/coarseNodeDx);
-         UBLOG(logINFO, "* dx_base       ="<<dx);
-         UBLOG(logINFO, "* dx_refine     ="<<dx/(double)(1<<refineLevel));
-         //UBLOG(logINFO, "* nx1/2/3       ="<<nx[0]<<"/"<<nx[1]<<"/"<<nx[2]);
-         UBLOG(logINFO, "* blocknx1/2/3  ="<<blocknx<<"/"<<blocknx<<"/"<<blocknx);
-         //UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-         //UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-         UBLOG(logINFO, "*****************************************");
-         UBLOGML(logINFO, "UnitConverter:"<<unitConverter.toString());
-         UBLOG(logINFO, "*****************************************");    
-         UBLOG(logINFO,"number of levels = " << refineLevel+1 );
-         UBLOG(logINFO,"numOfThreads     = " << numOfThreads );
-         UBLOG(logINFO,"Preprozess - start");
-      }
-
-
-      //inflow
-      GbCuboid3DPtr geoInflow (new GbCuboid3D(g_minX1-4.0*blockLength, g_minX2-4.0*blockLength, g_minX3-4.0*blockLength, g_minX1+2.0*dx, g_maxX2+4.0*blockLength, g_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-      //outflow
-      GbCuboid3DPtr geoOutflow (new GbCuboid3D(g_maxX1-2.0*dx, g_minX2-4.0*blockLength, g_minX3-4.0*blockLength, g_maxX1+4.0*blockLength, g_maxX2+4.0*blockLength, g_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-      BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-
-      double scaleFactorX = 1.2;
-      double scaleFactorZ = 1.2;
-      //geo->scale(scaleFactorX, 1.0, scaleFactorZ);
-      if(myid == 0) GbSystem3D::writeGeoObject(geo.get(), pathname+"/geo/geo2", WbWriterVtkXmlASCII::getInstance());
-
-      int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-      D3Q27BoundaryConditionAdapterPtr noSlipBCAdapter(new D3Q27NoSlipBCAdapter(bbOption));
-
-      Interactor3DPtr geoIntr = D3Q27TriFaceMeshInteractorPtr(new D3Q27TriFaceMeshInteractor(geo, grid, noSlipBCAdapter,Interactor3D::SOLID));
-
-      //boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(geoIntr)->refineBlockGridToLevel(refineLevel, 0.0, 5.0);
-
-      if (refineLevel > 0)
-      {
-         if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-         //RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-         //refineHelper.addGbObject(geo, refineLevel);
-         //refineHelper.refine();
-         RefineAroundGbObjectHelper refineHelper(grid, refineLevel, boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(geoIntr), 0.0, 0.5);
-         refineHelper.refine();
-         if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-      }
-
-      ppblocks->update(0);
-      ppblocks.reset();
-      return;
-
-      //geo->scale(1.0/scaleFactorX, 1.0, 1.0/scaleFactorX);
-      //geo = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(geoFile,"geo"));
-      if(myid == 0) GbSystem3D::writeGeoObject(geo.get(), pathname+"/geo/geo3", WbWriterVtkXmlASCII::getInstance());
-
-      MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B, true, numOfThreads);
-      grid->accept( metisVisitor );
-
-      SolidBlocksHelper sd(grid, comm);
-
-      mu::Parser fct;
-      fct.SetExpr("U");
-      fct.DefineConst("U", uLB);
-
-      //inflow
-      D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-      velBCAdapter->setSecondaryBcOption(2);
-      D3Q27InteractorPtr inflowIntr  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-      //outflow
-      D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-      denBCAdapter->setSecondaryBcOption(0);
-      D3Q27InteractorPtr outflowIntr = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-
-      sd.addInteractor(inflowIntr);
-      sd.addInteractor(outflowIntr);
-      sd.addInteractor(geoIntr);
-
-      sd.deleteSolidBlocks();
-
-      grid->accept( metisVisitor );
-
-      sd.setTransBlocks();
-
-      ppblocks->update(0);
-      ppblocks.reset();
-
-      //set connectors
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-      D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-      grid->accept( setConnsVisitor );
-
-      //domain decomposition for threads
-      //PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      //grid->accept(pqPartVisitor);
-
-
-      unsigned long nob = grid->getNumberOfBlocks();
-      int gl = 3;
-      unsigned long nodb = (blocknx) * (blocknx) * (blocknx);
-      unsigned long nod = nob * (blocknx) * (blocknx) * (blocknx);
-      unsigned long nodg = nob * (blocknx+gl) * (blocknx+gl) * (blocknx+gl);
-      double needMemAll  = double(nodg*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-      double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"Number of blocks = " << nob);
-         UBLOG(logINFO,"Number of nodes  = " << nod);
-         int minInitLevel = grid->getCoarsestInitializedLevel();
-         int maxInitLevel = grid->getFinestInitializedLevel();
-         for(int level = minInitLevel; level<=maxInitLevel; level++)
-         {
-            int nobl = grid->getNumberOfBlocks(level);
-            UBLOG(logINFO,"Number of blocks for level " << level <<" = " << nobl);
-            UBLOG(logINFO,"Number of nodes for level " << level <<" = " << nobl*nodb);
-         }
-         UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-         UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-         UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-      }            
-
-      LBMKernel3DPtr kernel;
-      kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx, blocknx, blocknx, LBMKernelETD3Q27CCLB::NORMAL));
-
-      //mu::Parser fctForcingX1;
-      //fctForcingX1.SetExpr("Fx1");
-      //fctForcingX1.DefineConst("Fx1", 9.99685e-7);
-
-      //kernel->setForcingX1(fctForcingX1);
-      //kernel->setWithForcing(true);
-      //
-      BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-      if (refineLevel > 0)
-      {
-         D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-         grid->accept(undefNodesVisitor);
-      }
-
-	  //UbSchedulerPtr geoSch(new UbScheduler(1));
-	  //D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-		 // new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, comm, true));
-	  //ppgeo->update(0);
-	  //ppgeo.reset();
-
-	  //return;
-
-      //inflow
-      grid->addAndInitInteractor(inflowIntr);
-
-      //outflow
-      grid->addAndInitInteractor(outflowIntr);
-
-      //geo
-      grid->addAndInitInteractor(geoIntr);
-
-      //initialization of distributions
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(nueLB, rhoLB);
-      initVisitor.setVx1(fct);
-      initVisitor.setNu(nueLB);
-      grid->accept(initVisitor);
-
-      //Postrozess
-      //UbSchedulerPtr geoSch(new UbScheduler(1));
-      //D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-      //   new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, comm, true));
-      //ppgeo->update(0);
-      //ppgeo.reset();
-
-      {
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         //D3Q27MacroscopicQuantitiesPostprocessor ppgeo(grid,geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv,  comm, true);
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, true));
-         //grid->addObserver(ppgeo);
-         grid->doPostProcess(0);
-         //grid->notifyObservers(0);
-         //grid->removeObserver(ppgeo);
-      }
-
-      //grid->notifyObservers(0);
-
-      //UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      D3Q27MacroscopicQuantitiesPostprocessorPtr pp(new D3Q27MacroscopicQuantitiesPostprocessor(grid, stepSch, pathname + "/steps/step", WbWriterVtkXmlASCII::getInstance(), conv));
-      rp->addPostprocessor(pp);
-
-      if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-}
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-     // double outTime = 3.0;
-     // UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      //UbSchedulerPtr stepSch(new UbScheduler());
-      //stepSch->addSchedule(10, 100, 1000);
-      //nodeSch->addSchedule(1000, 1000, 10000);
-      //nodeSch->addSchedule(10000, 10000, 50000);
-      //stepSch->addSchedule(100, 100, 1000);
-
-      //UbSchedulerPtr st(new UbScheduler(100,50,1000));
-      //UbSchedulerPtr rs(new UbScheduler(3));
-      //AverageValuesPostprocessor ap(grid, pathname + "/av/av", WbWriterVtkXmlASCII::getInstance(), stepSch, rs, comm);
-
-      //D3Q27ShearStressPostprocessor shs(grid,pathname + "/shs/shs", WbWriterVtkXmlASCII::getInstance(), stepSch, rs, comm);
-      //shs.addInteractor(boost::dynamic_pointer_cast<D3Q27Interactor>(addWallZminInt));
-
-      //D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname + "/steps/step", WbWriterVtkXmlASCII::getInstance(), conv, comm);
-
-      UbSchedulerPtr visSch(new UbScheduler(1));
-      //UbSchedulerPtr visSch(stepSch);
-      double endTime = UbSystem::stringTo<int>(cf.getValue("endTime"));//10001.0;
-
-      //cout << "PID = " << myid << " Total Physical Memory (RAM): " << MemoryUtil::getTotalPhysMem()<<endl;
-      //cout << "PID = " << myid << " Physical Memory currently used: " << MemoryUtil::getPhysMemUsed()<<endl;
-      //cout << "PID = " << myid << " Physical Memory currently used by current process: " << MemoryUtil::getPhysMemUsedByMe()<<endl;
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
-int main(int argc, char* argv[])
-{
-
-   if ( argv != NULL )
-   {
-      if (argc > 1)
-      {
-         setup(argv[1], argv[2]);
-      }
-      else
-      {
-         cout << "Configuration file must be set!: " <<  argv[0] << " <config file>" << endl << std::flush;
-      }
-   }
-
-   return 0;
-} 
-
diff --git a/apps/cpu/aperm/CMakeLists.txt b/apps/cpu/aperm/CMakeLists.txt
deleted file mode 100644
index f2439bd5db69073faf1df2457c43717fb950f4c7..0000000000000000000000000000000000000000
--- a/apps/cpu/aperm/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(aperm)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake)  
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(aperm BINARY)
diff --git a/apps/cpu/aperm/PA200-250-50_800MPI.cfg b/apps/cpu/aperm/PA200-250-50_800MPI.cfg
deleted file mode 100644
index 71251b1dde2d1ca1412a4362a22e577a6b3b20f2..0000000000000000000000000000000000000000
--- a/apps/cpu/aperm/PA200-250-50_800MPI.cfg
+++ /dev/null
@@ -1,53 +0,0 @@
-pathname = /hpc3lustre/work/koskuche/SFB880/Permeability/anisotropic/PA200-250-50_800MPI
-pathGeo = /hpc3lustre/work/koskuche/SFB880/Materials/anisotropic
-
-numOfThreads = 1
-availMem = 11e9
-logToFile = true
-
-#porous media
-rawFile = true
-sampleFilename = /PA_200-250-50%_gewalzt_1575x1616x1643_32922.raw
-
-#diminsions [voxel]
-pmNX1 = 1575 
-pmNX2 = 1616 
-pmNX3 = 1643
-
-#threshold
-lthreshold = 32922
-uthreshold = 65535
-
-#diminsions [m]
-pmL1 = 15.75e-3
-pmL2 = 16.16e-3
-pmL3 = 16.43e-3
-
-#grid
-blocknx = 32
-nx3 = 10
-deltax = 20e-6
-spongeLayer=false
-
-#physic
-newPressure = false
-dp_LB = 1e-7
-newViscosity = false
-nu_LB = 0.0005
-
-timeSeriesFile = /timeseries/1
-timeSeriesOutTime = 1000
-
-gridPrepare = true
-numOfParts = 800
-
-restartStep = 50000
-restartStepStart=50000
-flowInit = true
-
-endTime = 800000
-outTime = 50000
-
-nupsStep = 1000 1000 10000000
-
-
diff --git a/apps/cpu/aperm/PA80-110+120-150_MPI.cfg b/apps/cpu/aperm/PA80-110+120-150_MPI.cfg
deleted file mode 100644
index 9d836a0a4aa44b3fa652f1ca70e930da963fc099..0000000000000000000000000000000000000000
--- a/apps/cpu/aperm/PA80-110+120-150_MPI.cfg
+++ /dev/null
@@ -1,50 +0,0 @@
-pathname = /hpc3lustre/work/koskuche/SFB880/Permeability/anisotropic/PA80-110+120-150_MPI
-pathGeo = /hpc3lustre/work/koskuche/SFB880/Materials/anisotropic
-
-numOfThreads = 1
-availMem = 11e9
-logToFile = true
-
-#porous media
-rawFile = false
-#sampleFilename = /PA_80-110+120-150_1824x1735x1603_8656.raw
-sampleFilename = /vtk/PA80-110+120-150_1600x1600x1600_8656.vti
-
-#diminsions [voxel]
-pmNX1 = 1600 
-pmNX2 = 1600 
-pmNX3 = 1600
-
-#threshold
-lthreshold = 8656
-uthreshold = 30294
-
-#diminsions [m]
-pmL1 = 16e-3
-pmL2 = 16e-3
-pmL3 = 16e-3
-
-
-#grid
-blocknx = 32
-nx3 = 10
-deltax = 16e-6
-spongeLayer=false
-
-#physic
-dp_LB = 1e-6
-nu_LB = 0.0005
-
-timeSeriesFile = /timeseries/1
-timeSeriesOutTime = 1000
-
-restartStep = 50000
-restartStepStart=50000
-
-endTime = 800000
-outTime = 50000
-
-nupsStep = 1000 1000 10000000
-
-gridPrepare = false
-numOfParts = 800
diff --git a/apps/cpu/aperm/PA80-110+120-150_dx80.cfg b/apps/cpu/aperm/PA80-110+120-150_dx80.cfg
deleted file mode 100644
index 6ef5c889469da3fa839a1cb385ae857235f26ed7..0000000000000000000000000000000000000000
--- a/apps/cpu/aperm/PA80-110+120-150_dx80.cfg
+++ /dev/null
@@ -1,63 +0,0 @@
-pathname = d:/temp/apermPA80-110+120-150
-pathGeo = f:/
-
-numOfThreads = 4
-availMem = 11e9
-logToFile = flse
-
-#porous media
-rawFile = false
-sampleFilename = /PA80-110+120-150_1600x1600x1600_8656.vti
-
-#diminsions [voxel]
-pmNX1 = 1600 
-pmNX2 = 1600 
-pmNX3 = 1600
-
-#threshold
-lthreshold = 8656
-uthreshold = 30294
-
-#diminsions [m]
-pmL1 = 16e-3
-pmL2 = 16e-3
-pmL3 = 16e-3
-
-pmDeltas = true
-
-#deltas [m]
-pmDeltaX1 = 0.01e-3
-pmDeltaX2 = 0.01e-3
-pmDeltaX3 = 0.01e-3
-
-yDir = false
-zDir = false
-
-#grid
-blocknx = 32
-nx3 = 10
-deltax = 80e-6
-spongeLayer=false
-
-#physic
-newPressure = false
-dp_LB = 1e-6
-
-newViscosity = false
-nu_LB = 0.0005
-
-vx1=0
-vx2=0
-vx3=0
-
-timeSeriesFile = /timeseries/1
-timeSeriesOutTime = 1000
-
-restartStep = 50000
-restartStepStart=50000
-
-endTime = 800000
-outTime = 50000
-
-nupsStep = 1000 1000 10000000
-
diff --git a/apps/cpu/aperm/PA80-110-200-250-HLRN.cfg b/apps/cpu/aperm/PA80-110-200-250-HLRN.cfg
deleted file mode 100644
index a6a4511ddf184601ad802453c2eaff88cb630655..0000000000000000000000000000000000000000
--- a/apps/cpu/aperm/PA80-110-200-250-HLRN.cfg
+++ /dev/null
@@ -1,70 +0,0 @@
-pathname = /gfs2/work/niikonst/scratch/SFB880/Permeability/anisotropic/PA80-110-200-250-X_test2
-pathGeo = /gfs2/work/niikonst/data/materials
-
-numOfThreads = 12
-availMem = 32e9
-logToFile = true
-
-#porous media
-rawFile = true
-sampleFilename = /PA_80-110+200-250_1368x1368x1368_11461.raw
-
-#diminsions [voxel]
-pmNX1 = 1368 
-pmNX2 = 1368 
-pmNX3 = 1368
-
-#threshold
-lthreshold = 11461
-uthreshold = 65535
-
-#diminsions [m]
-pmL1 = 0.009375
-pmL2 = 0.009375
-pmL3 = 0.009375
-
-pmDeltas = true
-
-#deltas [m]
-pmDeltaX1 = 10e-6
-pmDeltaX2 = 10e-6
-pmDeltaX3 = 10e-6
-
-yDir = false
-zDir = false
-
-#grid
-blocknx = 32
-nx3 = 10
-deltax = 40e-6  #10e-6
-spongeLayer=false
-
-#physic
-newPressure = false
-dp_LB = 1e-6
-newViscosity = false
-nu_LB = 0.0005
-
-vx1=0
-vx2=0
-vx3=0
-
-timeSeriesFile = /timeseries/1
-timeSeriesOutTime = 100
-
-
-newStart    = false
-restartStep = 480000
-
-cpStep      = 960000
-cpStepStart = 960000
-
-outTimeStep = 960000
-outTimeStart = 960000
-
-nupsStep = 1000 1000 10000000
-
-endTime = 960000
-
-
-#restartStepStart = 240000000
diff --git a/apps/cpu/aperm/aperm.cpp b/apps/cpu/aperm/aperm.cpp
deleted file mode 100644
index 1cc306822b6471e7bfef56a3486e0a77b4a8b6af..0000000000000000000000000000000000000000
--- a/apps/cpu/aperm/aperm.cpp
+++ /dev/null
@@ -1,574 +0,0 @@
-#include <iostream>
-#include <string>
-#include <VirtualFluids.h>
-
-using namespace std;
-
-void changeDP()
-{
-}
-//////////////////////////////////////////////////////////////////////////
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathname = config.getString("pathname");
-      string          pathGeo = config.getString("pathGeo");
-      int             numOfThreads = config.getInt("numOfThreads");
-      string          sampleFilename = config.getString("sampleFilename");
-      int             pmNX1 = config.getInt("pmNX1");
-      int             pmNX2 = config.getInt("pmNX2");
-      int             pmNX3 = config.getInt("pmNX3");
-      double          lthreshold = config.getDouble("lthreshold");
-      double          uthreshold = config.getDouble("uthreshold");
-      double          pmL1 = config.getDouble("pmL1");
-      double          pmL2 = config.getDouble("pmL2");
-      double          pmL3 = config.getDouble("pmL3");
-      int             blocknx = config.getInt("blocknx");
-      //double          nx3 = config.getDouble("nx3");
-      double          dpLB = config.getDouble("dp_LB");
-      double          nu_LB = config.getDouble("nu_LB");
-      string          timeSeriesFile = config.getString("timeSeriesFile");
-      double          restartStep = config.getDouble("restartStep");
-      //double          restartStepStart = config.getDouble("restartStepStart");
-      double          endTime = config.getDouble("endTime");
-      double          outTimeStep = config.getValue<double>("outTimeStep");
-      double          outTimeStart = config.getValue<double>("outTimeStart");
-      double          availMem = config.getDouble("availMem");
-      bool            rawFile = config.getBool("rawFile");
-      double          timeSeriesOutTime = config.getDouble("timeSeriesOutTime");
-      bool            logToFile = config.getBool("logToFile");
-      bool            spongeLayer = config.getBool("spongeLayer");
-      vector<double>  nupsStep = config.getVector<double>("nupsStep");
-      double          deltax = config.getDouble("deltax");
-      bool            newViscosity = config.getBool("newViscosity");
-      bool            newPressure = config.getBool("newPressure");
-      bool            pmDeltas = config.getBool("pmDeltas");
-      double          pmDeltaX1 = config.getDouble("pmDeltaX1");
-      double          pmDeltaX2 = config.getDouble("pmDeltaX2");
-      double          pmDeltaX3 = config.getDouble("pmDeltaX3");
-      double          vx1 = config.getDouble("vx1");
-      double          vx2 = config.getDouble("vx2");
-      double          vx3 = config.getDouble("vx3");
-      bool            yDir = config.getBool("yDir");
-      bool            zDir = config.getBool("zDir");
-      double          cpStep = config.getDouble("cpStep");
-      double          cpStepStart = config.getDouble("cpStepStart");
-      bool            newStart = config.getValue<bool>("newStart");
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid==0)
-         {
-            const char* str = pathname.c_str();
-            int status = mkdir(str, S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH);
-         }
-#endif 
-
-         if (myid==0)
-         {
-            stringstream logFilename;
-            logFilename<<pathname+"/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      //Sleep(30000);
-
-      if (myid==0) UBLOG(logINFO, "Testcase permeability");
-
-      string machinename = UbSystem::getMachineName();
-      //UBLOG(logINFO, "PID = " << myid << " Hostname: " << machinename);
-      //UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-      //UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-      //UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-
-      int blocknx1 = blocknx;
-      int blocknx2 = blocknx;
-      int blocknx3 = blocknx;
-
-      LBMReal rhoLB = 0.0;
-      double rhoLBinflow = dpLB*3.0;
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      double coord[6];
-      //double deltax;
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      //SPtr<UbScheduler> rSch(new UbScheduler(cpStep, cpStepStart));
-      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
-      
-      SPtr<UbScheduler> rSch2(new UbScheduler(cpStep, cpStepStart));
-      MPIIORestart11CoProcessor rcp(grid, rSch2, pathname, comm);
-
-      SPtr<LBMKernel> kernel;
-      kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel(blocknx1, blocknx2, blocknx3, IncompressibleCumulantLBMKernel::NORMAL));
-
-      //SPtr<BCProcessor> bcProc(new BCProcessor());
-      SPtr<BCProcessor> bcProc = SPtr<BCProcessor>(new ThinWallBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      rcp.setLBMKernel(kernel);
-      rcp.setBCProcessor(bcProc);
-      rcp.setChunk(1);
-      //////////////////////////////////////////////////////////////////////////
-
-      //BC Adapter
-      //////////////////////////////////////////////////////////////////////////////
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new ThinWallNoSlipBCAlgorithm()));
-      //noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapterInflow(new DensityBCAdapter(rhoLBinflow));
-      denBCAdapterInflow->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapterOutflow(new DensityBCAdapter(rhoLB));
-      denBCAdapterOutflow->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-      //////////////////////////////////////////////////////////////////////////////////
-      //BS visitor
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      bcVisitor.addBC(denBCAdapterInflow);
-      bcVisitor.addBC(denBCAdapterOutflow);
-
-      if (newStart)
-      {
-         if (myid==0) UBLOG(logINFO, "new start..");
-         if (myid==0) UBLOG(logINFO, "preprocess start..");
-
-         //UBLOG(logINFO, "new start PID = " << myid << " Hostname: " << machinename);
-         //UBLOG(logINFO, "new start PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         //UBLOG(logINFO, "new start PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         //UBLOG(logINFO, "new start PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-
-         string samplePathname = pathGeo+sampleFilename;
-
-         double deltaVoxelX1 = pmL1/(double)pmNX1;
-         double deltaVoxelX2 = pmL2/(double)pmNX2;
-         double deltaVoxelX3 = pmL3/(double)pmNX3;
-
-         if (pmDeltas)
-         {
-            deltaVoxelX1 = pmDeltaX1;
-            deltaVoxelX2 = pmDeltaX2;
-            deltaVoxelX3 = pmDeltaX3;
-         }
-
-         if (myid==0) UBLOG(logINFO, "read voxel matrix: start");
-         GbVoxelMatrix3DPtr sample(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-         if (rawFile)
-         {
-            sample->readMatrixFromRawFile<unsigned short>(samplePathname, GbVoxelMatrix3D::BigEndian);
-         }
-         else
-         {
-            sample->readMatrixFromVtiASCIIFile(samplePathname);
-         }
-
-         sample->setVoxelMatrixDelta((float)deltaVoxelX1, (float)deltaVoxelX2, (float)deltaVoxelX3);
-         sample->setVoxelMatrixMininum(0.0, 0.0, 0.0);
-         if (myid==0) UBLOG(logINFO, "read voxel matrix: end");
-
-
-         if (myid==0) UBLOG(logINFO, "rotate voxel matrix: start");
-         if (yDir)
-         {
-            sample->rotate90aroundZ();
-            //sample->rotate90aroundZ();
-            //sample->rotate90aroundZ();
-         }
-         if (zDir)
-         {
-            sample->rotate90aroundY();
-         }
-         if (myid==0) UBLOG(logINFO, "rotate voxel matrix: end");
-
-         if (myid==0) sample->writeToVTKImageDataASCII(pathname+"/geo/sample");
-        
-         ///////////////////////////////////////////////////////
-
-         ////////////////////////////////////////////////////////////////////////
-
-         double offset1 = sample->getLengthX1()/10.0;
-         double offset2 = 2.0*offset1;
-         //double offset2 = offset1;
-         //bounding box
-         double g_minX1 = sample->getX1Minimum()-offset1;
-         double g_minX2 = sample->getX2Minimum();
-         double g_minX3 = sample->getX3Minimum();
-
-         double g_maxX1 = sample->getX1Maximum()+offset2;
-         double g_maxX2 = sample->getX2Maximum();
-         double g_maxX3 = sample->getX3Maximum();
-
-         ////////////////////////////////////////////////////////////////////////////
-         //double nx1_temp = floor((g_maxX1-g_minX1)/(deltax*(double)blocknx));
-
-         //deltax = (g_maxX1-g_minX1)/(nx1_temp*(double)blocknx);
-
-         // g_maxX3 -= 0.5* deltax;
-          ////////////////////////////////////////////////////////////////////////////
-
-          ////deltax = (g_maxX3-g_minX3) /(nx3*blocknx3);
-
-         double blockLength = (double)blocknx1*deltax;
-
-         grid->setPeriodicX1(false);
-         grid->setPeriodicX2(false);
-         grid->setPeriodicX3(false);
-         grid->setDeltaX(deltax);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-         SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid==0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "rho_LB = "<<rhoLB);
-            UBLOG(logINFO, "nu_LB = "<<nu_LB);
-            UBLOG(logINFO, "dp_LB = "<<dpLB);
-            UBLOG(logINFO, "dx = "<<deltax<<" m");
-            UBLOG(logINFO, "numOfThreads = "<<numOfThreads);
-            UBLOG(logINFO, "path = "<<pathname);
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         //walls
-         GbCuboid3DPtr addWallYmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_minX2, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1-blockLength, g_maxX2, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         WriteBlocksSPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         
-         //PM interactor
-         SPtr<D3Q27Interactor> sampleInt(new D3Q27Interactor(sample, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         //wall interactors
-         SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-
-         SPtr<D3Q27Interactor> inflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, denBCAdapterInflow, Interactor3D::SOLID));
-
-         //outflow
-         SPtr<D3Q27Interactor> outflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denBCAdapterOutflow, Interactor3D::SOLID));
-
-
-         //UBLOG(logINFO, "PID = "<<myid<<" Hostname: "<<machinename);
-         //UBLOG(logINFO, "PID = "<<myid<<" Total Physical Memory (RAM): "<<Utilities::getTotalPhysMem());
-         //UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used: "<<Utilities::getPhysMemUsed());
-         //UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe());
-
-
-         ////////////////////////////////////////////
-         //METIS
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::RECURSIVE));
-         ////////////////////////////////////////////
-         //Zoltan
-         //SPtr<Grid3DVisitor> zoltanVisitor(new ZoltanPartitioningGridVisitor(comm, D3Q27System::BSW, 1));
-         //grid->accept(zoltanVisitor);
-
-         /////delete solid blocks
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.addInteractor(sampleInt);
-         intHelper.selectBlocks();
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         ppblocks->process(0);
-         ppblocks.reset();
-
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nod = nob * (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nodg = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-         double needMemAll = double(nodg*(27*sizeof(double)+sizeof(int)+sizeof(float)*4));
-         double needMem = needMemAll/double(comm->getNumberOfProcesses());
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Number of blocks = "<<nob);
-            UBLOG(logINFO, "Number of nodes  = "<<nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level "<<level<<" = "<<nobl);
-               UBLOG(logINFO, "Number of nodes for level "<<level<<" = "<<nobl*nodb);
-            }
-            UBLOG(logINFO, "Necessary memory  = "<<needMemAll<<" bytes");
-            UBLOG(logINFO, "Necessary memory per process = "<<needMem<<" bytes");
-            UBLOG(logINFO, "Available memory per process = "<<availMem<<" bytes");
-         }
-
-         //SPtr<LBMKernel> kernel;
-         //kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel(blocknx1, blocknx2, blocknx3, IncompressibleCumulantLBMKernel::NORMAL));
-
-         ////SPtr<BCProcessor> bcProc(new BCProcessor());
-         //SPtr<BCProcessor> bcProc = SPtr<BCProcessor>(new ThinWallBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         //BC
-         intHelper.setBC();
-
-         //BS visitor
-         grid->accept(bcVisitor);
-
-         //Press*1.6e8+(14.76-coordsX)/3.5*5000
-         //initialization of distributions
-         mu::Parser fct;
-         fct.SetExpr("(x1max-x1)/l*dp*3.0");
-         fct.DefineConst("dp", dpLB);
-         fct.DefineConst("x1max", g_maxX1);
-         fct.DefineConst("l", g_maxX1-g_minX1);
-
-         InitDistributionsBlockVisitor initVisitor(nu_LB, rhoLB);
-         initVisitor.setRho(fct);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         WriteBoundaryConditionsSPtr<CoProcessor> ppgeo(
-            new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-         ppgeo->process(0);
-         ppgeo.reset();
-
-         coord[0] = sample->getX1Minimum();
-         coord[1] = sample->getX2Minimum();
-         coord[2] = sample->getX3Minimum();
-         coord[3] = sample->getX1Maximum();
-         coord[4] = sample->getX2Maximum();
-         coord[5] = sample->getX3Maximum();
-
-         ////////////////////////////////////////////////////////
-         UbFileOutputASCII outf(pathname+"/checkpoints/coord.txt");
-         outf.writeDouble(deltax);
-         outf.writeDouble(coord[0]);
-         outf.writeDouble(coord[1]);
-         outf.writeDouble(coord[2]);
-         outf.writeDouble(coord[3]);
-         outf.writeDouble(coord[4]);
-         outf.writeDouble(coord[5]);
-         outf.writeDouble(g_minX1);
-         outf.writeDouble(g_maxX1);
-         outf.writeDouble(availMem);
-         outf.writeDouble(needMem);
-         ////////////////////////////////////////////////////////
-
-         grid->addInteractor(inflowInt);
-
-         if (myid==0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         ////////////////////////////////////////////////////////
-         UbFileInputASCII inf(pathname+"/checkpoints/coord.txt");
-         deltax = inf.readDouble();
-         coord[0] = inf.readDouble();
-         coord[1] = inf.readDouble();
-         coord[2] = inf.readDouble();
-         coord[3] = inf.readDouble();
-         coord[4] = inf.readDouble();
-         coord[5] = inf.readDouble();
-         double g_minX1 = inf.readDouble();
-         double g_maxX1 = inf.readDouble();
-         double availMem = inf.readDouble();
-         double needMem = inf.readDouble();
-         ////////////////////////////////////////////////////////
-         
-         rcp.restart((int)restartStep);
-         grid->setTimeStep(restartStep);
-
-         //new nu
-         if (newViscosity)
-         {
-            ViscosityBlockVisitor nuVisitor(nu_LB);
-            grid->accept(nuVisitor);
-         }
-
-         //new dp
-         if (newPressure)
-         {
-            Grid3D::Interactor3DSet interactors = grid->getInteractors();
-            interactors[0]->setGrid3D(grid);
-            dynamicPointerCast<D3Q27Interactor>(interactors[0])->deleteBCAdapter();
-            SPtr<BCAdapter> denBCAdapterFront(new DensityBCAdapter(rhoLBinflow));
-            denBCAdapterFront->setBcAlgorithm(SPtr<BCAlgorithm>(new EqDensityBCAlgorithm()));
-            dynamicPointerCast<D3Q27Interactor>(interactors[0])->addBCAdapter(denBCAdapterFront);
-            interactors[0]->updateInteractor();
-         }
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "rho_LB = "<<rhoLB);
-            UBLOG(logINFO, "nu_LB = "<<nu_LB);
-            UBLOG(logINFO, "dp_LB = "<<dpLB);
-            UBLOG(logINFO, "dx = "<<deltax<<" m");
-         }
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //BS visitor
-         grid->accept(bcVisitor);
-
-         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         WriteBoundaryConditionsCoProcessor ppgeo = WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm);
-         ppgeo.process(1);
-
-
-         if (myid==0) UBLOG(logINFO, "Restart - end");
-      }
-      SPtr<UbScheduler> nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      //nupsSch->addSchedule(nupsStep[0], nupsStep[1], nupsStep[2]);
-      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTimeStep,outTimeStart));
-
-      WriteMacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      deltax = grid->getDeltaX(baseLevel);
-      double dxd2 = deltax/2.0;
-
-      SPtr<IntegrateValuesHelper> ih1(new IntegrateValuesHelper(grid, comm, coord[0]-dxd2*10.0, coord[1]-dxd2, coord[2]-dxd2,
-         coord[0]-dxd2*10.0-2.0*dxd2, coord[4]+dxd2, coord[5]+dxd2));
-
-      //D3Q27SPtr<IntegrateValuesHelper> ih2(new D3Q27IntegrateValuesHelper(grid, comm, coord[3]/2.0, coord[1] - dxd2, coord[2] - dxd2,
-      //   coord[3]/2.0 + 2.0*dxd2, coord[4] + dxd2, coord[5] + dxd2));
-      SPtr<IntegrateValuesHelper> ih2(new IntegrateValuesHelper(grid, comm, coord[0], coord[1], coord[2], coord[3], coord[4], coord[5]));
-
-      SPtr<IntegrateValuesHelper> ih3(new IntegrateValuesHelper(grid, comm, coord[3]+dxd2*10.0, coord[1]-dxd2, coord[2]-dxd2,
-         coord[3]+dxd2*10.0+2.0*dxd2, coord[4]+dxd2, coord[5]+dxd2));
-
-      //D3Q27SPtr<IntegrateValuesHelper> ih1(new D3Q27IntegrateValuesHelper(grid, comm, coord[0], coord[1], coord[2], coord[3], coord[4], coord[5]));
-      if (myid==0) GbSystem3D::writeGeoObject(ih1->getBoundingBox().get(), pathname+"/geo/ih1", WbWriterVtkXmlBinary::getInstance());
-      if (myid==0) GbSystem3D::writeGeoObject(ih2->getBoundingBox().get(), pathname+"/geo/ih2", WbWriterVtkXmlBinary::getInstance());
-      if (myid==0) GbSystem3D::writeGeoObject(ih3->getBoundingBox().get(), pathname+"/geo/ih3", WbWriterVtkXmlBinary::getInstance());
-
-      double factorp = 1; // dp_real / dp_LB;
-      double factorv = 1;// dx / dt;
-      SPtr<UbScheduler> stepMV(new UbScheduler(timeSeriesOutTime));
-
-      TimeseriesCoProcessor tsp1(grid, stepMV, ih1, pathname+timeSeriesFile+"_1", comm);
-      TimeseriesCoProcessor tsp2(grid, stepMV, ih2, pathname+timeSeriesFile+"_2", comm);
-      TimeseriesCoProcessor tsp3(grid, stepMV, ih3, pathname+timeSeriesFile+"_3", comm);
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Total Physical Memory (RAM): "<<Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used: "<<Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe());
-      }
-
-      const SPtr<ConcreteCalculatorFactory> calculatorFactory = std::make_shared<ConcreteCalculatorFactory>(stepSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, calculatorFactory, CalculatorType::HYBRID));
-      if (myid==0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid==0) UBLOG(logINFO, "Simulation-end");
-      
-      //////MPIIORestart2CoProcessor 
-      //grid->deleteBlockIDs();
-      //RenumberBlockVisitor renumber;
-      //grid->accept(renumber);
-      //SPtr<UbScheduler> iiSch(new UbScheduler(1));
-      //MPIIORestart2CoProcessor rcpInit(grid, iiSch, pathname, comm);
-      //rcpInit.process(300);
-   }
-   catch (exception& e)
-   {
-      cerr<<e.what()<<endl<<flush;
-   }
-   catch (string& s)
-   {
-      cerr<<s<<endl;
-   }
-   catch (...)
-   {
-      cerr<<"unknown exception"<<endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-
-   if (argv!=NULL)
-   {
-      if (argv[1]!=NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout<<"Configuration file is missing!"<<endl;
-      }
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/aperm/aperm.cpp.old b/apps/cpu/aperm/aperm.cpp.old
deleted file mode 100644
index 107294e3d05c5a38c5b38c62f036caf1d923b84e..0000000000000000000000000000000000000000
--- a/apps/cpu/aperm/aperm.cpp.old
+++ /dev/null
@@ -1,573 +0,0 @@
-#include <iostream>
-#include <string>
-#include <VirtualFluids.h>
-
-using namespace std;
-
-void changeDP()
-{
-}
-//////////////////////////////////////////////////////////////////////////
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathname = config.getString("pathname");
-      string          pathGeo = config.getString("pathGeo");
-      int             numOfThreads = config.getInt("numOfThreads");
-      string          sampleFilename = config.getString("sampleFilename");
-      int             pmNX1 = config.getInt("pmNX1");
-      int             pmNX2 = config.getInt("pmNX2");
-      int             pmNX3 = config.getInt("pmNX3");
-      double          lthreshold = config.getDouble("lthreshold");
-      double          uthreshold = config.getDouble("uthreshold");
-      double          pmL1 = config.getDouble("pmL1");
-      double          pmL2 = config.getDouble("pmL2");
-      double          pmL3 = config.getDouble("pmL3");
-      int             blocknx = config.getInt("blocknx");
-      double          nx3 = config.getDouble("nx3");
-      double          dp_LB = config.getDouble("dp_LB");
-      double          nu_LB = config.getDouble("nu_LB");
-      string          timeSeriesFile = config.getString("timeSeriesFile");
-      double          restartStep = config.getDouble("restartStep");
-      double          restartStepStart = config.getDouble("restartStepStart");
-      double          endTime = config.getDouble("endTime");
-      double          outTime = config.getDouble("outTime");
-      double          availMem = config.getDouble("availMem");
-      bool            rawFile = config.getBool("rawFile");
-      double          timeSeriesOutTime = config.getDouble("timeSeriesOutTime");
-      bool            logToFile = config.getBool("logToFile");
-      bool            spongeLayer = config.getBool("spongeLayer");
-      vector<double>  nupsStep = config.getVector<double>("nupsStep");
-      int             numOfParts = config.getInt("numOfParts");
-      bool            gridPrepare = config.getBool("gridPrepare");
-      double          deltax = config.getDouble("deltax");
-      bool            flowInit = config.getBool("flowInit");
-      bool            newViscosity = config.getBool("newViscosity");
-      bool            newPressure = config.getBool("newPressure");
-      bool            pmDeltas = config.getBool("pmDeltas");
-      double          pmDeltaX1 = config.getDouble("pmDeltaX1");
-      double          pmDeltaX2 = config.getDouble("pmDeltaX2");
-      double          pmDeltaX3 = config.getDouble("pmDeltaX3");
-      double          vx1 = config.getDouble("vx1");
-      double          vx2 = config.getDouble("vx2");
-      double          vx3 = config.getDouble("vx3");
-      bool            yDir = config.getBool("yDir");
-      bool            zDir = config.getBool("zDir");
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathname.c_str();
-            int status = mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if (myid == 0)
-         {
-            stringstream logFilename;
-            logFilename << pathname + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      //Sleep(30000);
-
-      if (myid == 0) UBLOG(logINFO, "Testcase permeability");
-
-      string machinename = UbSystem::getMachineName();
-      //UBLOG(logINFO, "PID = " << myid << " Hostname: " << machinename);
-      //UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-      //UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-      //UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-
-      int blocknx1 = blocknx;
-      int blocknx2 = blocknx;
-      int blocknx3 = blocknx;
-
-      LBMReal rho_LB = 0.0;
-      double rhoLBinflow = dp_LB*3.0;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      double coord[6];
-      //double deltax;
-
-      Grid3DPtr grid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(restartStep, restartStepStart));
-      RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (gridPrepare)
-      {
-         if (myid == 0) UBLOG(logINFO, "new start..");
-
-         UBLOG(logINFO, "new start PID = " << myid << " Hostname: " << machinename);
-         UBLOG(logINFO, "new start PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "new start PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "new start PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-
-         string samplePathname = pathGeo + sampleFilename;
-
-         double deltaVoxelX1 = pmL1/(double)pmNX1;
-         double deltaVoxelX2 = pmL2/(double)pmNX2;
-         double deltaVoxelX3 = pmL3/(double)pmNX3;
-
-         if (pmDeltas)
-         {
-            deltaVoxelX1 = pmDeltaX1;
-            deltaVoxelX2 = pmDeltaX2;
-            deltaVoxelX3 = pmDeltaX3;
-         }
-
-         GbVoxelMatrix3DPtr sample(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-         if (rawFile)
-         {
-            sample->readMatrixFromRawFile<unsigned short>(samplePathname, GbVoxelMatrix3D::BigEndian);
-         }
-         else
-         {
-            sample->readMatrixFromVtiASCIIFile(samplePathname);
-         }
-
-         sample->setVoxelMatrixDelta((float)deltaVoxelX1, (float)deltaVoxelX2, (float)deltaVoxelX3);
-         sample->setVoxelMatrixMininum(0.0, 0.0, 0.0);
-
-         if (yDir)
-         {
-            sample->rotate90aroundZ();
-            sample->rotate90aroundZ();
-            sample->rotate90aroundZ();
-         }
-         if (zDir)
-         {
-            sample->rotate90aroundY();
-         }
-
-         if (myid == 0) sample->writeToVTKImageDataASCII(pathname + "/geo/sample");
-
-         ///////////////////////////////////////////////////////
-
-         ////////////////////////////////////////////////////////////////////////
-
-         double offset1 = sample->getLengthX1()/10.0;
-         double offset2 = 2.0*offset1;
-         //double offset2 = offset1;
-         //bounding box
-         double g_minX1 = sample->getX1Minimum() - offset1;
-         double g_minX2 = sample->getX2Minimum();
-         double g_minX3 = sample->getX3Minimum();
-
-         double g_maxX1 = sample->getX1Maximum() + offset2;
-         double g_maxX2 = sample->getX2Maximum();
-         double g_maxX3 = sample->getX3Maximum();
-
-         ////////////////////////////////////////////////////////////////////////////
-         double nx1_temp = floor((g_maxX1-g_minX1)/(deltax*(double)blocknx));
-
-         deltax = (g_maxX1-g_minX1)/(nx1_temp*(double)blocknx);
-
-        // g_maxX3 -= 0.5* deltax;
-         ////////////////////////////////////////////////////////////////////////////
-
-         ////deltax = (g_maxX3-g_minX3) /(nx3*blocknx3);
-
-         double blockLength = (double)blocknx1*deltax;
-
-         grid->setPeriodicX1(false);
-         grid->setPeriodicX2(false);
-         grid->setPeriodicX3(false);
-         grid->setDeltaX(deltax);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "rho_LB = " << rho_LB);
-            UBLOG(logINFO, "nu_LB = " << nu_LB);
-            UBLOG(logINFO, "dp_LB = " << dp_LB);
-            UBLOG(logINFO, "dx = " << deltax << " m");
-            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
-            UBLOG(logINFO, "path = " << pathname);
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         //walls
-         GbCuboid3DPtr addWallYmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_minX2, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1-blockLength, g_maxX2, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname + "/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname + "/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         //PM interactor
-         BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
-         noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new ThinWallNoSlipBCAlgorithm()));
-         D3Q27InteractorPtr sampleInt(new D3Q27Interactor(sample, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         //wall interactors
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         BCAdapterPtr denBCAdapterInflow(new DensityBCAdapter(rhoLBinflow));
-         denBCAdapterInflow->setBcAlgorithm(BCAlgorithmPtr(new EqDensityBCAlgorithm()));
-         D3Q27InteractorPtr inflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoInflow, grid, denBCAdapterInflow, Interactor3D::SOLID));
-
-         //outflow
-         BCAdapterPtr denBCAdapterOutflow(new DensityBCAdapter(rho_LB));
-         denBCAdapterOutflow->setBcAlgorithm(BCAlgorithmPtr(new EqDensityBCAlgorithm()));
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoOutflow, grid, denBCAdapterOutflow, Interactor3D::SOLID));
-
-         
-         UBLOG(logINFO, "PID = " << myid << " Hostname: " << machinename);
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-
-
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::RECURSIVE));
-         ////////////////////////////////////////////
-         //Zoltan
-         //Grid3DVisitorPtr zoltanVisitor(new ZoltanPartitioningGridVisitor(comm, D3Q27System::BSW, 1));
-         //grid->accept(zoltanVisitor);
-
-         /////delete solid blocks
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.addInteractor(sampleInt);
-         intHelper.selectBlocks();
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         ppblocks->process(0);
-         ppblocks.reset();
-  
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nod = nob * (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nodg = nob * (blocknx1 + gl) * (blocknx2 + gl) * (blocknx3 + gl);
-         double needMemAll = double(nodg*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << nob);
-            UBLOG(logINFO, "Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*nodb);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         LBMKernelPtr kernel;
-         if (comm->getNumberOfProcesses()>1 && gridPrepare)
-         {
-            kernel = LBMKernelPtr(new IncompressibleCumulantLBMKernel(blocknx1, blocknx2, blocknx3, IncompressibleCumulantLBMKernel::NORMAL));
-         }
-         else
-         {
-            kernel = LBMKernelPtr(new VoidLBMKernel(blocknx1, blocknx2, blocknx3));
-         }
-
-         //BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         BCProcessorPtr bcProc = BCProcessorPtr(new ThinWallBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         //BC
-         intHelper.setBC();
-
-         if (comm->getNumberOfProcesses()>1 && gridPrepare)
-         {
-            BoundaryConditionBlockVisitor bcVisitor;
-            //bcVisitor.addBC('N', BCAlgorithmPtr(new NoSlipBCAlgorithm()));
-            //bcVisitor.addBC('I', BCAlgorithmPtr(new EqDensityBCAlgorithm()));
-            //bcVisitor.addBC('O', BCAlgorithmPtr(new EqDensityBCAlgorithm()));
-            bcVisitor.addBC(noSlipBCAdapter);
-            bcVisitor.addBC(denBCAdapterInflow);
-            bcVisitor.addBC(denBCAdapterOutflow);
-            grid->accept(bcVisitor);
-
-            //Press*1.6e8+(14.76-coordsX)/3.5*5000
-            //initialization of distributions
-            mu::Parser fct;
-            fct.SetExpr("(x1max-x1)/l*dp*3.0");
-            fct.DefineConst("dp", dp_LB);
-            fct.DefineConst("x1max", g_maxX1);
-            fct.DefineConst("l", g_maxX1-g_minX1);
-
-            InitDistributionsBlockVisitor initVisitor(nu_LB, rho_LB);
-            initVisitor.setRho(fct);
-            grid->accept(initVisitor);
-
-            //Postrozess
-            UbSchedulerPtr geoSch(new UbScheduler(1));
-            WriteBoundaryConditionsCoProcessorPtr ppgeo(
-               new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-            ppgeo->process(0);
-            ppgeo.reset();
-         }
-
-
-         coord[0] = sample->getX1Minimum();
-         coord[1] = sample->getX2Minimum();
-         coord[2] = sample->getX3Minimum();
-         coord[3] = sample->getX1Maximum();
-         coord[4] = sample->getX2Maximum();
-         coord[5] = sample->getX3Maximum();
-
-         ////////////////////////////////////////////////////////
-         UbFileOutputASCII outf(pathname + "/checkpoints/coord.txt");
-         outf.writeDouble(deltax);
-         outf.writeDouble(coord[0]);
-         outf.writeDouble(coord[1]);
-         outf.writeDouble(coord[2]);
-         outf.writeDouble(coord[3]);
-         outf.writeDouble(coord[4]);
-         outf.writeDouble(coord[5]);
-         outf.writeDouble(g_minX1);
-         outf.writeDouble(g_maxX1);
-         outf.writeDouble(availMem);
-         outf.writeDouble(needMem);
-         ////////////////////////////////////////////////////////
-
-         grid->addInteractor(inflowInt);
-
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-
-         if (comm->getNumberOfProcesses() == 1 && gridPrepare)
-         {
-            UBLOG(logINFO, "Prepare grid - start");
-            rp.writeDistributedGrid(grid, numOfParts);
-            UBLOG(logINFO, "Prepare grid - end");
-            return;
-         }
-      }
-      else
-      {
-         ////////////////////////////////////////////////////////
-         UbFileInputASCII inf(pathname+"/checkpoints/coord.txt");
-         deltax   = inf.readDouble();
-         coord[0] = inf.readDouble();
-         coord[1] = inf.readDouble();
-         coord[2] = inf.readDouble();
-         coord[3] = inf.readDouble();
-         coord[4] = inf.readDouble();
-         coord[5] = inf.readDouble();
-         double g_minX1 = inf.readDouble();
-         double g_maxX1 = inf.readDouble();
-         double availMem = inf.readDouble();
-         double needMem = inf.readDouble();
-         ////////////////////////////////////////////////////////
-
-         if (flowInit)
-         {
-            grid->setRank(myid);
-            LBMKernelPtr kernel = LBMKernelPtr(new IncompressibleCumulantLBMKernel(blocknx1, blocknx2, blocknx3, IncompressibleCumulantLBMKernel::NORMAL));
-            BCProcessorPtr bcProc(new BCProcessor());
-            kernel->setBCProcessor(bcProc);
-            SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem, SetKernelBlockVisitor::ChangeKernelWithData);
-            grid->accept(kernelVisitor);
-
-            BoundaryConditionBlockVisitor bcVisitor;
-            grid->accept(bcVisitor);
-            
-            UbSchedulerPtr geoSch(new UbScheduler(1));
-            WriteBoundaryConditionsCoProcessor pp(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm);
-            pp.process(0);
-
-            //Press*1.6e8+(14.76-coordsX)/3.5*5000
-            //initialization of distributions
-            mu::Parser fct;
-            fct.SetExpr("(x1max-x1)/l*dp*3.0");
-            fct.DefineConst("dp", dp_LB);
-            fct.DefineConst("x1max", g_maxX1);
-            fct.DefineConst("l", g_maxX1-g_minX1);
-
-            InitDistributionsBlockVisitor initVisitor(nu_LB, rho_LB);
-            initVisitor.setRho(fct);
-            initVisitor.setVx1(vx1);
-            initVisitor.setVx1(vx2);
-            initVisitor.setVx1(vx3);
-            grid->accept(initVisitor);
-         }
-
-         //new nu
-         if (newViscosity)
-         {
-            ViscosityBlockVisitor nuVisitor(nu_LB);
-            grid->accept(nuVisitor);
-         }
-
-         //new dp
-         if (newPressure)
-         {
-            Grid3D::Interactor3DSet interactors = grid->getInteractors();
-            interactors[0]->setGrid3D(grid);
-            boost::dynamic_pointer_cast<D3Q27Interactor>(interactors[0])->deleteBCAdapter();
-            BCAdapterPtr denBCAdapterFront(new DensityBCAdapter(rhoLBinflow));
-            denBCAdapterFront->setBcAlgorithm(BCAlgorithmPtr(new EqDensityBCAlgorithm()));
-            boost::dynamic_pointer_cast<D3Q27Interactor>(interactors[0])->addBCAdapter(denBCAdapterFront);
-            interactors[0]->updateInteractor();
-         }
-
-         if (myid == 0)
-         {
-	         UBLOG(logINFO, "Parameters:");
-	         UBLOG(logINFO, "rho_LB = " << rho_LB);
-	         UBLOG(logINFO, "nu_LB = " << nu_LB);
-	         UBLOG(logINFO, "dp_LB = " << dp_LB);
-	         UBLOG(logINFO, "dx = " << deltax << " m");
-         }
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-      }
-      UbSchedulerPtr nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      //nupsSch->addSchedule(nupsStep[0], nupsStep[1], nupsStep[2]);
-      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-
-      WriteMacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      deltax = grid->getDeltaX(baseLevel);
-      double dxd2 = deltax / 2.0;
-
-      IntegrateValuesHelperPtr ih1(new IntegrateValuesHelper(grid, comm, coord[0] - dxd2*10.0, coord[1] - dxd2, coord[2] - dxd2,
-         coord[0] - dxd2*10.0 - 2.0*dxd2, coord[4] + dxd2, coord[5] + dxd2));
-
-      //D3Q27IntegrateValuesHelperPtr ih2(new D3Q27IntegrateValuesHelper(grid, comm, coord[3]/2.0, coord[1] - dxd2, coord[2] - dxd2,
-      //   coord[3]/2.0 + 2.0*dxd2, coord[4] + dxd2, coord[5] + dxd2));
-      IntegrateValuesHelperPtr ih2(new IntegrateValuesHelper(grid, comm, coord[0], coord[1], coord[2], coord[3], coord[4], coord[5]));
-
-      IntegrateValuesHelperPtr ih3(new IntegrateValuesHelper(grid, comm, coord[3] + dxd2*10.0, coord[1] - dxd2, coord[2] - dxd2,
-         coord[3] + dxd2*10.0 + 2.0*dxd2, coord[4] + dxd2, coord[5] + dxd2));
-
-      //D3Q27IntegrateValuesHelperPtr ih1(new D3Q27IntegrateValuesHelper(grid, comm, coord[0], coord[1], coord[2], coord[3], coord[4], coord[5]));
-      if (myid == 0) GbSystem3D::writeGeoObject(ih1->getBoundingBox().get(), pathname + "/geo/ih1", WbWriterVtkXmlBinary::getInstance());
-      if (myid == 0) GbSystem3D::writeGeoObject(ih2->getBoundingBox().get(), pathname + "/geo/ih2", WbWriterVtkXmlBinary::getInstance());
-      if (myid == 0) GbSystem3D::writeGeoObject(ih3->getBoundingBox().get(), pathname + "/geo/ih3", WbWriterVtkXmlBinary::getInstance());
-
-      double factorp = 1; // dp_real / dp_LB;
-      double factorv = 1;// dx / dt;
-      UbSchedulerPtr stepMV(new UbScheduler(timeSeriesOutTime));
-      
-      TimeseriesCoProcessor tsp1(grid, stepMV, ih1, pathname+timeSeriesFile+"_1", comm);
-      TimeseriesCoProcessor tsp2(grid, stepMV, ih2, pathname+timeSeriesFile+"_2", comm);
-      TimeseriesCoProcessor tsp3(grid, stepMV, ih3, pathname+timeSeriesFile+"_3", comm);
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepMV));
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-
-   if (argv!=NULL)
-   {
-      if (argv[1]!=NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout<<"Configuration file is missing!"<<endl;
-      }
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/aperm/aperm.cpp.old2 b/apps/cpu/aperm/aperm.cpp.old2
deleted file mode 100644
index 0a4d41cfa3c136948cf88dc7f71dee2bb75bf3be..0000000000000000000000000000000000000000
--- a/apps/cpu/aperm/aperm.cpp.old2
+++ /dev/null
@@ -1,543 +0,0 @@
-#include <iostream>
-#include <string>
-#include <VirtualFluids.h>
-
-using namespace std;
-
-void changeDP()
-{
-}
-//////////////////////////////////////////////////////////////////////////
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathname = config.getString("pathname");
-      string          pathGeo = config.getString("pathGeo");
-      int             numOfThreads = config.getInt("numOfThreads");
-      string          sampleFilename = config.getString("sampleFilename");
-      int             pmNX1 = config.getInt("pmNX1");
-      int             pmNX2 = config.getInt("pmNX2");
-      int             pmNX3 = config.getInt("pmNX3");
-      double          lthreshold = config.getDouble("lthreshold");
-      double          uthreshold = config.getDouble("uthreshold");
-      double          pmL1 = config.getDouble("pmL1");
-      double          pmL2 = config.getDouble("pmL2");
-      double          pmL3 = config.getDouble("pmL3");
-      int             blocknx = config.getInt("blocknx");
-      double          nx3 = config.getDouble("nx3");
-      double          dp_LB = config.getDouble("dp_LB");
-      double          nu_LB = config.getDouble("nu_LB");
-      string          timeSeriesFile = config.getString("timeSeriesFile");
-      double          restartStep = config.getDouble("restartStep");
-      double          restartStepStart = config.getDouble("restartStepStart");
-      double          endTime = config.getDouble("endTime");
-      double          outTime = config.getDouble("outTime");
-      double          availMem = config.getDouble("availMem");
-      bool            rawFile = config.getBool("rawFile");
-      double          timeSeriesOutTime = config.getDouble("timeSeriesOutTime");
-      bool            logToFile = config.getBool("logToFile");
-      bool            spongeLayer = config.getBool("spongeLayer");
-      vector<double>  nupsStep = config.getVector<double>("nupsStep");
-      double          deltax = config.getDouble("deltax");
-      bool            newViscosity = config.getBool("newViscosity");
-      bool            newPressure = config.getBool("newPressure");
-      bool            pmDeltas = config.getBool("pmDeltas");
-      double          pmDeltaX1 = config.getDouble("pmDeltaX1");
-      double          pmDeltaX2 = config.getDouble("pmDeltaX2");
-      double          pmDeltaX3 = config.getDouble("pmDeltaX3");
-      double          vx1 = config.getDouble("vx1");
-      double          vx2 = config.getDouble("vx2");
-      double          vx3 = config.getDouble("vx3");
-      bool            yDir = config.getBool("yDir");
-      bool            zDir = config.getBool("zDir");
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid==0)
-         {
-            const char* str = pathname.c_str();
-            int status = mkdir(str, S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH);
-         }
-#endif 
-
-         if (myid==0)
-         {
-            stringstream logFilename;
-            logFilename<<pathname+"/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      //Sleep(30000);
-
-      if (myid==0) UBLOG(logINFO, "Testcase permeability");
-
-      string machinename = UbSystem::getMachineName();
-      //UBLOG(logINFO, "PID = " << myid << " Hostname: " << machinename);
-      //UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-      //UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-      //UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-
-      int blocknx1 = blocknx;
-      int blocknx2 = blocknx;
-      int blocknx3 = blocknx;
-
-      LBMReal rho_LB = 0.0;
-      double rhoLBinflow = dp_LB*3.0;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      double coord[6];
-      //double deltax;
-
-      Grid3DPtr grid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(restartStep, restartStepStart));
-      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
-      MPIIORestartCoProcessor rcp(grid, rSch, pathname, comm);
-      //////////////////////////////////////////////////////////////////////////
-
-      //BC Adapter
-      //////////////////////////////////////////////////////////////////////////////
-      BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new ThinWallNoSlipBCAlgorithm()));
-      //noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithm()));
-
-      BCAdapterPtr denBCAdapterInflow(new DensityBCAdapter(rhoLBinflow));
-      denBCAdapterInflow->setBcAlgorithm(BCAlgorithmPtr(new NonEqDensityBCAlgorithm()));
-
-      BCAdapterPtr denBCAdapterOutflow(new DensityBCAdapter(rho_LB));
-      denBCAdapterOutflow->setBcAlgorithm(BCAlgorithmPtr(new NonEqDensityBCAlgorithm()));
-      //////////////////////////////////////////////////////////////////////////////////
-      //BS visitor
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      bcVisitor.addBC(denBCAdapterInflow);
-      bcVisitor.addBC(denBCAdapterOutflow);
-
-      if (grid->getTimeStep() == 0)
-      {
-         if (myid==0) UBLOG(logINFO, "new start..");
-         if (myid==0) UBLOG(logINFO, "preprocess start..");
-
-         //UBLOG(logINFO, "new start PID = " << myid << " Hostname: " << machinename);
-         //UBLOG(logINFO, "new start PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         //UBLOG(logINFO, "new start PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         //UBLOG(logINFO, "new start PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-
-         string samplePathname = pathGeo+sampleFilename;
-
-         double deltaVoxelX1 = pmL1/(double)pmNX1;
-         double deltaVoxelX2 = pmL2/(double)pmNX2;
-         double deltaVoxelX3 = pmL3/(double)pmNX3;
-
-         if (pmDeltas)
-         {
-            deltaVoxelX1 = pmDeltaX1;
-            deltaVoxelX2 = pmDeltaX2;
-            deltaVoxelX3 = pmDeltaX3;
-         }
-
-         if (myid==0) UBLOG(logINFO, "read voxel matrix: start");
-         GbVoxelMatrix3DPtr sample(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-         if (rawFile)
-         {
-            sample->readMatrixFromRawFile<unsigned short>(samplePathname, GbVoxelMatrix3D::BigEndian);
-         }
-         else
-         {
-            sample->readMatrixFromVtiASCIIFile(samplePathname);
-         }
-
-         sample->setVoxelMatrixDelta((float)deltaVoxelX1, (float)deltaVoxelX2, (float)deltaVoxelX3);
-         sample->setVoxelMatrixMininum(0.0, 0.0, 0.0);
-         if (myid==0) UBLOG(logINFO, "read voxel matrix: end");
-
-
-         if (myid==0) UBLOG(logINFO, "rotate voxel matrix: start");
-         if (yDir)
-         {
-            sample->rotate90aroundZ();
-            //sample->rotate90aroundZ();
-            //sample->rotate90aroundZ();
-         }
-         if (zDir)
-         {
-            sample->rotate90aroundY();
-         }
-         if (myid==0) UBLOG(logINFO, "rotate voxel matrix: end");
-
-         if (myid==0) sample->writeToVTKImageDataASCII(pathname+"/geo/sample");
-        
-         ///////////////////////////////////////////////////////
-
-         ////////////////////////////////////////////////////////////////////////
-
-         double offset1 = sample->getLengthX1()/10.0;
-         double offset2 = 2.0*offset1;
-         //double offset2 = offset1;
-         //bounding box
-         double g_minX1 = sample->getX1Minimum()-offset1;
-         double g_minX2 = sample->getX2Minimum();
-         double g_minX3 = sample->getX3Minimum();
-
-         double g_maxX1 = sample->getX1Maximum()+offset2;
-         double g_maxX2 = sample->getX2Maximum();
-         double g_maxX3 = sample->getX3Maximum();
-
-         ////////////////////////////////////////////////////////////////////////////
-         double nx1_temp = floor((g_maxX1-g_minX1)/(deltax*(double)blocknx));
-
-         deltax = (g_maxX1-g_minX1)/(nx1_temp*(double)blocknx);
-
-         // g_maxX3 -= 0.5* deltax;
-          ////////////////////////////////////////////////////////////////////////////
-
-          ////deltax = (g_maxX3-g_minX3) /(nx3*blocknx3);
-
-         double blockLength = (double)blocknx1*deltax;
-
-         grid->setPeriodicX1(false);
-         grid->setPeriodicX2(false);
-         grid->setPeriodicX3(false);
-         grid->setDeltaX(deltax);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid==0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "rho_LB = "<<rho_LB);
-            UBLOG(logINFO, "nu_LB = "<<nu_LB);
-            UBLOG(logINFO, "dp_LB = "<<dp_LB);
-            UBLOG(logINFO, "dx = "<<deltax<<" m");
-            UBLOG(logINFO, "numOfThreads = "<<numOfThreads);
-            UBLOG(logINFO, "path = "<<pathname);
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         //walls
-         GbCuboid3DPtr addWallYmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_minX2, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1-blockLength, g_maxX2, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         
-         //PM interactor
-         D3Q27InteractorPtr sampleInt(new D3Q27Interactor(sample, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         //wall interactors
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-
-         D3Q27InteractorPtr inflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoInflow, grid, denBCAdapterInflow, Interactor3D::SOLID));
-
-         //outflow
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoOutflow, grid, denBCAdapterOutflow, Interactor3D::SOLID));
-
-
-         //UBLOG(logINFO, "PID = "<<myid<<" Hostname: "<<machinename);
-         //UBLOG(logINFO, "PID = "<<myid<<" Total Physical Memory (RAM): "<<Utilities::getTotalPhysMem());
-         //UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used: "<<Utilities::getPhysMemUsed());
-         //UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe());
-
-
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::RECURSIVE));
-         ////////////////////////////////////////////
-         //Zoltan
-         //Grid3DVisitorPtr zoltanVisitor(new ZoltanPartitioningGridVisitor(comm, D3Q27System::BSW, 1));
-         //grid->accept(zoltanVisitor);
-
-         /////delete solid blocks
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.addInteractor(sampleInt);
-         intHelper.selectBlocks();
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         ppblocks->process(0);
-         ppblocks.reset();
-
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nod = nob * (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nodg = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-         double needMemAll = double(nodg*(27*sizeof(double)+sizeof(int)+sizeof(float)*4));
-         double needMem = needMemAll/double(comm->getNumberOfProcesses());
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Number of blocks = "<<nob);
-            UBLOG(logINFO, "Number of nodes  = "<<nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level "<<level<<" = "<<nobl);
-               UBLOG(logINFO, "Number of nodes for level "<<level<<" = "<<nobl*nodb);
-            }
-            UBLOG(logINFO, "Necessary memory  = "<<needMemAll<<" bytes");
-            UBLOG(logINFO, "Necessary memory per process = "<<needMem<<" bytes");
-            UBLOG(logINFO, "Available memory per process = "<<availMem<<" bytes");
-         }
-
-         LBMKernelPtr kernel;
-         kernel = LBMKernelPtr(new IncompressibleCumulantLBMKernel(blocknx1, blocknx2, blocknx3, IncompressibleCumulantLBMKernel::NORMAL));
-
-         //BCProcessorPtr bcProc(new BCProcessor());
-         BCProcessorPtr bcProc = BCProcessorPtr(new ThinWallBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         //BC
-         intHelper.setBC();
-
-         //BS visitor
-         grid->accept(bcVisitor);
-
-         //Press*1.6e8+(14.76-coordsX)/3.5*5000
-         //initialization of distributions
-         mu::Parser fct;
-         fct.SetExpr("(x1max-x1)/l*dp*3.0");
-         fct.DefineConst("dp", dp_LB);
-         fct.DefineConst("x1max", g_maxX1);
-         fct.DefineConst("l", g_maxX1-g_minX1);
-
-         InitDistributionsBlockVisitor initVisitor(nu_LB, rho_LB);
-         initVisitor.setRho(fct);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         WriteBoundaryConditionsCoProcessorPtr ppgeo(
-            new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-         ppgeo->process(0);
-         ppgeo.reset();
-
-         coord[0] = sample->getX1Minimum();
-         coord[1] = sample->getX2Minimum();
-         coord[2] = sample->getX3Minimum();
-         coord[3] = sample->getX1Maximum();
-         coord[4] = sample->getX2Maximum();
-         coord[5] = sample->getX3Maximum();
-
-         ////////////////////////////////////////////////////////
-         UbFileOutputASCII outf(pathname+"/checkpoints/coord.txt");
-         outf.writeDouble(deltax);
-         outf.writeDouble(coord[0]);
-         outf.writeDouble(coord[1]);
-         outf.writeDouble(coord[2]);
-         outf.writeDouble(coord[3]);
-         outf.writeDouble(coord[4]);
-         outf.writeDouble(coord[5]);
-         outf.writeDouble(g_minX1);
-         outf.writeDouble(g_maxX1);
-         outf.writeDouble(availMem);
-         outf.writeDouble(needMem);
-         ////////////////////////////////////////////////////////
-
-         grid->addInteractor(inflowInt);
-
-         if (myid==0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         ////////////////////////////////////////////////////////
-         UbFileInputASCII inf(pathname+"/checkpoints/coord.txt");
-         deltax = inf.readDouble();
-         coord[0] = inf.readDouble();
-         coord[1] = inf.readDouble();
-         coord[2] = inf.readDouble();
-         coord[3] = inf.readDouble();
-         coord[4] = inf.readDouble();
-         coord[5] = inf.readDouble();
-         double g_minX1 = inf.readDouble();
-         double g_maxX1 = inf.readDouble();
-         double availMem = inf.readDouble();
-         double needMem = inf.readDouble();
-         ////////////////////////////////////////////////////////
-
-         rcp.restart((int)restartStep);
-         grid->setTimeStep(restartStep);
-
-         //new nu
-         if (newViscosity)
-         {
-            ViscosityBlockVisitor nuVisitor(nu_LB);
-            grid->accept(nuVisitor);
-         }
-
-         //new dp
-         if (newPressure)
-         {
-            Grid3D::Interactor3DSet interactors = grid->getInteractors();
-            interactors[0]->setGrid3D(grid);
-            boost::dynamic_pointer_cast<D3Q27Interactor>(interactors[0])->deleteBCAdapter();
-            BCAdapterPtr denBCAdapterFront(new DensityBCAdapter(rhoLBinflow));
-            denBCAdapterFront->setBcAlgorithm(BCAlgorithmPtr(new EqDensityBCAlgorithm()));
-            boost::dynamic_pointer_cast<D3Q27Interactor>(interactors[0])->addBCAdapter(denBCAdapterFront);
-            interactors[0]->updateInteractor();
-         }
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "rho_LB = "<<rho_LB);
-            UBLOG(logINFO, "nu_LB = "<<nu_LB);
-            UBLOG(logINFO, "dp_LB = "<<dp_LB);
-            UBLOG(logINFO, "dx = "<<deltax<<" m");
-         }
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //BS visitor
-         grid->accept(bcVisitor);
-
-         if (myid==0) UBLOG(logINFO, "Restart - end");
-      }
-
-      UbSchedulerPtr nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-
-      WriteMacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      deltax = grid->getDeltaX(baseLevel);
-      double dxd2 = deltax/2.0;
-
-      IntegrateValuesHelperPtr ih1(new IntegrateValuesHelper(grid, comm, coord[0]-dxd2*10.0, coord[1]-dxd2, coord[2]-dxd2,
-         coord[0]-dxd2*10.0-2.0*dxd2, coord[4]+dxd2, coord[5]+dxd2));
-
-      //D3Q27IntegrateValuesHelperPtr ih2(new D3Q27IntegrateValuesHelper(grid, comm, coord[3]/2.0, coord[1] - dxd2, coord[2] - dxd2,
-      //   coord[3]/2.0 + 2.0*dxd2, coord[4] + dxd2, coord[5] + dxd2));
-      IntegrateValuesHelperPtr ih2(new IntegrateValuesHelper(grid, comm, coord[0], coord[1], coord[2], coord[3], coord[4], coord[5]));
-
-      IntegrateValuesHelperPtr ih3(new IntegrateValuesHelper(grid, comm, coord[3]+dxd2*10.0, coord[1]-dxd2, coord[2]-dxd2,
-         coord[3]+dxd2*10.0+2.0*dxd2, coord[4]+dxd2, coord[5]+dxd2));
-
-      //D3Q27IntegrateValuesHelperPtr ih1(new D3Q27IntegrateValuesHelper(grid, comm, coord[0], coord[1], coord[2], coord[3], coord[4], coord[5]));
-      if (myid==0) GbSystem3D::writeGeoObject(ih1->getBoundingBox().get(), pathname+"/geo/ih1", WbWriterVtkXmlBinary::getInstance());
-      if (myid==0) GbSystem3D::writeGeoObject(ih2->getBoundingBox().get(), pathname+"/geo/ih2", WbWriterVtkXmlBinary::getInstance());
-      if (myid==0) GbSystem3D::writeGeoObject(ih3->getBoundingBox().get(), pathname+"/geo/ih3", WbWriterVtkXmlBinary::getInstance());
-
-      double factorp = 1; // dp_real / dp_LB;
-      double factorv = 1;// dx / dt;
-      UbSchedulerPtr stepMV(new UbScheduler(timeSeriesOutTime));
-
-      TimeseriesCoProcessor tsp1(grid, stepMV, ih1, pathname+timeSeriesFile+"_1", comm);
-      TimeseriesCoProcessor tsp2(grid, stepMV, ih2, pathname+timeSeriesFile+"_2", comm);
-      TimeseriesCoProcessor tsp3(grid, stepMV, ih3, pathname+timeSeriesFile+"_3", comm);
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Total Physical Memory (RAM): "<<Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used: "<<Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe());
-      }
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepSch));
-      if (myid==0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid==0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (exception& e)
-   {
-      cerr<<e.what()<<endl<<flush;
-   }
-   catch (string& s)
-   {
-      cerr<<s<<endl;
-   }
-   catch (...)
-   {
-      cerr<<"unknown exception"<<endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-
-   if (argv!=NULL)
-   {
-      if (argv[1]!=NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout<<"Configuration file is missing!"<<endl;
-      }
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/aperm/configBombadil2.txt b/apps/cpu/aperm/configBombadil2.txt
deleted file mode 100644
index 2b88a2fd94769d5ad3fb702f9ec4ed24081c7bf7..0000000000000000000000000000000000000000
--- a/apps/cpu/aperm/configBombadil2.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-pathname = d:/temp/aperm5
-pathGeo = d:/Projects/SFB880/GeometrienPoroeseMedien/isotrop/PA80-110
-#pathGeo = d:/Projects/SFB880/GeometrienPoroeseMedien/isotrop/SBP120
-numOfThreads = 4
-availMem = 5e9
-logToFile = false
-
-#poroeses Medium
-rawFile = false
-sampleFilename = /alu_80-110.vti
-#sampleFilename = /SBP120s500_center.vti
-#sampleFilename = /Sinterbronze_SBP120_1358x1376x1572_new.raw
-
-#sampleFilename = /1.raw
-
-#Diminsion in Voxel
-pmNX1 = 200
-pmNX2 = 200
-pmNX3 = 200
-
-#pmNX1 = 500
-#pmNX2 = 500
-#pmNX3 = 500
-
-#pmNX1 = 1358
-#pmNX2 = 1376
-#pmNX3 = 1572
-
-
-#Threshold
-lthreshold = 29041
-uthreshold = 65535
-
-#lthreshold = 38370
-
-#Diminsion in m
-pmL1 = 0.726e-3
-pmL2 = 0.75e-3
-pmL3 = 0.786e-3
-
-pmDeltas = true
-
-#deltas [m]
-pmDeltaX1 = 3.6e-6
-pmDeltaX2 = 3.6e-6
-pmDeltaX3 = 3.6e-6
-
-#pmDeltaX1 = 3.75e-6
-#pmDeltaX2 = 3.75e-6
-#pmDeltaX3 = 3.75e-6
-
-yDir = false
-zDir = false
-
-#grid
-blocknx = 95
-nx3 = 5
-deltax = 10e-6
-spongeLayer=false
-
-#physic
-newPressure = false
-dp_LB = 1e-6
-
-newViscosity = false
-nu_LB = 0.0005
-
-vx1=0
-vx2=0
-vx3=0
-
-timeSeriesFile = /timeseries/1
-timeSeriesOutTime = 100
-
-nupsStep = 10000 10000 10000000
-
-restartStepStart = 240000
-
-newStart    = false
-restartStep = 10
-
-cpStep      = 20
-cpStepStart = 20
-
-outTimeStart = 0
-outTimeStep = 1
-
-endTime = 20
-
-
diff --git a/apps/cpu/aperm/configBombadilSBP120s500.txt b/apps/cpu/aperm/configBombadilSBP120s500.txt
deleted file mode 100644
index 2b91e335d00219b7c10566d4e2fb65de81df7dd2..0000000000000000000000000000000000000000
--- a/apps/cpu/aperm/configBombadilSBP120s500.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-#Simulation parameters for determitatoin of permeability
-#SBP120
-
-pathname = d:/temp/perm
-pathGeo = d:/Projects/SFB880/GeometrienPoroeseMedien/isotrop/SBP120
-numOfThreads = 4
-availMem = 3e9
-logToFile = false
-
-#porous media
-rawFile = false
-sampleFilename = /SBP120s500_center_closed.vti
-
-#diminsions [voxel]
-pmNX1 = 500
-pmNX2 = 500
-pmNX3 = 500
-
-#threshold
-#lthreshold = 38370
-#uthreshold = 65535
-lthreshold = 1
-uthreshold = 1
-
-
-#diminsions [m]
-pmL1 = 1.87e-3
-pmL2 = 1.87e-3
-pmL3 = 1.87e-3
-
-#grid
-#blocknx = 30
-#nx3 = 5
-blocknx = 50
-nx3 = 10
-spongeLayer=false
-
-#physic
-dp_LB = 1e-7
-nu_LB = 0.01
-
-timeSeriesFile = /timeseries/simSBP120_1
-timeSeriesOutTime = 10
-
-restartStep = 200
-restartStepStart=200
-
-endTime = 60000
-outTime = 100
diff --git a/apps/cpu/aperm/config_HLRS_SBP120.cfg b/apps/cpu/aperm/config_HLRS_SBP120.cfg
deleted file mode 100644
index 54ceee42016bd06904a472fedccb35c68bbb06be..0000000000000000000000000000000000000000
--- a/apps/cpu/aperm/config_HLRS_SBP120.cfg
+++ /dev/null
@@ -1,43 +0,0 @@
-#HLRS
-#Simulation parameters for determitatoin of permeability
-#SBP120
-
-pathname = /univ_1/ws1/ws/xrmkuchr-perm-0/SBP120
-pathGeo = /univ_1/ws1/ws/xrmkuchr-perm-0/SBP120/Data
-numOfThreads = 24
-availMem = 128e9
-logToFile = true
-#porous media
-rawFile = false
-sampleFilename = /Sinterbronze_SBP120_1358x1376x1572.raw
-
-#diminsions [voxel]
-pmNX1 = 1358
-pmNX2 = 1376
-pmNX3 = 1572
-
-#threshold
-lthreshold = 38370
-uthreshold = 65535
-
-#diminsions [m]
-pmL1 = 5092499.73e-9
-pmL2 = 5159999.85e-9
-pmL3 = 5894999.98e-9
-
-#grid
-blocknx = 64
-nx3 = 22
-
-#physic
-dp_LB = 1e-7
-nu_LB = 0.01
-
-timeSeriesFile = /timeseries/simSBP120_1
-timeSeriesOutTime = 100
-
-restartStep = 1000
-restartStepStart=1000
-
-endTime = 2000
-outTime = 1000
diff --git a/apps/cpu/bChannelA/CMakeLists.txt b/apps/cpu/bChannelA/CMakeLists.txt
deleted file mode 100644
index 51f2c4be524155746529538ee10d9511c3dcbdc7..0000000000000000000000000000000000000000
--- a/apps/cpu/bChannelA/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(bchannel)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(bchannel BINARY)
diff --git a/apps/cpu/bChannelA/bChannelA.cpp b/apps/cpu/bChannelA/bChannelA.cpp
deleted file mode 100644
index 388ca594cda49bd48e4f6eaf3ad8342b5f469ef9..0000000000000000000000000000000000000000
--- a/apps/cpu/bChannelA/bChannelA.cpp
+++ /dev/null
@@ -1,527 +0,0 @@
-#include <iostream>
-#include <string>
-#include "VirtualFluids.h"
-
-using namespace std;
-
-void generateCubes(double top_porosity, double bottom_porosity, std::array<double,3> dimensions, std::array<double,3> cubes_in_direction, string pathOut, SPtr<Grid3D> grid, SPtr<BCAdapter> noSlipBCAdapter)
-{
-   double x = dimensions[0];
-   double y = dimensions[1];
-   double z = dimensions[2];
-   double num_x_cubes = cubes_in_direction[0];
-   double num_y_cubes = cubes_in_direction[1];
-   double num_z_cubes = cubes_in_direction[2];
-
-   double H = z / 2.;
-
-   double outer_cube_side_length = 20;
-   double inner_cube_side_length = 10;
-
-   double dx = (x - outer_cube_side_length) / (num_x_cubes - 1);
-   double dy = (y - outer_cube_side_length) / (num_y_cubes - 1);
-   double dz = 20; //(z - outer_cube_side_length) / (num_z_cubes - 1);
-
-   double porosity_step_z = (top_porosity - bottom_porosity) / (num_z_cubes - 1);
-   double porosity = float(bottom_porosity);
-   double cube_side_length = pow(1.-porosity, 1. / 3) * outer_cube_side_length;
-   double initial_x = 0. + outer_cube_side_length / 2.;
-   double initial_y = 0. + outer_cube_side_length / 2.;
-   double initial_z = 0. + outer_cube_side_length / 2.;
-
-   double current_z = initial_z;
-   
-   double cube_side_length_temp = 0; 
-
-   SPtr<GbObject3D> cube(new GbCuboid3D(0, 0, 0, inner_cube_side_length, inner_cube_side_length, inner_cube_side_length));
-   double scaleFactor = cube_side_length / inner_cube_side_length;
-   cube->scale(scaleFactor, scaleFactor, scaleFactor);
-
-   std::vector< SPtr<Interactor3D> > interactors;
-
-   SPtr<D3Q27Interactor> cubeInt(new D3Q27Interactor(cube, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-   int num = 0;
-   for(int k = 0; k < num_z_cubes; k++)
-   {
-      double current_y = initial_y;
-      for(int j = 0; j < num_y_cubes; j++)
-      {
-         double current_x = initial_x;
-         for(int i = 0; i < num_x_cubes; i++)
-         {
-            cube->setCenterCoordinates(current_x, current_y, current_z);
-            //GbSystem3D::writeGeoObject(cube.get(), pathOut + "/cubes/cube"+ UbSystem::toString(num), WbWriterVtkXmlBinary::getInstance());
-            std::vector< std::shared_ptr<Block3D> > blockVector;
-            UbTupleInt3 blockNX=grid->getBlockNX();
-            SPtr<GbObject3D> geoObject(cubeInt->getGbObject3D());
-            double ext = 0.0;
-            std::array<double, 6> AABB ={ geoObject->getX1Minimum(),geoObject->getX2Minimum(),geoObject->getX3Minimum(),geoObject->getX1Maximum(),geoObject->getX2Maximum(),geoObject->getX3Maximum() };
-            grid->getBlocksByCuboid(AABB[0]-(double)val<1>(blockNX)*ext, AABB[1]-(double)val<2>(blockNX)*ext, AABB[2]-(double)val<3>(blockNX)*ext, AABB[3]+(double)val<1>(blockNX)*ext, AABB[4]+(double)val<2>(blockNX)*ext, AABB[5]+(double)val<3>(blockNX)*ext, blockVector);
-            cubeInt->getBcNodeIndicesMap();
-            dynamic_pointer_cast<Interactor3D>(cubeInt)->removeBcBlocks();
-            for (std::shared_ptr<Block3D> block : blockVector)
-            {
-               if (block->getKernel())
-               {
-                  cubeInt->setBCBlock(block);
-               }
-            }
-            cubeInt->initInteractor();
-            num ++;
-            current_x += dx;
-         }
-         current_y += dy;
-      }
-      current_z += dz;
-      porosity += porosity_step_z;
-      cube_side_length_temp = cube_side_length;
-      cube_side_length = pow(1.-porosity, 1. / 3) * outer_cube_side_length;
-      scaleFactor = cube_side_length / cube_side_length_temp;
-      cube->scale(scaleFactor, scaleFactor, scaleFactor);
-   }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathOut           = config.getValue<string>("pathOut");
-      string          pathGeo           = config.getValue<string>("pathGeo");
-      int             numOfThreads      = config.getValue<int>("numOfThreads");
-      vector<int>     blocknx           = config.getVector<int>("blocknx");
-      double          u_LB              = config.getValue<double>("u_LB");
-      double          restartStep       = config.getValue<double>("restartStep");
-      double          cpStep            = config.getValue<double>("cpStep");
-      double          cpStart           = config.getValue<double>("cpStart");
-      double          endTime           = config.getValue<double>("endTime");
-      double          outTime           = config.getValue<double>("outTime");
-      double          availMem          = config.getValue<double>("availMem");
-      bool            logToFile         = config.getValue<bool>("logToFile");
-      double          deltaXfine        = config.getValue<double>("deltaXfine");
-      int             refineLevel       = config.getValue<int>("refineLevel");
-      double          Re                = config.getValue<double>("Re");
-      double          timeAvStart       = config.getValue<double>("timeAvStart");
-      double          timeAvStop        = config.getValue<double>("timeAvStop");
-      bool            newStart          = config.getValue<bool>("newStart");
-      vector<double>  nupsStep          = config.getVector<double>("nupsStep");
-      vector<double>  boundingBox       = config.getVector<double>("boundingBox");
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathOut.c_str();
-            mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if (myid == 0)
-         {
-            stringstream logFilename;
-            logFilename << pathOut + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      //Sleep(30000);
-
-      if (myid == 0) UBLOG(logINFO, "Testcase porous channel");
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      double deltaXcoarse = deltaXfine*(double)(1<<refineLevel);
-
-      LBMReal rho_LB = 0.0;
-      double rhoReal = 1.2041; //(kg/m3)
-      double uReal = 48; //m/s
-      double lReal = 0.008/2.0;//m
-      double hLB = lReal / deltaXcoarse;
-      double Ma = 0.13;//Ma-Real!
-      double csReal = uReal / Ma;
-      LBMUnitConverter unitConverter(lReal, csReal, rhoReal, hLB);
-      if (myid==0) UBLOG(logINFO, unitConverter.toString());
-
-      //double coord[6];
-
-      vector<double> origin(3);
-      origin[0] = 0;
-      origin[1] = 0;
-      origin[2] = 0;
-
-      //real velocity is 49.63 m/s
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      //BC adapters
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-
-      SPtr<BCProcessor> bcProc;
-      bcProc = SPtr<BCProcessor>(new BCProcessor());
-
-      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel());
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel());
-      
-      mu::Parser fctForcingX1;
-      fctForcingX1.SetExpr("Fx1");
-      fctForcingX1.DefineConst("Fx1", 1.0e-6);
-      kernel->setWithForcing(true);
-      
-      kernel->setBCProcessor(bcProc);
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<UbScheduler> rSch(new UbScheduler(cpStep, cpStart));
-      SPtr<MPIIORestartCoProcessor> restartCoProcessor(new MPIIORestartCoProcessor(grid, rSch, pathOut, comm));
-      restartCoProcessor->setLBMKernel(kernel);
-      restartCoProcessor->setBCProcessor(bcProc);
-
-      SPtr<UbScheduler> mSch(new UbScheduler(cpStep, cpStart));
-      SPtr<MPIIOMigrationCoProcessor> migCoProcessor(new MPIIOMigrationCoProcessor(grid, mSch, pathOut+"/mig", comm));
-      migCoProcessor->setLBMKernel(kernel);
-      migCoProcessor->setBCProcessor(bcProc);
-      //////////////////////////////////////////////////////////////////////////
-
-      //bounding box
-      double g_minX1 = boundingBox[0];
-      double g_minX2 = boundingBox[1];
-      double g_minX3 = boundingBox[2];
-
-      double g_maxX1 = boundingBox[3];
-      double g_maxX2 = boundingBox[4];
-      double g_maxX3 = boundingBox[5];
-
-      double blockLength = (double)blocknx[0]*deltaXcoarse;
-
-      double channel_hight = (g_maxX3-g_minX3)/2.0;
-      double channel_hight_LB = channel_hight/deltaXcoarse;
-      double d_p = channel_hight/20.0;
-      //////////////////////////////////////////////////////////////////////////
-      double nu_LB = (u_LB*channel_hight_LB)/Re;
-      //////////////////////////////////////////////////////////////////////////
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "Parameters:");
-         UBLOG(logINFO, "Re                  = " << Re);
-         UBLOG(logINFO, "u_LB                = " << u_LB);
-         UBLOG(logINFO, "rho_LB              = " << rho_LB);
-         UBLOG(logINFO, "nu_LB               = " << nu_LB);
-         UBLOG(logINFO, "dx coarse           = " << deltaXcoarse);
-         UBLOG(logINFO, "dx fine             = " << deltaXfine);
-         UBLOG(logINFO, "channel_high        = " << channel_hight);
-         UBLOG(logINFO, "channel_high_LB     = " << channel_hight_LB);
-         UBLOG(logINFO, "number of levels    = " << refineLevel + 1);
-         UBLOG(logINFO, "number of processes = " << comm->getNumberOfProcesses());
-         UBLOG(logINFO, "number of threads   = " << numOfThreads);
-         UBLOG(logINFO, "path = " << pathOut);
-         UBLOG(logINFO, "Preprocess - start");
-      }
-
-
-      if (newStart)
-      {
-         if (myid == 0) UBLOG(logINFO, "new start...");
-
-         
-
-         grid->setPeriodicX1(true);
-         grid->setPeriodicX2(true);
-         grid->setPeriodicX3(false);
-         grid->setDeltaX(deltaXcoarse);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-
-         SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathOut + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-
-         //////////////////////////////////////////////////////////////////////////
-         //refinement
-         double blockLengthX3Fine = grid->getDeltaX(refineLevel) * blocknx[2];
-         double refHight = 0.002;
-
-         GbCuboid3DPtr refineBoxTop(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3-refHight, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxTop.get(), pathOut + "/geo/refineBoxTop", WbWriterVtkXmlASCII::getInstance());
-
-         //GbCuboid3DPtr refineBoxBottom(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3+offsetMinX3+blockLengthX3Fine));
-         GbCuboid3DPtr refineBoxBottom(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3+refHight));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxBottom.get(), pathOut + "/geo/refineBoxBottom", WbWriterVtkXmlASCII::getInstance());
-
-         if (refineLevel > 0)
-         {
-            if (myid == 0) UBLOG(logINFO, "Refinement - start");
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel, comm);
-            refineHelper.addGbObject(refineBoxTop, refineLevel);
-            refineHelper.addGbObject(refineBoxBottom, refineLevel);
-            refineHelper.refine();
-            if (myid == 0) UBLOG(logINFO, "Refinement - end");
-         }
-         //////////////////////////////////////////////////////////////////////////
-
-         //walls
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathOut+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathOut+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-
-         //wall interactors
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         //METIS
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::RECURSIVE));
-         
-         //DEBUG METIS 
-         //////////////////////////////////////////////////////////////////////////
-         
-         //SimpleGeometricPartitioner sgp;
-         //UbTupleInt3 dim = sgp.createDimensions(30, 20, 20, 20);
-
-
-         //dynamic_pointer_cast<MetisPartitioningGridVisitor>(metisVisitor)->setNumberOfProcesses(1500);
-         //grid->accept(metisVisitor);
-
-         //SPtr<Grid3DVisitor> zoltanVisitor(new ZoltanPartitioningGridVisitor(comm, D3Q27System::BSW));
-         //grid->accept(zoltanVisitor);
-
-         //WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-         //ppblocks.process(0);
-         //return;
-         //////////////////////////////////////////////////////////////////////////
-
-         ////////////////////////////////////////////
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.selectBlocks();
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         {
-            WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppblocks.process(0);
-         }
-
-         unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-         int ghostLayer = 3;
-         unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-         unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-         unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-         double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-            UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         //////////////////////////////////
-         //undef nodes for refinement
-         if (refineLevel > 0)
-         {
-            SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //BC
-         intHelper.setBC();
-
-         double bottom_porosity = 0.875;
-         double top_porosity = 1 - (1 - bottom_porosity) / 9;
-         generateCubes(top_porosity, bottom_porosity, std::array<double, 3>{600., 400., 400.}, std::array<double, 3>{30., 20., 9.}, pathOut, grid, noSlipBCAdapter);
-
-         grid->accept(bcVisitor);
-
-         mu::Parser inflowProfileVx1, inflowProfileVx2, inflowProfileVx3, inflowProfileRho;
-         inflowProfileVx1.SetExpr("x3 < h ? 0.0 : uLB-1e-5*(x1+x2+x3)");
-         inflowProfileVx1.DefineConst("uLB", u_LB);
-         inflowProfileVx1.DefineConst("h", channel_hight-d_p);
-
-         InitDistributionsBlockVisitor initVisitor;
-         initVisitor.setVx1(inflowProfileVx1);
-         //initVisitor.setVx1(u_LB);
-         //initVisitor.setVx2(u_LB);
-         //initVisitor.setVx3(u_LB);
-
-         //initVisitor.setVx1(inflowProfileVx1);
-         initVisitor.setVx1(0);
-
-         grid->accept(initVisitor);
-
-         ////set connectors
-         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //Postrozess
-         {
-            SPtr<UbScheduler> geoSch(new UbScheduler(1));
-            WriteBoundaryConditionsCoProcessor ppgeo(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppgeo.process(0);
-         }
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         restartCoProcessor->restart((int)restartStep);
-         //migCoProcessor->restart((int)restartStep);
-         grid->setTimeStep(restartStep);
-         ////////////////////////////////////////////////////////////////////////////
-         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         grid->accept(bcVisitor);
-
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-      }
-     
-      SPtr<UbScheduler> nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      std::shared_ptr<NUPSCounterCoProcessor> nupsCoProcessor(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTime));
-
-      SPtr<WriteMacroscopicQuantitiesCoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, stepSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-      writeMQCoProcessor->process(0);
-
-      SPtr<GbObject3D> bbBox(new GbCuboid3D(g_minX1-blockLength, (g_maxX2-g_minX2)/2.0, g_minX3-blockLength, g_maxX1+blockLength, (g_maxX2-g_minX2)/2.0+deltaXcoarse, g_maxX3+blockLength));
-      if (myid==0) GbSystem3D::writeGeoObject(bbBox.get(), pathOut+"/geo/bbBox", WbWriterVtkXmlASCII::getInstance());
-      SPtr<WriteMQFromSelectionCoProcessor> writeMQSelectCoProcessor(new WriteMQFromSelectionCoProcessor(grid, stepSch, bbBox, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-
-
-      SPtr<UbScheduler> AdjForcSch(new UbScheduler());
-      AdjForcSch->addSchedule(10, 0, 10000000);
-      SPtr<IntegrateValuesHelper> intValHelp(new IntegrateValuesHelper(grid, comm, g_minX1, g_minX2, channel_hight, g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(intValHelp->getBoundingBox().get(), pathOut + "/geo/IntValHelp", WbWriterVtkXmlBinary::getInstance());
-
-      double vxTarget=u_LB;
-      SPtr<AdjustForcingCoProcessor> AdjForcCoProcessor(new AdjustForcingCoProcessor(grid, AdjForcSch, pathOut, intValHelp, vxTarget, comm));
-
-
-      std::vector<double> levelCoords;
-      std::vector<int> levels;
-      std::vector<double> bounds;
-
-      bounds.push_back(g_minX1);
-      bounds.push_back(g_minX2);
-      bounds.push_back(g_minX3);
-      bounds.push_back(g_maxX1);
-      bounds.push_back(g_maxX2);
-      bounds.push_back(g_maxX3);
-      levels.push_back(0);
-      levelCoords.push_back(g_minX3);
-      levelCoords.push_back(g_maxX3);
-      SPtr<UbScheduler> tavSch(new UbScheduler(1, timeAvStart, timeAvStop));
-      SPtr<CoProcessor> timeAveragingCoProcessor(new TimeAveragedValuesCoProcessor(grid, pathOut, WbWriterVtkXmlBinary::getInstance(), tavSch, comm,TimeAveragedValuesCoProcessor::Density |  TimeAveragedValuesCoProcessor::Velocity | TimeAveragedValuesCoProcessor::Fluctuations | TimeAveragedValuesCoProcessor::Triplecorrelations, levels, levelCoords, bounds));
-      
-      
-      //create line time series
-      //SPtr<UbScheduler> tpcSch(new UbScheduler(1,1,3));
-      //GbPoint3DPtr p1(new GbPoint3D(0.0,0.005,0.01));
-      //GbPoint3DPtr p2(new GbPoint3D(0.064,0.005,0.01));
-      //SPtr<GbLine3D> line(new GbLine3D(p1.get(),p2.get()));
-      //SPtr<GbLine3D> line(new GbLine3D(new GbPoint3D(0.0,0.005,0.01),new GbPoint3D(0.064,0.005,0.01)));
-      //LineTimeSeriesCoProcessor lineTs(grid, tpcSch,pathOut+"/TimeSeries/line1.csv",line, 0,comm);
-      //if (myid==0) lineTs.writeLine(pathOut+"/geo/line1");
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      omp_set_num_threads(numOfThreads);
-      SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, (int)endTime));
-      calculator->addCoProcessor(nupsCoProcessor);
-      calculator->addCoProcessor(AdjForcCoProcessor);
-      calculator->addCoProcessor(migCoProcessor);
-      //calculator->addCoProcessor(restartCoProcessor);
-      calculator->addCoProcessor(writeMQSelectCoProcessor);
-      calculator->addCoProcessor(writeMQCoProcessor);
-      calculator->addCoProcessor(timeAveragingCoProcessor);
-
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (mu::Parser::exception_type &e)
-   {
-      std::cout << e.GetMsg() << std::endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   //Sleep(30000);
-
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout << "Configuration file is missing!" << endl;
-      }
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/bChannelA/configBombadilpChannel.cfg b/apps/cpu/bChannelA/configBombadilpChannel.cfg
deleted file mode 100644
index 123ee12a91c9d7ed7d899ad549b961753b65cc1b..0000000000000000000000000000000000000000
--- a/apps/cpu/bChannelA/configBombadilpChannel.cfg
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-#Simulation parameters for porous channel
-#
-
-pathOut = e:/temp/BreugemChannelAnisotrop
-pathGeo = g:/pChannelBA/cubes
-numOfThreads = 1
-availMem = 14e9
-logToFile = false
-
-
-#grid
-boundingBox = 0 0 0 60 40 40
-#boundingBox = 1 1 1 4 4 4
-refineLevel = 0
-deltaXfine  = 1
-#deltaXfine  = 1
-blocknx = 20 20 20
-#blocknx = 4 4 4
-u_LB = 0.1
-Re = 5500
-#Re = 1
-
-newStart = true
-restartStep = 2000
-cpStep = 10000
-cpStart = 10000
-
-timeAvStart = 0
-timeAvStop = 200000
-
-nupsStep = 1000 1000 10000000 
-outTime = 100
-endTime = 500
-
- 
-
-
diff --git a/apps/cpu/bChannelVA/Averaging.cpp b/apps/cpu/bChannelVA/Averaging.cpp
deleted file mode 100644
index d7604b4b087c55f15b01f2bd486f7665efc1271b..0000000000000000000000000000000000000000
--- a/apps/cpu/bChannelVA/Averaging.cpp
+++ /dev/null
@@ -1,2340 +0,0 @@
-#include "Averaging.h"
-#include "UbLogger.h"
-#include "MemoryUtil.h"
-#include "UbSystem.h"
-
-#include "ReadDataSet.h"
-
-//#include "Postprocessing.h"
-#include <vtkSmartPointer.h>
-#include <vtkDataSet.h>
-#include <vtkPlane.h>
-#include <vtkCutter.h>
-#include <vtkDataArray.h>
-#include <vtkUnstructuredGrid.h>
-#include <vtkPointData.h>
-
-#include <vtkProbeFilter.h>
-#include <vtkImageData.h>
-#include <vtkXMLImageDataWriter.h>
-#include <vtkMultiBlockDataSet.h>
-#include <vtkThreshold.h>
-#include <vtkCellArray.h>
-#include <vtkCellData.h>
-#include <vtkDoubleArray.h>
-#include <vtkXMLUnstructuredGridWriter.h>
-#include <vtkFileOutputWindow.h>
-#include <vtkXMLPUnstructuredGridReader.h>
-
-#include <omp.h>
-#include <mpi.h>
-
-using namespace std;
-void Averaging::createGeoMatrix(std::string dataNameG)
-{
-   UBLOG(logINFO, "createGeoMatrix:start");
-
-   vtkSmartPointer<vtkTimerLog> timer = vtkSmartPointer<vtkTimerLog>::New();
-   vtkSmartPointer<vtkTimerLog> level_grid_timer = vtkSmartPointer<vtkTimerLog>::New();
-   vtkSmartPointer<vtkTimerLog> level_interp_timer = vtkSmartPointer<vtkTimerLog>::New();
-   vtkSmartPointer<vtkTimerLog> timer_total = vtkSmartPointer<vtkTimerLog>::New();
-
-   timer_total->StartTimer();
-
-   UBLOG(logINFO, "read data set from " << dataNameG << ": start");
-   timer->StartTimer();
-
-   vtkXMLPUnstructuredGridReader* reader = vtkXMLPUnstructuredGridReader::New();
-   reader->SetFileName(dataNameG.c_str());
-   reader->Update();
-
-   UBLOG(logINFO, "read data set from " + dataNameG + ": end");
-   timer->StopTimer();
-   UBLOG(logINFO, "read data set time: " << UbSystem::toString(timer->GetElapsedTime()) + " s");
-
-   geoMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 1);
-
-   UBLOG(logINFO, "Perform the solid nodes: start");
-   level_interp_timer->StartTimer();
-
-   vtkThreshold* thrFilter = vtkThreshold::New();
-   thrFilter->SetInputData(reader->GetOutput());
-   thrFilter->SetInputArrayToProcess(0, 0, 0, vtkDataObject::FIELD_ASSOCIATION_POINTS, "Geometry");
-   thrFilter->ThresholdBetween(1, 1);
-   thrFilter->Update();
-   vtkUnstructuredGrid* ugrid = thrFilter->GetOutput();
-
-   vtkPoints* points = vtkPoints::New();
-   vtkCellArray* cells = vtkCellArray::New();
-
-   int numberOfCells = ugrid->GetNumberOfCells();
-
-   double x[3];
-   array<double, 3> xMin;
-   array<double, 3> xMax;
-   array<int, 3> ixMin;
-   array<int, 3> ixMax;
-   vtkIdType idc = 0;
-
-   for (int i = 0; i < numberOfCells; i++)
-   {
-      vtkIdList* plist = vtkIdList::New();
-      ugrid->GetCellPoints(i, plist);
-      vector <double> x1;
-      vector <double> x2;
-      vector <double> x3;
-      for (int p = 0; p < plist->GetNumberOfIds(); p++)
-      {
-         ugrid->GetPoint(plist->GetId(p), x);
-         x1.push_back(x[0]);
-         x2.push_back(x[1]);
-         x3.push_back(x[2]);
-      }
-      xMin[0] = *min_element(x1.begin(), x1.end());
-      xMin[1] = *min_element(x2.begin(), x2.end());
-      xMin[2] = *min_element(x3.begin(), x3.end());
-
-      xMax[0] = *max_element(x1.begin(), x1.end());
-      xMax[1] = *max_element(x2.begin(), x2.end());
-      xMax[2] = *max_element(x3.begin(), x3.end());
-
-      getNodeIndexes(xMin, ixMin);
-      getNodeIndexes(xMax, ixMax);
-
-      for (int k = ixMin[2]; k <= ixMax[2]; k++)
-      {
-         for (int j = ixMin[1]; j <= ixMax[1]; j++)
-         {
-            for (int i = ixMin[0]; i <= ixMax[0]; i++)
-            {
-               if (i >= 0 && i < dimensions[0] && j >= 0 && j < dimensions[1] && k >= 0 && k < dimensions[2])
-               {
-                  geoMatrix(i, j, k) = 0;
-               }
-            }
-         }
-      }
-      plist->Delete();
-   }
-
-   reader->Delete();
-   thrFilter->Delete();
-   points->Delete();
-   cells->Delete();
-
-   UBLOG(logINFO, "Perform the solid nodes: end");
-   level_interp_timer->StopTimer();
-   UBLOG(logINFO, "interpolation time: " << UbSystem::toString(level_interp_timer->GetElapsedTime()) << " s");
-
-   UBLOG(logINFO, "createGeoMatrix:end");
-   timer_total->StopTimer();
-   UBLOG(logINFO, "total time: " << UbSystem::toString(timer_total->GetElapsedTime()) << " s");
-}
-//////////////////////////////////////////////////////////////////////////
-void Averaging::writeGeoMatrixToImageFile(std::string output)
-{
-   vtkSmartPointer<vtkTimerLog> timer_write = vtkSmartPointer<vtkTimerLog>::New();
-
-   std::string vtkfilename = output + ".vti";
-
-   UBLOG(logINFO, "write data set to " << vtkfilename << ": start");
-   timer_write->StartTimer();
-
-   vtkImageData* image = vtkImageData::New();
-
-   image->SetExtent(&geo_extent[0]);
-   image->SetOrigin(&geo_origin[0]);
-   image->SetSpacing(&geo_spacing[0]);
-
-   vtkIntArray* geoArray = vtkIntArray::New();
-   geoArray->SetNumberOfComponents(1);
-   geoArray->SetName("geo");
-
-   int size = dimensions[0] * dimensions[1] * dimensions[2];
-
-   geoArray->SetArray(geoMatrix.getStartAdressOfSortedArray(0, 0, 0), size, 1);
-   image->GetPointData()->AddArray(geoArray);
-
-   vtkXMLImageDataWriter* writer = vtkXMLImageDataWriter::New();
-   writer->SetInputData(image);
-   writer->SetFileName(vtkfilename.c_str());
-   //writer->SetDataModeToAscii();
-   writer->SetDataModeToAppended();
-   writer->SetCompressorTypeToZLib();
-   writer->Update();
-
-   image->Delete();
-   geoArray->Delete();
-   writer->Delete();
-
-   UBLOG(logINFO, "write data set: end");
-   timer_write->StopTimer();
-   UBLOG(logINFO, "write data set time: " << UbSystem::toString(timer_write->GetElapsedTime()) << " s");
-}
-void Averaging::initMeanMqValues()
-{
-   meanVxMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVyMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVzMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanPrMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-}
-void Averaging::sumMqValues()
-{
-   vector<double>& vxSum = meanVxMatrix.getDataVector();
-   vector<double>& vySum = meanVyMatrix.getDataVector();
-   vector<double>& vzSum = meanVzMatrix.getDataVector();
-   vector<double>& prSum = meanPrMatrix.getDataVector();
-
-   vector<double>& vxVa = vxMatrix.getDataVector();
-   vector<double>& vyVa = vyMatrix.getDataVector();
-   vector<double>& vzVa = vzMatrix.getDataVector();
-   vector<double>& prVa = prMatrix.getDataVector();
-
-   int size = (int)vxVa.size();
-
-   for (int i = 0; i < size; i++)
-   {
-      vxSum[i] += vxVa[i];
-      vySum[i] += vyVa[i];
-      vzSum[i] += vzVa[i];
-      prSum[i] += prVa[i];
-   }
-}
-void Averaging::computeMeanMqValues(int numberOfTimeSteps)
-{
-   vector<double>& vxSum = meanVxMatrix.getDataVector();
-   vector<double>& vySum = meanVyMatrix.getDataVector();
-   vector<double>& vzSum = meanVzMatrix.getDataVector();
-   vector<double>& prSum = meanPrMatrix.getDataVector();
-
-   vector<double>& vxMean = meanVxMatrix.getDataVector();
-   vector<double>& vyMean = meanVyMatrix.getDataVector();
-   vector<double>& vzMean = meanVzMatrix.getDataVector();
-   vector<double>& prMean = meanPrMatrix.getDataVector();
-
-   int size = (int)vxSum.size();
-
-   for (int i = 0; i < size; i++)
-   {
-      vxMean[i] = vxSum[i] / numberOfTimeSteps;
-      vyMean[i] = vySum[i] / numberOfTimeSteps;
-      vzMean[i] = vzSum[i] / numberOfTimeSteps;
-      prMean[i] = prSum[i] / numberOfTimeSteps;
-   }
-}
-void Averaging::writeMeanMqValuesToBinaryFiles(std::string fname)
-{
-   writeMatrixToBinaryFiles<double>(meanVxMatrix, fname + "Vx" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVyMatrix, fname + "Vy" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVzMatrix, fname + "Vz" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanPrMatrix, fname + "Pr" + ".bin");
-}
-void Averaging::readMeanMqValuesFromBinaryFiles(std::string fname)
-{
-   readMatrixFromBinaryFiles<double>(fname + "Vx" + ".bin", meanVxMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Vy" + ".bin", meanVyMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Vz" + ".bin", meanVzMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Pr" + ".bin", meanPrMatrix);
-}
-void Averaging::volumeAveragingOfMeanMqValuesWithMPI(double l_real)
-{
-   vtkSmartPointer<vtkTimerLog> timer_averaging = vtkSmartPointer<vtkTimerLog>::New();
-
-   UBLOG(logINFO, "volume averaging: start");
-   timer_averaging->StartTimer();
-
-   double l = round(l_real / deltax);
-   UBLOG(logINFO, "l = " + UbSystem::toString(l));
-
-   UBLOG(logINFO, "NX1 x NX2 x NX3 = " + UbSystem::toString(dimensions[0]) << " x " + UbSystem::toString(dimensions[1]) << " x " << UbSystem::toString(dimensions[2]));
-
-   int size = dimensions[0] * dimensions[1] * dimensions[2];
-   vaMeanVxMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaMeanVyMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaMeanVzMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaMeanPrMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-
-   int numprocs, PID;
-   MPI_Comm_rank(MPI_COMM_WORLD, &PID);
-   MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
-
-   int part = (int)round((double)dimensions[0] / (double)numprocs);
-   UBLOG(logINFO, "part = " + UbSystem::toString(part));
-
-   int startX1 = part * PID;
-   int stopX1 = startX1 + part;
-   if (PID == numprocs - 1)
-   {
-      stopX1 = dimensions[0];
-   }
-
-   UBLOG(logINFO, "startX1 = " + UbSystem::toString(startX1));
-   UBLOG(logINFO, "stopX1 = " + UbSystem::toString(stopX1));
-
-   vtkSmartPointer<vtkTimerLog> timer_inloop = vtkSmartPointer<vtkTimerLog>::New();
-   //timer_inloop->StartTimer();
-   int p = 1000000;
-
-   //omp_set_num_threads(8);
-
-   //#pragma omp parallel num_threads(4) //private(i)
-   {
-      int i = 0;
-
-#pragma omp parallel for //private(i)//scheduler(dynamic, 1)
-      for (int x3 = 0; x3 < dimensions[2]; x3++)
-         for (int x2 = 0; x2 < dimensions[1]; x2++)
-            for (int x1 = startX1; x1 < stopX1; x1++)
-            {
-               int ID = omp_get_thread_num();
-               if (i == 0 && ID == 0)
-               {
-                  timer_inloop->StartTimer();
-                  UBLOG(logINFO, "point id = " + UbSystem::toString(i));
-               }
-               double vx = 0.0;
-               double vy = 0.0;
-               double vz = 0.0;
-               double pr = 0.0;
-
-               int ll = (int)l;
-               int llz1 = ll;
-               if (x3 - ll < 0) llz1 = x3;
-               if (x3 + ll >= dimensions[2]) llz1 = dimensions[2] - 1 - x3;
-               double lQuadrat = l * l;
-               double lNorm = lQuadrat * lQuadrat * double(llz1) * double(llz1);
-
-               //#pragma omp parallel for
-               for (int z = -llz1; z <= +llz1; z++)
-                  for (int y = -ll; y <= +ll; y++)
-                     for (int x = -ll; x <= +ll; x++)
-                     {
-                        int xx = x1 + x;
-                        int yy = x2 + y;
-                        int zz = x3 + z;
-
-                        //correctIndex(xx, yy, zz);
-                        if (xx < 0)   xx = dimensions[0] + xx;
-                        if (xx >= dimensions[0]) xx = xx - dimensions[0];
-
-                        if (yy < 0)   yy = dimensions[1] + yy;
-                        if (yy >= dimensions[1]) yy = yy - dimensions[1];
-
-                        if (zz < 0) zz = 0;
-                        if (zz >= dimensions[2]) zz = dimensions[2] - 1;
-
-                        double mm = (G((double)x, l) * G((double)y, l) * G((double)z, (double)llz1)) / lNorm;
-                        double gamma = (double)geoMatrix(xx, yy, zz);
-
-                        vx += gamma * mm * meanVxMatrix(xx, yy, zz);
-                        vy += gamma * mm * meanVyMatrix(xx, yy, zz);
-                        vz += gamma * mm * meanVzMatrix(xx, yy, zz);
-                        pr += gamma * mm * meanPrMatrix(xx, yy, zz);
-
-                     }
-
-               vaMeanVxMatrix(x1, x2, x3) = vx;
-               vaMeanVyMatrix(x1, x2, x3) = vy;
-               vaMeanVzMatrix(x1, x2, x3) = vz;
-               vaMeanPrMatrix(x1, x2, x3) = pr;
-
-               if (i % p == 0 && i != 0 && ID == 0)
-               {
-                  timer_inloop->StopTimer();
-                  UBLOG(logINFO, "point id = " + UbSystem::toString(i));
-                  UBLOG(logINFO, "time per " + UbSystem::toString(p) + " points: " + UbSystem::toString(timer_inloop->GetElapsedTime()) + " s");
-                  UBLOG(logINFO, "actual memory usage: " << UbSystem::toString(Utilities::getPhysMemUsedByMe() / 1e9) << " GByte");
-                  timer_inloop->StartTimer();
-                  UBLOG(logINFO, "thread id: " + UbSystem::toString(ID));
-                  UBLOG(logINFO, "Number of treads: " + UbSystem::toString(omp_get_num_threads()));
-               }
-               i++;
-            }
-   }
-
-   if (PID == 0)
-   {
-      vector<double> receiveBuffer;
-      for (int i = 1; i < numprocs; i++)
-      {
-         int count, lstartX1, lstopX1;
-         MPI_Status status;
-         MPI_Recv(&count, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         receiveBuffer.resize(count);
-         MPI_Recv(&receiveBuffer[0], count, MPI_DOUBLE, i, 0, MPI_COMM_WORLD, &status);
-         MPI_Recv(&lstartX1, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         MPI_Recv(&lstopX1, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         int c = 0;
-         for (int x3 = 0; x3 < dimensions[2]; x3++)
-            for (int x2 = 0; x2 < dimensions[1]; x2++)
-               for (int x1 = lstartX1; x1 < lstopX1; x1++)
-               {
-                  vaMeanVxMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaMeanVyMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaMeanVzMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaMeanPrMatrix(x1, x2, x3) = receiveBuffer[c++];
-               }
-      }
-   }
-   else
-   {
-      vector<double> sendBuffer;
-      for (int x3 = 0; x3 < dimensions[2]; x3++)
-         for (int x2 = 0; x2 < dimensions[1]; x2++)
-            for (int x1 = startX1; x1 < stopX1; x1++)
-            {
-               sendBuffer.push_back(vaMeanVxMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaMeanVyMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaMeanVzMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaMeanPrMatrix(x1, x2, x3));
-            }
-      int count = (int)sendBuffer.size();
-      MPI_Send(&count, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&sendBuffer[0], count, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&startX1, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&stopX1, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-   }
-
-   timer_averaging->StopTimer();
-   UBLOG(logINFO, "volume averaging: end");
-   UBLOG(logINFO, "volume averaging time: " + UbSystem::toString(timer_averaging->GetElapsedTime()) + " s");
-}
-void Averaging::writeVaMeanMqValuesToBinaryFiles(std::string fname)
-{
-   writeMatrixToBinaryFiles<double>(vaMeanVxMatrix, fname + "Vx" + ".bin");
-   writeMatrixToBinaryFiles<double>(vaMeanVyMatrix, fname + "Vy" + ".bin");
-   writeMatrixToBinaryFiles<double>(vaMeanVzMatrix, fname + "Vz" + ".bin");
-   writeMatrixToBinaryFiles<double>(vaMeanPrMatrix, fname + "Pr" + ".bin");
-}
-void Averaging::readVaMeanMqValuesFromBinaryFiles(std::string fname)
-{
-   readMatrixFromBinaryFiles<double>(fname + "Vx" + ".bin", vaMeanVxMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Vy" + ".bin", vaMeanVyMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Vz" + ".bin", vaMeanVzMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Pr" + ".bin", vaMeanPrMatrix);
-}
-void Averaging::initFluctuationsOfMqValues()
-{
-   flucVxMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   flucVyMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   flucVzMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   flucPrMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-}
-void Averaging::computeFluctuationsOfMqValues()
-{
-   vector<double>& vxF = vxMatrix.getDataVector();
-   vector<double>& vyF = vyMatrix.getDataVector();
-   vector<double>& vzF = vzMatrix.getDataVector();
-   vector<double>& prF = prMatrix.getDataVector();
-
-   vector<double>& vxMean = meanVxMatrix.getDataVector();
-   vector<double>& vyMean = meanVyMatrix.getDataVector();
-   vector<double>& vzMean = meanVzMatrix.getDataVector();
-   vector<double>& prMean = meanPrMatrix.getDataVector();
-
-   vector<double>& vxFluc = flucVxMatrix.getDataVector();
-   vector<double>& vyFluc = flucVyMatrix.getDataVector();
-   vector<double>& vzFluc = flucVzMatrix.getDataVector();
-   vector<double>& prFluc = flucPrMatrix.getDataVector();
-
-   int size = (int)vxF.size();
-
-   for (int i = 0; i < size; i++)
-   {
-      vxFluc[i] = vxF[i] - vxMean[i];
-      vyFluc[i] = vyF[i] - vyMean[i];
-      vzFluc[i] = vzF[i] - vzMean[i];
-      prFluc[i] = prF[i] - prMean[i];
-   }
-}
-void Averaging::writeFluctuationsOfMqValuesToBinaryFiles(std::string fname, int timeStep)
-{
-   writeMatrixToBinaryFiles<double>(flucVxMatrix, fname + "Vx" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(flucVyMatrix, fname + "Vy" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(flucVzMatrix, fname + "Vz" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(flucPrMatrix, fname + "Pr" + UbSystem::toString(timeStep) + ".bin");
-}
-void Averaging::readFluctuationsOfMqValuesFromBinaryFiles(std::string fname, int timeStep)
-{
-   readMatrixFromBinaryFiles<double>(fname + "Vx" + UbSystem::toString(timeStep) + ".bin", flucVxMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Vy" + UbSystem::toString(timeStep) + ".bin", flucVyMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Vz" + UbSystem::toString(timeStep) + ".bin", flucVzMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Pr" + UbSystem::toString(timeStep) + ".bin", flucPrMatrix);
-}
-void Averaging::volumeAveragingOfFluctuationsWithMPI(double l_real)
-{
-   vtkSmartPointer<vtkTimerLog> timer_averaging = vtkSmartPointer<vtkTimerLog>::New();
-
-   UBLOG(logINFO, "volume averaging fluct and stress: start");
-   timer_averaging->StartTimer();
-
-   double l = round(l_real / deltax);
-   UBLOG(logINFO, "l = " + UbSystem::toString(l));
-
-   UBLOG(logINFO, "NX1 x NX2 x NX3 = " + UbSystem::toString(dimensions[0]) << " x " + UbSystem::toString(dimensions[1]) << " x " << UbSystem::toString(dimensions[2]));
-
-   int size = dimensions[0] * dimensions[1] * dimensions[2];
-   vaFlucVxMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaFlucVyMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaFlucVzMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaFlucPrMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-
-   int numprocs, PID;
-   MPI_Comm_rank(MPI_COMM_WORLD, &PID);
-   MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
-
-   int part = (int)round((double)dimensions[0] / (double)numprocs);
-   UBLOG(logINFO, "part = " + UbSystem::toString(part));
-
-   int startX1 = part * PID;
-   int stopX1 = startX1 + part;
-   if (PID == numprocs - 1)
-   {
-      stopX1 = dimensions[0];
-   }
-
-   UBLOG(logINFO, "startX1 = " + UbSystem::toString(startX1));
-   UBLOG(logINFO, "stopX1 = " + UbSystem::toString(stopX1));
-
-   vtkSmartPointer<vtkTimerLog> timer_inloop = vtkSmartPointer<vtkTimerLog>::New();
-   //timer_inloop->StartTimer();
-   int p = 1000000;
-
-   //omp_set_num_threads(8);
-
-   //#pragma omp parallel num_threads(4) //private(i)
-   {
-      int i = 0;
-#pragma omp parallel for //private(i)//scheduler(dynamic, 1)
-      for (int x3 = 0; x3 < dimensions[2]; x3++)
-         for (int x2 = 0; x2 < dimensions[1]; x2++)
-            for (int x1 = startX1; x1 < stopX1; x1++)
-            {
-               int ID = omp_get_thread_num();
-               if (i == 0 && ID == 0)
-               {
-                  timer_inloop->StartTimer();
-                  UBLOG(logINFO, "point id = " + UbSystem::toString(i));
-               }
-               double flucvx = 0.0;
-               double flucvy = 0.0;
-               double flucvz = 0.0;
-               double flucpr = 0.0;
-
-               int ll = (int)l;
-               int llz1 = ll;
-               if (x3 - ll < 0) llz1 = x3;
-               if (x3 + ll >= dimensions[2]) llz1 = dimensions[2] - 1 - x3;
-               double lQuadrat = l * l;
-               double lNorm = lQuadrat * lQuadrat * double(llz1) * double(llz1);
-
-               //#pragma omp parallel for
-               for (int z = -llz1; z <= +llz1; z++)
-                  for (int y = -ll; y <= +ll; y++)
-                     for (int x = -ll; x <= +ll; x++)
-                     {
-                        int xx = x1 + x;
-                        int yy = x2 + y;
-                        int zz = x3 + z;
-
-                        //correctIndex(xx, yy, zz);
-                        if (xx < 0)   xx = dimensions[0] + xx;
-                        if (xx >= dimensions[0]) xx = xx - dimensions[0];
-
-                        if (yy < 0)   yy = dimensions[1] + yy;
-                        if (yy >= dimensions[1]) yy = yy - dimensions[1];
-
-                        if (zz < 0)   zz = 0;
-                        if (zz >= dimensions[2]) zz = dimensions[2] - 1;
-
-                        double mm = (G((double)x, l) * G((double)y, l) * G((double)z, (double)llz1)) / lNorm;
-                        double gamma = (double)geoMatrix(xx, yy, zz);
-
-                        flucvx += gamma * mm * flucVxMatrix(xx, yy, zz);
-                        flucvy += gamma * mm * flucVyMatrix(xx, yy, zz);
-                        flucvz += gamma * mm * flucVzMatrix(xx, yy, zz);
-                        flucpr += gamma * mm * flucPrMatrix(xx, yy, zz);
-                     }
-
-               vaFlucVxMatrix(x1, x2, x3) = flucvx;
-               vaFlucVyMatrix(x1, x2, x3) = flucvy;
-               vaFlucVzMatrix(x1, x2, x3) = flucvz;
-               vaFlucPrMatrix(x1, x2, x3) = flucpr;
-
-               if (i % p == 0 && i != 0 && ID == 0)
-               {
-                  timer_inloop->StopTimer();
-                  UBLOG(logINFO, "point id = " + UbSystem::toString(i));
-                  UBLOG(logINFO, "time per " + UbSystem::toString(p) + " points: " + UbSystem::toString(timer_inloop->GetElapsedTime()) + " s");
-                  UBLOG(logINFO, "actual memory usage: " << UbSystem::toString(Utilities::getPhysMemUsedByMe() / 1e9) << " GByte");
-                  timer_inloop->StartTimer();
-                  UBLOG(logINFO, "thread id: " + UbSystem::toString(ID));
-                  UBLOG(logINFO, "Number of treads: " + UbSystem::toString(omp_get_num_threads()));
-               }
-               i++;
-            }
-   }
-
-   if (PID == 0)
-   {
-      vector<double> receiveBuffer;
-      for (int i = 1; i < numprocs; i++)
-      {
-         int count, lstartX1, lstopX1;
-         MPI_Status status;
-         MPI_Recv(&count, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         receiveBuffer.resize(count);
-         MPI_Recv(&receiveBuffer[0], count, MPI_DOUBLE, i, 0, MPI_COMM_WORLD, &status);
-         MPI_Recv(&lstartX1, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         MPI_Recv(&lstopX1, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         int c = 0;
-         for (int x3 = 0; x3 < dimensions[2]; x3++)
-            for (int x2 = 0; x2 < dimensions[1]; x2++)
-               for (int x1 = lstartX1; x1 < lstopX1; x1++)
-               {
-                  vaFlucVxMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaFlucVyMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaFlucVzMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaFlucPrMatrix(x1, x2, x3) = receiveBuffer[c++];
-               }
-      }
-   }
-   else
-   {
-      vector<double> sendBuffer;
-      for (int x3 = 0; x3 < dimensions[2]; x3++)
-         for (int x2 = 0; x2 < dimensions[1]; x2++)
-            for (int x1 = startX1; x1 < stopX1; x1++)
-            {
-               sendBuffer.push_back(vaFlucVxMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaFlucVyMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaFlucVzMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaFlucPrMatrix(x1, x2, x3));
-            }
-      int count = (int)sendBuffer.size();
-      MPI_Send(&count, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&sendBuffer[0], count, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&startX1, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&stopX1, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-   }
-
-   timer_averaging->StopTimer();
-   UBLOG(logINFO, "volume averaging fluct and stress: end");
-   UBLOG(logINFO, "volume averaging fluct and stress time: " + UbSystem::toString(timer_averaging->GetElapsedTime()) + " s");
-}
-void Averaging::readTimeAveragedDataFromVtkFile(std::string dataNameMQ)
-{
-   UBLOG(logINFO, "createMQMatrix:start");
-
-   vtkSmartPointer<vtkTimerLog> timer = vtkSmartPointer<vtkTimerLog>::New();
-   vtkSmartPointer<vtkTimerLog> timer_total = vtkSmartPointer<vtkTimerLog>::New();
-
-   timer_total->StartTimer();
-
-   UBLOG(logINFO, "read data set from " + dataNameMQ + ": start");
-   timer->StartTimer();
-
-   vtkXMLPUnstructuredGridReader* reader = vtkXMLPUnstructuredGridReader::New();
-   reader->SetFileName(dataNameMQ.c_str());
-   reader->Update();
-
-   UBLOG(logINFO, "read data set from " + dataNameMQ + ": end");
-   timer->StopTimer();
-   UBLOG(logINFO, "read data set time: " + UbSystem::toString(timer->GetElapsedTime()) + " s");
-
-   UBLOG(logINFO, "NX1 x NX2 x NX3 = " + UbSystem::toString(dimensions[0]) + " x " + UbSystem::toString(dimensions[1]) + " x " + UbSystem::toString(dimensions[2]));
-
-   int size = dimensions[0] * dimensions[1] * dimensions[2];
-   meanVxMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVyMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVzMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanPrMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-
-   StressXX.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   StressYY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   StressZZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   StressXY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   StressXZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   StressYZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-
-   vtkUnstructuredGrid* ugrid = reader->GetOutput();
-
-   vtkPoints* points = vtkPoints::New();
-   vtkCellArray* cells = vtkCellArray::New();
-
-   int numberOfCells = ugrid->GetNumberOfCells();
-
-   vtkDataArray* vxArray = ugrid->GetPointData()->GetArray("taVx");
-   vtkDataArray* vyArray = ugrid->GetPointData()->GetArray("taVy");
-   vtkDataArray* vzArray = ugrid->GetPointData()->GetArray("taVz");
-   vtkDataArray* prArray = ugrid->GetPointData()->GetArray("taRho");
-
-   vtkDataArray* vxxArray = ugrid->GetPointData()->GetArray("taVxx");
-   vtkDataArray* vyyArray = ugrid->GetPointData()->GetArray("taVyy");
-   vtkDataArray* vzzArray = ugrid->GetPointData()->GetArray("taVzz");
-   vtkDataArray* vxyArray = ugrid->GetPointData()->GetArray("taVxy");
-   vtkDataArray* vxzArray = ugrid->GetPointData()->GetArray("taVxz");
-   vtkDataArray* vyzArray = ugrid->GetPointData()->GetArray("taVyz");
-   //Vxx; Vyy; Vzz; Vxy; Vxz; Vyz
-
-   double x[3];
-   array<double, 3> xMin;
-   array<double, 3> xMax;
-   array<int, 3> ixMin;
-   array<int, 3> ixMax;
-   vtkIdType idc = 0;
-
-   for (int i = 0; i < numberOfCells; i++)
-   {
-      vtkIdList* plist = vtkIdList::New();
-      ugrid->GetCellPoints(i, plist);
-      vector <double> x1;
-      vector <double> x2;
-      vector <double> x3;
-      for (int p = 0; p < plist->GetNumberOfIds(); p++)
-      {
-         ugrid->GetPoint(plist->GetId(p), x);
-         x1.push_back(x[0]);
-         x2.push_back(x[1]);
-         x3.push_back(x[2]);
-      }
-      xMin[0] = *min_element(x1.begin(), x1.end());
-      xMin[1] = *min_element(x2.begin(), x2.end());
-      xMin[2] = *min_element(x3.begin(), x3.end());
-
-      xMax[0] = *max_element(x1.begin(), x1.end());
-      xMax[1] = *max_element(x2.begin(), x2.end());
-      xMax[2] = *max_element(x3.begin(), x3.end());
-
-      getNodeIndexes(xMin, ixMin);
-      getNodeIndexes(xMax, ixMax);
-      int c = 0;
-      for (int k = ixMin[2]; k <= ixMax[2]; k++)
-      {
-         for (int j = ixMin[1]; j <= ixMax[1]; j++)
-         {
-            for (int i = ixMin[0]; i <= ixMax[0]; i++)
-            {
-               if (i >= 0 && i < dimensions[0] && j >= 0 && j < dimensions[1] && k >= 0 && k < dimensions[2])
-               {
-                  if (geoMatrix(i, j, k) == 1)
-                  {
-                     meanVxMatrix(i, j, k) = vxArray->GetTuple1(plist->GetId(c));
-                     meanVyMatrix(i, j, k) = vyArray->GetTuple1(plist->GetId(c));
-                     meanVzMatrix(i, j, k) = vzArray->GetTuple1(plist->GetId(c));
-                     meanPrMatrix(i, j, k) = prArray->GetTuple1(plist->GetId(c));
-
-                     StressXX(i, j, k) = vxxArray->GetTuple1(plist->GetId(c));
-                     StressYY(i, j, k) = vyyArray->GetTuple1(plist->GetId(c));
-                     StressZZ(i, j, k) = vzzArray->GetTuple1(plist->GetId(c));
-                     StressXY(i, j, k) = vxyArray->GetTuple1(plist->GetId(c));
-                     StressXZ(i, j, k) = vxzArray->GetTuple1(plist->GetId(c));
-                     StressYZ(i, j, k) = vyzArray->GetTuple1(plist->GetId(c));
-                     c++;
-                  }
-               }
-            }
-         }
-      }
-      plist->Delete();
-   }
-
-   reader->Delete();
-   points->Delete();
-   cells->Delete();
-
-   UBLOG(logINFO, "createMQMatrix:end");
-   timer_total->StopTimer();
-   UBLOG(logINFO, "total time: " + UbSystem::toString(timer_total->GetElapsedTime()) + " s");
-}
-void Averaging::volumeAveragingOfTimeAveragedDataWithMPI(double l_real)
-{
-   vtkSmartPointer<vtkTimerLog> timer_averaging = vtkSmartPointer<vtkTimerLog>::New();
-
-   UBLOG(logINFO, "volume averaging: start");
-   timer_averaging->StartTimer();
-
-   double l = round(l_real / deltax);
-   UBLOG(logINFO, "l = " + UbSystem::toString(l));
-
-   UBLOG(logINFO, "NX1 x NX2 x NX3 = " + UbSystem::toString(dimensions[0]) << " x " + UbSystem::toString(dimensions[1]) << " x " << UbSystem::toString(dimensions[2]));
-
-   int size = dimensions[0] * dimensions[1] * dimensions[2];
-   vaMeanVxMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaMeanVyMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaMeanVzMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaMeanPrMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-
-   vaStressXX.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressYY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressZZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressXY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressXZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressYZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-
-   int numprocs, PID;
-   MPI_Comm_rank(MPI_COMM_WORLD, &PID);
-   MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
-
-   int part = (int)round((double)dimensions[0] / (double)numprocs);
-   UBLOG(logINFO, "part = " + UbSystem::toString(part));
-
-   int startX1 = part * PID;
-   int stopX1 = startX1 + part;
-   if (PID == numprocs - 1)
-   {
-      stopX1 = dimensions[0];
-   }
-
-   UBLOG(logINFO, "startX1 = " + UbSystem::toString(startX1));
-   UBLOG(logINFO, "stopX1 = " + UbSystem::toString(stopX1));
-
-   vtkSmartPointer<vtkTimerLog> timer_inloop = vtkSmartPointer<vtkTimerLog>::New();
-   //timer_inloop->StartTimer();
-   int p = 1000000;
-
-   //omp_set_num_threads(8);
-
-   //#pragma omp parallel num_threads(4) //private(i)
-   {
-      int i = 0;
-
-#pragma omp parallel for //private(i)//scheduler(dynamic, 1)
-      for (int x3 = 0; x3 < dimensions[2]; x3++)
-         for (int x2 = 0; x2 < dimensions[1]; x2++)
-            for (int x1 = startX1; x1 < stopX1; x1++)
-            {
-               int ID = omp_get_thread_num();
-               if (i == 0 && ID == 0)
-               {
-                  timer_inloop->StartTimer();
-                  UBLOG(logINFO, "point id = " + UbSystem::toString(i));
-               }
-               double vx = 0.0;
-               double vy = 0.0;
-               double vz = 0.0;
-               double pr = 0.0;
-               double stressXX = 0.0;
-               double stressYY = 0.0;
-               double stressZZ = 0.0;
-               double stressXY = 0.0;
-               double stressXZ = 0.0;
-               double stressYZ = 0.0;
-
-               int ll = (int)l;
-               int llz1 = ll;
-               if (x3 - ll < 0) llz1 = x3;
-               if (x3 + ll >= dimensions[2]) llz1 = dimensions[2] - 1 - x3;
-               double lQuadrat = l * l;
-               double lNorm = lQuadrat * lQuadrat * double(llz1)*double(llz1);
-
-               //#pragma omp parallel for
-               for (int z = -llz1; z <= +llz1; z++)
-                  for (int y = -ll; y <= +ll; y++)
-                     for (int x = -ll; x <= +ll; x++)
-                     {
-                        int xx = x1 + x;
-                        int yy = x2 + y;
-                        int zz = x3 + z;
-
-                        //correctIndex(xx, yy, zz);
-                        if (xx < 0)   xx = dimensions[0] + xx;
-                        if (xx >= dimensions[0]) xx = xx - dimensions[0];
-
-                        if (yy < 0)   yy = dimensions[1] + yy;
-                        if (yy >= dimensions[1]) yy = yy - dimensions[1];
-
-                        if (zz < 0) zz = 0;
-                        if (zz >= dimensions[2]) zz = dimensions[2] - 1;
-
-                        if (x3 != 0 || x3 != dimensions[2] - 1)
-                        {
-                           double mm = (G((double)x, l) * G((double)y, l) * G((double)z, (double)llz1)) / lNorm;
-                           double gamma = (double)geoMatrix(xx, yy, zz);
-
-                           vx += gamma * mm * meanVxMatrix(xx, yy, zz);
-                           vy += gamma * mm * meanVyMatrix(xx, yy, zz);
-                           vz += gamma * mm * meanVzMatrix(xx, yy, zz);
-                           pr += gamma * mm * meanPrMatrix(xx, yy, zz);
-
-                           stressXX += gamma * mm * StressXX(xx, yy, zz);
-                           stressYY += gamma * mm * StressYY(xx, yy, zz);
-                           stressZZ += gamma * mm * StressZZ(xx, yy, zz);
-                           stressXY += gamma * mm * StressXY(xx, yy, zz);
-                           stressXZ += gamma * mm * StressXZ(xx, yy, zz);
-                           stressYZ += gamma * mm * StressYZ(xx, yy, zz);
-                        }
-                        else
-                        {
-                           vx += meanVxMatrix(xx, yy, zz);
-                           vy += meanVyMatrix(xx, yy, zz);
-                           vz += meanVzMatrix(xx, yy, zz);
-                           pr += meanPrMatrix(xx, yy, zz);
-
-                           stressXX += StressXX(xx, yy, zz);
-                           stressYY += StressYY(xx, yy, zz);
-                           stressZZ += StressZZ(xx, yy, zz);
-                           stressXY += StressXY(xx, yy, zz);
-                           stressXZ += StressXZ(xx, yy, zz);
-                           stressYZ += StressYZ(xx, yy, zz);
-                        }
-                     }
-
-               vaMeanVxMatrix(x1, x2, x3) = vx;
-               vaMeanVyMatrix(x1, x2, x3) = vy;
-               vaMeanVzMatrix(x1, x2, x3) = vz;
-               vaMeanPrMatrix(x1, x2, x3) = pr;
-
-               vaStressXX(x1, x2, x3) = stressXX;
-               vaStressYY(x1, x2, x3) = stressYY;
-               vaStressZZ(x1, x2, x3) = stressZZ;
-               vaStressXY(x1, x2, x3) = stressXY;
-               vaStressXZ(x1, x2, x3) = stressXZ;
-               vaStressYZ(x1, x2, x3) = stressYZ;
-
-               if (i % p == 0 && i != 0 && ID == 0)
-               {
-                  timer_inloop->StopTimer();
-                  UBLOG(logINFO, "point id = " + UbSystem::toString(i));
-                  UBLOG(logINFO, "time per " + UbSystem::toString(p) + " points: " + UbSystem::toString(timer_inloop->GetElapsedTime()) + " s");
-                  UBLOG(logINFO, "actual memory usage: " << UbSystem::toString(Utilities::getPhysMemUsedByMe() / 1e9) << " GByte");
-                  timer_inloop->StartTimer();
-                  UBLOG(logINFO, "thread id: " + UbSystem::toString(ID));
-                  UBLOG(logINFO, "Number of treads: " + UbSystem::toString(omp_get_num_threads()));
-               }
-               i++;
-            }
-   }
-
-   if (PID == 0)
-   {
-      vector<double> receiveBuffer;
-      for (int i = 1; i < numprocs; i++)
-      {
-         int count, lstartX1, lstopX1;
-         MPI_Status status;
-         MPI_Recv(&count, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         receiveBuffer.resize(count);
-         MPI_Recv(&receiveBuffer[0], count, MPI_DOUBLE, i, 0, MPI_COMM_WORLD, &status);
-         MPI_Recv(&lstartX1, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         MPI_Recv(&lstopX1, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         int c = 0;
-         for (int x3 = 0; x3 < dimensions[2]; x3++)
-            for (int x2 = 0; x2 < dimensions[1]; x2++)
-               for (int x1 = lstartX1; x1 < lstopX1; x1++)
-               {
-                  vaMeanVxMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaMeanVyMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaMeanVzMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaMeanPrMatrix(x1, x2, x3) = receiveBuffer[c++];
-
-                  vaStressXX(x1, x2, x3) = receiveBuffer[c++];
-                  vaStressYY(x1, x2, x3) = receiveBuffer[c++];
-                  vaStressZZ(x1, x2, x3) = receiveBuffer[c++];
-                  vaStressXY(x1, x2, x3) = receiveBuffer[c++];
-                  vaStressXZ(x1, x2, x3) = receiveBuffer[c++];
-                  vaStressYZ(x1, x2, x3) = receiveBuffer[c++];
-               }
-      }
-   }
-   else
-   {
-      vector<double> sendBuffer;
-      for (int x3 = 0; x3 < dimensions[2]; x3++)
-         for (int x2 = 0; x2 < dimensions[1]; x2++)
-            for (int x1 = startX1; x1 < stopX1; x1++)
-            {
-               sendBuffer.push_back(vaMeanVxMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaMeanVyMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaMeanVzMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaMeanPrMatrix(x1, x2, x3));
-
-               sendBuffer.push_back(vaStressXX(x1, x2, x3));
-               sendBuffer.push_back(vaStressYY(x1, x2, x3));
-               sendBuffer.push_back(vaStressZZ(x1, x2, x3));
-               sendBuffer.push_back(vaStressXY(x1, x2, x3));
-               sendBuffer.push_back(vaStressXZ(x1, x2, x3));
-               sendBuffer.push_back(vaStressYZ(x1, x2, x3));
-            }
-      int count = (int)sendBuffer.size();
-      MPI_Send(&count, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&sendBuffer[0], count, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&startX1, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&stopX1, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-   }
-
-   timer_averaging->StopTimer();
-   UBLOG(logINFO, "volume averaging: end");
-   UBLOG(logINFO, "volume averaging time: " + UbSystem::toString(timer_averaging->GetElapsedTime()) + " s");
-}
-void Averaging::planarAveragingOfVaTaData()
-{
-   double numberof_XY_points = (double)dimensions[0] * (double)dimensions[1];
-
-   for (int z = 0; z < dimensions[2]; z++)
-   {
-      double sumVx = 0, sumVy = 0, sumVz = 0, sumPr = 0;
-      double sumFluctVx = 0, sumFluctVy = 0, sumFluctVz = 0, sumFluctPr = 0;
-      double sumStressXX = 0, sumStressYY = 0, sumStressZZ = 0, sumStressXY = 0, sumStressXZ = 0, sumStressYZ = 0;
-      for (int y = 0; y < dimensions[1]; y++)
-         for (int x = 0; x < dimensions[0]; x++)
-         {
-            sumVx += vaMeanVxMatrix(x, y, z);
-            sumVy += vaMeanVyMatrix(x, y, z);
-            sumVz += vaMeanVzMatrix(x, y, z);
-            sumPr += vaMeanPrMatrix(x, y, z);
-
-            sumStressXX += vaStressXX(x, y, z);
-            sumStressYY += vaStressYY(x, y, z);
-            sumStressZZ += vaStressZZ(x, y, z);
-            sumStressXY += vaStressXY(x, y, z);
-            sumStressXZ += vaStressXZ(x, y, z);
-            sumStressYZ += vaStressYZ(x, y, z);
-         }
-      PlanarVx[z] = sumVx / numberof_XY_points;
-      PlanarVy[z] = sumVy / numberof_XY_points;
-      PlanarVz[z] = sumVz / numberof_XY_points;
-      PlanarPr[z] = sumPr / numberof_XY_points;
-
-      PlanarStressXX[z] = sumStressXX / numberof_XY_points;
-      PlanarStressYY[z] = sumStressYY / numberof_XY_points;
-      PlanarStressZZ[z] = sumStressZZ / numberof_XY_points;
-      PlanarStressXY[z] = sumStressXY / numberof_XY_points;
-      PlanarStressXZ[z] = sumStressXZ / numberof_XY_points;
-      PlanarStressYZ[z] = sumStressYZ / numberof_XY_points;
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void Averaging::getNodeIndexes(std::array<double, 3> x, std::array<int, 3>& ix)
-{
-   ix[0] = (int)round((x[0] - geo_origin[0]) / deltax);
-   ix[1] = (int)round((x[1] - geo_origin[1]) / deltax);
-   ix[2] = (int)round((x[2] - geo_origin[2]) / deltax);
-}
-//////////////////////////////////////////////////////////////////////////
-void Averaging::createMQMatrix(std::string dataNameMQ)
-{
-   UBLOG(logINFO, "createMQMatrix:start");
-
-   vtkSmartPointer<vtkTimerLog> timer = vtkSmartPointer<vtkTimerLog>::New();
-   vtkSmartPointer<vtkTimerLog> timer_total = vtkSmartPointer<vtkTimerLog>::New();
-
-   timer_total->StartTimer();
-
-   UBLOG(logINFO, "read data set from " + dataNameMQ + ": start");
-   timer->StartTimer();
-
-   vtkXMLPUnstructuredGridReader* reader = vtkXMLPUnstructuredGridReader::New();
-   reader->SetFileName(dataNameMQ.c_str());
-   reader->Update();
-
-   UBLOG(logINFO, "read data set from " + dataNameMQ + ": end");
-   timer->StopTimer();
-   UBLOG(logINFO, "read data set time: " + UbSystem::toString(timer->GetElapsedTime()) + " s");
-
-   UBLOG(logINFO, "NX1 x NX2 x NX3 = " + UbSystem::toString(dimensions[0]) + " x " + UbSystem::toString(dimensions[1]) + " x " + UbSystem::toString(dimensions[2]));
-
-   int size = dimensions[0] * dimensions[1] * dimensions[2];
-   vxMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vyMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vzMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   prMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-
-   vtkUnstructuredGrid* ugrid = reader->GetOutput(); 
-
-   vtkPoints* points = vtkPoints::New();
-   vtkCellArray* cells = vtkCellArray::New();
-
-   int numberOfCells = ugrid->GetNumberOfCells();
-
-   vtkDataArray* vxArray = ugrid->GetPointData()->GetArray("Vx");
-   vtkDataArray* vyArray = ugrid->GetPointData()->GetArray("Vy");
-   vtkDataArray* vzArray = ugrid->GetPointData()->GetArray("Vz");
-   vtkDataArray* prArray = ugrid->GetPointData()->GetArray("Rho");
-
-   double x[3];
-   array<double, 3> xMin;
-   array<double, 3> xMax;
-   array<int, 3> ixMin;
-   array<int, 3> ixMax;
-   vtkIdType idc = 0;
-
-   for (int i = 0; i < numberOfCells; i++)
-   {
-      vtkIdList* plist = vtkIdList::New();
-      ugrid->GetCellPoints(i, plist);
-      vector <double> x1;
-      vector <double> x2;
-      vector <double> x3;
-      for (int p = 0; p < plist->GetNumberOfIds(); p++)
-      {
-         ugrid->GetPoint(plist->GetId(p), x);
-         x1.push_back(x[0]);
-         x2.push_back(x[1]);
-         x3.push_back(x[2]);
-      }
-      xMin[0] = *min_element(x1.begin(), x1.end());
-      xMin[1] = *min_element(x2.begin(), x2.end());
-      xMin[2] = *min_element(x3.begin(), x3.end());
-
-      xMax[0] = *max_element(x1.begin(), x1.end());
-      xMax[1] = *max_element(x2.begin(), x2.end());
-      xMax[2] = *max_element(x3.begin(), x3.end());
-
-      getNodeIndexes(xMin, ixMin);
-      getNodeIndexes(xMax, ixMax);
-      int c = 0;
-      for (int k = ixMin[2]; k <= ixMax[2]; k++)
-      {
-         for (int j = ixMin[1]; j <= ixMax[1]; j++)
-         {
-            for (int i = ixMin[0]; i <= ixMax[0]; i++)
-            {
-               if (i >= 0 && i < dimensions[0] && j >= 0 && j < dimensions[1] && k >= 0 && k < dimensions[2])
-               {
-                  if (geoMatrix(i, j, k) == 1)
-                  {
-                     vxMatrix(i, j, k) = vxArray->GetTuple1(plist->GetId(c));
-                     vyMatrix(i, j, k) = vyArray->GetTuple1(plist->GetId(c));
-                     vzMatrix(i, j, k) = vzArray->GetTuple1(plist->GetId(c));
-                     prMatrix(i, j, k) = prArray->GetTuple1(plist->GetId(c));
-                     c++;
-                  }
-               }
-            }
-         }
-      }
-      plist->Delete();
-   }
-
-   reader->Delete();
-   points->Delete();
-   cells->Delete();
-
-   UBLOG(logINFO, "createMQMatrix:end");
-   timer_total->StopTimer();
-   UBLOG(logINFO, "total time: " + UbSystem::toString(timer_total->GetElapsedTime()) + " s");
-}
-//////////////////////////////////////////////////////////////////////////
-void Averaging::writeMatrixToImageFile(std::string output, std::array<CbArray3D<double>, 4> matrix)
-{
-   vtkSmartPointer<vtkTimerLog> timer_write = vtkSmartPointer<vtkTimerLog>::New();
-
-   std::string vtkfilename = output + ".vti";
-
-   UBLOG(logINFO, "write data set to " + vtkfilename + ": start");
-   timer_write->StartTimer();
-
-   vtkImageData* image = vtkImageData::New();
-
-   image->SetExtent(&geo_extent[0]);
-   image->SetOrigin(&geo_origin[0]);
-   image->SetSpacing(&geo_spacing[0]);
-
-   vtkDoubleArray* vxArray = vtkDoubleArray::New();
-   vxArray->SetNumberOfComponents(1);
-   vxArray->SetName("Vx");
-
-   vtkDoubleArray* vyArray = vtkDoubleArray::New();
-   vyArray->SetNumberOfComponents(1);
-   vyArray->SetName("Vy");
-
-   vtkDoubleArray* vzArray = vtkDoubleArray::New();
-   vzArray->SetNumberOfComponents(1);
-   vzArray->SetName("Vz");
-
-   vtkSmartPointer<vtkDoubleArray> prArray = vtkDoubleArray::New();
-   prArray->SetNumberOfComponents(1);
-   prArray->SetName("Press");
-
-   int size = dimensions[0] * dimensions[1] * dimensions[2];
-
-   vxArray->SetArray(matrix[0].getStartAdressOfSortedArray(0, 0, 0), size, 1);
-   vyArray->SetArray(matrix[1].getStartAdressOfSortedArray(0, 0, 0), size, 1);
-   vzArray->SetArray(matrix[2].getStartAdressOfSortedArray(0, 0, 0), size, 1);
-   prArray->SetArray(matrix[3].getStartAdressOfSortedArray(0, 0, 0), size, 1);
-
-   image->GetPointData()->AddArray(vxArray);
-   image->GetPointData()->AddArray(vyArray);
-   image->GetPointData()->AddArray(vzArray);
-   image->GetPointData()->AddArray(prArray);
-
-   vtkXMLImageDataWriter* writer = vtkXMLImageDataWriter::New();
-   writer->SetInputData(image);
-   writer->SetFileName(vtkfilename.c_str());
-   //writer->SetDataModeToAscii();
-   writer->SetDataModeToAppended();
-   writer->SetCompressorTypeToZLib();
-   writer->Update();
-   
-   image->Delete();
-   vxArray->Delete();
-   vyArray->Delete();
-   vzArray->Delete();
-   writer->Delete();
-
-   UBLOG(logINFO, "write data set: end");
-   timer_write->StopTimer();
-   UBLOG(logINFO, "write data set time: " + UbSystem::toString(timer_write->GetElapsedTime()) + " s");
-}
-void Averaging::writeMqMatrixToImageFile(std::string output)
-{
-   array < CbArray3D<double>, 4 > matrix = { vxMatrix, vyMatrix, vzMatrix, prMatrix };
-   writeMatrixToImageFile(output, matrix);
-}
-void Averaging::writeVaMatrixToImageFile(std::string output)
-{
-   array < CbArray3D<double>, 4 > matrix = { vaVxMatrix, vaVyMatrix, vaVzMatrix, vaPrMatrix };
-   writeMatrixToImageFile(output, matrix);
-}
-void Averaging::writeVaSumMatrixToImageFile(std::string output)
-{
-   array < CbArray3D<double>, 4 > matrix = { sumVaVxMatrix, sumVaVyMatrix, sumVaVzMatrix, sumVaPrMatrix };
-   writeMatrixToImageFile(output, matrix);
-}
-void Averaging::writeMeanMatrixToImageFile(std::string output)
-{
-   array < CbArray3D<double>, 4 > matrix = { vaMeanVxMatrix, vaMeanVyMatrix, vaMeanVzMatrix, vaMeanPrMatrix };
-   writeMatrixToImageFile(output, matrix);
-}
-
-//////////////////////////////////////////////////////////////////////////
-void Averaging::readGeoMatrix(string dataNameG)
-{
-   vtkSmartPointer<vtkTimerLog> timer = vtkSmartPointer<vtkTimerLog>::New();
-
-   UBLOG(logINFO, "readGeoMatrix:start");
-
-   UBLOG(logINFO, "read data set from " + dataNameG + ": start");
-   timer->StartTimer();
-   vtkDataSet* dataSetGeo(ReadDataSet(dataNameG.c_str()));
-   UBLOG(logINFO, "read data set from " + dataNameG + ": end");
-   timer->StopTimer();
-   UBLOG(logINFO, "read data set time: " + UbSystem::toString(timer->GetElapsedTime()) + " s");
-
-   vtkImageData* image = vtkImageData::SafeDownCast(dataSetGeo);
-
-   int geo_extent[6];
-   double geo_origin[3];
-   double geo_spacing[3];
-
-   image->GetExtent(geo_extent);
-   image->GetOrigin(geo_origin);
-   image->GetSpacing(geo_spacing);
-
-   int geo_nx1 = geo_extent[1] + 1;
-   int geo_nx2 = geo_extent[3] + 1;
-   int geo_nx3 = geo_extent[5] + 1;
-
-   UBLOG(logINFO, "NX1 x NX2 x NX3 = " + UbSystem::toString(geo_nx1) + " x " + UbSystem::toString(geo_nx2) + " x " + UbSystem::toString(geo_nx3));
-
-   geoMatrix.resize(geo_nx1, geo_nx2, geo_nx3, 0);
-
-   vtkDataArray* geoArray = dataSetGeo->GetPointData()->GetArray("geo");
-
-   int numberOfPoints = dataSetGeo->GetNumberOfPoints();
-   int* gm = geoMatrix.getStartAdressOfSortedArray(0, 0, 0);
-   for (int i = 0; i < numberOfPoints; i++)
-   {
-      gm[i] = (int)geoArray->GetTuple1(i);
-   }
-
-   dataSetGeo->Delete();
-   image->Delete();
-   geoArray->Delete();
-
-   UBLOG(logINFO, "readGeoMatrix:end");
-}
-void Averaging::writeGeoMatrixToBinaryFiles(std::string fname)
-{
-   writeMatrixToBinaryFiles<int>(geoMatrix, fname);
-}
-void Averaging::readGeoMatrixFromBinaryFiles(std::string fname)
-{
-   readMatrixFromBinaryFiles<int>(fname, geoMatrix);
-}
-void Averaging::writeMqMatrixToBinaryFiles(std::string fname, int timeStep)
-{
-   writeMatrixToBinaryFiles<double>(vxMatrix, fname + "Vx" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(vyMatrix, fname + "Vy" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(vzMatrix, fname + "Vz" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(prMatrix, fname + "Pr" + UbSystem::toString(timeStep) + ".bin");
-}
-void Averaging::readMqMatrixFromBinaryFiles(std::string fname, int timeStep)
-{
-   readMatrixFromBinaryFiles<double>(fname + "Vx" + UbSystem::toString(timeStep) + ".bin", vxMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Vy" + UbSystem::toString(timeStep) + ".bin", vyMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Vz" + UbSystem::toString(timeStep) + ".bin", vzMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Pr" + UbSystem::toString(timeStep) + ".bin", prMatrix);
-}
-
-//-------------------------------- volume avaraging --------------------------
-void Averaging::initVolumeAveragingValues()
-{
-   sumVaVxMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaVyMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaVzMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaPrMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-}
-void Averaging::initVolumeAveragingFluctStressValues()
-{
-   sumVaFlucVx.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaFlucVy.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaFlucVz.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaFlucPr.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   
-   sumVaStressXX.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaStressYY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaStressZZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaStressXY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaStressXZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaStressYZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-}
-void Averaging::initMeanVolumeAveragingValues()
-{
-   vaMeanVxMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaMeanVyMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaMeanVzMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaMeanPrMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-}
-void Averaging::initMeanVolumeAveragingFluctStressValues()
-{
-   meanVaFlucVx.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaFlucVy.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaFlucVz.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaFlucPr.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   
-   meanVaStressXX.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressYY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressZZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressXY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressXZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressYZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-}
-void Averaging::sumOfVolumeAveragingValues()
-{
-   vector<double>& vxSum = sumVaVxMatrix.getDataVector();
-   vector<double>& vySum = sumVaVyMatrix.getDataVector();
-   vector<double>& vzSum = sumVaVzMatrix.getDataVector();
-   vector<double>& prSum = sumVaPrMatrix.getDataVector();
-
-   vector<double>& vxVa = vaVxMatrix.getDataVector();
-   vector<double>& vyVa = vaVyMatrix.getDataVector();
-   vector<double>& vzVa = vaVzMatrix.getDataVector();
-   vector<double>& prVa = vaPrMatrix.getDataVector();
-
-   int size = (int)vxVa.size();
-
-   for (int i = 0; i < size; i++)
-   {
-      vxSum[i] += vxVa[i];
-      vySum[i] += vyVa[i];
-      vzSum[i] += vzVa[i];
-      prSum[i] += prVa[i];
-   }
-}
-void Averaging::meanOfVolumeAveragingValues(int numberOfTimeSteps)
-{
-   vector<double>& vxSum = sumVaVxMatrix.getDataVector();
-   vector<double>& vySum = sumVaVyMatrix.getDataVector();
-   vector<double>& vzSum = sumVaVzMatrix.getDataVector();
-   vector<double>& prSum = sumVaPrMatrix.getDataVector();
-
-   vector<double>& vxMean = vaMeanVxMatrix.getDataVector();
-   vector<double>& vyMean = vaMeanVyMatrix.getDataVector();
-   vector<double>& vzMean = vaMeanVzMatrix.getDataVector();
-   vector<double>& prMean = vaMeanPrMatrix.getDataVector();
-
-   int size = (int)vxSum.size();
-
-   for (int i = 0; i < size; i++)
-   {
-      vxMean[i] = vxSum[i] / numberOfTimeSteps;
-      vyMean[i] = vySum[i] / numberOfTimeSteps;
-      vzMean[i] = vzSum[i] / numberOfTimeSteps;
-      prMean[i] = prSum[i] / numberOfTimeSteps;
-   }
-}
-void Averaging::volumeAveragingWithMPI(double l_real)
-{
-   //////////////////////////////////////////////////////////////////////////
-   //DEBUG
-   //////////////////////////////////////////////////////////////////////////
-   //vaVxMatrix = vxMatrix;
-   //vaVyMatrix = vyMatrix;
-   //vaVzMatrix = vzMatrix;
-   //vaPrMatrix = prMatrix;
-   //return;
-   //////////////////////////////////////////////////////////////////////////
-
-   vtkSmartPointer<vtkTimerLog> timer_averaging = vtkSmartPointer<vtkTimerLog>::New();
-
-   UBLOG(logINFO, "volume averaging: start");
-   timer_averaging->StartTimer();
-
-   double l = round(l_real / deltax);
-   UBLOG(logINFO, "l = " + UbSystem::toString(l));
-
-   UBLOG(logINFO, "NX1 x NX2 x NX3 = " + UbSystem::toString(dimensions[0]) << " x " + UbSystem::toString(dimensions[1]) << " x " << UbSystem::toString(dimensions[2]));
-
-   int size = dimensions[0] * dimensions[1] * dimensions[2];
-   vaVxMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaVyMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaVzMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaPrMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-
-   int numprocs, PID;
-   MPI_Comm_rank(MPI_COMM_WORLD, &PID);
-   MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
-
-   int part = (int)round((double)dimensions[0] / (double)numprocs);
-   UBLOG(logINFO, "part = " + UbSystem::toString(part));
-
-   int startX1 = part * PID;
-   int stopX1 = startX1 + part;
-   if (PID == numprocs - 1)
-   {
-      stopX1 = dimensions[0];
-   }
-
-   UBLOG(logINFO, "startX1 = " + UbSystem::toString(startX1));
-   UBLOG(logINFO, "stopX1 = " + UbSystem::toString(stopX1));
-
-   vtkSmartPointer<vtkTimerLog> timer_inloop = vtkSmartPointer<vtkTimerLog>::New();
-   //timer_inloop->StartTimer();
-   int p = 1000000;
-
-   //omp_set_num_threads(8);
-
-   //#pragma omp parallel num_threads(4) //private(i)
-   {
-      int i = 0;
-      
-#pragma omp parallel for //private(i)//scheduler(dynamic, 1)
-      for (int x3 = 0; x3 < dimensions[2]; x3++)
-         for (int x2 = 0; x2 < dimensions[1]; x2++)
-            for (int x1 = startX1; x1 < stopX1; x1++)
-            {
-               int ID = omp_get_thread_num();
-               if (i == 0 && ID == 0)
-               {
-                  timer_inloop->StartTimer();
-                  UBLOG(logINFO, "point id = " + UbSystem::toString(i));
-               }
-               double vx = 0.0;
-               double vy = 0.0;
-               double vz = 0.0;
-               double pr = 0.0;
-
-               int ll = (int)l;
-               int llz1 = ll;
-               if (x3 - ll < 0) llz1 = x3;
-               if (x3 + ll >= dimensions[2]) llz1 = dimensions[2] - 1 - x3;
-               double lQuadrat = l * l;
-               double lNorm = lQuadrat * lQuadrat * double(llz1) * double(llz1);
-
-               //#pragma omp parallel for
-               for (int z = -llz1; z <= +llz1; z++)
-                  for (int y = -ll; y <= +ll; y++)
-                     for (int x = -ll; x <= +ll; x++)
-                     {
-                        int xx = x1 + x;
-                        int yy = x2 + y;
-                        int zz = x3 + z;
-
-                        //correctIndex(xx, yy, zz);
-                        if (xx < 0)   xx = dimensions[0] + xx;
-                        if (xx >= dimensions[0]) xx = xx - dimensions[0];
-
-                        if (yy < 0)   yy = dimensions[1] + yy;
-                        if (yy >= dimensions[1]) yy = yy - dimensions[1];
-
-                        if (zz < 0) zz = 0;
-                        if (zz >= dimensions[2]) zz = dimensions[2] - 1;
-
-                        double mm = (G((double)x, l)*G((double)y, l)*G((double)z, (double)llz1)) / lNorm;
-                        double gamma = (double)geoMatrix(xx, yy, zz);
-
-                        vx += gamma*mm*vxMatrix(xx, yy, zz);
-                        vy += gamma*mm*vyMatrix(xx, yy, zz);
-                        vz += gamma*mm*vzMatrix(xx, yy, zz);
-                        pr += gamma*mm*prMatrix(xx, yy, zz);
-
-                     }
-
-               vaVxMatrix(x1, x2, x3) = vx;
-               vaVyMatrix(x1, x2, x3) = vy;
-               vaVzMatrix(x1, x2, x3) = vz;
-               vaPrMatrix(x1, x2, x3) = pr;
-
-               if (i%p == 0 && i != 0 && ID == 0)
-               {
-                  timer_inloop->StopTimer();
-                  UBLOG(logINFO, "point id = " + UbSystem::toString(i));
-                  UBLOG(logINFO, "time per " + UbSystem::toString(p) + " points: " + UbSystem::toString(timer_inloop->GetElapsedTime()) + " s");
-                  UBLOG(logINFO, "actual memory usage: " << UbSystem::toString(Utilities::getPhysMemUsedByMe() / 1e9) << " GByte");
-                  timer_inloop->StartTimer();
-                  UBLOG(logINFO, "thread id: " + UbSystem::toString(ID));
-                  UBLOG(logINFO, "Number of treads: " + UbSystem::toString(omp_get_num_threads()));
-               }
-               i++;
-            }
-   }
-
-   if (PID == 0)
-   {
-      vector<double> receiveBuffer;
-      for (int i = 1; i < numprocs; i++)
-      {
-         int count, lstartX1, lstopX1;
-         MPI_Status status;
-         MPI_Recv(&count, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         receiveBuffer.resize(count);
-         MPI_Recv(&receiveBuffer[0], count, MPI_DOUBLE, i, 0, MPI_COMM_WORLD, &status);
-         MPI_Recv(&lstartX1, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         MPI_Recv(&lstopX1, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         int c = 0;
-         for (int x3 = 0; x3 < dimensions[2]; x3++)
-            for (int x2 = 0; x2 < dimensions[1]; x2++)
-               for (int x1 = lstartX1; x1 < lstopX1; x1++)
-               {
-                  vaVxMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaVyMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaVzMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaPrMatrix(x1, x2, x3) = receiveBuffer[c++];
-               }
-      }
-   }
-   else
-   {
-      vector<double> sendBuffer;
-      for (int x3 = 0; x3 < dimensions[2]; x3++)
-         for (int x2 = 0; x2 < dimensions[1]; x2++)
-            for (int x1 = startX1; x1 < stopX1; x1++)
-            {
-               sendBuffer.push_back(vaVxMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaVyMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaVzMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaPrMatrix(x1, x2, x3));
-            }
-      int count = (int)sendBuffer.size();
-      MPI_Send(&count, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&sendBuffer[0], count, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&startX1, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&stopX1, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-   }
-
-   timer_averaging->StopTimer();
-   UBLOG(logINFO, "volume averaging: end");
-   UBLOG(logINFO, "volume averaging time: " + UbSystem::toString(timer_averaging->GetElapsedTime()) + " s");
-}
-void Averaging::volumeAveragingFluctStressWithMPI(double l_real)
-{
-   vtkSmartPointer<vtkTimerLog> timer_averaging = vtkSmartPointer<vtkTimerLog>::New();
-
-   UBLOG(logINFO, "volume averaging fluct and stress: start");
-   timer_averaging->StartTimer();
-
-   double l = round(l_real / deltax);
-   UBLOG(logINFO, "l = " + UbSystem::toString(l));
-
-   UBLOG(logINFO, "NX1 x NX2 x NX3 = " + UbSystem::toString(dimensions[0]) << " x " + UbSystem::toString(dimensions[1]) << " x " << UbSystem::toString(dimensions[2]));
-
-   int size = dimensions[0] * dimensions[1] * dimensions[2];
-   vaFlucVxMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaFlucVyMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaFlucVzMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaFlucPrMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressXX.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressYY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressZZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressXY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressXZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressYZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-
-   int numprocs, PID;
-   MPI_Comm_rank(MPI_COMM_WORLD, &PID);
-   MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
-
-   int part = (int)round((double)dimensions[0] / (double)numprocs);
-   UBLOG(logINFO, "part = " + UbSystem::toString(part));
-
-   int startX1 = part * PID;
-   int stopX1 = startX1 + part;
-   if (PID == numprocs - 1)
-   {
-      stopX1 = dimensions[0];
-   }
-
-   UBLOG(logINFO, "startX1 = " + UbSystem::toString(startX1));
-   UBLOG(logINFO, "stopX1 = " + UbSystem::toString(stopX1));
-
-   vtkSmartPointer<vtkTimerLog> timer_inloop = vtkSmartPointer<vtkTimerLog>::New();
-   //timer_inloop->StartTimer();
-   int p = 1000000;
-
-   //omp_set_num_threads(8);
-
-   //#pragma omp parallel num_threads(4) //private(i)
-   {
-      int i = 0;
-#pragma omp parallel for //private(i)//scheduler(dynamic, 1)
-      for (int x3 = 0; x3 < dimensions[2]; x3++)
-         for (int x2 = 0; x2 < dimensions[1]; x2++)
-            for (int x1 = startX1; x1 < stopX1; x1++)
-            {
-               int ID = omp_get_thread_num();
-               if (i == 0 && ID == 0)
-               {
-                  timer_inloop->StartTimer();
-                  UBLOG(logINFO, "point id = " + UbSystem::toString(i));
-               }
-               double flucvx = 0.0;
-               double flucvy = 0.0;
-               double flucvz = 0.0;
-               double flucpr = 0.0;
-               double stressXX = 0.0;
-               double stressYY = 0.0;
-               double stressZZ = 0.0;
-               double stressXY = 0.0;
-               double stressXZ = 0.0;
-               double stressYZ = 0.0;
-
-               int ll = (int)l;
-               int llz1 = ll;
-               if (x3 - ll < 0) llz1 = x3;
-               if (x3 + ll >= dimensions[2]) llz1 = dimensions[2] - 1 - x3;
-               double lQuadrat = l * l;
-               double lNorm = lQuadrat * lQuadrat * double(llz1) * double(llz1);
-
-               //#pragma omp parallel for
-               for (int z = -llz1; z <= +llz1; z++)
-                  for (int y = -ll; y <= +ll; y++)
-                     for (int x = -ll; x <= +ll; x++)
-                     {
-                        int xx = x1 + x;
-                        int yy = x2 + y;
-                        int zz = x3 + z;
-
-                        //correctIndex(xx, yy, zz);
-                        if (xx < 0)   xx = dimensions[0] + xx;
-                        if (xx >= dimensions[0]) xx = xx - dimensions[0];
-
-                        if (yy < 0)   yy = dimensions[1] + yy;
-                        if (yy >= dimensions[1]) yy = yy - dimensions[1];
-
-                        if (zz < 0)   zz = 0;
-                        if (zz >= dimensions[2]) zz = dimensions[2] - 1;
-
-                        double mm = (G((double)x, l)*G((double)y, l)*G((double)z, (double)llz1)) / lNorm;
-                        double gamma = (double)geoMatrix(xx, yy, zz);
-
-                        flucvx += gamma*mm*flucVxMatrix(xx, yy, zz);
-                        flucvy += gamma*mm*flucVyMatrix(xx, yy, zz);
-                        flucvz += gamma*mm*flucVzMatrix(xx, yy, zz);
-                        flucpr += gamma*mm*flucPrMatrix(xx, yy, zz);
-
-                        stressXX += gamma*mm*StressXX(xx, yy, zz);
-                        stressYY += gamma*mm*StressYY(xx, yy, zz);
-                        stressZZ += gamma*mm*StressZZ(xx, yy, zz);
-                        stressXY += gamma*mm*StressXY(xx, yy, zz);
-                        stressXZ += gamma*mm*StressXZ(xx, yy, zz);
-                        stressYZ += gamma*mm*StressYZ(xx, yy, zz);
-
-                     }
-
-               vaFlucVxMatrix(x1, x2, x3) = flucvx;
-               vaFlucVyMatrix(x1, x2, x3) = flucvy;
-               vaFlucVzMatrix(x1, x2, x3) = flucvz;
-               vaFlucPrMatrix(x1, x2, x3) = flucpr;
-
-               vaStressXX(x1, x2, x3) = stressXX;
-               vaStressYY(x1, x2, x3) = stressYY;
-               vaStressZZ(x1, x2, x3) = stressZZ;
-               vaStressXY(x1, x2, x3) = stressXY;
-               vaStressXZ(x1, x2, x3) = stressXZ;
-               vaStressYZ(x1, x2, x3) = stressYZ;
-
-               if (i%p == 0 && i != 0 && ID == 0)
-               {
-                  timer_inloop->StopTimer();
-                  UBLOG(logINFO, "point id = " + UbSystem::toString(i));
-                  UBLOG(logINFO, "time per " + UbSystem::toString(p) + " points: " + UbSystem::toString(timer_inloop->GetElapsedTime()) + " s");
-                  UBLOG(logINFO, "actual memory usage: " << UbSystem::toString(Utilities::getPhysMemUsedByMe() / 1e9) << " GByte");
-                  timer_inloop->StartTimer();
-                  UBLOG(logINFO, "thread id: " + UbSystem::toString(ID));
-                  UBLOG(logINFO, "Number of treads: " + UbSystem::toString(omp_get_num_threads()));
-               }
-               i++;
-            }
-   }
-
-   if (PID == 0)
-   {
-      vector<double> receiveBuffer;
-      for (int i = 1; i < numprocs; i++)
-      {
-         int count, lstartX1, lstopX1;
-         MPI_Status status;
-         MPI_Recv(&count, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         receiveBuffer.resize(count);
-         MPI_Recv(&receiveBuffer[0], count, MPI_DOUBLE, i, 0, MPI_COMM_WORLD, &status);
-         MPI_Recv(&lstartX1, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         MPI_Recv(&lstopX1, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &status);
-         int c = 0;
-         for (int x3 = 0; x3 < dimensions[2]; x3++)
-            for (int x2 = 0; x2 < dimensions[1]; x2++)
-               for (int x1 = lstartX1; x1 < lstopX1; x1++)
-               {
-                  vaFlucVxMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaFlucVyMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaFlucVzMatrix(x1, x2, x3) = receiveBuffer[c++];
-                  vaFlucPrMatrix(x1, x2, x3) = receiveBuffer[c++];
-
-                  vaStressXX(x1, x2, x3) = receiveBuffer[c++];
-                  vaStressYY(x1, x2, x3) = receiveBuffer[c++];
-                  vaStressZZ(x1, x2, x3) = receiveBuffer[c++];
-                  vaStressXY(x1, x2, x3) = receiveBuffer[c++];
-                  vaStressXZ(x1, x2, x3) = receiveBuffer[c++];
-                  vaStressYZ(x1, x2, x3) = receiveBuffer[c++];
-               }
-      }
-   }
-   else
-   {
-      vector<double> sendBuffer;
-      for (int x3 = 0; x3 < dimensions[2]; x3++)
-         for (int x2 = 0; x2 < dimensions[1]; x2++)
-            for (int x1 = startX1; x1 < stopX1; x1++)
-            {
-               sendBuffer.push_back(vaFlucVxMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaFlucVyMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaFlucVzMatrix(x1, x2, x3));
-               sendBuffer.push_back(vaFlucPrMatrix(x1, x2, x3));
-
-               sendBuffer.push_back(vaStressXX(x1, x2, x3));
-               sendBuffer.push_back(vaStressYY(x1, x2, x3));
-               sendBuffer.push_back(vaStressZZ(x1, x2, x3));
-               sendBuffer.push_back(vaStressXY(x1, x2, x3));
-               sendBuffer.push_back(vaStressXZ(x1, x2, x3));
-               sendBuffer.push_back(vaStressYZ(x1, x2, x3));
-            }
-      int count = (int)sendBuffer.size();
-      MPI_Send(&count, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&sendBuffer[0], count, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&startX1, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-      MPI_Send(&stopX1, 1, MPI_INT, 0, 0, MPI_COMM_WORLD);
-   }
-
-   timer_averaging->StopTimer();
-   UBLOG(logINFO, "volume averaging fluct and stress: end");
-   UBLOG(logINFO, "volume averaging fluct and stress time: " + UbSystem::toString(timer_averaging->GetElapsedTime()) + " s");
-}
-void Averaging::writeVolumeAveragingValuesToBinaryFiles(std::string ffname, int timeStep)
-{
-   writeMatrixToBinaryFiles<double>(vaVxMatrix, ffname + "Vx" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(vaVyMatrix, ffname + "Vy" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(vaVzMatrix, ffname + "Vz" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(vaPrMatrix, ffname + "Pr" + UbSystem::toString(timeStep) + ".bin");
-}
-void Averaging::readVolumeAveragingValuesFromBinaryFiles(std::string fname, int timeStep)
-{
-   readMatrixFromBinaryFiles<double>(fname + "Vx" + UbSystem::toString(timeStep) + ".bin", vaVxMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Vy" + UbSystem::toString(timeStep) + ".bin", vaVyMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Vz" + UbSystem::toString(timeStep) + ".bin", vaVzMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Pr" + UbSystem::toString(timeStep) + ".bin", vaPrMatrix);
-}
-void Averaging::writeMeanVolumeAveragingValuesToBinaryFiles(std::string ffname)
-{
-   writeMatrixToBinaryFiles<double>(vaMeanVxMatrix, ffname + "Vx" + ".bin");
-   writeMatrixToBinaryFiles<double>(vaMeanVyMatrix, ffname + "Vy" + ".bin");
-   writeMatrixToBinaryFiles<double>(vaMeanVzMatrix, ffname + "Vz" + ".bin");
-   writeMatrixToBinaryFiles<double>(vaMeanPrMatrix, ffname + "Pr" + ".bin");
-}
-void Averaging::readMeanVolumeAveragingValuesFromBinaryFiles(std::string ffname)
-{
-   readMatrixFromBinaryFiles<double>(ffname + "Vx" + ".bin", vaMeanVxMatrix);
-   readMatrixFromBinaryFiles<double>(ffname + "Vy" + ".bin", vaMeanVyMatrix);
-   readMatrixFromBinaryFiles<double>(ffname + "Vz" + ".bin", vaMeanVzMatrix);
-   readMatrixFromBinaryFiles<double>(ffname + "Pr" + ".bin", vaMeanPrMatrix);
-}
-//void Averaging::readVolumeAveragingFluctStressValuesFromBinaryFiles(std::string fname, int timeStep)
-//{
-//   readMatrixFromBinaryFiles<double>(fname + "fluctVx" + UbSystem::toString(timeStep) + ".bin", vaFlucVxMatrix);
-//   readMatrixFromBinaryFiles<double>(fname + "fluctVy" + UbSystem::toString(timeStep) + ".bin", vaFlucVyMatrix);
-//   readMatrixFromBinaryFiles<double>(fname + "fluctVz" + UbSystem::toString(timeStep) + ".bin", vaFlucVzMatrix);
-//   readMatrixFromBinaryFiles<double>(fname + "fluctPr" + UbSystem::toString(timeStep) + ".bin", vaFlucPrMatrix);
-//
-//   readMatrixFromBinaryFiles<double>(fname + "stressXX" + UbSystem::toString(timeStep) + ".bin", vaStressXX);
-//   readMatrixFromBinaryFiles<double>(fname + "stressYY" + UbSystem::toString(timeStep) + ".bin", vaStressYY);
-//   readMatrixFromBinaryFiles<double>(fname + "stressZZ" + UbSystem::toString(timeStep) + ".bin", vaStressZZ);
-//   readMatrixFromBinaryFiles<double>(fname + "stressXY" + UbSystem::toString(timeStep) + ".bin", vaStressXY);
-//   readMatrixFromBinaryFiles<double>(fname + "stressXZ" + UbSystem::toString(timeStep) + ".bin", vaStressXZ);
-//   readMatrixFromBinaryFiles<double>(fname + "stressYZ" + UbSystem::toString(timeStep) + ".bin", vaStressYZ);
-//}
-
-//------------------------------ fluctuations -----------------------
-void Averaging::initFluctuations()
-{
-   flucVxMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   flucVyMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   flucVzMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   flucPrMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaFlucVxMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaFlucVyMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaFlucVzMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaFlucPrMatrix.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-}
-void Averaging::initSumOfVaFluctuations()
-{
-   sumVaFlucVx.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaFlucVy.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaFlucVz.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaFlucPr.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-}
-void Averaging::initMeanOfVaFluctuations()
-{
-   meanVaFlucVx.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaFlucVy.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaFlucVz.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaFlucPr.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-}
-void Averaging::fluctuationsStress()
-{
-   vector<double>& vxF = vxMatrix.getDataVector();
-   vector<double>& vyF = vyMatrix.getDataVector();
-   vector<double>& vzF = vzMatrix.getDataVector();
-   vector<double>& prF = prMatrix.getDataVector();
-
-   vector<double>& vxMean = vaMeanVxMatrix.getDataVector();
-   vector<double>& vyMean = vaMeanVyMatrix.getDataVector();
-   vector<double>& vzMean = vaMeanVzMatrix.getDataVector();
-   vector<double>& prMean = vaMeanPrMatrix.getDataVector();
-
-   vector<double>& vxFluc = flucVxMatrix.getDataVector();
-   vector<double>& vyFluc = flucVyMatrix.getDataVector();
-   vector<double>& vzFluc = flucVzMatrix.getDataVector();
-   vector<double>& prFluc = flucPrMatrix.getDataVector();
-
-   vector<double>& XXStress = StressXX.getDataVector();
-   vector<double>& YYStress = StressYY.getDataVector();
-   vector<double>& ZZStress = StressZZ.getDataVector();
-   vector<double>& XYStress = StressXY.getDataVector();
-   vector<double>& XZStress = StressXZ.getDataVector();
-   vector<double>& YZStress = StressYZ.getDataVector();
-
-   int size = (int)vxF.size();
-
-   for (int i = 0; i < size; i++)
-   {
-      vxFluc[i] = vxF[i] - vxMean[i];
-      vyFluc[i] = vyF[i] - vyMean[i];
-      vzFluc[i] = vzF[i] - vzMean[i];
-      prFluc[i] = prF[i] - prMean[i];
-
-      XXStress[i] = vxFluc[i] * vxFluc[i];
-      YYStress[i] = vyFluc[i] * vyFluc[i];
-      ZZStress[i] = vzFluc[i] * vzFluc[i];
-      XYStress[i] = vxFluc[i] * vyFluc[i];
-      XZStress[i] = vxFluc[i] * vzFluc[i];
-      YZStress[i] = vyFluc[i] * vzFluc[i];
-   }
-}
-void Averaging::fluctuationsStress2()
-{
-   vector<double>& vxVa = vaVxMatrix.getDataVector();
-   vector<double>& vyVa = vaVyMatrix.getDataVector();
-   vector<double>& vzVa = vaVzMatrix.getDataVector();
-   vector<double>& prVa = vaPrMatrix.getDataVector();
-
-   vector<double>& vxMean = vaMeanVxMatrix.getDataVector();
-   vector<double>& vyMean = vaMeanVyMatrix.getDataVector();
-   vector<double>& vzMean = vaMeanVzMatrix.getDataVector();
-   vector<double>& prMean = vaMeanPrMatrix.getDataVector();
-
-   vector<double>& vxFluc = vaFlucVxMatrix.getDataVector();
-   vector<double>& vyFluc = vaFlucVyMatrix.getDataVector();
-   vector<double>& vzFluc = vaFlucVzMatrix.getDataVector();
-   vector<double>& prFluc = vaFlucPrMatrix.getDataVector();
-
-   vector<double>& XXStress = vaStressXX.getDataVector();
-   vector<double>& YYStress = vaStressYY.getDataVector();
-   vector<double>& ZZStress = vaStressZZ.getDataVector();
-   vector<double>& XYStress = vaStressXY.getDataVector();
-   vector<double>& XZStress = vaStressXZ.getDataVector();
-   vector<double>& YZStress = vaStressYZ.getDataVector();
-
-   int size = (int)vxVa.size();
-
-   for (int i = 0; i < size; i++)
-   {
-      vxFluc[i] = vxVa[i] - vxMean[i];
-      vyFluc[i] = vyVa[i] - vyMean[i];
-      vzFluc[i] = vzVa[i] - vzMean[i];
-      prFluc[i] = prVa[i] - prMean[i];
-
-      XXStress[i] = vxFluc[i] * vxFluc[i];
-      YYStress[i] = vyFluc[i] * vyFluc[i];
-      ZZStress[i] = vzFluc[i] * vzFluc[i];
-      XYStress[i] = vxFluc[i] * vyFluc[i];
-      XZStress[i] = vxFluc[i] * vzFluc[i];
-      YZStress[i] = vyFluc[i] * vzFluc[i];
-   }
-}
-
-
-void Averaging::sumOfVaFluctuations()
-{
-   static int counter = 0;
-   vector<double>& vxFluc = vaFlucVxMatrix.getDataVector();
-   vector<double>& vyFluc = vaFlucVyMatrix.getDataVector();
-   vector<double>& vzFluc = vaFlucVzMatrix.getDataVector();
-   vector<double>& prFluc = vaFlucPrMatrix.getDataVector();
-
-   vector<double>& SumFlucVx = sumVaFlucVx.getDataVector();
-   vector<double>& SumFlucVy = sumVaFlucVy.getDataVector();
-   vector<double>& SumFlucVz = sumVaFlucVz.getDataVector();
-   vector<double>& SumFlucPr = sumVaFlucPr.getDataVector();
-
-   int size = (int)vxFluc.size();
-
-   for (int i = 0; i < size; i++)
-   {
-      SumFlucVx[i] += vxFluc[i];
-      SumFlucVy[i] += vyFluc[i];
-      SumFlucVz[i] += vzFluc[i];
-      SumFlucPr[i] += prFluc[i];
-      counter++;
-   }
-
-}
-void Averaging::meanOfVaFluctuations(int numberOfTimeSteps)
-{
-   vector<double>& MeanFlucVx = meanVaFlucVx.getDataVector();
-   vector<double>& MeanFlucVy = meanVaFlucVy.getDataVector();
-   vector<double>& MeanFlucVz = meanVaFlucVz.getDataVector();
-   vector<double>& MeanFlucPr = meanVaFlucPr.getDataVector();
-
-   vector<double>& SumFlucVx = sumVaFlucVx.getDataVector();
-   vector<double>& SumFlucVy = sumVaFlucVy.getDataVector();
-   vector<double>& SumFlucVz = sumVaFlucVz.getDataVector();
-   vector<double>& SumFlucPr = sumVaFlucPr.getDataVector();
-
-   int size = (int)SumFlucVx.size();
-
-   for (int i = 0; i < size; i++)
-   {
-      MeanFlucVx[i] = SumFlucVx[i] / numberOfTimeSteps;
-      MeanFlucVy[i] = SumFlucVy[i] / numberOfTimeSteps;
-      MeanFlucVz[i] = SumFlucVz[i] / numberOfTimeSteps;
-      MeanFlucPr[i] = SumFlucPr[i] / numberOfTimeSteps;
-   }
-}
-void Averaging::writeVaFluctuationsToBinaryFiles(std::string fname, int timeStep)
-{
-   writeMatrixToBinaryFiles<double>(vaFlucVxMatrix, fname + "Vx" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(vaFlucVyMatrix, fname + "Vy" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(vaFlucVzMatrix, fname + "Vz" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(vaFlucPrMatrix, fname + "Pr" + UbSystem::toString(timeStep) + ".bin");
-}
-void Averaging::readVaFluctuationsFromBinaryFiles(std::string fname, int timeStep)
-{
-   readMatrixFromBinaryFiles<double>(fname + "Vx" + UbSystem::toString(timeStep) + ".bin", vaFlucVxMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Vy" + UbSystem::toString(timeStep) + ".bin", vaFlucVyMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Vz" + UbSystem::toString(timeStep) + ".bin", vaFlucVzMatrix);
-   readMatrixFromBinaryFiles<double>(fname + "Pr" + UbSystem::toString(timeStep) + ".bin", vaFlucPrMatrix);
-}
-void Averaging::initMeanOfVolumeAveragedValues()
-{
-   meanVaFlucVx.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaFlucVy.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaFlucVz.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaFlucPr.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-
-   meanVaStressXX.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressYY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressZZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressXY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressXZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressYZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-}
-void Averaging::sumVolumeAveragedValues()
-{
-   static int counter = 0;
-   vector<double>& vxFluc = vaFlucVxMatrix.getDataVector();
-   vector<double>& vyFluc = vaFlucVyMatrix.getDataVector();
-   vector<double>& vzFluc = vaFlucVzMatrix.getDataVector();
-   vector<double>& prFluc = vaFlucPrMatrix.getDataVector();
-
-   vector<double>& sumFlucVx = meanVaFlucVx.getDataVector();
-   vector<double>& sumFlucVy = meanVaFlucVy.getDataVector();
-   vector<double>& sumFlucVz = meanVaFlucVz.getDataVector();
-   vector<double>& sumFlucPr = meanVaFlucPr.getDataVector();
-
-   vector<double>& sumStressXX = meanVaStressXX.getDataVector();
-   vector<double>& sumStressYY = meanVaStressYY.getDataVector();
-   vector<double>& sumStressZZ = meanVaStressZZ.getDataVector();
-   vector<double>& sumStressXY = meanVaStressXY.getDataVector();
-   vector<double>& sumStressXZ = meanVaStressXZ.getDataVector();
-   vector<double>& sumStressYZ = meanVaStressYZ.getDataVector();
-
-   int size = (int)vxFluc.size();
-
-   for (int i = 0; i < size; i++)
-   {
-      sumFlucVx[i] += vxFluc[i];
-      sumFlucVy[i] += vyFluc[i];
-      sumFlucVz[i] += vzFluc[i];
-      sumFlucPr[i] += prFluc[i];
-
-      sumStressXX[i] += vxFluc[i] * vxFluc[i];
-      sumStressYY[i] += vyFluc[i] * vyFluc[i];
-      sumStressZZ[i] += vzFluc[i] * vzFluc[i];
-      sumStressXY[i] += vxFluc[i] * vyFluc[i];
-      sumStressXZ[i] += vxFluc[i] * vzFluc[i];
-      sumStressYZ[i] += vyFluc[i] * vzFluc[i];
-
-      counter++;
-   }
-}
-void Averaging::computeVolumeAveragedValues(int numberOfTimeSteps)
-{
-   vector<double>& meanFlucVx = meanVaFlucVx.getDataVector();
-   vector<double>& meanFlucVy = meanVaFlucVy.getDataVector();
-   vector<double>& meanFlucVz = meanVaFlucVz.getDataVector();
-   vector<double>& meanFlucPr = meanVaFlucPr.getDataVector();
-
-   vector<double>& meanStressXX = meanVaStressXX.getDataVector();
-   vector<double>& meanStressYY = meanVaStressYY.getDataVector();
-   vector<double>& meanStressZZ = meanVaStressZZ.getDataVector();
-   vector<double>& meanStressXY = meanVaStressXY.getDataVector();
-   vector<double>& meanStressXZ = meanVaStressXZ.getDataVector();
-   vector<double>& meanStressYZ = meanVaStressYZ.getDataVector();
-
-   int size = (int)meanFlucVx.size();
-
-   for (int i = 0; i < size; i++)
-   {
-      meanFlucVx[i] = meanFlucVx[i] / numberOfTimeSteps;
-      meanFlucVy[i] = meanFlucVy[i] / numberOfTimeSteps;
-      meanFlucVz[i] = meanFlucVz[i] / numberOfTimeSteps;
-      meanFlucPr[i] = meanFlucPr[i] / numberOfTimeSteps;
-
-      meanStressXX[i] = meanStressXX[i] / numberOfTimeSteps;
-      meanStressYY[i] = meanStressYY[i] / numberOfTimeSteps;
-      meanStressZZ[i] = meanStressZZ[i] / numberOfTimeSteps;
-      meanStressXY[i] = meanStressXY[i] / numberOfTimeSteps;
-      meanStressXZ[i] = meanStressXZ[i] / numberOfTimeSteps;
-      meanStressYZ[i] = meanStressYZ[i] / numberOfTimeSteps;
-   }
-}
-void Averaging::writeVolumeAveragedValuesToBinaryFiles(std::string fname)
-{
-   writeMatrixToBinaryFiles<double>(meanVaFlucVx, fname + "Vx" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaFlucVy, fname + "Vy" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaFlucVz, fname + "Vz" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaFlucPr, fname + "Pr" + ".bin");
-
-   writeMatrixToBinaryFiles<double>(meanVaStressXX, fname + "XX" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaStressYY, fname + "YY" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaStressZZ, fname + "ZZ" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaStressXY, fname + "XY" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaStressXZ, fname + "XZ" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaStressYZ, fname + "YZ" + ".bin");
-}
-void Averaging::readVolumeAveragedValuesFromBinaryFiles(std::string fname)
-{
-   readMatrixFromBinaryFiles<double>(fname + "Vx" + ".bin", meanVaFlucVx);
-   readMatrixFromBinaryFiles<double>(fname + "Vy" + ".bin", meanVaFlucVy);
-   readMatrixFromBinaryFiles<double>(fname + "Vz" + ".bin", meanVaFlucVz);
-   readMatrixFromBinaryFiles<double>(fname + "Pr" + ".bin", meanVaFlucPr);
-
-   readMatrixFromBinaryFiles<double>(fname + "XX" + ".bin", meanVaStressXX);
-   readMatrixFromBinaryFiles<double>(fname + "YY" + ".bin", meanVaStressYY);
-   readMatrixFromBinaryFiles<double>(fname + "ZZ" + ".bin", meanVaStressZZ);
-   readMatrixFromBinaryFiles<double>(fname + "XY" + ".bin", meanVaStressXY);
-   readMatrixFromBinaryFiles<double>(fname + "XZ" + ".bin", meanVaStressXZ);
-   readMatrixFromBinaryFiles<double>(fname + "YZ" + ".bin", meanVaStressYZ);
-}
-void Averaging::writeMeanVaFluctuationsToBinaryFiles(std::string fname)
-{
-   writeMatrixToBinaryFiles<double>(meanVaFlucVx, fname + "Vx" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaFlucVy, fname + "Vy" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaFlucVz, fname + "Vz" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaFlucPr, fname + "Pr" + ".bin");
-}
-void Averaging::readMeanVaFluctuationsFromBinaryFiles(std::string fname)
-{
-   readMatrixFromBinaryFiles<double>(fname + "Vx" + ".bin", meanVaFlucVx);
-   readMatrixFromBinaryFiles<double>(fname + "Vy" + ".bin", meanVaFlucVy);
-   readMatrixFromBinaryFiles<double>(fname + "Vz" + ".bin", meanVaFlucVz);
-   readMatrixFromBinaryFiles<double>(fname + "Pr" + ".bin", meanVaFlucPr);
-}
-void Averaging::writeMeanOfVaFluctuationsToImageFile(std::string output)
-{
-   array < CbArray3D<double>, 4 > matrix = { meanVaFlucVx, meanVaFlucVy, meanVaFlucVz, meanVaFlucPr };
-   writeMatrixToImageFile(output, matrix);
-}
-void Averaging::writeFluctuationsToImageFile(std::string output)
-{
-   array < CbArray3D<double>, 4 > matrix = { flucVxMatrix, flucVyMatrix, flucVzMatrix, flucPrMatrix };
-   writeMatrixToImageFile(output, matrix);
-}
-void Averaging::writeVaFluctuationsToImageFile(std::string output)
-{
-   array < CbArray3D<double>, 4 > matrix = { vaFlucVxMatrix, vaFlucVyMatrix, vaFlucVzMatrix, vaFlucPrMatrix };
-   writeMatrixToImageFile(output, matrix);
-}
-
-//----------------------------- stress -----------------------------
-void Averaging::initStresses()
-{
-   StressXX.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   StressYY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   StressZZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   StressXY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   StressXZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   StressYZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressXX.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressYY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressZZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressXY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressXZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   vaStressYZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-}
-void Averaging::initSumOfVaStresses()
-{
-   sumVaStressXX.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaStressYY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaStressZZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaStressXY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaStressXZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   sumVaStressYZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-}
-void Averaging::initMeanOfVaStresses()
-{
-   meanVaStressXX.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressYY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressZZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressXY.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressXZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-   meanVaStressYZ.resize(dimensions[0], dimensions[1], dimensions[2], 0);
-}
-void Averaging::sumOfVaStresses()
-{
-   vector<double>& XXStress = vaStressXX.getDataVector();
-   vector<double>& YYStress = vaStressYY.getDataVector();
-   vector<double>& ZZStress = vaStressZZ.getDataVector();
-   vector<double>& XYStress = vaStressXY.getDataVector();
-   vector<double>& XZStress = vaStressXZ.getDataVector();
-   vector<double>& YZStress = vaStressYZ.getDataVector();
-
-   vector<double>& XXSum = sumVaStressXX.getDataVector();
-   vector<double>& YYSum = sumVaStressYY.getDataVector();
-   vector<double>& ZZSum = sumVaStressZZ.getDataVector();
-   vector<double>& XYSum = sumVaStressXY.getDataVector();
-   vector<double>& XZSum = sumVaStressXZ.getDataVector();
-   vector<double>& YZSum = sumVaStressYZ.getDataVector();
-                           
-   int size = (int)XXStress.size();
-
-   for (int i = 0; i < size; i++)
-   {
-      XXSum[i] += XXStress[i];
-      YYSum[i] += YYStress[i];
-      ZZSum[i] += ZZStress[i];
-      XYSum[i] += XYStress[i];
-      XZSum[i] += XZStress[i];
-      YZSum[i] += YZStress[i];
-   }
-}
-void Averaging::meanOfVaStresses(int numberOfTimeSteps)
-{
-   vector<double>& XXSum = sumVaStressXX.getDataVector();
-   vector<double>& YYSum = sumVaStressYY.getDataVector();
-   vector<double>& ZZSum = sumVaStressZZ.getDataVector();
-   vector<double>& XYSum = sumVaStressXY.getDataVector();
-   vector<double>& XZSum = sumVaStressXZ.getDataVector();
-   vector<double>& YZSum = sumVaStressYZ.getDataVector();
-
-   vector<double>& XXMean = meanVaStressXX.getDataVector();
-   vector<double>& YYMean = meanVaStressYY.getDataVector();
-   vector<double>& ZZMean = meanVaStressZZ.getDataVector();
-   vector<double>& XYMean = meanVaStressXY.getDataVector();
-   vector<double>& XZMean = meanVaStressXZ.getDataVector();
-   vector<double>& YZMean = meanVaStressYZ.getDataVector();
-
-   int size = (int)XXSum.size();
-
-   for (int i = 0; i < size; i++)
-   {
-      XXMean[i] = XXSum[i] / numberOfTimeSteps;
-      YYMean[i] = YYSum[i] / numberOfTimeSteps;
-      ZZMean[i] = ZZSum[i] / numberOfTimeSteps;
-      XYMean[i] = XYSum[i] / numberOfTimeSteps;
-      XZMean[i] = XZSum[i] / numberOfTimeSteps;
-      YZMean[i] = YZSum[i] / numberOfTimeSteps;
-   }
-}
-void Averaging::writeVaStressesToBinaryFiles(std::string fname, int timeStep)
-{
-   writeMatrixToBinaryFiles<double>(vaStressXX, fname + "XX" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(vaStressYY, fname + "YY" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(vaStressZZ, fname + "ZZ" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(vaStressXY, fname + "XY" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(vaStressXZ, fname + "XZ" + UbSystem::toString(timeStep) + ".bin");
-   writeMatrixToBinaryFiles<double>(vaStressYZ, fname + "YZ" + UbSystem::toString(timeStep) + ".bin");
-}
-void Averaging::readVaStressesFromBinaryFiles(std::string fname, int timeStep)
-{
-   readMatrixFromBinaryFiles<double>(fname + "XX" + UbSystem::toString(timeStep) + ".bin", vaStressXX);
-   readMatrixFromBinaryFiles<double>(fname + "YY" + UbSystem::toString(timeStep) + ".bin", vaStressYY);
-   readMatrixFromBinaryFiles<double>(fname + "ZZ" + UbSystem::toString(timeStep) + ".bin", vaStressZZ);
-   readMatrixFromBinaryFiles<double>(fname + "XY" + UbSystem::toString(timeStep) + ".bin", vaStressXY);
-   readMatrixFromBinaryFiles<double>(fname + "XZ" + UbSystem::toString(timeStep) + ".bin", vaStressXZ);
-   readMatrixFromBinaryFiles<double>(fname + "YZ" + UbSystem::toString(timeStep) + ".bin", vaStressYZ);
-}
-void Averaging::writeMeanVaStressesToBinaryFiles(std::string fname)
-{
-   writeMatrixToBinaryFiles<double>(meanVaStressXX, fname + "XX" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaStressYY, fname + "YY" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaStressZZ, fname + "ZZ" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaStressXY, fname + "XY" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaStressXZ, fname + "XZ" + ".bin");
-   writeMatrixToBinaryFiles<double>(meanVaStressYZ, fname + "YZ" + ".bin");
-}
-void Averaging::readMeanVaStressesFromBinaryFiles(std::string fname)
-{
-   readMatrixFromBinaryFiles<double>(fname + "XX" + ".bin", meanVaStressXX);
-   readMatrixFromBinaryFiles<double>(fname + "YY" + ".bin", meanVaStressYY);
-   readMatrixFromBinaryFiles<double>(fname + "ZZ" + ".bin", meanVaStressZZ);
-   readMatrixFromBinaryFiles<double>(fname + "XY" + ".bin", meanVaStressXY);
-   readMatrixFromBinaryFiles<double>(fname + "XZ" + ".bin", meanVaStressXZ);
-   readMatrixFromBinaryFiles<double>(fname + "YZ" + ".bin", meanVaStressYZ);
-}
-
-void Averaging::writeMeanOfVaStressesToImageFile(std::string ffname)
-{
-   array < CbArray3D<double>, 4 > matrix = { meanVaStressXX, meanVaStressYY, meanVaStressZZ, meanVaStressXY };
-   writeMatrixToImageFile(ffname, matrix);
-}
-
-//------------------------------------ planar --------------------------
-void Averaging::initPlanarAveraging()
-{
-   PlanarVx.resize(dimensions[2], 0);
-   PlanarVy.resize(dimensions[2], 0);
-   PlanarVz.resize(dimensions[2], 0);
-   PlanarPr.resize(dimensions[2], 0);
-
-   PlanarFlucVx.resize(dimensions[2], 0);
-   PlanarFlucVy.resize(dimensions[2], 0);
-   PlanarFlucVz.resize(dimensions[2], 0);
-   PlanarFlucPr.resize(dimensions[2], 0);
-
-   PlanarStressXX.resize(dimensions[2], 0);
-   PlanarStressYY.resize(dimensions[2], 0);
-   PlanarStressZZ.resize(dimensions[2], 0);
-   PlanarStressXY.resize(dimensions[2], 0);
-   PlanarStressXZ.resize(dimensions[2], 0);
-   PlanarStressYZ.resize(dimensions[2], 0);
-}
-void Averaging::planarAveraging()
-{
-   double numberof_XY_points = (double)dimensions[0] * (double)dimensions[1];
-
-   for (int z = 0; z < dimensions[2]; z++)
-   {
-      double sumVx = 0, sumVy = 0, sumVz = 0, sumPr = 0;
-      double sumFluctVx = 0, sumFluctVy = 0, sumFluctVz = 0, sumFluctPr = 0;
-      double sumStressXX = 0, sumStressYY = 0, sumStressZZ = 0, sumStressXY = 0, sumStressXZ = 0, sumStressYZ = 0;
-      for (int y = 0; y < dimensions[1]; y++)
-         for (int x = 0; x < dimensions[0]; x++)
-         {
-            sumVx += vaMeanVxMatrix(x, y, z);
-            sumVy += vaMeanVyMatrix(x, y, z);
-            sumVz += vaMeanVzMatrix(x, y, z);
-            sumPr += vaMeanPrMatrix(x, y, z);
-
-            sumFluctVx += meanVaFlucVx(x, y, z);
-            sumFluctVy += meanVaFlucVy(x, y, z);
-            sumFluctVz += meanVaFlucVz(x, y, z);
-            sumFluctPr += meanVaFlucPr(x, y, z);
-
-            sumStressXX += meanVaStressXX(x, y, z);
-            sumStressYY += meanVaStressYY(x, y, z);
-            sumStressZZ += meanVaStressZZ(x, y, z);
-            sumStressXY += meanVaStressXY(x, y, z);
-            sumStressXZ += meanVaStressXZ(x, y, z);
-            sumStressYZ += meanVaStressYZ(x, y, z);
-         }
-      PlanarVx[z] = sumVx / numberof_XY_points;
-      PlanarVy[z] = sumVy / numberof_XY_points;
-      PlanarVz[z] = sumVz / numberof_XY_points;
-      PlanarPr[z] = sumPr / numberof_XY_points;
-
-      PlanarFlucVx[z] = sumFluctVx / numberof_XY_points;
-      PlanarFlucVy[z] = sumFluctVy / numberof_XY_points;
-      PlanarFlucVz[z] = sumFluctVz / numberof_XY_points;
-      PlanarFlucPr[z] = sumFluctPr / numberof_XY_points;
-
-      PlanarStressXX[z] = sumStressXX / numberof_XY_points;
-      PlanarStressYY[z] = sumStressYY / numberof_XY_points;
-      PlanarStressZZ[z] = sumStressZZ / numberof_XY_points;
-      PlanarStressXY[z] = sumStressXY / numberof_XY_points;
-      PlanarStressXZ[z] = sumStressXZ / numberof_XY_points;
-      PlanarStressYZ[z] = sumStressYZ / numberof_XY_points;
-   }
-}
-   
-void Averaging::writeToCSV(std::string path, double origin, double deltax)
-   {
-      std::ofstream ostr;
-      std::string fname = path + ".csv";
-
-      ostr.open(fname.c_str(), std::ios_base::out);
-      if (!ostr)
-      {
-         ostr.clear();
-         std::string path = UbSystem::getPathFromString(fname);
-         if (path.size() > 0)
-         {
-            UbSystem::makeDirectory(path);
-            ostr.open(fname.c_str(), std::ios_base::out);
-         }
-         if (!ostr) throw UbException(UB_EXARGS, "couldn't open file " + fname);
-      }
-      ostr << "z;Vx;Vy;Vz;Pr;FlucVx;FlucVy;FlucVz;FlucPr;StressXX;StressYY;StressZZ;StressXY;StressXZ;StressYZ\n";
-      for (int i = 0; i < dimensions[2]; i++)
-      {
-         double z = origin + (deltax*i);
-         ostr << z << ";" << PlanarVx[i] << ";" << PlanarVy[i] << ";" << PlanarVz[i] << ";" << PlanarPr[i] << ";"  << PlanarFlucVx[i] << ";" << PlanarFlucVy[i] << ";" << PlanarFlucVz[i] << ";" << PlanarFlucPr[i] << ";" << PlanarStressXX[i] << ";" << PlanarStressYY[i] << ";" << PlanarStressZZ[i] << ";" << PlanarStressXY[i] << ";" << PlanarStressXZ[i] << ";" << PlanarStressYZ[i] << "\n";
-      }
-      ostr.close();
-   }
-
-   void Averaging::writeToCSV2(std::string path, double origin, double deltax)
-   {
-      std::ofstream ostr;
-      std::string fname = path + ".csv";
-
-      ostr.open(fname.c_str(), std::ios_base::out);
-      if (!ostr)
-      {
-         ostr.clear();
-         std::string path = UbSystem::getPathFromString(fname);
-         if (path.size() > 0)
-         {
-            UbSystem::makeDirectory(path);
-            ostr.open(fname.c_str(), std::ios_base::out);
-         }
-         if (!ostr) throw UbException(UB_EXARGS, "couldn't open file " + fname);
-      }
-      ostr << "z;Vx;Vy;Vz;Pr;StressXX;StressYY;StressZZ;StressXY;StressXZ;StressYZ\n";
-      for (int i = 0; i < dimensions[2]; i++)
-      {
-         double z = origin + (deltax*i);
-         ostr << z << ";" << PlanarVx[i] << ";" << PlanarVy[i] << ";" << PlanarVz[i] << ";" << PlanarPr[i] << ";"<< PlanarStressXX[i] << ";" << PlanarStressYY[i] << ";" << PlanarStressZZ[i] << ";" << PlanarStressXY[i] << ";" << PlanarStressXZ[i] << ";" << PlanarStressYZ[i] << "\n";
-      }
-      ostr.close();
-   }
\ No newline at end of file
diff --git a/apps/cpu/bChannelVA/Averaging.h b/apps/cpu/bChannelVA/Averaging.h
deleted file mode 100644
index ab9d7fc743218715f248de823ac966c3a0393ce1..0000000000000000000000000000000000000000
--- a/apps/cpu/bChannelVA/Averaging.h
+++ /dev/null
@@ -1,292 +0,0 @@
-#include <array>
-#include <fstream>
-#include "CbArray3D.h"
-#include "UbSystem.h"
-#include <vtkTimerLog.h>
-#include <vtkSmartPointer.h>
-
-
-class Averaging
-{
-public:
-   void createGeoMatrix(std::string dataNameG);
-   void writeGeoMatrixToImageFile(std::string output);
-   void readGeoMatrix(std::string dataNameG);
-   void writeGeoMatrixToBinaryFiles(std::string fname);
-   void readGeoMatrixFromBinaryFiles(std::string fname);
-
-   void createMQMatrix(std::string dataNameMQ);
-   void writeMqMatrixToBinaryFiles(std::string fname, int timeStep);
-   void readMqMatrixFromBinaryFiles(std::string fname, int timeStep);
-   void writeMqMatrixToImageFile(std::string output);
-   void writeVaMatrixToImageFile(std::string output);
-   void writeVaSumMatrixToImageFile(std::string output);
-   void writeMeanMatrixToImageFile(std::string output);
-   void writeMatrixToImageFile(std::string output, std::array<CbArray3D<double>, 4> matrix);
-
-   void initVolumeAveragingValues();
-   void initVolumeAveragingFluctStressValues();
-   void initMeanVolumeAveragingValues();
-   void initMeanVolumeAveragingFluctStressValues();
-   void volumeAveragingWithMPI(double l_real);
-   void volumeAveragingFluctStressWithMPI(double l_real);
-   void meanOfVolumeAveragingValues(int numberOfTimeSteps);
-   void sumOfVolumeAveragingValues();
-   void writeVolumeAveragingValuesToBinaryFiles(std::string ffname, int timeStep);
-   void readVolumeAveragingValuesFromBinaryFiles(std::string fname, int timeStep);
-   void writeMeanVolumeAveragingValuesToBinaryFiles(std::string ffname);
-   void readMeanVolumeAveragingValuesFromBinaryFiles(std::string fname);
-
-   void initFluctuations();
-   void initMeanOfVaFluctuations();
-   void initSumOfVaFluctuations();
-   void fluctuationsStress();
-   void fluctuationsStress2();
-   void meanOfVaFluctuations(int numberOfTimeSteps);
-   void sumOfVaFluctuations();
-   void writeMeanVaFluctuationsToBinaryFiles(std::string ffname);
-   void readMeanVaFluctuationsFromBinaryFiles(std::string ffname);
-   void writeMeanOfVaFluctuationsToImageFile(std::string ffname);
-   void writeFluctuationsToImageFile(std::string ffname);
-   void writeVaFluctuationsToImageFile(std::string ffname);
-
-   void initStresses();
-   void initSumOfVaStresses();
-   void initMeanOfVaStresses();
-   void sumOfVaStresses();
-   void meanOfVaStresses(int numberOfTimeSteps);
-   void writeVaStressesToBinaryFiles(std::string fname, int timeStep);
-   void readVaStressesFromBinaryFiles(std::string fname, int timeStep);
-   void writeMeanVaStressesToBinaryFiles(std::string ffname);
-   void readMeanVaStressesFromBinaryFiles(std::string ffname);
-   void writeMeanOfVaStressesToImageFile(std::string ffname);
-
-   void initPlanarAveraging();
-   void planarAveraging();
- 
-   void writeToCSV(std::string path, double origin, double deltax);
-   void writeToCSV2(std::string path, double origin, double deltax);
-
-   std::array<int, 3> getDimensions() const { return dimensions; }
-   void setDimensions(std::array<int, 3> val) { dimensions = val; }
-   void setExtent(std::array<int, 6> val) { geo_extent = val; }
-   void setOrigin(std::array<double, 3> val) { geo_origin = val; }
-   void setSpacing(std::array<double, 3> val) { geo_spacing = val; }
-   void setDeltaX(double val) { deltax = val; }
-
-   ////////////////////////////////////////////////////////////////
-   //new implimentation
-   ////////////////////////////////////////////////////////////////
-
-   ////////////////////////////////////////////////////////////////
-   //compute mean of MQ values
-   void initMeanMqValues();
-   void sumMqValues();
-   void computeMeanMqValues(int numberOfTimeSteps);
-   void writeMeanMqValuesToBinaryFiles(std::string fname);
-   void readMeanMqValuesFromBinaryFiles(std::string fname);
-   void volumeAveragingOfMeanMqValuesWithMPI(double l_real);
-   void writeVaMeanMqValuesToBinaryFiles(std::string fname);
-   void readVaMeanMqValuesFromBinaryFiles(std::string fname);
-
-   ////////////////////////////////////////////////////////////////
-   //compute fluctuations of MQ values
-   void initFluctuationsOfMqValues();
-   void computeFluctuationsOfMqValues();
-   void writeFluctuationsOfMqValuesToBinaryFiles(std::string fname, int timeStep);
-   void readFluctuationsOfMqValuesFromBinaryFiles(std::string fname, int timeStep);
-   void volumeAveragingOfFluctuationsWithMPI(double l_real);
-   void writeVaFluctuationsToBinaryFiles(std::string fname, int timeStep);
-   void readVaFluctuationsFromBinaryFiles(std::string fname, int timeStep);
-   void initMeanOfVolumeAveragedValues();
-   void sumVolumeAveragedValues();
-   void computeVolumeAveragedValues(int numberOfTimeSteps);
-   void writeVolumeAveragedValuesToBinaryFiles(std::string fname);
-   void readVolumeAveragedValuesFromBinaryFiles(std::string fname);
-
-   //////////////////////////////////////////////////////////////////
-   //compute volume average of time averaged data
-   void readTimeAveragedDataFromVtkFile(std::string dataNameMQ);
-   void volumeAveragingOfTimeAveragedDataWithMPI(double l_real);
-   void planarAveragingOfVaTaData();
-
-protected:
-   void getNodeIndexes(std::array<double, 3> x, std::array<int, 3>& ix);
-   double G(double x, double l);
-   
-   template <class T>
-   void writeMatrixToBinaryFiles(CbArray3D<T>& matrix, std::string fname);
-   template <class T>
-   void readMatrixFromBinaryFiles(std::string fname, CbArray3D<T>& matrix);
-private:
-   std::array<int, 3> dimensions;
-   std::array<int, 6> geo_extent;
-   std::array<double, 3> geo_origin;
-   std::array<double, 3> geo_spacing;
-   double deltax;
- 
-   CbArray3D<int> geoMatrix;
-
-   CbArray3D<double> vxMatrix;
-   CbArray3D<double> vyMatrix;
-   CbArray3D<double> vzMatrix;
-   CbArray3D<double> prMatrix;
-
-   CbArray3D<double> meanVxMatrix;
-   CbArray3D<double> meanVyMatrix;
-   CbArray3D<double> meanVzMatrix;
-   CbArray3D<double> meanPrMatrix;
-
-   CbArray3D<double> vaVxMatrix;
-   CbArray3D<double> vaVyMatrix;
-   CbArray3D<double> vaVzMatrix;
-   CbArray3D<double> vaPrMatrix;
-
-   CbArray3D<double> sumVaVxMatrix;
-   CbArray3D<double> sumVaVyMatrix;
-   CbArray3D<double> sumVaVzMatrix;
-   CbArray3D<double> sumVaPrMatrix;
-
-   CbArray3D<double> vaMeanVxMatrix;
-   CbArray3D<double> vaMeanVyMatrix;
-   CbArray3D<double> vaMeanVzMatrix;
-   CbArray3D<double> vaMeanPrMatrix;
-//----------------------------------------
-   CbArray3D<double> flucVxMatrix;
-   CbArray3D<double> flucVyMatrix;
-   CbArray3D<double> flucVzMatrix;
-   CbArray3D<double> flucPrMatrix;
-
-   CbArray3D<double> vaFlucVxMatrix;
-   CbArray3D<double> vaFlucVyMatrix;
-   CbArray3D<double> vaFlucVzMatrix;
-   CbArray3D<double> vaFlucPrMatrix;
-
-   CbArray3D<double> sumVaFlucVx;
-   CbArray3D<double> sumVaFlucVy;
-   CbArray3D<double> sumVaFlucVz;
-   CbArray3D<double> sumVaFlucPr;
-
-   CbArray3D<double> meanVaFlucVx;
-   CbArray3D<double> meanVaFlucVy;
-   CbArray3D<double> meanVaFlucVz;
-   CbArray3D<double> meanVaFlucPr;
-//----------------------------------------
-   CbArray3D<double> StressXX;
-   CbArray3D<double> StressYY;
-   CbArray3D<double> StressZZ;
-   CbArray3D<double> StressXY;
-   CbArray3D<double> StressXZ;
-   CbArray3D<double> StressYZ;
-
-   CbArray3D<double> vaStressXX;
-   CbArray3D<double> vaStressYY;
-   CbArray3D<double> vaStressZZ;
-   CbArray3D<double> vaStressXY;
-   CbArray3D<double> vaStressXZ;
-   CbArray3D<double> vaStressYZ;
-
-   CbArray3D<double> sumVaStressXX;
-   CbArray3D<double> sumVaStressYY;
-   CbArray3D<double> sumVaStressZZ;
-   CbArray3D<double> sumVaStressXY;
-   CbArray3D<double> sumVaStressXZ;
-   CbArray3D<double> sumVaStressYZ;
-
-   CbArray3D<double> meanVaStressXX;
-   CbArray3D<double> meanVaStressYY;
-   CbArray3D<double> meanVaStressZZ;
-   CbArray3D<double> meanVaStressXY;
-   CbArray3D<double> meanVaStressXZ;
-   CbArray3D<double> meanVaStressYZ;
-//----------------------------------------
-   std::vector<double> PlanarVx;
-   std::vector<double> PlanarVy;
-   std::vector<double> PlanarVz;
-   std::vector<double> PlanarPr;
-
-   std::vector<double> PlanarFlucVx;
-   std::vector<double> PlanarFlucVy;
-   std::vector<double> PlanarFlucVz;
-   std::vector<double> PlanarFlucPr;
-
-   std::vector<double> PlanarStressXX;
-   std::vector<double> PlanarStressYY;
-   std::vector<double> PlanarStressZZ;
-   std::vector<double> PlanarStressXY;
-   std::vector<double> PlanarStressXZ;
-   std::vector<double> PlanarStressYZ;
-};
-
-//////////////////////////////////////////////////////////////////////////
-template<class T> void Averaging::writeMatrixToBinaryFiles(CbArray3D<T>& matrix, std::string fname)
- {
-   vtkSmartPointer<vtkTimerLog> timer_write = vtkSmartPointer<vtkTimerLog>::New();
-
-   UBLOG(logINFO,"write matrix to " + fname + ": start");
-   timer_write->StartTimer();
-
-   std::ofstream ostr;
-   ostr.open(fname.c_str(), std::fstream::out | std::fstream::binary);
-   
-   if (!ostr)
-   {
-      ostr.clear();
-      std::string path = UbSystem::getPathFromString(fname);
-      if (path.size() > 0) { UbSystem::makeDirectory(path); ostr.open(fname.c_str(), std::ios_base::out | std::fstream::binary); }
-      if (!ostr) throw UbException(UB_EXARGS, "couldn't open file " + fname);
-   }
-
-   std::vector<T>& vec = matrix.getDataVector();
-
-   ostr.write((char*)& vec[0], sizeof(T)*vec.size());
-   ostr.close();
-
-   UBLOG(logINFO,"write matrix: end");
-   timer_write->StopTimer();
-   UBLOG(logINFO,"write matrix time: " + UbSystem::toString(timer_write->GetElapsedTime()) + " s");
-}
-//////////////////////////////////////////////////////////////////////////
-template<class T> void Averaging::readMatrixFromBinaryFiles(std::string fname, CbArray3D<T>& matrix)
-{
-   vtkSmartPointer<vtkTimerLog> timer_write = vtkSmartPointer<vtkTimerLog>::New();
-
-   UBLOG(logINFO,"read matrix from " + fname + ": start");
-   timer_write->StartTimer();
-
-   FILE *file;
-   file = fopen(fname.c_str(), "rb");
-
-   if (file==NULL) { fputs("File error", stderr); exit(1); }
-
-   // obtain file size:
-   fseek(file, 0, SEEK_END);
-   long lSize = ftell(file)/sizeof(T);
-   rewind(file);
-
-   // allocate memory to contain the whole file:
-   //matrix.resize(lSize);
-   matrix.resize(dimensions[0], dimensions[1], dimensions[2]);
-   std::vector<T>& vec = matrix.getDataVector();
-
-   if (vec.size() == 0) { fputs("Memory error", stderr); exit(2); }
-
-   // copy the file into the buffer:
-   size_t result = fread(&vec[0], sizeof(T), lSize, file);
-   if (result != lSize) { fputs("Reading error", stderr); exit(3); }
-
-   fclose(file);
-
-   UBLOG(logINFO,"read matrix: end");
-   timer_write->StopTimer();
-   UBLOG(logINFO,"read matrix time: " + UbSystem::toString(timer_write->GetElapsedTime()) + " s");
-}
-//////////////////////////////////////////////////////////////////////////
-inline double Averaging::G(double x, double l)
-{
-   if (fabs(x) <= l)
-      return l - fabs(x);
-   else
-      return 0.0;
-}
-//////////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/apps/cpu/bChannelVA/CMakeLists.txt b/apps/cpu/bChannelVA/CMakeLists.txt
deleted file mode 100644
index 7c89234cb0f39640705b52ed5587988205b238d8..0000000000000000000000000000000000000000
--- a/apps/cpu/bChannelVA/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(bChannelVA)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(bchannelva BINARY)
diff --git a/apps/cpu/bChannelVA/ReadDataSet.cpp b/apps/cpu/bChannelVA/ReadDataSet.cpp
deleted file mode 100644
index 6244cb974c56ba21181e04b2fba1c71322f4c460..0000000000000000000000000000000000000000
--- a/apps/cpu/bChannelVA/ReadDataSet.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-#include "ReadDataSet.h"
-#include <vtkXMLReader.h>
-#include <vtkXMLUnstructuredGridReader.h>
-#include <vtkXMLPUnstructuredGridReader.h>
-#include <vtkXMLPolyDataReader.h>
-#include <vtkXMLPPolyDataReader.h>
-#include <vtkXMLStructuredGridReader.h>
-#include <vtkXMLRectilinearGridReader.h>
-//#include <vtkXMLHyperOctreeReader.h>
-#include <vtkXMLCompositeDataReader.h>
-#include <vtkXMLStructuredGridReader.h>
-#include <vtkXMLImageDataReader.h>
-#include <vtkDataSetReader.h>
-#include <vtkUnstructuredGrid.h>
-#include <vtkRectilinearGrid.h>
-//#include <vtkHyperOctree.h>
-#include <vtkImageData.h>
-#include <vtkPolyData.h>
-#include <vtkStructuredGrid.h>
-#include <vtkPointData.h>
-#include <vtkCellData.h>
-#include <vtkFieldData.h>
-#include <vtkCellTypes.h>
-#include <vtksys/SystemTools.hxx>
-
-vtkDataSet* ReadDataSet(std::string fileName)
-{
-   std::string extension =
-      vtksys::SystemTools::GetFilenameLastExtension(fileName);
-   // Dispatch based on the file extension
-   if (extension == ".vtu")
-   {
-      return ReadAnXMLFile<vtkXMLUnstructuredGridReader> (fileName);
-   }
-   else if (extension == ".vtp")
-   {
-      return ReadAnXMLFile<vtkXMLPolyDataReader> (fileName);
-   }
-   else if (extension == ".vts")
-   {
-      return ReadAnXMLFile<vtkXMLStructuredGridReader> (fileName);
-   }
-   else if (extension == ".vtr")
-   {
-      return ReadAnXMLFile<vtkXMLRectilinearGridReader> (fileName);
-   }
-   else if (extension == ".vti")
-   {
-      return ReadAnXMLFile<vtkXMLImageDataReader> (fileName);
-   }
-   //else if (extension == ".vto")
-   //{
-   //   return ReadAnXMLFile<vtkXMLHyperOctreeReader> (fileName);
-   //}
-   else if (extension == ".vtk")
-   {
-      return ReadAnXMLFile<vtkDataSetReader> (fileName);
-   }
-   else if (extension == ".pvtu")
-   {
-      return ReadAnXMLFile<vtkXMLPUnstructuredGridReader> (fileName);
-   }
-   else if (extension == ".pvtp")
-   {
-      return ReadAnXMLFile<vtkXMLPPolyDataReader> (fileName);
-   }
-   else
-   {
-      return NULL;
-   }
-}
-
diff --git a/apps/cpu/bChannelVA/ReadDataSet.h b/apps/cpu/bChannelVA/ReadDataSet.h
deleted file mode 100644
index 7186eafcee1b35fd21ccd60ee952442364b24aa7..0000000000000000000000000000000000000000
--- a/apps/cpu/bChannelVA/ReadDataSet.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#include <string>
-#include <vtkDataSet.h>
-#include <vtkSmartPointer.h>
-
-vtkDataSet* ReadDataSet(std::string fileName);
-
-//////////////////////////////////////////////////////////////////////////
-template<class TReader> 
-vtkDataSet* ReadAnXMLFile(std::string fileName)
-{
-   TReader* reader = TReader::New();
-   reader->SetFileName(fileName.c_str());
-   reader->Update();
-   reader->GetOutput()->Register(reader);
-   return vtkDataSet::SafeDownCast(reader->GetOutput());
-}
-//////////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/apps/cpu/bChannelVA/bChannelVA.cpp b/apps/cpu/bChannelVA/bChannelVA.cpp
deleted file mode 100644
index dce429bd17250e90d3cd2ac753e77f720a184c70..0000000000000000000000000000000000000000
--- a/apps/cpu/bChannelVA/bChannelVA.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-#include <iostream>
-#include <string>
-#include "VirtualFluids.h"
-
-#include "Averaging.h"
-
-using namespace std;
-
-
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   try
-   {
-      //Sleep(20000);
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      //Pheonix
-      //double deltaX = 1;
-      //double halfDeltaX = deltaX / 2.0;
-      //std::array<int, 3> dimensions = { 600 / (int)deltaX, 400 / (int)deltaX, 400 / (int)deltaX };
-      //std::array<double, 3> geo_origin = { halfDeltaX, halfDeltaX, halfDeltaX };
-      //std::array<double, 3> geo_spacing = { 1,1,1 };
-      //std::array<int, 6> geo_extent = { 0, dimensions[0] - 1, 0, dimensions[1] - 1, 0, dimensions[2] - 1 };
-      //double real_l = 40;
-      //double l = 40;
-
-      //int startTimeStep = 600000;
-      //int timeStep = 10000;
-      //int numberOfTimeSteps = 610000; //1200000;
-      //int numberOfSamples = numberOfTimeSteps / startTimeStep;
-      //int numberOfGridPoints = dimensions[0] * dimensions[1] * dimensions[2];
-
-
-      //Bombadil
-      string pathIn = "d:/temp/BreugemChannelAnisotrop2";
-      string pathOut = "d:/temp/BreugemChannelAnisotrop2";
-
-      double deltaX = 10;
-      double halfDeltaX = deltaX / 2.0;
-      std::array<int, 3> dimensions = { 600 / (int)deltaX, 400 / (int)deltaX, 400 / (int)deltaX };
-      std::array<double, 3> geo_origin = { halfDeltaX, halfDeltaX, halfDeltaX };
-      std::array<double, 3> geo_spacing = { 10,10,10 };
-      std::array<int, 6> geo_extent = { 0, dimensions[0] - 1, 0, dimensions[1] - 1, 0, dimensions[2] - 1 };
-      double real_l = 20;
-      double l = 20;
-
-      int startTimeStep = 60000;
-      int timeStep = 1000;
-      int numberOfTimeSteps = 65000;
-      int numberOfSamples = (numberOfTimeSteps - startTimeStep) / timeStep + 1;
-      int numberOfGridPoints = dimensions[0] * dimensions[1] * dimensions[2];
-
-      Averaging av;
-
-      av.setDimensions(dimensions);
-      av.setExtent(geo_extent);
-      av.setOrigin(geo_origin);
-      av.setSpacing(geo_spacing);
-      av.setDeltaX(deltaX);
-
-      //read geo matrix
-      //av.createGeoMatrix(pathIn + "/bc/bc0.pvtu");
-      //if (myid == 0) av.writeGeoMatrixToBinaryFiles(pathOut + "/va/geo/geomatrix.bin");
-      //av.readGeoMatrixFromBinaryFiles(pathOut + "/va/geo/geomatrix.bin");
-
-      ////read mq matrix
-      //for (int t = startTimeStep; t <= numberOfTimeSteps; t += timeStep)
-      //{
-      //   av.createMQMatrix(pathIn + "/mq/mq" + UbSystem::toString(t) + ".pvtu");
-      //   av.writeMqMatrixToBinaryFiles(pathOut + "/va/mq/mq", t);
-      //}
-
-      ////compute mq values
-      //av.initMeanMqValues();
-      //for (int t = startTimeStep; t <= numberOfTimeSteps; t += timeStep)
-      //{
-      //   av.readMqMatrixFromBinaryFiles(pathOut + "/va/mq/mq", t);
-      //   av.sumMqValues();
-      //}
-      //av.computeMeanMqValues(numberOfSamples);
-      //av.writeMeanMqValuesToBinaryFiles(pathOut + "/va/mean/mean");
-
-      //compute volume averaging of Reynolds averaged MQ values
-      //av.readMeanMqValuesFromBinaryFiles(pathOut + "/va/mean/mean");
-      //av.volumeAveragingOfMeanMqValuesWithMPI(l);
-      //av.writeVaMeanMqValuesToBinaryFiles(pathOut + "/va/vaMean/vaMean");
-
-      ////compute fluctuations
-      //av.readMeanMqValuesFromBinaryFiles(pathOut + "/va/mean/mean");
-      //av.initFluctuationsOfMqValues();
-      //for (int t = startTimeStep; t <= numberOfTimeSteps; t += timeStep)
-      //{
-      //   av.readMqMatrixFromBinaryFiles(pathOut + "/va/mq/mq", t);
-      //   av.computeFluctuationsOfMqValues();
-      //   av.writeFluctuationsOfMqValuesToBinaryFiles(pathOut + "/va/fluc/fluc", t);
-      //}
-
-      ////compute volume averaged fluctuations
-      //av.initMeanOfVolumeAveragedValues();
-      //for (int t = startTimeStep; t <= numberOfTimeSteps; t += timeStep)
-      //{
-      //   av.readFluctuationsOfMqValuesFromBinaryFiles(pathOut + "/va/fluc/fluc", t);
-      //   av.volumeAveragingOfFluctuationsWithMPI(l);
-      //   av.writeVaFluctuationsToBinaryFiles(pathOut + "/va/vaFluc/vaFluc", t);
-         //av.sumVolumeAveragedValues();
-      //}
-      //av.computeVolumeAveragedValues(numberOfSamples);
-      //av.writeVolumeAveragedValuesToBinaryFiles(pathOut + "/va/values/val");
-
-      //planar averaging
-      //av.initPlanarAveraging();
-      //av.planarAveraging();
-      //av.writeToCSV(pathOut + "/va/planar/planar", geo_origin[2], deltaX);
-
-      //read geo matrix
-      av.readGeoMatrixFromBinaryFiles(pathOut + "/va/geo/geomatrix.bin");
-
-      av.initMeanOfVolumeAveragedValues();
-
-      av.readTimeAveragedDataFromVtkFile(pathIn + "/tav/tav200000.pvtu");
-
-      av.volumeAveragingOfTimeAveragedDataWithMPI(l);
-
-      if (myid == 0) av.initPlanarAveraging();
-
-      if (myid == 0) av.planarAveragingOfVaTaData();
-
-      if (myid == 0) av.writeToCSV2(pathOut + "/va/planar/planar12", geo_origin[2], deltaX);
-   }
-   catch (const std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
\ No newline at end of file
diff --git a/apps/cpu/bKanal/CMakeLists.txt b/apps/cpu/bKanal/CMakeLists.txt
deleted file mode 100644
index 305be694406be5f61a51600d71203df5270359f5..0000000000000000000000000000000000000000
--- a/apps/cpu/bKanal/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(bKanal)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(bKanal BINARY)
diff --git a/apps/cpu/bKanal/HLRNb/bKanal.cpp b/apps/cpu/bKanal/HLRNb/bKanal.cpp
deleted file mode 100644
index d7028dba969d01b409a3fc84b4fc3b83556da69a..0000000000000000000000000000000000000000
--- a/apps/cpu/bKanal/HLRNb/bKanal.cpp
+++ /dev/null
@@ -1,683 +0,0 @@
-
-
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <sys/types.h> //mkdir rights
-#include <sys/stat.h> //mkdir
-#include <vfluids.h>
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string machine = QUOTEME(CAB_MACHINE);
-      UBLOG(logINFO,"Testcase BreugemChannel");
-      string pathname; 
-      string pathnameRestart;
-      string pathGeo;
-      int numOfThreads =1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      UbLog::reportingLevel() = logINFO;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-
-         pathname =        "/gfs1/work/niivfcpu/scratch/kucher/BKanaltest";
-         pathnameRestart = "/gfs1/work/niivfcpu/scratch/kucher/BKanaltest";//BKanaltest0Ref2up0612";//BKanaltest0Ref2up1012Out";
-         //pathname =        "/work/koskuche/SFB880/BKanaltestRe260000Out";
-         //pathnameRestart = "/work/koskuche/SFB880/BKanaltestRe260000";//BKanaltest0Ref2up0612";//BKanaltest0Ref2up1012Out";
-
-   	 pathGeo = "/home/koskuche/data/plate";
-         numOfThreads = 1;
-         availMem = 64.0e9;
-         logfile = true;
-
-         if (myid==0) 
-         {
-            const char* str = pathname.c_str();
-#if defined(__unix__)
-            int status=mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-#endif 
-
-         }
-
-         if(myid ==0)
-         {
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-         }
-
-
-
-
-      //if(myid ==0 && logfile)
-      //{
-      UbLog::output_policy::setStream(logFilename.str());
-      //}
-
-      int baseLevel, refineLevel,nx[3],blocknx[3];
-      double Re,velocity,rhoInit,vx1Init;//,vx2Init,vx3Init;
-
-      //////////////////////////////////////////////////////////////////////////
-      //physik
-      //////////////////////////////////////////////////////////////////////////
-      Re            = 5500;// 13286;//13286;//gemessen 18.98 m/s...*5.0 zum  testen ob was passiert
-      velocity      = 0.01;  
-      vx1Init       = 0.01;  
-      rhoInit       = 0.0;
-      SimulationParametersPtr param = SimulationParameters::getInstanz();
-
-      int H=200;//200;//392;
-
-      //  nx[0]      =8;//ok mit 8// (int)(3.0*(double)H/8.0/8.0);//2;// (int)(0.3*(double)H/6.0/4.0);//das "/4" hier ist wegen der verfeinerung da! //länge
-      //  nx[1]      =8;//ok mit 8// (int)(2.0*(double)H/8.0/8.0);//2;// (int)(0.2*(double)H/6.0/4.0);//  //breite
-      nx[2]      = (int)(2.0*(double)H/5.0/8.0);// //höhe gebiet
-
-      //(3/2/2)-ratio:
-      nx[1]=nx[2];
-      nx[0]=15;
-
-      blocknx[0] = 15;//10;//5;
-      blocknx[1] = 15;//10;//5;
-      blocknx[2] = 15;//10;//5;
-
-      baseLevel   = 0;
-      refineLevel = 2;//1;////3;//3 soll 1 test;
-
-
-      ///////////////Weltabmessungen:
-      //double kanallaengeSI = ( 2.0*(double)H);
-      // double kanalbreiteSI = ( 1.0*(double)H);
-      double kanalhoeheSI  = ( 2.0*(double)H);
-
-      // double refinewidth1=kanalhoeheSI/10.0;
-
-      double fineNodeDx   = (kanalhoeheSI) / (double)( blocknx[2]*nx[2]*(1<<refineLevel)+1 ); //+1--> gitter liegt jeweils 0.5dx innerhalb
-      double coarseNodeDx = fineNodeDx * (double)(1<<refineLevel);//geowerte
-
-      double blockLengthx1 = blocknx[0]*coarseNodeDx; //geowerte
-      double blockLengthx2 = blockLengthx1;
-      double blockLengthx3 = blockLengthx1;
-
-      double originX1 = 0.0;//-50.0*propellerDurchmesser;  //geowerte
-      double originX2 = 0.0;//-0.5*blockLengthx2*nx2;
-      double originX3 = 0.0;// minX3 + 0.5*fineNodeDx;
-
-      double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3}; 
-
-      bool periodicx1 = true;
-      bool periodicx2 = true;
-      bool periodicx3 = false;
-
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-      double smagorinskiConstant = 0.18;
-
-
-      double rhoLB         = 0.0;
-
-      double rhoReal       = 1.0;
-      double nueReal  = 1;//0.000016;//0.015;
-
-      double hReal         = blocknx[2]*nx[2];//H*0.9;//0.0105;//<-m     1.05;//Plattendicke in cm(! cm nicht m !)
-      double uReal         = Re*nueReal/hReal;
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-      double csReal=343.0;
-      double Ma      = uReal/csReal;//Ma-Real!
-      //double csReal  = uReal/Ma;
-      double hLB     = hReal/coarseNodeDx;
-
-      LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter(hReal, csReal, rhoReal, hLB));
-
-      double uLB           = uReal   * unitConverter->getFactorVelocityWToLb();
-      double nueLB         = nueReal * unitConverter->getFactorViscosityWToLb();
-      double timestep      = unitConverter->getFactorTimeLbToW(coarseNodeDx);
-
-      velocity = uLB;
-      // double viscosity =nueLB*1000.0;
-
-      Grid3DPtr grid(new Grid3D(comm));
-      //UbSchedulerPtr rSch(new UbScheduler(10000,100000,30000000000));//(50000,50000,1000000));
-      UbSchedulerPtr rSch(new UbScheduler(18000,268250,770000));//(50000,50000,1000000));
-      RestartPostprocessor rp(grid, rSch, comm, pathnameRestart+"/checkpoints", RestartPostprocessor::BINARY);
-
-      //////////////////////////////////////////////////////////////////////////
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if(/*(cstr== NULL)*/cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) {
-            UBLOG(logINFO,"Restart step: " << opt);
-            UBLOG(logINFO, "Restart=:" << pathnameRestart);
-         }
-
-         grid = rp.restart(UbSystem::stringTo<int>(opt));
-         rp.reconnect(grid);
-
-//          mu::Parser fctForcingX1, fctForcingX2, fctForcingX3;
-//          fctForcingX1.SetExpr("Fx1*dx");
-//          fctForcingX1.DefineConst("Fx1", 0.6*5.0e-6);
-// 
-//          SetForcingBlockVisitor forcingVisitor(fctForcingX1, fctForcingX2, fctForcingX3);
-//          grid->accept(forcingVisitor);
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-      }
-      else
-      {
-         //bounding box
-         double g_minX1 = originX1;
-         double g_minX2 = originX2;
-         double g_minX3 = originX3;
-
-         double g_maxX1 = originX1 + geoLength[0];
-         double g_maxX2 = originX2 + geoLength[1];
-         double g_maxX3 = originX3 + geoLength[2];
-
-         //set grid
-         grid->setDeltaX(coarseNodeDx);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-         grid->setPeriodicX1(periodicx1);
-         grid->setPeriodicX2(periodicx2);
-         grid->setPeriodicX3(periodicx3);
-
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-
-
-
-         //bottom and top solid bc
-         //iteractors
-         int bbOption1 = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-         double geoOverlap = coarseNodeDx;
-         GbCuboid3DPtr bottomBCCuboid(new GbCuboid3D(originX1-geoOverlap, originX2-geoOverlap, originX3-geoOverlap, 
-            originX1+geoLength[0]+coarseNodeDx, originX2+geoLength[1]+geoOverlap, originX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(bottomBCCuboid.get(), pathname+"/geo/bottomBCCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr bottomBCInteractor(new D3Q27Interactor(bottomBCCuboid,grid,bcObst,Interactor3D::SOLID)); 
-
-         GbCuboid3DPtr topBCCuboid(new GbCuboid3D(originX1-geoLength[0]-coarseNodeDx, originX2-geoOverlap, originX3+geoLength[2],//-coarseNodeDx*0.5, 
-            originX1+geoLength[0]+coarseNodeDx, originX2+geoLength[1]+geoOverlap, originX3+geoLength[2]+geoOverlap));
-         if(myid == 0) GbSystem3D::writeGeoObject(topBCCuboid.get(), pathname+"/geo/topBCCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr topBCInteractor(new D3Q27Interactor(topBCCuboid,grid,bcObst,Interactor3D::SOLID)); 
-         //grid->addAndInitInteractor( bottomBCInteractor ); 
-         // grid->addAndInitInteractor( topBCInteractor ); 
-         //////////////////////////////////////////////////////////////////////////
-         if(myid == 0)
-         {
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* Parameters                            *");
-            UBLOG(logINFO, "* Re            ="<<Re);
-            UBLOG(logINFO, "* Ma            ="<<Ma);
-            UBLOG(logINFO, "* uReal         ="<<uReal);
-            UBLOG(logINFO, "* nueReal       ="<<nueReal);
-            UBLOG(logINFO, "* nue           ="<<nueLB);
-            UBLOG(logINFO, "* velocity      ="<<uLB);
-            // UBLOG(logINFO, "* LX1 (world/LB)="<<kanallaengeSI<<"/"<<kanallaengeSI/coarseNodeDx);
-            //  UBLOG(logINFO, "* LX2 (world/LB)="<<kanalbreiteSI<<"/"<<kanalbreiteSI/coarseNodeDx);
-            UBLOG(logINFO, "* LX3 (world/LB)="<<kanalhoeheSI<<"/"<<kanalhoeheSI/coarseNodeDx);
-            UBLOG(logINFO, "* cdx           ="<<coarseNodeDx);
-            UBLOG(logINFO, "* fdx           ="<<fineNodeDx);
-            UBLOG(logINFO, "* dx_base       ="<<coarseNodeDx<<" == "<<coarseNodeDx);
-            UBLOG(logINFO, "* dx_refine     ="<<fineNodeDx<<" == "<<fineNodeDx );
-            UBLOG(logINFO, "* nx1/2/3       ="<<nx[0]<<"/"<<nx[1]<<"/"<<nx[2]);
-            UBLOG(logINFO, "* blocknx1/2/3  ="<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-            UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-            UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-            UBLOG(logINFO, "*****************************************");
-            UBLOGML(logINFO, "UnitConverter:"<<unitConverter->toString());
-            UBLOG(logINFO, "*****************************************");     
-         }
-
-         if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-
-         //////////////////////////////////////////////////////////////////////////
-         // refine
-         //////////////////////////////////////////////////////////////////////////
-         //GbCuboid3DPtr wallsX1X2maxRef1( new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI*0.95
-         //    , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormax1(wallsX1X2maxRef1, 0,refineLevel-3);
-         //grid->accept(refineVisitormax1);
-         //
-         //GbCuboid3DPtr wallsX1X2minRef1(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI*0.55
-         //    , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.47));
-         // RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin1(wallsX1X2minRef1, 0,refineLevel-3);
-         // grid->accept(refineVisitormin1);
-
-         //   GbCuboid3DPtr wallsX1X2maxRef2(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.98));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormax2(wallsX1X2maxRef2, 0,refineLevel-2);
-         //grid->accept(refineVisitormax2);
-         //   GbCuboid3DPtr wallsX1X2maxRef2(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.9));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormax2(wallsX1X2maxRef2, 0,refineLevel-2);
-         //grid->accept(refineVisitormax2);
-
-         // GbCuboid3DPtr wallsX1X2maxRef3(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.9995));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormax3(wallsX1X2maxRef3, 0,refineLevel-1);
-         //grid->accept(refineVisitormax3);
-
-         //         GbCuboid3DPtr wallsX1X2minRefl3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.25));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitorminl3(wallsX1X2minRefl3, 0,refineLevel-3);
-         //grid->accept(refineVisitorminl3);
-         /////würfel unten version
-         //      GbCuboid3DPtr wallsX1X2minRef2(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.2));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin2(wallsX1X2minRef2, 0,refineLevel-2);
-         //grid->accept(refineVisitormin2);
-
-         //   GbCuboid3DPtr wallsX1X2minRef3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , kanalhoeheSI*0.04
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.18));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin3(wallsX1X2minRef3, 0,refineLevel-1);
-         //grid->accept(refineVisitormin3);
-
-         //      GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , kanalhoeheSI*0.09
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.16));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin4(wallsX1X2minRef4, 0,refineLevel);
-         //grid->accept(refineVisitormin4);
-
-
-
-
-         /////würfel anfang version
-         //       GbCuboid3DPtr wallsX1X2minRef2(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.56));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin2(wallsX1X2minRef2, 0,refineLevel-2);
-         //grid->accept(refineVisitormin2);
-
-         //   GbCuboid3DPtr wallsX1X2minRef3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.55));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin3(wallsX1X2minRef3, 0,refineLevel-2);
-         //grid->accept(refineVisitormin3);
-
-         //      GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.49
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.53));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin4(wallsX1X2minRef4, 0,refineLevel-1);
-         //grid->accept(refineVisitormin4);
-
-
-         /*           GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX1-3.0*geoOverlap
-         , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.1));
-         RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin4(wallsX1X2minRef4, 0,refineLevel-1);
-         grid->accept(refineVisitormin4);*/
-
-         ////GbCuboid3DPtr refine1PlatteCube(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-H3
-         ////   , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3));
-         ////RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP1(refine1PlatteCube, baseLevel, refineLevel-6);
-         ////grid->accept(refineAdapterP1);
-
-         //GbCuboid3DPtr refine2PlatteCube(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-H3*0.5
-         //  , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP2(refine2PlatteCube, baseLevel, refineLevel-5);
-         //grid->accept(refineAdapterP2);
-
-         //GbCuboid3DPtr refine3PlatteCube(new GbCuboid3D(  originX1-geoOverlap  , originX2-geoOverlap  , x3minMesh-H3*0.5
-         //   , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.5));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP3(refine3PlatteCube, baseLevel, refineLevel-4);
-         //grid->accept(refineAdapterP3);
-
-         //GbCuboid3DPtr refine4PlatteCube(new GbCuboid3D(   originX1-geoOverlap  , originX2-geoOverlap  , x3minMesh+deltaX3Platte*0.0
-         //   ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.25));
-         //if(myid == 0) GbSystem3D::writeGeoObject(refine4PlatteCube.get(), pathname+"/geo/refine4PlatteCube", WbWriterVtkXmlASCII::getInstance());
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP4(refine4PlatteCube, baseLevel, refineLevel-3);
-         //grid->accept(refineAdapterP4);
-
-         //GbCuboid3DPtr refine5PlatteCube(new GbCuboid3D(   originX1-geoOverlap , originX2-geoOverlap  ,x3minMesh+deltaX3Platte*0.1/* x3minMesh+deltaX3Platte*0.8*/
-         //   ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.00375));
-         //if(myid == 0) GbSystem3D::writeGeoObject(refine5PlatteCube.get(), pathname+"/geo/refine5PlatteCube", WbWriterVtkXmlASCII::getInstance());
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP5(refine5PlatteCube, baseLevel, refineLevel-2);
-         //grid->accept(refineAdapterP5);
-
-
-         //GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX1-3.0*geoOverlap
-         //	  , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.1));
-
-         GbCuboid3DPtr wallsX1X2minRef3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.6/*0.55*/));
-
-         GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.49
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.53));
-
-         GbCuboid3DPtr wallsX1X2maxRef2(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.9
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], originX3+geoOverlap+geoLength[2]));
-
-         GbCuboid3DPtr wallsX1X2maxRef1(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.95
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], originX3+geoOverlap+geoLength[2]));
-
-         if (refineLevel > 0)
-         {
-
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(wallsX1X2minRef3, refineLevel-1);
-            refineHelper.addGbObject(wallsX1X2minRef4, refineLevel);
-            refineHelper.addGbObject(wallsX1X2maxRef2, refineLevel-1);
-            refineHelper.addGbObject(wallsX1X2maxRef1, refineLevel);
-
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         ///interactoren
-         //int bbOption1 = 0; //0=simple Bounce Back, 1=quadr. BB
-         //D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-         ///////würfel unten version ende
-         ////////////////////////////////////////////////////////////////////////////////
-         ////////PM grid
-         //Temporär:
-         //double  H=1.0;
-
-         vector<D3Q27InteractorPtr> D3Q27InteractorPtrarray;
-         ////////////////////////////////////////////////////////////////////////////////
-         double inflowCubeDx = coarseNodeDx;///(double)(1<<inflowCubeLevel);
-         double dpCubes=(double)H/20.0;//100.0; //30zum testen 100real
-         double offsetZgrid=H+0.5*inflowCubeDx;
-         double epschoch1drittel= 0.928318;
-         double abstandIn=2.0*dpCubes;
-         double c1oAbst=1.0/abstandIn;
-         for (int Nflowdir=0;Nflowdir<((nx[0]*blocknx[0]*c1oAbst)*coarseNodeDx); Nflowdir++)
-         {
-            // for (int Nhorizon=((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5-2; Nhorizon<((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5-1-1; Nhorizon++)
-            // {
-            //  for (int Nhorizon=0;  Nhorizon<(((nx[2]*blocknx[2]+1)*c1oAbst)*coarseNodeDx)*0.1; Nhorizon++)//Nhorizon<((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5; Nhorizon++)
-            for (int Nhorizon=0;  Nhorizon<(((nx[2]*blocknx[2]+1)*c1oAbst)*coarseNodeDx)*0.5-1; Nhorizon++)//Nhorizon<((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5; Nhorizon++)
-
-            {
-               for (int Nspanw=0; Nspanw<((nx[1]*blocknx[1]*c1oAbst)*coarseNodeDx); Nspanw++)
-               {
-                  // stringstream ss;
-                  //     ss<<"cubeH"<<Nflowdir<<"x"<<Nhorizon<<"x"<<Nspanw;
-                  ////     //   //geoOrigin ist Mitte, nicht vordere Ecke -> korrigieren
-                  // int Nflowdir=1;
-                  //int Nhorizon=0;
-                  //int Nspanw=1;
-                  double xminCubes1=originX1+(Nflowdir*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1);
-                  double xmaxCubes1=originX1+(Nflowdir*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1);
-                  double xminCubes=std::max(xminCubes1,2.0*coarseNodeDx/pow(2.0,refineLevel));
-                  double xmaxCubes=std::min(xmaxCubes1,originX1+geoLength[0]-coarseNodeDx/pow(2.0,refineLevel));
-                  double yminCubes=std::max(originX2+(Nspanw*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1),2.0*coarseNodeDx/pow(2.0,refineLevel));
-                  double ymaxCubes=std::min(originX2+(Nspanw*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1),originX2+geoLength[1]-coarseNodeDx/pow(2.0,refineLevel));
-                  double zminCubes=std::max(originX3+(Nhorizon*abstandIn)+4.0*coarseNodeDx/pow(2.0,refineLevel-1),2.0*coarseNodeDx/pow(2.0,refineLevel));
-                  double zmaxCubes=std::min(originX3+(Nhorizon*abstandIn)+dpCubes+4.0*coarseNodeDx/pow(2.0,refineLevel-1),originX3+geoLength[2]-coarseNodeDx/pow(2.0,refineLevel));
-                  ////     /*GbCuboid3D  *rectTemp = new GbCuboid3D(originX1+(Nflowdir*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx, originX2+(Nspanw*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx, originX3+(Nhorizon*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx, 
-                  ////										 originX1+(Nflowdir*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx, originX2+(Nspanw*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx, originX3+(Nhorizon*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx );
-                  ////*/
-                  ////  
-                  GbCuboid3DPtr rectTemp(new GbCuboid3D(xminCubes, yminCubes, zminCubes, 
-                     xmaxCubes, ymaxCubes, zmaxCubes));
-                  ////
-                  //     ostringstream ostrcubes;
-                  //	 ostrcubes<<pathname <<"/cubeH"<<Nflowdir<<"x"<<Nhorizon<<"x"<<Nspanw;
-                  ////       
-                  ////   
-                  //// // GbSystem3D::writeGeoObject(rectTemp,outpath+cubeschar,WbWriterAvsASCII::getInstance());
-                  ////  GbSystem3D::writeGeoObject(rectTemp,ostrcubes.str(),WbWriterAvsASCII::getInstance()); //??
-                  //        ostrcubes.str("");
-                  //         ostrcubes.clear();
-
-                  ////  boost::shared_ptr<D3Q19AMRInteractor> interactorTemp( new D3Q19AMRInteractor( rectTemp,new D3Q19NoSlipBCAdapter(),AMR3DInteractor::SOLID,ss.str()) );
-                  //  //  interactorService.addInteractor(interactorTemp);
-                  D3Q27BoundaryConditionAdapterPtr cubeBCAdapter(new D3Q27NoSlipBCAdapter());                   //D3Q27DensityBCAdapter(rhoInit));
-                  D3Q27InteractorPtr cubeInteractor( new D3Q27Interactor(rectTemp,grid,cubeBCAdapter,Interactor3D::SOLID));
-                  D3Q27InteractorPtrarray.push_back(cubeInteractor);  
-
-
-               }
-            }}
-         ////////////////
-         //ende cubes
-         //////////
-         ////////////////////////////////////////////
-         //METIS
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-         grid->accept( metisVisitor );
-
-
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-         SolidBlocksHelper sd(grid, comm);
-
-         sd.addInteractor(topBCInteractor);
-         sd.addInteractor(bottomBCInteractor);
-         for(size_t i=0; i<D3Q27InteractorPtrarray.size(); ++i)
-         {
-            sd.addInteractor(D3Q27InteractorPtrarray[i]);
-         }
-         sd.deleteSolidBlocks();
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	 
-         //////////////////////////////////////
-         grid->accept( metisVisitor );
-
-         sd.setTransBlocks(); 
-
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         unsigned long nod = nob * blocknx[0]*blocknx[1]*blocknx[2];
-         unsigned long nod_real = nob * (blocknx[0]+3)*(blocknx[1]+3)*(blocknx[2]+3);
-
-         double needMemAll  = double(nod_real*(27*sizeof(double) + sizeof(int)));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }
-
-         LBMKernel3DPtr kernel;
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-
-         // LBMKernel3DPtr kernel(new LBMKernelETD3Q27CascadedTI(blocknx[0], blocknx[1], blocknx[2]));
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27BGK(blocknx[0], blocknx[1], blocknx[2],1));
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-         //	  //scheint neuerdings fuer absturz zu sorgen:
-         mu::Parser fctForcingX1;
-         fctForcingX1.SetExpr("Fx1*dx");
-         fctForcingX1.DefineConst("Fx1", 0.6*5.0e-6);//9.99685e-7);
-
-         kernel->setForcingX1(fctForcingX1);
-         kernel->setWithForcing(true); 
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-
-         grid->accept(kernelVisitor);
-
-         //////////////////////////////////
-         //undef nodes
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-         //////////////////////////////////////////
-
-         grid->addAndInitInteractor( bottomBCInteractor ); 
-         grid->addAndInitInteractor( topBCInteractor );
-         for(size_t i=0; i<D3Q27InteractorPtrarray.size(); ++i)
-         {
-            grid->addAndInitInteractor( D3Q27InteractorPtrarray[i] ); 
-            char numstr[21];
-            sprintf(numstr, "%f", (double)i);
-            std::string pathObstCube = pathname+"/geo/obstBCCuboid"+ numstr;
-            if(myid == 0) GbSystem3D::writeGeoObject(D3Q27InteractorPtrarray[i]->getGbObject3D().get(),
-               /* rectTemp.get(),*/ pathObstCube, WbWriterVtkXmlASCII::getInstance());
-         }
-
-
-         UbTimer timer;
-         timer.start();
-         grid->accept( metisVisitor );
-
-         if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         if(myid == 0) ppblocks->update(0);
-         if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-
-         if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-         grid->accept( metisVisitor );
-         if(myid == 0) ppblocks->update(1);
-         ppblocks.reset();
-         if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-         //inflow
-         double uLB2=uLB;
-         double raiseVelSteps = 0;
-         vector<D3Q27BCFunction> velcX1BCs,dummy;
-
-         mu::Parser inflowProfile;
-         inflowProfile.SetExpr("uLB*0.9"); 
-
-         inflowProfile.DefineConst("uLB",uLB2);
-         velcX1BCs.push_back(D3Q27BCFunction(inflowProfile,raiseVelSteps,D3Q27BCFunction::INFCONST));
-
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-
-         //initialization of decompositions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor( nueLB,rhoInit);
-         initVisitor.setVx1(inflowProfile);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         //LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), 
-            unitConverter, comm, true));
-
-
-
-         grid->doPostProcess(0);
-         ppgeo.reset();
-         geoSch.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end");      
-
-      }
-
-
-
-      UbSchedulerPtr visSch(new UbScheduler());
-      //visSch->addSchedule(100,1,1000);
-      //visSch->addSchedule(1000,1000,10000);
-      //visSch->addSchedule(10000,10000,100000);
-      //visSch->addSchedule(20000,20000,800000);
-      //visSch->addSchedule(50,350000,350500);
-      //visSch->addSchedule(50,420000,420500);
-      //visSch->addSchedule(50000,420500,10000000);
-      visSch->addSchedule(2250,268250,592250);
-      UbSchedulerPtr resSch(new UbScheduler());
-      resSch->addSchedule(20000,20,10000000);
-      // AverageValuesPostprocessor       Avpp(grid,  pathname + "/steps/stepAV", WbWriterVtkXmlBinary::getInstance(), visSch/*wann wird rausgeschrieben*/,resSch/*wann wird resettet*/,comm);
-      UbSchedulerPtr resSchRMS(new UbScheduler());
-      resSchRMS->addSchedule(40000,420000,10000000);
-      UbSchedulerPtr resSchMeans(new UbScheduler());
-      resSchMeans->addSchedule(40000,0,10000000);
-      UbSchedulerPtr stepAvSch(new UbScheduler());
-      int averageInterval=20;
-      stepAvSch->addSchedule(averageInterval,0,10000000);
-
-      double restart=10000; //??????????
-      AverageValuesPostprocessor       Avpp(grid,  pathname + "/steps/stepAV", WbWriterVtkXmlBinary::getInstance(), stepAvSch/*wann wird gemittelt*/, averageInterval,visSch/*wann wird rausgeschrieben*/,resSchMeans,resSchRMS/*wann wird resettet*/,comm,restart);
-
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), unitConverter, comm);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 90050, 90080));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-
-      UbSchedulerPtr AdjForcSch(new UbScheduler());
-      AdjForcSch->addSchedule(100,20,20000000);
-      D3Q27IntegrateValuesHelperPtr IntValHelp(new D3Q27IntegrateValuesHelper(grid, comm, 
-         originX1, originX2, kanalhoeheSI*0.55/*0.501*/, 
-         nx[0]*blockLengthx1, nx[1]*blockLengthx2, kanalhoeheSI*0.999));
-
-      double vxZiel=uLB;
-      //D3Q27AdjustForcingPostprocessor AdjForcPPPtr(grid, AdjForcSch,IntValHelp, vxZiel*0.6, comm);//da am 11.3.2013 velo um 1/0.6 zu hoch
-      D3Q27AdjustForcingPostprocessor AdjForcPPPtr(grid, AdjForcSch,IntValHelp, vxZiel, comm);//dies sollte zu Re=5500 fuehren..
-
-      UbSchedulerPtr visQSch(new UbScheduler());
-      visQSch->addSchedule(10,90100,90130);
-      QKritPostprocessor QKritPtr(grid,pathname+"/steps/Qq",WbWriterVtkXmlBinary::getInstance(),visQSch, comm);
-
-      mu::Parser decrViscFunc;
-      decrViscFunc.SetExpr("nue0+c0/(t+1)/(t+1)");
-      decrViscFunc.DefineConst("nue0", nueLB);
-      decrViscFunc.DefineConst("c0", 0.1);
-      UbSchedulerPtr DecrViscSch(new UbScheduler());
-      DecrViscSch->addSchedule(10,10,1000);
-      DecreaseViscosityPostprocessor decrViscPPPtr(grid, DecrViscSch,&decrViscFunc, comm);
-
-      cout << "PID = " << myid << " Total Physical Memory (RAM): " << MemoryUtil::getTotalPhysMem()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used: " << MemoryUtil::getPhysMemUsed()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used by current process: " << MemoryUtil::getPhysMemUsedByMe()<<endl;
-
-      double endTime = 520000;//20000001;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/bKanal/bKanal.cpp b/apps/cpu/bKanal/bKanal.cpp
deleted file mode 100644
index b1bff75b08f2ff6989f02dd8ee7f58ada48263ba..0000000000000000000000000000000000000000
--- a/apps/cpu/bKanal/bKanal.cpp
+++ /dev/null
@@ -1,565 +0,0 @@
-
-
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <sys/types.h> //mkdir rights
-#include <sys/stat.h> //mkdir
-#include <vfluids.h>
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string pathname; 
-      string pathnameRestart;
-      int numOfThreads =1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      UbLog::reportingLevel() = logINFO;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      string machine = string(cstr);
-
-      if(machine == "my") 
-      {
-         pathname = "d:/temp/BKanal";
-         numOfThreads = 1;
-         logfile = false;
-         availMem = 10.0e9;
-      }
-      else if(machine == "Ludwig")      
-      {
-         pathname =        "/work/koskuche/SFB880/BKanal";
-         pathnameRestart = "/work/koskuche/SFB880/BKanal";
-         numOfThreads = 8;
-         availMem = 1.0e9;
-         logfile = true;
-
-         if (myid==0) 
-         {
-            const char* str = pathname.c_str();
-#if defined(__unix__)
-            int status=mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-#endif 
-         }
-
-         if(myid ==0)
-         {
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-         }
-
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      if(myid ==0 && logfile)
-      {
-         UbLog::output_policy::setStream(logFilename.str());
-      }
-
-      UBLOG(logINFO,"Testcase BreugemChannel");
-
-      int baseLevel, refineLevel,nx[3],blocknx[3];
-      double Re,velocity,rhoInit,vx1Init;//,vx2Init,vx3Init;
-
-      //////////////////////////////////////////////////////////////////////////
-      //physik
-      //////////////////////////////////////////////////////////////////////////
-      Re            = 5500;// 13286;//13286;//gemessen 18.98 m/s...*5.0 zum  testen ob was passiert
-      velocity      = 0.01;  
-      vx1Init       = 0.01;  
-      rhoInit       = 0.0;
-      SimulationParametersPtr param = SimulationParameters::getInstanz();
-
-      int H=200;//200;//392;
-
-      //  nx[0]      =8;//ok mit 8// (int)(3.0*(double)H/8.0/8.0);//2;// (int)(0.3*(double)H/6.0/4.0);//das "/4" hier ist wegen der verfeinerung da! //länge
-      //  nx[1]      =8;//ok mit 8// (int)(2.0*(double)H/8.0/8.0);//2;// (int)(0.2*(double)H/6.0/4.0);//  //breite
-      nx[2]      = (int)(2.0*(double)H/5.0/8.0);// //höhe gebiet
-
-      //(3/2/2)-ratio:
-      nx[1]=nx[2];
-      nx[0]=15;
-
-      blocknx[0] = 15;//10;//5;
-      blocknx[1] = 15;//10;//5;
-      blocknx[2] = 15;//10;//5;
-
-      baseLevel   = 0;
-      refineLevel = 2;//1;////3;//3 soll 1 test;
-
-      ///////////////Weltabmessungen:
-      //double kanallaengeSI = ( 2.0*(double)H);
-      // double kanalbreiteSI = ( 1.0*(double)H);
-      double kanalhoeheSI  = ( 2.0*(double)H);
-
-      // double refinewidth1=kanalhoeheSI/10.0;
-
-      double fineNodeDx   = (kanalhoeheSI) / (double)( blocknx[2]*nx[2]*(1<<refineLevel)+1 ); //+1--> gitter liegt jeweils 0.5dx innerhalb
-      double coarseNodeDx = fineNodeDx * (double)(1<<refineLevel);//geowerte
-
-      double blockLengthx1 = blocknx[0]*coarseNodeDx; //geowerte
-      double blockLengthx2 = blockLengthx1;
-      double blockLengthx3 = blockLengthx1;
-
-      double originX1 = 0.0;//-50.0*propellerDurchmesser;  //geowerte
-      double originX2 = 0.0;//-0.5*blockLengthx2*nx2;
-      double originX3 = 0.0;// minX3 + 0.5*fineNodeDx;
-
-      double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3}; 
-
-      bool periodicx1 = true;
-      bool periodicx2 = true;
-      bool periodicx3 = false;
-
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-      double smagorinskiConstant = 0.18;
-
-
-      double rhoLB         = 0.0;
-
-      double rhoReal       = 1.0;
-      double nueReal  = 1;//0.000016;//0.015;
-
-      double hReal         = blocknx[2]*nx[2];//H*0.9;//0.0105;//<-m     1.05;//Plattendicke in cm(! cm nicht m !)
-      double uReal         = Re*nueReal/hReal;
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-      double csReal=343.0;
-      double Ma      = uReal/csReal;//Ma-Real!
-      //double csReal  = uReal/Ma;
-      double hLB     = hReal/coarseNodeDx;
-
-      //LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter(hReal, csReal, rhoReal, hLB));
-
-      LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter());
-      double uLB          = velocity;
-      double nuLB         = (uLB*hLB)/Re;
-
-      //double uLB           = uReal   * unitConverter->getFactorVelocityWToLb();
-      //double nueLB         = nueReal * unitConverter->getFactorViscosityWToLb();
-      //double timestep      = unitConverter->getFactorTimeLbToW(coarseNodeDx);
-
-      //velocity = uLB;
-      // double viscosity =nueLB*1000.0;
-
-      Grid3DPtr grid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(10000,10000,10000000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY);
-      grid = rp.restart(-1);
-      //////////////////////////////////////////////////////////////////////////
-
-       if (grid->getTimeStep() == 0)
-       {
-         //bounding box
-         double g_minX1 = originX1;
-         double g_minX2 = originX2;
-         double g_minX3 = originX3;
-
-         double g_maxX1 = originX1 + geoLength[0];
-         double g_maxX2 = originX2 + geoLength[1];
-         double g_maxX3 = originX3 + geoLength[2];
-
-         //set grid
-         grid->setDeltaX(coarseNodeDx);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-         grid->setPeriodicX1(periodicx1);
-         grid->setPeriodicX2(periodicx2);
-         grid->setPeriodicX3(periodicx3);
-
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-
-
-         //bottom and top solid bc
-         //iteractors
-         int bbOption1 = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-         double geoOverlap = coarseNodeDx;
-         GbCuboid3DPtr bottomBCCuboid(new GbCuboid3D(originX1-geoOverlap, originX2-geoOverlap, originX3-geoOverlap, 
-            originX1+geoLength[0]+coarseNodeDx, originX2+geoLength[1]+geoOverlap, originX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(bottomBCCuboid.get(), pathname+"/geo/bottomBCCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr bottomBCInteractor(new D3Q27Interactor(bottomBCCuboid,grid,bcObst,Interactor3D::SOLID)); 
-
-         GbCuboid3DPtr topBCCuboid(new GbCuboid3D(originX1-geoLength[0]-coarseNodeDx, originX2-geoOverlap, originX3+geoLength[2],//-coarseNodeDx*0.5, 
-            originX1+geoLength[0]+coarseNodeDx, originX2+geoLength[1]+geoOverlap, originX3+geoLength[2]+geoOverlap));
-         if(myid == 0) GbSystem3D::writeGeoObject(topBCCuboid.get(), pathname+"/geo/topBCCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr topBCInteractor(new D3Q27Interactor(topBCCuboid,grid,bcObst,Interactor3D::SOLID)); 
-         //grid->addAndInitInteractor( bottomBCInteractor ); 
-         // grid->addAndInitInteractor( topBCInteractor ); 
-         //////////////////////////////////////////////////////////////////////////
-         if(myid == 0)
-         {
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* Parameters                            *");
-            UBLOG(logINFO, "* Re            ="<<Re);
-            UBLOG(logINFO, "* Ma            ="<<Ma);
-            UBLOG(logINFO, "* uReal         ="<<uReal);
-            UBLOG(logINFO, "* nueReal       ="<<nueReal);
-            UBLOG(logINFO, "* nue           ="<<nuLB);
-            UBLOG(logINFO, "* velocity      ="<<uLB);
-            // UBLOG(logINFO, "* LX1 (world/LB)="<<kanallaengeSI<<"/"<<kanallaengeSI/coarseNodeDx);
-            //  UBLOG(logINFO, "* LX2 (world/LB)="<<kanalbreiteSI<<"/"<<kanalbreiteSI/coarseNodeDx);
-            UBLOG(logINFO, "* LX3 (world/LB)="<<kanalhoeheSI<<"/"<<kanalhoeheSI/coarseNodeDx);
-            UBLOG(logINFO, "* cdx           ="<<coarseNodeDx);
-            UBLOG(logINFO, "* fdx           ="<<fineNodeDx);
-            UBLOG(logINFO, "* dx_base       ="<<coarseNodeDx<<" == "<<coarseNodeDx);
-            UBLOG(logINFO, "* dx_refine     ="<<fineNodeDx<<" == "<<fineNodeDx );
-            UBLOG(logINFO, "* nx1/2/3       ="<<nx[0]<<"/"<<nx[1]<<"/"<<nx[2]);
-            UBLOG(logINFO, "* blocknx1/2/3  ="<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-            UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-            UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-            UBLOG(logINFO, "*****************************************");
-/*            UBLOGML(logINFO, "UnitConverter:"<<unitConverter->toString());
-            UBLOG(logINFO, "*****************************************");  */   
-         }
-
-         if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-
-         //////////////////////////////////////////////////////////////////////////
-         // refine
-         //////////////////////////////////////////////////////////////////////////
-         GbCuboid3DPtr wallsX1X2minRef3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.6/*0.55*/));
-
-         GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.49
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.53));
-
-         GbCuboid3DPtr wallsX1X2maxRef2(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.9
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], originX3+geoOverlap+geoLength[2]));
-
-         GbCuboid3DPtr wallsX1X2maxRef1(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.95
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], originX3+geoOverlap+geoLength[2]));
-
-         if (refineLevel > 0)
-         {
-
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(wallsX1X2minRef3, refineLevel-1);
-            refineHelper.addGbObject(wallsX1X2minRef4, refineLevel);
-            refineHelper.addGbObject(wallsX1X2maxRef2, refineLevel-1);
-            refineHelper.addGbObject(wallsX1X2maxRef1, refineLevel);
-
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         ///interactoren
-         //int bbOption1 = 0; //0=simple Bounce Back, 1=quadr. BB
-         //D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-         ///////würfel unten version ende
-         ////////////////////////////////////////////////////////////////////////////////
-         ////////PM grid
-         //Temporär:
-         //double  H=1.0;
-
-         vector<D3Q27InteractorPtr> D3Q27InteractorPtrarray;
-         ////////////////////////////////////////////////////////////////////////////////
-         double inflowCubeDx = coarseNodeDx;///(double)(1<<inflowCubeLevel);
-         double dpCubes=(double)H/20.0;//100.0; //30zum testen 100real
-         double offsetZgrid=H+0.5*inflowCubeDx;
-         double epschoch1drittel= 0.928318;
-         double abstandIn=2.0*dpCubes;
-         double c1oAbst=1.0/abstandIn;
-         for (int Nflowdir=0;Nflowdir<((nx[0]*blocknx[0]*c1oAbst)*coarseNodeDx); Nflowdir++)
-         {
-            // for (int Nhorizon=((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5-2; Nhorizon<((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5-1-1; Nhorizon++)
-            // {
-            //  for (int Nhorizon=0;  Nhorizon<(((nx[2]*blocknx[2]+1)*c1oAbst)*coarseNodeDx)*0.1; Nhorizon++)//Nhorizon<((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5; Nhorizon++)
-            for (int Nhorizon=0;  Nhorizon<(((nx[2]*blocknx[2]+1)*c1oAbst)*coarseNodeDx)*0.5-1; Nhorizon++)//Nhorizon<((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5; Nhorizon++)
-
-            {
-               for (int Nspanw=0; Nspanw<((nx[1]*blocknx[1]*c1oAbst)*coarseNodeDx); Nspanw++)
-               {
-                  // stringstream ss;
-                  //     ss<<"cubeH"<<Nflowdir<<"x"<<Nhorizon<<"x"<<Nspanw;
-                  ////     //   //geoOrigin ist Mitte, nicht vordere Ecke -> korrigieren
-                  // int Nflowdir=1;
-                  //int Nhorizon=0;
-                  //int Nspanw=1;
-                  double xminCubes1=originX1+(Nflowdir*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1);
-                  double xmaxCubes1=originX1+(Nflowdir*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1);
-                  double xminCubes=std::max(xminCubes1,2.0*coarseNodeDx/pow(2.0,refineLevel));
-                  double xmaxCubes=std::min(xmaxCubes1,originX1+geoLength[0]-coarseNodeDx/pow(2.0,refineLevel));
-                  double yminCubes=std::max(originX2+(Nspanw*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1),2.0*coarseNodeDx/pow(2.0,refineLevel));
-                  double ymaxCubes=std::min(originX2+(Nspanw*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1),originX2+geoLength[1]-coarseNodeDx/pow(2.0,refineLevel));
-                  double zminCubes=std::max(originX3+(Nhorizon*abstandIn)+4.0*coarseNodeDx/pow(2.0,refineLevel-1),2.0*coarseNodeDx/pow(2.0,refineLevel));
-                  double zmaxCubes=std::min(originX3+(Nhorizon*abstandIn)+dpCubes+4.0*coarseNodeDx/pow(2.0,refineLevel-1),originX3+geoLength[2]-coarseNodeDx/pow(2.0,refineLevel));
-                  ////     /*GbCuboid3D  *rectTemp = new GbCuboid3D(originX1+(Nflowdir*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx, originX2+(Nspanw*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx, originX3+(Nhorizon*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx, 
-                  ////										 originX1+(Nflowdir*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx, originX2+(Nspanw*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx, originX3+(Nhorizon*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx );
-                  ////*/
-                  ////  
-                  GbCuboid3DPtr rectTemp(new GbCuboid3D(xminCubes, yminCubes, zminCubes, 
-                     xmaxCubes, ymaxCubes, zmaxCubes));
-                  ////
-                  //     ostringstream ostrcubes;
-                  //	 ostrcubes<<pathname <<"/cubeH"<<Nflowdir<<"x"<<Nhorizon<<"x"<<Nspanw;
-                  ////       
-                  ////   
-                  //// // GbSystem3D::writeGeoObject(rectTemp,outpath+cubeschar,WbWriterAvsASCII::getInstance());
-                  ////  GbSystem3D::writeGeoObject(rectTemp,ostrcubes.str(),WbWriterAvsASCII::getInstance()); //??
-                  //        ostrcubes.str("");
-                  //         ostrcubes.clear();
-
-                  ////  boost::shared_ptr<D3Q19AMRInteractor> interactorTemp( new D3Q19AMRInteractor( rectTemp,new D3Q19NoSlipBCAdapter(),AMR3DInteractor::SOLID,ss.str()) );
-                  //  //  interactorService.addInteractor(interactorTemp);
-                  D3Q27BoundaryConditionAdapterPtr cubeBCAdapter(new D3Q27NoSlipBCAdapter());                   //D3Q27DensityBCAdapter(rhoInit));
-                  D3Q27InteractorPtr cubeInteractor( new D3Q27Interactor(rectTemp,grid,cubeBCAdapter,Interactor3D::SOLID));
-                  D3Q27InteractorPtrarray.push_back(cubeInteractor);  
-
-
-               }
-            }}
-         ////////////////
-         //ende cubes
-         //////////
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(topBCInteractor);
-         intHelper.addInteractor(bottomBCInteractor);
-         for(size_t i=0; i<D3Q27InteractorPtrarray.size(); ++i)
-         {
-            intHelper.addInteractor(D3Q27InteractorPtrarray[i]);
-         }
-         intHelper.selectBlocks();
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	 
-         //////////////////////////////////////
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         unsigned long nod = nob * blocknx[0]*blocknx[1]*blocknx[2];
-         unsigned long nod_real = nob * (blocknx[0]+3)*(blocknx[1]+3)*(blocknx[2]+3);
-
-         double needMemAll  = double(nod_real*(27*sizeof(double) + sizeof(int)));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }
-
-         LBMKernel3DPtr kernel;
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-
-         // LBMKernel3DPtr kernel(new LBMKernelETD3Q27CascadedTI(blocknx[0], blocknx[1], blocknx[2]));
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27BGK(blocknx[0], blocknx[1], blocknx[2],1));
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-         //	  //scheint neuerdings fuer absturz zu sorgen:
-         mu::Parser fctForcingX1;
-         fctForcingX1.SetExpr("Fx1*dx");
-         fctForcingX1.DefineConst("Fx1", 0.6*5.0e-6);//9.99685e-7);
-
-         kernel->setForcingX1(fctForcingX1);
-         kernel->setWithForcing(true); 
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-
-         grid->accept(kernelVisitor);
-
-         //////////////////////////////////
-         //undef nodes
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-         //////////////////////////////////////////
-         intHelper.setBC();
-
-         for(size_t i=0; i<D3Q27InteractorPtrarray.size(); ++i)
-         {
-            grid->addAndInitInteractor( D3Q27InteractorPtrarray[i] ); 
-            char numstr[21];
-            sprintf(numstr, "%f", (double)i);
-            std::string pathObstCube = pathname+"/geo/obstBCCuboid"+ numstr;
-            if(myid == 0) GbSystem3D::writeGeoObject(D3Q27InteractorPtrarray[i]->getGbObject3D().get(),
-               /* rectTemp.get(),*/ pathObstCube, WbWriterVtkXmlASCII::getInstance());
-         }
-
-         UbTimer timer;
-         timer.start();
-         grid->accept( metisVisitor );
-
-         if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         if(myid == 0) ppblocks->update(0);
-         if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-         if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-         grid->accept( metisVisitor );
-         if(myid == 0) ppblocks->update(1);
-         ppblocks.reset();
-         if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-         //inflow
-         double uLB2=uLB;
-         double raiseVelSteps = 0;
-         vector<D3Q27BCFunction> velcX1BCs,dummy;
-
-         mu::Parser inflowProfile;
-         inflowProfile.SetExpr("uLB*0.9"); 
-
-         inflowProfile.DefineConst("uLB",uLB2);
-         velcX1BCs.push_back(D3Q27BCFunction(inflowProfile,raiseVelSteps,D3Q27BCFunction::INFCONST));
-
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-
-         //initialization of decompositions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor( nuLB,rhoInit);
-         initVisitor.setVx1(inflowProfile);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         //LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), 
-            unitConverter,true));
-
-
-
-         grid->doPostProcess(0);
-         ppgeo.reset();
-         geoSch.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end");      
-
-      }
-            else
-            {
-               //set forcing
-               mu::Parser fctForcingX1, fctForcingX2, fctForcingX3;
-               fctForcingX1.SetExpr("Fx1*dx");
-               fctForcingX1.DefineConst("Fx1", 0.6*5.0e-6);
-               SetForcingBlockVisitor forcingVisitor(fctForcingX1, fctForcingX2, fctForcingX3);
-               grid->accept(forcingVisitor);
-
-               //set connectors
-               D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-               D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-               grid->accept( setConnsVisitor );
-               if(myid == 0) UBLOG(logINFO,"Restart - end"); 
-      }
-
-
-      UbSchedulerPtr visSch(new UbScheduler());
-      //visSch->addSchedule(100,1,1000);
-      //visSch->addSchedule(1000,1000,10000);
-      //visSch->addSchedule(10000,10000,100000);
-      //visSch->addSchedule(20000,20000,800000);
-      //visSch->addSchedule(50,350000,350500);
-      //visSch->addSchedule(50,420000,420500);
-      //visSch->addSchedule(50000,420500,10000000);
-      visSch->addSchedule(2250,140000,450001);
-      UbSchedulerPtr resSch(new UbScheduler());
-      resSch->addSchedule(20000,20,10000000);
-      UbSchedulerPtr resSchRMS(new UbScheduler());
-      resSchRMS->addSchedule(40000,420000,10000000);
-      UbSchedulerPtr resSchMeans(new UbScheduler());
-      resSchMeans->addSchedule(40000,0,10000000);
-      UbSchedulerPtr stepAvSch(new UbScheduler());
-      stepAvSch->addSchedule(20,0,10000000);
-      AverageValuesPostprocessor Avpp(grid, pathname + "/steps/stepAV", WbWriterVtkXmlBinary::getInstance(), 
-                                      visSch/*wann wird rausgeschrieben*/, stepAvSch/*wann wird gemittelt*/, resSchMeans, resSchRMS/*wann wird resettet*/);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), unitConverter, comm);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 90050, 90080));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-
-      UbSchedulerPtr AdjForcSch(new UbScheduler());
-      AdjForcSch->addSchedule(100,20,20000000);
-      D3Q27IntegrateValuesHelperPtr IntValHelp(new D3Q27IntegrateValuesHelper(grid, comm, 
-         originX1, originX2, kanalhoeheSI*0.55/*0.501*/, 
-         nx[0]*blockLengthx1, nx[1]*blockLengthx2, kanalhoeheSI*0.999));
-
-      double vxZiel=uLB;
-      //D3Q27AdjustForcingPostprocessor AdjForcPPPtr(grid, AdjForcSch,IntValHelp, vxZiel*0.6, comm);//da am 11.3.2013 velo um 1/0.6 zu hoch
-      D3Q27AdjustForcingPostprocessor AdjForcPPPtr(grid, AdjForcSch,IntValHelp, vxZiel, comm);//dies sollte zu Re=5500 fuehren..
-
-      UbSchedulerPtr visQSch(new UbScheduler());
-      visQSch->addSchedule(10,90100,90130);
-      QCriterionPostprocessor QKritPtr(grid,pathname+"/steps/Qq",WbWriterVtkXmlBinary::getInstance(),visQSch, comm);
-
-      mu::Parser decrViscFunc;
-      decrViscFunc.SetExpr("nue0+c0/(t+1)/(t+1)");
-      decrViscFunc.DefineConst("nue0", nuLB);
-      decrViscFunc.DefineConst("c0", 0.1);
-      UbSchedulerPtr DecrViscSch(new UbScheduler());
-      DecrViscSch->addSchedule(10,10,1000);
-      DecreaseViscosityPostprocessor decrViscPPPtr(grid, DecrViscSch,&decrViscFunc, comm);
-
-      cout << "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe()<<endl;
-
-      double endTime = 2000000;//20000001;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/bKanal/sKanal/bKanal.cpp b/apps/cpu/bKanal/sKanal/bKanal.cpp
deleted file mode 100644
index cabea74871a6da507b1c9c9ddf23820a936bdb10..0000000000000000000000000000000000000000
--- a/apps/cpu/bKanal/sKanal/bKanal.cpp
+++ /dev/null
@@ -1,694 +0,0 @@
-
-
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <sys/types.h> //mkdir rights
-#include <sys/stat.h> //mkdir
-#include <vfluids.h>
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string machine = QUOTEME(CAB_MACHINE);
-      UBLOG(logINFO,"Testcase BreugemChannel");
-      string pathname; 
-      string pathnameRestart;
-      string pathGeo;
-      int numOfThreads =1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      UbLog::reportingLevel() = logINFO;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if(machine == "PIPPINNEU") 
-      {
-
-         pathname = "f:/temp/breugemKb";
-         //pathGeo = "c:/Data/plate";
-         numOfThreads = 1;
-         logfile = false;
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname =        "/work/koskuche/SFB880/BKanaltest0Ref2up1812Ratio322f5nx15RestartQ";
-         pathnameRestart = "/work/koskuche/SFB880/BKanaltest0Ref2up1212Ratio322";//BKanaltest0Ref2up0612";//BKanaltest0Ref2up1012Out";
-         //pathname =        "/work/koskuche/SFB880/BKanaltestRe260000Out";
-         //pathnameRestart = "/work/koskuche/SFB880/BKanaltestRe260000";//BKanaltest0Ref2up0612";//BKanaltest0Ref2up1012Out";
-
-	pathGeo = "/home/koskuche/data/plate";
-         numOfThreads = 1;
-         availMem = 12.0e9;
-         logfile = true;
-
-         if (myid==0) 
-         {
-            const char* str = pathname.c_str();
-#if defined(__unix__)
-            int status=mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-#endif 
-
-         }
-
-         if(myid ==0)
-         {
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-         }
-
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-
-
-      //if(myid ==0 && logfile)
-      //{
-      UbLog::output_policy::setStream(logFilename.str());
-      //}
-
-      int baseLevel, refineLevel,nx[3],blocknx[3];
-      double Re,velocity,rhoInit,vx1Init;//,vx2Init,vx3Init;
-
-      //////////////////////////////////////////////////////////////////////////
-      //physik
-      //////////////////////////////////////////////////////////////////////////
-      Re            = 5500;// 13286;//13286;//gemessen 18.98 m/s...*5.0 zum  testen ob was passiert
-      velocity      = 0.01;  
-      vx1Init       = 0.01;  
-      rhoInit       = 0.0;
-      SimulationParametersPtr param = SimulationParameters::getInstanz();
-
-      int H=200;//200;//392;
-
-      //  nx[0]      =8;//ok mit 8// (int)(3.0*(double)H/8.0/8.0);//2;// (int)(0.3*(double)H/6.0/4.0);//das "/4" hier ist wegen der verfeinerung da! //länge
-      //  nx[1]      =8;//ok mit 8// (int)(2.0*(double)H/8.0/8.0);//2;// (int)(0.2*(double)H/6.0/4.0);//  //breite
-      nx[2]      = (int)(2.0*(double)H/5.0/8.0);// //höhe gebiet
-
-      //(3/2/2)-ratio:
-      nx[1]=nx[2];
-      nx[0]=15;
-
-      blocknx[0] = 15;//10;//5;
-      blocknx[1] = 15;//10;//5;
-      blocknx[2] = 15;//10;//5;
-
-      baseLevel   = 0;
-      refineLevel = 2;//1;////3;//3 soll 1 test;
-
-
-      ///////////////Weltabmessungen:
-      //double kanallaengeSI = ( 2.0*(double)H);
-      // double kanalbreiteSI = ( 1.0*(double)H);
-      double kanalhoeheSI  = ( 2.0*(double)H);
-
-      // double refinewidth1=kanalhoeheSI/10.0;
-
-      double fineNodeDx   = (kanalhoeheSI) / (double)( blocknx[2]*nx[2]*(1<<refineLevel)+1 ); //+1--> gitter liegt jeweils 0.5dx innerhalb
-      double coarseNodeDx = fineNodeDx * (double)(1<<refineLevel);//geowerte
-
-      double blockLengthx1 = blocknx[0]*coarseNodeDx; //geowerte
-      double blockLengthx2 = blockLengthx1;
-      double blockLengthx3 = blockLengthx1;
-
-      double originX1 = 0.0;//-50.0*propellerDurchmesser;  //geowerte
-      double originX2 = 0.0;//-0.5*blockLengthx2*nx2;
-      double originX3 = 0.0;// minX3 + 0.5*fineNodeDx;
-
-      double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3}; 
-
-      bool periodicx1 = true;
-      bool periodicx2 = true;
-      bool periodicx3 = false;
-
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-      double smagorinskiConstant = 0.18;
-
-
-      double rhoLB         = 0.0;
-
-      double rhoReal       = 1.0;
-      double nueReal  = 1;//0.000016;//0.015;
-
-      double hReal         = blocknx[2]*nx[2];//H*0.9;//0.0105;//<-m     1.05;//Plattendicke in cm(! cm nicht m !)
-      double uReal         = Re*nueReal/hReal;
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-      double csReal=343.0;
-      double Ma      = uReal/csReal;//Ma-Real!
-      //double csReal  = uReal/Ma;
-      double hLB     = hReal/coarseNodeDx;
-
-      LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter(hReal, csReal, rhoReal, hLB));
-
-      double uLB           = uReal   * unitConverter->getFactorVelocityWToLb();
-      double nueLB         = nueReal * unitConverter->getFactorViscosityWToLb();
-      double timestep      = unitConverter->getFactorTimeLbToW(coarseNodeDx);
-
-      velocity = uLB;
-      // double viscosity =nueLB*1000.0;
-
-      Grid3DPtr grid(new Grid3D(comm));
-      UbSchedulerPtr rSch(new UbScheduler(10000,100000,30000000000));//(50000,50000,1000000));
-      RestartPostprocessor rp(grid, rSch, comm, pathnameRestart+"/checkpoints", RestartPostprocessor::BINARY);
-
-      //////////////////////////////////////////////////////////////////////////
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if(/*(cstr== NULL)*/cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) {
-            UBLOG(logINFO,"Restart step: " << opt);
-            UBLOG(logINFO, "Restart=:" << pathnameRestart);
-         }
-
-         grid = rp.restart(UbSystem::stringTo<int>(opt));
-         rp.reconnect(grid);
-
-//          mu::Parser fctForcingX1, fctForcingX2, fctForcingX3;
-//          fctForcingX1.SetExpr("Fx1*dx");
-//          fctForcingX1.DefineConst("Fx1", 0.6*5.0e-6);
-// 
-//          SetForcingBlockVisitor forcingVisitor(fctForcingX1, fctForcingX2, fctForcingX3);
-//          grid->accept(forcingVisitor);
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-      }
-      else
-      {
-         //bounding box
-         double g_minX1 = originX1;
-         double g_minX2 = originX2;
-         double g_minX3 = originX3;
-
-         double g_maxX1 = originX1 + geoLength[0];
-         double g_maxX2 = originX2 + geoLength[1];
-         double g_maxX3 = originX3 + geoLength[2];
-
-         //set grid
-         grid->setDeltaX(coarseNodeDx);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-         grid->setPeriodicX1(periodicx1);
-         grid->setPeriodicX2(periodicx2);
-         grid->setPeriodicX3(periodicx3);
-
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-
-
-
-         //bottom and top solid bc
-         //iteractors
-         int bbOption1 = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-         double geoOverlap = coarseNodeDx;
-         GbCuboid3DPtr bottomBCCuboid(new GbCuboid3D(originX1-geoOverlap, originX2-geoOverlap, originX3-geoOverlap, 
-            originX1+geoLength[0]+coarseNodeDx, originX2+geoLength[1]+geoOverlap, originX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(bottomBCCuboid.get(), pathname+"/geo/bottomBCCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr bottomBCInteractor(new D3Q27Interactor(bottomBCCuboid,grid,bcObst,Interactor3D::SOLID)); 
-
-         GbCuboid3DPtr topBCCuboid(new GbCuboid3D(originX1-geoLength[0]-coarseNodeDx, originX2-geoOverlap, originX3+geoLength[2],//-coarseNodeDx*0.5, 
-            originX1+geoLength[0]+coarseNodeDx, originX2+geoLength[1]+geoOverlap, originX3+geoLength[2]+geoOverlap));
-         if(myid == 0) GbSystem3D::writeGeoObject(topBCCuboid.get(), pathname+"/geo/topBCCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr topBCInteractor(new D3Q27Interactor(topBCCuboid,grid,bcObst,Interactor3D::SOLID)); 
-         //grid->addAndInitInteractor( bottomBCInteractor ); 
-         // grid->addAndInitInteractor( topBCInteractor ); 
-         //////////////////////////////////////////////////////////////////////////
-         if(myid == 0)
-         {
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* Parameters                            *");
-            UBLOG(logINFO, "* Re            ="<<Re);
-            UBLOG(logINFO, "* Ma            ="<<Ma);
-            UBLOG(logINFO, "* uReal         ="<<uReal);
-            UBLOG(logINFO, "* nueReal       ="<<nueReal);
-            UBLOG(logINFO, "* nue           ="<<nueLB);
-            UBLOG(logINFO, "* velocity      ="<<uLB);
-            // UBLOG(logINFO, "* LX1 (world/LB)="<<kanallaengeSI<<"/"<<kanallaengeSI/coarseNodeDx);
-            //  UBLOG(logINFO, "* LX2 (world/LB)="<<kanalbreiteSI<<"/"<<kanalbreiteSI/coarseNodeDx);
-            UBLOG(logINFO, "* LX3 (world/LB)="<<kanalhoeheSI<<"/"<<kanalhoeheSI/coarseNodeDx);
-            UBLOG(logINFO, "* cdx           ="<<coarseNodeDx);
-            UBLOG(logINFO, "* fdx           ="<<fineNodeDx);
-            UBLOG(logINFO, "* dx_base       ="<<coarseNodeDx<<" == "<<coarseNodeDx);
-            UBLOG(logINFO, "* dx_refine     ="<<fineNodeDx<<" == "<<fineNodeDx );
-            UBLOG(logINFO, "* nx1/2/3       ="<<nx[0]<<"/"<<nx[1]<<"/"<<nx[2]);
-            UBLOG(logINFO, "* blocknx1/2/3  ="<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-            UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-            UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-            UBLOG(logINFO, "*****************************************");
-            UBLOGML(logINFO, "UnitConverter:"<<unitConverter->toString());
-            UBLOG(logINFO, "*****************************************");     
-         }
-
-         if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-
-         //////////////////////////////////////////////////////////////////////////
-         // refine
-         //////////////////////////////////////////////////////////////////////////
-         //GbCuboid3DPtr wallsX1X2maxRef1( new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI*0.95
-         //    , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormax1(wallsX1X2maxRef1, 0,refineLevel-3);
-         //grid->accept(refineVisitormax1);
-         //
-         //GbCuboid3DPtr wallsX1X2minRef1(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI*0.55
-         //    , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.47));
-         // RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin1(wallsX1X2minRef1, 0,refineLevel-3);
-         // grid->accept(refineVisitormin1);
-
-         //   GbCuboid3DPtr wallsX1X2maxRef2(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.98));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormax2(wallsX1X2maxRef2, 0,refineLevel-2);
-         //grid->accept(refineVisitormax2);
-         //   GbCuboid3DPtr wallsX1X2maxRef2(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.9));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormax2(wallsX1X2maxRef2, 0,refineLevel-2);
-         //grid->accept(refineVisitormax2);
-
-         // GbCuboid3DPtr wallsX1X2maxRef3(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.9995));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormax3(wallsX1X2maxRef3, 0,refineLevel-1);
-         //grid->accept(refineVisitormax3);
-
-         //         GbCuboid3DPtr wallsX1X2minRefl3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.25));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitorminl3(wallsX1X2minRefl3, 0,refineLevel-3);
-         //grid->accept(refineVisitorminl3);
-         /////würfel unten version
-         //      GbCuboid3DPtr wallsX1X2minRef2(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.2));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin2(wallsX1X2minRef2, 0,refineLevel-2);
-         //grid->accept(refineVisitormin2);
-
-         //   GbCuboid3DPtr wallsX1X2minRef3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , kanalhoeheSI*0.04
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.18));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin3(wallsX1X2minRef3, 0,refineLevel-1);
-         //grid->accept(refineVisitormin3);
-
-         //      GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , kanalhoeheSI*0.09
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.16));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin4(wallsX1X2minRef4, 0,refineLevel);
-         //grid->accept(refineVisitormin4);
-
-
-
-
-         /////würfel anfang version
-         //       GbCuboid3DPtr wallsX1X2minRef2(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.56));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin2(wallsX1X2minRef2, 0,refineLevel-2);
-         //grid->accept(refineVisitormin2);
-
-         //   GbCuboid3DPtr wallsX1X2minRef3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.55));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin3(wallsX1X2minRef3, 0,refineLevel-2);
-         //grid->accept(refineVisitormin3);
-
-         //      GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.49
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.53));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin4(wallsX1X2minRef4, 0,refineLevel-1);
-         //grid->accept(refineVisitormin4);
-
-
-         /*           GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX1-3.0*geoOverlap
-         , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.1));
-         RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin4(wallsX1X2minRef4, 0,refineLevel-1);
-         grid->accept(refineVisitormin4);*/
-
-         ////GbCuboid3DPtr refine1PlatteCube(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-H3
-         ////   , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3));
-         ////RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP1(refine1PlatteCube, baseLevel, refineLevel-6);
-         ////grid->accept(refineAdapterP1);
-
-         //GbCuboid3DPtr refine2PlatteCube(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-H3*0.5
-         //  , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP2(refine2PlatteCube, baseLevel, refineLevel-5);
-         //grid->accept(refineAdapterP2);
-
-         //GbCuboid3DPtr refine3PlatteCube(new GbCuboid3D(  originX1-geoOverlap  , originX2-geoOverlap  , x3minMesh-H3*0.5
-         //   , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.5));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP3(refine3PlatteCube, baseLevel, refineLevel-4);
-         //grid->accept(refineAdapterP3);
-
-         //GbCuboid3DPtr refine4PlatteCube(new GbCuboid3D(   originX1-geoOverlap  , originX2-geoOverlap  , x3minMesh+deltaX3Platte*0.0
-         //   ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.25));
-         //if(myid == 0) GbSystem3D::writeGeoObject(refine4PlatteCube.get(), pathname+"/geo/refine4PlatteCube", WbWriterVtkXmlASCII::getInstance());
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP4(refine4PlatteCube, baseLevel, refineLevel-3);
-         //grid->accept(refineAdapterP4);
-
-         //GbCuboid3DPtr refine5PlatteCube(new GbCuboid3D(   originX1-geoOverlap , originX2-geoOverlap  ,x3minMesh+deltaX3Platte*0.1/* x3minMesh+deltaX3Platte*0.8*/
-         //   ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.00375));
-         //if(myid == 0) GbSystem3D::writeGeoObject(refine5PlatteCube.get(), pathname+"/geo/refine5PlatteCube", WbWriterVtkXmlASCII::getInstance());
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP5(refine5PlatteCube, baseLevel, refineLevel-2);
-         //grid->accept(refineAdapterP5);
-
-
-         //GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX1-3.0*geoOverlap
-         //	  , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.1));
-
-         GbCuboid3DPtr wallsX1X2minRef3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.6/*0.55*/));
-
-         GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.49
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.53));
-
-         GbCuboid3DPtr wallsX1X2maxRef2(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.9
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], originX3+geoOverlap+geoLength[2]));
-
-         GbCuboid3DPtr wallsX1X2maxRef1(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.95
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], originX3+geoOverlap+geoLength[2]));
-
-         if (refineLevel > 0)
-         {
-
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(wallsX1X2minRef3, refineLevel-1);
-            refineHelper.addGbObject(wallsX1X2minRef4, refineLevel);
-            refineHelper.addGbObject(wallsX1X2maxRef2, refineLevel-1);
-            refineHelper.addGbObject(wallsX1X2maxRef1, refineLevel);
-
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         ///interactoren
-         //int bbOption1 = 0; //0=simple Bounce Back, 1=quadr. BB
-         //D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-         ///////würfel unten version ende
-         ////////////////////////////////////////////////////////////////////////////////
-         ////////PM grid
-         //Temporär:
-         //double  H=1.0;
-
-         vector<D3Q27InteractorPtr> D3Q27InteractorPtrarray;
-         ////////////////////////////////////////////////////////////////////////////////
-         double inflowCubeDx = coarseNodeDx;///(double)(1<<inflowCubeLevel);
-         double dpCubes=(double)H/20.0;//100.0; //30zum testen 100real
-         double offsetZgrid=H+0.5*inflowCubeDx;
-         double epschoch1drittel= 0.928318;
-         double abstandIn=2.0*dpCubes;
-         double c1oAbst=1.0/abstandIn;
-         for (int Nflowdir=0;Nflowdir<((nx[0]*blocknx[0]*c1oAbst)*coarseNodeDx); Nflowdir++)
-         {
-            // for (int Nhorizon=((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5-2; Nhorizon<((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5-1-1; Nhorizon++)
-            // {
-            //  for (int Nhorizon=0;  Nhorizon<(((nx[2]*blocknx[2]+1)*c1oAbst)*coarseNodeDx)*0.1; Nhorizon++)//Nhorizon<((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5; Nhorizon++)
-            for (int Nhorizon=0;  Nhorizon<(((nx[2]*blocknx[2]+1)*c1oAbst)*coarseNodeDx)*0.5-1; Nhorizon++)//Nhorizon<((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5; Nhorizon++)
-
-            {
-               for (int Nspanw=0; Nspanw<((nx[1]*blocknx[1]*c1oAbst)*coarseNodeDx); Nspanw++)
-               {
-                  // stringstream ss;
-                  //     ss<<"cubeH"<<Nflowdir<<"x"<<Nhorizon<<"x"<<Nspanw;
-                  ////     //   //geoOrigin ist Mitte, nicht vordere Ecke -> korrigieren
-                  // int Nflowdir=1;
-                  //int Nhorizon=0;
-                  //int Nspanw=1;
-                  double xminCubes1=originX1+(Nflowdir*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1);
-                  double xmaxCubes1=originX1+(Nflowdir*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1);
-                  double xminCubes=std::max(xminCubes1,2.0*coarseNodeDx/pow(2.0,refineLevel));
-                  double xmaxCubes=std::min(xmaxCubes1,originX1+geoLength[0]-coarseNodeDx/pow(2.0,refineLevel));
-                  double yminCubes=std::max(originX2+(Nspanw*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1),2.0*coarseNodeDx/pow(2.0,refineLevel));
-                  double ymaxCubes=std::min(originX2+(Nspanw*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1),originX2+geoLength[1]-coarseNodeDx/pow(2.0,refineLevel));
-                  double zminCubes=std::max(originX3+(Nhorizon*abstandIn)+4.0*coarseNodeDx/pow(2.0,refineLevel-1),2.0*coarseNodeDx/pow(2.0,refineLevel));
-                  double zmaxCubes=std::min(originX3+(Nhorizon*abstandIn)+dpCubes+4.0*coarseNodeDx/pow(2.0,refineLevel-1),originX3+geoLength[2]-coarseNodeDx/pow(2.0,refineLevel));
-                  ////     /*GbCuboid3D  *rectTemp = new GbCuboid3D(originX1+(Nflowdir*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx, originX2+(Nspanw*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx, originX3+(Nhorizon*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx, 
-                  ////										 originX1+(Nflowdir*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx, originX2+(Nspanw*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx, originX3+(Nhorizon*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx );
-                  ////*/
-                  ////  
-                  GbCuboid3DPtr rectTemp(new GbCuboid3D(xminCubes, yminCubes, zminCubes, 
-                     xmaxCubes, ymaxCubes, zmaxCubes));
-                  ////
-                  //     ostringstream ostrcubes;
-                  //	 ostrcubes<<pathname <<"/cubeH"<<Nflowdir<<"x"<<Nhorizon<<"x"<<Nspanw;
-                  ////       
-                  ////   
-                  //// // GbSystem3D::writeGeoObject(rectTemp,outpath+cubeschar,WbWriterAvsASCII::getInstance());
-                  ////  GbSystem3D::writeGeoObject(rectTemp,ostrcubes.str(),WbWriterAvsASCII::getInstance()); //??
-                  //        ostrcubes.str("");
-                  //         ostrcubes.clear();
-
-                  ////  boost::shared_ptr<D3Q19AMRInteractor> interactorTemp( new D3Q19AMRInteractor( rectTemp,new D3Q19NoSlipBCAdapter(),AMR3DInteractor::SOLID,ss.str()) );
-                  //  //  interactorService.addInteractor(interactorTemp);
-                  D3Q27BoundaryConditionAdapterPtr cubeBCAdapter(new D3Q27NoSlipBCAdapter());                   //D3Q27DensityBCAdapter(rhoInit));
-                  D3Q27InteractorPtr cubeInteractor( new D3Q27Interactor(rectTemp,grid,cubeBCAdapter,Interactor3D::SOLID));
-                  D3Q27InteractorPtrarray.push_back(cubeInteractor);  
-
-
-               }
-            }}
-         ////////////////
-         //ende cubes
-         //////////
-         ////////////////////////////////////////////
-         //METIS
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-         grid->accept( metisVisitor );
-
-
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-         SolidBlocksHelper sd(grid, comm);
-
-         sd.addInteractor(topBCInteractor);
-         sd.addInteractor(bottomBCInteractor);
-         for(size_t i=0; i<D3Q27InteractorPtrarray.size(); ++i)
-         {
-            sd.addInteractor(D3Q27InteractorPtrarray[i]);
-         }
-         sd.deleteSolidBlocks();
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	 
-         //////////////////////////////////////
-         grid->accept( metisVisitor );
-
-         sd.setTransBlocks(); 
-
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         unsigned long nod = nob * blocknx[0]*blocknx[1]*blocknx[2];
-         unsigned long nod_real = nob * (blocknx[0]+3)*(blocknx[1]+3)*(blocknx[2]+3);
-
-         double needMemAll  = double(nod_real*(27*sizeof(double) + sizeof(int)));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }
-
-         LBMKernel3DPtr kernel;
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-
-         // LBMKernel3DPtr kernel(new LBMKernelETD3Q27CascadedTI(blocknx[0], blocknx[1], blocknx[2]));
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27BGK(blocknx[0], blocknx[1], blocknx[2],1));
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-         //	  //scheint neuerdings fuer absturz zu sorgen:
-         mu::Parser fctForcingX1;
-         fctForcingX1.SetExpr("Fx1*dx");
-         fctForcingX1.DefineConst("Fx1", 0.6*5.0e-6);//9.99685e-7);
-
-         kernel->setForcingX1(fctForcingX1);
-         kernel->setWithForcing(true); 
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-
-         grid->accept(kernelVisitor);
-
-         //////////////////////////////////
-         //undef nodes
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-         //////////////////////////////////////////
-
-         grid->addAndInitInteractor( bottomBCInteractor ); 
-         grid->addAndInitInteractor( topBCInteractor );
-         for(size_t i=0; i<D3Q27InteractorPtrarray.size(); ++i)
-         {
-            grid->addAndInitInteractor( D3Q27InteractorPtrarray[i] ); 
-            char numstr[21];
-            sprintf(numstr, "%f", (double)i);
-            std::string pathObstCube = pathname+"/geo/obstBCCuboid"+ numstr;
-            if(myid == 0) GbSystem3D::writeGeoObject(D3Q27InteractorPtrarray[i]->getGbObject3D().get(),
-               /* rectTemp.get(),*/ pathObstCube, WbWriterVtkXmlASCII::getInstance());
-         }
-
-
-         UbTimer timer;
-         timer.start();
-         grid->accept( metisVisitor );
-
-         if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         if(myid == 0) ppblocks->update(0);
-         if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-
-         if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-         grid->accept( metisVisitor );
-         if(myid == 0) ppblocks->update(1);
-         ppblocks.reset();
-         if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-         //inflow
-         double uLB2=uLB;
-         double raiseVelSteps = 0;
-         vector<D3Q27BCFunction> velcX1BCs,dummy;
-
-         mu::Parser inflowProfile;
-         inflowProfile.SetExpr("uLB*0.9"); 
-
-         inflowProfile.DefineConst("uLB",uLB2);
-         velcX1BCs.push_back(D3Q27BCFunction(inflowProfile,raiseVelSteps,D3Q27BCFunction::INFCONST));
-
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-
-         //initialization of decompositions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor( nueLB,rhoInit);
-         initVisitor.setVx1(inflowProfile);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         //LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), 
-            unitConverter, comm, true));
-
-
-
-         grid->doPostProcess(0);
-         ppgeo.reset();
-         geoSch.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end");      
-
-      }
-
-
-
-      UbSchedulerPtr visSch(new UbScheduler());
-      //visSch->addSchedule(100,1,1000);
-      //visSch->addSchedule(1000,1000,10000);
-      //visSch->addSchedule(10000,10000,100000);
-      //visSch->addSchedule(20000,20000,800000);
-      //visSch->addSchedule(50,350000,350500);
-      //visSch->addSchedule(50,420000,420500);
-      //visSch->addSchedule(50000,420500,10000000);
-      visSch->addSchedule(2250,268250,450001);
-      UbSchedulerPtr resSch(new UbScheduler());
-      resSch->addSchedule(20000,20,10000000);
-      // AverageValuesPostprocessor       Avpp(grid,  pathname + "/steps/stepAV", WbWriterVtkXmlBinary::getInstance(), visSch/*wann wird rausgeschrieben*/,resSch/*wann wird resettet*/,comm);
-      UbSchedulerPtr resSchRMS(new UbScheduler());
-      resSchRMS->addSchedule(40000,420000,10000000);
-      UbSchedulerPtr resSchMeans(new UbScheduler());
-      resSchMeans->addSchedule(40000,0,10000000);
-      UbSchedulerPtr stepAvSch(new UbScheduler());
-      int averageInterval=20;
-      stepAvSch->addSchedule(averageInterval,0,10000000);
-
-      double restart=10000; //??????????
-      AverageValuesPostprocessor       Avpp(grid,  pathname + "/steps/stepAV", WbWriterVtkXmlBinary::getInstance(), stepAvSch/*wann wird gemittelt*/, averageInterval,visSch/*wann wird rausgeschrieben*/,resSchMeans,resSchRMS/*wann wird resettet*/,comm,restart);
-
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), unitConverter, comm);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 90050, 90080));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-
-      UbSchedulerPtr AdjForcSch(new UbScheduler());
-      AdjForcSch->addSchedule(100,20,20000000);
-      D3Q27IntegrateValuesHelperPtr IntValHelp(new D3Q27IntegrateValuesHelper(grid, comm, 
-         originX1, originX2, kanalhoeheSI*0.55/*0.501*/, 
-         nx[0]*blockLengthx1, nx[1]*blockLengthx2, kanalhoeheSI*0.999));
-
-      double vxZiel=uLB;
-      //D3Q27AdjustForcingPostprocessor AdjForcPPPtr(grid, AdjForcSch,IntValHelp, vxZiel*0.6, comm);//da am 11.3.2013 velo um 1/0.6 zu hoch
-      D3Q27AdjustForcingPostprocessor AdjForcPPPtr(grid, AdjForcSch,IntValHelp, vxZiel, comm);//dies sollte zu Re=5500 fuehren..
-
-      UbSchedulerPtr visQSch(new UbScheduler());
-      visQSch->addSchedule(10,90100,90130);
-      QKritPostprocessor QKritPtr(grid,pathname+"/steps/Qq",WbWriterVtkXmlBinary::getInstance(),visQSch, comm);
-
-      mu::Parser decrViscFunc;
-      decrViscFunc.SetExpr("nue0+c0/(t+1)/(t+1)");
-      decrViscFunc.DefineConst("nue0", nueLB);
-      decrViscFunc.DefineConst("c0", 0.1);
-      UbSchedulerPtr DecrViscSch(new UbScheduler());
-      DecrViscSch->addSchedule(10,10,1000);
-      DecreaseViscosityPostprocessor decrViscPPPtr(grid, DecrViscSch,&decrViscFunc, comm);
-
-      cout << "PID = " << myid << " Total Physical Memory (RAM): " << MemoryUtil::getTotalPhysMem()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used: " << MemoryUtil::getPhysMemUsed()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used by current process: " << MemoryUtil::getPhysMemUsedByMe()<<endl;
-
-      double endTime = 2000000;//20000001;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/bKanal2/CMakeLists.txt b/apps/cpu/bKanal2/CMakeLists.txt
deleted file mode 100644
index c54f4ab348b51f05e4b16d498f1345e5c5cdbad0..0000000000000000000000000000000000000000
--- a/apps/cpu/bKanal2/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(bKanal2)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(bKanal2 BINARY)
diff --git a/apps/cpu/bKanal2/bKanal2.cpp b/apps/cpu/bKanal2/bKanal2.cpp
deleted file mode 100644
index 0b0175d1652f1ac4e3f0783364ef57b601169445..0000000000000000000000000000000000000000
--- a/apps/cpu/bKanal2/bKanal2.cpp
+++ /dev/null
@@ -1,466 +0,0 @@
-
-
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <sys/types.h> //mkdir rights
-#include <sys/stat.h> //mkdir
-#include <vfluids.h>
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string pathname; 
-      string pathnameRestart;
-      int numOfThreads =1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      UbLog::reportingLevel() = logINFO;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      string machine = string(cstr);
-
-      if(machine == "my") 
-      {
-         pathname = "d:/temp/BKanal";
-         numOfThreads = 4;
-         logfile = false;
-         availMem = 10.0e9;
-      }
-      else if(machine == "Ludwig")      
-      {
-         pathname =        "/work/koskuche/SFB880/BKanal";
-         pathnameRestart = "/work/koskuche/SFB880/BKanal";
-         numOfThreads = 8;
-         availMem = 1.0e9;
-         logfile = true;
-
-         if (myid==0) 
-         {
-            const char* str = pathname.c_str();
-#if defined(__unix__)
-            int status=mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-#endif 
-         }
-
-         if(myid ==0)
-         {
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-         }
-
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      if(myid ==0 && logfile)
-      {
-         UbLog::output_policy::setStream(logFilename.str());
-      }
-
-      UBLOG(logINFO,"Testcase BreugemChannel");
-
-      //////////////////////////////////////////////////////////////////////////
-      //physik
-      //////////////////////////////////////////////////////////////////////////
-      double Re    = 5500;
-      double uLB   = 0.1;  
-      double rhoLB = 0.0;
-
-      int blocknx[3];
-      blocknx[0] = 20;//10;//5;
-      blocknx[1] = 20;//10;//5;
-      blocknx[2] = 20;//10;//5;
-
-      int nx[3];
-      nx[0] = 15;
-      nx[1] = 10;
-      nx[2] = 10;
-
-      double coarseNodeDx = 1.0;
-      double H     = (double)(nx[2]*blocknx[2])/2.0;
-      double hLB   = H/coarseNodeDx;
-      double nuLB  = (uLB*hLB)/Re;
-
-      int baseLevel   = 0;
-      int refineLevel = 0;//2;//1;////3;//3 soll 1 test;
-
-      ///////////////Weltabmessungen:
-      double blockLengthx1 = blocknx[0]*coarseNodeDx; //geowerte
-      double blockLengthx2 = blockLengthx1;
-      double blockLengthx3 = blockLengthx1;
-
-      double originX1 = 0.0;
-      double originX2 = 0.0;
-      double originX3 = 0.0;
-
-      //bounding box
-      double g_minX1 = originX1;
-      double g_minX2 = originX2;
-      double g_minX3 = originX3;
-
-      double g_maxX1 = originX1 + 3.0*H;
-      double g_maxX2 = originX2 + 2.0*H;
-      double g_maxX3 = originX3 + 2.0*H;
-
-      //double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3}; 
-
-      bool periodicx1 = true;
-      bool periodicx2 = true;
-      bool periodicx3 = false;
-
-      LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      Grid3DPtr grid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(10000,10000,10000000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY);
-      grid = rp.restart(-1);
-      //////////////////////////////////////////////////////////////////////////
-
-       if (grid->getTimeStep() == 0)
-       {
-
-         //set grid
-         grid->setDeltaX(coarseNodeDx);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-         grid->setPeriodicX1(periodicx1);
-         grid->setPeriodicX2(periodicx2);
-         grid->setPeriodicX3(periodicx3);
-
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-
-
-         //bottom and top solid bc
-         //iteractors
-         int bbOption1 = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-         double geoOverlap = coarseNodeDx;
-         GbCuboid3DPtr bottomBCCuboid(new GbCuboid3D(g_minX1-blockLengthx1, g_minX2-blockLengthx1, g_minX3-blockLengthx1, g_maxX1+blockLengthx1, g_maxX2+blockLengthx1, g_minX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(bottomBCCuboid.get(), pathname+"/geo/bottomBCCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr bottomBCInteractor(new D3Q27Interactor(bottomBCCuboid,grid,bcObst,Interactor3D::SOLID)); 
-
-         GbCuboid3DPtr topBCCuboid(new GbCuboid3D(g_minX1-blockLengthx1, g_minX2-blockLengthx1, g_maxX3, g_maxX1+blockLengthx1, g_maxX2+blockLengthx1, g_maxX3+blockLengthx1));
-         if(myid == 0) GbSystem3D::writeGeoObject(topBCCuboid.get(), pathname+"/geo/topBCCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr topBCInteractor(new D3Q27Interactor(topBCCuboid,grid,bcObst,Interactor3D::SOLID)); 
-         //grid->addAndInitInteractor( bottomBCInteractor ); 
-         // grid->addAndInitInteractor( topBCInteractor ); 
-         //////////////////////////////////////////////////////////////////////////
-         if(myid == 0)
-         {
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* Parameters                            *");
-            UBLOG(logINFO, "* Re            ="<<Re);
-            //UBLOG(logINFO, "* Ma            ="<<Ma);
-            //UBLOG(logINFO, "* uReal         ="<<uReal);
-            //UBLOG(logINFO, "* nueReal       ="<<nueReal);
-            UBLOG(logINFO, "* nue           ="<<nuLB);
-            UBLOG(logINFO, "* velocity      ="<<uLB);
-            // UBLOG(logINFO, "* LX1 (world/LB)="<<kanallaengeSI<<"/"<<kanallaengeSI/coarseNodeDx);
-            //  UBLOG(logINFO, "* LX2 (world/LB)="<<kanalbreiteSI<<"/"<<kanalbreiteSI/coarseNodeDx);
-            //UBLOG(logINFO, "* LX3 (world/LB)="<<kanalhoeheSI<<"/"<<kanalhoeheSI/coarseNodeDx);
-            UBLOG(logINFO, "* cdx           ="<<coarseNodeDx);
-            //UBLOG(logINFO, "* fdx           ="<<fineNodeDx);
-            UBLOG(logINFO, "* dx_base       ="<<coarseNodeDx<<" == "<<coarseNodeDx);
-            //UBLOG(logINFO, "* dx_refine     ="<<fineNodeDx<<" == "<<fineNodeDx );
-            //UBLOG(logINFO, "* nx1/2/3       ="<<nx[0]<<"/"<<nx[1]<<"/"<<nx[2]);
-            UBLOG(logINFO, "* blocknx1/2/3  ="<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-            UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-            UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-            UBLOG(logINFO, "* number of threads ="<<numOfThreads);
-            UBLOG(logINFO, "* number of processes ="<<comm->getNumberOfProcesses());
-            UBLOG(logINFO, "*****************************************");
-/*            UBLOGML(logINFO, "UnitConverter:"<<unitConverter->toString());
-            UBLOG(logINFO, "*****************************************");  */   
-         }
-
-         if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-
-         //////////////////////////////////////////////////////////////////////////
-         // refine
-         //////////////////////////////////////////////////////////////////////////
-         //GbCuboid3DPtr wallsX1X2minRef3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.6/*0.55*/));
-
-         //GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.49
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.53));
-
-         //GbCuboid3DPtr wallsX1X2maxRef2(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.9
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], originX3+geoOverlap+geoLength[2]));
-
-         //GbCuboid3DPtr wallsX1X2maxRef1(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.95
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], originX3+geoOverlap+geoLength[2]));
-
-         //if (refineLevel > 0)
-         //{
-
-         //   RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-         //   refineHelper.addGbObject(wallsX1X2minRef3, refineLevel-1);
-         //   refineHelper.addGbObject(wallsX1X2minRef4, refineLevel);
-         //   refineHelper.addGbObject(wallsX1X2maxRef2, refineLevel-1);
-         //   refineHelper.addGbObject(wallsX1X2maxRef1, refineLevel);
-
-         //   refineHelper.refine();
-         //   if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         //}
-
-         ///interactoren
-         //int bbOption1 = 0; //0=simple Bounce Back, 1=quadr. BB
-         //D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-         ///////würfel unten version ende
-         ////////////////////////////////////////////////////////////////////////////////
-         ////////PM grid
-         //Temporär:
-         //double  H=1.0;
-
-         vector<D3Q27InteractorPtr> D3Q27InteractorPtrarray;
-         ////////////////////////////////////////////////////////////////////////////////
-         double dpCubes=(double)H/20.0;
-         double distanceXY=dpCubes/2.0-coarseNodeDx*0.5;
-         double distanceZ=0;
-   
-         for (int x = 0; x<30; x++)
-            for (int y = 0; y<20; y++)
-               for (int z = 0; z<9; z++)
-               {
-                  double xminCubes = originX1+distanceXY+2.0*dpCubes*x;
-                  double yminCubes = originX2+distanceXY+2.0*dpCubes*y;
-                  double zminCubes = originX3+distanceZ+2.0*dpCubes*z;
-                  double xmaxCubes = xminCubes+dpCubes;
-                  double ymaxCubes = yminCubes+dpCubes;
-                  double zmaxCubes = zminCubes+dpCubes;
-                  GbCuboid3DPtr rectTemp(new GbCuboid3D(xminCubes, yminCubes, zminCubes, xmaxCubes, ymaxCubes, zmaxCubes));
-                  D3Q27BoundaryConditionAdapterPtr cubeBCAdapter(new D3Q27NoSlipBCAdapter());                   
-                  D3Q27InteractorPtr cubeInteractor( new D3Q27Interactor(rectTemp,grid,cubeBCAdapter,Interactor3D::SOLID));
-                  D3Q27InteractorPtrarray.push_back(cubeInteractor); 
-               }
-
-         ////////////////
-         //ende cubes
-         //////////
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(topBCInteractor);
-         intHelper.addInteractor(bottomBCInteractor);
-         for(size_t i=0; i<D3Q27InteractorPtrarray.size(); ++i)
-         {
-            intHelper.addInteractor(D3Q27InteractorPtrarray[i]);
-         }
-         intHelper.selectBlocks();
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	 
-         //////////////////////////////////////
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         if(myid == 0) ppblocks->update(0);
-         if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         unsigned long nod = nob * blocknx[0]*blocknx[1]*blocknx[2];
-         unsigned long nod_real = nob * (blocknx[0]+3)*(blocknx[1]+3)*(blocknx[2]+3);
-
-         double needMemAll  = double(nod_real*(27*sizeof(double) + sizeof(int)));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }
-
-         LBMKernel3DPtr kernel;
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-     
-         mu::Parser fctForcingX1;
-         fctForcingX1.SetExpr("Fx1*dx");
-         fctForcingX1.DefineConst("Fx1", 0.6*5.0e-6);//9.99685e-7);
-
-         kernel->setForcingX1(fctForcingX1);
-         kernel->setWithForcing(true); 
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         //////////////////////////////////
-         //undef nodes
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-         //////////////////////////////////////////
-         intHelper.setBC();
-
-         for(size_t i=0; i<D3Q27InteractorPtrarray.size(); ++i)
-         {
-            grid->addAndInitInteractor( D3Q27InteractorPtrarray[i] ); 
-            char numstr[21];
-            sprintf(numstr, "%f", (double)i);
-            std::string pathObstCube = pathname+"/geo/obstBCCuboid"+ numstr;
-            if(myid == 0) GbSystem3D::writeGeoObject(D3Q27InteractorPtrarray[i]->getGbObject3D().get(),
-               /* rectTemp.get(),*/ pathObstCube, WbWriterVtkXmlASCII::getInstance());
-         }
-
-
-         ppblocks.reset();
-
-         //inflow
-         mu::Parser inflowProfile;
-         inflowProfile.SetExpr("uLB*0.9"); 
-         inflowProfile.DefineConst("uLB",uLB);
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //initialization of decompositions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor( nuLB,rhoLB);
-         initVisitor.setVx1(inflowProfile);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), 
-            unitConverter,true));
-
-         ppgeo->update(0);
-         ppgeo.reset();
-         geoSch.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end");      
-
-      }
-            else
-            {
-               //set forcing
-               mu::Parser fctForcingX1, fctForcingX2, fctForcingX3;
-               fctForcingX1.SetExpr("Fx1*dx");
-               fctForcingX1.DefineConst("Fx1", 0.6*5.0e-6);
-               fctForcingX2.SetExpr("0.0");
-               fctForcingX3.SetExpr("0.0");
-               SetForcingBlockVisitor forcingVisitor(fctForcingX1, fctForcingX2, fctForcingX3);
-               grid->accept(forcingVisitor);
-
-               //set connectors
-               D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-               D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-               grid->accept( setConnsVisitor );
-               if(myid == 0) UBLOG(logINFO,"Restart - end"); 
-      }
-
-
-      UbSchedulerPtr visSch(new UbScheduler());
-      visSch->addSchedule(100,100,1000);
-      visSch->addSchedule(1000,1000,10000);
-      visSch->addSchedule(10000,10000,100000);
-      //visSch->addSchedule(20000,20000,800000);
-      //visSch->addSchedule(50,350000,350500);
-      //visSch->addSchedule(50,420000,420500);
-      //visSch->addSchedule(50000,420500,10000000);
-      //visSch->addSchedule(2250,140000,450001);
-      //UbSchedulerPtr resSch(new UbScheduler());
-      //resSch->addSchedule(20000,20,10000000);
-      //UbSchedulerPtr resSchRMS(new UbScheduler());
-      //resSchRMS->addSchedule(40000,420000,10000000);
-      //UbSchedulerPtr resSchMeans(new UbScheduler());
-      //resSchMeans->addSchedule(40000,0,10000000);
-      //UbSchedulerPtr stepAvSch(new UbScheduler());
-      //stepAvSch->addSchedule(20,0,10000000);
-      //AverageValuesPostprocessor Avpp(grid, pathname + "/steps/stepAV", WbWriterVtkXmlBinary::getInstance(), 
-      //                                visSch/*wann wird rausgeschrieben*/, stepAvSch/*wann wird gemittelt*/, resSchMeans, resSchRMS/*wann wird resettet*/);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), unitConverter);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-
-      UbSchedulerPtr AdjForcSch(new UbScheduler());
-      AdjForcSch->addSchedule(100,100,20000000);
-      //D3Q27IntegrateValuesHelperPtr IntValHelp(new D3Q27IntegrateValuesHelper(grid, comm, 
-      //   originX1, originX2, kanalhoeheSI*0.55/*0.501*/, 
-      //   nx[0]*blockLengthx1, nx[1]*blockLengthx2, kanalhoeheSI*0.999));
-      D3Q27IntegrateValuesHelperPtr IntValHelp(new D3Q27IntegrateValuesHelper(grid, comm, 
-         originX1, originX2, g_maxX3*0.55/*0.501*/, 
-         g_maxX1, g_maxX2, g_maxX3*0.999));
-
-      double vxZiel=uLB;
-      //D3Q27AdjustForcingPostprocessor AdjForcPPPtr(grid, AdjForcSch,IntValHelp, vxZiel*0.6, comm);//da am 11.3.2013 velo um 1/0.6 zu hoch
-      D3Q27AdjustForcingPostprocessor AdjForcPPPtr(grid, AdjForcSch,IntValHelp, vxZiel, comm);//dies sollte zu Re=5500 fuehren..
-
-      UbSchedulerPtr visQSch(new UbScheduler());
-      visQSch->addSchedule(10,90100,90130);
-      QCriterionPostprocessor QKritPtr(grid,pathname+"/steps/Qq",WbWriterVtkXmlBinary::getInstance(),visQSch, comm);
-
-      //mu::Parser decrViscFunc;
-      //decrViscFunc.SetExpr("nue0+c0/(t+1)/(t+1)");
-      //decrViscFunc.DefineConst("nue0", nuLB);
-      //decrViscFunc.DefineConst("c0", 0.1);
-      //UbSchedulerPtr DecrViscSch(new UbScheduler());
-      //DecrViscSch->addSchedule(10,10,1000);
-      //DecreaseViscosityPostprocessor decrViscPPPtr(grid, DecrViscSch,&decrViscFunc, comm);
-
-      cout << "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe()<<endl;
-
-      double endTime = 2000000;//20000001;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/bKanalAv/CMakeLists.txt b/apps/cpu/bKanalAv/CMakeLists.txt
deleted file mode 100644
index 5ea13434aa29131f70b73a83f385085e5995e85f..0000000000000000000000000000000000000000
--- a/apps/cpu/bKanalAv/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(bKanalAv)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(bKanalAv BINARY)
diff --git a/apps/cpu/bKanalAv/bKanal.cpp b/apps/cpu/bKanalAv/bKanal.cpp
deleted file mode 100644
index 28f3456abe6d47603ee857e2d64e7fd8940c0ce3..0000000000000000000000000000000000000000
--- a/apps/cpu/bKanalAv/bKanal.cpp
+++ /dev/null
@@ -1,738 +0,0 @@
-
-
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <sys/types.h> //mkdir rights
-#include <sys/stat.h> //mkdir
-#include <vfluids.h>
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string machine = QUOTEME(CAB_MACHINE);
-      UBLOG(logINFO,"Testcase BreugemChannel");
-      string pathname; 
-      string pathnameRestart;
-      string pathGeo;
-      int numOfThreads =1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      UbLog::reportingLevel() = logINFO;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-
-         pathname =        "./";
-         //pathnameRestart = "/gfs1/work/niivfcpu/scratch/kucher/BKanaltest";//BKanaltest0Ref2up0612";//BKanaltest0Ref2up1012Out";
-         //pathname =        "/work/koskuche/SFB880/BKanaltestRe260000Out";
-         //pathnameRestart = "/work/koskuche/SFB880/BKanaltestRe260000";//BKanaltest0Ref2up0612";//BKanaltest0Ref2up1012Out";
-
-   	 //pathGeo = "/home/koskuche/data/plate";
-         numOfThreads = 1;
-         availMem = 64.0e9;
-         logfile = true;
-
-//         if (myid==0) 
-//         {
-//            const char* str = pathname.c_str();
-//#if defined(__unix__)
-//            int status=mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-//#endif 
-//
-//         }
-//
-//         if(myid ==0)
-//         {
-//            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-//         }
-
-
-
-
-      //if(myid ==0 && logfile)
-      //{
-      UbLog::output_policy::setStream(logFilename.str());
-      //}
-
-      int baseLevel, refineLevel,nx[3],blocknx[3];
-      double Re,velocity,rhoInit,vx1Init;//,vx2Init,vx3Init;
-
-      //////////////////////////////////////////////////////////////////////////
-      //physik
-      //////////////////////////////////////////////////////////////////////////
-      Re            = 5500;// 13286;//13286;//gemessen 18.98 m/s...*5.0 zum  testen ob was passiert
-      velocity      = 0.01;  
-      vx1Init       = 0.01;  
-      rhoInit       = 0.0;
-      SimulationParametersPtr param = SimulationParameters::getInstanz();
-
-      int H=200;//200;//392;
-
-      //  nx[0]      =8;//ok mit 8// (int)(3.0*(double)H/8.0/8.0);//2;// (int)(0.3*(double)H/6.0/4.0);//das "/4" hier ist wegen der verfeinerung da! //länge
-      //  nx[1]      =8;//ok mit 8// (int)(2.0*(double)H/8.0/8.0);//2;// (int)(0.2*(double)H/6.0/4.0);//  //breite
-      nx[2]      = (int)(2.0*(double)H/5.0/8.0);// //höhe gebiet
-
-      //(3/2/2)-ratio:
-      nx[1]=nx[2];
-      nx[0]=15;
-
-      blocknx[0] = 15;//10;//5;
-      blocknx[1] = 15;//10;//5;
-      blocknx[2] = 15;//10;//5;
-
-      baseLevel   = 0;
-      refineLevel = 2;//1;////3;//3 soll 1 test;
-
-
-      ///////////////Weltabmessungen:
-      //double kanallaengeSI = ( 2.0*(double)H);
-      // double kanalbreiteSI = ( 1.0*(double)H);
-      double kanalhoeheSI  = ( 2.0*(double)H);
-
-      // double refinewidth1=kanalhoeheSI/10.0;
-
-      double fineNodeDx   = (kanalhoeheSI) / (double)( blocknx[2]*nx[2]*(1<<refineLevel)+1 ); //+1--> gitter liegt jeweils 0.5dx innerhalb
-      double coarseNodeDx = fineNodeDx * (double)(1<<refineLevel);//geowerte
-
-      double blockLengthx1 = blocknx[0]*coarseNodeDx; //geowerte
-      double blockLengthx2 = blockLengthx1;
-      double blockLengthx3 = blockLengthx1;
-
-      double originX1 = 0.0;//-50.0*propellerDurchmesser;  //geowerte
-      double originX2 = 0.0;//-0.5*blockLengthx2*nx2;
-      double originX3 = 0.0;// minX3 + 0.5*fineNodeDx;
-
-      double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3}; 
-
-      bool periodicx1 = true;
-      bool periodicx2 = true;
-      bool periodicx3 = false;
-
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-      double smagorinskiConstant = 0.18;
-
-
-      double rhoLB         = 0.0;
-
-      double rhoReal       = 1.0;
-      double nueReal  = 1;//0.000016;//0.015;
-
-      double hReal         = blocknx[2]*nx[2];//H*0.9;//0.0105;//<-m     1.05;//Plattendicke in cm(! cm nicht m !)
-      double uReal         = Re*nueReal/hReal;
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-      double csReal=343.0;
-      double Ma      = uReal/csReal;//Ma-Real!
-      //double csReal  = uReal/Ma;
-      double hLB     = hReal/coarseNodeDx;
-
-      LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter(hReal, csReal, rhoReal, hLB));
-
-      double uLB           = uReal   * unitConverter->getFactorVelocityWToLb();
-      double nueLB         = nueReal * unitConverter->getFactorViscosityWToLb();
-      double timestep      = unitConverter->getFactorTimeLbToW(coarseNodeDx);
-
-      velocity = uLB;
-      // double viscosity =nueLB*1000.0;
-
-      Grid3DPtr grid(new Grid3D(comm));
-      //UbSchedulerPtr rSch(new UbScheduler(10000,100000,30000000000));//(50000,50000,1000000));
-      //UbSchedulerPtr rSch(new UbScheduler(18000,268250,770000));//(50000,50000,1000000));
-      //RestartPostprocessor rp(grid, rSch, comm, pathnameRestart+"/checkpoints", RestartPostprocessor::BINARY);
-
-      //////////////////////////////////////////////////////////////////////////
-
-      std::string opt;
-
-//      if(cstr!= NULL)
-//         opt = std::string(cstr);
-//
-//      if(/*(cstr== NULL)*/cstr!= NULL)
-//      {
-//         opt = std::string(cstr);
-//
-//         if(myid==0) {
-//            UBLOG(logINFO,"Restart step: " << opt);
-//            UBLOG(logINFO, "Restart=:" << pathnameRestart);
-//         }
-//
-//         grid = rp.restart(UbSystem::stringTo<int>(opt));
-//         rp.reconnect(grid);
-//
-////          mu::Parser fctForcingX1, fctForcingX2, fctForcingX3;
-////          fctForcingX1.SetExpr("Fx1*dx");
-////          fctForcingX1.DefineConst("Fx1", 0.6*5.0e-6);
-//// 
-////          SetForcingBlockVisitor forcingVisitor(fctForcingX1, fctForcingX2, fctForcingX3);
-////          grid->accept(forcingVisitor);
-//
-//         //set connectors
-//         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-//         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-//         grid->accept( setConnsVisitor );
-//
-//      }
-//      else
-//      {
-         //bounding box
-         double g_minX1 = originX1;
-         double g_minX2 = originX2;
-         double g_minX3 = originX3;
-
-         double g_maxX1 = originX1 + geoLength[0];
-         double g_maxX2 = originX2 + geoLength[1];
-         double g_maxX3 = originX3 + geoLength[2];
-
-         //set grid
-         grid->setDeltaX(coarseNodeDx);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-         grid->setPeriodicX1(periodicx1);
-         grid->setPeriodicX2(periodicx2);
-         grid->setPeriodicX3(periodicx3);
-
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         //GenBlocksGridVisitor genBlocks;
-         //genBlocks.addGeoObject(gridCube);
-         //grid->accept(genBlocks);
-
-
-
-         //bottom and top solid bc
-         //iteractors
-         int bbOption1 = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-         double geoOverlap = coarseNodeDx;
-         GbCuboid3DPtr bottomBCCuboid(new GbCuboid3D(originX1-geoOverlap, originX2-geoOverlap, originX3-geoOverlap, 
-            originX1+geoLength[0]+coarseNodeDx, originX2+geoLength[1]+geoOverlap, originX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(bottomBCCuboid.get(), pathname+"/geo/bottomBCCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr bottomBCInteractor(new D3Q27Interactor(bottomBCCuboid,grid,bcObst,Interactor3D::SOLID)); 
-
-         GbCuboid3DPtr topBCCuboid(new GbCuboid3D(originX1-geoLength[0]-coarseNodeDx, originX2-geoOverlap, originX3+geoLength[2],//-coarseNodeDx*0.5, 
-            originX1+geoLength[0]+coarseNodeDx, originX2+geoLength[1]+geoOverlap, originX3+geoLength[2]+geoOverlap));
-         if(myid == 0) GbSystem3D::writeGeoObject(topBCCuboid.get(), pathname+"/geo/topBCCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr topBCInteractor(new D3Q27Interactor(topBCCuboid,grid,bcObst,Interactor3D::SOLID)); 
-         //grid->addAndInitInteractor( bottomBCInteractor ); 
-         // grid->addAndInitInteractor( topBCInteractor ); 
-         //////////////////////////////////////////////////////////////////////////
-         if(myid == 0)
-         {
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* Parameters                            *");
-            UBLOG(logINFO, "* Re            ="<<Re);
-            UBLOG(logINFO, "* Ma            ="<<Ma);
-            UBLOG(logINFO, "* uReal         ="<<uReal);
-            UBLOG(logINFO, "* nueReal       ="<<nueReal);
-            UBLOG(logINFO, "* nue           ="<<nueLB);
-            UBLOG(logINFO, "* velocity      ="<<uLB);
-            // UBLOG(logINFO, "* LX1 (world/LB)="<<kanallaengeSI<<"/"<<kanallaengeSI/coarseNodeDx);
-            //  UBLOG(logINFO, "* LX2 (world/LB)="<<kanalbreiteSI<<"/"<<kanalbreiteSI/coarseNodeDx);
-            UBLOG(logINFO, "* LX3 (world/LB)="<<kanalhoeheSI<<"/"<<kanalhoeheSI/coarseNodeDx);
-            UBLOG(logINFO, "* cdx           ="<<coarseNodeDx);
-            UBLOG(logINFO, "* fdx           ="<<fineNodeDx);
-            UBLOG(logINFO, "* dx_base       ="<<coarseNodeDx<<" == "<<coarseNodeDx);
-            UBLOG(logINFO, "* dx_refine     ="<<fineNodeDx<<" == "<<fineNodeDx );
-            UBLOG(logINFO, "* nx1/2/3       ="<<nx[0]<<"/"<<nx[1]<<"/"<<nx[2]);
-            UBLOG(logINFO, "* blocknx1/2/3  ="<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-            UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-            UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-            UBLOG(logINFO, "*****************************************");
-            UBLOGML(logINFO, "UnitConverter:"<<unitConverter->toString());
-            UBLOG(logINFO, "*****************************************");     
-         }
-
-         if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-
-         //////////////////////////////////////////////////////////////////////////
-         // refine
-         //////////////////////////////////////////////////////////////////////////
-         //GbCuboid3DPtr wallsX1X2maxRef1( new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI*0.95
-         //    , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormax1(wallsX1X2maxRef1, 0,refineLevel-3);
-         //grid->accept(refineVisitormax1);
-         //
-         //GbCuboid3DPtr wallsX1X2minRef1(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI*0.55
-         //    , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.47));
-         // RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin1(wallsX1X2minRef1, 0,refineLevel-3);
-         // grid->accept(refineVisitormin1);
-
-         //   GbCuboid3DPtr wallsX1X2maxRef2(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.98));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormax2(wallsX1X2maxRef2, 0,refineLevel-2);
-         //grid->accept(refineVisitormax2);
-         //   GbCuboid3DPtr wallsX1X2maxRef2(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.9));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormax2(wallsX1X2maxRef2, 0,refineLevel-2);
-         //grid->accept(refineVisitormax2);
-
-         // GbCuboid3DPtr wallsX1X2maxRef3(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , kanalhoeheSI
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.9995));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormax3(wallsX1X2maxRef3, 0,refineLevel-1);
-         //grid->accept(refineVisitormax3);
-
-         //         GbCuboid3DPtr wallsX1X2minRefl3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.25));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitorminl3(wallsX1X2minRefl3, 0,refineLevel-3);
-         //grid->accept(refineVisitorminl3);
-         /////würfel unten version
-         //      GbCuboid3DPtr wallsX1X2minRef2(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.2));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin2(wallsX1X2minRef2, 0,refineLevel-2);
-         //grid->accept(refineVisitormin2);
-
-         //   GbCuboid3DPtr wallsX1X2minRef3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , kanalhoeheSI*0.04
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.18));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin3(wallsX1X2minRef3, 0,refineLevel-1);
-         //grid->accept(refineVisitormin3);
-
-         //      GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , kanalhoeheSI*0.09
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.16));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin4(wallsX1X2minRef4, 0,refineLevel);
-         //grid->accept(refineVisitormin4);
-
-
-
-
-         /////würfel anfang version
-         //       GbCuboid3DPtr wallsX1X2minRef2(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.56));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin2(wallsX1X2minRef2, 0,refineLevel-2);
-         //grid->accept(refineVisitormin2);
-
-         //   GbCuboid3DPtr wallsX1X2minRef3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.55));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin3(wallsX1X2minRef3, 0,refineLevel-2);
-         //grid->accept(refineVisitormin3);
-
-         //      GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.49
-         //   , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.53));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin4(wallsX1X2minRef4, 0,refineLevel-1);
-         //grid->accept(refineVisitormin4);
-
-
-         /*           GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX1-3.0*geoOverlap
-         , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.1));
-         RefineCrossAndInsideGbObjectBlockVisitor refineVisitormin4(wallsX1X2minRef4, 0,refineLevel-1);
-         grid->accept(refineVisitormin4);*/
-
-         ////GbCuboid3DPtr refine1PlatteCube(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-H3
-         ////   , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3));
-         ////RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP1(refine1PlatteCube, baseLevel, refineLevel-6);
-         ////grid->accept(refineAdapterP1);
-
-         //GbCuboid3DPtr refine2PlatteCube(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-H3*0.5
-         //  , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP2(refine2PlatteCube, baseLevel, refineLevel-5);
-         //grid->accept(refineAdapterP2);
-
-         //GbCuboid3DPtr refine3PlatteCube(new GbCuboid3D(  originX1-geoOverlap  , originX2-geoOverlap  , x3minMesh-H3*0.5
-         //   , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.5));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP3(refine3PlatteCube, baseLevel, refineLevel-4);
-         //grid->accept(refineAdapterP3);
-
-         //GbCuboid3DPtr refine4PlatteCube(new GbCuboid3D(   originX1-geoOverlap  , originX2-geoOverlap  , x3minMesh+deltaX3Platte*0.0
-         //   ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.25));
-         //if(myid == 0) GbSystem3D::writeGeoObject(refine4PlatteCube.get(), pathname+"/geo/refine4PlatteCube", WbWriterVtkXmlASCII::getInstance());
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP4(refine4PlatteCube, baseLevel, refineLevel-3);
-         //grid->accept(refineAdapterP4);
-
-         //GbCuboid3DPtr refine5PlatteCube(new GbCuboid3D(   originX1-geoOverlap , originX2-geoOverlap  ,x3minMesh+deltaX3Platte*0.1/* x3minMesh+deltaX3Platte*0.8*/
-         //   ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.00375));
-         //if(myid == 0) GbSystem3D::writeGeoObject(refine5PlatteCube.get(), pathname+"/geo/refine5PlatteCube", WbWriterVtkXmlASCII::getInstance());
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP5(refine5PlatteCube, baseLevel, refineLevel-2);
-         //grid->accept(refineAdapterP5);
-
-
-         //GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX1-3.0*geoOverlap
-         //	  , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.1));
-
-         GbCuboid3DPtr wallsX1X2minRef3(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX3-3.0*geoOverlap
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.6/*0.55*/));
-
-         GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.49
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.53));
-
-         GbCuboid3DPtr wallsX1X2maxRef2(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.9
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], originX3+geoOverlap+geoLength[2]));
-
-         GbCuboid3DPtr wallsX1X2maxRef1(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  ,kanalhoeheSI*0.95
-            , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], originX3+geoOverlap+geoLength[2]));
-
-         //if (refineLevel > 0)
-         //{
-
-         //   RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-         //   refineHelper.addGbObject(wallsX1X2minRef3, refineLevel-1);
-         //   refineHelper.addGbObject(wallsX1X2minRef4, refineLevel);
-         //   refineHelper.addGbObject(wallsX1X2maxRef2, refineLevel-1);
-         //   refineHelper.addGbObject(wallsX1X2maxRef1, refineLevel);
-
-         //   refineHelper.refine();
-         //   if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         //}
-
-         ///interactoren
-         //int bbOption1 = 0; //0=simple Bounce Back, 1=quadr. BB
-         //D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-         ///////würfel unten version ende
-         ////////////////////////////////////////////////////////////////////////////////
-         ////////PM grid
-         //Temporär:
-         //double  H=1.0;
-
-         //vector<D3Q27InteractorPtr> D3Q27InteractorPtrarray;
-         
-         double newDx = fineNodeDx;///2.0;
-         int geoNX1=(int)(600.0/newDx)-1; 
-         int geoNX2=(int)(400.0/newDx)-1; 
-         int geoNX3=(int)((398.0+newDx*2)/newDx); 
-         GbVoxelMatrix3D geoMatrix(geoNX1,geoNX2,geoNX3,0);
-         geoMatrix.setVoxelMatrixDelta(newDx, newDx, newDx);
-         double m_minX1 = 0 - newDx/2.0;
-         double m_minX2 = 0 - newDx/2.0;
-         double m_minX3 = 0.666 + newDx/2.0;
-         geoMatrix.setVoxelMatrixMininum(m_minX1, m_minX2, m_minX3);
-
-         //geoMatrix.writeToVTKImageDataASCII(pathname + "/geo/geoMatrix");
-         //return;
-
-         CoordinateTransformation3D trafo(m_minX1, m_minX2, m_minX3, newDx, newDx, newDx);
-
-         ////////////////////////////////////////////////////////////////////////////////
-         double inflowCubeDx = coarseNodeDx;///(double)(1<<inflowCubeLevel);
-         double dpCubes=(double)H/20.0;//100.0; //30zum testen 100real
-         double offsetZgrid=H+0.5*inflowCubeDx;
-         double epschoch1drittel= 0.928318;
-         double abstandIn=2.0*dpCubes;
-         double c1oAbst=1.0/abstandIn;
-         
-         UBLOG(logINFO,"cubes:start");
-         
-         for (int Nflowdir=0;Nflowdir<((nx[0]*blocknx[0]*c1oAbst)*coarseNodeDx); Nflowdir++)
-         {
-            // for (int Nhorizon=((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5-2; Nhorizon<((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5-1-1; Nhorizon++)
-            // {
-            //  for (int Nhorizon=0;  Nhorizon<(((nx[2]*blocknx[2]+1)*c1oAbst)*coarseNodeDx)*0.1; Nhorizon++)//Nhorizon<((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5; Nhorizon++)
-            for (int Nhorizon=0;  Nhorizon<(((nx[2]*blocknx[2]+1)*c1oAbst)*coarseNodeDx)*0.5-1; Nhorizon++)//Nhorizon<((nx[2]*blocknx[2]*c1oAbst)*coarseNodeDx)*0.5; Nhorizon++)
-
-            {
-               for (int Nspanw=0; Nspanw<((nx[1]*blocknx[1]*c1oAbst)*coarseNodeDx); Nspanw++)
-               {
-                  // stringstream ss;
-                  //     ss<<"cubeH"<<Nflowdir<<"x"<<Nhorizon<<"x"<<Nspanw;
-                  ////     //   //geoOrigin ist Mitte, nicht vordere Ecke -> korrigieren
-                  // int Nflowdir=1;
-                  //int Nhorizon=0;
-                  //int Nspanw=1;
-                  double xminCubes1=originX1+(Nflowdir*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1);
-                  double xmaxCubes1=originX1+(Nflowdir*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1);
-                  double xminCubes=std::max(xminCubes1,2.0*coarseNodeDx/pow(2.0,refineLevel));
-                  double xmaxCubes=std::min(xmaxCubes1,originX1+geoLength[0]-coarseNodeDx/pow(2.0,refineLevel));
-                  double yminCubes=std::max(originX2+(Nspanw*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1),2.0*coarseNodeDx/pow(2.0,refineLevel));
-                  double ymaxCubes=std::min(originX2+(Nspanw*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx+3.0*coarseNodeDx/pow(2.0,refineLevel-1),originX2+geoLength[1]-coarseNodeDx/pow(2.0,refineLevel));
-                  double zminCubes=std::max(originX3+(Nhorizon*abstandIn)+4.0*coarseNodeDx/pow(2.0,refineLevel-1),2.0*coarseNodeDx/pow(2.0,refineLevel));
-                  double zmaxCubes=std::min(originX3+(Nhorizon*abstandIn)+dpCubes+4.0*coarseNodeDx/pow(2.0,refineLevel-1),originX3+geoLength[2]-coarseNodeDx/pow(2.0,refineLevel));
-                  ////     /*GbCuboid3D  *rectTemp = new GbCuboid3D(originX1+(Nflowdir*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx, originX2+(Nspanw*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx, originX3+(Nhorizon*abstandIn)-0.5*dpCubes+0.5*inflowCubeDx, 
-                  ////										 originX1+(Nflowdir*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx, originX2+(Nspanw*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx, originX3+(Nhorizon*abstandIn)+0.5*dpCubes+0.5*inflowCubeDx );
-                  ////*/
-                  ////  
-                  //GbCuboid3DPtr rectTemp(new GbCuboid3D(xminCubes, yminCubes, zminCubes, xmaxCubes, ymaxCubes, zmaxCubes));
-
-                  double x1min = trafo.transformForwardToX1Coordinate( xminCubes, yminCubes, zminCubes );
-                  double x2min = trafo.transformForwardToX2Coordinate( xminCubes, yminCubes, zminCubes );
-                  double x3min = trafo.transformForwardToX3Coordinate( xminCubes, yminCubes, zminCubes );
-
-                  int ix1min, ix2min, ix3min; 
-
-                  if (x1min-(int)x1min>.9999999999) ix1min=(int)x1min+1;else ix1min=(int)x1min; 
-                  if (x2min-(int)x2min>.9999999999) ix2min=(int)x2min+1;else ix2min=(int)x2min; 
-                  if (x3min-(int)x3min>.9999999999) ix3min=(int)x3min+1;else ix3min=(int)x3min; 
-
-                  double x1max = trafo.transformForwardToX1Coordinate( xmaxCubes, ymaxCubes, zmaxCubes );
-                  double x2max = trafo.transformForwardToX2Coordinate( xmaxCubes, ymaxCubes, zmaxCubes );
-                  double x3max = trafo.transformForwardToX3Coordinate( xmaxCubes, ymaxCubes, zmaxCubes );
-
-                  int ix1max, ix2max, ix3max; 
-
-                  if (x1max-(int)x1max>.9999999999) ix1max=(int)x1max+1;else ix1max=(int)x1max; 
-                  if (x2max-(int)x2max>.9999999999) ix2max=(int)x2max+1;else ix2max=(int)x2max; 
-                  if (x3max-(int)x3max>.9999999999) ix3max=(int)x3max+1;else ix3max=(int)x3max; 
-
-                  for (int z = ix3min+1; z <= ix3max; z++)
-                     for (int y = ix2min+1; y <= ix2max; y++)
-                        for (int x = ix1min+1; x <= ix1max; x++)
-                  {
-                     geoMatrix(x,y,z)=GbVoxelMatrix3D::SOLID;
-                  }
-
-
-                  ////
-                  //     ostringstream ostrcubes;
-                  //	 ostrcubes<<pathname <<"/cubeH"<<Nflowdir<<"x"<<Nhorizon<<"x"<<Nspanw;
-                  ////       
-                  ////   
-                  //// // GbSystem3D::writeGeoObject(rectTemp,outpath+cubeschar,WbWriterAvsASCII::getInstance());
-                  ////  GbSystem3D::writeGeoObject(rectTemp,ostrcubes.str(),WbWriterAvsASCII::getInstance()); //??
-                  //        ostrcubes.str("");
-                  //         ostrcubes.clear();
-
-                  ////  boost::shared_ptr<D3Q19AMRInteractor> interactorTemp( new D3Q19AMRInteractor( rectTemp,new D3Q19NoSlipBCAdapter(),AMR3DInteractor::SOLID,ss.str()) );
-                  //  //  interactorService.addInteractor(interactorTemp);
-                  //D3Q27BoundaryConditionAdapterPtr cubeBCAdapter(new D3Q27NoSlipBCAdapter());                   //D3Q27DensityBCAdapter(rhoInit));
-                  //D3Q27InteractorPtr cubeInteractor( new D3Q27Interactor(rectTemp,grid,cubeBCAdapter,Interactor3D::SOLID));
-                  //D3Q27InteractorPtrarray.push_back(cubeInteractor);  
-
-
-               }
-            }}
-         ////////////////
-         //ende cubes
-         //////////
-         UBLOG(logINFO,"cubes:end");
-
-         UBLOG(logINFO,"write geo matrix:start");
-         //geoMatrix.writeToLegacyVTKBinary(pathname + "/geo/geoMatrix");
-         geoMatrix.writeToVTKImageDataASCII(pathname + "/geo/geoMatrix");
-         UBLOG(logINFO,"write geo matrix:end");
-
-         ////////////////////////////////////////////
-      //   //METIS
-      //   MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-      //   grid->accept( metisVisitor );
-
-
-      //   ////////////////////////////////////////////
-      //   /////delete solid blocks
-      //   if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-      //   SolidBlocksHelper sd(grid, comm);
-
-      //   sd.addInteractor(topBCInteractor);
-      //   sd.addInteractor(bottomBCInteractor);
-      //   for(size_t i=0; i<D3Q27InteractorPtrarray.size(); ++i)
-      //   {
-      //      sd.addInteractor(D3Q27InteractorPtrarray[i]);
-      //   }
-      //   sd.deleteSolidBlocks();
-      //   if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	 
-      //   //////////////////////////////////////
-      //   grid->accept( metisVisitor );
-
-      //   sd.setTransBlocks(); 
-
-
-      //   unsigned long nob = grid->getNumberOfBlocks();
-      //   unsigned long nod = nob * blocknx[0]*blocknx[1]*blocknx[2];
-      //   unsigned long nod_real = nob * (blocknx[0]+3)*(blocknx[1]+3)*(blocknx[2]+3);
-
-      //   double needMemAll  = double(nod_real*(27*sizeof(double) + sizeof(int)));
-      //   double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-      //   if(myid == 0)
-      //   {
-      //      UBLOG(logINFO,"Number of blocks = " << nob);
-      //      UBLOG(logINFO,"Number of nodes  = " << nod);
-      //      UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-      //      UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-      //      UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-      //   }
-
-      //   LBMKernel3DPtr kernel;
-      //   kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-
-      //   // LBMKernel3DPtr kernel(new LBMKernelETD3Q27CascadedTI(blocknx[0], blocknx[1], blocknx[2]));
-      //   //LBMKernel3DPtr kernel(new LBMKernelETD3Q27BGK(blocknx[0], blocknx[1], blocknx[2],1));
-      //   BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      //   kernel->setBCProcessor(bcProc);
-      //   //	  //scheint neuerdings fuer absturz zu sorgen:
-      //   mu::Parser fctForcingX1;
-      //   fctForcingX1.SetExpr("Fx1*dx");
-      //   fctForcingX1.DefineConst("Fx1", 0.6*5.0e-6);//9.99685e-7);
-
-      //   kernel->setForcingX1(fctForcingX1);
-      //   kernel->setWithForcing(true); 
-
-      //   SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-
-      //   grid->accept(kernelVisitor);
-
-      //   //////////////////////////////////
-      //   //undef nodes
-      //   if (refineLevel > 0)
-      //   {
-      //      D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-      //      grid->accept(undefNodesVisitor);
-      //   }
-      //   //////////////////////////////////////////
-
-      //   grid->addAndInitInteractor( bottomBCInteractor ); 
-      //   grid->addAndInitInteractor( topBCInteractor );
-      //   for(size_t i=0; i<D3Q27InteractorPtrarray.size(); ++i)
-      //   {
-      //      grid->addAndInitInteractor( D3Q27InteractorPtrarray[i] ); 
-      //      char numstr[21];
-      //      sprintf(numstr, "%f", (double)i);
-      //      std::string pathObstCube = pathname+"/geo/obstBCCuboid"+ numstr;
-      //      if(myid == 0) GbSystem3D::writeGeoObject(D3Q27InteractorPtrarray[i]->getGbObject3D().get(),
-      //         /* rectTemp.get(),*/ pathObstCube, WbWriterVtkXmlASCII::getInstance());
-      //   }
-
-
-      //   UbTimer timer;
-      //   timer.start();
-      //   grid->accept( metisVisitor );
-
-      //   if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-      //   BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-      //   if(myid == 0) ppblocks->update(0);
-      //   if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-
-      //   if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-      //   grid->accept( metisVisitor );
-      //   if(myid == 0) ppblocks->update(1);
-      //   ppblocks.reset();
-      //   if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-      //   //inflow
-      //   double uLB2=uLB;
-      //   double raiseVelSteps = 0;
-      //   vector<D3Q27BCFunction> velcX1BCs,dummy;
-
-      //   mu::Parser inflowProfile;
-      //   inflowProfile.SetExpr("uLB*0.9"); 
-
-      //   inflowProfile.DefineConst("uLB",uLB2);
-      //   velcX1BCs.push_back(D3Q27BCFunction(inflowProfile,raiseVelSteps,D3Q27BCFunction::INFCONST));
-
-
-      //   //set connectors
-      //   D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-      //   D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-      //   grid->accept( setConnsVisitor );
-
-      //   //domain decomposition
-
-      //   //initialization of decompositions
-      //   D3Q27ETInitDistributionsBlockVisitor initVisitor( nueLB,rhoInit);
-      //   initVisitor.setVx1(inflowProfile);
-      //   grid->accept(initVisitor);
-
-      //   //Postrozess
-      //   //LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      //   UbSchedulerPtr geoSch(new UbScheduler(1));
-      //   D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-      //      new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), 
-      //      unitConverter, comm, true));
-
-
-
-      //   grid->doPostProcess(0);
-      //   ppgeo.reset();
-      //   geoSch.reset();
-
-      //   if(myid == 0) UBLOG(logINFO,"Preprozess - end");      
-
-      //}
-
-
-
-      //UbSchedulerPtr visSch(new UbScheduler());
-      ////visSch->addSchedule(100,1,1000);
-      ////visSch->addSchedule(1000,1000,10000);
-      ////visSch->addSchedule(10000,10000,100000);
-      ////visSch->addSchedule(20000,20000,800000);
-      ////visSch->addSchedule(50,350000,350500);
-      ////visSch->addSchedule(50,420000,420500);
-      ////visSch->addSchedule(50000,420500,10000000);
-      //visSch->addSchedule(2250,268250,592250);
-      //UbSchedulerPtr resSch(new UbScheduler());
-      //resSch->addSchedule(20000,20,10000000);
-      //// AverageValuesPostprocessor       Avpp(grid,  pathname + "/steps/stepAV", WbWriterVtkXmlBinary::getInstance(), visSch/*wann wird rausgeschrieben*/,resSch/*wann wird resettet*/,comm);
-      //UbSchedulerPtr resSchRMS(new UbScheduler());
-      //resSchRMS->addSchedule(40000,420000,10000000);
-      //UbSchedulerPtr resSchMeans(new UbScheduler());
-      //resSchMeans->addSchedule(40000,0,10000000);
-      //UbSchedulerPtr stepAvSch(new UbScheduler());
-      //int averageInterval=20;
-      //stepAvSch->addSchedule(averageInterval,0,10000000);
-
-      //double restart=10000; //??????????
-      //AverageValuesPostprocessor       Avpp(grid,  pathname + "/steps/stepAV", WbWriterVtkXmlBinary::getInstance(), stepAvSch/*wann wird gemittelt*/, averageInterval,visSch/*wann wird rausgeschrieben*/,resSchMeans,resSchRMS/*wann wird resettet*/,comm,restart);
-
-
-      //D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), unitConverter, comm);
-
-      //UbSchedulerPtr nupsSch(new UbScheduler(10, 90050, 90080));
-      //NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-
-      //UbSchedulerPtr AdjForcSch(new UbScheduler());
-      //AdjForcSch->addSchedule(100,20,20000000);
-      //D3Q27IntegrateValuesHelperPtr IntValHelp(new D3Q27IntegrateValuesHelper(grid, comm, 
-      //   originX1, originX2, kanalhoeheSI*0.55/*0.501*/, 
-      //   nx[0]*blockLengthx1, nx[1]*blockLengthx2, kanalhoeheSI*0.999));
-
-      //double vxZiel=uLB;
-      ////D3Q27AdjustForcingPostprocessor AdjForcPPPtr(grid, AdjForcSch,IntValHelp, vxZiel*0.6, comm);//da am 11.3.2013 velo um 1/0.6 zu hoch
-      //D3Q27AdjustForcingPostprocessor AdjForcPPPtr(grid, AdjForcSch,IntValHelp, vxZiel, comm);//dies sollte zu Re=5500 fuehren..
-
-      //UbSchedulerPtr visQSch(new UbScheduler());
-      //visQSch->addSchedule(10,90100,90130);
-      //QKritPostprocessor QKritPtr(grid,pathname+"/steps/Qq",WbWriterVtkXmlBinary::getInstance(),visQSch, comm);
-
-      //mu::Parser decrViscFunc;
-      //decrViscFunc.SetExpr("nue0+c0/(t+1)/(t+1)");
-      //decrViscFunc.DefineConst("nue0", nueLB);
-      //decrViscFunc.DefineConst("c0", 0.1);
-      //UbSchedulerPtr DecrViscSch(new UbScheduler());
-      //DecrViscSch->addSchedule(10,10,1000);
-      //DecreaseViscosityPostprocessor decrViscPPPtr(grid, DecrViscSch,&decrViscFunc, comm);
-
-      //cout << "PID = " << myid << " Total Physical Memory (RAM): " << MemoryUtil::getTotalPhysMem()<<endl;
-      //cout << "PID = " << myid << " Physical Memory currently used: " << MemoryUtil::getPhysMemUsed()<<endl;
-      //cout << "PID = " << myid << " Physical Memory currently used by current process: " << MemoryUtil::getPhysMemUsedByMe()<<endl;
-
-      //double endTime = 520000;//20000001;
-      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      //if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      //calculation->calculate();
-      //if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/bananas/CMakeLists.txt b/apps/cpu/bananas/CMakeLists.txt
deleted file mode 100644
index 54ddbbc6cb16197abdc19b7787b21092a4a12593..0000000000000000000000000000000000000000
--- a/apps/cpu/bananas/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(bananas)
-
-INCLUDE(${SOURCE_ROOT}/core/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES core)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(bananas BINARY)
diff --git a/apps/cpu/bananas/bananas.cpp b/apps/cpu/bananas/bananas.cpp
deleted file mode 100644
index 9e6744f42318af1cda99edd8ee2e3fdfcd62578b..0000000000000000000000000000000000000000
--- a/apps/cpu/bananas/bananas.cpp
+++ /dev/null
@@ -1,457 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "numerics/geometry3d/CoordinateTransformation3D.h"
-#include "Grid3D.h"
-#include "GenBlocksGridVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include <numerics/geometry3d/GbSphere3D.h>
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "RefineInterGbObjectsVisitor.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "MPICommunicator.h"
-#include "D3Q27ETBCProcessor.h"
-#include "SimulationParameters.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "D3Q27SetConnectorsBlockVisitor.h"
-#include "NullCommunicator.h"
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "CalculationManager.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27VelocityBCAdapter.h"
-#include "D3Q27DensityBCAdapter.h"
-#include "D3Q27BoundaryConditionAdapter.h"
-#include "StringUtil.hpp"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "D3Q27CompactInterpolationProcessor.h"
-#include "SyncBcBlockVisitor.h"
-#include "numerics/geometry3d/creator/GbTriFaceMesh3DCreator.h"
-#include "numerics/geometry3d/GbTriFaceMesh3D.h"
-#include "D3Q27TriFaceMeshInteractor.h"
-#include "basics/utilities/UbFileOutputASCII.h"
-#include "basics/utilities/UbFileInputASCII.h"
-#include "basics/utilities/UbFileInputBinary.h"
-#include "basics/container/CbArray3D.h"
-#include "numerics/geometry3d/GbVoxelMatrix3D.h"
-
-#define CONVEXHULL
-
-using namespace std;
-
-const int FLUID = 1;
-const int SOLID = 15;
-
-//////////////////////////////////////////////////////////////////////////
-void writeMatrixToVtkImageFile(const std::string& fileName, const CbArray3D <int>& geoMatrix,
-                               double itsDeltaXWorld, double orgX1, double orgX2, double orgX3)
-{
-   UbFileOutputASCII out(fileName);
-
-   int NX1 = (int)geoMatrix.getNX1();	
-   int NX2 = (int)geoMatrix.getNX2();	
-   int NX3 = (int)geoMatrix.getNX3();
-   int nn = NX1*NX2*NX3;
-   out.writeLine("# vtk DataFile Version 3.0");
-   out.writeLine(fileName);
-   out.writeLine("ASCII");
-   out.writeLine("DATASET STRUCTURED_POINTS");
-   out.writeString("DIMENSIONS");
-   out.writeInteger(NX1);
-   out.writeInteger(NX2);
-   out.writeInteger(NX3);
-   out.writeLine();
-   out.writeString("ORIGIN");
-   out.writeDouble(orgX1);
-   out.writeDouble(orgX2);
-   out.writeDouble(orgX3);
-   out.writeLine();
-   out.writeString("SPACING");
-   out.writeDouble(itsDeltaXWorld);
-   out.writeDouble(itsDeltaXWorld);
-   out.writeDouble(itsDeltaXWorld);
-   out.writeLine();
-   out.writeString("POINT_DATA");
-   out.writeInteger(nn);
-   out.writeLine();
-   out.writeLine("SCALARS Geo integer");
-   out.writeLine("LOOKUP_TABLE default");
-
-   for(int k=0 ; k<NX3 ; k++){
-      for(int j=0 ; j<NX2 ; j++){
-         for(int i=0 ; i<NX1 ; i++){
-            out.writeInteger( geoMatrix(i,j,k) );
-         }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void readDimensionsFromFldFile(const std::string& fileName, int& d1, int& d2, int& d3)
-{
-   UbFileInputASCII in(fileName);
-   // read grid nx3
-   int dim   = in.readIntegerAfterString("ndim=");
-
-   if (dim != 3) throw UbException(UB_EXARGS,"readGeoMatrixFromFldFile() - Wrong number of dimensions.");
-
-   d1 = in.readIntegerAfterString("dim1=");
-   d2 = in.readIntegerAfterString("dim2=");
-   d3 = in.readIntegerAfterString("dim3=");
-}
-//////////////////////////////////////////////////////////////////////////
-void readGeoMatrixFromFldFile(const std::string& fileName, GbVoxelMatrix3DPtr geoMatrix)
-{
-   UbFileInputASCII in(fileName);
-   // read grid nx3
-   int dim   = in.readIntegerAfterString("ndim=");
-
-   if (dim != 3) throw UbException(UB_EXARGS,"readGeoMatrixFromFldFile() - Wrong number of dimensions.");
-
-   int sizeX = in.readIntegerAfterString("dim1=");
-   int sizeY = in.readIntegerAfterString("dim2=");
-   int sizeZ = in.readIntegerAfterString("dim3=");
-
-   std::string binFileName = in.readStringAfterString("variable 1 file=");
-
-   //separate name from path
-   std::string path = fileName.substr( 0, fileName.find_last_of('//')+1 );
-
-   binFileName = path.append(binFileName);
-
-   UbFileInputBinary binIn(binFileName);
-
-   for (int i=0; i<2048; i++) 
-   {
-      binIn.readChar();
-   }
-
-   int x, y, z, val;
-
-   for(z=0; z<sizeZ; z++)
-   {
-      for(y=0; y<sizeY; y++)
-      {
-         for(x=0; x<sizeX; x++)
-         {
-            val = binIn.readChar();
-
-            if(x!=0 && x!=sizeX-1 && 
-               y!=0 && y!=sizeY-1 &&
-               z!=0 && z!=sizeZ-1   )
-            {
-               if(val == 0)
-               {
-                   (*geoMatrix)(x,y,z) = GbVoxelMatrix3D::SOLID;
-               }
-            }
-         }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void discretizeGeoObject(GbObject3DPtr geoObject, CbArray3D<int>& geoMatrix, double delta, double orgX1, double orgX2, double orgX3)
-{
-   int nx1 = (int)geoMatrix.getNX1();
-   int nx2 = (int)geoMatrix.getNX2();
-   int nx3 = (int)geoMatrix.getNX3();
-
-   for(int k=0 ; k<nx3 ; k++)
-   {
-      for(int j=0 ; j<nx2 ; j++)
-      {
-         for(int i=0 ; i<nx1 ; i++)
-         {
-            double x = orgX1 + i*delta;
-            double y = orgX2 + j*delta;
-            double z = orgX3 + k*delta;
-            if(geoObject->isPointInGbObject3D(x, y, z)) geoMatrix(i,j,k) = SOLID;
-         }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void writeGbVoxelMatrix3DtoVtuXmlASCII(const std::string& fileName, GbVoxelMatrix3DPtr voxelMatrix, 
-                                       double worldDeltaX1, double worldDeltaX2, double worldDeltaX3,
-                                       int nx1, int nx2, int nx3)
-{
-   std::vector< UbTupleFloat3 > nodes;
-   std::vector<std::string > datanames;
-   std::vector<std::vector<double > > nodedata;
-   
-   datanames.resize(0);
-   datanames.push_back("Solid");
-   nodes.resize(0);
-   nodedata.resize(datanames.size());
-
-   double orgX1 = voxelMatrix->getX1Minimum();
-   double orgX2 = voxelMatrix->getX2Minimum();
-   double orgX3 = voxelMatrix->getX3Minimum();
-
-   int index = 0;
-   double x1KO,x2KO,x3KO;
-   
-      for (int x3=0; x3<nx3;x3++){
-         for (int x2=0; x2<nx2;x2++){
-            for(int x1=0; x1<nx1;x1++)
-            {
-                  x1KO = orgX1 + worldDeltaX1*(double)x1;
-                  x2KO = orgX2 + worldDeltaX2*(double)x2;
-                  x3KO = orgX3 + worldDeltaX3*(double)x3;
-                  nodes.push_back( makeUbTuple(float(x1KO), float(x2KO), float(x3KO)) );
-                  nodedata[0].push_back((*voxelMatrix)(x1,x2,x3));
-            }
-         }
-      }
-   WbWriterVtkXmlASCII::getInstance()->writeNodesWithNodeData(fileName, nodes,  datanames, nodedata); 
-}
-//////////////////////////////////////////////////////////////////////////
-void writeGbVoxelMatrix3DtoLegacyVTK(const std::string& fileName, GbVoxelMatrix3DPtr voxelMatrix,
-                                       double worldDeltaX1, double worldDeltaX2, double worldDeltaX3,
-                                       int nx1, int nx2, int nx3)
-{
-   UbFileOutputASCII out(fileName);
-
-   int nn = nx1*nx2*nx3;
-   out.writeLine("# vtk DataFile Version 3.0");
-   out.writeLine(fileName);
-   out.writeLine("ASCII");
-   out.writeLine("DATASET STRUCTURED_POINTS");
-   out.writeString("DIMENSIONS");
-   out.writeInteger(nx1);
-   out.writeInteger(nx2);
-   out.writeInteger(nx3);
-   out.writeLine();
-   out.writeString("ORIGIN");
-   out.writeDouble(voxelMatrix->getX1Minimum());
-   out.writeDouble(voxelMatrix->getX2Minimum());
-   out.writeDouble(voxelMatrix->getX3Minimum());
-   out.writeLine();
-   out.writeString("SPACING");
-   out.writeDouble(worldDeltaX1);
-   out.writeDouble(worldDeltaX2);
-   out.writeDouble(worldDeltaX3);
-   out.writeLine();
-   out.writeString("POINT_DATA");
-   out.writeInteger(nn);
-   out.writeLine();
-   out.writeLine("SCALARS Geo integer");
-   out.writeLine("LOOKUP_TABLE default");
-
-   for(int k=0 ; k<nx3 ; k++){
-      for(int j=0 ; j<nx2 ; j++){
-         for(int i=0 ; i<nx1 ; i++){
-            out.writeInteger( (int)(*voxelMatrix)(i,j,k) );
-         }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void run(const char *cstr)
-{
-   try
-   {
-      //string pathname = "c:/temp/bananas/out";
-      //string pathnameGeo = "c:/temp/bananas/geo";
-
-      std::string opt;
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-      else
-      {
-         UBLOG(logINFO,"no option: x, y or z");
-         return;
-      }
-      
-      string pathnameGeo = "/home/koskuche/data/bananas";
-      string pathname;
-
-      if(opt == "z") pathname = "/work/koskuche/scratch/bananas/setupZ/out";
-
-      if(opt == "x") pathname = "/work/koskuche/scratch/bananas/setupX/out";
-
-      if(opt == "y") pathname = "/work/koskuche/scratch/bananas/setupY/out";
-
-      CommunicatorPtr comm(new MPICommunicator());
-     
-      //////////////////////////////////////////////////////////////////////////
-      // Geometries
-      //////////////////////////////////////////////////////////////////////////
-      //bananas box geometry
-      UBLOG(logINFO,"Start read bananas box geometry");
-      GbTriFaceMesh3DPtr bananaBox (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathnameGeo+"/Banana_boxD.stl","banana_box"));
-      UBLOG(logINFO,"Stop read bananas box geometry");
-      bananaBox->rotate(90.0, 0.0, 0.0); //around Z
-
-      double b_minX1 = bananaBox->getX1Minimum();
-      double b_minX2 = bananaBox->getX2Minimum();
-      double b_minX3 = bananaBox->getX3Minimum();
-
-      double b_maxX1 = bananaBox->getX1Maximum();
-      double b_maxX2 = bananaBox->getX2Maximum();
-      double b_maxX3 = bananaBox->getX3Maximum();
-
-      if(opt == "x") bananaBox->rotate(0.0, 0.0, -90.0); //around X
-      
-      if(opt == "y") bananaBox->rotate(0.0, -90.0, 0.0); //around Y
-
-      UBLOG(logINFO,"Start write bananas box geometry");
-      GbSystem3D::writeGeoObject(bananaBox.get(), pathname+"/banana_box", WbWriterVtkXmlASCII::getInstance());
-      UBLOG(logINFO,"Stop write bananas box geometry");
-
-      //distances for bounding box
-      double dist_z = 0.12;
-      double dist_x = 0.26;
-      double dist_y = 0.195;
-
-      double g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3;
-
-      //bounding box of simulation
-      //setup1 - z
-      if(opt == "z")
-      {
-         g_minX1 = bananaBox->getX1Minimum();
-         g_minX2 = bananaBox->getX2Minimum();
-         g_minX3 = bananaBox->getX3Minimum()-dist_z;
-
-         g_maxX1 = bananaBox->getX1Maximum();
-         g_maxX2 = bananaBox->getX2Maximum();
-         g_maxX3 = bananaBox->getX3Maximum()+dist_z*2.0;
-      }
-
-      //setup2 - x
-      if(opt == "x")
-      {
-         g_minX1 = bananaBox->getX1Minimum();
-         g_minX2 = bananaBox->getX2Minimum();
-         g_minX3 = bananaBox->getX3Minimum()-dist_x;
-
-         g_maxX1 = bananaBox->getX1Maximum();
-         g_maxX2 = bananaBox->getX2Maximum();
-         g_maxX3 = bananaBox->getX3Maximum()+dist_x*2.0;
-      }
-
-      //setup3 - y
-      if(opt == "y")
-      {
-         g_minX1 = bananaBox->getX1Minimum();
-         g_minX2 = bananaBox->getX2Minimum();
-         g_minX3 = bananaBox->getX3Minimum()-dist_y;
-
-         g_maxX1 = bananaBox->getX1Maximum();
-         g_maxX2 = bananaBox->getX2Maximum();
-         g_maxX3 = bananaBox->getX3Maximum()+dist_y*2.0;
-      }
-
-      const double gridOriginX1 = g_minX1;
-      const double gridOriginX2 = g_minX2;
-      const double gridOriginX3 = g_minX3;
-
-      //int gridNX1 = 170;
-      //int gridNX2 = 226;
-      //int gridNX3 = 104;
-
-      const double dx = 2.20183486239e-3; //blockLentghX1/static_cast<double>(blocknx1);
-
-      UBLOG(logINFO,"DeltaX = " << dx);
-
-      CbArray3D<int> grid(int((g_maxX1-g_minX1)/dx)+1, int((g_maxX2-g_minX2)/dx)+1, int((g_maxX3-g_minX3)/dx)+1, FLUID);
-
-      UBLOG(logINFO,"Start write geo matrix empty");
-      writeMatrixToVtkImageFile(pathname + "/geo_matrix_empty.vtk", grid, dx, gridOriginX1, gridOriginX2, gridOriginX3);
-      UBLOG(logINFO,"Stop write geo matrix empty");
-
-#ifdef BANANAS
-      //reed bananas
-      UBLOG(logINFO,"Start read bananas geometry");
-      int d1, d2, d3;
-      readDimensionsFromFldFile(pathnameGeo + "/BANANA_8binn_Binear_A.fld", d1, d2, d3);
-      UBLOG(logINFO,"Dimensions of bananas geometry: " << d1 << ", " << d2 << ", " << d3);
-      GbVoxelMatrix3DPtr bananas(new GbVoxelMatrix3D(d1, d2, d3, float(GbVoxelMatrix3D::FLUID))); 
-      readGeoMatrixFromFldFile(pathnameGeo + "/BANANA_8binn_Binear_A.fld", bananas);
-      UBLOG(logINFO,"Stop read bananas geometry");
-      double bananasDx1 = (b_maxX1 - b_minX1) / float(d1);
-      double bananasDx2 = (b_maxX2 - b_minX2) / float(d2);
-      double bananasDx3 = (b_maxX3 - b_minX3) / float(d3);
-      bananas->setVoxelMatrixDelta(float(bananasDx1), float(bananasDx2), float(bananasDx3));
-      bananas->setCenterCoordinates(bananaBox->getX1Centroid(), bananaBox->getX2Centroid(), bananaBox->getX3Centroid());
-      bananas->setVoxelMatrixMininum(float(b_minX1), float(b_minX2), float(b_minX3));
-
-      bananas->rotate90aroundX();
-      bananas->rotate90aroundY();
-      //bananas->rotate90aroundX();
-
-      UBLOG(logINFO,"Start write bananas geometry");
-      bananas->writeToLegacyVTK(pathname + "/bananas.vtk");
-      UBLOG(logINFO,"Stop write bananas geometry");
-#endif
-
-#ifdef CONVEXHULL
-      UBLOG(logINFO,"Start read bananas box geometry");
-      GbTriFaceMesh3DPtr bananaHull (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathnameGeo+"/convexhullASCII.stl","banana_hull"));
-      UBLOG(logINFO,"Stop read bananas box geometry");
-      bananaHull->translate(0.0, 0.0, 5.0*dx);
-      if(opt == "x") bananaHull->rotateAroundPoint(bananaBox->getX1Centroid(), bananaBox->getX2Centroid(), bananaBox->getX3Centroid(), 0.0, 0.0, -90.0); //around X
-      if(opt == "y") bananaHull->rotateAroundPoint(bananaBox->getX1Centroid(), bananaBox->getX2Centroid(), bananaBox->getX3Centroid(), 0.0, -90.0, 0.0); //around Y
-      UBLOG(logINFO,"Start write banana hull geometry");
-      GbSystem3D::writeGeoObject(bananaHull.get(), pathname+"/banana_hull", WbWriterVtkXmlASCII::getInstance());
-      UBLOG(logINFO,"Stop write banana hull geometry");
-#endif
-      ////////////////////////////////////////
-      //return;
-      /////////////////////////////////////////
-
-      UBLOG(logINFO,"Start discretization of banana box");
-      discretizeGeoObject(bananaBox, grid, dx, gridOriginX1, gridOriginX2, gridOriginX3);
-      UBLOG(logINFO,"Stop discretization of banana box");
-
-#ifdef BANANAS
-      UBLOG(logINFO,"Start discretization of bananas");
-      discretizeGeoObject(bananas, grid, dx, gridOriginX1, gridOriginX2, gridOriginX3);
-      UBLOG(logINFO,"Stop discretization of bananas");
-#endif
-
-#ifdef CONVEXHULL
-      UBLOG(logINFO,"Start discretization of banana hull");
-      discretizeGeoObject(bananaHull, grid, dx, gridOriginX1, gridOriginX2, gridOriginX3);
-      UBLOG(logINFO,"Stop discretization of banana hull");
-#endif
-
-      UBLOG(logINFO,"Start write geo matrix");
-      writeMatrixToVtkImageFile(pathname + "/geo_matrix.vtk", grid, dx, gridOriginX1, gridOriginX2, gridOriginX3);
-      UBLOG(logINFO,"Stop write geo matrix");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/bananas2/CMakeLists.txt b/apps/cpu/bananas2/CMakeLists.txt
deleted file mode 100644
index c2c655e8053b47e1537a70bd50b27b49d540ba8e..0000000000000000000000000000000000000000
--- a/apps/cpu/bananas2/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(bananas2)
-
-INCLUDE(${SOURCE_ROOT}/core/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES core)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(bananas2 BINARY)
diff --git a/apps/cpu/bananas2/bananas2.cpp b/apps/cpu/bananas2/bananas2.cpp
deleted file mode 100644
index 01a969315c78d2da7418565761f71fe5c75311a3..0000000000000000000000000000000000000000
--- a/apps/cpu/bananas2/bananas2.cpp
+++ /dev/null
@@ -1,633 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "numerics/geometry3d/CoordinateTransformation3D.h"
-#include "Grid3D.h"
-#include "GenBlocksGridVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include <numerics/geometry3d/GbSphere3D.h>
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "RefineInterGbObjectsVisitor.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "MPICommunicator.h"
-#include "D3Q27ETBCProcessor.h"
-#include "SimulationParameters.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "D3Q27SetConnectorsBlockVisitor.h"
-#include "NullCommunicator.h"
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "CalculationManager.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27VelocityBCAdapter.h"
-#include "D3Q27DensityBCAdapter.h"
-#include "D3Q27BoundaryConditionAdapter.h"
-#include "StringUtil.hpp"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "D3Q27CompactInterpolationProcessor.h"
-#include "SyncBcBlockVisitor.h"
-#include "numerics/geometry3d/creator/GbTriFaceMesh3DCreator.h"
-#include "numerics/geometry3d/GbTriFaceMesh3D.h"
-#include "D3Q27TriFaceMeshInteractor.h"
-#include "basics/utilities/UbFileOutputASCII.h"
-#include "basics/utilities/UbFileInputASCII.h"
-#include "basics/utilities/UbFileInputBinary.h"
-#include "basics/container/CbArray3D.h"
-#include "numerics/geometry3d/GbVoxelMatrix3D.h"
-
-
-/* 
- *  The first 3 bits contain node type (fluid, inlet, etc.).
- *  The remaining 5 bits contain the unique geometry number 
- *  in case of solid nodes.
- *
- *  0 0 0 0 0 | 0 0 0
- */
-#define getGeoType(geo) (geo & 0x7) /*= 00000111*/
-#define getNormal(geo) (geo >> 3)
-#define setGeoType(dest, geo_type) dest = (dest & 0xF8) + geo_type
-#define setGeoNormal(dest, geo_id) dest = (geo_id << 3) + getGeoType(dest)
-
-#define GEO_INVALID 0
-#define GEO_FLUID 1
-#define GEO_INLET 2
-#define GEO_HULL 3           //hull
-#define GEO_FLUID_IN_HULL 4  //fluid inside hull
-#define GEO_BANANAS 5        //bananas    
-#define GEO_BOX 6            //box
-
-#define NORMAL_POS_X1 1
-#define NORMAL_NEG_X1 2
-
-#define NORMAL_POS_X2 3
-#define NORMAL_NEG_X2 4
-
-#define NORMAL_POS_X3 5
-#define NORMAL_NEG_X3 6
-
-#define CONVEXHULL
-
-using namespace std;
-
-typedef CbArray3D<int> VoxelMatrix;
-
-//index             0   1   2   3   4   5  6   7   8    9  10  11  12  13  14  15  16  17  18
-//f:                E,  W,  N,  S,  T,  B, NE, SW, SE, NW, TE, BW, BE, TW, TN, BS, BN, TS, ZERO
-const int EX1[] = { 1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,  0 };
-const int EX2[] = { 0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,  0 };
-const int EX3[] = { 0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,  1,  0 };
-
-//////////////////////////////////////////////////////////////////////////
-void writeMatrixToVtkImageFile(const std::string& fileName, const VoxelMatrix& geoMatrix,
-                               double itsDeltaXWorld, double orgX1, double orgX2, double orgX3)
-{
-   UbFileOutputASCII out(fileName);
-
-   int NX1 = (int)geoMatrix.getNX1();	
-   int NX2 = (int)geoMatrix.getNX2();	
-   int NX3 = (int)geoMatrix.getNX3();
-   int nn = NX1*NX2*NX3;
-   out.writeLine("# vtk DataFile Version 3.0");
-   out.writeLine(fileName);
-   out.writeLine("ASCII");
-   out.writeLine("DATASET STRUCTURED_POINTS");
-   out.writeString("DIMENSIONS");
-   out.writeInteger(NX1);
-   out.writeInteger(NX2);
-   out.writeInteger(NX3);
-   out.writeLine();
-   out.writeString("ORIGIN");
-   out.writeDouble(orgX1);
-   out.writeDouble(orgX2);
-   out.writeDouble(orgX3);
-   out.writeLine();
-   out.writeString("SPACING");
-   out.writeDouble(itsDeltaXWorld);
-   out.writeDouble(itsDeltaXWorld);
-   out.writeDouble(itsDeltaXWorld);
-   out.writeLine();
-   out.writeString("POINT_DATA");
-   out.writeInteger(nn);
-   out.writeLine();
-   out.writeLine("SCALARS Geo integer");
-   out.writeLine("LOOKUP_TABLE default");
-
-   for(int k=0 ; k<NX3 ; k++){
-      for(int j=0 ; j<NX2 ; j++){
-         for(int i=0 ; i<NX1 ; i++){
-            out.writeInteger( geoMatrix(i,j,k) );
-         }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void readDimensionsFromFldFile(const std::string& fileName, int& d1, int& d2, int& d3)
-{
-   UbFileInputASCII in(fileName);
-   // read grid nx3
-   int dim   = in.readIntegerAfterString("ndim=");
-
-   if (dim != 3) throw UbException(UB_EXARGS,"readGeoMatrixFromFldFile() - Wrong number of dimensions.");
-
-   d1 = in.readIntegerAfterString("dim1=");
-   d2 = in.readIntegerAfterString("dim2=");
-   d3 = in.readIntegerAfterString("dim3=");
-}
-//////////////////////////////////////////////////////////////////////////
-void readGeoMatrixFromFldFile(const std::string& fileName, GbVoxelMatrix3DPtr geoMatrix)
-{
-   UbFileInputASCII in(fileName);
-   // read grid nx3
-   int dim   = in.readIntegerAfterString("ndim=");
-
-   if (dim != 3) throw UbException(UB_EXARGS,"readGeoMatrixFromFldFile() - Wrong number of dimensions.");
-
-   int sizeX = in.readIntegerAfterString("dim1=");
-   int sizeY = in.readIntegerAfterString("dim2=");
-   int sizeZ = in.readIntegerAfterString("dim3=");
-
-   std::string binFileName = in.readStringAfterString("variable 1 file=");
-
-   //separate name from path
-   std::string path = fileName.substr( 0, fileName.find_last_of('//')+1 );
-
-   binFileName = path.append(binFileName);
-
-   UbFileInputBinary binIn(binFileName);
-
-   for (int i=0; i<2048; i++) 
-   {
-      binIn.readChar();
-   }
-
-   int x, y, z, val;
-
-   for(z=0; z<sizeZ; z++)
-   {
-      for(y=0; y<sizeY; y++)
-      {
-         for(x=0; x<sizeX; x++)
-         {
-            val = binIn.readChar();
-
-            if(x!=0 && x!=sizeX-1 && 
-               y!=0 && y!=sizeY-1 &&
-               z!=0 && z!=sizeZ-1   )
-            {
-               if(val == 0)
-               {
-                   (*geoMatrix)(x,y,z) = GbVoxelMatrix3D::SOLID;
-               }
-            }
-         }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void discretizeGeoObject(GbObject3DPtr geoObject, VoxelMatrix& geoMatrix, double delta, 
-                         double orgX1, double orgX2, double orgX3, 
-                         int inValue, int outValue, bool bothSides,
-                         bool overwriteIn, bool overwriteOut,
-                         int noInValue, int noOutValue)
-{
-   int nx1 = (int)geoMatrix.getNX1();
-   int nx2 = (int)geoMatrix.getNX2();
-   int nx3 = (int)geoMatrix.getNX3();
-
-   for(int k=0 ; k<nx3 ; k++)
-   {
-      for(int j=0 ; j<nx2 ; j++)
-      {
-         for(int i=0 ; i<nx1 ; i++)
-         {
-            double x = orgX1 + i*delta;
-            double y = orgX2 + j*delta;
-            double z = orgX3 + k*delta;
-
-            int temp = 0;
-            int gm = geoMatrix(i,j,k);
-
-            if(geoObject->isPointInGbObject3D(x, y, z))  
-            {
-               setGeoType(temp, inValue);
-               if (overwriteIn)
-               {
-                  geoMatrix(i,j,k) = temp;
-               }
-               else
-               {
-                  if(gm != noInValue) 
-                  {
-                     geoMatrix(i,j,k) = temp;
-                  }
-               }
-            }
-            else if(bothSides)
-            {
-               setGeoType(temp, outValue);
-               if (overwriteOut)
-               {
-                  geoMatrix(i,j,k) = temp;
-               }
-               else
-               {
-                  if(gm != noOutValue) 
-                  {
-                     geoMatrix(i,j,k) = temp;
-                  }
-               }
-            }
-         }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-bool hasNeighbor(VoxelMatrix& geoMatrix, int x1, int x2, int x3)
-{
-   bool result = false;
-   for( int dir = 0; dir < 18; dir++)
-   {
-      int temp = geoMatrix(x1+EX1[dir], x2+EX2[dir], x3+EX3[dir]);
-      if(temp == GEO_BANANAS || temp == GEO_FLUID_IN_HULL)
-      {
-         result = true;
-         break;
-      }
-   }
-   return result;
-}
-//////////////////////////////////////////////////////////////////////////
-void createHull(VoxelMatrix& geoMatrix)
-{
-   int nx1 = (int)geoMatrix.getNX1();
-   int nx2 = (int)geoMatrix.getNX2();
-   int nx3 = (int)geoMatrix.getNX3();
-
-   for(int k=1 ; k<nx3-1 ; k++)
-   {
-      for(int j=1 ; j<nx2-1 ; j++)
-      {
-         for(int i=1 ; i<nx1-1 ; i++)
-         {
-            int val = geoMatrix(i,j,k);
-            if(val == GEO_FLUID)
-            {
-               if(hasNeighbor(geoMatrix, i, j, k))
-               {
-                  int temp = 0;
-                  setGeoType(temp, GEO_HULL);
-                  geoMatrix(i,j,k) = temp;
-               }
-            }
-         }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void writeGbVoxelMatrix3DtoVtuXmlASCII(const std::string& fileName, GbVoxelMatrix3DPtr voxelMatrix, 
-                                       double worldDeltaX1, double worldDeltaX2, double worldDeltaX3,
-                                       int nx1, int nx2, int nx3)
-{
-   std::vector< UbTupleFloat3 > nodes;
-   std::vector<std::string > datanames;
-   std::vector<std::vector<double > > nodedata;
-   
-   datanames.resize(0);
-   datanames.push_back("Solid");
-   nodes.resize(0);
-   nodedata.resize(datanames.size());
-
-   double orgX1 = voxelMatrix->getX1Minimum();
-   double orgX2 = voxelMatrix->getX2Minimum();
-   double orgX3 = voxelMatrix->getX3Minimum();
-
-   int index = 0;
-   double x1KO,x2KO,x3KO;
-   
-      for (int x3=0; x3<nx3;x3++){
-         for (int x2=0; x2<nx2;x2++){
-            for(int x1=0; x1<nx1;x1++)
-            {
-                  x1KO = orgX1 + worldDeltaX1*(double)x1;
-                  x2KO = orgX2 + worldDeltaX2*(double)x2;
-                  x3KO = orgX3 + worldDeltaX3*(double)x3;
-                  nodes.push_back( makeUbTuple(float(x1KO), float(x2KO), float(x3KO)) );
-                  nodedata[0].push_back((*voxelMatrix)(x1,x2,x3));
-            }
-         }
-      }
-   WbWriterVtkXmlASCII::getInstance()->writeNodesWithNodeData(fileName, nodes,  datanames, nodedata); 
-}
-//////////////////////////////////////////////////////////////////////////
-void writeGbVoxelMatrix3DtoLegacyVTK(const std::string& fileName, GbVoxelMatrix3DPtr voxelMatrix,
-                                       double worldDeltaX1, double worldDeltaX2, double worldDeltaX3,
-                                       int nx1, int nx2, int nx3)
-{
-   UbFileOutputASCII out(fileName);
-
-   int nn = nx1*nx2*nx3;
-   out.writeLine("# vtk DataFile Version 3.0");
-   out.writeLine(fileName);
-   out.writeLine("ASCII");
-   out.writeLine("DATASET STRUCTURED_POINTS");
-   out.writeString("DIMENSIONS");
-   out.writeInteger(nx1);
-   out.writeInteger(nx2);
-   out.writeInteger(nx3);
-   out.writeLine();
-   out.writeString("ORIGIN");
-   out.writeDouble(voxelMatrix->getX1Minimum());
-   out.writeDouble(voxelMatrix->getX2Minimum());
-   out.writeDouble(voxelMatrix->getX3Minimum());
-   out.writeLine();
-   out.writeString("SPACING");
-   out.writeDouble(worldDeltaX1);
-   out.writeDouble(worldDeltaX2);
-   out.writeDouble(worldDeltaX3);
-   out.writeLine();
-   out.writeString("POINT_DATA");
-   out.writeInteger(nn);
-   out.writeLine();
-   out.writeLine("SCALARS Geo integer");
-   out.writeLine("LOOKUP_TABLE default");
-
-   for(int k=0 ; k<nx3 ; k++){
-      for(int j=0 ; j<nx2 ; j++){
-         for(int i=0 ; i<nx1 ; i++){
-            out.writeInteger( (int)(*voxelMatrix)(i,j,k) );
-         }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void setNormalsOnBoundary(int minX1, int minX2, int minX3, int maxX1, int maxX2, int maxX3, VoxelMatrix& matrix, int dir)
-{
-   for (int ix3 = minX3; ix3 <= maxX3; ix3++)
-      for (int ix2 = minX2; ix2 <= maxX2; ix2++)
-         for (int ix1 = minX1; ix1 <= maxX1; ix1++)
-         {
-
-            int temp = 0;
-            temp = getGeoType(matrix(ix1, ix2, ix3));
-            setGeoNormal(temp, dir);
-            matrix(ix1, ix2, ix3) = temp;
-         }
-}
-//////////////////////////////////////////////////////////////////////////
-void run(const char *cstr)
-{
-   try
-   {
-      std::string opt;
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-      else
-      {
-         UBLOG(logINFO,"no option: x, y or z");
-         return;
-      }
-
-      string pathnameGeo = "/home/koskuche/data/bananas";
-      string pathname;
-
-      if(opt == "z") pathname = "/work/koskuche/scratch/bananas2/setupZ";
-
-      if(opt == "x") pathname = "/work/koskuche/scratch/bananas2/setupX";
-
-      if(opt == "y") pathname = "/work/koskuche/scratch/bananas2/setupY";
-
-      CommunicatorPtr comm(new MPICommunicator());
-     
-      //////////////////////////////////////////////////////////////////////////
-      // Geometries
-      //////////////////////////////////////////////////////////////////////////
-      //bananas box geometry
-      UBLOG(logINFO,"Start read bananas box geometry");
-      GbTriFaceMesh3DPtr bananaBox (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathnameGeo+"/Banana_boxD.stl","banana_box"));
-      UBLOG(logINFO,"Stop read bananas box geometry");
-      bananaBox->rotate(90.0, 0.0, 0.0); //around Z
-
-      double b_minX1 = bananaBox->getX1Minimum();
-      double b_minX2 = bananaBox->getX2Minimum();
-      double b_minX3 = bananaBox->getX3Minimum();
-
-      double b_maxX1 = bananaBox->getX1Maximum();
-      double b_maxX2 = bananaBox->getX2Maximum();
-      double b_maxX3 = bananaBox->getX3Maximum();
-
-      if(opt == "x") bananaBox->rotate(0.0, 0.0, -90.0); //around X
-
-      if(opt == "y") bananaBox->rotate(0.0, -90.0, 0.0); //around Y
-
-      //after rotation for setup 2-3
-      double bb_minX1 = bananaBox->getX1Minimum();
-      double bb_minX2 = bananaBox->getX2Minimum();
-      double bb_minX3 = bananaBox->getX3Minimum();
-
-      double bb_maxX1 = bananaBox->getX1Maximum();
-      double bb_maxX2 = bananaBox->getX2Maximum();
-      double bb_maxX3 = bananaBox->getX3Maximum();
-
-      UBLOG(logINFO,"Start write bananas box geometry");
-      GbSystem3D::writeGeoObject(bananaBox.get(), pathname+"/banana_box", WbWriterVtkXmlASCII::getInstance());
-      UBLOG(logINFO,"Stop write bananas box geometry");
-
-      //distances for bounding box
-      double dist_z = 0.022;
-      double site   = 0.011;
-
-      //bounding box of simulation
-      double g_minX1 = bananaBox->getX1Minimum()-site;
-      double g_minX2 = bananaBox->getX2Minimum()-site;
-      double g_minX3 = bananaBox->getX3Minimum()-dist_z*2.0;
-
-      double g_maxX1 = bananaBox->getX1Maximum()+site;
-      double g_maxX2 = bananaBox->getX2Maximum()+site;
-      double g_maxX3 = bananaBox->getX3Maximum()+dist_z*2.0;
-
-      const double gridOriginX1 = g_minX1;
-      const double gridOriginX2 = g_minX2;
-      const double gridOriginX3 = g_minX3;
-
-      const double dx = 2.20183486239e-3;
-      UBLOG(logINFO,"DeltaX = " << dx);
-
-      GbCuboid3DPtr addWall1 (new GbCuboid3D(g_minX1, g_minX2, bb_minX3, bb_minX1, g_maxX2, bb_minX3+2*dx));
-      GbSystem3D::writeGeoObject(addWall1.get(), pathname+"/addWall1", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWall2 (new GbCuboid3D(bb_maxX1, g_minX2, bb_minX3, g_maxX1, g_maxX2, bb_minX3+2*dx));
-      GbSystem3D::writeGeoObject(addWall2.get(), pathname+"/addWall2", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWall3 (new GbCuboid3D(g_minX1, g_minX2, bb_minX3, g_maxX1, bb_minX2, bb_minX3+2*dx));
-      GbSystem3D::writeGeoObject(addWall3.get(), pathname+"/addWall3", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWall4 (new GbCuboid3D(g_minX1, bb_maxX2, bb_minX3, g_maxX1, g_maxX2, bb_minX3+2*dx));
-      GbSystem3D::writeGeoObject(addWall4.get(), pathname+"/addWall4", WbWriterVtkXmlASCII::getInstance());
-
-      VoxelMatrix grid(int((g_maxX1-g_minX1)/dx)+1, int((g_maxX2-g_minX2)/dx)+1, int((g_maxX3-g_minX3)/dx)+1, GEO_FLUID);
-
-      UBLOG(logINFO,"Start write geo matrix empty");
-      writeMatrixToVtkImageFile(pathname + "/geo_matrix_empty.vtk", grid, dx, gridOriginX1, gridOriginX2, gridOriginX3);
-      UBLOG(logINFO,"Stop write geo matrix empty");
-
-#ifdef CONVEXHULL
-      UBLOG(logINFO,"Start read bananas box geometry");
-      GbTriFaceMesh3DPtr bananasHull (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathnameGeo+"/convexhullASCII.stl","banana_hull"));
-      UBLOG(logINFO,"Stop read bananas box geometry");
-      double tr1 = bananasHull->getX3Minimum() - bananaBox->getX3Minimum();
-      bananasHull->translate(0.0, 0.0, 5.0*dx);
-#endif
-
-      //reed bananas
-      UBLOG(logINFO,"Start read bananas geometry");
-      int d1, d2, d3;
-      readDimensionsFromFldFile(pathnameGeo + "/BANANA_8binn_Binear_A.fld", d1, d2, d3);
-      UBLOG(logINFO,"Dimensions of bananas geometry: " << d1 << ", " << d2 << ", " << d3);
-      GbVoxelMatrix3DPtr bananas(new GbVoxelMatrix3D(d1, d2, d3, float(GbVoxelMatrix3D::FLUID))); 
-      readGeoMatrixFromFldFile(pathnameGeo + "/BANANA_8binn_Binear_A.fld", bananas);
-      UBLOG(logINFO,"Stop read bananas geometry");
-      double bananasDx1 = (b_maxX1 - b_minX1) / float(d1);
-      double bananasDx2 = (b_maxX2 - b_minX2) / float(d2);
-      double bananasDx3 = (b_maxX3 - b_minX3) / float(d3);
-      bananas->setVoxelMatrixDelta(float(bananasDx1), float(bananasDx2), float(bananasDx3));
-      bananas->setCenterCoordinates(bananaBox->getX1Centroid(), bananaBox->getX2Centroid(), bananaBox->getX3Centroid());
-      bananas->setVoxelMatrixMininum(float(b_minX1), float(b_minX2), float(b_minX3));
-      
-      bananas->rotate90aroundY();
-      bananas->rotate90aroundY();
-      bananas->rotate90aroundZ();
-      bananas->rotate90aroundZ();
-      
-#ifdef CONVEXHULL
-      std::cout << "translate bananas: " <<bananasHull->getX3Minimum() - bananas->getX3Minimum() - tr1<<"\n";
-      bananas->translate(0.0, 0.0, bananasHull->getX3Minimum() - bananas->getX3Minimum() - tr1);
-      if(opt == "x") bananasHull->rotateAroundPoint(bananaBox->getX1Centroid(), bananaBox->getX2Centroid(), bananaBox->getX3Centroid(), 0.0, 0.0, -90.0); //around X
-      if(opt == "y") bananasHull->rotateAroundPoint(bananaBox->getX1Centroid(), bananaBox->getX2Centroid(), bananaBox->getX3Centroid(), 0.0, -90.0, 0.0); //around Y
-      UBLOG(logINFO,"Start write banana hull geometry");
-      GbSystem3D::writeGeoObject(bananasHull.get(), pathname+"/banana_hull", WbWriterVtkXmlASCII::getInstance());
-      UBLOG(logINFO,"Stop write banana hull geometry");
-#endif
-      
-      if(opt == "x")
-      {
-         bananas->rotate90aroundX(bananaBox->getX1Centroid(), bananaBox->getX2Centroid(), bananaBox->getX3Centroid());
-         bananas->rotate90aroundX(bananaBox->getX1Centroid(), bananaBox->getX2Centroid(), bananaBox->getX3Centroid());
-         bananas->rotate90aroundX(bananaBox->getX1Centroid(), bananaBox->getX2Centroid(), bananaBox->getX3Centroid());
-      }
-      else if(opt == "y")
-      {
-         bananas->rotate90aroundY(bananaBox->getX1Centroid(), bananaBox->getX2Centroid(), bananaBox->getX3Centroid());
-         bananas->rotate90aroundY(bananaBox->getX1Centroid(), bananaBox->getX2Centroid(), bananaBox->getX3Centroid());
-         bananas->rotate90aroundY(bananaBox->getX1Centroid(), bananaBox->getX2Centroid(), bananaBox->getX3Centroid());
-      }
-
-      UBLOG(logINFO,"Start write bananas geometry");
-      bananas->writeToLegacyVTK(pathname + "/bananas.vtk");
-      UBLOG(logINFO,"Stop write bananas geometry");
-
-#ifdef BANANAS
-      UBLOG(logINFO,"Start discretization of banana box");
-      discretizeGeoObject(bananaBox, grid, dx, gridOriginX1, gridOriginX2, gridOriginX3, GEO_BOX);
-      UBLOG(logINFO,"Stop discretization of banana box");
-      UBLOG(logINFO,"Start discretization of bananas");
-      discretizeGeoObject(bananas, grid, dx, gridOriginX1, gridOriginX2, gridOriginX3, GEO_BANANAS);
-      UBLOG(logINFO,"Stop discretization of bananas");
-#endif
-
-#ifdef CONVEXHULL
-      UBLOG(logINFO,"Start discretization of bananas");
-      discretizeGeoObject(bananas, grid, dx, gridOriginX1, gridOriginX2, gridOriginX3, GEO_BANANAS, GEO_FLUID, false, true, true, GEO_INVALID, GEO_INVALID);
-      UBLOG(logINFO,"Stop discretization of bananas");
-      UBLOG(logINFO,"Start discretization of hull");
-      discretizeGeoObject(bananasHull, grid, dx, gridOriginX1, gridOriginX2, gridOriginX3, GEO_FLUID_IN_HULL, GEO_FLUID, true, false, true, GEO_BANANAS, GEO_INVALID);
-      UBLOG(logINFO,"Stop discretization of hull");
-      UBLOG(logINFO,"Start creation of hull film");
-      createHull(grid);
-      UBLOG(logINFO,"Stop creation of hull film");
-      UBLOG(logINFO,"Start discretization of banana box");
-      discretizeGeoObject(bananaBox, grid, dx, gridOriginX1, gridOriginX2, gridOriginX3, GEO_BOX, GEO_FLUID, false, true, true, GEO_INVALID, GEO_INVALID);
-      UBLOG(logINFO,"Stop discretization of banana box");
-#endif
-
-      UBLOG(logINFO,"Start discretization of add walls");
-      discretizeGeoObject(addWall1, grid, dx, gridOriginX1, gridOriginX2, gridOriginX3, GEO_BOX, GEO_FLUID, false, true, true, GEO_INVALID, GEO_INVALID);
-      discretizeGeoObject(addWall2, grid, dx, gridOriginX1, gridOriginX2, gridOriginX3, GEO_BOX, GEO_FLUID, false, true, true, GEO_INVALID, GEO_INVALID);
-      discretizeGeoObject(addWall3, grid, dx, gridOriginX1, gridOriginX2, gridOriginX3, GEO_BOX, GEO_FLUID, false, true, true, GEO_INVALID, GEO_INVALID);
-      discretizeGeoObject(addWall4, grid, dx, gridOriginX1, gridOriginX2, gridOriginX3, GEO_BOX, GEO_FLUID, false, true, true, GEO_INVALID, GEO_INVALID);
-      UBLOG(logINFO,"Stop discretization of add walls");
-
-      UBLOG(logINFO,"Start set normals");
-      int boxNX1 = int(bananaBox->getLengthX1() / dx);
-      int boxNX2 = int(bananaBox->getLengthX2() / dx);
-      int boxNX3 = int(bananaBox->getLengthX3() / dx);
-
-      int minX1 = int((bb_minX1 - gridOriginX1) / dx)+1;
-      int minX2 = int((bb_minX2 - gridOriginX2) / dx)+1;
-      int minX3 = int((bb_minX3 - gridOriginX3) / dx)+1;
-
-      int maxX1 = minX1 + boxNX1;
-      int maxX2 = minX2 + boxNX2;
-      int maxX3 = minX3 + boxNX3;
-
-      UBLOG(logINFO,"minX1="<<minX1<<",minX2= "<<minX2<<",minX3="<<minX3);
-      UBLOG(logINFO,"maxX1="<<maxX1<<",maxX2= "<<maxX2<<",maxX3="<<maxX3);
-
-
-      for (int ix3 = 0; ix3 < grid.getNX3(); ix3++)
-         for (int ix2 = 0; ix2 < grid.getNX2(); ix2++)
-            for (int ix1 = 0; ix1 < grid.getNX1(); ix1++)
-            {
-               int temp = grid(ix1, ix2, ix3);
-               setGeoNormal(temp, 0);
-               grid(ix1, ix2, ix3) = temp;
-            }
-
-
-      setNormalsOnBoundary(minX1, minX2, minX3, minX1, maxX2, maxX3, grid, NORMAL_NEG_X1);
-      setNormalsOnBoundary(maxX1, minX2, minX3, maxX1, maxX2, maxX3, grid, NORMAL_POS_X1);
-      setNormalsOnBoundary(minX1, minX2, minX3, maxX1, minX2, maxX3, grid, NORMAL_NEG_X2);
-      setNormalsOnBoundary(minX1, maxX2, minX3, maxX1, maxX2, maxX3, grid, NORMAL_POS_X2);
-      setNormalsOnBoundary(minX1, minX2, minX3, maxX1, maxX2, minX3, grid, NORMAL_NEG_X3);
-      setNormalsOnBoundary(minX1, minX2, maxX3, maxX1, maxX2, maxX3, grid, NORMAL_POS_X3);
-      UBLOG(logINFO,"Stop set normals");
-
-
-      UBLOG(logINFO,"Start write geo matrix");
-      writeMatrixToVtkImageFile(pathname + "/geo_matrix.vtk", grid, dx, gridOriginX1, gridOriginX2, gridOriginX3);
-      UBLOG(logINFO,"Stop write geo matrix");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/band/CMakeLists.txt b/apps/cpu/band/CMakeLists.txt
deleted file mode 100644
index d8eeb0e810acde26f45352d4e7d8e066a4427de7..0000000000000000000000000000000000000000
--- a/apps/cpu/band/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(band)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(band BINARY)
diff --git a/apps/cpu/band/band.cpp b/apps/cpu/band/band.cpp
deleted file mode 100644
index 4424b62595741c9479cff83eea138a7cbcbbb290..0000000000000000000000000000000000000000
--- a/apps/cpu/band/band.cpp
+++ /dev/null
@@ -1,582 +0,0 @@
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <vfluids.h>
-
-using namespace std;
-
-void run(const char *cstr)
-{
-   try
-   {
-      string pathname; 
-      string pathGeo;
-      string pathLog;
-      int numOfThreads = 1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      //UbLog::reportingLevel() = logDEBUG5;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      string machine = string(cstr);
-
-      if(machine == "my") 
-      {
-         pathname = "d:/temp/band";
-         pathGeo = "d:/Data/plate";
-         pathLog = "d:/temp/band";
-         numOfThreads = 6;
-         logfile = false;
-         availMem = 16.0e9;
-      }
-      else if(machine == "Ludwig")      
-      {
-         pathname = "/work/koskuche/SFB880/band";
-         pathGeo = "/home/koskuche/data/plate";
-         pathLog = "/work/koskuche/SFB880/band";
-         numOfThreads = 1;
-         availMem = 12.0e9;
-         logfile = true;
-      }
-      else if(machine == "Hermit")      
-      {
-         //Hermit
-         pathname = "/univ_1/ws1/ws/xrmkuchr-plate3-0";
-         pathGeo = "/zhome/academic/HLRS/xrm/xrmkuchr/data/plate";
-         pathLog = "/zhome/academic/HLRS/xrm/xrmkuchr/work/plate";
-         numOfThreads = 16;
-         availMem = 2.0e9;
-         logfile = true;
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-#if defined(__unix__)
-      if (myid==0) 
-      {
-         const char* str = pathLog.c_str();
-         int status=mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-      }
-#endif 
-
-      if(myid == 0 && logfile)
-      {
-         logFilename <<  pathLog + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-         UbLog::output_policy::setStream(logFilename.str());
-      }
-
-      if(myid==0) UBLOG(logINFO,"Testcase band");
-
-      //string PlatteFilename = pathGeo + "/Platte4mesh_1.8mmProbendicke22.stl";
-      //string PlatteFilename = pathGeo + "/platte_raw.stl";
-      //string PlatteFilename = pathGeo + "/plate.stl";
-      string PlatteFilename = pathGeo + "/Platte_bearbeitet2.stl";
-
-      string ZckbndFilename = pathGeo + "/2zackenbaender0.stl";
-
-      ///////////////Knotenabmessungen:
-      int nx[3], blocknx[3];
-      nx[0]      = 10;//240;//120;//60;//86;//43;//65;//50;  //länge
-      nx[1]      = 1;//2;//6;///1;//5;// //breite
-      nx[2]      = 2;//64;//32;//18;//5;//15;//15; //höhe gebiet
-      blocknx[0] = 10;//10;//6;
-      blocknx[1] = 10;//10;//6;
-      blocknx[2] = 10;//10;//6;
-
-      int baseLevel   = 0;
-      int refineLevel = 0;
-
-      double H = 0.6; // Kanalhöhe [mm]
-      //double cdx = H/blocknx[2];
-      double cdx = 0.0390625;
-      double fdx = cdx/double(1<<refineLevel);
-
-      //double h = 200.0; // gewünschte Plattenhöhe in Gitterpunkten
-      //double fdx = plate->getLengthX3()/h;
-      //double cdx = fdx*double(1<<refineLevel);
-
-      LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      //////////////////////////////////////////////////////////////////////////
-      //physik
-      //////////////////////////////////////////////////////////////////////////
-      double Re            = 680; 
-      double rhoLB         = 0.0;
-      double uLB           = 0.1; 
-      double lReal         = 0.6; //Zackenhöhe in mm
-      double nuLB          = (uLB*(lReal/cdx))/Re;
-
-      Grid3DPtr grid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(10,10,10000000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname, RestartPostprocessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (grid->getTimeStep() == 0)
-      {
-
-         if(myid==0) UBLOG(logINFO,"Neustart..");
-
-         //////////////////////////////////////////////////////////////////////////
-         //Platte
-         GbTriFaceMesh3DPtr plate (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(PlatteFilename,"Netz"));
-         //plate->rotate(180.0,0.0,0.0);  //TriFacMesh-KO-System anders als LB-KO-System
-         //plate->rotate(90.0,0.0,0.0);  //TriFacMesh-KO-System anders als LB-KO-System
-         if(myid == 0) GbSystem3D::writeGeoObject( plate.get(), pathname+"/geo/platte", WbWriterVtkXmlBinary::getInstance() );
-         //////////////////////////////////////////////////////////////////////////
-         // Zackenband
-         //////////////////////////////////////////////////////////////////////////
-         GbTriFaceMesh3DPtr meshBand1 (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand"));
-         meshBand1->translate(-995, -203, -20.35);
-         //meshBand1->scale(1.0, 1.0, 2.0);
-         meshBand1->rotate(0.0, -0.5, 0.0);
-         if(myid == 0) GbSystem3D::writeGeoObject( meshBand1.get(), pathname+"/geo/Band1", WbWriterVtkXmlASCII::getInstance() );
-         //// Zackenband2
-         //GbTriFaceMesh3DPtr meshBand2(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand2"));
-         //meshBand2->translate(-995, -208, -20.35); 
-         //meshBand2->rotate(0.0, -0.5, 0.0);
-         //if(myid == 0) GbSystem3D::writeGeoObject( meshBand2.get(), pathname+"/geo/Band2", WbWriterVtkXmlASCII::getInstance() );
-
-         //GbTriFaceMesh3DPtr meshBand1 (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand"));
-         //meshBand1->translate(-496, -700, -20.106);
-         //if(myid == 0) GbSystem3D::writeGeoObject( meshBand1.get(), pathname+"/geo/Band1", WbWriterVtkXmlASCII::getInstance() );
-         // Zackenband2
-         //GbTriFaceMesh3DPtr meshBand2(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand2"));
-         //meshBand2->translate(-496, -705, -20.106); 
-         //if(myid == 0) GbSystem3D::writeGeoObject( meshBand2.get(), pathname+"/geo/Band2", WbWriterVtkXmlASCII::getInstance() );
-         // Zackenband3
-         //GbTriFaceMesh3DPtr meshBand3(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand3"));
-         //meshBand3->translate(-496, -700, -19.806); 
-         //if(myid == 0) GbSystem3D::writeGeoObject( meshBand3.get(), pathname+"/geo/Band3", WbWriterVtkXmlASCII::getInstance() );
-         //// Zackenband4
-         //GbTriFaceMesh3DPtr meshBand4(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand4"));
-         //meshBand4->translate(-496, -705, -19.806); 
-         //if(myid == 0) GbSystem3D::writeGeoObject( meshBand4.get(), pathname+"/geo/Band4", WbWriterVtkXmlASCII::getInstance() );
-         //////////////////////////////////////////////////////////////////////////
-
-
-         string pmFilename  = pathGeo + "/CT-2014-039.raw";
-         int pmNX1=1333;  //abmessung einzelbild in x-richtung
-         int pmNX2=463; //abmessung einzelbild in y richtung
-         int pmNX3=1333; //anzahl der bilder
-         float lthreshold = 27686.97;
-         float uthreshold = 65535.0;
-
-         GbVoxelMatrix3DPtr pmMesh(new GbVoxelMatrix3D(pmNX1,pmNX2,pmNX3,0,lthreshold,uthreshold));
-         pmMesh->readMatrixFromRawFile<unsigned short>(pmFilename, GbVoxelMatrix3D::LittleEndian);
-
-         double scaleFactor = 0.001;
-         double delta = 3.75*scaleFactor;
-         pmMesh->setVoxelMatrixDelta(delta, delta, delta);
-         pmMesh->rotate90aroundX(); 
-         pmMesh->rotate90aroundX();
-         pmMesh->rotate90aroundX();
-
-         GbCuboid3DPtr inlayBox(new GbCuboid3D(pmMesh->getX1Minimum(), pmMesh->getX2Minimum(), pmMesh->getX3Minimum(), 
-                                pmMesh->getX1Maximum(), pmMesh->getX2Maximum(), pmMesh->getX3Maximum()));
-         if(myid == 0) GbSystem3D::writeGeoObject(inlayBox.get(), pathname+"/geo/inlay", WbWriterVtkXmlASCII::getInstance());
-
-
-         double blockLengthx1 = blocknx[0]*cdx; //geowerte
-         double blockLengthx2 = blockLengthx1;
-         double blockLengthx3 = blockLengthx1;
-
-         double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3}; 
-
-         //double originX1 = plate->getX1Maximum()-30.0;//meshBand1->getX1Minimum()-10.0;
-         //double originX2 = plate->getX2Minimum()+191.0;
-         //double originX3 = plate->getX3Maximum()-1.7;//meshBand1->getX3Minimum();//-2.0;
-         double originX1 = pmMesh->getX1Minimum()-5.0;//meshBand1->getX1Minimum()-10.0;
-         double originX2 = pmMesh->getX2Minimum()-1.0;
-         double originX3 = pmMesh->getX3Minimum()-5.0;//meshBand1->getX3Minimum();//-2.0;
-
-
-         bool periodicx1 = false;
-         bool periodicx2 = true;
-         bool periodicx3 = false;
-
-         //bounding box
-         double g_minX1 = originX1-cdx;
-         double g_minX2 = originX2;
-         double g_minX3 = originX3;
-
-         //double g_maxX1 = originX1+20.0;//meshBand1->getX1Maximum()+40.0;
-         //double g_maxX2 = originX2+5.0;//meshBand1->getX2Minimum()-0.6;
-         //double g_maxX3 = plate->getX3Maximum()+7.0;//meshBand1->getX3Maximum()+10.0;
-
-         double g_maxX1 = pmMesh->getX1Maximum()+5.0-cdx;
-         double g_maxX2 = pmMesh->getX2Maximum()+1.0;
-         double g_maxX3 = pmMesh->getX3Maximum()+5.0;
-
-
-         //set grid
-         grid->setDeltaX(cdx);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-         grid->setPeriodicX1(periodicx1);
-         grid->setPeriodicX2(periodicx2);
-         grid->setPeriodicX3(periodicx3);
-
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         //gridCube->setCenterCoordinates(gridCube->getX1Centroid(),meshBand1->getX2Centroid(),gridCube->getX3Centroid());
-         if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         //////////////////////////////////////////////////////////////////////////
-         if(myid == 0)
-         {
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* Parameters                            *");
-            UBLOG(logINFO, "* Re            ="<<Re);
-            UBLOG(logINFO, "* nuLB          ="<<nuLB);
-            UBLOG(logINFO, "* uLB           ="<<uLB);
-            UBLOG(logINFO, "* cdx           ="<<cdx);
-            UBLOG(logINFO, "* fdx           ="<<fdx);
-            UBLOG(logINFO, "* nx1/2/3       ="<<nx[0]<<"/"<<nx[1]<<"/"<<nx[2]);
-            UBLOG(logINFO, "* blocknx1/2/3  ="<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-            UBLOG(logINFO, "* x1Periodic    ="<<periodicx1);
-            UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-            UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-            UBLOG(logINFO, "* number of levels  ="<<refineLevel+1);
-            UBLOG(logINFO, "* path          ="<<pathname);
-
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* number of threads    ="<<numOfThreads);
-            UBLOG(logINFO, "* number of processes  ="<<comm->getNumberOfProcesses());
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "*****************************************");     
-         }
-         //////////////////////////////////////////////////////////////////////////
-
-
-         //////////////////////////////////////////////////////////////////////////
-         //refinement
-         GbCuboid3DPtr refinePlatteBox(new GbCuboid3D(plate->getX1Minimum(), plate->getX2Minimum(), plate->getX3Minimum()+(plate->getX3Maximum()-plate->getX3Minimum())/2.0, 
-            plate->getX1Maximum(), plate->getX2Maximum(), plate->getX3Maximum()));
-         if(myid == 0) GbSystem3D::writeGeoObject( refinePlatteBox.get(), pathname+"/geo/refinePlatteBox", WbWriterVtkXmlASCII::getInstance() );
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(refinePlatteBox, refineLevel);
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         /////////////////////////////////////////////////
-         ///interactoren
-         int bbOption1 = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-         D3Q27TriFaceMeshInteractorPtr triPlateInteractor( new D3Q27TriFaceMeshInteractor(plate, grid, bcObst,Interactor3D::SOLID));
-         D3Q27TriFaceMeshInteractorPtr triBand1Interactor( new D3Q27TriFaceMeshInteractor( meshBand1, grid, bcObst,Interactor3D::SOLID, Interactor3D::POINTS) );
-         //D3Q27TriFaceMeshInteractorPtr triBand2Interactor( new D3Q27TriFaceMeshInteractor( meshBand2, grid, bcObst,Interactor3D::SOLID, Interactor3D::POINTS) );
-         //D3Q27TriFaceMeshInteractorPtr triBand3Interactor( new D3Q27TriFaceMeshInteractor( meshBand3, grid, bcObst,Interactor3D::SOLID, Interactor3D::POINTS) );
-         //D3Q27TriFaceMeshInteractorPtr triBand4Interactor( new D3Q27TriFaceMeshInteractor( meshBand4, grid, bcObst,Interactor3D::SOLID, Interactor3D::POINTS) );
-
-         //walls
-         GbCuboid3DPtr addWallZmin (new GbCuboid3D(g_minX1-blockLengthx1-cdx, g_minX2-blockLengthx1, g_minX3-blockLengthx1, g_maxX1+blockLengthx1-cdx, g_maxX2+blockLengthx1, g_minX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax (new GbCuboid3D(g_minX1-blockLengthx1-cdx, g_minX2-blockLengthx1, g_maxX3, g_maxX1+blockLengthx1-cdx, g_maxX2+blockLengthx1, g_maxX3+blockLengthx1));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //walls
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr noSlip(new D3Q27NoSlipBCAdapter(bbOption));
-         D3Q27InteractorPtr addWallZminExInt(new D3Q27Interactor(addWallZmin, grid, noSlip,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxExInt(new D3Q27Interactor(addWallZmax, grid, noSlip,Interactor3D::SOLID));
-
-         D3Q27BoundaryConditionAdapterPtr slip(new D3Q27SlipBCAdapter(bbOption));
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, slip,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, slip,Interactor3D::SOLID));
-
-         //porouse medium
-         int bbOptionPM = 2; //quadratic bounce back with for thin walls
-         D3Q27BoundaryConditionAdapterPtr noSlipPM(new D3Q27NoSlipBCAdapter(bbOptionPM));
-         D3Q27InteractorPtr pmMeshInt(new D3Q27Interactor(pmMesh, grid, noSlipPM,Interactor3D::SOLID));
-         
-         //inflow
-         GbCuboid3DPtr velBCCuboid(new GbCuboid3D(g_minX1-blockLengthx1, g_minX2-blockLengthx1, g_minX3-blockLengthx1, 
-            g_minX1, g_maxX2+blockLengthx1, g_maxX3+blockLengthx1));
-         if(myid == 0) GbSystem3D::writeGeoObject(velBCCuboid.get(), pathname+"/geo/velBCCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr velBCInteractor(new D3Q27Interactor(velBCCuboid,grid,Interactor3D::SOLID)); 
-
-         //inflow
-         double raiseVelSteps = 0;
-         vector<D3Q27BCFunction> velcX1BCs,dummy;
-
-         mu::Parser inflowProfile;
-         inflowProfile.SetExpr("uLB"); 
-         inflowProfile.DefineConst("uLB",uLB);
-         velcX1BCs.push_back(D3Q27BCFunction(inflowProfile,raiseVelSteps,D3Q27BCFunction::INFCONST));
-
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (velcX1BCs,dummy,dummy));
-         velBCInteractor->addBCAdapter(velBCAdapter);
-
-         //outflow
-         GbCuboid3DPtr densCuboid(new GbCuboid3D(g_maxX1, g_minX2-blockLengthx1, g_minX3-blockLengthx1, 
-            g_maxX1+blockLengthx1, g_maxX2+blockLengthx1, g_maxX3+blockLengthx1 ));
-         if(myid == 0) GbSystem3D::writeGeoObject(densCuboid.get(), pathname+"/geo/densCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         D3Q27InteractorPtr densInteractor( new D3Q27Interactor(densCuboid,grid,denBCAdapter,Interactor3D::SOLID) );
-
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));	
-
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         //intHelper.addInteractor(triPlateInteractor);
-         //intHelper.addInteractor(triBand1Interactor);
-         //intHelper.addInteractor(triBand2Interactor);
-         //intHelper.addInteractor(triBand3Interactor);
-         //intHelper.addInteractor(triBand4Interactor);
-         //intHelper.addInteractor(addWallZminExInt);
-         //intHelper.addInteractor(addWallZmaxExInt);
-         intHelper.addInteractor(pmMeshInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(densInteractor);
-         intHelper.addInteractor(velBCInteractor);
-         intHelper.selectBlocks();
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	 
-         //////////////////////////////////////
-
-         //domain decomposition for threads
-         if(numOfThreads > 1)
-         {
-            PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-            grid->accept(pqPartVisitor);
-         }
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Write blocks - start");
-            BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-            ppblocks->update(0);
-            UBLOG(logINFO,"Write blocks - end");
-         }
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         unsigned long nod = nob * blocknx[0]*blocknx[1]*blocknx[2];
-         unsigned long nod_real = nob * (blocknx[0]+3)*(blocknx[1]+3)*(blocknx[2]+3);
-
-         double needMemAll  = double(nod_real*(27*sizeof(double) + sizeof(int)));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-            UBLOG(logINFO,"Available memory per node/8.0 = " << (availMem/8.0) << " bytes");
-         }
-
-         //////////////////////////////////////////
-         //set connectors
-         UBLOG(logINFO,"set connectors - start");
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         UBLOG(logINFO,"set connectors - end");
-
-         ////////////////////////////
-         LBMKernel3DPtr kernel;
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-
-         //with sponge layer
-         //kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLBWithSpongeLayer(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-         int sizeSP=4;
-         mu::Parser spongeLayer;
-         spongeLayer.SetExpr("x1>=(sizeX-sizeSP)/dx ? (sizeX-(x1+1))/sizeSP/2.0 + 0.5 : 1.0");
-         spongeLayer.DefineConst("sizeX", nx[0]*blocknx[0]);
-         spongeLayer.DefineConst("sizeSP", sizeSP*blocknx[0]);
-         kernel->setWithSpongeLayer(true);
-         kernel->setSpongeLayer(spongeLayer);
-
-         //BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         BCProcessorPtr bcProc(new D3Q27ETForThinWallBCProcessor());
-         kernel->setBCProcessor(bcProc);
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-         //////////////////////////////////
-         //undef nodes
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-
-         intHelper.setBC();
-
-         //////////////////////////////////////////////////////////////////////////
-         ////porous inlay
-         //string pmFilename  = pathGeo + "/CT-2014-039.raw";
-         //int pmNX1=1333;  //abmessung einzelbild in x-richtung
-         //int pmNX2=463; //abmessung einzelbild in y richtung
-         //int pmNX3=1333; //anzahl der bilder
-         //float lthreshold = 27686.97;
-         //float uthreshold = 65535.0;
-
-         //GbVoxelMatrix3DPtr pmMesh(new GbVoxelMatrix3D(pmNX1,pmNX2,pmNX3,0,lthreshold,uthreshold));
-         //pmMesh->readMatrixFromRawFile<unsigned short>(pmFilename);
-
-         //double scaleFactor = 0.001;
-         //double delta = 3.75*scaleFactor;
-         //pmMesh->setVoxelMatrixDelta(delta, delta, delta);
-         //pmMesh->rotate90aroundX(); 
-         //pmMesh->rotate90aroundX();
-         //pmMesh->rotate90aroundX();
-
-         //double inlayXmin = 995.0;
-         //double inlayYmin = 180.0;
-         //double inlayZmin = 8.73;
-
-         //GbCuboid3DPtr inlayBox(new GbCuboid3D(inlayXmin, inlayYmin, inlayZmin, inlayXmin+(double)75, inlayYmin+(double)35, inlayZmin));
-         //if(myid == 0) GbSystem3D::writeGeoObject(inlayBox.get(), pathname+"/geo/inlay"+UbSystem::toString(i), WbWriterVtkXmlASCII::getInstance());
-         //D3Q27InteractorPtr inlayBoxInt = D3Q27InteractorPtr ( new D3Q27Interactor(inlayBox, grid, bcObst,Interactor3D::SOLID));
-         //SetSolidOrTransBlockVisitor v(inlayBoxInt, SetSolidOrTransBlockVisitor::SOLID);
-         //grid->accept(v);
-         //SetSolidOrTransBlockVisitor v(inlayBoxInt, SetSolidOrTransBlockVisitor::TRANS);
-         //grid->accept(v);
-
-         //vector<Block3DPtr> inlayBlocks;
-         //vector<Block3DPtr>& sb = inlayBoxInt->getSolidBlockSet();
-         //inlayBlocks.insert(inlayBlocks.end(), sb.begin(), sb.end());
-         //vector<Block3DPtr>& tb = inlayBoxInt->getTransBlockSet();
-         //inlayBlocks.insert(inlayBlocks.end(), tb.begin(), tb.end());
-
-
-         //int i = 0;
-         //for (int y = 0; y<=35; y+=5)
-         //   for (int x = 0; x<=75; x+=5)
-         //   {
-         //      UBLOG(logINFO,"inlay # "<<i);
-         //      GbVoxelMatrix3DPtr pmM = GbVoxelMatrix3DPtr(pmMesh->clone());
-         //      pmM->setVoxelMatrixDelta(delta, delta, delta);
-         //      pmM->setVoxelMatrixMininum(inlayXmin-(double)x, inlayYmin+(double)y, inlayZmin);
-         //      D3Q27InteractorPtr inlayInt = D3Q27InteractorPtr ( new D3Q27Interactor(pmM, grid, bcObst,Interactor3D::SOLID));
-         //      SetSolidOrTransBlockVisitor v(inlayInt, SetSolidOrTransBlockVisitor::TRANS);
-         //      grid->accept(v);
-         //      inlayInt->initInteractor();
-
-         //      GbCuboid3DPtr inlayBox(new GbCuboid3D(pmM->getX1Minimum(),pmM->getX2Minimum(),pmM->getX3Minimum(),pmM->getX1Maximum(),pmM->getX2Maximum(),pmM->getX3Maximum()));
-         //      if(myid == 0) GbSystem3D::writeGeoObject(inlayBox.get(), pathname+"/geo/inlay"+UbSystem::toString(i), WbWriterVtkXmlASCII::getInstance());
-         //      D3Q27InteractorPtr inlayBoxInt = D3Q27InteractorPtr ( new D3Q27Interactor(inlayBox, grid, bcObst,Interactor3D::SOLID));
-         //      SetSolidOrTransBlockVisitor v1(inlayBoxInt, SetSolidOrTransBlockVisitor::SOLID);
-         //      grid->accept(v1);
-         //      SetSolidOrTransBlockVisitor v2(inlayBoxInt, SetSolidOrTransBlockVisitor::TRANS);
-         //      grid->accept(v2);
-
-         //      vector<Block3DPtr> inlayBlocks;
-         //      vector<Block3DPtr>& sb = inlayBoxInt->getSolidBlockSet();
-         //      //UBLOG(logINFO, "sb.size = "<<sb.size());
-         //      inlayBlocks.insert(inlayBlocks.end(), sb.begin(), sb.end());
-         //      vector<Block3DPtr>& tb = inlayBoxInt->getTransBlockSet();
-         //      //UBLOG(logINFO, "tb.size = "<<tb.size());
-         //      inlayBlocks.insert(inlayBlocks.end(), tb.begin(), tb.end());
-
-         //      //UBLOG(logINFO, "inlayBlocks.size = "<<inlayBlocks.size());
-
-         //      BOOST_FOREACH(Block3DPtr block, inlayBlocks)
-         //      {
-         //         block->setActive(true);
-         //         inlayInt->setDifferencesToGbObject3D(block);
-         //      }
-         //      i++;
-         //   }
-         //////////////////////////////////////////////////////////////////////
-
-         //initialization of decompositions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor( nuLB,rhoLB);
-         initVisitor.setVx1(uLB);
-         grid->accept(initVisitor);
-
-         //Postprozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), 
-            unitConverter, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-         geoSch.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end");      
-      }
-      else
-      {
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         if(myid == 0) UBLOG(logINFO,"Restart - end"); 
-      }
-      UbSchedulerPtr visSch(new UbScheduler());
-      //visSch->addSchedule(1,0,3);
-      //visSch->addSchedule(100,100,1000);
-      //visSch->addSchedule(1000,1000,5000);
-      //visSch->addSchedule(5000,5000,100000);
-      //visSch->addSchedule(100000,100000,10000000);
-
-      visSch->addSchedule(100,100,10000000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), unitConverter);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 30));
-      NUPSCounterPostprocessor npr(grid, nupsSch, numOfThreads, comm);
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      double endTime = 10000000;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if (argc == 1)
-   {
-      cout<<"Command line argument isn't specified!"<<endl;
-      cout<<"plate2 <machine name>"<<endl;
-      return 1;
-   }
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/bbone/CMakeLists.txt b/apps/cpu/bbone/CMakeLists.txt
deleted file mode 100644
index 607daeb54917ea99811cf3c25082b151ec4567a8..0000000000000000000000000000000000000000
--- a/apps/cpu/bbone/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(bbone)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(bbone BINARY)
diff --git a/apps/cpu/bbone/bbone.cpp b/apps/cpu/bbone/bbone.cpp
deleted file mode 100644
index 5f24304eac06d9b6976ebcb65f76606d7b178940..0000000000000000000000000000000000000000
--- a/apps/cpu/bbone/bbone.cpp
+++ /dev/null
@@ -1,427 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <vfluids.h>
-
-using namespace std;
-
-
-void sbonepd(string configname)
-{
-   try
-   {
-      Configuration   config;
-      config.load(configname);
-
-      string          pathname          = config.getString("pathname");
-      string          pathGeo           = config.getString("pathGeo");
-      int             numOfThreads      = config.getInt("numOfThreads");
-      string          sampleFilename    = config.getString("sampleFilename");
-      int             pmNX1             = config.getInt("pmNX1");
-      int             pmNX2             = config.getInt("pmNX2");
-      int             pmNX3             = config.getInt("pmNX3");
-      double          lthreshold        = config.getDouble("lthreshold");
-      double          uthreshold        = config.getDouble("uthreshold");
-      double          dp_real           = config.getDouble("dp_real");
-      string          timeSeriesFile    = config.getString("timeSeriesFile");
-      double          restartStep       = config.getDouble("restartStep");
-      double          restartStepStart  = config.getDouble("restartStepStart");
-      double          endTime           = config.getDouble("endTime");
-      double          outTime           = config.getDouble("outTime");
-      double          availMem          = config.getDouble("availMem");
-      double          timeSeriesOutTime = config.getDouble("timeSeriesOutTime");
-      bool            logToFile         = config.getBool("logToFile");
-      double          deltaT            = config.getDouble("deltaT");
-      
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathname.c_str();
-            int status = mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if (myid == 0)
-         {
-            stringstream logFilename;
-            logFilename << pathname + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-
-
-      if (myid == 0) UBLOG(logINFO, "Testcase big bone");
-
-      Grid3DPtr grid(new Grid3D(comm));
-      double deltaVoxel = 11.658e-6;
-
-      double dx = deltaVoxel;
-
-      const int blocknx1 = 64;
-      const int blocknx2 = 64;
-      const int blocknx3 = 64;
-
-      LBMReal rho_LB = 0.0;
-      //nueWasser = 1e-6 m^2/s
-      double nu_real = 1e-6;
-      LBMReal dt = deltaT; //1e-5; // s (frei gewählt)
-      //dx - frei gewählt
-      //
-      LBMReal nu_LB = nu_real / (dx*dx / dt);
-
-
-      //dp = 50000 Pa - 0 Pa = 50000 Pa
-      //rho wasser = 1000 kg*m^-3
-      double rho_real = 1000;
-      //dp/rho = 50000/1000 = 50 m^2/s^2
-      double dp_div_rho_real = dp_real / rho_real;
-
-      double dp_LB = dp_div_rho_real / ((dx / dt)*(dx / dt));
-
-      double rhoLBinflow;
-      rhoLBinflow = dp_LB*3.0;
-     
-      double deltax = dx;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = 0;
-
-      double coord[6];
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(restartStep, restartStepStart));
-      RestartPostprocessor rp(grid, rSch, comm, pathname, RestartPostprocessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (grid->getTimeStep() == 0)
-      {
-         if (myid == 0) UBLOG(logINFO, "Neustart..");
-
-         string boneFilename = pathGeo + sampleFilename;
-
-         //int pmNX1 = 1164;  //abmessung einzelbild in x-richtung
-         //int pmNX2 = 972; //abmessung einzelbild in y richtung
-         //int pmNX3 = 900; //anzahl der bilder
-         ////int pmNX3 = 10; //anzahl der bilder
-         //float lthreshold = 109.0;
-         //float uthreshold = 255.0;
-
-         GbVoxelMatrix3DPtr bone(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-         bone->readMatrixFromRawFile<unsigned char>(boneFilename, GbVoxelMatrix3D::BigEndian);
-         bone->setVoxelMatrixDelta(deltaVoxel, deltaVoxel, deltaVoxel);
-         bone->setVoxelMatrixMininum(0.0, 0.0, 0.0);
-
-         if (myid == 0) bone->writeToVTKImageDataASCII(pathname + "/geo/bone");
-
-         ///////////////////////////////////////////////////////
-
-         ////////////////////////////////////////////////////////////////////////
-
-         double offset = 0.5e-3;
-         //bounding box
-         double g_minX1 = bone->getX1Minimum();
-         double g_minX2 = bone->getX2Minimum();
-         double g_minX3 = bone->getX3Minimum() - offset;
-
-         double g_maxX1 = bone->getX1Maximum();
-         double g_maxX2 = bone->getX2Maximum();
-         double g_maxX3 = bone->getX3Maximum() + offset;
-
-         double blockLength = (double)blocknx1*deltax;
-
-         grid->setPeriodicX1(false);
-         grid->setPeriodicX2(false);
-         grid->setPeriodicX3(false);
-         grid->setDeltaX(deltax);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "rho_LB = " << rho_LB);
-            UBLOG(logINFO, "nu_LB = " << nu_LB);
-            UBLOG(logINFO, "dp_LB = " << dp_LB);
-            UBLOG(logINFO, "dx = " << dx << " m");
-            UBLOG(logINFO, "dt = " << dt << " s");
-            UBLOG(logINFO, "rho_real = " << rho_real << " kg*m^-3");
-            UBLOG(logINFO, "nu_real = " << nu_real << " m^2/s");
-            UBLOG(logINFO, "dp_real = " << dp_real << " Pa");
-
-            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
-            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
-            UBLOG(logINFO, "path = " << pathname);
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         //cylinder
-         double radius = 0.0036;
-         double cx1 = 0.007;
-         double cx2 = 0.0046;
-
-         GbObject3DPtr cylinder(new GbCylinder3D(cx1, cx2, g_minX3 - offset, cx1, cx2, g_maxX3 + offset, radius));
-         GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_minX3 - blockLength, g_maxX1 + blockLength, g_maxX2 + blockLength, g_minX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname + "/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_minX1 - blockLength, g_minX2 - blockLength, g_maxX3, g_maxX1 + blockLength, g_maxX2 + blockLength, g_maxX3 + blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname + "/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         //bone interactor
-         int bcOptionBone = 1; //0=simple Bounce Back, 1=quadr. BB, 2=thin wall
-         D3Q27BoundaryConditionAdapterPtr bcBone(new D3Q27NoSlipBCAdapter(bcOptionBone));
-         D3Q27InteractorPtr boneInt(new D3Q27Interactor(bone, grid, bcBone, Interactor3D::SOLID));
-
-         //wall interactors
-         int bcOptionWall = 1; //0=simple Bounce Back, 1=quadr. BB, 2=thin wall
-         D3Q27BoundaryConditionAdapterPtr bcWall(new D3Q27NoSlipBCAdapter(bcOptionWall));
-         D3Q27InteractorPtr cylInt(new D3Q27Interactor(cylinder, grid, bcWall, Interactor3D::INVERSESOLID));
-
-         D3Q27BoundaryConditionAdapterPtr denBCAdapterInflow(new D3Q27DensityBCAdapter(rhoLBinflow));
-         denBCAdapterInflow->setSecondaryBcOption(0);
-         D3Q27InteractorPtr inflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoInflow, grid, denBCAdapterInflow, Interactor3D::SOLID));
-
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapterOutflow(new D3Q27DensityBCAdapter(rho_LB));
-         denBCAdapterOutflow->setSecondaryBcOption(0);
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoOutflow, grid, denBCAdapterOutflow, Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW));
-         ////////////////////////////////////////////
-         //Zoltan
-         //Grid3DVisitorPtr zoltanVisitor(new ZoltanPartitioningGridVisitor(comm, D3Q27System::BSW, 1));
-         //////////////////////////////////////////////////////////////////////////
-         /////delete solid blocks
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(boneInt);
-         intHelper.addInteractor(cylInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.selectBlocks();
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nod = nob * (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nodg = nob * (blocknx1 + gl) * (blocknx2 + gl) * (blocknx3 + gl);
-         double needMemAll = double(nodg*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << nob);
-            UBLOG(logINFO, "Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*nodb);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         LBMKernel3DPtr kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-
-         //BCProcessorPtr bcProc(new D3Q27ETForThinWallBCProcessor());
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         BoundaryConditionPtr densityBC(new NonEqDensityBoundaryCondition());
-         BoundaryConditionPtr noSlipBC(new NoSlipBoundaryCondition());
-         bcProc->addBC(densityBC);
-         bcProc->addBC(noSlipBC);
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         //BC
-         intHelper.setBC();
-
-         BoundaryConditionBlockVisitor bcVisitor;
-         grid->accept(bcVisitor);
-
-         //Press*1.6e8+(14.76-coordsX)/3.5*5000
-         //initialization of distributions
-         mu::Parser fct;
-         fct.SetExpr("(x3max-x3)/l*dp*3.0");
-         fct.DefineConst("dp", dp_LB);
-         fct.DefineConst("x3max", g_maxX3);
-         fct.DefineConst("l", g_maxX3-g_minX3);
-
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(nu_LB, rho_LB);
-         initVisitor.setRho(fct);
-         //initVisitor.setVx1(fct);
-         //initVisitor.setVx1(0.0);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-
-
-         coord[0] = bone->getX1Minimum();
-         coord[1] = bone->getX2Minimum();
-         coord[2] = bone->getX3Minimum();//cylinder->getX3Centroid();
-         coord[3] = bone->getX1Maximum();
-         coord[4] = bone->getX2Maximum();
-         coord[5] = bone->getX3Maximum(); //cylinder->getX3Centroid();
-
-         ////////////////////////////////////////////////////////
-         FILE * pFile;
-         string str = pathname + "/checkpoints/coord.txt";
-         pFile = fopen(str.c_str(), "w");
-         fprintf(pFile, "%g\n", coord[0]);
-         fprintf(pFile, "%g\n", coord[1]);
-         fprintf(pFile, "%g\n", coord[2]);
-         fprintf(pFile, "%g\n", coord[3]);
-         fprintf(pFile, "%g\n", coord[4]);
-         fprintf(pFile, "%g\n", coord[5]);
-         fclose(pFile);
-         ////////////////////////////////////////////////////////
-         grid->addInteractor(inflowInt);
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         Grid3D::Interactor3DSet interactors = grid->getInteractors();
-         interactors[0]->setGrid3D(grid);
-         boost::dynamic_pointer_cast<D3Q27Interactor>(interactors[0])->deleteBCAdapter();
-         D3Q27BoundaryConditionAdapterPtr denBCAdapterFront(new D3Q27DensityBCAdapter(rhoLBinflow));
-         boost::dynamic_pointer_cast<D3Q27Interactor>(interactors[0])->addBCAdapter(denBCAdapterFront);
-         interactors[0]->updateInteractor();
-
-         UBLOG(logINFO, "rhoLBinflow = "<<rhoLBinflow);
-
-         BoundaryConditionBlockVisitor bcVisitor;
-         grid->accept(bcVisitor);
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         ////////////////////////////////////////////////////////
-         FILE * pFile;
-         string str = pathname + "/checkpoints/coord.txt";
-         pFile = fopen(str.c_str(), "r");
-         fscanf(pFile, "%lg\n", &coord[0]);
-         fscanf(pFile, "%lg\n", &coord[1]);
-         fscanf(pFile, "%lg\n", &coord[2]);
-         fscanf(pFile, "%lg\n", &coord[3]);
-         fscanf(pFile, "%lg\n", &coord[4]);
-         fscanf(pFile, "%lg\n", &coord[5]);
-         fclose(pFile);
-         ////////////////////////////////////////////////////////
-
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-      }
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, numOfThreads, comm);
-
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      //stepSch->addSchedule(10, 10, 10);
-      //stepSch->addSchedule(100, 100, 100);
-      //stepSch->addSchedule(1000, 1000, 1000);
-      //stepSch->addSchedule(100, 1500, 2000);
-      //stepSch->addSchedule(10000, 10000, 10000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv);
-
-      double dxd2 = deltax / 2.0;
-      D3Q27IntegrateValuesHelperPtr ih1(new D3Q27IntegrateValuesHelper(grid, comm, coord[0], coord[1], coord[2] - dxd2*10.0,
-         coord[3], coord[4], coord[2] - dxd2*10.0 - 2.0*dxd2));
-      D3Q27IntegrateValuesHelperPtr ih2(new D3Q27IntegrateValuesHelper(grid, comm, coord[0], coord[1], coord[2], coord[3], coord[4], coord[5]));
-      D3Q27IntegrateValuesHelperPtr ih3(new D3Q27IntegrateValuesHelper(grid, comm, coord[0], coord[1], coord[5] + dxd2*10.0,
-         coord[3], coord[4], coord[5] + dxd2*10.0 + 2.0*dxd2));
-
-      if (myid == 0) GbSystem3D::writeGeoObject(ih1->getBoundingBox().get(), pathname + "/geo/ih1", WbWriterVtkXmlBinary::getInstance());
-      if (myid == 0) GbSystem3D::writeGeoObject(ih2->getBoundingBox().get(), pathname + "/geo/ih2", WbWriterVtkXmlBinary::getInstance());
-      if (myid == 0) GbSystem3D::writeGeoObject(ih3->getBoundingBox().get(), pathname + "/geo/ih3", WbWriterVtkXmlBinary::getInstance());
-
-      UbSchedulerPtr stepMV(new UbScheduler(timeSeriesOutTime));
-
-      TimeseriesPostprocessor tsp1(grid, stepMV, ih1, pathname+timeSeriesFile+"_1", comm);
-      TimeseriesPostprocessor tsp2(grid, stepMV, ih2, pathname+timeSeriesFile+"_2", comm);
-      TimeseriesPostprocessor tsp3(grid, stepMV, ih3, pathname+timeSeriesFile+"_3", comm);
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepMV));
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-         sbonepd(string(argv[1]));
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/bbone/configBombadilBone.txt b/apps/cpu/bbone/configBombadilBone.txt
deleted file mode 100644
index b5fa00058f05e277ea2418d9c33890129bec18ce..0000000000000000000000000000000000000000
--- a/apps/cpu/bbone/configBombadilBone.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-#Simulation parameters for determitatoin of permeability
-#SBP120
-
-pathname = d:/temp/bbone2
-pathGeo = d:/Data/Bone/BigBone
-numOfThreads = 4
-availMem = 3e9
-logToFile = false
-
-#porous media
-#rawFile = false
-sampleFilename = /cyl_bone2.raw
-
-#diminsions [voxel]
-pmNX1 = 1164
-pmNX2 = 972
-pmNX3 = 900
-
-#threshold
-lthreshold = 109
-uthreshold = 255
-
-#diminsions [m]
-#pmL1 = 1.87e-3
-#pmL2 = 1.87e-3
-#pmL3 = 1.87e-3
-
-#grid
-#blocknx = 30
-#nx3 = 5
-#blocknx = 50
-#nx3 = 10
-#spongeLayer=true
-
-#physic
-dp_real = 1
-
-timeSeriesFile = /timeseries/bone1
-timeSeriesOutTime = 10
-
-restartStep = 20000
-restartStepStart=20000
-
-endTime = 60000
-outTime = 100
diff --git a/apps/cpu/bbone/configLudwigBone.cfg b/apps/cpu/bbone/configLudwigBone.cfg
deleted file mode 100644
index 7ce59bfdbef2929d9e9bef8e8fbcf0c831a4a9fc..0000000000000000000000000000000000000000
--- a/apps/cpu/bbone/configLudwigBone.cfg
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-#Simulation parameters for determitatoin of permeability
-#SBP120
-
-pathname = /hpc3lustre/work/koskuche/Bone/BigBone2
-pathGeo = /hpc3lustre/work/koskuche/Bone/data/bbone
-numOfThreads = 4
-availMem = 11e9
-logToFile = true
-
-#porous media
-sampleFilename = /cyl_bone2.raw
-
-#diminsions [voxel]
-pmNX1 = 1164
-pmNX2 = 972
-pmNX3 = 900
-
-#threshold
-lthreshold = 109
-uthreshold = 255
-
-#physic
-dp_real = 1
-
-timeSeriesFile = /timeseries/bone1
-timeSeriesOutTime = 10
-
-restartStep = 20000
-restartStepStart=20000
-
-endTime = 60000
-outTime = 10000
diff --git a/apps/cpu/block_test/CMakeLists.txt b/apps/cpu/block_test/CMakeLists.txt
deleted file mode 100644
index 81b15cecd490f9f39a455956c8db9b1af7631dfc..0000000000000000000000000000000000000000
--- a/apps/cpu/block_test/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(block_test)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(block_test BINARY)
diff --git a/apps/cpu/block_test/block_test.cpp b/apps/cpu/block_test/block_test.cpp
deleted file mode 100644
index 92f3ff2bb2506324caeae7ae5d6243ea56b9a98b..0000000000000000000000000000000000000000
--- a/apps/cpu/block_test/block_test.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-#include "block_test_incompressible.hpp"
-
-int main(int argc, char* argv[])
-{
-
-   if ( argv != NULL )
-   {
-      if (argc > 1)
-      {
-         block_test_incompressible(argv[1], argv[2]);
-      }
-      else
-      {
-         cout << "Configuration file must be set!: " <<  argv[0] << " <config file>" << endl << std::flush;
-      }
-   }
-
-   return 0;
-}
-
diff --git a/apps/cpu/block_test/block_test_all.hpp b/apps/cpu/block_test/block_test_all.hpp
deleted file mode 100644
index c51e77b162017322623eeca0e467f6eb482ed3d1..0000000000000000000000000000000000000000
--- a/apps/cpu/block_test/block_test_all.hpp
+++ /dev/null
@@ -1,397 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "numerics/geometry3d/CoordinateTransformation3D.h"
-#include "Grid3D.h"
-#include "GenBlocksGridVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "RefineInterGbObjectsVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "MPICommunicator.h"
-#include "D3Q27ETBCProcessor.h"
-#include "SimulationParameters.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "D3Q27SetConnectorsBlockVisitor.h"
-#include "NullCommunicator.h"
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "CalculationManager.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27VelocityBCAdapter.h"
-#include "D3Q27DensityBCAdapter.h"
-#include "D3Q27BoundaryConditionAdapter.h"
-#include "StringUtil.hpp"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "D3Q27CompactInterpolationProcessor.h"
-#include "D3Q27PressureDifferencePostprocessor.h"
-#include "D3Q27IntegrateValuesHelper.h"
-#include "RestartPostprocessor.h"
-#include "SolidBlocksHelper.h"
-#include "NUPSCounterPostprocessor.h"
-#include "BlocksPostprocessor.h"
-#include "LBMKernelETD3Q27BGK.h"
-#include "EmergencyExitPostprocessor.h"
-#include "D3Q27ForcesPostprocessor.h"
-#include "ConfigFileReader.h"
-#include "MemoryUtil.h"
-#include "LBMKernelETD3Q27CCLB.h"
-
-
-using namespace std;
-
-
-void block_test_all(const char *cstr)
-{
-   try
-   {
-      ConfigFileReader cf(cstr);
-      if ( !cf.read() )
-      {
-         std::string exceptionText = "Unable to read configuration file\n";
-         throw exceptionText;
-      }
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname = cf.getValue("path"); 
-      int numOfThreads = UbSystem::stringTo<int>(cf.getValue("numOfThreads"));
-      double availMem = 0;
-
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-
-      if(machine == "BOMBADIL") 
-      {
-         //pathname = "c:/temp/block_test";
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         //pathname = "/work/koskuche/scratch/block_test";
-         availMem = 12.0e9;
-
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      double dx = 1;
-
-      const int blocknx1 = UbSystem::stringTo<int>(cf.getValue("blocknx1")); //16;
-      const int blocknx2 = UbSystem::stringTo<int>(cf.getValue("blocknx2"));//16;
-      const int blocknx3 = UbSystem::stringTo<int>(cf.getValue("blocknx3"));//16;
-
-      const int gridNx1 = UbSystem::stringTo<int>(cf.getValue("gridNx1"));//3;
-      const int gridNx2 = UbSystem::stringTo<int>(cf.getValue("gridNx2"));//3;
-      const int gridNx3 = UbSystem::stringTo<int>(cf.getValue("gridNx3"));//3;
-
-
-      double L1 = gridNx1*blocknx1;
-      double L2, L3, H;
-      L2 = L3 = H = gridNx2*blocknx1;
-
-      LBMReal radius = 3;
-      LBMReal uLB = 0.05;
-      LBMReal Re = 300.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = L2 / dx;
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = UbSystem::stringTo<int>(cf.getValue("refineLevel"));
-
-      //obstacle
-      GbObject3DPtr cylinder(new GbCylinder3D(L1*0.5, L2*0.5, 0, L1*0.5, L2*0.5, L3, radius));
-      GbSystem3D::writeGeoObject(cylinder.get(),pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-      D3Q27InteractorPtr cylinderInt;
-
-      //bounding box
-      double d_minX1 = 0.0;
-      double d_minX2 = 0.0;
-      double d_minX3 = 0.0;
-
-      double d_maxX1 = L1;
-      double d_maxX2 = L2;
-      double d_maxX3 = L3;
-
-      double offs = dx;
-
-      //double g_minX1 = d_minX1-offs-0.499999*dx;
-      double g_minX1 = d_minX1-offs;
-      double g_minX2 = d_minX2-offs;
-      double g_minX3 = d_minX3-offs;
-
-      double g_maxX1 = d_maxX1+offs;
-      double g_maxX2 = d_maxX2+offs;
-      double g_maxX3 = d_maxX3+offs;
-
-      double blockLength = blocknx1*dx;
-
-      //refinement area
-      double off = 1;
-      GbObject3DPtr refineCube(new  GbCuboid3D(cylinder->getX1Minimum()-off, cylinder->getX2Minimum()-off, cylinder->getX3Minimum(), 
-         cylinder->getX1Maximum()+off, cylinder->getX2Maximum()+off, cylinder->getX3Maximum()));
-
-      Grid3DPtr grid(new Grid3D(blocknx1, blocknx2, blocknx3, gridNx1, gridNx2, gridNx3));
-
-
-      if(myid ==0)
-      {
-         UBLOG(logINFO,"Parameters:");
-         UBLOG(logINFO,"L = " << L2/dx );
-         UBLOG(logINFO,"v = " << uLB );
-         UBLOG(logINFO,"rho = " << rhoLB );
-         UBLOG(logINFO,"nue = " << nueLB );
-         UBLOG(logINFO,"Re = " << Re );
-         UBLOG(logINFO,"dx = " << dx );
-         UBLOG(logINFO,"number of levels = " << refineLevel+1 );
-         UBLOG(logINFO,"numOfThreads = " << numOfThreads );
-         UBLOG(logINFO,"Preprozess - start");
-      }
-
-      if(myid ==0) GbSystem3D::writeGeoObject(refineCube.get(),pathname + "/geo/refineCube", WbWriterVtkXmlBinary::getInstance());
-
-      //walls
-      GbCuboid3DPtr addWallYmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_minX2, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallZmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_minX3));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallYmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_maxX2, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_maxX3, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-      //inflow
-      GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_minX1, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-      //outflow
-      GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-      BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-
-      if (refineLevel > 0)
-      {
-         if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-         RefineCrossAndInsideGbObjectBlockVisitor refVisitor(refineCube, baseLevel, refineLevel-1);
-         grid->accept(refVisitor);
-
-         RatioBlockVisitor ratioVisitor(refineLevel);
-         grid->accept(ratioVisitor);
-
-         RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-         grid->accept(ratioSmoothVisitor);
-
-         OverlapBlockVisitor overlapVisitor(refineLevel);
-         grid->accept(overlapVisitor);
-
-         std::vector<int> dirs;
-         D3Q27System::getLBMDirections(dirs);
-         SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-         grid->accept(interDirsVisitor);
-         if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-      }
-
-      MetisPartitioningGridVisitor metisVisitor(numOfThreads, D3Q27System::B, comm, true);
-      grid->accept( metisVisitor );
-
-      SolidBlocksHelper sd(grid, comm);
-
-      int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-      D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-      cylinderInt = D3Q27InteractorPtr ( new D3Q27Interactor(cylinder, grid, bcObst,Interactor3D::SOLID));
-
-      //walls
-      D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcObst,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst,Interactor3D::SOLID));
-
-      mu::Parser fct;
-      fct.SetExpr("16*U*x2*x3*(H-x2)*(H-x3)/H^4");
-      fct.DefineConst("U", uLB);
-      fct.DefineConst("H", H);
-
-      //inflow
-      D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-      velBCAdapter->setSecondaryBcOption(2);
-      D3Q27BoundaryConditionAdapterPtr denBCAdapterFront(new D3Q27DensityBCAdapter(rhoLB));
-      denBCAdapterFront->setSecondaryBcOption(1);
-      D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-      //D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, bcObst, Interactor3D::SOLID));
-
-      //outflow
-      D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-      denBCAdapter->setSecondaryBcOption(1);
-      D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-      //D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, bcObst,Interactor3D::SOLID));
-
-      //sd.addInteractor(cylinderInt);
-      sd.addInteractor(addWallYminInt);
-      sd.addInteractor(addWallZminInt);
-      sd.addInteractor(addWallYmaxInt);
-      sd.addInteractor(addWallZmaxInt);
-      sd.addInteractor(inflowInt);
-      sd.addInteractor(outflowInt);
-
-      sd.deleteSolidBlocks();
-
-      grid->accept( metisVisitor );
-
-      //set connectors
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-      D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-      grid->accept( setConnsVisitor );
-
-      //domain decomposition for threads
-      //PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      //grid->accept(pqPartVisitor);
-
-      ppblocks->update(0);
-      ppblocks.reset();
-
-      unsigned long nob = grid->getNumberOfBlocks();
-      int gl = 3;
-      unsigned long nodb = (blocknx1) * (blocknx2) * (blocknx3);
-      unsigned long nod = nob * (blocknx1) * (blocknx2) * (blocknx3);
-      unsigned long nodg = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-      double needMemAll  = double(nodg*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-      double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"Number of blocks = " << nob);
-         UBLOG(logINFO,"Number of nodes  = " << nod);
-         int minInitLevel = grid->getCoarsestInitializedLevel();
-         int maxInitLevel = grid->getFinestInitializedLevel();
-         for(int level = minInitLevel; level<=maxInitLevel; level++)
-         {
-            int nobl = grid->getNumberOfBlocks(level);
-            UBLOG(logINFO,"Number of blocks for level " << level <<" = " << nob);
-            UBLOG(logINFO,"Number of nodes for level " << level <<" = " << nob*nodb);
-         }
-         UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-         UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-         UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-      }            
-
-      int kernelType = UbSystem::stringTo<int>(cf.getValue("kernel"));
-      LBMKernel3DPtr kernel;
-      if (kernelType == 0)
-      {
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27BGK(blocknx1, blocknx2, blocknx3, true));
-      }
-      else if (kernelType == 1)
-      {
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-      }
-      else if (kernelType == 2)
-      {
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3));
-      }
-
-      BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-      if (refineLevel > 0)
-      {
-         D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-         grid->accept(undefNodesVisitor);
-      }
-
-      //walls
-      grid->addAndInitInteractor(addWallYminInt);
-      grid->addAndInitInteractor(addWallZminInt);
-      grid->addAndInitInteractor(addWallYmaxInt);
-      grid->addAndInitInteractor(addWallZmaxInt);
-
-      //obstacle
-      //grid->addAndInitInteractor(cylinderInt);
-
-      //inflow
-      grid->addAndInitInteractor(inflowInt);
-
-      //outflow
-      grid->addAndInitInteractor(outflowInt);
-
-      //initialization of distributions
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(1.0);
-      //initVisitor.setVx1(fct);
-      grid->accept(initVisitor);
-
-      //Postrozess
-      UbSchedulerPtr geoSch(new UbScheduler(1));
-      D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-         new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, comm, true));
-      ppgeo->update(0);
-      ppgeo.reset();
-
-      if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double outTime = 1.0;
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      //UbSchedulerPtr stepSch(new UbScheduler());
-      //stepSch->addSchedule(10, 100, 1000);
-      //nodeSch->addSchedule(1000, 1000, 10000);
-      //nodeSch->addSchedule(10000, 10000, 50000);
-      //stepSch->addSchedule(100, 100, 1000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      UbSchedulerPtr visSch(new UbScheduler());
-      //UbSchedulerPtr visSch(stepSch);
-      double endTime = UbSystem::stringTo<int>(cf.getValue("endTime"));//10001.0;
-
-      //cout << "PID = " << myid << " Total Physical Memory (RAM): " << MemoryUtil::getTotalPhysMem()<<endl;
-      //cout << "PID = " << myid << " Physical Memory currently used: " << MemoryUtil::getPhysMemUsed()<<endl;
-      //cout << "PID = " << myid << " Physical Memory currently used by current process: " << MemoryUtil::getPhysMemUsedByMe()<<endl;
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
\ No newline at end of file
diff --git a/apps/cpu/block_test/block_test_incompressible.hpp b/apps/cpu/block_test/block_test_incompressible.hpp
deleted file mode 100644
index eaa6c1b78838a64416465e2ceabc55a1e1bb4ceb..0000000000000000000000000000000000000000
--- a/apps/cpu/block_test/block_test_incompressible.hpp
+++ /dev/null
@@ -1,522 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <boost/pointer_cast.hpp>
-
-#include "vfluids.h"
-
-using namespace std;
-
-#include <omp.h>
-
-void block_test_incompressible(const char *cstr1, const char *cstr2)
-{
-
-   try
-   {
-
-      //Sleep(30000);
-
-      ConfigFileReader cf(cstr1);
-      if ( !cf.read() )
-      {
-         std::string exceptionText = "Unable to read configuration file\n";
-         throw exceptionText;
-      }
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname = cf.getValue("path"); 
-      int numOfThreads = UbSystem::stringTo<int>(cf.getValue("numOfThreads"));
-      double availMem = 0;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if(machine == "BOMBADIL") 
-      {
-         //pathname = "c:/temp/block_test";
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         //pathname = "/work/koskuche/scratch/block_test";
-         availMem = 12.0e9;
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-
-      //if(myid ==0)
-      //{
-      //   UbLog::reportingLevel() = logDEBUG5;
-      //   stringstream logFilename;
-      //   logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-      //   UbLog::output_policy::setStream(logFilename.str());
-      //}
-
-      double dx = 1.0;
-
-      const int blocknx1 = UbSystem::stringTo<int>(cf.getValue("blocknx1")); //16;
-      const int blocknx2 = UbSystem::stringTo<int>(cf.getValue("blocknx2"));//16;
-      const int blocknx3 = UbSystem::stringTo<int>(cf.getValue("blocknx3"));//16;
-
-      const int gridNx1 = UbSystem::stringTo<int>(cf.getValue("gridNx1"));//3;
-      const int gridNx2 = UbSystem::stringTo<int>(cf.getValue("gridNx2"));//3;
-      const int gridNx3 = UbSystem::stringTo<int>(cf.getValue("gridNx3"));//3;
-
-
-      double L1 = gridNx1*blocknx1*dx;
-      double L2, L3, H;
-      L2 = L3 = H = gridNx2*blocknx1*dx;
-
-      LBMReal radius = 3.0*dx;
-      LBMReal uLB = 0.01;
-      LBMReal Re = 0.5;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
-      LBMReal nuLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-      //LBMReal nueLB = 0.005842;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = UbSystem::stringTo<int>(cf.getValue("refineLevel"));
-
-      //bounding box
-      double d_minX1 = 0.0;
-      double d_minX2 = 0.0;
-      double d_minX3 = 0.0;
-
-      double d_maxX1 = L1;
-      double d_maxX2 = L2;
-      double d_maxX3 = L3;
-
-      double offs = 0.0;
-
-      //double g_minX1 = d_minX1-offs-0.499999*dx;
-      double g_minX1 = d_minX1-offs;
-      double g_minX2 = d_minX2-offs;
-      double g_minX3 = d_minX3-offs;
-
-      double g_maxX1 = d_maxX1+offs;
-      double g_maxX2 = d_maxX2+offs;
-      double g_maxX3 = d_maxX3+offs;
-
-      double blockLength = blocknx1*dx;
-
-      //obstacle
-      GbObject3DPtr cylinder(new GbCylinder3D(L1*0.5-2*blockLength, L2*0.5+dx, -1.0*dx, L1*0.5-2*blockLength, L2*0.5+dx, L3+1.0*dx, radius));
-      GbSystem3D::writeGeoObject(cylinder.get(),pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-      D3Q27InteractorPtr cylinderInt;
-      D3Q27InteractorPtr addWallZminInt;
-
-      //refinement area
-      double off = dx;
-      GbObject3DPtr refineCube(new  GbCuboid3D(cylinder->getX1Minimum()-off, cylinder->getX2Minimum()-off, cylinder->getX3Minimum(), 
-         cylinder->getX1Maximum()+off, cylinder->getX2Maximum()+off, cylinder->getX3Maximum()));
-
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance()); 
-
-      Grid3DPtr grid(new Grid3D(comm));
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-      //Grid3DPtr grid(new Grid3D(comm, blocknx1, blocknx2, blocknx3, gridNx1, gridNx2, gridNx3));
-      //grid->setPeriodicX1(true);
-      //grid->setPeriodicX2(true);
-      //grid->setPeriodicX3(true);
-
-      double outTime = 1.0;
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      //PostprocessorPtr pp; //(new D3Q27MacroscopicQuantitiesPostprocessor(grid, stepSch, pathname + "/steps/step", WbWriterVtkXmlASCII::getInstance(), conv, comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(1000,10,10000));
-      //RestartPostprocessor rp(grid, rSch, comm, pathname, RestartPostprocessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (grid->getTimeStep() == 0)
-      {
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         //rp->addPostprocessor(pp);
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"Parameters:");
-            UBLOG(logINFO,"L = " << L2/dx );
-            UBLOG(logINFO,"v = " << uLB );
-            UBLOG(logINFO,"rho = " << rhoLB );
-            UBLOG(logINFO,"nue = " << nuLB );
-            UBLOG(logINFO,"Re = " << Re );
-            UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,"number of levels = " << refineLevel+1 );
-            UBLOG(logINFO,"numOfThreads = " << numOfThreads );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-         if(myid ==0) GbSystem3D::writeGeoObject(refineCube.get(),pathname + "/geo/refineCube", WbWriterVtkXmlBinary::getInstance());
-
-         //walls
-         GbCuboid3DPtr addWallYmin (new GbCuboid3D(d_minX1-blockLength, d_minX2-blockLength, d_minX3-blockLength, d_maxX1+blockLength, d_minX2, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin (new GbCuboid3D(d_minX1-blockLength, d_minX2-blockLength, d_minX3-blockLength, d_maxX1+blockLength, d_maxX2+blockLength, d_minX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax (new GbCuboid3D(d_minX1-blockLength, d_maxX2, d_minX3-blockLength, d_maxX1+blockLength, d_maxX2+blockLength, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-blockLength, d_minX2-blockLength, d_maxX3, d_maxX1+blockLength, d_maxX2+blockLength, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-blockLength, d_minX2-blockLength, d_minX3-blockLength, d_minX1, d_maxX2+blockLength, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1, d_minX2-blockLength, d_minX3-blockLength, d_maxX1+blockLength, d_maxX2+blockLength, d_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         //GbCuboid3DPtr addWallYmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_maxX2-2*dx, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         //if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         //GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_maxX3-2*dx, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         //if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         ////inflow
-         //GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_minX1+2*dx, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         //if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         ////outflow
-         //GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1-2*dx, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         //if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(refineCube, refineLevel);
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-
-         int bbOptionC = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObstC(new D3Q27NoSlipBCAdapter(bbOptionC));
-         cylinderInt = D3Q27InteractorPtr ( new D3Q27Interactor(cylinder, grid, bcObstC,Interactor3D::SOLID));
-
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         //walls
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst,Interactor3D::SOLID));
-         addWallZminInt = D3Q27InteractorPtr(new D3Q27Interactor(addWallZmin, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst,Interactor3D::SOLID));
-
-         mu::Parser fct;
-         //fct.SetExpr("16*U*x2*x3*(H-x2)*(H-x3)/H^4");
-         //fct.SetExpr("-4*U*(x2^2-H*x2)/H^2");
-         //fct.DefineConst("U", 3/2*uLB);
-         //fct.DefineConst("H", H);
-
-         fct.SetExpr("U");
-         fct.DefineConst("U", uLB);
-
-         //inflow
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-         velBCAdapter->setSecondaryBcOption(2);
-         //double dp_Ph=0.1*10000.0;//
-         //double dp_lb=dp_Ph*0.001*(nueLB*dx)*(nueLB*dx);//nue_ph=10e-6
-         //if(myid == 0) UBLOG(logINFO,"dp_lb = " << dp_lb );
-         //D3Q27BoundaryConditionAdapterPtr denBCAdapterFront(new D3Q27DensityBCAdapter(3.0*(dp_lb-rhoLB)));
-         //denBCAdapterFront->setSecondaryBcOption(0);
-         D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-         //D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, denBCAdapterFront, Interactor3D::SOLID));
-
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         denBCAdapter->setSecondaryBcOption(0);
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-         //D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, bcObst,Interactor3D::SOLID));
-
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(cylinderInt);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.selectBlocks();
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx1) * (blocknx2) * (blocknx3);
-         unsigned long nod = nob * (blocknx1) * (blocknx2) * (blocknx3);
-         unsigned long nodg = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-         double needMemAll  = double(nodg*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for(int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO,"Number of blocks for level " << level <<" = " << nob);
-               UBLOG(logINFO,"Number of nodes for level " << level <<" = " << nob*nodb);
-            }
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }            
-
-         //int kernelType = UbSystem::stringTo<int>(cf.getValue("kernel"));
-         LBMKernel3DPtr kernel;
-         //if (kernelType == 0)
-         //{
-         //   rhoLB = 1.0;
-         //   kernel = LBMKernel3DPtr(new LBMKernelETD3Q27BGK(blocknx1, blocknx2, blocknx3, true));
-         //}
-         //else if (kernelType == 1)
-         //{
-         //   rhoLB = 1.0;
-         //   kernel = LBMKernel3DPtr(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-         //}
-         //else if (kernelType == 2)
-         //{
-            rhoLB = 0.0;
-            kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-            //kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLBWithSpongeLayer(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-            //int nx[4];
-            //nx[0]=gridNx1*blocknx1*(1<<refineLevel);
-            //nx[1]=gridNx2*blocknx2*(1<<refineLevel);
-            //nx[2]=gridNx3*blocknx3*(1<<refineLevel);
-            //nx[3]=refineLevel+1;
-            //EsoTwistD3Q27SparseData::setSize(nx);
-            //kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLBSparse(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLBSparse::NORMAL));
-            //kernel = LBMKernel3DPtr(new LBMKernelESD3Q27CCLB(blocknx1, blocknx2, blocknx3, grid));
-            //kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLBex(blocknx1, blocknx2, blocknx3, 0, grid));
-         //}
-
-         //int sizeSP=2;
-         //mu::Parser spongeLayer;
-         //spongeLayer.SetExpr("x1>=(sizeX-sizeSP)/dx ? (sizeX-(x1+1))/sizeSP/2.0 + 0.5 : 1.0");
-         //spongeLayer.DefineConst("sizeX", gridNx1*blocknx1);
-         //spongeLayer.DefineConst("sizeSP", sizeSP*blocknx1);
-         //kernel->setWithSpongeLayer(true);
-         //kernel->setSpongeLayer(spongeLayer);
-
-
-
-         //mu::Parser fctForcingX1;
-         //fctForcingX1.SetExpr("Fx1");
-         //fctForcingX1.DefineConst("Fx1", 9.99685e-7);
-
-         //kernel->setForcingX1(fctForcingX1);
-         //kernel->setWithForcing(true);
-         //
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         //BCProcessorPtr bcProc(new D3Q27ETForThinWallBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-
-         grid->accept(kernelVisitor);
-
-         //////////////////////////////////////////////////////////////////////////
-         //Experemintel
-         //////////////////////////////////////////////////////////////////////////
-         //int minInitLevel = grid->getCoarsestInitializedLevel();
-
-         //for(int level = minInitLevel; level<=maxInitLevel; level++)
-         //{
-         //   vector<Block3DPtr> blockVector;
-         //   grid->getBlocks(level, blockVector);
-         //   BOOST_FOREACH(Block3DPtr block, blockVector)
-         //   {
-         //      if (block)
-         //      {
-         //         boost::dynamic_pointer_cast<LBMKernelESD3Q27CCLB>(block->getKernel())->initNeighbours();
-         //      }
-         //   }
-         //}
-         //////////////////////////////////////////////////////////////////////////
-
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //UbSchedulerPtr geoSch(new UbScheduler(1));
-         //D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-         // new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, comm, true));
-         //ppgeo->update(0);
-         //ppgeo.reset();
-
-         //return;
-
-         intHelper.setBC();
-
-         //initialization of distributions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-         //initVisitor.setVx1(fct);
-         //initVisitor.setNu(nueLB);
-         //initVisitor.setVx1(0.01);
-         //initVisitor.setVx2(0.02);
-         //initVisitor.setVx3(0.03);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         //UbSchedulerPtr geoSch(new UbScheduler(1));
-         //D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-         //   new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, comm, true));
-         //ppgeo->update(0);
-         //ppgeo.reset();
-
-         {
-            UbSchedulerPtr geoSch(new UbScheduler(1));
-            //D3Q27MacroscopicQuantitiesPostprocessor ppgeo(grid,geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv,  comm, true);
-            D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-               new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, true));
-            //grid->addObserver(ppgeo);
-            grid->doPostProcess(0);
-            //grid->notifyObservers(0);
-            //grid->removeObserver(ppgeo);
-         }
-
-         //grid->notifyObservers(0);
-
-         //UbSchedulerPtr stepSch(new UbScheduler(outTime));
-         //D3Q27MacroscopicQuantitiesPostprocessorPtr pp(new D3Q27MacroscopicQuantitiesPostprocessor(grid, stepSch, pathname + "/steps/step", WbWriterVtkXmlASCII::getInstance(), conv));
-         //rp->addPostprocessor(pp);
-
-         //for (int i=0; i < 10; i++)
-         //{
-         //   grid->doPostProcess(i);
-         //}
-
-         //return;
-
-         //UbSchedulerPtr rs(new UbScheduler(3));
-         //D3Q27ShearStressPostprocessorPtr shsPp(new D3Q27ShearStressPostprocessor(grid,pathname + "/shs/shs", WbWriterVtkXmlASCII::getInstance(), stepSch, rs));
-         //shsPp->addInteractor(boost::dynamic_pointer_cast<D3Q27Interactor>(addWallZminInt));
-         //rp->addPostprocessor(shsPp);
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-      }
-
-      else
-      {
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         if(myid == 0) UBLOG(logINFO,"Restart - end"); 
-      }
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, numOfThreads, comm);
-
-      //UbSchedulerPtr visSch(new UbScheduler());
-      //visSch->addSchedule(1,1,3);
-      //visSch->addSchedule(100,100,1000);
-      //visSch->addSchedule(1000,1000,5000);
-      //visSch->addSchedule(5000,5000,100000);
-      //visSch->addSchedule(100000,100000,10000000);
-
-      
-      D3Q27IntegrateValuesHelperPtr ih1(new D3Q27IntegrateValuesHelper(grid, comm, gridCube->getX1Minimum(), gridCube->getX2Minimum(), gridCube->getX3Minimum(), 
-         gridCube->getX1Maximum(), gridCube->getX2Maximum(), gridCube->getX3Maximum()));
-      if (myid == 0) GbSystem3D::writeGeoObject(ih1->getBoundingBox().get(), pathname + "/geo/ih1", WbWriterVtkXmlBinary::getInstance());
-
-      double factorp = 1; // dp_real / dp_LB;
-      double factorv = 1;// dx / dt;
-      UbSchedulerPtr stepMV(new UbScheduler(500));
-
-      TimeseriesPostprocessor tsp(grid, stepMV, ih1, pathname+cf.getValue("timeSeriesOut"), comm);
-
-      UbSchedulerPtr visSch(stepSch);
-
-      //UbSchedulerPtr avSch(new UbScheduler());
-      //avSch->addSchedule(100,100,10000);
-      //
-      //double startStep = 32000;
-      //UbSchedulerPtr resSchRMS(new UbScheduler());
-      //resSchRMS->addSchedule(100000, startStep, 10000000);
-      //UbSchedulerPtr resSchMeans(new UbScheduler());
-      //resSchMeans->addSchedule(100000, startStep, 10000000);
-      //UbSchedulerPtr stepAvSch(new UbScheduler());
-      //int averageInterval=100;
-      //stepAvSch->addSchedule(averageInterval,0,10000000);
-
-      //AverageValuesPostprocessor Avpp(grid, pathname, WbWriterVtkXmlBinary::getInstance(), visSch/*wann wird rausgeschrieben*/, stepAvSch/*wann wird gemittelt*/, resSchMeans,resSchRMS/*wann wird resettet*/);
-
-      UbSchedulerPtr emSch(new UbScheduler(100));
-      //EmergencyExitPostprocessor empr(grid, emSch, pathname, RestartPostprocessorPtr(&rp), comm);
-
-      //rp->addPostprocessor(avPp);
-
-      //D3Q27ShearStressPostprocessor shs(grid,pathname, WbWriterVtkXmlASCII::getInstance(), stepSch, resSchMeans);
-      //shs.addInteractor(boost::dynamic_pointer_cast<D3Q27Interactor>(addWallZminInt));
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv);
-
-      //UbSchedulerPtr visSch(new UbScheduler(1));
-
-      double endTime = UbSystem::stringTo<int>(cf.getValue("endTime"));//10001.0;
-
-      cout << "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe()<<endl;
-
-      //#pragma omp parallel num_threads(4)
-      //      {
-      //         int i = omp_get_thread_num();
-      //         printf_s("Hello from thread %d\n", i);
-      //      }
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
-
-
diff --git a/apps/cpu/block_test/block_test_periodic.hpp b/apps/cpu/block_test/block_test_periodic.hpp
deleted file mode 100644
index ab6d2ad4145b00f94ce41434328479d12b29980e..0000000000000000000000000000000000000000
--- a/apps/cpu/block_test/block_test_periodic.hpp
+++ /dev/null
@@ -1,430 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "vfluids.h"
-
-using namespace std;
-
-
-void block_test_periodic(const char *cstr1, const char *cstr2)
-{
-   try
-   {
-      ConfigFileReader cf(cstr1);
-      if ( !cf.read() )
-      {
-         std::string exceptionText = "Unable to read configuration file\n";
-         throw exceptionText;
-      }
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname = cf.getValue("path"); 
-      int numOfThreads = UbSystem::stringTo<int>(cf.getValue("numOfThreads"));
-      double availMem = 0;
-
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-
-      if(machine == "BOMBADIL") 
-      {
-         //pathname = "c:/temp/block_test";
-         availMem = 3.0e9;
-      }
-      else if(machine == "HICEGATE0")      
-      {
-         //pathname = "/work/koskuche/scratch/block_test";
-         availMem = 6.0e9;
-
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      double dx = 1;
-
-      const int blocknx1 = UbSystem::stringTo<int>(cf.getValue("blocknx1")); //16;
-      const int blocknx2 = UbSystem::stringTo<int>(cf.getValue("blocknx2"));//16;
-      const int blocknx3 = UbSystem::stringTo<int>(cf.getValue("blocknx3"));//16;
-
-      const int gridNx1 = UbSystem::stringTo<int>(cf.getValue("gridNx1"));//3;
-      const int gridNx2 = UbSystem::stringTo<int>(cf.getValue("gridNx2"));//3;
-      const int gridNx3 = UbSystem::stringTo<int>(cf.getValue("gridNx3"));//3;
-
-
-      double L1 = gridNx1*blocknx1;
-      double L2, L3, H;
-      L2 = L3 = H = gridNx2*blocknx1;
-
-      LBMReal radius = 3;
-      LBMReal uLB = 0.05;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
-      //LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-      LBMReal nueLB = 0.05842;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = UbSystem::stringTo<int>(cf.getValue("refineLevel"));
-
-      //obstacle
-      GbObject3DPtr cylinder(new GbCylinder3D(L1*0.5, L2*0.5, 0, L1*0.5, L2*0.5, L3, radius));
-      GbSystem3D::writeGeoObject(cylinder.get(),pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-      D3Q27InteractorPtr cylinderInt;
-
-      //bounding box
-      double d_minX1 = 0.0;
-      double d_minX2 = 0.0;
-      double d_minX3 = 0.0;
-
-      double d_maxX1 = L1;
-      double d_maxX2 = L2;
-      double d_maxX3 = L3;
-
-      double offs = dx;
-
-      //double g_minX1 = d_minX1-offs-0.499999*dx;
-      double g_minX1 = d_minX1-offs;
-      double g_minX2 = d_minX2-offs;
-      double g_minX3 = d_minX3-offs;
-
-      double g_maxX1 = d_maxX1+offs;
-      double g_maxX2 = d_maxX2+offs;
-      double g_maxX3 = d_maxX3+offs;
-
-      double blockLength = blocknx1*dx;
-
-      //refinement area
-      double off = 1;
-      GbObject3DPtr refineCube(new  GbCuboid3D(cylinder->getX1Minimum()-off, cylinder->getX2Minimum()-off, cylinder->getX3Minimum(), 
-         cylinder->getX1Maximum()+off, cylinder->getX2Maximum()+off, cylinder->getX3Maximum()));
-
-      Grid3DPtr grid(new Grid3D(comm, blocknx1, blocknx2, blocknx3, gridNx1, gridNx2, gridNx3));
-      grid->setPeriodicX1(true);
-      grid->setPeriodicX2(true);
-      grid->setPeriodicX3(true);
-
-      UbSchedulerPtr rSch(new UbScheduler());
-      rSch->addSchedule(5000, 5000, 5000);
-      RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::TXT));
-
-      std::string opt;
-
-      if(cstr2!= NULL)
-         opt = std::string(cstr2);
-
-      if/*(cstr== NULL)*/(cstr2!= NULL)
-      {
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-         grid = rp->restart(UbSystem::stringTo<int>(opt));
-
-         SetForcingBlockVisitor forcingVisitor(0.0, 0.0, 0.0);
-         grid->accept(forcingVisitor);
-
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-      }
-      else
-{
-      if(myid ==0)
-      {
-         UBLOG(logINFO,"Parameters:");
-         UBLOG(logINFO,"L = " << L2/dx );
-         UBLOG(logINFO,"v = " << uLB );
-         UBLOG(logINFO,"rho = " << rhoLB );
-         UBLOG(logINFO,"nue = " << nueLB );
-         UBLOG(logINFO,"Re = " << Re );
-         UBLOG(logINFO,"dx = " << dx );
-         UBLOG(logINFO,"number of levels = " << refineLevel+1 );
-         UBLOG(logINFO,"number of threads = " << numOfThreads );
-         UBLOG(logINFO,"number of processes = " << comm->getNumberOfProcesses() );
-         UBLOG(logINFO,"Preprocess - start");
-      }
-
-      //if(myid ==0) GbSystem3D::writeGeoObject(refineCube.get(),pathname + "/geo/refineCube", WbWriterVtkXmlBinary::getInstance());
-
-      //walls
-      GbCuboid3DPtr addWallYmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_minX2, d_maxX3+4.0*blockLength));
-      //if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallZmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_minX3));
-      //if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallYmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_maxX2, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      //if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_maxX3, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      //if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-      //inflow
-      GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_minX1, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      //if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-      //outflow
-      GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      //if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-      //GbCuboid3DPtr addWallYmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_maxX2-2*dx, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      //if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-      //GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_maxX3-2*dx, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      //if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-      ////inflow
-      //GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_minX1+2*dx, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      //if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-      ////outflow
-      //GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1-2*dx, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      //if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-//      BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-
-      if (refineLevel > 0)
-      {
-         if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-         RefineCrossAndInsideGbObjectBlockVisitor refVisitor(refineCube, refineLevel);
-         grid->accept(refVisitor);
-
-         RatioBlockVisitor ratioVisitor(refineLevel);
-         grid->accept(ratioVisitor);
-
-         RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-         grid->accept(ratioSmoothVisitor);
-
-         OverlapBlockVisitor overlapVisitor(refineLevel);
-         grid->accept(overlapVisitor);
-
-         std::vector<int> dirs;
-         D3Q27System::getLBMDirections(dirs);
-         SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-         grid->accept(interDirsVisitor);
-         if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-      }
-
-      MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B, true, numOfThreads);
-      grid->accept( metisVisitor );
-
-      SolidBlocksHelper sd(grid, comm);
-
-      int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-      D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-      cylinderInt = D3Q27InteractorPtr ( new D3Q27Interactor(cylinder, grid, bcObst,Interactor3D::SOLID));
-
-      //walls
-      D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcObst,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst,Interactor3D::SOLID));
-
-      mu::Parser fct;
-      fct.SetExpr("16*U*x2*x3*(H-x2)*(H-x3)/H^4");
-      fct.DefineConst("U", uLB);
-      fct.DefineConst("H", H);
-      fct.SetExpr("U");
-
-      //inflow
-      D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-      velBCAdapter->setSecondaryBcOption(2);
-      //D3Q27BoundaryConditionAdapterPtr denBCAdapterFront(new D3Q27DensityBCAdapter(rhoLB));
-      //denBCAdapterFront->setSecondaryBcOption(1);
-      D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-      //D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, bcObst, Interactor3D::SOLID));
-
-      //outflow
-      D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-      denBCAdapter->setSecondaryBcOption(1);
-      D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-      //D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, bcObst,Interactor3D::SOLID));
-
-      //sd.addInteractor(cylinderInt);
-      //sd.addInteractor(addWallYminInt);
-      //sd.addInteractor(addWallZminInt);
-      //sd.addInteractor(addWallYmaxInt);
-      //sd.addInteractor(addWallZmaxInt);
-      //sd.addInteractor(inflowInt);
-      //sd.addInteractor(outflowInt);
-
-      //sd.deleteSolidBlocks();
-
-      grid->accept( metisVisitor );
-
-      //set connectors
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-      D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-      grid->accept( setConnsVisitor );
-
-      //domain decomposition for threads
-      //PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      //grid->accept(pqPartVisitor);
-
-//      ppblocks->update(0);
-//      ppblocks.reset();
-
-      unsigned long nob = grid->getNumberOfBlocks();
-      int gl = 3;
-      unsigned long nodb = (blocknx1) * (blocknx2) * (blocknx3);
-      unsigned long nod = nob * (blocknx1) * (blocknx2) * (blocknx3);
-      unsigned long nodg = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-      double needMemAll  = double(nodg*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-      double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"Number of blocks = " << nob);
-         UBLOG(logINFO,"Number of nodes  = " << nod);
-         int minInitLevel = grid->getCoarsestInitializedLevel();
-         int maxInitLevel = grid->getFinestInitializedLevel();
-         for(int level = minInitLevel; level<=maxInitLevel; level++)
-         {
-            int nobl = grid->getNumberOfBlocks(level);
-            UBLOG(logINFO,"Number of blocks for level " << level <<" = " << nob);
-            UBLOG(logINFO,"Number of nodes for level " << level <<" = " << nob*nodb);
-         }
-         UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-         UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-         UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-      }            
-
-      int kernelType = UbSystem::stringTo<int>(cf.getValue("kernel"));
-      LBMKernel3DPtr kernel;
-      if (kernelType == 0)
-      {
-         rhoLB = 1.0;
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27BGK(blocknx1, blocknx2, blocknx3, true));
-      }
-      else if (kernelType == 1)
-      {
-         rhoLB = 1.0;
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-      }
-      else if (kernelType == 2)
-      {
-         rhoLB = 0.0;
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, 0));
-         //kernel = LBMKernel3DPtr(new LBMKernelESD3Q27CCLB(blocknx1, blocknx2, blocknx3, grid));
-         //kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLBex(blocknx1, blocknx2, blocknx3, 0, grid));
-      }
-
-      //mu::Parser fctForcingX1;
-      //fctForcingX1.SetExpr("Fx1");
-      //fctForcingX1.DefineConst("Fx1", 9.99685e-7);
-
-      //kernel->setForcingX1(fctForcingX1);
-      //kernel->setWithForcing(true);
-      //
-      BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-      //////////////////////////////////////////////////////////////////////////
-      //Experemintel
-      //////////////////////////////////////////////////////////////////////////
-      //int minInitLevel = grid->getCoarsestInitializedLevel();
-      //int maxInitLevel = grid->getFinestInitializedLevel();
-
-      //for(int level = minInitLevel; level<=maxInitLevel; level++)
-      //{
-      //   vector<Block3DPtr> blockVector;
-      //   grid->getBlocks(level, blockVector);
-      //   BOOST_FOREACH(Block3DPtr block, blockVector)
-      //   {
-      //      if (block)
-      //      {
-      //         boost::dynamic_pointer_cast<LBMKernelESD3Q27CCLB>(block->getKernel())->initNeighbours();
-      //      }
-      //   }
-      //}
-      //////////////////////////////////////////////////////////////////////////
-
-
-      if (refineLevel > 0)
-      {
-         D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-         grid->accept(undefNodesVisitor);
-      }
-
-      //walls
-      //grid->addAndInitInteractor(addWallYminInt);
-      //grid->addAndInitInteractor(addWallZminInt);
-      //grid->addAndInitInteractor(addWallYmaxInt);
-      //grid->addAndInitInteractor(addWallZmaxInt);
-
-
-      //addWallYminInt->updateInteractor(0);
-
-      //obstacle
-      //grid->addAndInitInteractor(cylinderInt);
-
-      //inflow
-      //grid->addAndInitInteractor(inflowInt);
-
-      //outflow
-      //grid->addAndInitInteractor(outflowInt);
-
-      //initialization of distributions
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(rhoLB);
-      initVisitor.setVx1(0.0);
-      grid->accept(initVisitor);
-
-      //Postrozess
-      //UbSchedulerPtr geoSch(new UbScheduler(1));
-      //D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-         //new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, comm, true));
-      //ppgeo->update(0);
-      //ppgeo.reset();
-
-      if(myid == 0) UBLOG(logINFO,"Preprocess - end"); 
-}
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double outTime = 500.0;
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      //UbSchedulerPtr stepSch(new UbScheduler());
-      //stepSch->addSchedule(10, 100, 1000);
-      //nodeSch->addSchedule(1000, 1000, 10000);
-      //nodeSch->addSchedule(10000, 10000, 50000);
-      //stepSch->addSchedule(100, 100, 1000);
-
-      //D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname + "/steps/step", WbWriterVtkXmlASCII::getInstance(), conv, comm);
-
-      UbSchedulerPtr visSch(new UbScheduler());
-      //UbSchedulerPtr visSch(stepSch);
-      double endTime = UbSystem::stringTo<int>(cf.getValue("endTime"));//10001.0;
-
-      //cout << "PID = " << myid << " Total Physical Memory (RAM): " << MemoryUtil::getTotalPhysMem()<<endl;
-      //cout << "PID = " << myid << " Physical Memory currently used: " << MemoryUtil::getPhysMemUsed()<<endl;
-      //cout << "PID = " << myid << " Physical Memory currently used by current process: " << MemoryUtil::getPhysMemUsedByMe()<<endl;
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
- 
-
diff --git a/apps/cpu/block_test/config.txt b/apps/cpu/block_test/config.txt
deleted file mode 100644
index 6551aad25ba6d6e1d38e533077a414cb81047138..0000000000000000000000000000000000000000
--- a/apps/cpu/block_test/config.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-#number of threads
-numOfThreads = 3
-
-#block dimensions
-blocknx1 = 8
-blocknx2 = 8
-blocknx3 = 8
-
-#grid dimensions
-gridNx1 = 8
-gridNx2 = 4
-gridNx3 = 4
-
-#grid refinement
-refineLevel = 0
-
-path = "/work/koskuche/scratch/block_test"
-
-#BGK=0, CLB=1, CCLB=2
-kernel = 0
\ No newline at end of file
diff --git a/apps/cpu/bond_benchmark/CMakeLists.txt b/apps/cpu/bond_benchmark/CMakeLists.txt
deleted file mode 100644
index a059287d53b6ba3b66e0fa446f7f9c0a5f4367ca..0000000000000000000000000000000000000000
--- a/apps/cpu/bond_benchmark/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(bond_b)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(bond_b BINARY)
diff --git a/apps/cpu/bond_benchmark/bonb_b_chanel.cpp b/apps/cpu/bond_benchmark/bonb_b_chanel.cpp
deleted file mode 100644
index 3753ebea683a520dfd34fd2a78f392f169442214..0000000000000000000000000000000000000000
--- a/apps/cpu/bond_benchmark/bonb_b_chanel.cpp
+++ /dev/null
@@ -1,335 +0,0 @@
-
-#include <vfluids.h>
-
-#include "fbond.h"
-#include "Version.h"
-
-
-using namespace std;
-
-
-//////////////////////////////////////////////////////////////////////////
-void chanel(const char *cstr)
-{
-   try
-   {
-      ConfigFileReader cf(cstr);
-      if ( !cf.read() )
-      {
-         std::string exceptionText = "Unable to read configuration file\n";
-         throw exceptionText;
-      }
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      int numOfThreads = UbSystem::stringTo<int>(cf.getValue("numOfThreads"));
-      double availMem = 0;
-
-      CommunicatorPtr comm;
-
-      string comm_type = cf.getValue("comm");
-      if(comm_type == "MPI")
-         comm = MPICommunicator::getInstance();
-      else if(comm_type == "BOND")
-         comm = BondCommunicator::getInstance();
-      
-      int myid = comm->getProcessID();
-      int mybundle = comm->getBundleID();
-      int root = comm->getRoot();
-
-      //UbLog::reportingLevel() = logDEBUG5;
-      
-      
-      pathname = cf.getValue("path");
-
-      if(machine == "BOMBADIL") 
-      {
-         //pathname = "c:/temp/bond_test";
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         //pathname = "/work/koskuche/scratch/bond_test";
-         availMem = 1.5e9;
-
-         if(myid==root && mybundle==root)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(mybundle)+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      
-      double dx = 1;
-
-      const int blocknx1 = UbSystem::stringTo<int>(cf.getValue("blocknx1")); //16;
-      const int blocknx2 = UbSystem::stringTo<int>(cf.getValue("blocknx2"));//16;
-      const int blocknx3 = UbSystem::stringTo<int>(cf.getValue("blocknx3"));//16;
-
-      const int gridNx1 = UbSystem::stringTo<int>(cf.getValue("gridNx1"));//3;
-      const int gridNx2 = UbSystem::stringTo<int>(cf.getValue("gridNx2"));//3;
-      const int gridNx3 = UbSystem::stringTo<int>(cf.getValue("gridNx3"));//3;
-
-
-      double L1 = gridNx1*blocknx1;
-      double L2, L3, H;
-      L2 = L3 = H = gridNx2*blocknx1;
-
-      LBMReal radius = 7;
-      LBMReal uLB = 0.05;
-      LBMReal Re = 300.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = L2 / dx;
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = UbSystem::stringTo<int>(cf.getValue("refineLevel"));
-
-      //obstacle
-      GbObject3DPtr cylinder(new GbCylinder3D(L1*0.5, L2*0.5, 0, L1*0.5, L2*0.5, L3, radius));
-      GbSystem3D::writeGeoObject(cylinder.get(),pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-      D3Q27InteractorPtr cylinderInt;
-
-      //bounding box
-      double d_minX1 = 0.0;
-      double d_minX2 = 0.0;
-      double d_minX3 = 0.0;
-
-      double d_maxX1 = L1;
-      double d_maxX2 = L2;
-      double d_maxX3 = L3;
-
-      double offs = dx;
-
-      //double g_minX1 = d_minX1-offs-0.499999*dx;
-      double g_minX1 = d_minX1-offs;
-      double g_minX2 = d_minX2-offs;
-      double g_minX3 = d_minX3-offs;
-
-      double g_maxX1 = d_maxX1+offs;
-      double g_maxX2 = d_maxX2+offs;
-      double g_maxX3 = d_maxX3+offs;
-
-      double blockLength = blocknx1*dx;
-
-      //refinement area
-      double off = 1;
-      GbObject3DPtr refineCube(new  GbCuboid3D(cylinder->getX1Minimum()-off, cylinder->getX2Minimum()-off, cylinder->getX3Minimum(), 
-         cylinder->getX1Maximum()+off, cylinder->getX2Maximum()+off, cylinder->getX3Maximum()));
-
-      Grid3DPtr grid(new Grid3D(comm, blocknx1, blocknx2, blocknx3, gridNx1, gridNx2, gridNx3));
-
-
-      if(myid ==0)
-      {
-         UBLOG(logINFO,"Parameters:");
-         UBLOG(logINFO,"L = " << L2/dx );
-         UBLOG(logINFO,"v = " << uLB );
-         UBLOG(logINFO,"rho = " << rhoLB );
-         UBLOG(logINFO,"nue = " << nueLB );
-         UBLOG(logINFO,"Re = " << Re );
-         UBLOG(logINFO,"dx = " << dx );
-         UBLOG(logINFO,"number of levels = " << refineLevel+1 );
-         UBLOG(logINFO,"numOfThreads = " << numOfThreads );
-         UBLOG(logINFO,"Preprozess - start");
-      }
-
-      if(myid ==0) GbSystem3D::writeGeoObject(refineCube.get(),pathname + "/geo/refineCube", WbWriterVtkXmlBinary::getInstance());
-
-      //walls
-      GbCuboid3DPtr addWallYmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_minX2, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallZmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_minX3));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallYmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_maxX2, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_maxX3, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-      //inflow
-      GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_minX1, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-      //outflow
-      GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-      BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-
-      if (refineLevel > 0)
-      {
-         if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-         RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-         refineHelper.addGbObject(refineCube, 1);
-         refineHelper.refine();
-         if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-      }
-
-      
-      if(comm_type == "MPI")
-      {
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B, true, numOfThreads);
-         grid->accept( metisVisitor );
-      }
-      else if(comm_type == "BOND")
-      {
-         MetisPartitioningWithBundlesGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B, true, numOfThreads);
-         grid->accept( metisVisitor );
-      }
-      
-      int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-      D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-      cylinderInt = D3Q27InteractorPtr ( new D3Q27Interactor(cylinder, grid, bcObst,Interactor3D::SOLID));
-
-      //walls
-      D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcObst,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst,Interactor3D::SOLID));
-
-      mu::Parser fct;
-      fct.SetExpr("16*U*x2*x3*(H-x2)*(H-x3)/H^4");
-      fct.DefineConst("U", uLB);
-      fct.DefineConst("H", H);
-
-      //inflow
-      D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-      velBCAdapter->setSecondaryBcOption(2);
-      D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-      //outflow
-      D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-      D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-      ppblocks->update(0);
-      ppblocks.reset();
-
-      //set connectors
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-
-      if(comm_type == "MPI")
-      {
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-      }
-      else if(comm_type == "BOND")
-      {
-         D3Q27BondSetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-      }
-
-      //domain decomposition for threads
-      //PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      //grid->accept(pqPartVisitor);
-
-      unsigned long nob = grid->getNumberOfBlocks();
-      int gl = 3;
-      unsigned long nod = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-
-      double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-      double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"Number of blocks = " << nob);
-         UBLOG(logINFO,"Number of nodes  = " << nod);
-         UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-         UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-         UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-      }            
-
-      //LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-      LBMKernel3DPtr kernel(new LBMKernelETD3Q27BGK(blocknx1, blocknx2, blocknx3, true));
-      //option = 0 - ohne param., option = 1 - mit param.
-      //int option = 0;
-      //LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, option));
-
-      BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-      if (refineLevel > 0)
-      {
-         D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-         grid->accept(undefNodesVisitor);
-      }
-
-      //walls
-      grid->addAndInitInteractor(addWallYminInt);
-      grid->addAndInitInteractor(addWallZminInt);
-      grid->addAndInitInteractor(addWallYmaxInt);
-      grid->addAndInitInteractor(addWallZmaxInt);
-
-      //obstacle
-      //grid->addAndInitInteractor(cylinderInt);
-
-      //inflow
-      grid->addAndInitInteractor(inflowInt);
-
-      //outflow
-      grid->addAndInitInteractor(outflowInt);
-
-      //initialization of distributions
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(nueLB, rhoLB);
-      //initVisitor.setVx1(fct);
-      grid->accept(initVisitor);
-
-      //Postrozess
-      UbSchedulerPtr geoSch(new UbScheduler(1));
-      D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-         new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, true));
-      ppgeo->update(0);
-      ppgeo.reset();
-
-      if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-
-            //double outTime = 100.0;
-      UbSchedulerPtr stepSch(new UbScheduler());
-      //stepSch->addSchedule(10, 0, 1000);
-      //nodeSch->addSchedule(1000, 1000, 10000);
-      //nodeSch->addSchedule(10000, 10000, 50000);
-      //nodeSch->addSchedule(100, 100, 10000);
-
-      //D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      double step = UbSystem::stringTo<double>(cf.getValue("step"));
-      double begin = UbSystem::stringTo<double>(cf.getValue("begin"));
-      double end = UbSystem::stringTo<double>(cf.getValue("end"));
-      
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      UbSchedulerPtr visSch(new UbScheduler(10.0));
-      double endTime = UbSystem::stringTo<double>(cf.getValue("endTime"));;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepSch));
-      //if(myid == 0) 
-      UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      //if(myid == 0) 
-      UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
\ No newline at end of file
diff --git a/apps/cpu/bond_benchmark/bond_b.cpp b/apps/cpu/bond_benchmark/bond_b.cpp
deleted file mode 100644
index e85f9347796f3a0223f45d851bef28c91913fcaa..0000000000000000000000000000000000000000
--- a/apps/cpu/bond_benchmark/bond_b.cpp
+++ /dev/null
@@ -1,337 +0,0 @@
-#ifdef VF_BOND
-
-#include <iostream>
-#include <string>
-
-#include <vfluids.h>
-
-#include "fbond.h"
-#include "Version.h"
-
-#include <stdlib.h>
-
-using namespace std;
-
-
-//////////////////////////////////////////////////////////////////////////
-void periodic(const char *cstr1, const char *cstr2)
-{
-   try
-   {
-      //Sleep(10000);
-      ConfigFileReader cf(cstr1);
-      if ( !cf.read() )
-      {
-         std::string exceptionText = "Unable to read configuration file\n";
-         throw exceptionText;
-      }
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      int numOfThreads = UbSystem::stringTo<int>(cf.getValue("numOfThreads"));
-      double availMem = 0;
-
-      CommunicatorPtr comm;
-
-      string comm_type = cf.getValue("comm");
-      if(comm_type == "MPI")
-         comm = MPICommunicator::getInstance();
-      else if(comm_type == "BOND")
-         comm = BondCommunicator::getInstance();
-
-      int myid = comm->getProcessID();
-      int mybundle = comm->getBundleID();
-      int root = comm->getRoot();
-
-      UbLog::reportingLevel() = logDEBUG5;
-      system("hostname");
-      
-////////////////////////////////////////////// 
-//       char hostname[1024];
-//       hostname[1023] = '\0';
-//       gethostname(hostname, 1023);
-//       puts(hostname);
-//       UBLOG(logINFO,"hostname = " << string(hostname) );
-//////////////////////////////////////////////      
-
-      pathname = cf.getValue("path");
-
-      if(machine == "BOMBADIL") 
-      {
-         //pathname = "c:/temp/bond_test";
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         //pathname = "/work/koskuche/scratch/bond_test";
-         availMem = 1.5e9;
-
-         if(myid==root /*&& mybundle==root*/)
-         {
-            //UBLOG(logINFO,"bundle = " << mybundle);
-            //UBLOG(logINFO,"process ID = " << myid);
-            stringstream logFilename;
-            //logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(mybundle)+"_"+UbSystem::toString(myid)+"_"+comm_type+".txt";
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(comm->getNumberOfProcesses())+"p_"+comm_type+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-            //UbLog::reportingLevel() = logDEBUG5;
-         }
-      }
-      else if(machine == "HICEGATE0")      
-      {
-         //pathname = "/work/koskuche/scratch/block_test";
-         availMem = 6.0e9;
-
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      } 
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      //UBLOG(logINFO,"bundle = " << mybundle);
-      //UBLOG(logINFO,"process ID = " << myid);
-
-      double dx = 1;
-
-      const int blocknx1 = UbSystem::stringTo<int>(cf.getValue("blocknx1")); //16;
-      const int blocknx2 = UbSystem::stringTo<int>(cf.getValue("blocknx2"));//16;
-      const int blocknx3 = UbSystem::stringTo<int>(cf.getValue("blocknx3"));//16;
-
-      const int gridNx1 = UbSystem::stringTo<int>(cf.getValue("gridNx1"));//3;
-      const int gridNx2 = UbSystem::stringTo<int>(cf.getValue("gridNx2"));//3;
-      const int gridNx3 = UbSystem::stringTo<int>(cf.getValue("gridNx3"));//3;
-
-      double L1 = gridNx1*blocknx1;
-      double L2, L3, H;
-      L2 = L3 = H = gridNx2*blocknx1;
-
-      LBMReal uLB = 0.05;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal nueLB = 0.05842;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = UbSystem::stringTo<int>(cf.getValue("refineLevel"));
-
-      //bounding box
-      double d_minX1 = 0.0;
-      double d_minX2 = 0.0;
-      double d_minX3 = 0.0;
-
-      double d_maxX1 = L1;
-      double d_maxX2 = L2;
-      double d_maxX3 = L3;
-
-      double offs = dx;
-
-      double g_minX1 = d_minX1-offs;
-      double g_minX2 = d_minX2-offs;
-      double g_minX3 = d_minX3-offs;
-
-      double g_maxX1 = d_maxX1+offs;
-      double g_maxX2 = d_maxX2+offs;
-      double g_maxX3 = d_maxX3+offs;
-
-      double blockLength = blocknx1*dx;
-
-      //refinement area
-      //double off = 1;
-      //GbObject3DPtr refineCube(new  GbCuboid3D(cylinder->getX1Minimum()-off, cylinder->getX2Minimum()-off, cylinder->getX3Minimum(), 
-      //   cylinder->getX1Maximum()+off, cylinder->getX2Maximum()+off, cylinder->getX3Maximum()));
-
-      Grid3DPtr grid(new Grid3D(comm, blocknx1, blocknx2, blocknx3, gridNx1, gridNx2, gridNx3));
-      grid->setPeriodicX1(true);
-      grid->setPeriodicX2(true);
-      grid->setPeriodicX3(true);
-
-
-      if(myid ==0)
-      {
-         //UBLOG(logINFO,"bundle = " << mybundle);
-         //UBLOG(logINFO,"process ID = " << myid);
-         UBLOG(logINFO,"Parameters:");
-         UBLOG(logINFO,"Communicator =  " << comm_type);
-         UBLOG(logINFO,"Grid size =  " << gridNx1);
-         UBLOG(logINFO,"L = " << L1 );
-         UBLOG(logINFO,"v = " << uLB );
-         UBLOG(logINFO,"rho = " << rhoLB );
-         UBLOG(logINFO,"nue = " << nueLB );
-         UBLOG(logINFO,"Re = " << Re );
-         UBLOG(logINFO,"dx = " << dx );
-         UBLOG(logINFO,"number of levels = " << refineLevel+1 );
-         UBLOG(logINFO,"number of threads = " << numOfThreads );
-         UBLOG(logINFO,"number of processes = " << comm->getNumberOfProcesses() );
-         UBLOG(logINFO,"Preprocess - start");
-      }
-
-
-      //if (refineLevel > 0)
-      //{
-      //   if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-      //   RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-      //   refineHelper.addGbObject(refineCube, 1);
-      //   refineHelper.refine();
-      //   if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-      //}
-
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-
-      if(comm_type == "MPI")
-      {
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B, true, numOfThreads);
-         grid->accept( metisVisitor );
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-      }
-      else if(comm_type == "BOND")
-      {
-         //MetisPartitioningWithBundlesGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B, true, numOfThreads);
-	 MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B, true, numOfThreads);
-         grid->accept( metisVisitor );
-         D3Q27BondSetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         setConnsVisitor.activate();
-      }
-
-      BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-      ppblocks->update(0);
-      ppblocks.reset();
-
-      unsigned long nob = grid->getNumberOfBlocks();
-      int gl = 3;
-
-      unsigned long nod = nob * (blocknx1) * (blocknx2) * (blocknx3);
-      unsigned long nodg = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-      double needMemAll  = double(nodg*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-      double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"Number of blocks = " << nob);
-         UBLOG(logINFO,"Number of nodes  = " << nod);
-         int minInitLevel = grid->getCoarsestInitializedLevel();
-         int maxInitLevel = grid->getFinestInitializedLevel();
-         unsigned long nodb = (blocknx1) * (blocknx2) * (blocknx3);
-         for(int level = minInitLevel; level<=maxInitLevel; level++)
-         {
-            unsigned long nobl = grid->getNumberOfBlocks(level);
-            UBLOG(logINFO,"Number of blocks for level " << level <<" = " << nobl);
-            UBLOG(logINFO,"Number of nodes for level " << level <<" = " << nobl*nodb);
-         }
-         UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-         UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-         UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-      }            
-
-      LBMKernel3DPtr kernel;
-      rhoLB = 0.0;
-      kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-
-      BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-      //if (refineLevel > 0)
-      //{
-      //   D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-      //   grid->accept(undefNodesVisitor);
-      //}
-
-      //initialization of distributions
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(nueLB, rhoLB);
-      initVisitor.setVx1(0.0);
-      grid->accept(initVisitor);
-
-      if(myid == 0) UBLOG(logINFO,"Preprocess - end"); 
-      
-      UbSchedulerPtr stepSch(new UbScheduler());
-      
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      UbSchedulerPtr visSch(new UbScheduler());
-      double endTime = UbSystem::stringTo<int>(cf.getValue("endTime"));//10001.0;
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"//////////////////////////////////////////////////////////////////////////");
-         UBLOG(logINFO,"System information:");
-         UBLOG(logINFO,"Total Physical Memory (RAM): " << Utilities::getTotalPhysMem()/1073741824.0<< " GB");
-         UBLOG(logINFO,"Physical Memory currently used: " << Utilities::getPhysMemUsed()/1073741824.0<<" GB");
-         UBLOG(logINFO,"Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         UBLOG(logINFO,"//////////////////////////////////////////////////////////////////////////");
-      }
-
-      CalculationManagerPtr calculation;
-      if(comm_type == "MPI")
-         calculation = CalculationManagerPtr(new CalculationManager(grid, numOfThreads, endTime, stepSch, CalculationManager::MPI));
-      else if(comm_type == "BOND")
-         calculation = CalculationManagerPtr(new CalculationManager(grid, numOfThreads, endTime, stepSch, CalculationManager::MPI));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   int returnval = 0;
-   try
-   {
-      if ( argv != NULL )
-      {
-         if (argc > 1)
-         {
-            //chanel(argv[1]);
-            periodic(argv[1], argv[2]);
-         }
-         else
-         {
-            cout << "Configuration file must be set!: " <<  argv[0] << " <config file>" << endl << std::flush;
-         }
-      }
-   }
-   catch(std::runtime_error& e)
-   {
-      std::cerr<<"\nRUNTIME ERROR: "<<e.what()<<"\n"<<std::endl;
-   }
-   catch(...)
-   {
-      std::cerr<<"unknown error"<<std::endl;
-   }
-   return returnval;
-}
-
-#endif
-
-
-
-
-
-
-
-
-
diff --git a/apps/cpu/bond_benchmark/bond_b_test.cpp b/apps/cpu/bond_benchmark/bond_b_test.cpp
deleted file mode 100644
index 8ad0b60c37d84ef7038fd0c016ba6fd8146bc504..0000000000000000000000000000000000000000
--- a/apps/cpu/bond_benchmark/bond_b_test.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <vfluids.h>
-
-#include "fbond.h"
-#include "Version.h"
-
-
-using namespace std;
-
-
-int agent_main();
-
-int main(int argc, char* argv[])
-{
-   int returnval = 0;
-   try
-   {
-      bond::init();
-      returnval = agent_main();
-      bond::finalize();
-   }
-   catch(std::runtime_error& e)
-   {
-      std::cerr<<"\nRUNTIME ERROR: "<<e.what()<<"\n"<<std::endl;
-   }
-   catch(...)
-   {
-      std::cerr<<"unknown error"<<std::endl;
-   }
-   return returnval;
-}
-
-
-int agent_main()
-{
-   cout<<"\n=== bond lib info:\n"<<bond::Version::info()<<"\n===\n\n";
-
-   string pathname = "/work/koskuche/scratch/bond_benchmark";
-
-   // try to work around a bug in mpich (at least mpich2-1.4.1p1 and mpich2-1.5a1)
-   int _mpiInitialized = (int)false;
-   MPI_Initialized(&_mpiInitialized);
-   if(!_mpiInitialized)
-   {
-      MPI_Init(0, 0);	
-      _mpiInitialized = true;
-   }
-
-   int mpi_rank;
-   MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
-   int mpi_size;
-   MPI_Comm_size(MPI_COMM_WORLD, &mpi_size);
-   cout<<"I am process "<<bond::processID()<<" of "<<bond::processCount()
-      <<", bundle ID "<<bond::bundleID()<<" of "<<bond::bundleCount()
-      <<", MPI rank "<<mpi_rank<<" of "<<mpi_size<<"\n";
-
-   stringstream logFilename;
-   logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(bond::bundleID())+".txt";
-   UbLog::output_policy::setStream(logFilename.str());
-
-   vector<double> data(42);
-   data[0] = 123.1;
-   data[data.size()-1] = -999.1;  
-
-   vector<double> data2(42);
-   data2[0] = 123.2;
-   data2[data2.size()-1] = -999.2;     
-
-   std::tr1::shared_ptr<bond::FutureReceive> receiveRequest[8];
-   int id = bond::processID();
-
-   UBLOG(logINFO, "I am process "<<bond::processID()<<" of "<<bond::processCount()
-      <<", bundle ID "<<bond::bundleID()<<" of "<<bond::bundleCount()
-      <<", MPI rank "<<mpi_rank<<" of "<<mpi_size);
-
-   for(int i = 0; i < 8; i++)
-   {
-      UBLOG(logINFO, "bond::receiveFuture:start "<< i);
-      if(i == id) continue;
-      receiveRequest[i] = bond::receiveFuture(&data[0], data.size(), MPI_DOUBLE, i, 0);  
-      UBLOG(logINFO, "bond::receiveFuture:end "<< i);
-   }
-
-   for(int i = 0; i < 8; i++)
-   {
-      UBLOG(logINFO, "bond::sendComplete:start "<< i);
-      if(i == id) continue;
-      bond::sendComplete(&data2[0], data2.size(), MPI_DOUBLE, i, 0); 
-      UBLOG(logINFO, "bond::sendComplete:end "<<i);
-   }
-
-   for(int i = 0; i < 8; i++)
-   {
-      UBLOG(logINFO, "receiveRequest->complete:start "<<i);
-      if(i == id) continue;
-      receiveRequest[i]->complete();  
-      UBLOG(logINFO, "receiveRequest->complete:end "<<i);
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/bond_benchmark/config.txt b/apps/cpu/bond_benchmark/config.txt
deleted file mode 100644
index 7c83ead3a3acec963e60fa429e713b09ec865fda..0000000000000000000000000000000000000000
--- a/apps/cpu/bond_benchmark/config.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-#number of threads
-numOfThreads = 1
-
-#block dimesions
-blocknx1 = 8
-blocknx2 = 8
-blocknx3 = 8
-
-#grid dimensions
-gridNx1 = 20
-#100
-gridNx2 = 6
-#20
-gridNx3 = 6
-#20
-
-#grid refinement
-refineLevel = 0
-
-#communication
-comm=MPI
-#comm=BOND
-
-#simulation
-path = /work/koskuche/scratch/bond_b
-endTime = 101
-
-#NUPS count scheduler
-step  = 10
-begin = 20
-end   = 100
diff --git a/apps/cpu/bond_test/CMakeLists.txt b/apps/cpu/bond_test/CMakeLists.txt
deleted file mode 100644
index a13830a0264757027227dc484337e75e4e2ee13c..0000000000000000000000000000000000000000
--- a/apps/cpu/bond_test/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(bond_test)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(bond_test BINARY)
diff --git a/apps/cpu/bond_test/bond_test.cpp b/apps/cpu/bond_test/bond_test.cpp
deleted file mode 100644
index 6511603e0108cc4b77409e1b1394692750c9349b..0000000000000000000000000000000000000000
--- a/apps/cpu/bond_test/bond_test.cpp
+++ /dev/null
@@ -1,500 +0,0 @@
-#ifdef VF_BOND
-
-#include <iostream>
-#include <string>
-
-#include <vfluids.h>
-
-#include "fbond.h"
-#include "Version.h"
-
-
-using namespace std;
-
-int agent_main();
-void simulation(const char *cstr);
-
-int main(int argc, char* argv[])
-{
-   int returnval = 0;
-   try
-   {
-      bond::init();
-      returnval = agent_main();
-      bond::finalize();
-
-      //CommunicatorPtr comm(new BondCommunicator());
-      //cout<<"Bundle ID = "<<comm->getBundleID()<<", MPI rank = "<<comm->getProcessID()<<", root = "<<comm->getRoot()<<endl;
-
-      //if ( argv != NULL )
-      //{
-      //   if (argc > 1)
-      //   {
-      //      simulation(argv[1]);
-      //   }
-      //   else
-      //   {
-      //      cout << "Configuration file must be set!: " <<  argv[0] << " <config file>" << endl << std::flush;
-      //   }
-      //}
-   }
-   catch(std::runtime_error& e)
-   {
-      std::cerr<<"\nRUNTIME ERROR: "<<e.what()<<"\n"<<std::endl;
-   }
-   catch(...)
-   {
-      std::cerr<<"unknown error"<<std::endl;
-   }
-   return returnval;
-}
-
-
-int agent_main()
-{
-   cout<<"\n=== bond lib info:\n"<<bond::Version::info()<<"\n===\n\n";
-
-   // try to work around a bug in mpich (at least mpich2-1.4.1p1 and mpich2-1.5a1)
-   int _mpiInitialized = (int)false;
-   MPI_Initialized(&_mpiInitialized);
-   if(!_mpiInitialized)
-      MPI_Init(0, 0);	
-
-   int mpi_rank;
-   MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
-   int mpi_size;
-   MPI_Comm_size(MPI_COMM_WORLD, &mpi_size);
-   cout<<"I am process "<<bond::processID()<<" of "<<bond::processCount()
-      <<", bundle ID "<<bond::bundleID()<<" of "<<bond::bundleCount()
-      <<", MPI rank "<<mpi_rank<<" of "<<mpi_size<<"\n";
-
-   if(bond::processID() == 0)
-   {
-      try
-      {
-         Sleep(10000);
-         // send
-         vector<double> data(42);
-         data[0] = 123.1;
-         data[data.size()-1] = -999.1;
-
-         int dst_rank = 1;
-         int msg_tag = 42;
-         cout<<"["<<bond::processID()<<"] nonblocking send ... "<<data[0]<<"..."<<data[data.size()-1]<<"\n";
-         std::tr1::shared_ptr<bond::FutureSend> fus = bond::sendFuture(&data[0], data.size(), MPI_DOUBLE, dst_rank, msg_tag);
-
-         vector<double> data2(42);
-         data2[0] = 123.2;
-         data2[data2.size()-1] = -999.2;
-         cout<<"["<<bond::processID()<<"] blocking send ... "<<data2[0]<<"..."<<data2[data.size()-1]<<"\n";
-         bond::sendComplete(&data2[0], data2.size(), MPI_DOUBLE, dst_rank, msg_tag);
-
-         //Sleep(10000);
-
-         fus->complete();
-      }
-      catch(std::runtime_error& e)
-      {
-         std::cerr<<"\nSEND ERROR: "<<e.what()<<"\n"<<std::endl;
-      }
-   }
-   else
-   {
-      try
-      {
-         // receive
-         vector<double> data(42);
-         int src_rank = 0;
-         cout<<"["<<bond::processID()<<"] nonblocking receive ...\n";
-         int msg_tag = 42;
-         std::tr1::shared_ptr<bond::FutureReceive> fur = bond::receiveFuture(&data[0], data.size(), MPI_DOUBLE, src_rank, msg_tag);
-
-
-         //Sleep(10000);
-
-         cout<<"["<<bond::processID()<<"] blocking receive ...\n";
-         vector<double> data2(42);
-         bond::receiveComplete(&data2[0], data2.size(), MPI_DOUBLE, src_rank, msg_tag);
-         cout<<"received blocking "<<data2[0]<<"..."<<data2[data.size()-1]<<"\n";
-
-         
-
-         fur->complete();
-         cout<<"received nonblocking "<<data[0]<<"..."<<data[data.size()-1]<<"\n";
-      }
-      catch(std::runtime_error& e)
-      {
-         std::cerr<<"\nRECEIVE ERROR: "<<e.what()<<"\n"<<std::endl;
-      }
-   }
-
-   cout<<"process "<<bond::processID()<<" done\n";
-   return 0;
-}
-//////////////////////////////////////////////////////////////////////////
-void simulation(const char *cstr)
-{
-   try
-   {
-      ConfigFileReader cf(cstr);
-      if ( !cf.read() )
-      {
-         std::string exceptionText = "Unable to read configuration file\n";
-         throw exceptionText;
-      }
-
-      //UbLog::reportingLevel() = logDEBUG5;
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname = cf.getValue("path"); 
-      int numOfThreads = UbSystem::stringTo<int>(cf.getValue("numOfThreads"));
-      double availMem = 0;
-
-      CommunicatorPtr comm;
-      string comm_type = cf.getValue("comm");
-      if(comm_type == "MPI")
-         comm = MPICommunicator::getInstance();
-      else if(comm_type == "BOND")
-         comm = BondCommunicator::getInstance();
-
-      int myid = comm->getProcessID();
-      int mybundle = comm->getBundleID();
-      int root = comm->getRoot();
-
-      //UbLog::reportingLevel() = logDEBUG5;
-
-      if(machine == "BOMBADIL") 
-      {
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         availMem = 12.0e9;
-
-         if(myid==root && mybundle==root)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      double dx = 1;
-
-      const int blocknx1 = UbSystem::stringTo<int>(cf.getValue("blocknx1")); //16;
-      const int blocknx2 = UbSystem::stringTo<int>(cf.getValue("blocknx2"));//16;
-      const int blocknx3 = UbSystem::stringTo<int>(cf.getValue("blocknx3"));//16;
-
-      const int gridNx1 = UbSystem::stringTo<int>(cf.getValue("gridNx1"));//3;
-      const int gridNx2 = UbSystem::stringTo<int>(cf.getValue("gridNx2"));//3;
-      const int gridNx3 = UbSystem::stringTo<int>(cf.getValue("gridNx3"));//3;
-
-
-      double L1 = gridNx1*blocknx1;
-      double L2, L3, H;
-      L2 = L3 = H = gridNx2*blocknx1;
-
-      LBMReal radius = 7;
-      LBMReal uLB = 0.05;
-      LBMReal Re = 300.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = UbSystem::stringTo<int>(cf.getValue("refineLevel"));
-
-      //obstacle
-      GbObject3DPtr cylinder(new GbCylinder3D(L1*0.5, L2*0.5, 0, L1*0.5, L2*0.5, L3, radius));
-      GbSystem3D::writeGeoObject(cylinder.get(),pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-      D3Q27InteractorPtr cylinderInt;
-
-      //bounding box
-      double d_minX1 = 0.0;
-      double d_minX2 = 0.0;
-      double d_minX3 = 0.0;
-
-      double d_maxX1 = L1;
-      double d_maxX2 = L2;
-      double d_maxX3 = L3;
-
-      double offs = dx;
-
-      //double g_minX1 = d_minX1-offs-0.499999*dx;
-      double g_minX1 = d_minX1-offs;
-      double g_minX2 = d_minX2-offs;
-      double g_minX3 = d_minX3-offs;
-
-      double g_maxX1 = d_maxX1+offs;
-      double g_maxX2 = d_maxX2+offs;
-      double g_maxX3 = d_maxX3+offs;
-
-      double blockLength = blocknx1*dx;
-
-      //refinement area
-      double off = 1;
-      GbObject3DPtr refineCube(new  GbCuboid3D(cylinder->getX1Minimum()-off, cylinder->getX2Minimum()-off, cylinder->getX3Minimum(), 
-         cylinder->getX1Maximum()+off, cylinder->getX2Maximum()+off, cylinder->getX3Maximum()));
-
-      Grid3DPtr grid(new Grid3D(comm, blocknx1, blocknx2, blocknx3, gridNx1, gridNx2, gridNx3));
-
-      //grid->setPeriodicX1(true);
-      //grid->setPeriodicX2(true);
-      //grid->setPeriodicX3(true);
-
-
-      if(myid ==0)
-      {
-         UBLOG(logINFO,"Parameters:");
-         UBLOG(logINFO,"L = " << L2/dx );
-         UBLOG(logINFO,"v = " << uLB );
-         UBLOG(logINFO,"rho = " << rhoLB );
-         UBLOG(logINFO,"nue = " << nueLB );
-         UBLOG(logINFO,"Re = " << Re );
-         UBLOG(logINFO,"dx = " << dx );
-         UBLOG(logINFO,"number of levels = " << refineLevel+1 );
-         UBLOG(logINFO,"numOfThreads = " << numOfThreads );
-         UBLOG(logINFO,"Preprozess - start");
-      }
-
-      if(myid ==0) GbSystem3D::writeGeoObject(refineCube.get(),pathname + "/geo/refineCube", WbWriterVtkXmlBinary::getInstance());
-
-      //walls
-      GbCuboid3DPtr addWallYmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_minX2, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallZmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_minX3));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallYmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_maxX2, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_maxX3, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-      //inflow
-      GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_minX1, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-      //outflow
-      GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-      BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-
-      if (refineLevel > 0)
-      {
-         if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-         RefineCrossAndInsideGbObjectBlockVisitor refVisitor(refineCube, refineLevel);
-         grid->accept(refVisitor);
-
-         RatioBlockVisitor ratioVisitor(refineLevel);
-         grid->accept(ratioVisitor);
-
-         RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-         grid->accept(ratioSmoothVisitor);
-
-         OverlapBlockVisitor overlapVisitor(refineLevel);
-         grid->accept(overlapVisitor);
-
-         std::vector<int> dirs;
-         D3Q27System::getLBMDirections(dirs);
-         SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-         grid->accept(interDirsVisitor);
-         if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-      }
-
-
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-
-      if(comm_type == "MPI")
-      {
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B, true, numOfThreads);
-         grid->accept( metisVisitor );
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-      }
-      else if(comm_type == "BOND")
-      {
-         MetisPartitioningWithBundlesGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B, true, numOfThreads);
-         grid->accept( metisVisitor );
-         D3Q27BondSetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         setConnsVisitor.activate();
-      }
-      
-      int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-      D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-      cylinderInt = D3Q27InteractorPtr ( new D3Q27Interactor(cylinder, grid, bcObst,Interactor3D::SOLID));
-
-      //walls
-      D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcObst,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst,Interactor3D::SOLID));
-
-      mu::Parser fct;
-      fct.SetExpr("16*U*x2*x3*(H-x2)*(H-x3)/H^4");
-      fct.DefineConst("U", uLB);
-      fct.DefineConst("H", H);
-
-      //inflow
-      D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-      velBCAdapter->setSecondaryBcOption(2);
-      D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-      //outflow
-      D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-      D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-      //SolidBlocksHelper sd(grid, comm);
-      //sd.addInteractor(cylinderInt);
-      //sd.addInteractor(addWallYminInt);
-      //sd.addInteractor(addWallZminInt);
-      //sd.addInteractor(addWallYmaxInt);
-      //sd.addInteractor(addWallZmaxInt);
-      //sd.addInteractor(inflowInt);
-      //sd.addInteractor(outflowInt);
-
-      //sd.deleteSolidBlocks();
-
-      //grid->accept( metisVisitor );
-
-      //grid->getBlock(0)->setBundle(0);
-      //grid->getBlock(0)->setRank(0);
-      //grid->getBlock(1)->setBundle(1);
-      //grid->getBlock(1)->setRank(1);
-      //grid->getBlock(2)->setBundle(0);
-      //grid->getBlock(2)->setRank(0);
-      //grid->getBlock(3)->setBundle(1);
-      //grid->getBlock(3)->setRank(1);
-      //grid->getBlock(4)->setBundle(0);
-      //grid->getBlock(4)->setRank(0);
-      //grid->getBlock(5)->setBundle(1);
-      //grid->getBlock(5)->setRank(1);
-      //grid->getBlock(6)->setBundle(1);
-      //grid->getBlock(6)->setRank(1);
-      //grid->getBlock(7)->setBundle(0);
-      //grid->getBlock(7)->setRank(0);
-
-      ppblocks->update(0);
-      ppblocks.reset();
-
-      unsigned long nob = grid->getNumberOfBlocks();
-      int gl = 3;
-      unsigned long nod = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-
-      double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-      double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"Number of blocks = " << nob);
-         UBLOG(logINFO,"Number of nodes  = " << nod);
-         UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-         UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-         UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-      }            
-
-      //LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-      //LBMKernel3DPtr kernel(new LBMKernelETD3Q27BGK(blocknx1, blocknx2, blocknx3, true));
-      //option = 0 - ohne param., option = 1 - mit param.
-      int option = 0;
-      LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-
-      BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-      if (refineLevel > 0)
-      {
-         D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-         grid->accept(undefNodesVisitor);
-      }
-
-      //walls
-      grid->addAndInitInteractor(addWallYminInt);
-      grid->addAndInitInteractor(addWallZminInt);
-      grid->addAndInitInteractor(addWallYmaxInt);
-      grid->addAndInitInteractor(addWallZmaxInt);
-
-      //obstacle
-      //grid->addAndInitInteractor(cylinderInt);
-
-      //inflow
-      grid->addAndInitInteractor(inflowInt);
-
-      //outflow
-      grid->addAndInitInteractor(outflowInt);
-
-      //initialization of distributions
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(nueLB, rhoLB);
-      initVisitor.setVx1(fct);
-      grid->accept(initVisitor);
-
-      //Postrozess
-      UbSchedulerPtr geoSch(new UbScheduler(1));
-      D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-         new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, true));
-      ppgeo->update(0);
-      ppgeo.reset();
-
-      if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-
-            //double outTime = 100.0;
-      UbSchedulerPtr stepSch(new UbScheduler());
-      stepSch->addSchedule(100, 0, 1000);
-      //nodeSch->addSchedule(1000, 1000, 10000);
-      //nodeSch->addSchedule(10000, 10000, 50000);
-      //nodeSch->addSchedule(100, 100, 10000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      UbSchedulerPtr visSch(new UbScheduler(10.0));
-      double endTime = UbSystem::stringTo<int>(cf.getValue("endTime"));
-      //CalculatorPtr calc = CalculatorPtr(new FETOLCalculator());
-      //CalculatorPtr calc = CalculatorPtr(new Calculator());
-      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepSch, calc));
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepSch));
-      //if(myid == 0) 
-      UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      //if(myid == 0) 
-      UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-#endif
-
-
-
-
-
-
-
-
-
-
-
diff --git a/apps/cpu/bond_test/start.bat b/apps/cpu/bond_test/start.bat
deleted file mode 100644
index ec3fc5640dfcec57412401946ef92a85c9366fec..0000000000000000000000000000000000000000
--- a/apps/cpu/bond_test/start.bat
+++ /dev/null
@@ -1,6 +0,0 @@
-@echo off
-set FETOL_BUNDLE_INFO_PATH=c:\Projects\FETOL\dev\bond_config\YAML_Bond_ConfigFile.yaml
-set FETOL_CLASSPATH=c:\Projects\FETOL\dev\fetol_bond\fetol_bond.jar
-
-set FETOL_BUNDLE_ID=%1
-call %2
\ No newline at end of file
diff --git a/apps/cpu/bone/CMakeLists.txt b/apps/cpu/bone/CMakeLists.txt
deleted file mode 100644
index f03f31b3b06d73c6708883c25ab3db36dc4bb058..0000000000000000000000000000000000000000
--- a/apps/cpu/bone/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(bone)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(bone BINARY)
diff --git a/apps/cpu/bone/bone.cpp b/apps/cpu/bone/bone.cpp
deleted file mode 100644
index a45ece43199d1d8713a7881b952d06de993240ed..0000000000000000000000000000000000000000
--- a/apps/cpu/bone/bone.cpp
+++ /dev/null
@@ -1,568 +0,0 @@
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <vfluids.h>
-
-using namespace std;
-
-void run(const char *cstr1, const char *cstr2)
-{
-   try
-   {
-      string pathname; 
-      string pathGeo;
-      string pathLog;
-      int numOfThreads = 1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      string machine = string(cstr1);
-
-      if(machine == "my") 
-      {
-         pathname = "d:/temp/bone";
-         pathGeo = "d:/Data/Bone/BigBone";
-         pathLog = "d:/temp/bone";
-         numOfThreads = 4;
-         logfile = false;
-         availMem = 15.0e9;
-      }
-      else if(machine == "Ludwig")      
-      {
-         pathname = "/work/koskuche/SFB880/plate2Con";
-         pathGeo = "/home/koskuche/data/plate";
-         pathLog = pathname;
-         numOfThreads = 8;
-         availMem = 12.0e9;///8*numOfThreads;
-         logfile = true;
-      }
-      else if(machine == "HLRS")      
-      {
-         pathname = "/univ_1/ws1/ws/xrmkuchr-plate3-0";
-         pathGeo = "/zhome/academic/HLRS/xrm/xrmkuchr/data/plate";
-         pathLog = "/zhome/academic/HLRS/xrm/xrmkuchr/work/plate";
-         numOfThreads = 16;
-         availMem = 2.0e9;
-         logfile = true;
-      }
-      else if(machine == "HLRN")      
-      {
-         pathname = "/gfs1/work/niivfcpu/scratch/plateEx";
-         pathGeo = "/gfs1/work/niivfcpu/data/plate";
-         pathLog = pathname;
-         numOfThreads = 24;
-         availMem = 64.0e9/24.0*numOfThreads;
-         logfile = true;
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-#if defined(__unix__)
-      if (myid==0) 
-      {
-         const char* str = pathLog.c_str();
-         int status=mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-      }
-#endif 
-
-      if(myid == 0 && logfile)
-      {
-         //UbLog::reportingLevel() = logDEBUG5;
-         logFilename <<  pathLog + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-         UbLog::output_policy::setStream(logFilename.str());
-      }
-
-      if(myid==0) UBLOG(logINFO,"Testcase bone");
-
-      string boneFilename = pathGeo + "/bone.raw";
-      
-      int pmNX1=1800;  //abmessung einzelbild in x-richtung
-      int pmNX2=972; //abmessung einzelbild in y richtung
-      int pmNX3=1164; //anzahl der bilder
-      float lthreshold = 27756.0;
-      float uthreshold = 65535.0;
-
-      GbVoxelMatrix3DPtr pmMesh(new GbVoxelMatrix3D(pmNX1,pmNX2,pmNX3,0,lthreshold,uthreshold));
-      pmMesh->readMatrixFromRawFile<unsigned short>(boneFilename, GbVoxelMatrix3D::BigEndian);
-
-      double scaleFactor = 0.001;
-      double delta = 11.0*scaleFactor;
-      pmMesh->setVoxelMatrixDelta(delta, delta, delta);
-
-      pmMesh->setVoxelMatrixMininum(0.0, 0.0, 0.0);
-      if(myid == 0) pmMesh->writeToLegacyVTKBinary(pathname+"/geo/bone");
-
-      ///////////////////////////////////////////////////////
-      return;
-
-
-      /////////////////Knotenabmessungen:
-      //int nx[3], blocknx[3];
-      //nx[0]      = 90;//240;//120;//60;//86;//43;//65;//50;  //länge
-      //nx[1]      = 2;//2;//6;///1;//5;// //breite
-      //nx[2]      = 30;//64;//32;//18;//5;//15;//15; //höhe gebiet
-      //blocknx[0] = 16;//10;//6;
-      //blocknx[1] = 16;//10;//6;
-      //blocknx[2] = 16;//10;//6;
-
-      //int baseLevel   = 0;
-      //int refineLevel = 4;
-
-      //double H = 600.0; // Kanalhöhe [mm]
-      //double cdx = H/(double)(nx[2]*blocknx[2]);
-      //double fdx = cdx/double(1<<refineLevel);
-
-      ////double h = 200.0; // gewünschte Plattenhöhe in Gitterpunkten
-      ////double fdx = plate->getLengthX3()/h;
-      ////double cdx = fdx*double(1<<refineLevel);
-
-      //LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      ////////////////////////////////////////////////////////////////////////////
-      ////physik
-      ////////////////////////////////////////////////////////////////////////////
-      //double Re            = 1133333.3333333335; 
-      //double rhoLB         = 0.0;
-      //double uLB           = 0.1; 
-      //double lReal         = 1000; //Plattenlänge in mm
-      //double nuLB          = (uLB*(lReal/cdx))/Re;
-
-      //int sizeSP=4;
-      //mu::Parser spongeLayer;
-      //spongeLayer.SetExpr("x1>=(sizeX-sizeSP)/dx ? (sizeX-(x1+1))/sizeSP/2.0 + 0.5 : 1.0");
-      //spongeLayer.DefineConst("sizeX", nx[0]*blocknx[0]);
-      //spongeLayer.DefineConst("sizeSP", sizeSP*blocknx[0]);
-
-      //Grid3DPtr grid(new Grid3D(comm));
-
-      ////////////////////////////////////////////////////////////////////////////
-      ////restart
-      //UbSchedulerPtr rSch(new UbScheduler(1000,1000,10000000));
-      //RestartPostprocessor rp(grid, rSch, comm, pathname, RestartPostprocessor::BINARY);
-      ////////////////////////////////////////////////////////////////////////////
-
-      //if (grid->getTimeStep() == 0)
-      //{
-
-      //   if(myid==0) UBLOG(logINFO,"Neustart..");
-
-      //   //////////////////////////////////////////////////////////////////////////
-      //   //Platte
-      //   GbTriFaceMesh3DPtr plate (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(PlatteFilename,"Netz"));
-      //   plate->rotate(90.0,0.0,0.0);  //TriFacMesh-KO-System anders als LB-KO-System
-      //   if(myid == 0) GbSystem3D::writeGeoObject( plate.get(), pathname+"/geo/platte", WbWriterVtkXmlBinary::getInstance() );
-      //   //////////////////////////////////////////////////////////////////////////
-      //   // Zackenband
-      //   //////////////////////////////////////////////////////////////////////////
-      //   GbTriFaceMesh3DPtr meshBand1 (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand"));
-      //   meshBand1->translate(-495, -700, -19.94);
-      //   if(myid == 0) GbSystem3D::writeGeoObject( meshBand1.get(), pathname+"/geo/Band1", WbWriterVtkXmlASCII::getInstance() );
-      //   // Zackenband2
-      //   GbTriFaceMesh3DPtr meshBand2(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand2"));
-      //   meshBand2->translate(-495, -705, -19.94); 
-      //   if(myid == 0) GbSystem3D::writeGeoObject( meshBand2.get(), pathname+"/geo/Band2", WbWriterVtkXmlASCII::getInstance() );
-      //   // Zackenband3
-      //   GbTriFaceMesh3DPtr meshBand3(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand3"));
-      //   meshBand3->translate(-495, -700, -19.64); 
-      //   if(myid == 0) GbSystem3D::writeGeoObject( meshBand3.get(), pathname+"/geo/Band3", WbWriterVtkXmlASCII::getInstance() );
-      //   // Zackenband4
-      //   GbTriFaceMesh3DPtr meshBand4(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand4"));
-      //   meshBand4->translate(-495, -705, -19.64); 
-      //   if(myid == 0) GbSystem3D::writeGeoObject( meshBand4.get(), pathname+"/geo/Band4", WbWriterVtkXmlASCII::getInstance() );
-      //   //////////////////////////////////////////////////////////////////////////
-
-      //   double blockLengthx1 = blocknx[0]*cdx; //geowerte
-      //   double blockLengthx2 = blockLengthx1;
-      //   double blockLengthx3 = blockLengthx1;
-
-      //   double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3}; 
-
-      //   double originX1 = plate->getX1Minimum()-plate->getLengthX1()/4.0;
-      //   double originX2 = plate->getX2Minimum();
-      //   double originX3 = plate->getX3Minimum()-299.5;
-
-
-      //   bool periodicx1 = false;
-      //   bool periodicx2 = true;
-      //   bool periodicx3 = true;
-
-      //   //bounding box
-      //   double g_minX1 = originX1;
-      //   double g_minX2 = originX2;
-      //   double g_minX3 = originX3;
-
-      //   double g_maxX1 = originX1 + geoLength[0];
-      //   double g_maxX2 = originX2 + geoLength[1];
-      //   double g_maxX3 = originX3 + geoLength[2];;
-
-
-      //   //set grid
-      //   grid->setDeltaX(cdx);
-      //   grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-      //   grid->setPeriodicX1(periodicx1);
-      //   grid->setPeriodicX2(periodicx2);
-      //   grid->setPeriodicX3(periodicx3);
-
-      //   GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      //   gridCube->setCenterCoordinates(gridCube->getX1Centroid(),meshBand1->getX2Centroid(),gridCube->getX3Centroid());
-      //   if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-      //   originX2 = gridCube->getX2Minimum();
-      //   g_minX2 = originX2;
-      //   g_maxX2 = originX2 + geoLength[1];
-
-      //   GenBlocksGridVisitor genBlocks(gridCube);
-      //   grid->accept(genBlocks);
-
-      //   //////////////////////////////////////////////////////////////////////////
-      //   if(myid == 0)
-      //   {
-      //      UBLOG(logINFO, "*****************************************");
-      //      UBLOG(logINFO, "* Parameters                            *");
-      //      UBLOG(logINFO, "* Re            ="<<Re);
-      //      UBLOG(logINFO, "* nuLB          ="<<nuLB);
-      //      UBLOG(logINFO, "* uLB           ="<<uLB);
-      //      UBLOG(logINFO, "* cdx           ="<<cdx);
-      //      UBLOG(logINFO, "* fdx           ="<<fdx);
-      //      double Hzb = 0.6/fdx;
-      //      UBLOG(logINFO, "* Height of Zackenband ="<<Hzb);
-      //      UBLOG(logINFO, "* Re on Zackenband ="<<(uLB*Hzb)/(nuLB*double(1<<refineLevel)));
-      //      UBLOG(logINFO, "* nx1/2/3       ="<<nx[0]<<"/"<<nx[1]<<"/"<<nx[2]);
-      //      UBLOG(logINFO, "* blocknx1/2/3  ="<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-      //      UBLOG(logINFO, "* x1Periodic    ="<<periodicx1);
-      //      UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-      //      UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-      //      UBLOG(logINFO, "* number of levels  ="<<refineLevel+1);
-      //      UBLOG(logINFO, "* path          ="<<pathname);
-
-      //      UBLOG(logINFO, "*****************************************");
-      //      UBLOG(logINFO, "* number of threads    ="<<numOfThreads);
-      //      UBLOG(logINFO, "* number of processes  ="<<comm->getNumberOfProcesses());
-      //      UBLOG(logINFO, "*****************************************");
-      //      UBLOG(logINFO, "*****************************************");     
-      //   }
-      //   //////////////////////////////////////////////////////////////////////////
-
-
-      //   //////////////////////////////////////////////////////////////////////////
-      //   //refinement
-      //   GbCuboid3DPtr refinePlatteBox(new GbCuboid3D(plate->getX1Minimum(), plate->getX2Minimum(), plate->getX3Minimum()+(plate->getX3Maximum()-plate->getX3Minimum())/2.0, 
-      //      plate->getX1Maximum()+40.0, plate->getX2Maximum(), plate->getX3Maximum()));
-      //   if(myid == 0) GbSystem3D::writeGeoObject( refinePlatteBox.get(), pathname+"/geo/refinePlatteBox", WbWriterVtkXmlASCII::getInstance() );
-
-      //   if (refineLevel > 0)
-      //   {
-      //      if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-      //      RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-      //      refineHelper.addGbObject(refinePlatteBox, refineLevel);
-      //      refineHelper.refine();
-      //      if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-      //   }
-
-      //   /////////////////////////////////////////////////
-      //   ///interactoren
-      //   int bbOption1 = 1; //0=simple Bounce Back, 1=quadr. BB
-      //   D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-      //   D3Q27TriFaceMeshInteractorPtr triPlateInteractor( new D3Q27TriFaceMeshInteractor(plate, grid, bcObst,Interactor3D::SOLID));
-      //   D3Q27TriFaceMeshInteractorPtr triBand1Interactor( new D3Q27TriFaceMeshInteractor( meshBand1, grid, bcObst,Interactor3D::SOLID, Interactor3D::EDGES) );
-      //   D3Q27TriFaceMeshInteractorPtr triBand2Interactor( new D3Q27TriFaceMeshInteractor( meshBand2, grid, bcObst,Interactor3D::SOLID, Interactor3D::EDGES) );
-      //   D3Q27TriFaceMeshInteractorPtr triBand3Interactor( new D3Q27TriFaceMeshInteractor( meshBand3, grid, bcObst,Interactor3D::SOLID, Interactor3D::EDGES) );
-      //   D3Q27TriFaceMeshInteractorPtr triBand4Interactor( new D3Q27TriFaceMeshInteractor( meshBand4, grid, bcObst,Interactor3D::SOLID, Interactor3D::EDGES) );
-
-      //   //inflow
-      //   GbCuboid3DPtr velBCCuboid(new GbCuboid3D(originX1-blockLengthx1, originX2-blockLengthx1, originX3-blockLengthx1, 
-      //      originX1, originX2+geoLength[1]+blockLengthx1, originX3+geoLength[2]+blockLengthx1));
-      //   if(myid == 0) GbSystem3D::writeGeoObject(velBCCuboid.get(), pathname+"/geo/velBCCuboid", WbWriterVtkXmlASCII::getInstance());
-      //   D3Q27InteractorPtr velBCInteractor(new D3Q27Interactor(velBCCuboid,grid,Interactor3D::SOLID)); 
-
-      //   //inflow
-      //   double raiseVelSteps = 0;
-      //   vector<D3Q27BCFunction> velcX1BCs,dummy;
-
-      //   mu::Parser inflowProfile;
-      //   inflowProfile.SetExpr("uLB"); 
-      //   inflowProfile.DefineConst("uLB",uLB);
-      //   velcX1BCs.push_back(D3Q27BCFunction(inflowProfile,raiseVelSteps,D3Q27BCFunction::INFCONST));
-
-      //   D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (velcX1BCs,dummy,dummy));
-      //   velBCInteractor->addBCAdapter(velBCAdapter);
-
-      //   //outflow
-      //   GbCuboid3DPtr densCuboid(new GbCuboid3D(originX1+geoLength[0], originX2-blockLengthx1, originX3-blockLengthx1, 
-      //      originX1+geoLength[0]+blockLengthx1, originX2+geoLength[1]+blockLengthx1, originX3+geoLength[2]+blockLengthx1 ));
-      //   if(myid == 0) GbSystem3D::writeGeoObject(densCuboid.get(), pathname+"/geo/densCuboid", WbWriterVtkXmlASCII::getInstance());
-      //   D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-      //   D3Q27InteractorPtr densInteractor( new D3Q27Interactor(densCuboid,grid,denBCAdapter,Interactor3D::SOLID) );
-
-      //   ////////////////////////////////////////////
-      //   //METIS
-      //   Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));	
-
-      //   ////////////////////////////////////////////
-      //   /////delete solid blocks
-      //   if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-      //   InteractorsHelper intHelper(grid, metisVisitor);
-      //   intHelper.addInteractor(triPlateInteractor);
-      //   intHelper.addInteractor(triBand1Interactor);
-      //   intHelper.addInteractor(triBand2Interactor);
-      //   intHelper.addInteractor(triBand3Interactor);
-      //   intHelper.addInteractor(triBand4Interactor);
-      //   intHelper.addInteractor(densInteractor);
-      //   intHelper.addInteractor(velBCInteractor);
-      //   intHelper.selectBlocks();
-      //   if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	 
-      //   //////////////////////////////////////
-
-      //   //domain decomposition for threads
-      //   if(numOfThreads > 1)
-      //   {
-      //      PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      //      grid->accept(pqPartVisitor);
-      //   }
-
-      //   if(myid == 0)
-      //   {
-      //      UBLOG(logINFO,"Write blocks - start");
-      //      BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-      //      ppblocks->update(0);
-      //      UBLOG(logINFO,"Write blocks - end");
-      //   }
-
-      //   unsigned long nob = grid->getNumberOfBlocks();
-      //   unsigned long nod = nob * blocknx[0]*blocknx[1]*blocknx[2];
-      //   unsigned long nod_real = nob * (blocknx[0]+3)*(blocknx[1]+3)*(blocknx[2]+3);
-      //   unsigned long nodb = (blocknx[0]) * (blocknx[1]) * (blocknx[2]);
-
-      //   double needMemAll  = double(nod_real*(27*sizeof(double) + sizeof(int)));
-      //   double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-      //   
-      //   double nup = 0; 
-
-      //   if(myid == 0)
-      //   {
-      //      UBLOG(logINFO,"Number of blocks = " << nob);
-      //      UBLOG(logINFO,"Number of nodes  = " << nod);
-      //      int minInitLevel = grid->getCoarsestInitializedLevel();
-      //      int maxInitLevel = grid->getFinestInitializedLevel();
-      //      for(int level = minInitLevel; level<=maxInitLevel; level++)
-      //      {
-      //         int nobl = grid->getNumberOfBlocks(level);
-      //         UBLOG(logINFO,"Number of blocks for level " << level <<" = " << nobl);
-      //         UBLOG(logINFO,"Number of nodes for level " << level <<" = " << nobl*nodb);
-      //         nup += nobl*nodb*double(1<<level); 
-      //      }
-      //      UBLOG(logINFO,"Hypothetically time for calculation step for 120 nodes  = " << nup/6.0e5/(120*8)  << " s");
-      //      UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-      //      UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-      //      UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-      //      UBLOG(logINFO,"Available memory per node/8.0 = " << (availMem/8.0) << " bytes");
-      //   }
-
-      //   //////////////////////////////////////////
-      //   //set connectors
-      //   if(myid == 0) UBLOG(logINFO,"set connectors - start");
-      //   D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-      //   D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-      //   grid->accept( setConnsVisitor );
-      //   if(myid == 0) UBLOG(logINFO,"set connectors - end");
-
-      //   ////////////////////////////
-      //   LBMKernel3DPtr kernel;
-      //   //kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-
-      //   //with sponge layer
-      //   kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLBWithSpongeLayer(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-      //   kernel->setWithSpongeLayer(true);
-      //   kernel->setSpongeLayer(spongeLayer);
-
-      //   BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      //   kernel->setBCProcessor(bcProc);
-      //   SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-      //   grid->accept(kernelVisitor);
-      //   //////////////////////////////////
-      //   //undef nodes
-      //   if (refineLevel > 0)
-      //   {
-      //      D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-      //      grid->accept(undefNodesVisitor);
-      //   }
-
-
-      //   intHelper.setBC();
-
-      //   //initialization of decompositions
-      //   D3Q27ETInitDistributionsBlockVisitor initVisitor( nuLB,rhoLB);
-      //   initVisitor.setVx1(uLB);
-      //   grid->accept(initVisitor);
-
-      //   //Postprozess
-      //   UbSchedulerPtr geoSch(new UbScheduler(1));
-      //   D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-      //      new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), 
-      //      unitConverter, true));
-      //   ppgeo->update(0);
-      //   ppgeo.reset();
-      //   geoSch.reset();
-
-      //   if(myid == 0) UBLOG(logINFO,"Preprozess - end");      
-      //}
-      //else
-      //{
-      //   //domain decomposition for threads
-      //   if(numOfThreads > 1)
-      //   {
-      //      PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      //      grid->accept(pqPartVisitor);
-      //   }
-      //   //set connectors
-      //   //grid->setPeriodicX3(false);
-      //   D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-      //   D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-      //   grid->accept( setConnsVisitor );
-      //   SetSpongeLayerBlockVisitor ssp(spongeLayer);
-      //   grid->accept(ssp);
-
-      //   //////////////////////////////////////////////////////////////////////////
-      //   //////////////////////////////////////////////////////////////////////////
-      //   //Platte
-      //   GbTriFaceMesh3DPtr plate (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(PlatteFilename,"Netz"));
-      //   plate->rotate(90.0,0.0,0.0);  //TriFacMesh-KO-System anders als LB-KO-System
-      //   if(myid == 0) GbSystem3D::writeGeoObject( plate.get(), pathname+"/geo/platte", WbWriterVtkXmlBinary::getInstance() );
-      //   //////////////////////////////////////////////////////////////////////////
-      //   //////////////////////////////////////////////////////////////////////////
-      //   // Zackenband
-      //   //////////////////////////////////////////////////////////////////////////
-      //   GbTriFaceMesh3DPtr meshBand1 (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand"));
-      //   meshBand1->translate(-495, -700, -19.94);
-      //   if(myid == 0) GbSystem3D::writeGeoObject( meshBand1.get(), pathname+"/geo/Band1", WbWriterVtkXmlASCII::getInstance() );
-
-      //   double blockLengthx1 = blocknx[0]*cdx; //geowerte
-      //   double blockLengthx2 = blockLengthx1;
-      //   double blockLengthx3 = blockLengthx1;
-
-      //   double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3}; 
-
-      //   double originX1 = plate->getX1Minimum()-plate->getLengthX1()/4.0;
-      //   double originX2 = plate->getX2Minimum();
-      //   double originX3 = plate->getX3Minimum()-299.5;
-
-      //   //bounding box
-      //   double g_minX1 = originX1;
-      //   double g_minX2 = originX2;
-      //   double g_minX3 = originX3;
-
-      //   double g_maxX1 = originX1 + geoLength[0];
-      //   double g_maxX2 = originX2 + geoLength[1];
-      //   double g_maxX3 = originX3 + geoLength[2];;
-
-      //   GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      //   gridCube->setCenterCoordinates(gridCube->getX1Centroid(),meshBand1->getX2Centroid(),gridCube->getX3Centroid());
-      //   if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-      //   originX2 = gridCube->getX2Minimum();
-      //   g_minX2 = originX2;
-      //   g_maxX2 = originX2 + geoLength[1];
-      //   //walls
-      //   GbCuboid3DPtr addWallZmin (new GbCuboid3D(g_minX1-blockLengthx1, g_minX2-blockLengthx1, g_minX3-blockLengthx1, g_maxX1+blockLengthx1, g_maxX2+blockLengthx1, g_minX3));
-      //   if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-      //   GbCuboid3DPtr addWallZmax (new GbCuboid3D(g_minX1-blockLengthx1, g_minX2-blockLengthx1, g_maxX3, g_maxX1+blockLengthx1, g_maxX2+blockLengthx1, g_maxX3+blockLengthx1));
-      //   if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-      //   //walls
-      //   int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB        
-      //   D3Q27BoundaryConditionAdapterPtr slip(new D3Q27SlipBCAdapter(bbOption));
-      //   D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, slip,Interactor3D::SOLID));
-      //   D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, slip,Interactor3D::SOLID));
-
-      //   SetSolidOrTransBlockVisitor v1(addWallZminInt, SetSolidOrTransBlockVisitor::TRANS);
-      //   grid->accept(v1);
-      //   addWallZminInt->initInteractor();
-      //   SetSolidOrTransBlockVisitor v2(addWallZmaxInt, SetSolidOrTransBlockVisitor::TRANS);
-      //   grid->accept(v2);        
-      //   addWallZmaxInt->initInteractor();
-
-      //   UbSchedulerPtr geoSch(new UbScheduler(1));
-      //   D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-      //      new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), 
-      //      unitConverter, true));
-      //   ppgeo->update(0);
-      //   ppgeo.reset();
-      //   geoSch.reset();
-      //   //////////////////////////////////////////////////////////////////////////
-
-      //   if(myid == 0) UBLOG(logINFO,"Restart - end"); 
-      //}
-      //UbSchedulerPtr visSch(new UbScheduler());
-      ////visSch->addSchedule(1,0,3);
-      ////visSch->addSchedule(100,100,1000);
-      ////visSch->addSchedule(1000,1000,5000);
-      ////visSch->addSchedule(5000,5000,100000);
-      ////visSch->addSchedule(100000,100000,10000000);
-
-      //visSch->addSchedule(1000,1000,10000000);
-
-      //D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), unitConverter);
-
-      //UbSchedulerPtr resSchRMS(new UbScheduler());
-      //resSchRMS->addSchedule(1000000,93000,10000000);
-      //UbSchedulerPtr resSchMeans(new UbScheduler());
-      //resSchMeans->addSchedule(1000000,93000,10000000);
-      //UbSchedulerPtr stepAvSch(new UbScheduler());
-      //int averageInterval=100;
-      //stepAvSch->addSchedule(averageInterval,0,10000000);
-      //AverageValuesPostprocessor Avpp(grid, pathname, WbWriterVtkXmlBinary::getInstance(), visSch/*wann wird rausgeschrieben*/, stepAvSch/*wann wird gemittelt*/, resSchMeans,resSchRMS/*wann wird resettet*/);
-
-      //UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 30));
-      //nupsSch->addSchedule(500,500,1e6);
-      //NUPSCounterPostprocessor npr(grid, nupsSch, numOfThreads, comm);
-
-      //UbSchedulerPtr emSch(new UbScheduler(10));
-      //EmergencyExitPostprocessor empr(grid, emSch, pathname, RestartPostprocessorPtr(&rp), comm);
-
-      //if(myid == 0)
-      //{
-      //   UBLOG(logINFO,"PID = " << myid << " Total Physical Memory (RAM): " << MemoryUtil::getTotalPhysMem());
-      //   UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used: " << MemoryUtil::getPhysMemUsed());
-      //   UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used by current process: " << MemoryUtil::getPhysMemUsedByMe());
-      //}
-
-      //string lastStep = string(cstr2);
-      //double endTime = UbSystem::stringTo<double>(lastStep);
-      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      //if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      //calculation->calculate();
-      //if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if (argc == 1)
-   {
-      cout<<"Command line argument isn't specified!"<<endl;
-      cout<<"plate2 <machine name>"<<endl;
-      return 1;
-   }
-   run(argv[1], argv[2]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/f16Test/CMakeLists.txt b/apps/cpu/f16Test/CMakeLists.txt
deleted file mode 100644
index f8cfe5f4bb024c2cf4036b54a67d378fdc37721e..0000000000000000000000000000000000000000
--- a/apps/cpu/f16Test/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(f16test)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(f16test BINARY)
diff --git a/apps/cpu/f16Test/F16BombadilTestSmall.cfg b/apps/cpu/f16Test/F16BombadilTestSmall.cfg
deleted file mode 100644
index eec8b2855c6a71cc209c05aab30864b8a62cb1f9..0000000000000000000000000000000000000000
--- a/apps/cpu/f16Test/F16BombadilTestSmall.cfg
+++ /dev/null
@@ -1,55 +0,0 @@
-pathOut = d:/temp/f16Small
-pathGeo = d:/Projects/SFB880/DLR-F16/A1_Forschungsdaten_Profilgeometrie_STL_CATIA_Rossian
-#fngFileWhole = f16-ascii.stl
-#fngFileWhole = grundgeometrie-direkter-export.stl
-#fngFileWhole = grundgeometrie-mittel.stl
-
-fngFileWhole = cylinder.ASCII.stl
-
-fngFileBodyPart = f16-body-part-ascii.stl
-fngFileTrailingEdge = f16-trailing-edge-ascii.stl
-zigZagTape = 2zackenbaender0.stl
-
-numOfThreads = 2
-availMem = 10e9
-refineLevel = 8
-#blockNx = 8 4 8
-blockNx = 21 6 13
-#blockNx = 294 12 247
-uLB = 0.1
-
-#x1min x1max x2min x2max x3min x3max [m]
-#boundingBox = -0.90 1.20 0.035 0.065 -0.65 0.65
-#boundingBox = -0.1 0.60 0.035 0.065 -0.3 0.3
-#boundingBox = -10e-3 310e-3 0.035 0.065 -21e-3 21e-3
-
-boundingBox = -0.255 0.27 0.035 0.065 -0.17 0.155
-
-#deltaXfine = 0.005 #level 0
-#deltaXfine = 0.0025 #level 1
-#deltaXfine = 0.00125 #level 2
-#deltaXfine = 0.000625 #level 3
-#deltaXfine = 0.0003125 #level 4
-#deltaXfine = 0.00015625 #level 5
-#deltaXfine = 0.000078125 #level 6
-#deltaXfine = 0.0000390625 #level 7
-deltaXfine = 0.00001953125 #level 8
-
-
-refineDistance = 0.3
-
-restartStep = 10
-restartStepStart = 10
-
-outTime = 1
-endTime = 10
-
-logToFile = false
-
-porousTralingEdge = false
-
-thinWall = false
-
-testBox=false
-
-nupsStep = 1 1 10000000
\ No newline at end of file
diff --git a/apps/cpu/f16Test/f16test.cpp b/apps/cpu/f16Test/f16test.cpp
deleted file mode 100644
index dffcd8b284563a645ce12b76fc8fab7985901b99..0000000000000000000000000000000000000000
--- a/apps/cpu/f16Test/f16test.cpp
+++ /dev/null
@@ -1,659 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <boost/pointer_cast.hpp>
-
-#include "VirtualFluids.h"
-
-using namespace std;
-
-double rangeRandom1()
-{
-   return (2.0*rand())/RAND_MAX-1.0;
-}
-
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathOut = config.getString("pathOut");
-      string          pathGeo = config.getString("pathGeo");
-      string          fngFileWhole = config.getString("fngFileWhole");
-      string          fngFileTrailingEdge = config.getString("fngFileTrailingEdge");
-      string          fngFileBodyPart = config.getString("fngFileBodyPart");
-      string          zigZagTape = config.getString("zigZagTape");
-      int             numOfThreads = config.getInt("numOfThreads");
-      vector<int>     blockNx = config.getVector<int>("blockNx");
-      vector<double>  boundingBox = config.getVector<double>("boundingBox");
-      double          uLB = config.getDouble("uLB");
-      double          restartStep = config.getDouble("restartStep");
-      double          restartStepStart = config.getDouble("restartStepStart");
-      double          endTime = config.getDouble("endTime");
-      double          outTime = config.getDouble("outTime");
-      double          availMem = config.getDouble("availMem");
-      int             refineLevel = config.getInt("refineLevel");
-      bool            logToFile = config.getBool("logToFile");
-      bool            porousTralingEdge = config.getBool("porousTralingEdge");
-      double          deltaXfine = config.getDouble("deltaXfine")*1000.0;
-      bool            thinWall = config.getBool("thinWall");
-      double          refineDistance = config.getDouble("refineDistance");
-      vector<double>  nupsStep = config.getVector<double>("nupsStep");
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathOut.c_str();
-            mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if (myid == 0)
-         {
-            stringstream logFilename;
-            logFilename << pathOut + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      
-      double g_minX1 = boundingBox[0]*1000.0;
-      double g_minX2 = boundingBox[2]*1000.0;
-      double g_minX3 = boundingBox[4]*1000.0;
-
-      double g_maxX1 = boundingBox[1]*1000.0;
-      double g_maxX2 = boundingBox[3]*1000.0;
-      double g_maxX3 = boundingBox[5]*1000.0;
-       
-      //////////////////////////////////////////////////////////////////////////
-      double deltaXcoarse = deltaXfine*(double)(1 << refineLevel);
-      //double nx2_temp = floor((g_maxX2 - g_minX2) / (deltaXcoarse*(double)blockNx[0]));
-
-      //deltaXcoarse = (g_maxX2 - g_minX2) / (nx2_temp*(double)blockNx[0]);
-      //UBLOG(logINFO, "nx2_temp:"<<nx2_temp);
-      //g_maxX2 -= 0.5* deltaXcoarse;
-      //////////////////////////////////////////////////////////////////////////
-      double blockLength = (double)blockNx[0] * deltaXcoarse;
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-      double Re = 1;//e6;
-
-      double rhoLB = 0.0;
-      double rhoReal = 1.2041; //(kg/m3)
-      double nueReal = 153.5e-7; //m^2/s
-
-      double lReal = 3.0;//m
-      double uReal = Re*nueReal / lReal;
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-      double Ma = 0.15;//Ma-Real!
-      //double csReal = uReal / Ma;
-      //double hLB = lReal / deltaXcoarse;
-
-      //LBMUnitConverter unitConverter(lReal, csReal, rhoReal, hLB);
-
-      //double u_LB = uReal   * unitConverter.getFactorVelocityWToLb();
-      //double nu_LB = nueReal * unitConverter.getFactorViscosityWToLb();
-      double l_LB = 300 / deltaXcoarse;
-      double nuLB = (uLB*l_LB) / Re; //0.005;
-      //double nuLB = 0.005;
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      ////////////////////////////////////////////////////////////////////////
-      //Grid
-      //////////////////////////////////////////////////////////////////////////
-      SPtr<Grid3D> grid(new Grid3D(comm));
-      grid->setDeltaX(deltaXcoarse);
-      grid->setBlockNX(blockNx[0], blockNx[1], blockNx[2]);
-
-      SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      //gridCube->setCenterCoordinates(geo->getX1Centroid(), geo->getX2Centroid(), geo->getX3Centroid());
-      if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathOut + "/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-      GenBlocksGridVisitor genBlocks(gridCube);
-      grid->accept(genBlocks);
-
-      grid->setPeriodicX1(false);
-      grid->setPeriodicX2(true);
-      grid->setPeriodicX3(false);
-
-      //BC adapters
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      if (thinWall)
-      {
-         noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new ThinWallNoSlipBCAlgorithm()));
-      }
-      else
-      {
-         noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-      }
-
-      SPtr<BCAdapter> slipBCAdapter(new SlipBCAdapter());
-      slipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new SlipBCAlgorithm()));
-
-      mu::Parser fct;
-      fct.SetExpr("U");
-      fct.DefineConst("U", uLB);
-      SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-      velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingOutflowBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapter(new DensityBCAdapter(rhoLB));
-      denBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingOutflowBCAlgorithm()));
-
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      bcVisitor.addBC(slipBCAdapter);
-      bcVisitor.addBC(velBCAdapter);
-      bcVisitor.addBC(denBCAdapter);
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<UbScheduler> rSch(new UbScheduler(restartStep, restartStep));
-      RestartCoProcessor rp(grid, rSch, comm, pathOut, RestartCoProcessor::TXT);
-      //////////////////////////////////////////////////////////////////////////
-
-
-      if (grid->getTimeStep() == 0)
-      {
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "* Re                  = "<<Re);
-            UBLOG(logINFO, "* Ma                  = "<<Ma);
-            UBLOG(logINFO, "* velocity (uReal)    = "<<uReal<<" m/s");
-            UBLOG(logINFO, "* viscosity (nuReal)  = "<<nueReal<<" m^2/s");
-            UBLOG(logINFO, "* velocity LB (uLB)   = "<<uLB);
-            UBLOG(logINFO, "* viscosity LB (nuLB) = "<<nuLB);
-            UBLOG(logINFO, "* dx_base             = "<<deltaXcoarse/1000.0<<" m");
-            UBLOG(logINFO, "* dx_refine           = "<<deltaXfine/1000.0<<" m");
-            UBLOG(logINFO, "* number of levels    = " << refineLevel + 1);
-            UBLOG(logINFO, "* number of threads   = " << numOfThreads);
-            UBLOG(logINFO, "* number of processes = " << comm->getNumberOfProcesses());
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         SPtr<GbTriFaceMesh3D> fngMeshWhole;
-         SPtr<GbTriFaceMesh3D> fngMeshBodyPart;
-         SPtr<GbTriFaceMesh3D> fngMeshTrailingEdge;
-         if (porousTralingEdge)
-         {
-            if (myid==0) UBLOG(logINFO, "Read fngFileBodyPart:start");
-            fngMeshBodyPart = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+fngFileBodyPart, "fngMeshBody", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read fngFileBodyPart:end");
-            fngMeshBodyPart->rotate(0.0, 0.5, 0.0);
-            if (myid==0) GbSystem3D::writeGeoObject(fngMeshBodyPart.get(), pathOut+"/geo/fngMeshBody", WbWriterVtkXmlBinary::getInstance());
-
-            if (myid==0) UBLOG(logINFO, "Read fngFileTrailingEdge:start");
-            fngMeshTrailingEdge = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+fngFileTrailingEdge, "fngMeshTrailingEdge", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read fngFileTrailingEdge:end");
-            fngMeshTrailingEdge->rotate(0.0, 0.5, 0.0);
-            fngMeshTrailingEdge->translate(0,0,1.3);
-            if (myid==0) GbSystem3D::writeGeoObject(fngMeshTrailingEdge.get(), pathOut+"/geo/fngMeshTrailingEdge", WbWriterVtkXmlBinary::getInstance());
-         }
-         else
-         {
-            if (myid==0) UBLOG(logINFO, "Read fngFileWhole:start");
-            fngMeshWhole = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+fngFileWhole, "fngMeshWhole", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read fngFileWhole:end");
-            fngMeshWhole->rotate(0.0, 0.5, 0.0);
-            if (myid==0) GbSystem3D::writeGeoObject(fngMeshWhole.get(), pathOut+"/geo/fngMeshWhole", WbWriterVtkXmlBinary::getInstance());
-         }
-
-         //////////////////////////////////////////////////////////////////////////
-         // Zackenband
-         //////////////////////////////////////////////////////////////////////////
-         //top
-         //////////////////////////////////////////////////////////////////////////
-         //if (myid==0) UBLOG(logINFO, "Read zigZagTape:start");
-         //string ZckbndFilename = pathGeo+"/"+zigZagTape;
-         //SPtr<GbTriFaceMesh3D> meshBand1(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape1"));
-         //meshBand1->rotate(0.0, 5, 0.0);
-         //meshBand1->translate(15, 0, -12.850);
-         //if (myid==0) GbSystem3D::writeGeoObject(meshBand1.get(), pathOut+"/geo/zigZagTape1", WbWriterVtkXmlASCII::getInstance());
-         //// Zackenband2
-         //SPtr<GbTriFaceMesh3D> meshBand2(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape2"));
-         //meshBand2->rotate(0.0, 5, 0.0);
-         //meshBand2->translate(15, 5, -12.850);
-         //if (myid==0) GbSystem3D::writeGeoObject(meshBand2.get(), pathOut+"/geo/zigZagTape2", WbWriterVtkXmlASCII::getInstance());
-         ////// Zackenband3
-         ////SPtr<GbTriFaceMesh3D> meshBand3(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape3"));
-         ////meshBand3->rotate(0.0, 5, 0.0);
-         ////meshBand3->translate(15, 0, -12.35);
-         ////if (myid==0) GbSystem3D::writeGeoObject(meshBand3.get(), pathOut+"/geo/zigZagTape3", WbWriterVtkXmlASCII::getInstance());
-         ////// Zackenband4
-         ////SPtr<GbTriFaceMesh3D> meshBand4(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape4"));
-         ////meshBand4->rotate(0.0, 5, 0.0);
-         ////meshBand4->translate(15, 5, -12.35);
-         ////if (myid==0) GbSystem3D::writeGeoObject(meshBand4.get(), pathOut+"/geo/zigZagTape4", WbWriterVtkXmlASCII::getInstance());
-        
-         ////bottom
-         //SPtr<GbTriFaceMesh3D> meshBand5(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape5"));
-         //meshBand5->rotate(0.0, -1, 0.0);
-         //meshBand5->rotate(0.0, 0.0,180.0);
-         //meshBand5->translate(30, 0, -37.3);
-         //if (myid==0) GbSystem3D::writeGeoObject(meshBand5.get(), pathOut+"/geo/zigZagTape5", WbWriterVtkXmlASCII::getInstance());
-         //// Zackenband6
-         //SPtr<GbTriFaceMesh3D> meshBand6(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape6"));
-         //meshBand6->rotate(0.0, -1, 0.0);
-         //meshBand6->rotate(0.0, 0.0, 180.0);
-         //meshBand6->translate(30, 5, -37.3);
-         //if (myid==0) GbSystem3D::writeGeoObject(meshBand6.get(), pathOut+"/geo/zigZagTape6", WbWriterVtkXmlASCII::getInstance());
-         ////// Zackenband7
-         ////SPtr<GbTriFaceMesh3D> meshBand7(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape7"));
-         ////meshBand7->rotate(0.0, 5, 0.0);
-         ////meshBand7->translate(15, 0, -12.35);
-         ////if (myid==0) GbSystem3D::writeGeoObject(meshBand7.get(), pathOut+"/geo/zigZagTape7", WbWriterVtkXmlASCII::getInstance());
-         ////// Zackenband8
-         ////SPtr<GbTriFaceMesh3D> meshBan8(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "zigZagTape8"));
-         ////meshBan8->rotate(0.0, 5, 0.0);
-         ////meshBan8->translate(15, 5, -12.35);
-         ////if (myid==0) GbSystem3D::writeGeoObject(meshBan8.get(), pathOut+"/geo/zigZagTape8", WbWriterVtkXmlASCII::getInstance());
-         //if (myid==0) UBLOG(logINFO, "Read zigZagTape:end");
-
-         //////////////////////////////////////////////////////////////////////////
-
-         SPtr<Interactor3D> fngIntrWhole;
-         SPtr<Interactor3D> fngIntrBodyPart;
-         SPtr<Interactor3D> fngIntrTrailingEdge;
-         if (porousTralingEdge)
-         {
-            fngIntrBodyPart = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshBodyPart, grid, noSlipBCAdapter, Interactor3D::SOLID));
-            fngIntrTrailingEdge = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshTrailingEdge, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         }
-         else
-         {
-            fngIntrWhole = SPtr<D3Q27TriFaceMeshInteractor>(new D3Q27TriFaceMeshInteractor(fngMeshWhole, grid, noSlipBCAdapter, Interactor3D::SOLID));//, Interactor3D::EDGES));
-         }
-
-         //SPtr<D3Q27TriFaceMeshInteractor> triBand1Interactor(new D3Q27TriFaceMeshInteractor(meshBand1, grid, noSlipBCAdapter, Interactor3D::SOLID));//, Interactor3D::EDGES));
-         //SPtr<D3Q27TriFaceMeshInteractor> triBand2Interactor(new D3Q27TriFaceMeshInteractor(meshBand2, grid, noSlipBCAdapter, Interactor3D::SOLID));//, Interactor3D::EDGES));
-         //SPtr<D3Q27TriFaceMeshInteractor> triBand3Interactor(new D3Q27TriFaceMeshInteractor(meshBand3, grid, noSlipBCAdapter, Interactor3D::SOLID));//, Interactor3D::EDGES));
-         //SPtr<D3Q27TriFaceMeshInteractor> triBand4Interactor(new D3Q27TriFaceMeshInteractor(meshBand4, grid, noSlipBCAdapter, Interactor3D::SOLID));//, Interactor3D::EDGES));
-
-
-
-         if (refineLevel > 0 && myid == 0)
-         {
-            if (myid == 0) UBLOG(logINFO, "Refinement - start");
-            //RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            //refineHelper.addGbObject(geo, refineLevel);
-            //refineHelper.refine();
-            
-            //RefineAroundGbObjectHelper refineHelper1(grid, refineLevel-1, boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(geoIntr1), 0.0, 10.0, comm);
-            //refineHelper1.refine();
-            //RefineAroundGbObjectHelper refineHelper2(grid, refineLevel, boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(geoIntr2), -1.0, 5.0, comm);
-            //refineHelper2.refine();
-            
-
-            int rank = grid->getRank();
-            grid->setRank(0);
-            //boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triBand1Interactor)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-            //boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triBand2Interactor)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-            //boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triBand3Interactor)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-            //boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triBand4Interactor)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-            grid->setRank(rank);
-
-            if (porousTralingEdge)
-            {
-               int rank = grid->getRank();
-               grid->setRank(0);
-               boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(fngIntrBodyPart)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-               grid->setRank(rank);
-            }
-            else
-            {
-               int rank = grid->getRank();
-               grid->setRank(0);
-               boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(fngIntrWhole)->refineBlockGridToLevel(refineLevel, 0.0, refineDistance);
-               grid->setRank(rank);
-            }
-
-
-
-            ////////////////////////////////////////////
-            //METIS
-            //SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-            ////////////////////////////////////////////
-            /////delete solid blocks
-            if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-            //InteractorsHelper intHelper(grid, metisVisitor);
-            //if (porousTralingEdge)
-            //{
-            //   intHelper.addInteractor(fngIntrBodyPart);
-            //}
-            //else
-            //{
-            //   intHelper.addInteractor(fngIntrWhole);
-            //}
-            //////////////////////////////////////////////////////////////////////////
-            
-            //intHelper.selectBlocks();
-            
-            if (porousTralingEdge)
-            {
-               SetSolidBlockVisitor v(fngIntrBodyPart, BlockType::SOLID);
-               grid->accept(v);
-               std::vector<SPtr<Block3D>>& sb = fngIntrBodyPart->getSolidBlockSet();
-               for(SPtr<Block3D> block : sb)
-               {
-                  grid->deleteBlock(block);
-               }
-               fngIntrBodyPart->removeSolidBlocks();
-               fngIntrBodyPart->removeBcBlocks();
-            }
-            else
-            {
-               SetSolidBlockVisitor v(fngIntrWhole, BlockType::SOLID);
-               grid->accept(v);
-               std::vector<SPtr<Block3D>>& sb = fngIntrWhole->getSolidBlockSet();
-               for(SPtr<Block3D> block : sb)
-               {
-                  grid->deleteBlock(block);
-               }
-               fngIntrWhole->removeSolidBlocks();
-               fngIntrWhole->removeBcBlocks();
-            }
-
-            if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-            //////////////////////////////////////
-
-            if (porousTralingEdge)
-            {
-               grid->setRank(0);
-               boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(fngIntrTrailingEdge)->refineBlockGridToLevel(refineLevel, -2.0, refineDistance);
-               grid->setRank(rank);
-
-               //SPtr<GbObject3D> trailingEdgeCube(new GbCuboid3D(fngMeshTrailingEdge->getX1Minimum()-blockLength, fngMeshTrailingEdge->getX2Minimum(), fngMeshTrailingEdge->getX3Minimum()-blockLength/2.0,
-               //   fngMeshTrailingEdge->getX1Maximum()+blockLength, fngMeshTrailingEdge->getX2Maximum(), fngMeshTrailingEdge->getX3Maximum()+blockLength/2.0));
-               //if (myid == 0) GbSystem3D::writeGeoObject(trailingEdgeCube.get(), pathOut + "/geo/trailingEdgeCube", WbWriterVtkXmlASCII::getInstance());
-
-               //RefineCrossAndInsideGbObjectBlockVisitor refVisitor(trailingEdgeCube, refineLevel);
-               //grid->accept(refVisitor);
-            }
-
-            RatioBlockVisitor ratioVisitor(refineLevel);
-            CheckRatioBlockVisitor checkRatio(refineLevel);
-            int count = 0;
-            
-            do {
-               grid->accept(ratioVisitor);
-               checkRatio.resetState();
-               grid->accept(checkRatio);
-               if (myid == 0) UBLOG(logINFO, "count ="<<count++<<" state="<<checkRatio.getState());
-            } while (!checkRatio.getState());
-
-            //RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-            //grid->accept(ratioSmoothVisitor);
-
-            {
-               WriteBlocksSPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm));
-               ppblocks->process(0);
-               ppblocks.reset();
-            }
-
-            OverlapBlockVisitor overlapVisitor(refineLevel, false);
-            grid->accept(overlapVisitor);
-
-            //std::vector<int> dirs;
-            //for (int i = D3Q27System::E; i <= D3Q27System::TS; i++)
-            //{
-            //   dirs.push_back(i);
-            //}
-            //SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-            //grid->accept(interDirsVisitor);
-
-            if (myid == 0) UBLOG(logINFO, "Refinement - end");
-         }
-
-         grid->updateDistributedBlocks(comm);
-
-
-         //return;
-
-         std::vector<int> dirs;
-         for (int i = D3Q27System::E; i<=D3Q27System::TS; i++)
-         {
-            dirs.push_back(i);
-         }
-         SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-         grid->accept(interDirsVisitor);
-
-         //walls
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathOut+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathOut+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-
-
-         //wall interactors
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, slipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, slipBCAdapter, Interactor3D::SOLID));
-         //SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         //SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoInflow.get(), pathOut+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathOut+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         SPtr<D3Q27Interactor> inflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //outflow
-         SPtr<D3Q27Interactor> outflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         //METIS
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(inflowIntr);
-         intHelper.addInteractor(outflowIntr);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         //intHelper.addInteractor(triBand1Interactor);
-         //intHelper.addInteractor(triBand2Interactor);
-         //intHelper.addInteractor(triBand3Interactor);
-         //intHelper.addInteractor(triBand4Interactor);
-         
-         if (porousTralingEdge)
-         {
-            intHelper.addInteractor(fngIntrBodyPart);
-            //intHelper.addInteractor(fngIntrTrailingEdge);
-         } 
-         else
-         {
-            intHelper.addInteractor(fngIntrWhole);
-         }
-         
-         //////////////////////////////////////////////////////////////////////////
-         intHelper.selectBlocks();
-
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         WriteBlocksSPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm));
-         ppblocks->process(1);
-         ppblocks.reset();
-
-         unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-         int ghostLayer = 3;
-         unsigned long long numberOfNodesPerBlock = (unsigned long long)(blockNx[0])* (unsigned long long)(blockNx[1])* (unsigned long long)(blockNx[2]);
-         unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-         unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blockNx[0] + ghostLayer) * (blockNx[1] + ghostLayer) * (blockNx[2] + ghostLayer);
-         double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-            UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel(blockNx[0], blockNx[1], blockNx[2], CompressibleCumulantLBMKernel::NORMAL));
-         //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel(blockNx[0], blockNx[1], blockNx[2], IncompressibleCumulantLBMKernel::NORMAL));
-
-         SPtr<BCProcessor> bcProc;
-
-         if (thinWall)
-         {
-            bcProc = SPtr<BCProcessor>(new ThinWallBCProcessor());
-         }
-         else
-         {
-            bcProc = SPtr<BCProcessor>(new BCProcessor());
-         }
-
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //BC
-         intHelper.setBC();
-         
-         grid->accept(bcVisitor);
-
-         //initialization of distributions
-         mu::Parser inflowProfileVx1, inflowProfileVx2, inflowProfileVx3;
-         inflowProfileVx1.SetExpr("U*rangeRandom1()");
-         inflowProfileVx1.DefineConst("U", uLB);
-         inflowProfileVx1.DefineFun("rangeRandom1", rangeRandom1);
-         inflowProfileVx2.SetExpr("0.1*U*rangeRandom1()");
-         inflowProfileVx2.DefineConst("U", uLB);
-         inflowProfileVx2.DefineFun("rangeRandom1", rangeRandom1);
-         inflowProfileVx3.SetExpr("0.1*U*rangeRandom1()");
-         inflowProfileVx3.DefineConst("U", uLB);
-         inflowProfileVx3.DefineFun("rangeRandom1", rangeRandom1);
-         
-         InitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-         //initVisitor.setVx1(fct);
-         //initVisitor.setVx1(inflowProfileVx1);
-         //initVisitor.setVx2(inflowProfileVx2);
-         //initVisitor.setVx3(inflowProfileVx3);
-         //initVisitor.setNu(nuLB);
-         grid->accept(initVisitor);
-
-         ////set connectors
-         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
-         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //Postrozess
-         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         WriteBoundaryConditionsSPtr<CoProcessor> ppgeo(
-            new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-         ppgeo->process(0);
-         ppgeo.reset();
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         grid->accept(bcVisitor);
-      }
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTime));
-
-      WriteMacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv,comm);
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      const SPtr<ConcreteCalculatorFactory> calculatorFactory = std::make_shared<ConcreteCalculatorFactory>(stepSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, calculatorFactory, CalculatorType::HYBRID));
-      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepSch, CalculationManager::PrePostBc));
-      //calculation->setTimeAveragedValuesCoProcessor(tav);
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
-int main(int argc, char* argv[])
-{
-
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout << "Configuration file must be set!: " << argv[0] << " <config file>" << endl << std::flush;
-      }
-   }
-
-   return 0;
-}
-
diff --git a/apps/cpu/fetol_demo/CMakeLists.txt b/apps/cpu/fetol_demo/CMakeLists.txt
deleted file mode 100644
index 878ba5dceb5e2f800426c374f745b138aaf8dc04..0000000000000000000000000000000000000000
--- a/apps/cpu/fetol_demo/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(fetol_demo)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids ${FETOL_RELEASE_LIBRARY})
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(fetol_demo BINARY)
diff --git a/apps/cpu/fetol_demo/fetol_demo.cpp b/apps/cpu/fetol_demo/fetol_demo.cpp
deleted file mode 100644
index b3a103805a3a2a0e02deb45d5c768c833002bcf4..0000000000000000000000000000000000000000
--- a/apps/cpu/fetol_demo/fetol_demo.cpp
+++ /dev/null
@@ -1,306 +0,0 @@
-#include <vfluids.h>
-
-#include <fbond.h>
-#include <Version.h>
-
-#include <JM.h>
-
-using namespace std;
-
-using namespace fetol;
-
-////////////////////////////////////////////////////////////////////////
-void chanel(const char *cstr)
-{
-   try
-   {
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      int numOfThreads = 1;
-      double availMem = 0;
-
-      UBLOG(logINFO,"Communicator-init::strat");
-      CommunicatorPtr comm = FETOLCommunicator::getInstance();
-      UBLOG(logINFO,"Communicator-init::end");
-
-      int myid = comm->getProcessID();
-      int mybundle = comm->getBundleID();
-      int root = comm->getRoot();
-      int myrank = boost::dynamic_pointer_cast<FETOLCommunicator>(comm)->getMPIRank();
-
-      UBLOG(logINFO,"myid = " << myid );
-      UBLOG(logINFO,"mybundle = " << mybundle );
-      UBLOG(logINFO,"myrank = " << myrank );
-
-      JM::init(mybundle, myrank);
-
-      //UbLog::reportingLevel() = logDEBUG5;
-
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "d:/temp/fetol_demo";
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         //pathname = "/work/koskuche/scratch/fetol_demo";
-
-         pathname = string(cstr);
-         availMem = 1.5e9;
-
-        if(myid==root && mybundle==root)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/log/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      double dx = 1;
-
-      const int blocknx1 = 40;
-      const int blocknx2 = 40;
-      const int blocknx3 = 40;
-
-      const int gridNx1 = 4;
-      const int gridNx2 = 2;
-      const int gridNx3 = 2;
-
-      double L1 = gridNx1*blocknx1;
-      double L2, L3, H;
-      L2 = H = gridNx2*blocknx1;
-      L3 = gridNx3*blocknx1;
-
-      LBMReal radius = 7;
-      LBMReal uLB = 0.1;
-      LBMReal Re = 3000.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
-      LBMReal nueLB = (uLB*2.0*radius)/Re;
-
-      Grid3DPtr grid(new Grid3D(comm));
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-      //UBLOG(logINFO,"Restart:start");
-      UbSchedulerPtr restartSch(new UbScheduler(1000, 1000, 100000));
-      RestartPostprocessor rp(grid, restartSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY);
-      grid = rp.restart(-1);
-      //UBLOG(logINFO,"Restart:end");
-
-      if (grid->getTimeStep() == 0)
-      {
-
-         const int baseLevel = 0;
-         const int refineLevel = 0;
-
-         //obstacle
-         GbObject3DPtr sphere(new GbSphere3D(L1/4.0, L2*0.5, L3*0.5, radius));
-         GbSystem3D::writeGeoObject(sphere.get(),pathname + "/geo/sphere", WbWriterVtkXmlBinary::getInstance());
-
-         D3Q27InteractorPtr sphereInt;
-
-         //bounding box
-         double d_minX1 = 0.0;
-         double d_minX2 = 0.0;
-         double d_minX3 = 0.0;
-
-         double d_maxX1 = L1;
-         double d_maxX2 = L2;
-         double d_maxX3 = L3;
-
-         double blockLength = blocknx1*dx;
-
-         GbObject3DPtr gridCube(new GbCuboid3D(d_minX1, d_minX2, d_minX3, d_maxX1, d_maxX2, d_maxX3));
-         if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance()); 
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"Parameters:");
-            UBLOG(logINFO,"L = " << L2/dx );
-            UBLOG(logINFO,"v = " << uLB );
-            UBLOG(logINFO,"rho = " << rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-            UBLOG(logINFO,"Re = " << Re );
-            UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,"number of levels = " << refineLevel+1 );
-            UBLOG(logINFO,"numOfThreads = " << numOfThreads );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-         //walls
-         GbCuboid3DPtr addWallYmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_minX2, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_minX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_maxX2, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_maxX3, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_minX1, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-
-         //sphere
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         sphereInt = D3Q27InteractorPtr ( new D3Q27Interactor(sphere, grid, bcObst,Interactor3D::SOLID));
-
-         //walls
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst,Interactor3D::SOLID));
-
-         mu::Parser fct;
-         fct.SetExpr("16*U*x2*x3*(H-x2)*(H-x3)/H^4");
-         fct.DefineConst("U", uLB);
-         fct.DefineConst("H", H);
-
-         //inflow
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-         velBCAdapter->setSecondaryBcOption(2);
-         D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(sphereInt);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.selectBlocks();
-
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         FETOLSetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-
-         double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }            
-
-         LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         intHelper.setBC();
-
-         //initialization of distributions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(nueLB, rhoLB);
-         initVisitor.setVx1(fct);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-      }
-      else
-      {
-         UBLOG(logINFO,"SetConnectors - start, id="<<myid);
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         FETOLSetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         
-         UBLOG(logINFO,"SetConnectors - end, id="<<myid); 
-      }
-
-      UbSchedulerPtr stepSch(new UbScheduler());
-      stepSch->addSchedule(1000, 0, 1000000);
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv);
-
-      //UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      //NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double endTime = 100000;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepSch, CalculationManager::FETOL));
-      
-      if(myid == 0) 
-         UBLOG(logINFO,"Simulation-start");
-      
-      calculation->calculate();
-      
-      if(myid == 0) 
-         UBLOG(logINFO,"Simulation-end");
-
-      JM::finalize();
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if ( argv != NULL )
-   {
-      if (argc > 1)
-      {
-         chanel(argv[1]);
-      }
-      else
-      {
-         cout << "Configuration file must be set!: " <<  argv[0] << " <config file>" << endl << std::flush;
-      }
-   }
-}
-
diff --git a/apps/cpu/greenvortex/CMakeLists.txt b/apps/cpu/greenvortex/CMakeLists.txt
deleted file mode 100644
index 2715bc92017327fd1354dc5d4e54241d55cf5324..0000000000000000000000000000000000000000
--- a/apps/cpu/greenvortex/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(greenvortex)
-
-INCLUDE(${SOURCE_ROOT}/core/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES core)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(greenvortex BINARY)
diff --git a/apps/cpu/greenvortex/greenvortex.cpp b/apps/cpu/greenvortex/greenvortex.cpp
deleted file mode 100644
index e9b1327e4451ea03e9cb7afd85110096eed1d6d4..0000000000000000000000000000000000000000
--- a/apps/cpu/greenvortex/greenvortex.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "numerics/geometry3d/CoordinateTransformation3D.h"
-#include "Grid3D.h"
-#include "GenBlocksGridVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include <numerics/geometry3d/GbSphere3D.h>
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "RefineInterGbObjectsVisitor.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "MPICommunicator.h"
-#include "D3Q27ETBCProcessor.h"
-#include "SimulationParameters.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "D3Q27SetConnectorsBlockVisitor.h"
-#include "NullCommunicator.h"
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "CalculationManager.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27BoundaryConditionAdapter.h"
-#include "D3Q27PathLinePostprocessor.h"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "BlocksPostprocessor.h"
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string pathname = "c:/temp/greenvortex/out";
-
-      int numOfThreads = 3;
-
-      const int blocknx1 = 5;
-      const int blocknx2 = 5;
-      const int blocknx3 = 5;
-
-      const int baseLevel = 0;
-      const int refineLevel = 1;
-
-      const double blockLentghX1 = 1.0;
-      const double blockLentghX2 = 1.0;
-      const double blockLentghX3 = 1.0;
-
-      const double gridOriginX1 = 0.0;
-      const double gridOriginX2 = 0.0;
-      const double gridOriginX3 = 0.0;
-
-      double L1 = 5.0;
-      double L2 = 5.0;
-      double L3 = 5.0;
-
-      const double dx = blockLentghX1/static_cast<double>(blocknx1);
-
-      CommunicatorPtr comm(new MPICommunicator());
-
-      LBMReal uLB = 0.01;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = blockLentghX2 / dx;
-      LBMReal nueLB = (uLB*l)/Re;
-
-      SimulationParametersPtr param = SimulationParameters::getInstanz();
-      param->setCollisionModelType(SimulationParameters::COMPRESSIBLE);
-      param->setRho(rhoLB);
-      param->setVelocityX(uLB);
-      param->setViscosity(nueLB);
-
-      Grid3DPtr grid(new Grid3D());
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-      grid->setPeriodicX1(true);
-      grid->setPeriodicX2(false);
-      grid->setPeriodicX3(false);
-
-
-      GbObject3DPtr gridCube(new GbCuboid3D(0.0, 0.0, 0.0, L1, L2, L3));
-      GenBlocksGridVisitor genBlocks;
-      genBlocks.addGeoObject(gridCube);
-      grid->accept(genBlocks);
-
-      LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-
-      mu::Parser fctForcingX1, fctForcingX2;
-      fctForcingX1.SetExpr("2.0*rho* (4.0*PI*PI/(L1/dx)/(L2/dx))*( nue*vlb*sin(x1*2.0*PI/(L1/dx))*cos(x2*2.0*PI/(L2/dx)))");
-      fctForcingX2.SetExpr("-2.0*rho*(4.0*PI*PI/(L1/dx)/(L2/dx))*( nue*vlb*cos(x1*2.0*PI/(L1/dx))*sin(x2*2.0*PI/(L2/dx)))");
-
-      fctForcingX1.DefineConst("L1"     , static_cast<double>(L1*blocknx1));
-      fctForcingX1.DefineConst("L2"     , static_cast<double>(L2*blocknx2));
-      fctForcingX1.DefineConst("PI"     , PI);
-      fctForcingX1.DefineConst("rho"    , rhoLB);
-      fctForcingX1.DefineConst("vlb"    , uLB);
-
-      fctForcingX2.DefineConst("L1"     , static_cast<double>(L1*blocknx1));
-      fctForcingX2.DefineConst("L2"     , static_cast<double>(L2*blocknx2));
-      fctForcingX2.DefineConst("PI"     , PI);
-      fctForcingX2.DefineConst("rho"    , rhoLB);
-      fctForcingX2.DefineConst("vlb"    , uLB);
-
-      kernel->setForcingX1(fctForcingX1);
-      kernel->setForcingX2(fctForcingX2);
-
-      BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nueLB);
-      grid->accept(kernelVisitor);
-
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-      D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-      grid->accept( setConnsVisitor );
-
-      PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      grid->accept(pqPartVisitor);
-
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(1.0);
-
-      mu::Parser fct,fct2,fct3;
-      fct.SetExpr(" vLB*sin( ( (x1)*2.0*PI/ L1))*cos( (x2)*2.0*PI/L2)");
-      fct.DefineConst("L1"     , L1);
-      fct.DefineConst("L2"     , L2);
-      fct.DefineConst("vLB"  , uLB);
-      fct.DefineConst("PI"  , PI);
-      initVisitor.setVx1(fct);
-
-      fct2.SetExpr(" -vLB*cos( ( (x1)*2.0*PI/ L1))*sin( (x2)*2.0*PI/L2)");
-      fct2.DefineConst("L1"     , L1);
-      fct2.DefineConst("L2"     , L2);
-      fct2.DefineConst("vLB"  , uLB           );
-      fct2.DefineConst("PI"  , PI);
-      initVisitor.setVx2(fct2);
-
-      initVisitor.setVx3(0.0);
-
-      fct3.SetExpr(" 1.0+(vLB*vLB)*3.0/4.0*(cos((x1)*4.0*PI/L1)+cos((x2)*4.0*PI/L2))");
-      fct3.DefineConst("L1"     , L1);
-      fct3.DefineConst("L2"     , L2);
-      fct3.DefineConst("vLB"  , uLB           );
-      fct3.DefineConst("PI"  , PI);
-      initVisitor.setRho(fct3);
-
-      grid->accept(initVisitor);
-
-      BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-      ppblocks->update(0);
-      ppblocks.reset();
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-      {
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessor ppgeo(grid, geoSch, pathname + "/nodes_geo", WbWriterVtkXmlBinary::getInstance(), conv, comm, true);
-         grid->doPostProcess(0);
-      }
-      double outTime = 1000.0;
-      UbSchedulerPtr visSch(new UbScheduler(outTime));
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/nodes", WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      //////////////////////////////////////////////////////////////////////////
-      //PathLine
-      UbSchedulerPtr plSch(new UbScheduler(1000, 1000));
-      D3Q27PathLinePostprocessor pathLine(grid, pathname + "/pathLine", WbWriterVtkXmlASCII::getInstance(), conv, plSch, comm, 4.2, 4.2, 4.2, nueLB, iProcessor);
-      //////////////////////////////////////////////////////////////////////////
-
-      //////////////////////////////////////////////////////////////////////////
-      //Simulation
-      //////////////////////////////////////////////////////////////////////////
-      double endTime = 10000.0;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/gridRf/CMakeLists.txt b/apps/cpu/gridRf/CMakeLists.txt
deleted file mode 100644
index d67a3834a408228619d509d1053d7b8db05c6793..0000000000000000000000000000000000000000
--- a/apps/cpu/gridRf/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(gridRf)
-
-INCLUDE(${SOURCE_ROOT}/core/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES core)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(gridRf BINARY)
diff --git a/apps/cpu/gridRf/gridRf.cpp b/apps/cpu/gridRf/gridRf.cpp
deleted file mode 100644
index a406609e9f970632eb0e906b47c5c23c93275ebc..0000000000000000000000000000000000000000
--- a/apps/cpu/gridRf/gridRf.cpp
+++ /dev/null
@@ -1,253 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "numerics/geometry3d/CoordinateTransformation3D.h"
-#include "Grid3D.h"
-#include "GenBlocksGridVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include <numerics/geometry3d/GbSphere3D.h>
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "RefineInterGbObjectsVisitor.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "MPICommunicator.h"
-#include "D3Q27ETBCProcessor.h"
-#include "SimulationParameters.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "D3Q27SetConnectorsBlockVisitor.h"
-#include "NullCommunicator.h"
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "CalculationManager.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27BoundaryConditionAdapter.h"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "BlocksPostprocessor.h"
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string pathname = "c:/temp/bFluid/out";
-
-      int numOfThreads = 3;
-
-      const int blocknx1 = 5;
-      const int blocknx2 = 5;
-      const int blocknx3 = 5;
-
-      const int baseLevel = 0;
-      const int refineLevel = 1;
-
-      const double blockLentghX1 = 1.0;
-      const double blockLentghX2 = 1.0;
-      const double blockLentghX3 = 1.0;
-
-      const double gridOriginX1 = 0.0;
-      const double gridOriginX2 = 0.0;
-      const double gridOriginX3 = 0.0;
-
-      double L1 = 7.0;
-      double L2 = 7.0;
-      double L3 = 7.0;
-
-      const double dx = blockLentghX1/static_cast<double>(blocknx1);
-
-      CommunicatorPtr comm(new MPICommunicator());
-
-      LBMReal uLB = 0.01;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = blockLentghX2 / dx;
-      LBMReal nueLB = (uLB*l)/Re;
-
-      SimulationParametersPtr param = SimulationParameters::getInstanz();
-      param->setCollisionModelType(SimulationParameters::COMPRESSIBLE);
-      param->setRho(rhoLB);
-      param->setVelocityX(uLB);
-      param->setViscosity(nueLB);
-
-      Grid3DPtr grid(new Grid3D());
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-      grid->setPeriodicX1(true);
-      grid->setPeriodicX2(false);
-      grid->setPeriodicX3(false);
-
-      
-      GbObject3DPtr gridCube(new GbCuboid3D(0.0, 0.0, 0.0, L1, L2, L3));
-      GbObject3DPtr geoObject2(new GbCuboid3D(0.0, 0.0+dx, 0.0+dx, L1, L2-dx, L3-dx));
-      //GbObject3DPtr geoObject1(new GbCylinder3D(0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 3.0));
-      GenBlocksGridVisitor genBlocks;
-      genBlocks.addGeoObject(gridCube);
-      //genBlocks.addGeoObject(geoObject2);
-      grid->accept(genBlocks);
-
-      GbObject3DPtr refineCube(new  GbCuboid3D(2.2, 2.2, 2.2, 3.8, 3.8, 3.8));
-      //GbObject3DPtr refineCube(new  GbCuboid3D(1.5, 1.5, 1.5, 3.5, 3.5, 3.5));
-      GbSphere3DPtr refineSphere(new GbSphere3D(3.5, 3.5, 3.5, 0.5));
-
-      RefineCrossAndInsideGbObjectBlockVisitor refVisitor(refineCube, baseLevel, refineLevel-1);
-      grid->accept(refVisitor);
-
-      //RefineInterGbObjectsVisitor refVisitor(refineSphere, refineCube, baseLevel, refineLevel-1);
-      //grid->accept(refVisitor);
-
-      RatioBlockVisitor ratioVisitor(refineLevel);
-      grid->accept(ratioVisitor);
-
-      RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-      grid->accept(ratioSmoothVisitor);
-
-
-      OverlapBlockVisitor overlapVisitor(refineLevel);
-      grid->accept(overlapVisitor);
-
-      GbSystem3D::writeGeoObject(refineCube.get(),pathname + "/geoC", WbWriterVtkXmlASCII::getInstance());
-      GbSystem3D::writeGeoObject(refineSphere.get(),pathname + "/geoS", WbWriterVtkXmlASCII::getInstance());
-
-      LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-
-      mu::Parser fctForcingX1, fctForcingX2;
-      //fctForcingX1.SetExpr("2.0*rho* (4.0*PI*PI/(L1/dx)/(L2/dx))*( nue*vlb*sin(x1*2.0*PI/(L1/dx))*cos(x2*2.0*PI/(L2/dx)))");
-      //fctForcingX2.SetExpr("-2.0*rho*(4.0*PI*PI/(L1/dx)/(L2/dx))*( nue*vlb*cos(x1*2.0*PI/(L1/dx))*sin(x2*2.0*PI/(L2/dx)))");
-
-      fctForcingX1.SetExpr("2.0*rho* (4.0*PI*PI/(L1/dx)/(L2/dx))*nue*vlb");
-
-      fctForcingX1.DefineConst("L1"     , static_cast<double>(L1*blocknx1));
-      fctForcingX1.DefineConst("L2"     , static_cast<double>(L2*blocknx2));
-      fctForcingX1.DefineConst("PI"     , PI);
-      fctForcingX1.DefineConst("rho"    , rhoLB);
-      //fctForcingX1.DefineConst("nuelb"  , nueLB);
-      fctForcingX1.DefineConst("vlb"    , uLB);
-
-      fctForcingX2.DefineConst("L1"     , static_cast<double>(L1*blocknx1));
-      fctForcingX2.DefineConst("L2"     , static_cast<double>(L2*blocknx2));
-      fctForcingX2.DefineConst("PI"     , PI);
-      fctForcingX2.DefineConst("rho"    , rhoLB);
-      //fctForcingX2.DefineConst("nuelb"  , nueLB);
-      fctForcingX2.DefineConst("vlb"    , uLB);
-
-      kernel->setForcingX1(fctForcingX1);
-      kernel->setForcingX2(0.0);
-
-
-      BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      //MetisPartitioningGridVisitor metisVisitor(numOfThreads, D3Q27System::B, comm, true);
-      //grid->accept( metisVisitor );
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nueLB);
-      grid->accept(kernelVisitor);
-
-      std::vector<int> dirs;
-      D3Q27System::getLBMDirections(dirs);
-      SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-      grid->accept(interDirsVisitor);
-
-      D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-      grid->accept(undefNodesVisitor);
-
-      int bbOption = 0; //0=simple Bounce Back, 1=quadr. BB
-      D3Q27BoundaryConditionAdapterPtr bc(new D3Q27NoSlipBCAdapter(bbOption));
-      D3Q27InteractorPtr chanel( new D3Q27Interactor(geoObject2, grid, bc,Interactor3D::INVERSESOLID));
-      grid->addAndInitInteractor(chanel);
-
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-      D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-      grid->accept( setConnsVisitor );
-
-      PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      grid->accept(pqPartVisitor);
-
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(1.0);
-
-      mu::Parser fct,fct2,fct3;
-      fct.SetExpr(" vLB*sin( ( (x1)*2.0*PI/ L1))*cos( (x2)*2.0*PI/L2)");
-      fct.DefineConst("L1"     , L1);
-      fct.DefineConst("L2"     , L2);
-      fct.DefineConst("vLB"  , uLB);
-      fct.DefineConst("PI"  , PI);
-      //initVisitor.setVx1(fct);
-      initVisitor.setVx1(0.0);
-
-      fct2.SetExpr(" -vLB*cos( ( (x1)*2.0*PI/ L1))*sin( (x2)*2.0*PI/L2)");
-      fct2.DefineConst("L1"     , L1);
-      fct2.DefineConst("L2"     , L2);
-      fct2.DefineConst("vLB"  , uLB           );
-      fct2.DefineConst("PI"  , PI);
-      //initVisitor.setVx2(fct2);
-      initVisitor.setVx2(0.0);
-
-      initVisitor.setVx3(0.0);
-
-      fct3.SetExpr(" 1.0+(vLB*vLB)*3.0/4.0*(cos((x1)*4.0*PI/L1)+cos((x2)*4.0*PI/L2))");
-      fct3.DefineConst("L1"     , L1);
-      fct3.DefineConst("L2"     , L2);
-      fct3.DefineConst("vLB"  , uLB           );
-      fct3.DefineConst("PI"  , PI);
-      //initVisitor.setRho(fct3);
-      initVisitor.setRho(1.0);
-
-      grid->accept(initVisitor);
-
-      BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-      ppblocks->update(0);
-      ppblocks.reset();
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-      {
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessor ppgeo(grid, geoSch, pathname + "/nodes_geo", WbWriterVtkXmlBinary::getInstance(), conv, comm, true);
-         grid->doPostProcess(0);
-      }
-      double outTime = 1000.0;
-      UbSchedulerPtr visSch(new UbScheduler(outTime));
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/nodes", WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      //grid->doPostProcess(0);
-
-      double endTime = 10000.0;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-     
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/insitu_demo/CMakeLists.txt b/apps/cpu/insitu_demo/CMakeLists.txt
deleted file mode 100644
index 5ecce347855a9dd8f0502e273683ce72bef62124..0000000000000000000000000000000000000000
--- a/apps/cpu/insitu_demo/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(insitu_demo)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids ${FETOL_RELEASE_LIBRARY})
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(insitu_demo BINARY)
diff --git a/apps/cpu/insitu_demo/config.txt b/apps/cpu/insitu_demo/config.txt
deleted file mode 100644
index f927708298e2a148da60a827d6960aeec17865bd..0000000000000000000000000000000000000000
--- a/apps/cpu/insitu_demo/config.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-#Ordner für Simulationsergebnisse
-path=d:/temp/insitu_demo
-
-#Verfügbare Arbeitsspeicher in Byte
-memory=12e9
-
-#Pfad zum Metafile
-metafile=d:/Data/insituDemo/metafile.csv
-
-#Ausgabezeitschritt
-outstep=1
-
-#maximale Anzahl Simulationszeitschritte
-endstep=10000
-
-#Blockauflösung in Knoten
-blocknx1=8
-blocknx2=8
-blocknx3=8
-
-#Gitterauflösung in Blöcken
-gridnx1=10
-gridnx2=5
-gridnx3=5
\ No newline at end of file
diff --git a/apps/cpu/insitu_demo/insitu_demo.cpp b/apps/cpu/insitu_demo/insitu_demo.cpp
deleted file mode 100644
index dc6d0381ab02780c6698ad06d95791552fef844d..0000000000000000000000000000000000000000
--- a/apps/cpu/insitu_demo/insitu_demo.cpp
+++ /dev/null
@@ -1,329 +0,0 @@
-#include <vfluids.h>
-
-using namespace std;
-
-
-////////////////////////////////////////////////////////////////////////
-void chanel(const char *cstr1)
-{
-   try
-   {
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      int numOfThreads = 6;
-      double availMem = 0;
-
-      //CommunicatorPtr comm = FETOLCommunicator::getInstance();
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-
-      int myid = comm->getProcessID();
-      int mybundle = comm->getBundleID();
-      int root = comm->getRoot();
-
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "d:/temp/insitu_demo";
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/koskuche/scratch/fetol_demo";
-         availMem = 1.5e9;
-
-         if(myid==root && mybundle==root)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(mybundle)+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      ConfigFileReader cf(cstr1);
-      if ( !cf.read() )
-      {
-         std::string exceptionText = "Unable to read configuration file\n";
-         throw exceptionText;
-      }
-
-
-      pathname = cf.getValue("path");
-      availMem = UbSystem::stringTo<double>(cf.getValue("memory"));
-      string metafile = cf.getValue("metafile");
-      double outstep = UbSystem::stringTo<double>(cf.getValue("outstep"));
-      double endstep = UbSystem::stringTo<double>(cf.getValue("endstep"));
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      double dx = 1;
-
-      const int blocknx1 = UbSystem::stringTo<int>(cf.getValue("blocknx1")); //16;
-      const int blocknx2 = UbSystem::stringTo<int>(cf.getValue("blocknx2"));//16;
-      const int blocknx3 = UbSystem::stringTo<int>(cf.getValue("blocknx3"));//16;
-
-      const int gridNx1 = UbSystem::stringTo<int>(cf.getValue("gridnx1"));//3;
-      const int gridNx2 = UbSystem::stringTo<int>(cf.getValue("gridnx2"));//3;
-      const int gridNx3 = UbSystem::stringTo<int>(cf.getValue("gridnx3"));//3;
-
-      double L1 = gridNx1*blocknx1;
-      double L2, L3, H;
-      L2 = H = gridNx2*blocknx1;
-      L3 = gridNx3*blocknx1;
-
-      LBMReal radius = 7;
-      LBMReal uLB = 0.01;
-      LBMReal Re = 3000.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-
-      Grid3DPtr grid(new Grid3D(comm));
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-      //UbSchedulerPtr restartSch(new UbScheduler(10000, 10000, 100000));
-      //RestartPostprocessor rp(grid, restartSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY);
-      //grid = rp.restart(-1);
-
-      if (grid->getTimeStep() == 0)
-      {
-
-         const int baseLevel = 0;
-         const int refineLevel = 0;
-
-         //obstacle
-         GbObject3DPtr cylinder(new GbCylinder3D(L1*0.5, L2*0.5, 0, L1*0.5, L2*0.5, L3, radius));
-         GbSystem3D::writeGeoObject(cylinder.get(),pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-         D3Q27InteractorPtr cylinderInt;
-
-         //bounding box
-         double d_minX1 = 0.0;
-         double d_minX2 = 0.0;
-         double d_minX3 = 0.0;
-
-         double d_maxX1 = L1;
-         double d_maxX2 = L2;
-         double d_maxX3 = L3;
-
-
-         double blockLength = blocknx1*dx;
-
-         //refinement area
-         double off = 1;
-         GbObject3DPtr refineCube(new  GbCuboid3D(cylinder->getX1Minimum()-off, cylinder->getX2Minimum()-off, cylinder->getX3Minimum(), 
-            cylinder->getX1Maximum()+off, cylinder->getX2Maximum()+off, cylinder->getX3Maximum()));
-
-         GbObject3DPtr gridCube(new GbCuboid3D(d_minX1, d_minX2, d_minX3, d_maxX1, d_maxX2, d_maxX3));
-         if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance()); 
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"Parameters:");
-            UBLOG(logINFO,"L = " << L2/dx );
-            UBLOG(logINFO,"v = " << uLB );
-            UBLOG(logINFO,"rho = " << rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-            UBLOG(logINFO,"Re = " << Re );
-            UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,"number of levels = " << refineLevel+1 );
-            UBLOG(logINFO,"numOfThreads = " << numOfThreads );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-         if(myid ==0) GbSystem3D::writeGeoObject(refineCube.get(),pathname + "/geo/refineCube", WbWriterVtkXmlBinary::getInstance());
-
-         //walls
-         GbCuboid3DPtr addWallYmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_minX2, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_minX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_maxX2, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_maxX3, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_minX1, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(refineCube, 1);
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         cylinderInt = D3Q27InteractorPtr ( new D3Q27Interactor(cylinder, grid, bcObst,Interactor3D::SOLID));
-
-         //walls
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst,Interactor3D::SOLID));
-
-         mu::Parser fct;
-         fct.SetExpr("16*U*x2*x3*(H-x2)*(H-x3)/H^4");
-         fct.DefineConst("U", uLB);
-         fct.DefineConst("H", H);
-
-         //inflow
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-         velBCAdapter->setSecondaryBcOption(2);
-         D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-         InteractorsHelper intHelper(grid, metisVisitor);
-         //intHelper.addInteractor(cylinderInt);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.selectBlocks();
-
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         //FETOLSetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-
-         double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }            
-
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27BGK(blocknx1, blocknx2, blocknx3, true));
-         //option = 0 - ohne param., option = 1 - mit param.
-         //int option = 0;
-         LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         intHelper.setBC();
-
-         //initialization of distributions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(nueLB, rhoLB);
-         //initVisitor.setVx1(fct);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-      }
-      else
-      {
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-      }
-
-      UbSchedulerPtr stepSch(new UbScheduler(outstep));
-      //D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv);
-
-      InSituVTKPostprocessor isp(grid, stepSch, metafile, conv);
-      //isp.update(0);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endstep, stepSch));
-      
-      if(myid == 0) 
-         UBLOG(logINFO,"Simulation-start");
-      
-      calculation->calculate();
-      
-      if(myid == 0) 
-         UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if ( argv != NULL )
-   {
-      if (argc > 1)
-      {
-            chanel(argv[1]);
-      }
-      else
-      {
-         cout << "Configuration file must be set!: " <<  argv[0] << " <config file>" << endl << std::flush;
-      }
-   }
-
-   return 0;
-}
-
diff --git a/apps/cpu/insitu_demoserver/CMakeLists.txt b/apps/cpu/insitu_demoserver/CMakeLists.txt
deleted file mode 100644
index f88611140ac6498dd878f3074bdf35e23e3dcc67..0000000000000000000000000000000000000000
--- a/apps/cpu/insitu_demoserver/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(insitu_demoserver)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids ${FETOL_RELEASE_LIBRARY})
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(insitu_demoserver BINARY)
diff --git a/apps/cpu/insitu_demoserver/insitu_demoserver.cpp b/apps/cpu/insitu_demoserver/insitu_demoserver.cpp
deleted file mode 100644
index c3f9d3912bc8525d6280360be4ab8eed19332e74..0000000000000000000000000000000000000000
--- a/apps/cpu/insitu_demoserver/insitu_demoserver.cpp
+++ /dev/null
@@ -1,229 +0,0 @@
-#define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL,vtkRenderingOpenGL)
-#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)
-
-#include "vtkActor.h"
-#include "vtkContourFilter.h"
-#include "vtkDataSetMapper.h"
-#include "vtkDebugLeaks.h"
-#include "vtkDoubleArray.h"
-#include "vtkPolyData.h"
-#include "vtkPolyDataMapper.h"
-#include "vtkRectilinearGrid.h"
-#include "vtkRegressionTestImage.h"
-#include "vtkRenderWindow.h"
-#include "vtkOpenGLRenderer.h"
-#include "vtkSocketCommunicator.h"
-#include "vtkSocketController.h"
-#include "vtkStructuredGrid.h"
-#include "vtkImageData.h"
-#include "vtkUnstructuredGrid.h"
-#include "vtkCamera.h"
-#include "vtkImageActor.h"
-#include <vtkXMLUnstructuredGridWriter.h>
-#include "vtkRenderWindowInteractor.h"
-#include "vtkOpenGLActor.h"
-#include "vtkSmartPointer.h"
-#include "vtkInteractorStyleTrackballCamera.h"
-#include <vtkProperty.h>
-#include <vtkPointData.h>
-#include <vtkPlane.h>
-#include <vtkCutter.h>
-
-#include <boost/thread.hpp>
-
-#define VTK_CREATE(type, name) \
-   vtkSmartPointer<type> name = vtkSmartPointer<type>::New()
-
-
-static const int scMsgLength = 10;
-
-static void CleanUp(vtkSmartPointer<vtkSocketCommunicator> vtkNotUsed(comm),
-                    vtkSmartPointer<vtkSocketController> vtkNotUsed(contr))
-{
-   // This will close the connection as well as delete
-   // the communicator
-   // Deleting no longer necessary with smart pointers.
-   //   comm->Delete();
-   //   contr->Delete();
-}
-
-using namespace std;
-
-vtkSmartPointer<vtkSocketController> contr;
-vtkSmartPointer<vtkSocketCommunicator> comm;
-
-void receive(vtkSmartPointer<vtkUnstructuredGrid> ugrid, vtkSmartPointer<vtkDataSetMapper> umapper, vtkSmartPointer<vtkRenderWindow> renWin)
-{
-   int step;
-   while (true)
-   {
-      if (!comm->Receive(&step, 1, 1, 11))
-      {
-         cerr << "Server error: Error receiving data." << endl;
-         CleanUp(comm, contr);
-         return;
-      }
-
-      cout << "step: "<<step<<"\n";
-
-      if (!comm->Receive(ugrid, 1, 9))
-      {
-         cerr << "Client error: Error receiving data." << endl;
-         CleanUp(comm, contr);
-         return;
-      }
-      double range[2];
-      ugrid->GetPointData()->GetArray("Vx")->GetRange(range);
-      umapper->SetScalarRange(range);
-      umapper->Update();
-      //renWin->Render();
-   }
-}
-
-////////////////////////////////////////////////////////////////////////
-void server()
-{
-   try
-   {
-      contr = vtkSmartPointer<vtkSocketController>::New();
-      contr->Initialize();
-
-      comm = vtkSmartPointer<vtkSocketCommunicator>::New();
-
-      string hostname = "localhost";
-      int port=11111;
-
-      // Establish connection
-      if (!comm->WaitForConnection(port))
-      {
-         cerr << "Server error: Wait timed out or could not initialize socket." << endl;
-         return;
-      }
-
-      // Test receiving vtkDataObject
-      VTK_CREATE(vtkUnstructuredGrid, ugrid);
-
-      int step;
-
-      if (!comm->Receive(&step, 1, 1, 11))
-      {
-         cerr << "Server error: Error receiving data." << endl;
-         CleanUp(comm, contr);
-         return;
-      }
-
-      cout << "step: "<<step<<"\n";
-
-      if (!comm->Receive(ugrid, 1, 9))
-      {
-         cerr << "Client error: Error receiving data." << endl;
-         CleanUp(comm, contr);
-         return;
-      }
-
-      vtkSmartPointer<vtkXMLUnstructuredGridWriter> writer = vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New();
-      writer->SetInput(ugrid);
-      writer->SetFileName("test.vtu");
-      writer->SetDataModeToAscii();
-      writer->Update();
-
-      //vtkPlane
-      vtkSmartPointer<vtkPlane> plane = vtkPlane::New();
-      plane->SetNormal(0.0, 1.0, 0.0);
-      plane->SetOrigin(40, 19.5, 19.5);
-
-      //Cut
-      vtkSmartPointer<vtkCutter> planeCut = vtkCutter::New();
-      planeCut->SetInput(ugrid);
-      planeCut->SetCutFunction(plane);
-      planeCut->Update();
-
-      VTK_CREATE(vtkDataSetMapper, umapper);
-      //umapper->SetInput(planeCut->GetOutput());
-      umapper->SetInput(ugrid);
-
-      umapper->SetScalarModeToUsePointFieldData();
-      umapper->SetColorModeToMapScalars();
-      umapper->ScalarVisibilityOn();
-      double range[2];
-      //planeCut->GetOutput()->GetPointData()->GetArray("Vx")->GetRange(range);
-      ugrid->GetPointData()->GetArray("Vx")->GetRange(range);
-      umapper->SetScalarRange(range);
-      umapper->SelectColorArray("Vx");
-
-      VTK_CREATE(vtkActor, uactor);
-      uactor->SetMapper(umapper);
-
-      VTK_CREATE(vtkRenderer, ren);
-      ren->AddActor(uactor);
-      ren->SetBackground( 0.1, 0.2, 0.4 );
-
-      VTK_CREATE(vtkRenderWindow, renWin);
-      renWin->SetSize(1024,800);
-      renWin->AddRenderer(ren);
-
-      //while (true)
-      //{
-      //   if (!comm->Receive(&step, 1, 1, 11))
-      //   {
-      //      cerr << "Server error: Error receiving data." << endl;
-      //      CleanUp(comm, contr);
-      //      return;
-      //   }
-
-      //   cout << "step: "<<step<<"\n";
-
-      //   if (!comm->Receive(ugrid, 1, 9))
-      //   {
-      //      cerr << "Client error: Error receiving data." << endl;
-      //      CleanUp(comm, contr);
-      //      return;
-      //   }
-
-      //   //writer->Update();
-      //   
-      //   planeCut->Update();
-      //   planeCut->GetOutput()->GetPointData()->GetArray("Vx")->GetRange(range);
-      //   umapper->SetScalarRange(range);
-      //   umapper->Update();
-      //   renWin->Render();
-      //}
-
-      boost::thread t(boost::bind( &receive, ugrid, umapper,renWin));
-
-      vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
-      iren->SetRenderWindow(renWin);
-
-      vtkInteractorStyleTrackballCamera *style = vtkInteractorStyleTrackballCamera::New();
-      iren->SetInteractorStyle(style);
-
-      iren->Initialize();
-      iren->Start();
-
-      iren->Delete();
-      style->Delete();
-
-      CleanUp(comm, contr);
-
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   server();
-}
-
diff --git a/apps/cpu/levels/CMakeLists.txt b/apps/cpu/levels/CMakeLists.txt
deleted file mode 100644
index 7ec1d4c64be0c1d71551ed1ee86d071e1f47af50..0000000000000000000000000000000000000000
--- a/apps/cpu/levels/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(levels)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(levels BINARY)
diff --git a/apps/cpu/levels/config.txt b/apps/cpu/levels/config.txt
deleted file mode 100644
index f905aba06625b87f57516252430464f18f1081d2..0000000000000000000000000000000000000000
--- a/apps/cpu/levels/config.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#Ordner für Simulationsergebnisse
-path=d:/temp/levels
-
-#Verfügbare Arbeitsspeicher in Byte
-memory=5e9
-
-#Ausgabezeitschritt
-outstep=100
-
-#maximale Anzahl Simulationszeitschritte
-endstep=100
-
-#Anzahl von Threads
-threads=4
-
-#max refierment level (1 - 5)
-level=3
-
-blockNx = 8 8 8
-dim = 160 8 160
-
-radius = 1.5
\ No newline at end of file
diff --git a/apps/cpu/levels/levels.cpp b/apps/cpu/levels/levels.cpp
deleted file mode 100644
index 9f674916cf74f09840d9d259ff4ccd72af9ad277..0000000000000000000000000000000000000000
--- a/apps/cpu/levels/levels.cpp
+++ /dev/null
@@ -1,351 +0,0 @@
-#include <VirtualFluids.h>
-#include <set>
-#include <map>
-using namespace std;
-
-
-////////////////////////////////////////////////////////////////////////
-void run(string configname)
-{
-   try
-   {
-
-      //Sleep(30000);
-
-      string machine = QUOTEME(CAB_MACHINE);
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-
-      int myid = comm->getProcessID();
-      int mybundle = comm->getBundleID();
-      int root = comm->getRoot();
-
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string pathname = config.getValue<string>("path");
-      double availMem = config.getValue<double>("memory");
-      double outstep = config.getValue<double>("outstep");
-      double endstep = config.getValue<double>("endstep");
-      int numOfThreads = config.getValue<int>("threads");
-      int refineLevel = config.getValue<int>("level");
-      vector<double> dim = config.getVector<double>("dim");
-      vector<int> blockNx = config.getVector<int>("blockNx");
-      double radius = config.getValue<double>("radius");
-
-      //LBMReal radius = 4;
-      LBMReal uLB = 0.1;
-      LBMReal Re = 1;
-      LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = (uLB*2.0*radius)/Re;
-      //LBMReal nuLB = (uLB*L2)/Re;
-      LBMReal nuLB = 0.168666666667/100;
-
-      double dp_LB = 1e-6;
-      double rhoLBinflow = dp_LB*3.0;
-
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-
-      mu::Parser fct;
-      fct.SetExpr("U");
-      fct.DefineConst("U", uLB);
-      SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-      velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapter(new DensityBCAdapter(rhoLB));
-      denBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      bcVisitor.addBC(velBCAdapter);
-      bcVisitor.addBC(denBCAdapter);
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      double dx = 1;
-
-      const int blocknx1 = blockNx[0];
-      const int blocknx2 = blockNx[1];
-      const int blocknx3 = blockNx[2];
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<UbScheduler> restartSch(new UbScheduler(100000, 100000, 100000));
-      RestartCoProcessor rp(grid, restartSch, comm, pathname, RestartCoProcessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (grid->getTimeStep()==0)
-      {
-
-         const int baseLevel = 0;
-
-         //bounding box
-         double d_minX1 = 0.0;
-         double d_minX2 = 0.0;
-         double d_minX3 = 0.0;
-
-         double d_maxX1 = dim[0];
-         double d_maxX2 = dim[1];
-         double d_maxX3 = dim[2];
-
-         double blockLength = blocknx1*dx;
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "uLB = "<<uLB);
-            UBLOG(logINFO, "rhoLB = "<<rhoLB);
-            UBLOG(logINFO, "nueLB = "<<nuLB);
-            UBLOG(logINFO, "Re = "<<Re);
-            UBLOG(logINFO, "dx = "<<dx);
-            UBLOG(logINFO, "number of levels = "<<refineLevel+1);
-            UBLOG(logINFO, "numOfThreads = "<<numOfThreads);
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         SPtr<GbObject3D> gridCube(new GbCuboid3D(d_minX1, d_minX2, d_minX3, d_maxX1, d_maxX2, d_maxX3));
-         if (myid==0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         //SPtr<CoordinateTransformation3D> trafo = grid->getCoordinateTransformator();
-         //trafo->setRotationX2Angle(4);
-
-         //sphere
-         //SPtr<GbObject3D> sphereRef(new GbSphere3D(L1/4.0, L2*0.5, L3*0.5, radius+1.0));
-         //GbSystem3D::writeGeoObject(sphereRef.get(),pathname + "/geo/sphereRef", WbWriterVtkXmlBinary::getInstance());
-
-
-         //sphere
-         SPtr<GbObject3D> sphere(new GbSphere3D(d_maxX1*0.5, d_maxX2*0.5, d_maxX3*0.5, radius));
-         //SPtr<GbObject3D> sphere(new GbSphere3D(L1/2.0-4.0, L2*0.5+4.0, L3*0.5+4.0, radius));
-         //SPtr<GbObject3D> sphere(new GbCuboid3D(L1/4.0-radius, L2/2.0-radius, L3/2.0-radius, L1/4.0+radius, L2/2.0+radius, L3/2.0+radius));
-         GbSystem3D::writeGeoObject(sphere.get(), pathname+"/geo/sphere", WbWriterVtkXmlBinary::getInstance());
-
-         double off = 0.0;
-         SPtr<GbObject3D> refCube(new GbCuboid3D(sphere->getX1Minimum()-off, sphere->getX2Minimum()-off, sphere->getX3Minimum(),
-            sphere->getX1Maximum()+off, sphere->getX2Maximum()+off, sphere->getX3Maximum()));
-         if (myid==0) GbSystem3D::writeGeoObject(refCube.get(), pathname+"/geo/refCube", WbWriterVtkXmlBinary::getInstance());
-
-         if (refineLevel>0)
-         {
-            if (myid==0) UBLOG(logINFO, "Refinement - start");
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel, comm);
-            //refineHelper.addGbObject(sphere, refineLevel);
-            refineHelper.addGbObject(refCube, refineLevel);
-            refineHelper.refine();
-            if (myid==0) UBLOG(logINFO, "Refinement - end");
-         }
-
-         //walls
-         GbCuboid3DPtr addWallYmin(new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_minX2, d_maxX3+4.0*blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_minX3));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax(new GbCuboid3D(d_minX1-4.0*blockLength, d_maxX2, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_maxX3, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_minX1, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(d_maxX1, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         WriteBlocksSPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-
-
-         //sphere
-         SPtr<D3Q27Interactor> sphereInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(sphere, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         //walls
-         SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         mu::Parser fct;
-         fct.SetExpr("U");
-         fct.DefineConst("U", uLB);
-
-         //inflow
-         SPtr<D3Q27Interactor> inflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //D3Q27BoundaryConditionAdapterPtr denBCAdapterInflow(new D3Q27DensityBCAdapter(rhoLBinflow));
-         //denBCAdapterInflow->setSecondaryBcOption(0);
-         //SPtr<D3Q27Interactor> inflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, denBCAdapterInflow, Interactor3D::SOLID));
-
-         //outflow
-         SPtr<D3Q27Interactor> outflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
-
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-         InteractorsHelper intHelper(grid, metisVisitor);
-         //intHelper.addInteractor(sphereInt);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.selectBlocks();
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //Block3DSPtr<ConnectorFactory> factory(new Block3DConnectorFactory());
-         //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
-         //grid->accept(setConnsVisitor);
-
-         ppblocks->process(0);
-         ppblocks.reset();
-
-         unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-         int ghostLayer = 3;
-         unsigned long long numberOfNodesPerBlock = (unsigned long long)(blockNx[0])* (unsigned long long)(blockNx[1])* (unsigned long long)(blockNx[2]);
-         unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-         unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blockNx[0]+ghostLayer) * (blockNx[1]+ghostLayer) * (blockNx[2]+ghostLayer);
-         double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27*sizeof(double)+sizeof(int)+sizeof(float)*4));
-         double needMem = needMemAll/double(comm->getNumberOfProcesses());
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Number of blocks = "<<numberOfBlocks);
-            UBLOG(logINFO, "Number of nodes  = "<<numberOfNodes);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level "<<level<<" = "<<nobl);
-               UBLOG(logINFO, "Number of nodes for level "<<level<<" = "<<nobl*numberOfNodesPerBlock);
-            }
-            UBLOG(logINFO, "Necessary memory  = "<<needMemAll<<" bytes");
-            UBLOG(logINFO, "Necessary memory per process = "<<needMem<<" bytes");
-            UBLOG(logINFO, "Available memory per process = "<<availMem<<" bytes");
-         }
-
-         SPtr<LBMKernel> kernel(new IncompressibleCumulantLBMKernel(blocknx1, blocknx2, blocknx3, IncompressibleCumulantLBMKernel::NORMAL));
-
-         SPtr<BCProcessor> bcProcessor(new BCProcessor());
-
-
-         kernel->setBCProcessor(bcProcessor);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel>0)
-         {
-            SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         intHelper.setBC();
-
-         grid->accept(bcVisitor);
-
-         mu::Parser fctRoh;
-         fctRoh.SetExpr("(x1max-x1)/l*dp*3.0");
-         fctRoh.DefineConst("dp", dp_LB);
-         fctRoh.DefineConst("x1max", d_maxX1);
-         fctRoh.DefineConst("l", d_maxX1-d_minX1);
-
-         //initialization of distributions
-         InitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-         initVisitor.setVx1(fct);
-         //initVisitor.setRho(fctRoh);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         WriteBoundaryConditionsSPtr<CoProcessor> ppgeo(
-            new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-         ppgeo->process(0);
-         ppgeo.reset();;
-
-         if (myid==0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         UBLOG(logINFO, "SetConnectors - start, id="<<myid);
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         //D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         SPtr<ConnectorFactory> cFactory(new Block3DConnectorFactory());
-         ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, cFactory);
-         grid->accept(setConnsVisitor);
-
-         UBLOG(logINFO, "SetConnectors - end, id="<<myid);
-      }
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outstep));
-      //stepSch->addSchedule(10000, 0, 1000000);
-      WriteMacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-
-      const SPtr<ConcreteCalculatorFactory> calculatorFactory = std::make_shared<ConcreteCalculatorFactory>(stepSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endstep, calculatorFactory, CalculatorType::HYBRID));
-
-      if (myid==0)
-         UBLOG(logINFO, "Simulation-start");
-
-      calculation->calculate();
-
-      if (myid==0)
-         UBLOG(logINFO, "Simulation-end");
-
-   }
-   catch (std::exception& e)
-   {
-      cerr<<e.what()<<endl<<flush;
-   }
-   catch (std::string& s)
-   {
-      cerr<<s<<endl;
-   }
-   catch (...)
-   {
-      cerr<<"unknown exception"<<endl;
-   }
-
-}
-
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if (argv!=NULL)
-   {
-      if (argv[1]!=NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout<<"Configuration file is missing!"<<endl;
-      }
-   }
-}
-
diff --git a/apps/cpu/micropart/CMakeLists.txt b/apps/cpu/micropart/CMakeLists.txt
deleted file mode 100644
index 15e818a09c9634878780600a3def0002c70d675c..0000000000000000000000000000000000000000
--- a/apps/cpu/micropart/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(micropart)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(mcpart BINARY)
diff --git a/apps/cpu/micropart/mcpart.cpp b/apps/cpu/micropart/mcpart.cpp
deleted file mode 100644
index 3089a6e4311fd1ecee37e52a2eae4dc5fa5c3fa0..0000000000000000000000000000000000000000
--- a/apps/cpu/micropart/mcpart.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "micropartTestQs3.hpp"
-//#include "micropartSetup1.hpp"
-//#include "micropartSetup2.hpp"
-//#include "orifice.hpp"
-
-int main(int argc, char* argv[])
-{
-   micropartTestQs3(argv[1]);
-   //runSetup1(argv[1]);
-   //runSetup2(argv[1]);
-   //orifice(argv[1]);
-   return 0;
-}
-
diff --git a/apps/cpu/micropart/micropartSetup1.hpp b/apps/cpu/micropart/micropartSetup1.hpp
deleted file mode 100644
index 79fe30059a596f9a9600c4eb45eddd248bb35a62..0000000000000000000000000000000000000000
--- a/apps/cpu/micropart/micropartSetup1.hpp
+++ /dev/null
@@ -1,451 +0,0 @@
-#include <iostream>
-#include <string>
-#include <map>
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include "numerics/geometry3d/GbSphere3D.h"
-#include "BlocksPostprocessor.h"
-#include "Grid3D.h"
-#include "Patch3D.h"
-#include "Patch3DSystem.h"
-#include "Block3D.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "LBMKernelETD3Q27BGK.h"
-#include "CalculationManager.h" 
-#include "D3Q27SetConnectorsBlockVisitor.h" 
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27VelocityBCAdapter.h"
-#include "D3Q27DensityBCAdapter.h"
-#include "SimulationParameters.h"
-#include "Communicator.h"
-#include "MPICommunicator.h"
-#include "SimpleGeometricPartitioner.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "D3Q27ETBCProcessor.h"
-#include "D3Q27TriFaceMeshInteractor.h"
-#include "ConfigFileReader.h"
-#include "StringUtil.hpp"
-#include "D3Q27PressureDifferencePostprocessor.h"
-#include "D3Q27IntegrateValuesHelper.h"
-#include "LBMUnitConverter.h"
-#include "NUPSCounterPostprocessor.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "GenBlocksGridVisitor.h"
-#include "D3Q27PathLinePostprocessor.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-   //
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "numerics/geometry3d/creator/GbTriFaceMesh3DCreator.h"
-#include "numerics/geometry3d/GbTriFaceMesh3D.h"
-#include "D3Q27System.h"
-#include <basics/transmitter/TbTransmitterMpiPool.h>
-#include "MathUtil.hpp"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "SolidBlocksHelper.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "RestartPostprocessor.h"
-#include "LBMKernelETD3Q27CCLB.h"
-#include "D3Q27IncompressibleOffsetInterpolationProcessor.h"
-
-using namespace std;
-
-void runSetup1(const char *cstr)
-{
-   try
-   {
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-      int numprocs = comm->getNumberOfProcesses();
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      double availMem = 0;
-      string geoFile;
-      int numOfThreads = 1;
-
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "c:/temp/micropart";
-         availMem = 3.0e9;
-         //geoFile = "c:/Data/micropart/DK19_7_02_Martin.stl";
-         //geoFile = "c:/Data/micropart/ktoolcav.stl";
-         //geoFile = "c:/Data/micropart/boxN.stl";
-         //geoFile = "c:/Data/bananas/Banana_boxD.stl";
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/koskuche/scratch/micropart_s1";
-         //pathname = "/work/koskuche/scratch/micropart2";
-         availMem = 12.0e9;
-         geoFile = "/home/koskuche/data/micropart/DK19_7_02_Martin.stl";
-
-         numOfThreads = 1;
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      UbLog::reportingLevel() = logINFO;
-      //UbLog::reportingLevel() = logDEBUG1;
-
-      int nodePerBlockX1 = 8; //Anzahl an Knoten pro Block
-      int nodePerBlockX2 = 8;//(int)16;
-      int nodePerBlockX3 = 8;//(int)16;
-
-      double bH = nodePerBlockX1;    //gewuenschte Rand- und Blockbreite
-
-      //Simulation Parameters
-
-      double sf = 1.0;
-      double endTime = 160001*sf;
-      //length [m]
-      double lSI = 0.067;
-      //length [LB]
-      double lLB = 30;
-
-      double dx = 0.0134;//lSI/lLB;
-
-      double left_offset = 0.5;
-      double right_offset  = 0.5;//2*0.5
-      double front_offset = 0.15;
-      double back_offset  = 0.15;
-      double top_offset = 0.0;
-      double bottom_offset  = 0.07;
-
-      LBMReal vLB = 0.016103/sf;
-      LBMReal Re;
-      LBMReal rhoLB = 0.0;
-      LBMReal nueLB = 0.0000249/sf;//(vLB*lLB)/Re;
-      Re = (vLB*(0.303/dx))/nueLB;
-      const int baseLevel = 0;
-      const int refineLevel = 5;
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      //////////////////////////////////////////////////////////////////////////
-      GbObject3DPtr refineCube1(new  GbCuboid3D(-0.2222890,-0.52993, -0.141754, 0.578916113,0.6089970,0.0446053));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube1.get(), pathname+"/geo/refineCube1", WbWriterVtkXmlASCII::getInstance());
-
-      GbObject3DPtr refineCube2(new  GbCuboid3D(-0.16,-0.05, -0.141754, 0.2,0.05,0.0446053));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube2.get(), pathname+"/geo/refineCube2", WbWriterVtkXmlASCII::getInstance());
-      //////////////////////////////////////////////////////////////////////////
-
-      Grid3DPtr grid(new Grid3D());
-
-      UbSchedulerPtr rSch(new UbScheduler());
-      rSch->addSchedule(20000, 20000, endTime-1);
-      RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY));
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if/*(cstr== NULL)*/(cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-
-         grid = rp->restart(UbSystem::stringTo<int>(opt));
-         rp->reconnect();
-
-         if(myid ==0) UBLOG(logINFO,"TimeStep = " <<grid->getTimeStep());
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         //PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         //grid->accept(pqPartVisitor);
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"L = " <<lLB );
-            UBLOG(logINFO,"v = " <<vLB );
-            UBLOG(logINFO,"rho = " <<rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-            UBLOG(logINFO,"Re = " << Re );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-
-         ////////////////////////////////////////////////////////////////////////
-         //Grid
-         //////////////////////////////////////////////////////////////////////////
-         grid->setDeltaX(dx);
-         grid->setBlockNX(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2);
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Geometrie
-         ////////////////////////////////////////////////////////////////////////////
-         //GbTriFaceMesh3DPtr geo (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(geoFile,"geo"));
-
-         //if(myid == 0) GbSystem3D::writeGeoObject(geo.get(), pathname+"/geo/geo", WbWriterVtkXmlASCII::getInstance());
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Randgeometrien erstellen
-         ////////////////////////////////////////////////////////////////////////////
-         
-         GbCuboid3DPtr plate1  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -1.515e-1, -6.831e-2, 7.5, 1.515e-1, 0.0 ));
-
-         GbCuboid3DPtr plate2  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, -16.51e-1, -16.831e-2, 1.5e-1, -1.6e-2, 1.0 ));
-         GbCuboid3DPtr plate3  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, 1.6e-2, -16.831e-2, 1.5e-1, 16.515e-1, 1.0 ));
-
-         GbCuboid3DPtr plate1_1  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, -1.0e-1, 7.5, 2.515e-1, -6.831e-2 ));
-         GbCuboid3DPtr plate1_2  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, -0.0000001, 7.5, 2.515e-1, 1.0e-1 ));
-         //GbCuboid3DPtr plate1_3  = GbCuboid3DPtr( new GbCuboid3D( -7.5, 1.515e-1, -6.831e-2, 7.5, 2.515e-1, 0.0  ));
-         GbCuboid3DPtr plate1_3  = GbCuboid3DPtr( new GbCuboid3D( -7.5, 1.515e-1, -9.831e-2, 7.5, 2.515e-1, 0.06  ));
-         GbCuboid3DPtr plate1_4  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, 0.0, 7.5, -1.515e-1, -1.0e-1 ));
-
-         GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -8.0, -1.0, -1.0, -7.5, 1.0, 1.0 ));
-         GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( 7.5, -1.0, -1.0, 8.0, 1.0, 1.0 ));
-
-         if(myid == 0)
-         {
-            GbSystem3D::writeGeoObject(plate2.get(),pathname+"/geo/plate2", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(plate3.get(),pathname+"/geo/plate3", WbWriterVtkXmlASCII::getInstance());
-
-            GbSystem3D::writeGeoObject(plate1_1.get(),pathname+"/geo/plate1_1", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(plate1_2.get(),pathname+"/geo/plate1_2", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(plate1_3.get(),pathname+"/geo/plate1_3", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(plate1_4.get(),pathname+"/geo/plate1_4", WbWriterVtkXmlASCII::getInstance());
-
-            GbSystem3D::writeGeoObject(inflow.get(),pathname+"/geo/inflow", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(outflow.get(),pathname+"/geo/outflow", WbWriterVtkXmlASCII::getInstance());
-         }
-
-         double shiftForMG=grid->getDeltaX(refineLevel)*nodePerBlockX1 / 3.0*1.5;
-
-         GbObject3DPtr gridCube(new GbCuboid3D(plate1->getX1Minimum()-shiftForMG, plate1->getX2Minimum()-shiftForMG, plate1->getX3Minimum()-shiftForMG,
-                                                plate1->getX1Maximum()+shiftForMG, 
-                                                plate1->getX2Maximum()+shiftForMG, 
-                                                plate1->getX3Maximum()+shiftForMG));
-
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            RefineCrossAndInsideGbObjectBlockVisitor refVisitor1(refineCube1, baseLevel, refineLevel-3);
-            grid->accept(refVisitor1);
-
-            RefineCrossAndInsideGbObjectBlockVisitor refVisitor2(refineCube2, baseLevel, refineLevel-1);
-            grid->accept(refVisitor2);
-
-            RatioBlockVisitor ratioVisitor(refineLevel);
-            grid->accept(ratioVisitor);
-
-            RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-            grid->accept(ratioSmoothVisitor);
-
-            OverlapBlockVisitor overlapVisitor(refineLevel);
-            grid->accept(overlapVisitor);
-
-            std::vector<int> dirs;
-            D3Q27System::getLBMDirections(dirs);
-            SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-            grid->accept(interDirsVisitor);
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         //////////////////////////////////////////////////////////////////////////
-         //INTERAKTOREN SETZEN (=Randbedingungen)
-         //////////////////////////////////////////////////////////////////////////
-         //oben/unten = Haftrand
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         //D3Q27TriFaceMeshInteractorPtr geoInt = D3Q27TriFaceMeshInteractorPtr( new D3Q27TriFaceMeshInteractor(geo, grid, D3Q27BoundaryConditionAdapterPtr(new D3Q27NoSlipBCAdapter(bbOption)),Interactor3D::SOLID));
-         //geoInt->setUseHalfSpaceCheck(true);
-         //geoInt->setRegardPointInObjectTest(true);
-
-         //D3Q27InteractorPtr plate1Int(new D3Q27Interactor(plate1, grid, bcObst,Interactor3D::INVERSESOLID));
-         D3Q27InteractorPtr plate2Int(new D3Q27Interactor(plate2, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr plate3Int(new D3Q27Interactor(plate3, grid, bcObst,Interactor3D::SOLID));
-
-         D3Q27InteractorPtr plate1_1Int(new D3Q27Interactor(plate1_1, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr plate1_2Int(new D3Q27Interactor(plate1_2, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr plate1_3Int(new D3Q27Interactor(plate1_3, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr plate1_4Int(new D3Q27Interactor(plate1_4, grid, bcObst,Interactor3D::SOLID));
-
-         //links: geschwindigkeits-einfluss
-         //Velocity-BC
-         //////////////////////////////////////////////////////////////////////////
-         mu::Parser fct;
-         fct.DefineConst("vx1"  , vLB*9.0/4.0);
-         fct = Utilities::getDuctParaboloidX(plate1->getX2Centroid(), plate1->getX2Maximum() - plate1->getX2Minimum(), plate1->getX3Centroid(), plate1->getX3Minimum() - plate1->getX3Maximum(), vLB*9.0/4.0);
-         //fct.SetExpr("vx1");
-         //////////////////////////////////////////////////////////////////////////
-         //////////////////////////////////////////////////////////////////////////
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter = D3Q27BoundaryConditionAdapterPtr(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-        // velBCAdapter->setSecondaryBcOption(2);
-         D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(inflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //rechts: druckrand
-         //Density-BC
-         //fuer Kompressibles Modell  rho = 1.0
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         denBCAdapter->setSecondaryBcOption(1);
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(outflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-         //MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelIntersected, D3Q27System::B, true, numOfThreads);
-         grid->accept( metisVisitor );
-
-         SolidBlocksHelper sd(grid, comm);
-         //sd.addInteractor(geoInt);
-         sd.addInteractor(inflowInt);
-         sd.addInteractor(outflowInt);
-         sd.addInteractor(plate1_1Int);
-         sd.addInteractor(plate1_2Int);
-         sd.addInteractor(plate1_3Int);
-         sd.addInteractor(plate1_4Int);
-         sd.addInteractor(plate2Int);
-         sd.addInteractor(plate3Int);
-         sd.deleteSolidBlocks();     
-
-         grid->accept( metisVisitor );
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod_temp = nob * (nodePerBlockX1+gl) * (nodePerBlockX2+gl) * (nodePerBlockX3+gl);
-         unsigned long nod = nob * (nodePerBlockX1) * (nodePerBlockX2) * (nodePerBlockX3);
-         double needMemAll  = double(nod_temp*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }  
-
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2));
-         //option = 0 - ohne param., option = 1 - mit param.
-         int option = 0;
-         LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2, option));
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //canal
-         //grid->addAndInitInteractor(geoInt);
-         grid->addAndInitInteractor(plate1_1Int);
-         grid->addAndInitInteractor(plate1_2Int);
-         grid->addAndInitInteractor(plate1_3Int);
-         grid->addAndInitInteractor(plate1_4Int);
-         grid->addAndInitInteractor(plate2Int);
-         grid->addAndInitInteractor(plate3Int);
-
-         //inflow
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         grid->addAndInitInteractor(outflowInt);
-
-         //////////////////////////////////////////////////////////////////////////
-         //connectoren setzen:
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         //////////////////////////////////////////////////////////////////////////
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-         //////////////////////////////////////////////////////////////////////////
-         //Stroemungsfeld initialisieren
-         //////////////////////////////////////////////////////////////////////////
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(rhoLB); //1.0
-         //initVisitor.setVx1(0.0); 
-         grid->accept(initVisitor);
-
-         //if(myid == 0)
-         //{
-         //   //Abstände "q" als Linien rausschreiben
-         //   std::vector< UbTupleFloat3 > nodes;
-         //   std::vector< UbTupleInt2 >   lines;
-         //   geoInt->addQsLineSet(nodes, lines);
-         //   WbWriterVtkXmlBinary::getInstance()->writeLines(pathname+"/grid/qs",nodes,lines);
-         //}
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end");
-
-      }
-      //////////////////////////////////////////////////////////////////////////
-      //Set Postprozessors
-      //////////////////////////////////////////////////////////////////////////
-      {
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessor ppgeo(grid,geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv,  comm, true);
-         grid->doPostProcess(0);
-      }
-
-      UbSchedulerPtr nupsSch(new UbScheduler(1, 5, 10));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double outTime = 2000;
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      stepSch->addSchedule(100, 100, 100);
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid,stepSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv,  comm);
-      //////////////////////////////////////////////////////////////////////////
-      //PathLine
-      //UbSchedulerPtr plSch(new UbScheduler(10, 1500));
-      //D3Q27PathLinePostprocessor pathLine(grid, pathname + "/pathLine", WbWriterVtkXmlASCII::getInstance(), conv, plSch, comm, -0.3285474538, 0.09692341,-0.0376166666, nueLB, iProcessor);
-      //////////////////////////////////////////////////////////////////////////
-      //Simulation
-      //////////////////////////////////////////////////////////////////////////
-
-      UbSchedulerPtr visSch(stepSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
diff --git a/apps/cpu/micropart/micropartSetup2.hpp b/apps/cpu/micropart/micropartSetup2.hpp
deleted file mode 100644
index e2ee2d18c6eea114bdbd9e161d9e8628b5ef42aa..0000000000000000000000000000000000000000
--- a/apps/cpu/micropart/micropartSetup2.hpp
+++ /dev/null
@@ -1,444 +0,0 @@
-#include <iostream>
-#include <string>
-#include <map>
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include "numerics/geometry3d/GbSphere3D.h"
-#include "BlocksPostprocessor.h"
-#include "Grid3D.h"
-#include "Patch3D.h"
-#include "Patch3DSystem.h"
-#include "Block3D.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "LBMKernelETD3Q27BGK.h"
-#include "CalculationManager.h" 
-#include "D3Q27SetConnectorsBlockVisitor.h" 
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27VelocityBCAdapter.h"
-#include "D3Q27DensityBCAdapter.h"
-#include "SimulationParameters.h"
-#include "Communicator.h"
-#include "MPICommunicator.h"
-#include "SimpleGeometricPartitioner.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "D3Q27ETBCProcessor.h"
-#include "D3Q27TriFaceMeshInteractor.h"
-#include "ConfigFileReader.h"
-#include "StringUtil.hpp"
-#include "D3Q27PressureDifferencePostprocessor.h"
-#include "D3Q27IntegrateValuesHelper.h"
-#include "LBMUnitConverter.h"
-#include "NUPSCounterPostprocessor.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "GenBlocksGridVisitor.h"
-#include "D3Q27PathLinePostprocessor.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-   //
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "numerics/geometry3d/creator/GbTriFaceMesh3DCreator.h"
-#include "numerics/geometry3d/GbTriFaceMesh3D.h"
-#include "D3Q27System.h"
-#include <basics/transmitter/TbTransmitterMpiPool.h>
-#include "MathUtil.hpp"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "SolidBlocksHelper.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "RestartPostprocessor.h"
-#include "D3Q27IncompressibleOffsetInterpolationProcessor.h"
-#include "LBMKernelETD3Q27CCLB.h"
-
-using namespace std;
-
-void runSetup2(const char *cstr)
-{
-   try
-   {
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-      int numprocs = comm->getNumberOfProcesses();
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      double availMem = 0;
-      string geoFile;
-      int numOfThreads = 1;
-
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "c:/temp/micropart";
-         availMem = 3.0e9;
-         //geoFile = "c:/Data/micropart/DK19_7_02_Martin.stl";
-         //geoFile = "c:/Data/micropart/ktoolcav.stl";
-         //geoFile = "c:/Data/micropart/boxN.stl";
-         //geoFile = "c:/Data/bananas/Banana_boxD.stl";
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/koskuche/scratch/micropart2";
-         availMem = 12.0e9;
-         //geoFile = "/home/koskuche/data/micropart/DK19_7_02_Martin.stl";
-
-         numOfThreads = 1;
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      UbLog::reportingLevel() = logINFO;
-      //UbLog::reportingLevel() = logDEBUG1;
-
-      int nodePerBlockX1 = 16; //Anzahl an Knoten pro Block
-      int nodePerBlockX2 = 16;//(int)16;
-      int nodePerBlockX3 = 16;//(int)16;
-
-      double bH = nodePerBlockX1;    //gewuenschte Rand- und Blockbreite
-
-      //Simulation Parameters
-
-      //length [m]
-      double lSI = 0.067;
-      //length [LB]
-      double lLB = 30;
-
-      double dx = 0.0134*0.5;//lSI/lLB;
-
-      double left_offset = 0.5;
-      double right_offset  = 0.5;//2*0.5
-      double front_offset = 0.15;
-      double back_offset  = 0.15;
-      double top_offset = 0.0;
-      double bottom_offset  = 0.07;
-
-      LBMReal vLB = 0.016103;
-      LBMReal Re;
-      LBMReal rhoLB = 0.0;
-      LBMReal nueLB = 0.0000249*2.0;//(vLB*lLB)/Re;
-      Re = (vLB*(0.303/dx))/nueLB;
-      const int baseLevel = 0;
-      const int refineLevel = 5;
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      //////////////////////////////////////////////////////////////////////////
-      GbObject3DPtr refineCube1(new  GbCuboid3D(-0.2222890,-0.52993, -0.141754, 0.578916113,0.6089970,0.0446053));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube1.get(), pathname+"/geo/refineCube1", WbWriterVtkXmlASCII::getInstance());
-
-      GbObject3DPtr refineCube2(new  GbCuboid3D(-0.16,-0.05, -0.141754, 0.2,0.05,0.0446053));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube2.get(), pathname+"/geo/refineCube2", WbWriterVtkXmlASCII::getInstance());
-      //////////////////////////////////////////////////////////////////////////
-
-      Grid3DPtr grid(new Grid3D());
-
-      UbSchedulerPtr rSch(new UbScheduler(1000, 1000));
-      //RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY));
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if/*(cstr== NULL)*/(cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-
-         //grid = rp->restart(UbSystem::stringTo<int>(opt));
-         //rp->reconnect();
-         grid->setTimeStep(UbSystem::stringTo<int>(opt));
-
-         if(myid ==0) UBLOG(logINFO,"TimeStep = " <<grid->getTimeStep());
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"L = " <<lLB );
-            UBLOG(logINFO,"v = " <<vLB );
-            UBLOG(logINFO,"rho = " <<rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-            UBLOG(logINFO,"Re = " << Re );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-
-         ////////////////////////////////////////////////////////////////////////
-         //Grid
-         //////////////////////////////////////////////////////////////////////////
-         grid->setDeltaX(dx);
-         grid->setBlockNX(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2);
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Geometrie
-         ////////////////////////////////////////////////////////////////////////////
-         //GbTriFaceMesh3DPtr geo (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(geoFile,"geo"));
-
-         //if(myid == 0) GbSystem3D::writeGeoObject(geo.get(), pathname+"/geo/geo", WbWriterVtkXmlASCII::getInstance());
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Randgeometrien erstellen
-         ////////////////////////////////////////////////////////////////////////////
-         double shiftForMG=grid->getDeltaX(refineLevel)*nodePerBlockX1 / 3.0*2.0;
-         GbCuboid3DPtr plate1  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -1.515e-1, -6.831e-2, 7.5, 1.515e-1, 0.0 ));
-
-         GbCuboid3DPtr plate2  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, -16.51e-1, -16.831e-2, 1.5e-1, -1.6e-2, 1.0 ));
-         GbCuboid3DPtr plate3  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, 1.6e-2, -16.831e-2, 1.5e-1, 16.515e-1, 1.0 ));
-
-         GbCuboid3DPtr plate1_1  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, -1.0e-1, 7.5, 2.515e-1, -6.831e-2 ));
-         GbCuboid3DPtr plate1_2  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, -0.0000001, 7.5, 2.515e-1, 1.0e-1 ));
-         GbCuboid3DPtr plate1_3  = GbCuboid3DPtr( new GbCuboid3D( -7.5, 1.515e-1, -6.831e-2, 7.5, 2.515e-1, 0.0  ));
-         GbCuboid3DPtr plate1_4  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, 0.0, 7.5, -1.515e-1, -1.0e-1 ));
-
-         GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -8.0, -1.0, -1.0, -7.5, 1.0, 1.0 ));
-         GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( 7.5, -1.0, -1.0, 8.0, 1.0, 1.0 ));
-
-         if(myid == 0)
-         {
-            GbSystem3D::writeGeoObject(plate1.get(),pathname+"/geo/plate1", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(plate2.get(),pathname+"/geo/plate2", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(plate3.get(),pathname+"/geo/plate3", WbWriterVtkXmlASCII::getInstance());
-
-            GbSystem3D::writeGeoObject(plate1_1.get(),pathname+"/geo/plate1_1", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(plate1_2.get(),pathname+"/geo/plate1_2", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(plate1_3.get(),pathname+"/geo/plate1_3", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(plate1_4.get(),pathname+"/geo/plate1_4", WbWriterVtkXmlASCII::getInstance());
-
-            GbSystem3D::writeGeoObject(inflow.get(),pathname+"/geo/inflow", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(outflow.get(),pathname+"/geo/outflow", WbWriterVtkXmlASCII::getInstance());
-         }
-
-         GbObject3DPtr gridCube(new GbCuboid3D(plate1->getX1Minimum()-shiftForMG, plate1->getX2Minimum()-shiftForMG, plate1->getX3Minimum()-shiftForMG,
-                                                plate1->getX1Maximum()+shiftForMG, 
-                                                plate1->getX2Maximum()+shiftForMG, 
-                                                plate1->getX3Maximum()+shiftForMG));
-
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            RefineCrossAndInsideGbObjectBlockVisitor refVisitor1(refineCube1, baseLevel, refineLevel-3);
-            grid->accept(refVisitor1);
-
-            RefineCrossAndInsideGbObjectBlockVisitor refVisitor2(refineCube2, baseLevel, refineLevel-1);
-            grid->accept(refVisitor2);
-
-            RatioBlockVisitor ratioVisitor(refineLevel);
-            grid->accept(ratioVisitor);
-
-            RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-            grid->accept(ratioSmoothVisitor);
-
-            OverlapBlockVisitor overlapVisitor(refineLevel);
-            grid->accept(overlapVisitor);
-
-            std::vector<int> dirs;
-            D3Q27System::getLBMDirections(dirs);
-            SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-            grid->accept(interDirsVisitor);
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         //////////////////////////////////////////////////////////////////////////
-         //INTERAKTOREN SETZEN (=Randbedingungen)
-         //////////////////////////////////////////////////////////////////////////
-         //oben/unten = Haftrand
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         //D3Q27TriFaceMeshInteractorPtr geoInt = D3Q27TriFaceMeshInteractorPtr( new D3Q27TriFaceMeshInteractor(geo, grid, D3Q27BoundaryConditionAdapterPtr(new D3Q27NoSlipBCAdapter(bbOption)),Interactor3D::SOLID));
-         //geoInt->setUseHalfSpaceCheck(true);
-         //geoInt->setRegardPointInObjectTest(true);
-
-         //D3Q27InteractorPtr plate1Int(new D3Q27Interactor(plate1, grid, bcObst,Interactor3D::INVERSESOLID));
-         D3Q27InteractorPtr plate2Int(new D3Q27Interactor(plate2, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr plate3Int(new D3Q27Interactor(plate3, grid, bcObst,Interactor3D::SOLID));
-
-         D3Q27InteractorPtr plate1_1Int(new D3Q27Interactor(plate1_1, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr plate1_2Int(new D3Q27Interactor(plate1_2, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr plate1_3Int(new D3Q27Interactor(plate1_3, grid, bcObst,Interactor3D::SOLID));
-         D3Q27InteractorPtr plate1_4Int(new D3Q27Interactor(plate1_4, grid, bcObst,Interactor3D::SOLID));
-
-         //links: geschwindigkeits-einfluss
-         //Velocity-BC
-         //////////////////////////////////////////////////////////////////////////
-         mu::Parser fct;
-         fct.DefineConst("vx1"  , vLB*9.0/4.0 );
-         fct = Utilities::getDuctParaboloidX(plate1->getX2Centroid(), plate1->getX2Maximum() - plate1->getX2Minimum(), plate1->getX3Centroid(), plate1->getX3Minimum() - plate1->getX3Maximum(), vLB*9.0/4.0);
-         //fct.SetExpr("vx1");
-         //////////////////////////////////////////////////////////////////////////
-
-         //////////////////////////////////////////////////////////////////////////
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter = D3Q27BoundaryConditionAdapterPtr(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-         velBCAdapter->setSecondaryBcOption(2);
-         D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(inflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //rechts: druckrand
-         //Density-BC
-         //fuer Kompressibles Modell  rho = 1.0
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         denBCAdapter->setSecondaryBcOption(1);
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(outflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-         grid->accept( metisVisitor );
-
-         SolidBlocksHelper sd(grid, comm);
-         //sd.addInteractor(geoInt);
-         sd.addInteractor(inflowInt);
-         sd.addInteractor(outflowInt);
-         sd.addInteractor(plate1_1Int);
-         sd.addInteractor(plate1_2Int);
-         sd.addInteractor(plate1_3Int);
-         sd.addInteractor(plate1_4Int);
-         sd.addInteractor(plate2Int);
-         sd.addInteractor(plate3Int);
-         sd.deleteSolidBlocks();     
-
-         grid->accept( metisVisitor );
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod_temp = nob * (nodePerBlockX1+gl) * (nodePerBlockX2+gl) * (nodePerBlockX3+gl);
-         unsigned long nod = nob * (nodePerBlockX1) * (nodePerBlockX2) * (nodePerBlockX3);
-         double needMemAll  = double(nod_temp*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }  
-
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2));
-         LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2));
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //canal
-         //grid->addAndInitInteractor(geoInt);
-         grid->addAndInitInteractor(plate1_1Int);
-         grid->addAndInitInteractor(plate1_2Int);
-         grid->addAndInitInteractor(plate1_3Int);
-         grid->addAndInitInteractor(plate1_4Int);
-         grid->addAndInitInteractor(plate2Int);
-         grid->addAndInitInteractor(plate3Int);
-
-         //inflow
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         grid->addAndInitInteractor(outflowInt);
-
-         //////////////////////////////////////////////////////////////////////////
-         //connectoren setzen:
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         //////////////////////////////////////////////////////////////////////////
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-         //////////////////////////////////////////////////////////////////////////
-         //Stroemungsfeld initialisieren
-         //////////////////////////////////////////////////////////////////////////
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(rhoLB); //1.0
-         //initVisitor.setVx1(0.0); 
-         grid->accept(initVisitor);
-
-         //if(myid == 0)
-         //{
-         //   //Abstände "q" als Linien rausschreiben
-         //   std::vector< UbTupleFloat3 > nodes;
-         //   std::vector< UbTupleInt2 >   lines;
-         //   geoInt->addQsLineSet(nodes, lines);
-         //   WbWriterVtkXmlBinary::getInstance()->writeLines(pathname+"/grid/qs",nodes,lines);
-         //}
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end");
-
-      }
-      //////////////////////////////////////////////////////////////////////////
-      //Set Postprozessors
-      //////////////////////////////////////////////////////////////////////////
-      {
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessor ppgeo(grid,geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv,  comm, true);
-         grid->doPostProcess(0);
-      }
-
-      UbSchedulerPtr nupsSch(new UbScheduler(1, 5, 10));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double outTime = 2000;
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid,stepSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv,  comm);
-      //////////////////////////////////////////////////////////////////////////
-      //PathLine
-      //UbSchedulerPtr plSch(new UbScheduler(10, 1500));
-      //D3Q27PathLinePostprocessor pathLine(grid, pathname + "/pathLine", WbWriterVtkXmlASCII::getInstance(), conv, plSch, comm, -0.3285474538, 0.09692341,-0.0376166666, nueLB, iProcessor);
-      //////////////////////////////////////////////////////////////////////////
-      //Simulation
-      //////////////////////////////////////////////////////////////////////////
-      double endTime = 1000000;
-      UbSchedulerPtr visSch(stepSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
diff --git a/apps/cpu/micropart/micropartTestQs.hpp b/apps/cpu/micropart/micropartTestQs.hpp
deleted file mode 100644
index 895e1759239be41dbe1b0b5e433aaee98c6eb200..0000000000000000000000000000000000000000
--- a/apps/cpu/micropart/micropartTestQs.hpp
+++ /dev/null
@@ -1,380 +0,0 @@
-#include <iostream>
-#include <string>
-#include <map>
-#include <vfluids.h>
-
-
-using namespace std;
-
-void micropartTestQs(const char *cstr)
-{
-   try
-   {
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-      int numprocs = comm->getNumberOfProcesses();
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      double availMem = 0;
-      string geoFile;
-      int numOfThreads = 3;
-
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "c:/temp/micropart";
-         availMem = 3.0e9;
-         //geoFile = "c:/Data/micropart/DK19_7_02_Martin.stl";
-         geoFile = "d:/Data/micropart/E0019B_mit_Radien.stl";
-         //geoFile = "c:/Data/micropart/boxN.stl";
-         //geoFile = "c:/Data/bananas/Banana_boxD.stl";
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/koskuche/scratch/micropart3";
-         //pathname = "/work/koskuche/scratch/micropart2";
-         availMem = 12.0e9;
-         geoFile = "/home/koskuche/data/micropart/E0019B_mit_Radien_Inv_new_Box.stl";
-
-         numOfThreads = 8;
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      UbLog::reportingLevel() = logINFO;
-      //UbLog::reportingLevel() = logDEBUG1;
-
-      int nodePerBlockX1 = 8; //Anzahl an Knoten pro Block
-      int nodePerBlockX2 = 8;//(int)16;
-      int nodePerBlockX3 = 8;//(int)16;
-
-      double bH = nodePerBlockX1;    //gewuenschte Rand- und Blockbreite
-
-      //Simulation Parameters
-
-      //length [m]
-      double lSI = 0.067;
-      //length [LB]
-      double lLB = 30;
-
-      double dx = 5;//0.0134;//lSI/lLB;
-
-      double left_offset = 0.5;
-      double right_offset  = 0.5;//2*0.5
-      double front_offset = 0.15;
-      double back_offset  = 0.15;
-      double top_offset = 0.0;
-      double bottom_offset  = 0.07;
-
-      LBMReal vLB = 0.016103;
-      LBMReal Re;
-      LBMReal rhoLB = 0.0;
-      LBMReal nueLB = 0.0000249;//(vLB*lLB)/Re;
-      Re = (vLB*(0.303/dx))/nueLB;
-      const int baseLevel = 0;
-      const int refineLevel = 2;
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      double ft=1000.0;
-      //////////////////////////////////////////////////////////////////////////
-      GbObject3DPtr refineCube1(new  GbCuboid3D(-0.2222890*ft,-0.52993*ft, -0.141754*ft, /*0.578916113*ft*/275.0,0.6089970*ft,0.0446053*ft));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube1.get(), pathname+"/geo/refineCube1", WbWriterVtkXmlASCII::getInstance());
-
-      GbObject3DPtr refineCube2(new  GbCuboid3D(-0.16*ft-10.0,-0.05*ft, -0.141754*ft, 0.2*ft+10.0,0.05*ft,0.0446053*ft));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube2.get(), pathname+"/geo/refineCube2", WbWriterVtkXmlASCII::getInstance());
-      //////////////////////////////////////////////////////////////////////////
-
-      Grid3DPtr grid(new Grid3D());
-
-      UbSchedulerPtr rSch(new UbScheduler(1000, 1000));
-      RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY));
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if/*(cstr== NULL)*/(cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-
-         grid = rp->restart(UbSystem::stringTo<int>(opt));
-         rp->reconnect(grid);
-         grid->setTimeStep(UbSystem::stringTo<int>(opt));
-
-         if(myid ==0) UBLOG(logINFO,"TimeStep = " <<grid->getTimeStep());
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"L = " <<lLB );
-            UBLOG(logINFO,"v = " <<vLB );
-            UBLOG(logINFO,"rho = " <<rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-            UBLOG(logINFO,"Re = " << Re );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-
-         ////////////////////////////////////////////////////////////////////////
-         //Grid
-         //////////////////////////////////////////////////////////////////////////
-         grid->setDeltaX(dx);
-         grid->setBlockNX(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2);
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Geometrie
-         ////////////////////////////////////////////////////////////////////////////
-         UBLOG(logINFO,"Read geometry: start");
-         GbTriFaceMesh3DPtr geo (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(geoFile,"geo"));
-         UBLOG(logINFO,"Read geometry: end");
-         if(myid == 0) GbSystem3D::writeGeoObject(geo.get(), pathname+"/geo/geo", WbWriterVtkXmlASCII::getInstance());
-
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Randgeometrien erstellen
-         ////////////////////////////////////////////////////////////////////////////
-         double shiftForMG=grid->getDeltaX(refineLevel)*nodePerBlockX1 / 3.0*2.0;
-
-         GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D(geo->getX1Minimum()+9100.0,  geo->getX2Minimum()-200.0, geo->getX3Minimum()-200.0,
-                                                               geo->getX1Minimum()+10000.0, geo->getX2Maximum()+200.0, geo->getX3Maximum()+200.0));
-         GbCuboid3DPtr outflow  = GbCuboid3DPtr( new GbCuboid3D(geo->getX1Maximum()-10000.0,  geo->getX2Minimum()-200.0, geo->getX3Minimum()-200.0,
-                                                                geo->getX1Maximum()-9100.0, geo->getX2Maximum()+200.0, geo->getX3Maximum()+200.0));
-
-         if(myid == 0)
-         {
-            GbSystem3D::writeGeoObject(inflow.get(),pathname+"/geo/inflow", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(outflow.get(),pathname+"/geo/outflow", WbWriterVtkXmlASCII::getInstance());
-         }
-
-         //GbObject3DPtr gridCube(new GbCuboid3D(geo->getX1Minimum()-(double)nodePerBlockX1*dx, geo->getX2Minimum()-(double)nodePerBlockX1*dx, geo->getX3Minimum()-(double)nodePerBlockX1*dx,
-         //   geo->getX1Maximum()+(double)nodePerBlockX1*dx, 
-         //   geo->getX2Maximum()+(double)nodePerBlockX1*dx, 
-         //   geo->getX3Maximum()+(double)nodePerBlockX1*dx));
-
-
-         shiftForMG=0.0;
-         GbObject3DPtr gridCube(new GbCuboid3D(geo->getX1Minimum()+10000.0, geo->getX2Minimum()-shiftForMG, -0.141754*ft/2.0/*geo->getX3Minimum()-shiftForMG*/,
-            geo->getX1Maximum()-10000.0, 
-            geo->getX2Maximum()+shiftForMG, 
-            geo->getX3Maximum()+shiftForMG));
-
-         if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(),pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            //RefineCrossAndInsideGbObjectBlockVisitor refVisitor1(refineCube1, baseLevel, refineLevel-3);
-            //grid->accept(refVisitor1);
-
-            RefineCrossAndInsideGbObjectBlockVisitor refVisitor2(refineCube1, refineLevel);
-            grid->accept(refVisitor2);
-
-            RatioBlockVisitor ratioVisitor(refineLevel);
-            grid->accept(ratioVisitor);
-
-            RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-            grid->accept(ratioSmoothVisitor);
-
-            OverlapBlockVisitor overlapVisitor(refineLevel);
-            grid->accept(overlapVisitor);
-
-            std::vector<int> dirs;
-            D3Q27System::getLBMDirections(dirs);
-            SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-            grid->accept(interDirsVisitor);
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         //////////////////////////////////////////////////////////////////////////
-         //INTERAKTOREN SETZEN (=Randbedingungen)
-         //////////////////////////////////////////////////////////////////////////
-         //oben/unten = Haftrand
-         int bbOption = 2; //0=simple Bounce Back, 1=quadr. BB, 2=quadr. BB 2nd choice 
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         D3Q27TriFaceMeshInteractorPtr geoInt = D3Q27TriFaceMeshInteractorPtr( new D3Q27TriFaceMeshInteractor(geo, grid, D3Q27BoundaryConditionAdapterPtr(new D3Q27NoSlipBCAdapter(bbOption)),Interactor3D::INVERSESOLID));
-         geoInt->setUseHalfSpaceCheck(true);
-         geoInt->setRegardPointInObjectTest(true);
-
-         //links: geschwindigkeits-einfluss
-         //Velocity-BC
-         //////////////////////////////////////////////////////////////////////////
-         mu::Parser fct;
-         fct.DefineConst("vx1"  , vLB           );
-         //fct = MathUtil::getDuctParaboloidX(plate1->getX2Centroid(), plate1->getX2Maximum() - plate1->getX2Minimum(), plate1->getX3Centroid(), plate1->getX3Minimum() - plate1->getX3Maximum(), vLB*9.0/4.0);
-         fct.SetExpr("vx1");
-         //////////////////////////////////////////////////////////////////////////
-         //////////////////////////////////////////////////////////////////////////
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter = D3Q27BoundaryConditionAdapterPtr(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-         velBCAdapter->setSecondaryBcOption(2);
-         D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(inflow, grid, velBCAdapter, Interactor3D::SOLID));
-         //D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(inflow, grid, bcObst, Interactor3D::SOLID));
-
-         //rechts: druckrand
-         //Density-BC
-         //fuer Kompressibles Modell  rho = 1.0
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(outflow, grid, D3Q27BoundaryConditionAdapterPtr(new D3Q27DensityBCAdapter(rhoLB)),Interactor3D::SOLID));
-         //D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(outflow, grid, bcObst,Interactor3D::SOLID));
-
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-         grid->accept( metisVisitor );
-
-         SolidBlocksHelper sd(grid, comm);
-         sd.addInteractor(geoInt);
-         sd.addInteractor(inflowInt);
-         sd.addInteractor(outflowInt);
-         sd.deleteSolidBlocks();     
-
-         grid->accept( metisVisitor );
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         UBLOG(logINFO,grid->getBlock(10,12,0,1)->toString());
-         vector<Block3DPtr> blocks;
-         //grid->getNeighborBlocksForDirection(D3Q27System::W,10,12,0,1,3,blocks);
-         grid->getNeighborBlocksForDirection(D3Q27System::E,4,6,0,0,2,blocks);
-         BOOST_FOREACH(Block3DPtr b, blocks)
-            UBLOG(logINFO, b->toString());
-
-
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod_temp = nob * (nodePerBlockX1+gl) * (nodePerBlockX2+gl) * (nodePerBlockX3+gl);
-         unsigned long nod = nob * (nodePerBlockX1) * (nodePerBlockX2) * (nodePerBlockX3);
-         double needMemAll  = double(nod_temp*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }  
-
-
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2));
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27BGK(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2, true));
-         LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2,0));
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //canal
-         grid->addAndInitInteractor(geoInt);
-
-         //inflow
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         grid->addAndInitInteractor(outflowInt);
-
-         //////////////////////////////////////////////////////////////////////////
-         //connectoren setzen:
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         //////////////////////////////////////////////////////////////////////////
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-         //////////////////////////////////////////////////////////////////////////
-         //Stroemungsfeld initialisieren
-         //////////////////////////////////////////////////////////////////////////
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(rhoLB); //1.0
-         //initVisitor.setVx1(0.0); 
-         grid->accept(initVisitor);
-
-         if(myid == 0)
-         {
-            //Abstände "q" als Linien rausschreiben
-            std::vector< UbTupleFloat3 > nodes;
-            std::vector< UbTupleInt2 >   lines;
-            geoInt->addQsLineSet(nodes, lines);
-            WbWriterVtkXmlBinary::getInstance()->writeLines(pathname+"/grid/qs",nodes,lines);
-         }
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end");
-
-      }
-      //////////////////////////////////////////////////////////////////////////
-      //Set Postprozessors
-      //////////////////////////////////////////////////////////////////////////
-      {
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessor ppgeo(grid,geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv,  comm, true);
-         grid->doPostProcess(0);
-      }
-
-
-      UbSchedulerPtr nupsSch(new UbScheduler(1, 5, 10));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double outTime = 100;
-      UbSchedulerPtr visSch(new UbScheduler(outTime));
-      //visSch->addSchedule(20, 1010, 1100);
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid,visSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv,  comm);
-      //////////////////////////////////////////////////////////////////////////
-      //PathLine
-      //UbSchedulerPtr plSch(new UbScheduler(10, 1500));
-      //D3Q27PathLinePostprocessor pathLine(grid, pathname + "/pathLine", WbWriterVtkXmlASCII::getInstance(), conv, plSch, comm, -0.3285474538, 0.09692341,-0.0376166666, nueLB, iProcessor);
-      //////////////////////////////////////////////////////////////////////////
-      //Simulation
-      //////////////////////////////////////////////////////////////////////////
-      double endTime = 1000;
-      UbSchedulerPtr visSch1(new UbScheduler(1));
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
diff --git a/apps/cpu/micropart/micropartTestQs2.hpp b/apps/cpu/micropart/micropartTestQs2.hpp
deleted file mode 100644
index bcaa75a458fb0cdf3126d8bce7a72d853dd0bc21..0000000000000000000000000000000000000000
--- a/apps/cpu/micropart/micropartTestQs2.hpp
+++ /dev/null
@@ -1,592 +0,0 @@
-#include <iostream>
-#include <string>
-#include <map>
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include "numerics/geometry3d/GbSphere3D.h"
-#include "BlocksPostprocessor.h"
-#include "Grid3D.h"
-#include "Patch3D.h"
-#include "Patch3DSystem.h"
-#include "Block3D.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "LBMKernelETD3Q27BGK.h"
-#include "CalculationManager.h" 
-#include "D3Q27SetConnectorsBlockVisitor.h" 
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27VelocityBCAdapter.h"
-#include "D3Q27DensityBCAdapter.h"
-#include "SimulationParameters.h"
-#include "Communicator.h"
-#include "MPICommunicator.h"
-#include "SimpleGeometricPartitioner.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "D3Q27ETBCProcessor.h"
-#include "D3Q27TriFaceMeshInteractor.h"
-#include "ConfigFileReader.h"
-#include "StringUtil.hpp"
-#include "D3Q27PressureDifferencePostprocessor.h"
-#include "D3Q27IntegrateValuesHelper.h"
-#include "LBMUnitConverter.h"
-#include "NUPSCounterPostprocessor.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "GenBlocksGridVisitor.h"
-#include "D3Q27PathLinePostprocessorMcpart.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-   //
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "numerics/geometry3d/creator/GbTriFaceMesh3DCreator.h"
-#include "numerics/geometry3d/GbTriFaceMesh3D.h"
-#include "D3Q27System.h"
-#include <basics/transmitter/TbTransmitterMpiPool.h>
-#include "MathUtil.hpp"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "SolidBlocksHelper.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "RestartPostprocessor.h"
-#include "D3Q27IncompressibleOffsetInterpolationProcessor.h"
-#include "LBMKernelETD3Q27CCLB.h"
-#include "AverageValuesPostprocessor.h"
-#include <vfluids.h>
-using namespace std;
-
-void micropartTestQs2(const char *cstr)
-{
-   try
-   {
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-      int numprocs = comm->getNumberOfProcesses();
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      double availMem = 0;
-      string geoFile;
-      int numOfThreads = 1;
-
-      if(machine == "EHSAN1491") 
-      {
-         pathname = "/work/ehsan/micropart";
-         availMem = 3.0e9;
-		  int numOfThreads = 1;
-         //geoFile = "c:/Data/micropart/DK19_7_02_Martin.stl";
-         //geoFile = "c:/Data/micropart/ktoolcav.stl";
-         //geoFile = "c:/Data/micropart/boxN.stl";
-        geoFile = "C:/Users/ehsan/Desktop/meshparticles/E0019B_mit_Radien.stl";
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/koskuche/scratch/mcpart/out";
-         availMem = 12.0e9/8.0;
-		  geoFile = "/work/ehsan/data/E0019B_mit_Radien.stl";
-         //geoFile = "/home/koskuche/data/micropart/DK19_7_02_Martin.stl";
-
-         numOfThreads = 1;
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      UbLog::reportingLevel() = logINFO;
-      //UbLog::reportingLevel() = logDEBUG1;
-
-      int nodePerBlockX1 =16; //Anzahl an Knoten pro Block
-      int nodePerBlockX2 =16;//(int)16;
-      int nodePerBlockX3 =8;//8; //(int)16;
-
-      double bH = nodePerBlockX1;    //gewuenschte Rand- und Blockbreite
-
-      //Simulation Parameters
-      const int baseLevel = 0;
-      const int refineLevel =4;
-      //length [m]
-      double lSI = 219;//223.2;
-      //length [LB]
-      double lLB = 30;
-
-      double dx =lSI/lLB;
-
-      double left_offset = 10700;//*0.5;
-      double right_offset  = 107000;//0.5;//2*0.5
-      double front_offset = 750;//0.15;
-      double back_offset  = 750;//0.15;
-      double top_offset = 250;//0.0;
-      double bottom_offset  =750;// 70;//0.07;
-	  
-	   LBMReal vLB =0.00016103/5.0*sqrt(2.0);//0.00016103;
-       LBMReal Re;
-       LBMReal rhoLB = 0.0;
-       LBMReal nueLB = 0.0000249;//(vLB*lLB)/Re;
-       Re = (vLB*(500/dx))/nueLB;
-       double dp_Ph=200.0*100000;//
-	   double dp_lb=dp_Ph*0.001*(nueLB*dx)*(nueLB*dx);//nue_ph=10e-6 and dx is in micrometer
-      // LBMReal nueLB = 0.000016103;
-      // LBMReal Re=15000;
-      // LBMReal rhoLB = 0.0;
-      // LBMReal vLB =nueLB*Re/(500.0/dx);
-     // // Re = (vLB*(0.303/dx))/nueLB;
-	   // //Re = (vLB*lLB)/nueLB;
-	  
-      // LBMReal rhoWord = 1e-15;//kg/micrometre^3;//1000.0;
-	  // LBMReal nueRE = 1e6;//micromter^2/s;//0.000001;
-	  // LBMReal  vWorld=300*1e6;//micrometer/s;//nueRE*Re/ (lSI*4.0/9.0);
-	  LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-      //conv->init(lSI*1e-6,30000,rhoWord,vWorld,lLB,1.0/*rhoLB*/,vLB);
-      
-	 
- //////////////////////////////////////////////////////////////////////////
-      GbObject3DPtr refineCube1(new  GbCuboid3D(-500.0+5.0/*-354.0*/,-957.0/*-280.0*/,-684.0/* -72.0*/, 4100/*370.0*/,957.0/*354.0*/,70.0));//-530.0,-280.0, -72.0, 530.0,354.0,70.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube1.get(), pathname+"/geo/refineCube1", WbWriterVtkXmlASCII::getInstance());
-
-      GbObject3DPtr refineCube2(new  GbCuboid3D(-230.0,-90.0, -684.0/*-72.0*/, 600,100.0,70.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube2.get(), pathname+"/geo/refineCube2", WbWriterVtkXmlASCII::getInstance());
-	  
-	   GbObject3DPtr refineCube3(new  GbCuboid3D(-350.0,-957.0/*-120.0*/,-684.0/*-684.0*//* -72.0*/, 1700,957.0/*120.0*/,70.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube3.get(), pathname+"/geo/refineCube3", WbWriterVtkXmlASCII::getInstance());
-	  
-	   GbObject3DPtr refineCube4(new  GbCuboid3D(-170.0,-60.0, -684.0/*-72.0*/, 200,60.0,70.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube4.get(), pathname+"/geo/refineCube4", WbWriterVtkXmlASCII::getInstance());
-	  
-	   GbObject3DPtr refineCubeInlet(new  GbCuboid3D(-10600.0,-600.0, -600.0/*-72.0*/, -9000,600.0,60.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCubeInlet.get(), pathname+"/geo/refineCubeInlet", WbWriterVtkXmlASCII::getInstance());
-	  
-	  GbObject3DPtr refineCubeOutlet(new  GbCuboid3D(9000,-600.0, -600.0/*-72.0*/,10550.0 ,600.0,60.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCubeOutlet.get(), pathname+"/geo/refineCubeOutlet", WbWriterVtkXmlASCII::getInstance());
-      //////////////////////////////////////////////////////////////////////////
-      D3Q27TriFaceMeshInteractorPtr geoInt;
-	  /////////////////
-      //Grid3DPtr grid(new Grid3D());
-        Grid3DPtr grid(new Grid3D(comm));
-
-      UbSchedulerPtr rSch(new UbScheduler());
-      rSch->addSchedule(100, 200, 20000);
-      RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY));
-
-      std::string opt;
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if/*(cstr== NULL)*/(cstr!= NULL)
-      {
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-         grid = rp->restart(UbSystem::stringTo<int>(opt));
-         rp->reconnect(grid);
-
-         // SetForcingBlockVisitor forcingVisitor(0.0, 0.0, 0.0);
-         // grid->accept(forcingVisitor);
-
-         //D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-		  if(myid==0) UBLOG(logINFO,"Restart finish: " << opt);
-	 
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"L = " <<lLB );
-            UBLOG(logINFO,"v = " <<vLB );
-            UBLOG(logINFO,"rho = " <<rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-			UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,"Re = " << Re );
-			 UBLOG(logINFO,"dp_lb = " << dp_lb );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-
-         ////////////////////////////////////////////////////////////////////////
-         //Grid
-         //////////////////////////////////////////////////////////////////////////
-         grid->setDeltaX(dx);
-         grid->setBlockNX(nodePerBlockX1, nodePerBlockX2, nodePerBlockX3);
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Geometrie
-         ////////////////////////////////////////////////////////////////////////////
-         GbTriFaceMesh3DPtr geo (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(geoFile,"geo"));
-
-         if(myid == 0) GbSystem3D::writeGeoObject(geo.get(), pathname+"/geo/geo", WbWriterVtkXmlASCII::getInstance());
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Randgeometrien erstellen
-         ////////////////////////////////////////////////////////////////////////////
-         double shiftForMG=grid->getDeltaX(refineLevel)*nodePerBlockX1 / 3.0*2.0;
-          GbCuboid3DPtr plate1  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -1.515e-1, -6.831e-2, 7.5, 1.515e-1, 0.0 ));
-
-           GbCuboid3DPtr plate2  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, -16.51e-1, -16.831e-2, 1.5e-1, -1.6e-2, 1.0 ));
-           GbCuboid3DPtr plate3  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, 1.6e-2, -16.831e-2, 1.5e-1, 16.515e-1, 1.0 ));
-
-          // GbCuboid3DPtr plate1_1  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, -1.0e-1, 7.5, 2.515e-1, -6.831e-2 ));
-          // GbCuboid3DPtr plate1_2  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, -0.0000001, 7.5, 2.515e-1, 1.0e-1 ));
-          // GbCuboid3DPtr plate1_3  = GbCuboid3DPtr( new GbCuboid3D( -7.5, 1.515e-1, -6.831e-2, 7.5, 2.515e-1, 0.0  ));
-          // GbCuboid3DPtr plate1_4  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, 0.0, 7.5, -1.515e-1, -1.0e-1 ));
-
-          // GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -8.0, -1.0, -1.0, -7.5, 1.0, 1.0 ));
-          // GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( 7.5, -1.0, -1.0, 8.0, 1.0, 1.0 ));
-		  
-		   // GbCuboid3DPtr plate2  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, -16.51e-1, -16.831e-2, 1.5e-1, -1.6e-2, 1.0 ));
-          // GbCuboid3DPtr plate3  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, 1.6e-2, -16.831e-2, 1.5e-1, 16.515e-1, 1.0 ));
-
-          // GbCuboid3DPtr plate1_1  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, back_offset, -bottom_offset-bH*dx, right_offset+bH*dx, back_offset+bH*dx, top_offset+bH*dx ));
-          // GbCuboid3DPtr plate1_2  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, -front_offset-bH*dx, -bottom_offset-bH*dx, right_offset+bH*dx, -front_offset, top_offset+bH*dx ));
-          // GbCuboid3DPtr plate1_3  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, -front_offset-bH*dx, top_offset, right_offset+bH*dx, back_offset+bH*dx, top_offset+bH*dx+2.0*dx ));
-          // GbCuboid3DPtr plate1_4  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, -front_offset-bH*dx, -bottom_offset-bH*dx, right_offset+bH*dx, back_offset+bH*dx, -bottom_offset ));
-
-          //GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-5*bH*dx, -front_offset-5*bH*dx, -bottom_offset-5*bH*dx, -left_offset, back_offset+5*bH*dx, top_offset+5*bH*dx ));
-          //GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( right_offset, -front_offset-5*bH*dx, -bottom_offset-5*bH*dx, right_offset+5.0*bH*dx, back_offset+5*bH*dx, top_offset+5*bH*dx ));
-		  GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -11000.0,-600.0, -600.0, -9000.0, 600.0, -500 ));
-		  GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( 9000,-600.0, -600.0, 11000.0, 600.0, -500));
-
-
-		   GbObject3DPtr gridCube(new GbCuboid3D(-10700.0/*inflow->getX1Maximum()-4.0*dx/*.5*shiftForMG*/,-550.0/*-270*/ , -550.0/*-70*/,
-                                                10700.0/*outflow->getX1Minimum()+4.0*dx/*.5*shiftForMG*/, 
-                                                550.0/*270*/, 
-                                                23.0/*10.0*/));
-
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-		  
-         if(myid == 0)
-         {
-            GbSystem3D::writeGeoObject(gridCube.get(),pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-            //GbSystem3D::writeGeoObject(plate2.get(),pathname+"/geo/plate2", WbWriterVtkXmlASCII::getInstance());
-            //GbSystem3D::writeGeoObject(plate3.get(),pathname+"/geo/plate3", WbWriterVtkXmlASCII::getInstance());
-
-            // GbSystem3D::writeGeoObject(plate1_1.get(),pathname+"/geo/plate1_1", WbWriterVtkXmlASCII::getInstance());
-            // GbSystem3D::writeGeoObject(plate1_2.get(),pathname+"/geo/plate1_2", WbWriterVtkXmlASCII::getInstance());
-            // GbSystem3D::writeGeoObject(plate1_3.get(),pathname+"/geo/plate1_3", WbWriterVtkXmlASCII::getInstance());
-            // GbSystem3D::writeGeoObject(plate1_4.get(),pathname+"/geo/plate1_4", WbWriterVtkXmlASCII::getInstance());
-
-            GbSystem3D::writeGeoObject(inflow.get(),pathname+"/geo/inflow", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(outflow.get(),pathname+"/geo/outflow", WbWriterVtkXmlASCII::getInstance());
-         }
-   
-
-         if (refineLevel > 0)
-         {
-		  if(myid == 0) UBLOG(logINFO,"Refinement - start");   
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(refineCube1, 1);
-            refineHelper.addGbObject(refineCube3, 2);
-			 refineHelper.addGbObject(refineCube2, 3);
-			 refineHelper.addGbObject(refineCube4, 4);
-			 
-			 refineHelper.addGbObject(refineCubeInlet, 1);
-			 refineHelper.addGbObject(refineCubeOutlet, 1);
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");   
-		 
-		 
-           // RefineCrossAndInsideGbObjectBlockVisitor refVisitor1(refineCube1, refineLevel-4);
-            // grid->accept(refVisitor1);
-
-			// RefineCrossAndInsideGbObjectBlockVisitor refVisitor3(refineCube3, refineLevel-3);
-            // grid->accept(refVisitor3);
-
-            // RefineCrossAndInsideGbObjectBlockVisitor refVisitor2(refineCube2, refineLevel-2);
-            // grid->accept(refVisitor2);
-			
-			 // RefineCrossAndInsideGbObjectBlockVisitor refVisitor4(refineCube4, refineLevel-1);
-            // grid->accept(refVisitor4);
-
-            // RatioBlockVisitor ratioVisitor(refineLevel);
-            // grid->accept(ratioVisitor);
-
-            // RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-            // grid->accept(ratioSmoothVisitor);
-
-            // OverlapBlockVisitor overlapVisitor(refineLevel);
-            // grid->accept(overlapVisitor);
-
-            // std::vector<int> dirs;
-            // D3Q27System::getLBMDirections(dirs);
-            // SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-            // grid->accept(interDirsVisitor);
-            // if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         //////////////////////////////////////////////////////////////////////////
-         //INTERAKTOREN SETZEN (=Randbedingungen)
-         //////////////////////////////////////////////////////////////////////////
-         //oben/unten = Haftrand
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         geoInt = D3Q27TriFaceMeshInteractorPtr( new D3Q27TriFaceMeshInteractor(geo, grid, D3Q27BoundaryConditionAdapterPtr(new D3Q27NoSlipBCAdapter(bbOption)),Interactor3D::INVERSESOLID, Interactor3D::SIMPLE));
-	     geoInt->setUseHalfSpaceCheck(true);
-         geoInt->setRegardPointInObjectTest(true);
-         if(myid == 0) UBLOG(logINFO,"stl - end"); 
-         //D3Q27InteractorPtr plate1Int(new D3Q27Interactor(plate1, grid, bcObst,Interactor3D::INVERSESOLID));
-         // D3Q27InteractorPtr plate2Int(new D3Q27Interactor(plate2, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate3Int(new D3Q27Interactor(plate3, grid, bcObst,Interactor3D::SOLID));
-
-         // D3Q27InteractorPtr plate1_1Int(new D3Q27Interactor(plate1_1, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate1_2Int(new D3Q27Interactor(plate1_2, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate1_3Int(new D3Q27Interactor(plate1_3, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate1_4Int(new D3Q27Interactor(plate1_4, grid, bcObst,Interactor3D::SOLID));
-
-         //links: geschwindigkeits-einfluss
-         //Velocity-BC
-         //////////////////////////////////////////////////////////////////////////
-         mu::Parser fct;
-         fct.DefineConst("vx1"  , vLB*9.0/4.0 );
-         //fct = MathUtil::getDuctParaboloidX(0, 250*2.0, -51.08/2, 51.08, vLB*9.0/4.0);
-         fct.SetExpr("vx1");
-         //////////////////////////////////////////////////////////////////////////
-
-         //////////////////////////////////////////////////////////////////////////
-            // D3Q27BoundaryConditionAdapterPtr velBCAdapter = D3Q27BoundaryConditionAdapterPtr(new D3Q27VelocityBCAdapter (false, false ,true ,fct, 0, D3Q27BCFunction::INFCONST));
-            // velBCAdapter->setSecondaryBcOption(2);
-            // D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(inflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-		 D3Q27BoundaryConditionAdapterPtr denBCAdapterInlet(new D3Q27DensityBCAdapter(3.0*(dp_lb-rhoLB)));
-        denBCAdapterInlet->setSecondaryBcOption(1);
-        D3Q27InteractorPtr inflowInt = D3Q27InteractorPtr( new D3Q27Interactor(inflow, grid, denBCAdapterInlet,Interactor3D::SOLID));
-		 
-         //rechts: druckrand
-         //Density-BC
-         //fuer Kompressibles Modell  rho = 1.0
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         denBCAdapter->setSecondaryBcOption(1);
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(outflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-         grid->accept( metisVisitor );
-         
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         if(myid == 0) ppblocks->update(0);
-         
-         SolidBlocksHelper sd(grid, comm);
-         sd.addInteractor(geoInt);
-         sd.addInteractor(inflowInt);
-         sd.addInteractor(outflowInt);
-         // sd.addInteractor(plate1_1Int);
-         // sd.addInteractor(plate1_2Int);
-         // sd.addInteractor(plate1_3Int);
-         // sd.addInteractor(plate1_4Int);
-         // sd.addInteractor(plate2Int);
-         // sd.addInteractor(plate3Int);
-		   if(myid == 0) UBLOG(logINFO,"line"<<__LINE__); 
-         sd.deleteSolidBlocks();     
-         if(myid == 0) UBLOG(logINFO,"line"<<__LINE__); 
-         grid->accept( metisVisitor );
-         if(myid == 0) UBLOG(logINFO,"line"<<__LINE__);
-
-         sd.setTransBlocks();
-         if(myid == 0) UBLOG(logINFO,"line"<<__LINE__);
-         //BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         if(myid == 0) ppblocks->update(1);
-         if(myid == 0) ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod_temp = nob * (nodePerBlockX1+gl) * (nodePerBlockX2+gl) * (nodePerBlockX3+gl);
-         unsigned long nod = nob * (nodePerBlockX1) * (nodePerBlockX2) * (nodePerBlockX3);
-         double needMemAll  = double(nod_temp*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }  
-
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2));
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2));
-
-		  int option = 0;
-		 LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(nodePerBlockX1, nodePerBlockX2, nodePerBlockX3,option));
-
-		 
-		 
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-		 
-		  if(myid == 0) UBLOG(logINFO,"intractor - start"); 
-          //inflow
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         grid->addAndInitInteractor(outflowInt);
-         //canal
-         grid->addAndInitInteractor(geoInt);
-         // grid->addAndInitInteractor(plate1_1Int);
-         // grid->addAndInitInteractor(plate1_2Int);
-         // grid->addAndInitInteractor(plate1_3Int);
-         // grid->addAndInitInteractor(plate1_4Int);
-         // grid->addAndInitInteractor(plate2Int);
-         // grid->addAndInitInteractor(plate3Int);
-
-       
-
-         //////////////////////////////////////////////////////////////////////////
-         //connectoren setzen:
-
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         //////////////////////////////////////////////////////////////////////////	 
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-			 
-         //////////////////////////////////////////////////////////////////////////     
-	   //Stroemungsfeld initialisieren
-         //////////////////////////////////////////////////////////////////////////
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(rhoLB); //1.0
-         initVisitor.setVx1(0); 
-         grid->accept(initVisitor);
-
-         if(myid == 0)
-         {
-            //Abstände "q" als Linien rausschreiben
-            std::vector< UbTupleFloat3 > nodes;
-            std::vector< UbTupleInt2 >   lines;
-            geoInt->addQsLineSet(nodes, lines);
-            WbWriterVtkXmlBinary::getInstance()->writeLines(pathname+"/grid/qs",nodes,lines);
-         }
-
-          if(myid == 0) UBLOG(logINFO,"Preprozess - end");
-		 
-		 	  ////////////////////////
-           //Set Postprozessors
-           //////////////////////////////////////////////////////////////////////////
-           {
-            UbSchedulerPtr geoSch(new UbScheduler(1));
-            D3Q27MacroscopicQuantitiesPostprocessor ppgeo(grid,geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv,  comm, true);
-            grid->doPostProcess(0);
-           }
-	    
-
-      }
-
-      //////////////////////////////////////////////////////////////////////////
-	   // UbSchedulerPtr visSchAv(new UbScheduler());
-		UbSchedulerPtr visSchAv(new UbScheduler(100,100));
-      // visSchAv->addSchedule(100,10,1000);
-      // UbSchedulerPtr resSchAv(new UbScheduler());
-	   UbSchedulerPtr resSchAv(new UbScheduler(100,100));
-      // resSchAv->addSchedule(20,20,1000);
-      AverageValuesPostprocessor       Avpp(grid,  pathname + "/Turbulence/stepAV", WbWriterVtkXmlBinary::getInstance(), visSchAv/*wann wird rausgeschrieben*/,resSchAv/*wann wird resettet*/,comm);
-	  
-	   D3Q27ShearStressPostprocessor  shear(grid,  pathname + "/shear/step", WbWriterVtkXmlBinary::getInstance(), visSchAv/*wann wird rausgeschrieben*/,resSchAv/*wann wird resettet*/,comm,iProcessor); 
-	   //D3Q27ShearStressPostprocessor  shear(grid,  pathname + "/shear/step", WbWriterVtkXmlBinary::getInstance(), visSchAv/*wann wird rausgeschrieben*/,resSchAv/*wann wird resettet*/,comm);
-	   shear.addInteractor(geoInt);
-	   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  
-
-      UbSchedulerPtr nupsSch(new UbScheduler(1, 5, 10));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double outTime = 100.0;
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid,stepSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv,  comm);
-      //////////////////////////////////////////////////////////////////////////
-      //PathLine
-       UbSchedulerPtr plSch(new UbScheduler(5000, 5000));
-      const int numberofparticle=20;
-	
-	  std::vector<UbTupleDouble3 > potisions;
-	  double randomx[numberofparticle];
-	  double randomy[numberofparticle];
-	  double randomz[numberofparticle];
-	  double lowestx,highestx,lowesty,highesty,lowestz,highestz;
-	  if(myid==0)
-	  {
-		  for(int i = 0; i < numberofparticle; i++)
-		  {
-			  double random; 
-	        lowestx =-10300.0;  lowesty =-230;          lowestz =-250;
-	        highestx=-9792.0;  highesty=-330;          highestz=-250; 
-		  
-	      double rangex=(highestx-lowestx),rangey=(highesty-lowesty),rangez=(highestz-lowestz);	
-           randomx[i] = lowestx+(rangex*rand()/(RAND_MAX + 1.0));
-		   randomy[i] = lowesty+(rangey*rand()/(RAND_MAX + 1.0));
-	       randomz[i] = lowestz+(rangez*rand()/(RAND_MAX + 1.0));
-		  //val<1>(potisions[i])= 0.506983973456;
-		  //val<2>(potisions[i]) = lowesty+(rangey*rand()/(RAND_MAX + 1.0));
-		   //val<3>(potisions[i]) = lowestz+(rangez*rand()/(RAND_MAX + 1.0));
-		  }
-		  for (int i=0;i<comm->getNumberOfProcesses();i++)
-		  {
-			  if (i!=0)
-			  {
-			      MPI_Send(randomx,numberofparticle, MPI_DOUBLE_PRECISION,i,i,MPI_COMM_WORLD);
-				  MPI_Send(randomy,numberofparticle, MPI_DOUBLE_PRECISION,i,i,MPI_COMM_WORLD);
-				  MPI_Send(randomz,numberofparticle, MPI_DOUBLE_PRECISION,i,i,MPI_COMM_WORLD);
-			  }
-		  }
-	  }
-	  if (myid!=0)
-	  {
-		  MPI_Status status; 
-		  MPI_Recv(randomx,numberofparticle, MPI_DOUBLE_PRECISION,0,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
-		  MPI_Recv(randomy,numberofparticle, MPI_DOUBLE_PRECISION,0,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
-		  MPI_Recv(randomz,numberofparticle, MPI_DOUBLE_PRECISION,0,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
-	  }
-	  for(int i = 0; i < numberofparticle; i++)
-	  {	
-		  potisions.push_back( makeUbTuple(randomx[i],randomy[i],randomz[i]) );
-		  //val<1>(potisions[i])= 0.506983973456;
-		  //val<2>(potisions[i]) = randomy[i];
-		  //val<3>(potisions[i]) = randomz[i];
-	  }
-	 //  UBLOG(logINFO,"Rank="<<myid<<" positions  = " <<val<1>(potisions)<< " "<<val<2>(potisions)<<" "<< val<3>(potisions));
-	 // D3Q27InterpolationProcessorPtr iProcessor2;
-     // D3Q27PathLinePostprocessorMcpart pathLine(grid, pathname + "/pathLine/pathLine", WbWriterVtkXmlASCII::getInstance(), conv, plSch, comm,potisions, nueLB, iProcessor);
-      //////////////////////////////////////////////////////////////////////////
-      //Simulation
-      //////////////////////////////////////////////////////////////////////////
-
-	  double endTime = 1000.0;
-      UbSchedulerPtr visSch(stepSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
diff --git a/apps/cpu/micropart/micropartTestQs3.hpp b/apps/cpu/micropart/micropartTestQs3.hpp
deleted file mode 100644
index 9bf5aaa9ea3bdb5d81dd4e1a2f45540ff572bff2..0000000000000000000000000000000000000000
--- a/apps/cpu/micropart/micropartTestQs3.hpp
+++ /dev/null
@@ -1,560 +0,0 @@
-#include <iostream>
-#include <string>
-#include <map>
-
-#include <vfluids.h>
-using namespace std;
-
-void micropartTestQs3(const char *cstr)
-{
-   try
-   {
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-      int numprocs = comm->getNumberOfProcesses();
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      double availMem = 0;
-      string geoFile;
-      int numOfThreads = 1;
-
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "d:/temp/micropart";
-         availMem = 1.0e9;
-         int numOfThreads = 1;
-         geoFile = "d:/Data/micropart/E0019B_mit_Radien.stl";
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         // pathname = "/work/koskuche/scratch/mcpart/out";
-         pathname = "/work/ehsan/orifice";
-         availMem = 12.0e9;
-         geoFile = "d:/Data/micropart/E0019B_mit_Radien.stl";
-         //geoFile = "/home/koskuche/data/micropart/DK19_7_02_Martin.stl";
-
-         numOfThreads = 1;
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      UbLog::reportingLevel() = logINFO;
-      //UbLog::reportingLevel() = logDEBUG1;
-
-      int nodePerBlockX1 =16; //Anzahl an Knoten pro Block
-      int nodePerBlockX2 =16;//(int)16;
-      int nodePerBlockX3 =16;//8; //(int)16;
-
-      double bH = nodePerBlockX1;    //gewuenschte Rand- und Blockbreite
-
-
-      //Simulation Parameters
-      const int baseLevel = 0;
-      const int refineLevel = 5;
-      //length [m]
-      double lSI =217.35;// 216.75;//223.2;
-      //length [LB]
-      double lLB = 30;
-
-      double dx =10;//lSI/lLB;
-
-      double left_offset = 10700;//*0.5;
-      double right_offset  = 107000;//0.5;//2*0.5
-      double front_offset = 750;//0.15;
-      double back_offset  = 750;//0.15;
-      double top_offset = 250;//0.0;
-      double bottom_offset  =750;// 70;//0.07;
-
-      LBMReal vLB =0.00016103/5.0*sqrt(2.0);//0.00016103;
-      LBMReal Re;
-      LBMReal rhoLB = 0.0;
-      LBMReal nueLB = 0.0000249;//(vLB*lLB)/Re;
-      Re = (vLB*(500/dx))/nueLB;
-      double dp_Ph=200.0*100000;//
-      //double dp_lb=dp_Ph*0.001*(nueLB)*(nueLB);//nue_ph=10e-6 and dx is in micrometer
-      LBMReal nue_Ph = 1e-6;//
-      double dt=/*(nue_Ph/nueLB)*/(nueLB/nue_Ph)*(dx*1e-6)*(dx*1e-6);//dt=nu_lb/nu_ph*dx*dx;//nue_ph=10e-6;dx is in micrometer;
-      double dp_lb=dp_Ph/1000*(dt*dt)/((dx*1e-6)*(dx*1e-6));//dp_lb=dp_ph/rho_ph*dt*dt/dx/dx
-      // LBMReal nueLB = 0.000016103;
-      // LBMReal Re=15000;
-      // LBMReal rhoLB = 0.0;
-      // LBMReal vLB =nueLB*Re/(500.0/dx);
-      // // Re = (vLB*(0.303/dx))/nueLB;
-      // //Re = (vLB*lLB)/nueLB;
-
-      // LBMReal rhoWord = 1e-15;//kg/micrometre^3;//1000.0;
-      // LBMReal nueRE = 1e6;//micromter^2/s;//0.000001;
-      // LBMReal  vWorld=300*1e6;//micrometer/s;//nueRE*Re/ (lSI*4.0/9.0);
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-      //conv->init(lSI*1e-6,30000,rhoWord,vWorld,lLB,1.0/*rhoLB*/,vLB); 
-
-      //////////////////////////////////////////////////////////////////////////
-      GbObject3DPtr refineCube1(new  GbCuboid3D(-500.0+5.0/*-354.0*/,-957.0/*-280.0*/,-684.0/* -72.0*/, 4100/*370.0*/,957.0/*354.0*/,70.0));//-530.0,-280.0, -72.0, 530.0,354.0,70.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube1.get(), pathname+"/geo/refineCube1", WbWriterVtkXmlASCII::getInstance());
-
-      GbObject3DPtr refineCube2(new  GbCuboid3D(-280.0,-957.0/*-120.0*/,-684.0/*-684.0*//* -72.0*/, 500,957.0/*120.0*/,70.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube2.get(), pathname+"/geo/refineCube2", WbWriterVtkXmlASCII::getInstance());
-
-      GbObject3DPtr refineCube3(new  GbCuboid3D(-350.0,-957.0/*-120.0*/,-684.0/*-684.0*//* -72.0*/, 1700,957.0/*120.0*/,70.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube3.get(), pathname+"/geo/refineCube3", WbWriterVtkXmlASCII::getInstance());
-
-      GbObject3DPtr refineCube4(new  GbCuboid3D(-230.0,-150.0/*-120.0*/,-684.0, 225,150,957.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube4.get(), pathname+"/geo/refineCube4", WbWriterVtkXmlASCII::getInstance());
-
-      GbObject3DPtr refineCube5up(new  GbCuboid3D(-147.0,-50,-5.0, 0.0,50.0,957.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube5up.get(), pathname+"/geo/refineCube5up", WbWriterVtkXmlASCII::getInstance());
-
-      GbObject3DPtr refineCube5down(new  GbCuboid3D(-147.0,-50,-46.0, 0,50,-957.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube5down.get(), pathname+"/geo/refineCube5down", WbWriterVtkXmlASCII::getInstance());
-
-      GbObject3DPtr refineCubeInlet(new  GbCuboid3D(-10600.0,-600.0, -600.0/*-72.0*/, -8000,600.0,60.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCubeInlet.get(), pathname+"/geo/refineCubeInlet", WbWriterVtkXmlASCII::getInstance());
-
-      GbObject3DPtr refineCubeOutlet(new  GbCuboid3D(8000,-600.0, -600.0/*-72.0*/,10550.0 ,600.0,60.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCubeOutlet.get(), pathname+"/geo/refineCubeOutlet", WbWriterVtkXmlASCII::getInstance());
-      //////////////////////////////////////////////////////////////////////////
-      D3Q27TriFaceMeshInteractorPtr geoInt;
-      /////////////////
-      //Grid3DPtr grid(new Grid3D());
-      Grid3DPtr grid(new Grid3D(comm));
-
-      UbSchedulerPtr rSch(new UbScheduler());
-      rSch->addSchedule(50000, 50000, 1000000000);
-      RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY));
-
-      std::string opt;
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if/*(cstr== NULL)*/(cstr!= NULL)
-      {
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-         grid = rp->restart(UbSystem::stringTo<int>(opt));
-         rp->reconnect(grid);
-
-         // SetForcingBlockVisitor forcingVisitor(0.0, 0.0, 0.0);
-         // grid->accept(forcingVisitor);
-
-         //D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         if(myid==0) UBLOG(logINFO,"Restart finish: " << opt);
-
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"L = " <<lLB );
-            UBLOG(logINFO,"v = " <<vLB );
-            UBLOG(logINFO,"rho = " <<rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-            UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,"Re = " << Re );
-            UBLOG(logINFO,"dt = " << dt );
-            UBLOG(logINFO,"dp_lb = " << dp_lb );
-            UBLOG(logINFO,"refineLevel = " << refineLevel );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-
-         ////////////////////////////////////////////////////////////////////////
-         //Grid
-         //////////////////////////////////////////////////////////////////////////
-         grid->setDeltaX(dx);
-         grid->setBlockNX(nodePerBlockX1, nodePerBlockX2, nodePerBlockX3);
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Geometrie
-         ////////////////////////////////////////////////////////////////////////////
-         GbTriFaceMesh3DPtr geo (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(geoFile,"geo"));
-
-         if(myid == 0) GbSystem3D::writeGeoObject(geo.get(), pathname+"/geo/geo", WbWriterVtkXmlASCII::getInstance());
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Randgeometrien erstellen
-         ////////////////////////////////////////////////////////////////////////////
-         double shiftForMG=grid->getDeltaX(refineLevel)*nodePerBlockX1 / 3.0*2.0;
-         GbCuboid3DPtr plate1  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -1.515e-1, -6.831e-2, 7.5, 1.515e-1, 0.0 ));
-
-         GbCuboid3DPtr plate2  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, -16.51e-1, -16.831e-2, 1.5e-1, -1.6e-2, 1.0 ));
-         GbCuboid3DPtr plate3  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, 1.6e-2, -16.831e-2, 1.5e-1, 16.515e-1, 1.0 ));
-
-         // GbCuboid3DPtr plate1_1  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, -1.0e-1, 7.5, 2.515e-1, -6.831e-2 ));
-         // GbCuboid3DPtr plate1_2  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, -0.0000001, 7.5, 2.515e-1, 1.0e-1 ));
-         // GbCuboid3DPtr plate1_3  = GbCuboid3DPtr( new GbCuboid3D( -7.5, 1.515e-1, -6.831e-2, 7.5, 2.515e-1, 0.0  ));
-         // GbCuboid3DPtr plate1_4  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, 0.0, 7.5, -1.515e-1, -1.0e-1 ));
-
-         // GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -8.0, -1.0, -1.0, -7.5, 1.0, 1.0 ));
-         // GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( 7.5, -1.0, -1.0, 8.0, 1.0, 1.0 ));
-
-         // GbCuboid3DPtr plate2  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, -16.51e-1, -16.831e-2, 1.5e-1, -1.6e-2, 1.0 ));
-         // GbCuboid3DPtr plate3  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, 1.6e-2, -16.831e-2, 1.5e-1, 16.515e-1, 1.0 ));
-
-         // GbCuboid3DPtr plate1_1  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, back_offset, -bottom_offset-bH*dx, right_offset+bH*dx, back_offset+bH*dx, top_offset+bH*dx ));
-         // GbCuboid3DPtr plate1_2  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, -front_offset-bH*dx, -bottom_offset-bH*dx, right_offset+bH*dx, -front_offset, top_offset+bH*dx ));
-         // GbCuboid3DPtr plate1_3  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, -front_offset-bH*dx, top_offset, right_offset+bH*dx, back_offset+bH*dx, top_offset+bH*dx+2.0*dx ));
-         // GbCuboid3DPtr plate1_4  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, -front_offset-bH*dx, -bottom_offset-bH*dx, right_offset+bH*dx, back_offset+bH*dx, -bottom_offset ));
-
-         //GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-5*bH*dx, -front_offset-5*bH*dx, -bottom_offset-5*bH*dx, -left_offset, back_offset+5*bH*dx, top_offset+5*bH*dx ));
-         //GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( right_offset, -front_offset-5*bH*dx, -bottom_offset-5*bH*dx, right_offset+5.0*bH*dx, back_offset+5*bH*dx, top_offset+5*bH*dx ));
-
-         //GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -11000.0,-600.0, -600.0, -9000.0, 600.0, -500 ));
-         //GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( 9000,-600.0, -600.0, 11000.0, 600.0, -500));
-
-         GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -11000.0,-600.0, -600.0, -9000.0, 600.0, -480 ));
-         GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( 9000,-600.0, -600.0, 11000.0, 600.0, -480));
-         GbObject3DPtr gridCube(new GbCuboid3D(-1.05e4, -500-140.0, -480.0-25.54, 1.05e4, 500.0, 0.0));
-
-
-
-         //GbObject3DPtr gridCube(new GbCuboid3D(-10700.0/*inflow->getX1Maximum()-4.0*dx/*.5*shiftForMG*/,-550.0/*-270*/ , -550.0/*-70*/,
-         //                                             10700.0/*outflow->getX1Minimum()+4.0*dx/*.5*shiftForMG*/, 
-         //                                             550.0/*270*/, 
-         //                                             23.0/*10.0*/));
-
-
-
-         //GbObject3DPtr gridCube(new GbCuboid3D(-1.05e4, -500.0, -500.0-0.54, 1.05e4, 500.0, 0.0-0.54));
-         //GbObject3DPtr gridCube(new GbCuboid3D(-1.05e4, -500.0, -500.0, 1.05e4, 500.0, 0.0));
-
-         //double difX1 = geo->getX1Centroid() - gridCube->getX1Centroid();
-         //double difX2 = geo->getX2Centroid() - gridCube->getX2Centroid();
-         //double difX3 = geo->getX3Centroid() - gridCube->getX3Centroid();
-
-         ////GbObject3DPtr gridCubeCor(new GbCuboid3D(-1.05e4+difX1, -500.0+difX2, -500.0-0.54, 1.05e4+difX1, 500.0+difX2, 0.0-0.54));
-         //GbObject3DPtr gridCubeCor(new GbCuboid3D(-1.05e4+difX1, -500.0+difX2, -500.0+difX3, 1.05e4+difX1, 500.0+difX2, 0.0+difX3));
-
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-
-         if(myid == 0)
-         {
-            GbSystem3D::writeGeoObject(gridCube.get(),pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(gridCube.get(),pathname+"/geo/gridCubeCor", WbWriterVtkXmlASCII::getInstance());
-            //GbSystem3D::writeGeoObject(plate2.get(),pathname+"/geo/plate2", WbWriterVtkXmlASCII::getInstance());
-            //GbSystem3D::writeGeoObject(plate3.get(),pathname+"/geo/plate3", WbWriterVtkXmlASCII::getInstance());
-
-            // GbSystem3D::writeGeoObject(plate1_1.get(),pathname+"/geo/plate1_1", WbWriterVtkXmlASCII::getInstance());
-            // GbSystem3D::writeGeoObject(plate1_2.get(),pathname+"/geo/plate1_2", WbWriterVtkXmlASCII::getInstance());
-            // GbSystem3D::writeGeoObject(plate1_3.get(),pathname+"/geo/plate1_3", WbWriterVtkXmlASCII::getInstance());
-            // GbSystem3D::writeGeoObject(plate1_4.get(),pathname+"/geo/plate1_4", WbWriterVtkXmlASCII::getInstance());
-
-            GbSystem3D::writeGeoObject(inflow.get(),pathname+"/geo/inflow", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(outflow.get(),pathname+"/geo/outflow", WbWriterVtkXmlASCII::getInstance());
-         }
-
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");   
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(refineCube1, 1);
-            refineHelper.addGbObject(refineCube3, 2);
-            refineHelper.addGbObject(refineCube2, 3);
-            refineHelper.addGbObject(refineCube4, 4);
-
-            refineHelper.addGbObject(refineCube5up, 5);
-            refineHelper.addGbObject(refineCube5down, 5);
-
-            refineHelper.addGbObject(refineCubeInlet, 1);
-            refineHelper.addGbObject(refineCubeOutlet, 1);
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");   
-
-
-            // RefineCrossAndInsideGbObjectBlockVisitor refVisitor1(refineCube1, refineLevel-4);
-            // grid->accept(refVisitor1);
-
-            // RefineCrossAndInsideGbObjectBlockVisitor refVisitor3(refineCube3, refineLevel-3);
-            // grid->accept(refVisitor3);
-
-            // RefineCrossAndInsideGbObjectBlockVisitor refVisitor2(refineCube2, refineLevel-2);
-            // grid->accept(refVisitor2);
-
-            // RefineCrossAndInsideGbObjectBlockVisitor refVisitor4(refineCube4, refineLevel-1);
-            // grid->accept(refVisitor4);
-
-            // RatioBlockVisitor ratioVisitor(refineLevel);
-            // grid->accept(ratioVisitor);
-
-            // RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-            // grid->accept(ratioSmoothVisitor);
-
-            // OverlapBlockVisitor overlapVisitor(refineLevel);
-            // grid->accept(overlapVisitor);
-
-            // std::vector<int> dirs;
-            // D3Q27System::getLBMDirections(dirs);
-            // SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-            // grid->accept(interDirsVisitor);
-            // if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         //////////////////////////////////////////////////////////////////////////
-         //INTERAKTOREN SETZEN (=Randbedingungen)
-         //////////////////////////////////////////////////////////////////////////
-         //oben/unten = Haftrand
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         geoInt = D3Q27TriFaceMeshInteractorPtr( new D3Q27TriFaceMeshInteractor(geo, grid, D3Q27BoundaryConditionAdapterPtr(new D3Q27NoSlipBCAdapter(bbOption)),Interactor3D::INVERSESOLID, Interactor3D::SIMPLE));
-         geoInt->setUseHalfSpaceCheck(true);
-         geoInt->setRegardPointInObjectTest(true);
-         if(myid == 0) UBLOG(logINFO,"stl - end"); 
-         //D3Q27InteractorPtr plate1Int(new D3Q27Interactor(plate1, grid, bcObst,Interactor3D::INVERSESOLID));
-         // D3Q27InteractorPtr plate2Int(new D3Q27Interactor(plate2, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate3Int(new D3Q27Interactor(plate3, grid, bcObst,Interactor3D::SOLID));
-
-         // D3Q27InteractorPtr plate1_1Int(new D3Q27Interactor(plate1_1, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate1_2Int(new D3Q27Interactor(plate1_2, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate1_3Int(new D3Q27Interactor(plate1_3, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate1_4Int(new D3Q27Interactor(plate1_4, grid, bcObst,Interactor3D::SOLID));
-
-         //links: geschwindigkeits-einfluss
-         //Velocity-BC
-         //////////////////////////////////////////////////////////////////////////
-         mu::Parser fct;
-         fct.DefineConst("vx1"  , vLB*9.0/4.0 );
-         //fct = MathUtil::getDuctParaboloidX(0, 250*2.0, -51.08/2, 51.08, vLB*9.0/4.0);
-         fct.SetExpr("vx1");
-         //////////////////////////////////////////////////////////////////////////
-
-         //////////////////////////////////////////////////////////////////////////
-         // D3Q27BoundaryConditionAdapterPtr velBCAdapter = D3Q27BoundaryConditionAdapterPtr(new D3Q27VelocityBCAdapter (false, false ,true ,fct, 0, D3Q27BCFunction::INFCONST));
-         // velBCAdapter->setSecondaryBcOption(2);
-         // D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(inflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         D3Q27BoundaryConditionAdapterPtr denBCAdapterInlet(new D3Q27DensityBCAdapter(3.0*(dp_lb-rhoLB)));
-         denBCAdapterInlet->setSecondaryBcOption(1);
-         D3Q27InteractorPtr inflowInt = D3Q27InteractorPtr( new D3Q27Interactor(inflow, grid, denBCAdapterInlet,Interactor3D::SOLID));
-
-         //rechts: druckrand
-         //Density-BC
-         //fuer Kompressibles Modell  rho = 1.0
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         denBCAdapter->setSecondaryBcOption(1);
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(outflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-         grid->accept( metisVisitor );
-         SolidBlocksHelper sd(grid, comm);
-         sd.addInteractor(geoInt);
-         sd.addInteractor(inflowInt);
-         sd.addInteractor(outflowInt);
-         // sd.addInteractor(plate1_1Int);
-         // sd.addInteractor(plate1_2Int);
-         // sd.addInteractor(plate1_3Int);
-         // sd.addInteractor(plate1_4Int);
-         // sd.addInteractor(plate2Int);
-         // sd.addInteractor(plate3Int);
-         if(myid == 0) UBLOG(logINFO,"line"<<__LINE__); 
-         sd.deleteSolidBlocks();  
-
-         if(myid == 0) UBLOG(logINFO,"line"<<__LINE__); 
-         grid->accept( metisVisitor );
-         sd.setTransBlocks();		 
-         if(myid == 0) UBLOG(logINFO,"line"<<__LINE__); 
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod_temp = nob * (nodePerBlockX1+gl) * (nodePerBlockX2+gl) * (nodePerBlockX3+gl);
-         unsigned long nod = nob * (nodePerBlockX1) * (nodePerBlockX2) * (nodePerBlockX3);
-         double needMemAll  = double(nod_temp*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }  
-
-         LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(nodePerBlockX1, nodePerBlockX2, nodePerBlockX3,LBMKernelETD3Q27CCLB::MAGIC));
-
-
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         if(myid == 0) UBLOG(logINFO,"intractor - start"); 
-         //inflow
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         grid->addAndInitInteractor(outflowInt);
-         //canal
-         grid->addAndInitInteractor(geoInt);
-         // grid->addAndInitInteractor(plate1_1Int);
-         // grid->addAndInitInteractor(plate1_2Int);
-         // grid->addAndInitInteractor(plate1_3Int);
-         // grid->addAndInitInteractor(plate1_4Int);
-         // grid->addAndInitInteractor(plate2Int);
-         // grid->addAndInitInteractor(plate3Int);
-
-
-         if(myid == 0) UBLOG(logINFO,"intractor - end");
-         //////////////////////////////////////////////////////////////////////////
-         //connectoren setzen:
-
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         //////////////////////////////////////////////////////////////////////////	 
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //////////////////////////////////////////////////////////////////////////     
-         //Stroemungsfeld initialisieren
-         //////////////////////////////////////////////////////////////////////////
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(nueLB, rhoLB); //1.0
-         initVisitor.setVx1(0); 
-         grid->accept(initVisitor);
-
-         // if(myid == 0)
-         // {
-         // //Abstände "q" als Linien rausschreiben
-         // std::vector< UbTupleFloat3 > nodes;
-         // std::vector< UbTupleInt2 >   lines;
-         // geoInt->addQsLineSet(nodes, lines);
-         // WbWriterVtkXmlBinary::getInstance()->writeLines(pathname+"/grid/qs",nodes,lines);
-         // }
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end");
-
-         ////////////////////////
-         //Set Postprozessors
-         //////////////////////////////////////////////////////////////////////////
-         {
-            UbSchedulerPtr geoSch(new UbScheduler(1));
-            D3Q27MacroscopicQuantitiesPostprocessor ppgeo(grid,geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv,  comm, true);
-            //grid->doPostProcess(0);
-            grid->notifyObservers(0);
-         }
-
-
-      }
-
-      //////////////////////////////////////////////////////////////////////////
-      // UbSchedulerPtr visSchAv(new UbScheduler());
-      UbSchedulerPtr visSchAv(new UbScheduler(100000,350000));
-      // visSchAv->addSchedule(100,10,1000);
-      // UbSchedulerPtr resSchAv(new UbScheduler());
-      UbSchedulerPtr resSchAv(new UbScheduler(100,10000000000));
-      // resSchAv->addSchedule(20,20,1000);
-      AverageValuesPostprocessor       Avpp(grid,  pathname + "/Turbulence/stepAV", WbWriterVtkXmlBinary::getInstance(), visSchAv/*wann wird rausgeschrieben*/,resSchAv/*wann wird resettet*/,comm);
-
-      D3Q27ShearStressPostprocessor  shear(grid,  pathname + "/shear/step", WbWriterVtkXmlBinary::getInstance(), visSchAv/*wann wird rausgeschrieben*/,resSchAv/*wann wird resettet*/); 
-      // D3Q27ShearStressPostprocessor  shear(grid,  pathname + "/shear/step", WbWriterVtkXmlBinary::getInstance(), visSchAv/*wann wird rausgeschrieben*/,resSchAv/*wann wird resettet*/,comm);
-      shear.addInteractor(geoInt);
-      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-      UbSchedulerPtr nupsSch(new UbScheduler(1, 5, 10));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double outTime = 10000.0;
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid,stepSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv,  comm);
-      //////////////////////////////////////////////////////////////////////////
-      //PathLine
-      UbSchedulerPtr plSch(new UbScheduler(5000, 5000));
-      const int numberofparticle=20;
-
-      std::vector<UbTupleDouble3 > potisions;
-      double randomx[numberofparticle];
-      double randomy[numberofparticle];
-      double randomz[numberofparticle];
-      double lowestx,highestx,lowesty,highesty,lowestz,highestz;
-      if(myid==0)
-      {
-         for(int i = 0; i < numberofparticle; i++)
-         {
-            double random; 
-            lowestx =-10300.0;  lowesty =-230;          lowestz =-250;
-            highestx=-9792.0;  highesty=-330;          highestz=-250; 
-
-            double rangex=(highestx-lowestx),rangey=(highesty-lowesty),rangez=(highestz-lowestz);	
-            randomx[i] = lowestx+(rangex*rand()/(RAND_MAX + 1.0));
-            randomy[i] = lowesty+(rangey*rand()/(RAND_MAX + 1.0));
-            randomz[i] = lowestz+(rangez*rand()/(RAND_MAX + 1.0));
-            //val<1>(potisions[i])= 0.506983973456;
-            //val<2>(potisions[i]) = lowesty+(rangey*rand()/(RAND_MAX + 1.0));
-            //val<3>(potisions[i]) = lowestz+(rangez*rand()/(RAND_MAX + 1.0));
-         }
-         for (int i=0;i<comm->getNumberOfProcesses();i++)
-         {
-            if (i!=0)
-            {
-               MPI_Send(randomx,numberofparticle, MPI_DOUBLE_PRECISION,i,i,MPI_COMM_WORLD);
-               MPI_Send(randomy,numberofparticle, MPI_DOUBLE_PRECISION,i,i,MPI_COMM_WORLD);
-               MPI_Send(randomz,numberofparticle, MPI_DOUBLE_PRECISION,i,i,MPI_COMM_WORLD);
-            }
-         }
-      }
-      if (myid!=0)
-      {
-         MPI_Status status; 
-         MPI_Recv(randomx,numberofparticle, MPI_DOUBLE_PRECISION,0,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
-         MPI_Recv(randomy,numberofparticle, MPI_DOUBLE_PRECISION,0,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
-         MPI_Recv(randomz,numberofparticle, MPI_DOUBLE_PRECISION,0,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
-      }
-      for(int i = 0; i < numberofparticle; i++)
-      {	
-         potisions.push_back( makeUbTuple(randomx[i],randomy[i],randomz[i]) );
-         //val<1>(potisions[i])= 0.506983973456;
-         //val<2>(potisions[i]) = randomy[i];
-         //val<3>(potisions[i]) = randomz[i];
-      }
-      //  UBLOG(logINFO,"Rank="<<myid<<" positions  = " <<val<1>(potisions)<< " "<<val<2>(potisions)<<" "<< val<3>(potisions));
-      // D3Q27InterpolationProcessorPtr iProcessor2;
-      // D3Q27PathLinePostprocessorMcpart pathLine(grid, pathname + "/pathLine/pathLine", WbWriterVtkXmlASCII::getInstance(), conv, plSch, comm,potisions, nueLB, iProcessor);
-      //////////////////////////////////////////////////////////////////////////
-      //Simulation
-      //////////////////////////////////////////////////////////////////////////
-      return;
-
-      double endTime = 1000000000.0;
-      UbSchedulerPtr visSch(stepSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
diff --git a/apps/cpu/micropart/miro.txt b/apps/cpu/micropart/miro.txt
deleted file mode 100644
index 7ed704098a74d3ea0db5fea3a9cf21810bcbeb8e..0000000000000000000000000000000000000000
--- a/apps/cpu/micropart/miro.txt
+++ /dev/null
@@ -1,585 +0,0 @@
-#include <iostream>
-#include <string>
-#include <map>
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include "numerics/geometry3d/GbSphere3D.h"
-#include "BlocksPostprocessor.h"
-#include "Grid3D.h"
-#include "Patch3D.h"
-#include "Patch3DSystem.h"
-#include "Block3D.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "LBMKernelETD3Q27BGK.h"
-#include "CalculationManager.h" 
-#include "D3Q27SetConnectorsBlockVisitor.h" 
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27VelocityBCAdapter.h"
-#include "D3Q27DensityBCAdapter.h"
-#include "SimulationParameters.h"
-#include "Communicator.h"
-#include "MPICommunicator.h"
-#include "SimpleGeometricPartitioner.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "D3Q27ETBCProcessor.h"
-#include "D3Q27TriFaceMeshInteractor.h"
-#include "ConfigFileReader.h"
-#include "StringUtil.hpp"
-#include "D3Q27PressureDifferencePostprocessor.h"
-#include "D3Q27IntegrateValuesHelper.h"
-#include "LBMUnitConverter.h"
-#include "NUPSCounterPostprocessor.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "GenBlocksGridVisitor.h"
-#include "D3Q27PathLinePostprocessorMcpart.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-   //
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "numerics/geometry3d/creator/GbTriFaceMesh3DCreator.h"
-#include "numerics/geometry3d/GbTriFaceMesh3D.h"
-#include "D3Q27System.h"
-#include <basics/transmitter/TbTransmitterMpiPool.h>
-#include "MathUtil.hpp"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "SolidBlocksHelper.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "RestartPostprocessor.h"
-#include "D3Q27IncompressibleOffsetInterpolationProcessor.h"
-#include "LBMKernelETD3Q27CCLB.h"
-#include "AverageValuesPostprocessor.h"
-#include <vfluids.h>
-using namespace std;
-
-void micropartTestQs2(const char *cstr)
-{
-   try
-   {
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-      int numprocs = comm->getNumberOfProcesses();
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      double availMem = 0;
-      string geoFile;
-      int numOfThreads = 1;
-
-      if(machine == "EHSAN1491") 
-      {
-         pathname = "/work/ehsan/micropart";
-         availMem = 3.0e9;
-		  int numOfThreads = 1;
-         //geoFile = "c:/Data/micropart/DK19_7_02_Martin.stl";
-         //geoFile = "c:/Data/micropart/ktoolcav.stl";
-         //geoFile = "c:/Data/micropart/boxN.stl";
-        geoFile = "C:/Users/ehsan/Desktop/meshparticles/E0019B_mit_Radien.stl";
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/ehsan/micropart";
-         availMem = 12.0e9;
-		  geoFile = "/work/ehsan/data/E0019B_mit_Radien.stl";
-         //geoFile = "/home/koskuche/data/micropart/DK19_7_02_Martin.stl";
-
-         numOfThreads = 1;
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      UbLog::reportingLevel() = logINFO;
-      //UbLog::reportingLevel() = logDEBUG1;
-
-      int nodePerBlockX1 =16; //Anzahl an Knoten pro Block
-      int nodePerBlockX2 =16;//(int)16;
-      int nodePerBlockX3 =8;//8; //(int)16;
-
-      double bH = nodePerBlockX1;    //gewuenschte Rand- und Blockbreite
-
-      //Simulation Parameters
-      const int baseLevel = 0;
-      const int refineLevel =4;
-      //length [m]
-      double lSI = 219;//223.2;
-      //length [LB]
-      double lLB = 30;
-
-      double dx =lSI/lLB;
-
-      double left_offset = 10700;//*0.5;
-      double right_offset  = 107000;//0.5;//2*0.5
-      double front_offset = 750;//0.15;
-      double back_offset  = 750;//0.15;
-      double top_offset = 250;//0.0;
-      double bottom_offset  =750;// 70;//0.07;
-	  
-	   LBMReal vLB =0.00016103/5.0*sqrt(2.0);//0.00016103;
-       LBMReal Re;
-       LBMReal rhoLB = 0.0;
-       LBMReal nueLB = 0.0000249;//(vLB*lLB)/Re;
-       Re = (vLB*(500/dx))/nueLB;
-       double dp_Ph=200.0*100000;//
-	   double dp_lb=dp_Ph*0.001*(nueLB*dx)*(nueLB*dx);//nue_ph=10e-6 and dx is in micrometer
-      // LBMReal nueLB = 0.000016103;
-      // LBMReal Re=15000;
-      // LBMReal rhoLB = 0.0;
-      // LBMReal vLB =nueLB*Re/(500.0/dx);
-     // // Re = (vLB*(0.303/dx))/nueLB;
-	   // //Re = (vLB*lLB)/nueLB;
-	  
-      // LBMReal rhoWord = 1e-15;//kg/micrometre^3;//1000.0;
-	  // LBMReal nueRE = 1e6;//micromter^2/s;//0.000001;
-	  // LBMReal  vWorld=300*1e6;//micrometer/s;//nueRE*Re/ (lSI*4.0/9.0);
-	  LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-      //conv->init(lSI*1e-6,30000,rhoWord,vWorld,lLB,1.0/*rhoLB*/,vLB);
-      
-	 
- //////////////////////////////////////////////////////////////////////////
-      GbObject3DPtr refineCube1(new  GbCuboid3D(-500.0+5.0/*-354.0*/,-957.0/*-280.0*/,-684.0/* -72.0*/, 4100/*370.0*/,957.0/*354.0*/,70.0));//-530.0,-280.0, -72.0, 530.0,354.0,70.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube1.get(), pathname+"/geo/refineCube1", WbWriterVtkXmlASCII::getInstance());
-
-      GbObject3DPtr refineCube2(new  GbCuboid3D(-230.0,-90.0, -684.0/*-72.0*/, 600,100.0,70.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube2.get(), pathname+"/geo/refineCube2", WbWriterVtkXmlASCII::getInstance());
-	  
-	   GbObject3DPtr refineCube3(new  GbCuboid3D(-350.0,-957.0/*-120.0*/,-684.0/*-684.0*//* -72.0*/, 1700,957.0/*120.0*/,70.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube3.get(), pathname+"/geo/refineCube3", WbWriterVtkXmlASCII::getInstance());
-	  
-	   GbObject3DPtr refineCube4(new  GbCuboid3D(-170.0,-60.0, -684.0/*-72.0*/, 200,60.0,70.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube4.get(), pathname+"/geo/refineCube4", WbWriterVtkXmlASCII::getInstance());
-	  
-	   GbObject3DPtr refineCubeInlet(new  GbCuboid3D(-10600.0,-600.0, -600.0/*-72.0*/, -9000,600.0,60.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCubeInlet.get(), pathname+"/geo/refineCubeInlet", WbWriterVtkXmlASCII::getInstance());
-	  
-	  GbObject3DPtr refineCubeOutlet(new  GbCuboid3D(9000,-600.0, -600.0/*-72.0*/,10550.0 ,600.0,60.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCubeOutlet.get(), pathname+"/geo/refineCubeOutlet", WbWriterVtkXmlASCII::getInstance());
-      //////////////////////////////////////////////////////////////////////////
-      D3Q27TriFaceMeshInteractorPtr geoInt;
-	  /////////////////
-      //Grid3DPtr grid(new Grid3D());
-        Grid3DPtr grid(new Grid3D(comm));
-
-      UbSchedulerPtr rSch(new UbScheduler());
-      rSch->addSchedule(100, 200, 20000);
-      RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY));
-
-      std::string opt;
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if/*(cstr== NULL)*/(cstr!= NULL)
-      {
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-         grid = rp->restart(UbSystem::stringTo<int>(opt));
-         rp->reconnect(grid);
-
-         // SetForcingBlockVisitor forcingVisitor(0.0, 0.0, 0.0);
-         // grid->accept(forcingVisitor);
-
-         //D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-		  if(myid==0) UBLOG(logINFO,"Restart finish: " << opt);
-	 
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"L = " <<lLB );
-            UBLOG(logINFO,"v = " <<vLB );
-            UBLOG(logINFO,"rho = " <<rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-			UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,"Re = " << Re );
-			 UBLOG(logINFO,"dp_lb = " << dp_lb );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-
-         ////////////////////////////////////////////////////////////////////////
-         //Grid
-         //////////////////////////////////////////////////////////////////////////
-         grid->setDeltaX(dx);
-         grid->setBlockNX(nodePerBlockX1, nodePerBlockX2, nodePerBlockX3);
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Geometrie
-         ////////////////////////////////////////////////////////////////////////////
-         GbTriFaceMesh3DPtr geo (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(geoFile,"geo"));
-
-         if(myid == 0) GbSystem3D::writeGeoObject(geo.get(), pathname+"/geo/geo", WbWriterVtkXmlASCII::getInstance());
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Randgeometrien erstellen
-         ////////////////////////////////////////////////////////////////////////////
-         double shiftForMG=grid->getDeltaX(refineLevel)*nodePerBlockX1 / 3.0*2.0;
-          GbCuboid3DPtr plate1  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -1.515e-1, -6.831e-2, 7.5, 1.515e-1, 0.0 ));
-
-           GbCuboid3DPtr plate2  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, -16.51e-1, -16.831e-2, 1.5e-1, -1.6e-2, 1.0 ));
-           GbCuboid3DPtr plate3  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, 1.6e-2, -16.831e-2, 1.5e-1, 16.515e-1, 1.0 ));
-
-          // GbCuboid3DPtr plate1_1  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, -1.0e-1, 7.5, 2.515e-1, -6.831e-2 ));
-          // GbCuboid3DPtr plate1_2  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, -0.0000001, 7.5, 2.515e-1, 1.0e-1 ));
-          // GbCuboid3DPtr plate1_3  = GbCuboid3DPtr( new GbCuboid3D( -7.5, 1.515e-1, -6.831e-2, 7.5, 2.515e-1, 0.0  ));
-          // GbCuboid3DPtr plate1_4  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, 0.0, 7.5, -1.515e-1, -1.0e-1 ));
-
-          // GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -8.0, -1.0, -1.0, -7.5, 1.0, 1.0 ));
-          // GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( 7.5, -1.0, -1.0, 8.0, 1.0, 1.0 ));
-		  
-		   // GbCuboid3DPtr plate2  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, -16.51e-1, -16.831e-2, 1.5e-1, -1.6e-2, 1.0 ));
-          // GbCuboid3DPtr plate3  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, 1.6e-2, -16.831e-2, 1.5e-1, 16.515e-1, 1.0 ));
-
-          // GbCuboid3DPtr plate1_1  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, back_offset, -bottom_offset-bH*dx, right_offset+bH*dx, back_offset+bH*dx, top_offset+bH*dx ));
-          // GbCuboid3DPtr plate1_2  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, -front_offset-bH*dx, -bottom_offset-bH*dx, right_offset+bH*dx, -front_offset, top_offset+bH*dx ));
-          // GbCuboid3DPtr plate1_3  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, -front_offset-bH*dx, top_offset, right_offset+bH*dx, back_offset+bH*dx, top_offset+bH*dx+2.0*dx ));
-          // GbCuboid3DPtr plate1_4  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, -front_offset-bH*dx, -bottom_offset-bH*dx, right_offset+bH*dx, back_offset+bH*dx, -bottom_offset ));
-
-          //GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-5*bH*dx, -front_offset-5*bH*dx, -bottom_offset-5*bH*dx, -left_offset, back_offset+5*bH*dx, top_offset+5*bH*dx ));
-          //GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( right_offset, -front_offset-5*bH*dx, -bottom_offset-5*bH*dx, right_offset+5.0*bH*dx, back_offset+5*bH*dx, top_offset+5*bH*dx ));
-		  GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -11000.0,-600.0, -600.0, -9000.0, 600.0, -500 ));
-		  GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( 9000,-600.0, -600.0, 11000.0, 600.0, -500));
-
-
-		   GbObject3DPtr gridCube(new GbCuboid3D(-10700.0/*inflow->getX1Maximum()-4.0*dx/*.5*shiftForMG*/,-550.0/*-270*/ , -550.0/*-70*/,
-                                                10700.0/*outflow->getX1Minimum()+4.0*dx/*.5*shiftForMG*/, 
-                                                550.0/*270*/, 
-                                                23.0/*10.0*/));
-
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-		  
-         if(myid == 0)
-         {
-            GbSystem3D::writeGeoObject(gridCube.get(),pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-            //GbSystem3D::writeGeoObject(plate2.get(),pathname+"/geo/plate2", WbWriterVtkXmlASCII::getInstance());
-            //GbSystem3D::writeGeoObject(plate3.get(),pathname+"/geo/plate3", WbWriterVtkXmlASCII::getInstance());
-
-            // GbSystem3D::writeGeoObject(plate1_1.get(),pathname+"/geo/plate1_1", WbWriterVtkXmlASCII::getInstance());
-            // GbSystem3D::writeGeoObject(plate1_2.get(),pathname+"/geo/plate1_2", WbWriterVtkXmlASCII::getInstance());
-            // GbSystem3D::writeGeoObject(plate1_3.get(),pathname+"/geo/plate1_3", WbWriterVtkXmlASCII::getInstance());
-            // GbSystem3D::writeGeoObject(plate1_4.get(),pathname+"/geo/plate1_4", WbWriterVtkXmlASCII::getInstance());
-
-            GbSystem3D::writeGeoObject(inflow.get(),pathname+"/geo/inflow", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(outflow.get(),pathname+"/geo/outflow", WbWriterVtkXmlASCII::getInstance());
-         }
-   
-
-         if (refineLevel > 0)
-         {
-		  if(myid == 0) UBLOG(logINFO,"Refinement - start");   
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(refineCube1, 1);
-            refineHelper.addGbObject(refineCube3, 2);
-			 refineHelper.addGbObject(refineCube2, 3);
-			 refineHelper.addGbObject(refineCube4, 4);
-			 
-			 refineHelper.addGbObject(refineCubeInlet, 1);
-			 refineHelper.addGbObject(refineCubeOutlet, 1);
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");   
-		 
-		 
-           // RefineCrossAndInsideGbObjectBlockVisitor refVisitor1(refineCube1, refineLevel-4);
-            // grid->accept(refVisitor1);
-
-			// RefineCrossAndInsideGbObjectBlockVisitor refVisitor3(refineCube3, refineLevel-3);
-            // grid->accept(refVisitor3);
-
-            // RefineCrossAndInsideGbObjectBlockVisitor refVisitor2(refineCube2, refineLevel-2);
-            // grid->accept(refVisitor2);
-			
-			 // RefineCrossAndInsideGbObjectBlockVisitor refVisitor4(refineCube4, refineLevel-1);
-            // grid->accept(refVisitor4);
-
-            // RatioBlockVisitor ratioVisitor(refineLevel);
-            // grid->accept(ratioVisitor);
-
-            // RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-            // grid->accept(ratioSmoothVisitor);
-
-            // OverlapBlockVisitor overlapVisitor(refineLevel);
-            // grid->accept(overlapVisitor);
-
-            // std::vector<int> dirs;
-            // D3Q27System::getLBMDirections(dirs);
-            // SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-            // grid->accept(interDirsVisitor);
-            // if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         //////////////////////////////////////////////////////////////////////////
-         //INTERAKTOREN SETZEN (=Randbedingungen)
-         //////////////////////////////////////////////////////////////////////////
-         //oben/unten = Haftrand
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         geoInt = D3Q27TriFaceMeshInteractorPtr( new D3Q27TriFaceMeshInteractor(geo, grid, D3Q27BoundaryConditionAdapterPtr(new D3Q27NoSlipBCAdapter(bbOption)),Interactor3D::INVERSESOLID, Interactor3D::SIMPLE));
-	     geoInt->setUseHalfSpaceCheck(true);
-         geoInt->setRegardPointInObjectTest(true);
-         if(myid == 0) UBLOG(logINFO,"stl - end"); 
-         //D3Q27InteractorPtr plate1Int(new D3Q27Interactor(plate1, grid, bcObst,Interactor3D::INVERSESOLID));
-         // D3Q27InteractorPtr plate2Int(new D3Q27Interactor(plate2, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate3Int(new D3Q27Interactor(plate3, grid, bcObst,Interactor3D::SOLID));
-
-         // D3Q27InteractorPtr plate1_1Int(new D3Q27Interactor(plate1_1, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate1_2Int(new D3Q27Interactor(plate1_2, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate1_3Int(new D3Q27Interactor(plate1_3, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate1_4Int(new D3Q27Interactor(plate1_4, grid, bcObst,Interactor3D::SOLID));
-
-         //links: geschwindigkeits-einfluss
-         //Velocity-BC
-         //////////////////////////////////////////////////////////////////////////
-         mu::Parser fct;
-         fct.DefineConst("vx1"  , vLB*9.0/4.0 );
-         //fct = MathUtil::getDuctParaboloidX(0, 250*2.0, -51.08/2, 51.08, vLB*9.0/4.0);
-         fct.SetExpr("vx1");
-         //////////////////////////////////////////////////////////////////////////
-
-         //////////////////////////////////////////////////////////////////////////
-            // D3Q27BoundaryConditionAdapterPtr velBCAdapter = D3Q27BoundaryConditionAdapterPtr(new D3Q27VelocityBCAdapter (false, false ,true ,fct, 0, D3Q27BCFunction::INFCONST));
-            // velBCAdapter->setSecondaryBcOption(2);
-            // D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(inflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-		 D3Q27BoundaryConditionAdapterPtr denBCAdapterInlet(new D3Q27DensityBCAdapter(3.0*(dp_lb-rhoLB)));
-        denBCAdapterInlet->setSecondaryBcOption(1);
-        D3Q27InteractorPtr inflowInt = D3Q27InteractorPtr( new D3Q27Interactor(inflow, grid, denBCAdapterInlet,Interactor3D::SOLID));
-		 
-         //rechts: druckrand
-         //Density-BC
-         //fuer Kompressibles Modell  rho = 1.0
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         denBCAdapter->setSecondaryBcOption(1);
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(outflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-         grid->accept( metisVisitor );
-         SolidBlocksHelper sd(grid, comm);
-         sd.addInteractor(geoInt);
-         sd.addInteractor(inflowInt);
-         sd.addInteractor(outflowInt);
-         // sd.addInteractor(plate1_1Int);
-         // sd.addInteractor(plate1_2Int);
-         // sd.addInteractor(plate1_3Int);
-         // sd.addInteractor(plate1_4Int);
-         // sd.addInteractor(plate2Int);
-         // sd.addInteractor(plate3Int);
-		 if(myid == 0) UBLOG(logINFO,"line"<<__LINE__); 
-         sd.deleteSolidBlocks();     
- if(myid == 0) UBLOG(logINFO,"line"<<__LINE__); 
-         grid->accept( metisVisitor );
-if(myid == 0) UBLOG(logINFO,"line"<<__LINE__); 
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod_temp = nob * (nodePerBlockX1+gl) * (nodePerBlockX2+gl) * (nodePerBlockX3+gl);
-         unsigned long nod = nob * (nodePerBlockX1) * (nodePerBlockX2) * (nodePerBlockX3);
-         double needMemAll  = double(nod_temp*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }  
-
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2));
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2));
-
-		  int option = 0;
-		 LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(nodePerBlockX1, nodePerBlockX2, nodePerBlockX3,option));
-
-		 
-		 
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-		 
-		  if(myid == 0) UBLOG(logINFO,"intractor - start"); 
-          //inflow
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         grid->addAndInitInteractor(outflowInt);
-         //canal
-         grid->addAndInitInteractor(geoInt);
-         // grid->addAndInitInteractor(plate1_1Int);
-         // grid->addAndInitInteractor(plate1_2Int);
-         // grid->addAndInitInteractor(plate1_3Int);
-         // grid->addAndInitInteractor(plate1_4Int);
-         // grid->addAndInitInteractor(plate2Int);
-         // grid->addAndInitInteractor(plate3Int);
-
-       
-
-         //////////////////////////////////////////////////////////////////////////
-         //connectoren setzen:
-
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         //////////////////////////////////////////////////////////////////////////	 
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-			 
-         //////////////////////////////////////////////////////////////////////////     
-	   //Stroemungsfeld initialisieren
-         //////////////////////////////////////////////////////////////////////////
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(rhoLB); //1.0
-         initVisitor.setVx1(0); 
-         grid->accept(initVisitor);
-
-         if(myid == 0)
-         {
-            //Abstände "q" als Linien rausschreiben
-            std::vector< UbTupleFloat3 > nodes;
-            std::vector< UbTupleInt2 >   lines;
-            geoInt->addQsLineSet(nodes, lines);
-            WbWriterVtkXmlBinary::getInstance()->writeLines(pathname+"/grid/qs",nodes,lines);
-         }
-
-          if(myid == 0) UBLOG(logINFO,"Preprozess - end");
-		 
-		 	  ////////////////////////
-           //Set Postprozessors
-           //////////////////////////////////////////////////////////////////////////
-           {
-            UbSchedulerPtr geoSch(new UbScheduler(1));
-            D3Q27MacroscopicQuantitiesPostprocessor ppgeo(grid,geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv,  comm, true);
-            grid->doPostProcess(0);
-           }
-	    
-
-      }
-
-      //////////////////////////////////////////////////////////////////////////
-	   // UbSchedulerPtr visSchAv(new UbScheduler());
-		UbSchedulerPtr visSchAv(new UbScheduler(100,100));
-      // visSchAv->addSchedule(100,10,1000);
-      // UbSchedulerPtr resSchAv(new UbScheduler());
-	   UbSchedulerPtr resSchAv(new UbScheduler(100,100));
-      // resSchAv->addSchedule(20,20,1000);
-      AverageValuesPostprocessor       Avpp(grid,  pathname + "/Turbulence/stepAV", WbWriterVtkXmlBinary::getInstance(), visSchAv/*wann wird rausgeschrieben*/,resSchAv/*wann wird resettet*/,comm);
-	  
-	 D3Q27ShearStressPostprocessor  shear(grid,  pathname + "/shear/step", WbWriterVtkXmlBinary::getInstance(), visSchAv/*wann wird rausgeschrieben*/,resSchAv/*wann wird resettet*/,comm,iProcessor); 
-	 // D3Q27ShearStressPostprocessor  shear(grid,  pathname + "/shear/step", WbWriterVtkXmlBinary::getInstance(), visSchAv/*wann wird rausgeschrieben*/,resSchAv/*wann wird resettet*/,comm);
-	  shear.addInteractor(geoInt);
-	   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  
-
-      UbSchedulerPtr nupsSch(new UbScheduler(1, 5, 10));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double outTime = 100.0;
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid,stepSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv,  comm);
-      //////////////////////////////////////////////////////////////////////////
-      //PathLine
-       UbSchedulerPtr plSch(new UbScheduler(5000, 5000));
-      const int numberofparticle=20;
-	
-	  std::vector<UbTupleDouble3 > potisions;
-	  double randomx[numberofparticle];
-	  double randomy[numberofparticle];
-	  double randomz[numberofparticle];
-	  double lowestx,highestx,lowesty,highesty,lowestz,highestz;
-	  if(myid==0)
-	  {
-		  for(int i = 0; i < numberofparticle; i++)
-		  {
-			  double random; 
-	        lowestx =-10300.0;  lowesty =-230;          lowestz =-250;
-	        highestx=-9792.0;  highesty=-330;          highestz=-250; 
-		  
-	      double rangex=(highestx-lowestx),rangey=(highesty-lowesty),rangez=(highestz-lowestz);	
-           randomx[i] = lowestx+(rangex*rand()/(RAND_MAX + 1.0));
-		   randomy[i] = lowesty+(rangey*rand()/(RAND_MAX + 1.0));
-	       randomz[i] = lowestz+(rangez*rand()/(RAND_MAX + 1.0));
-		  //val<1>(potisions[i])= 0.506983973456;
-		  //val<2>(potisions[i]) = lowesty+(rangey*rand()/(RAND_MAX + 1.0));
-		   //val<3>(potisions[i]) = lowestz+(rangez*rand()/(RAND_MAX + 1.0));
-		  }
-		  for (int i=0;i<comm->getNumberOfProcesses();i++)
-		  {
-			  if (i!=0)
-			  {
-			      MPI_Send(randomx,numberofparticle, MPI_DOUBLE_PRECISION,i,i,MPI_COMM_WORLD);
-				  MPI_Send(randomy,numberofparticle, MPI_DOUBLE_PRECISION,i,i,MPI_COMM_WORLD);
-				  MPI_Send(randomz,numberofparticle, MPI_DOUBLE_PRECISION,i,i,MPI_COMM_WORLD);
-			  }
-		  }
-	  }
-	  if (myid!=0)
-	  {
-		  MPI_Status status; 
-		  MPI_Recv(randomx,numberofparticle, MPI_DOUBLE_PRECISION,0,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
-		  MPI_Recv(randomy,numberofparticle, MPI_DOUBLE_PRECISION,0,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
-		  MPI_Recv(randomz,numberofparticle, MPI_DOUBLE_PRECISION,0,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
-	  }
-	  for(int i = 0; i < numberofparticle; i++)
-	  {	
-		  potisions.push_back( makeUbTuple(randomx[i],randomy[i],randomz[i]) );
-		  //val<1>(potisions[i])= 0.506983973456;
-		  //val<2>(potisions[i]) = randomy[i];
-		  //val<3>(potisions[i]) = randomz[i];
-	  }
-	 //  UBLOG(logINFO,"Rank="<<myid<<" positions  = " <<val<1>(potisions)<< " "<<val<2>(potisions)<<" "<< val<3>(potisions));
-	 // D3Q27InterpolationProcessorPtr iProcessor2;
-     // D3Q27PathLinePostprocessorMcpart pathLine(grid, pathname + "/pathLine/pathLine", WbWriterVtkXmlASCII::getInstance(), conv, plSch, comm,potisions, nueLB, iProcessor);
-      //////////////////////////////////////////////////////////////////////////
-      //Simulation
-      //////////////////////////////////////////////////////////////////////////
-
-	  double endTime = 1000.0;
-      UbSchedulerPtr visSch(stepSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
diff --git a/apps/cpu/micropart/orifice.hpp b/apps/cpu/micropart/orifice.hpp
deleted file mode 100644
index 2cba0511e7a7e62ca25e1315b3d0f24908a06004..0000000000000000000000000000000000000000
--- a/apps/cpu/micropart/orifice.hpp
+++ /dev/null
@@ -1,542 +0,0 @@
-#include <vfluids.h>
-using namespace std;
-
-void orifice(const char *cstr)
-{
-   try
-   {
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-      int numprocs = comm->getNumberOfProcesses();
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-      double availMem = 0;
-      string geoFile;
-      int numOfThreads = 1;
-
-      if(machine == "BOMBADIL") 
-      {
-    //     pathname = "/work/ehsan/orifice";
-		 pathname = "d:/temp/orifice";
-         availMem = 6.0e9;
-		  int numOfThreads = 1;
-         //geoFile = "c:/Data/micropart/DK19_7_02_Martin.stl";
-         //geoFile = "c:/Data/micropart/ktoolcav.stl";
-         //geoFile = "c:/Data/micropart/boxN.stl";
-        geoFile = "d:/Data/Ehsan/orifice.stl";
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-        // pathname = "/work/koskuche/scratch/mcpart/out";
-		  pathname = "/work/ehsan/orifice";
-         availMem = 12.0e9;
-		  geoFile = "/work/ehsan/data/orifice.stl";
-         //geoFile = "/home/koskuche/data/micropart/DK19_7_02_Martin.stl";
-
-         numOfThreads = 1;
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      UbLog::reportingLevel() = logINFO;
-      //UbLog::reportingLevel() = logDEBUG1;
-
-      int nodePerBlockX1 =8; //Anzahl an Knoten pro Block
-      int nodePerBlockX2 =8;//(int)16;
-      int nodePerBlockX3 =8;//8; //(int)16;
-
-      double bH = nodePerBlockX1;    //gewuenschte Rand- und Blockbreite
-
-      //Simulation Parameters
-      const int baseLevel = 0;
-      const int refineLevel =1;
-      //length [m]
-      double lSI = 1.55;//223.2;
-      //length [LB]
-      double lLB = 15;
-
-	  
-      double dx =lSI/lLB *2;
-
-      double left_offset = 0;//*0.5;
-      double right_offset  = 159;//0.5;//2*0.5
-      double front_offset = 750;//0.15;
-      double back_offset  = 750;//0.15;
-      double top_offset = 250;//0.0;
-      double bottom_offset  =750;// 70;//0.07;
-	  
-	   LBMReal vLB =0.00016103/5.0*sqrt(2.0);//0.00016103;
-       LBMReal Re;
-       LBMReal rhoLB = 0.0;
-       LBMReal nueLB = 0.0000249;//(vLB*lLB)/Re;
-       Re = (vLB*(500/dx))/nueLB;
-       double dp_Ph=200.0*100000;//
-	   double dp_lb=dp_Ph*0.001*(nueLB*dx)*(nueLB*dx);//nue_ph=10e-6 and dx is in micrometer
-      // LBMReal nueLB = 0.000016103;
-      // LBMReal Re=15000;
-      // LBMReal rhoLB = 0.0;
-      // LBMReal vLB =nueLB*Re/(500.0/dx);
-     // // Re = (vLB*(0.303/dx))/nueLB;
-	   // //Re = (vLB*lLB)/nueLB;
-	  
-      // LBMReal rhoWord = 1e-15;//kg/micrometre^3;//1000.0;
-	  // LBMReal nueRE = 1e6;//micromter^2/s;//0.000001;
-	  // LBMReal  vWorld=300*1e6;//micrometer/s;//nueRE*Re/ (lSI*4.0/9.0);
-	  LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-      //conv->init(lSI*1e-6,30000,rhoWord,vWorld,lLB,1.0/*rhoLB*/,vLB);
-      
-	 
- //////////////////////////////////////////////////////////////////////////
-      GbObject3DPtr refineCube1(new  GbCuboid3D(78.0,-1.0,-1.0, 81/*370.0*/,20.0/*354.0*/,20.0));//-530.0,-280.0, -72.0, 530.0,354.0,70.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(refineCube1.get(), pathname+"/geo/refineCube1", WbWriterVtkXmlASCII::getInstance());
-
-   //   GbObject3DPtr refineCube2(new  GbCuboid3D(-230.0,-90.0, -684.0/*-72.0*/, 600,100.0,70.0));
-   //   if(myid == 0) GbSystem3D::writeGeoObject(refineCube2.get(), pathname+"/geo/refineCube2", WbWriterVtkXmlASCII::getInstance());
-	  //
-	  // GbObject3DPtr refineCube3(new  GbCuboid3D(-350.0,-957.0/*-120.0*/,-684.0/*-684.0*//* -72.0*/, 1700,957.0/*120.0*/,70.0));
-   //   if(myid == 0) GbSystem3D::writeGeoObject(refineCube3.get(), pathname+"/geo/refineCube3", WbWriterVtkXmlASCII::getInstance());
-	  //
-	  // GbObject3DPtr refineCube4(new  GbCuboid3D(-170.0,-60.0, -684.0/*-72.0*/, 200,60.0,70.0));
-   //   if(myid == 0) GbSystem3D::writeGeoObject(refineCube4.get(), pathname+"/geo/refineCube4", WbWriterVtkXmlASCII::getInstance());
-	  //
-	  // GbObject3DPtr refineCubeInlet(new  GbCuboid3D(-10600.0,-600.0, -600.0/*-72.0*/, -9000,600.0,60.0));
-   //   if(myid == 0) GbSystem3D::writeGeoObject(refineCubeInlet.get(), pathname+"/geo/refineCubeInlet", WbWriterVtkXmlASCII::getInstance());
-	  //
-	  //GbObject3DPtr refineCubeOutlet(new  GbCuboid3D(9000,-600.0, -600.0/*-72.0*/,10550.0 ,600.0,60.0));
-   //   if(myid == 0) GbSystem3D::writeGeoObject(refineCubeOutlet.get(), pathname+"/geo/refineCubeOutlet", WbWriterVtkXmlASCII::getInstance());
-      //////////////////////////////////////////////////////////////////////////
-      D3Q27TriFaceMeshInteractorPtr geoInt;
-	  /////////////////
-      //Grid3DPtr grid(new Grid3D());
-        Grid3DPtr grid(new Grid3D(comm));
-
-      UbSchedulerPtr rSch(new UbScheduler());
-      rSch->addSchedule(100, 200, 20000);
-      RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY));
-
-      std::string opt;
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if/*(cstr== NULL)*/(cstr!= NULL)
-      {
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-         grid = rp->restart(UbSystem::stringTo<int>(opt));
-         rp->reconnect(grid);
-
-         // SetForcingBlockVisitor forcingVisitor(0.0, 0.0, 0.0);
-         // grid->accept(forcingVisitor);
-
-         //D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-		  if(myid==0) UBLOG(logINFO,"Restart finish: " << opt);
-	 
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"L = " <<lLB );
-            UBLOG(logINFO,"v = " <<vLB );
-            UBLOG(logINFO,"rho = " <<rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-			UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,"Re = " << Re );
-			 UBLOG(logINFO,"dp_lb = " << dp_lb );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-
-         ////////////////////////////////////////////////////////////////////////
-         //Grid
-         //////////////////////////////////////////////////////////////////////////
-         grid->setDeltaX(dx);
-         grid->setBlockNX(nodePerBlockX1, nodePerBlockX2, nodePerBlockX3);
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Geometrie
-         ////////////////////////////////////////////////////////////////////////////
-         GbTriFaceMesh3DPtr geo (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(geoFile,"geo"));
-
-         if(myid == 0) GbSystem3D::writeGeoObject(geo.get(), pathname+"/geo/geo", WbWriterVtkXmlASCII::getInstance());
-
-         ////////////////////////////////////////////////////////////////////////////
-         //// Randgeometrien erstellen
-         ////////////////////////////////////////////////////////////////////////////
-         double shiftForMG=grid->getDeltaX(refineLevel)*nodePerBlockX1 / 3.0*2.0;
-          GbCuboid3DPtr plate1  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -1.515e-1, -6.831e-2, 7.5, 1.515e-1, 0.0 ));
-
-           GbCuboid3DPtr plate2  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, -16.51e-1, -16.831e-2, 1.5e-1, -1.6e-2, 1.0 ));
-           GbCuboid3DPtr plate3  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, 1.6e-2, -16.831e-2, 1.5e-1, 16.515e-1, 1.0 ));
-
-          // GbCuboid3DPtr plate1_1  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, -1.0e-1, 7.5, 2.515e-1, -6.831e-2 ));
-          // GbCuboid3DPtr plate1_2  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, -0.0000001, 7.5, 2.515e-1, 1.0e-1 ));
-          // GbCuboid3DPtr plate1_3  = GbCuboid3DPtr( new GbCuboid3D( -7.5, 1.515e-1, -6.831e-2, 7.5, 2.515e-1, 0.0  ));
-          // GbCuboid3DPtr plate1_4  = GbCuboid3DPtr( new GbCuboid3D( -7.5, -2.515e-1, 0.0, 7.5, -1.515e-1, -1.0e-1 ));
-
-          // GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -8.0, -1.0, -1.0, -7.5, 1.0, 1.0 ));
-          // GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( 7.5, -1.0, -1.0, 8.0, 1.0, 1.0 ));
-		  
-		   // GbCuboid3DPtr plate2  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, -16.51e-1, -16.831e-2, 1.5e-1, -1.6e-2, 1.0 ));
-          // GbCuboid3DPtr plate3  = GbCuboid3DPtr( new GbCuboid3D( -1.5e-1, 1.6e-2, -16.831e-2, 1.5e-1, 16.515e-1, 1.0 ));
-
-          // GbCuboid3DPtr plate1_1  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, back_offset, -bottom_offset-bH*dx, right_offset+bH*dx, back_offset+bH*dx, top_offset+bH*dx ));
-          // GbCuboid3DPtr plate1_2  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, -front_offset-bH*dx, -bottom_offset-bH*dx, right_offset+bH*dx, -front_offset, top_offset+bH*dx ));
-          // GbCuboid3DPtr plate1_3  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, -front_offset-bH*dx, top_offset, right_offset+bH*dx, back_offset+bH*dx, top_offset+bH*dx+2.0*dx ));
-          // GbCuboid3DPtr plate1_4  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-bH*dx, -front_offset-bH*dx, -bottom_offset-bH*dx, right_offset+bH*dx, back_offset+bH*dx, -bottom_offset ));
-
-          //GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -left_offset-5*bH*dx, -front_offset-5*bH*dx, -bottom_offset-5*bH*dx, -left_offset, back_offset+5*bH*dx, top_offset+5*bH*dx ));
-          //GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( right_offset, -front_offset-5*bH*dx, -bottom_offset-5*bH*dx, right_offset+5.0*bH*dx, back_offset+5*bH*dx, top_offset+5*bH*dx ));
-		  GbCuboid3DPtr inflow  = GbCuboid3DPtr( new GbCuboid3D( -5.0,-1.5, -1.5, 1.5, 20.0, 20.0 ));
-		  GbCuboid3DPtr outflow = GbCuboid3DPtr( new GbCuboid3D( 157.50,-1.5, -1.5, 160.5, 20.0, 20.0));
-
-
-		   GbObject3DPtr gridCube(new GbCuboid3D(inflow->getX1Maximum()-4.0*dx,inflow->getX2Minimum()-4.0*dx ,inflow->getX3Minimum()-4.0*dx,
-			   outflow->getX1Minimum()-4.0*dx,outflow->getX2Maximum()-4.0*dx ,outflow->getX3Maximum()-4.0*dx
-                                               ));
-
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-		  
-         if(myid == 0)
-         {
-            GbSystem3D::writeGeoObject(gridCube.get(),pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-            //GbSystem3D::writeGeoObject(plate2.get(),pathname+"/geo/plate2", WbWriterVtkXmlASCII::getInstance());
-            //GbSystem3D::writeGeoObject(plate3.get(),pathname+"/geo/plate3", WbWriterVtkXmlASCII::getInstance());
-
-            // GbSystem3D::writeGeoObject(plate1_1.get(),pathname+"/geo/plate1_1", WbWriterVtkXmlASCII::getInstance());
-            // GbSystem3D::writeGeoObject(plate1_2.get(),pathname+"/geo/plate1_2", WbWriterVtkXmlASCII::getInstance());
-            // GbSystem3D::writeGeoObject(plate1_3.get(),pathname+"/geo/plate1_3", WbWriterVtkXmlASCII::getInstance());
-            // GbSystem3D::writeGeoObject(plate1_4.get(),pathname+"/geo/plate1_4", WbWriterVtkXmlASCII::getInstance());
-
-            GbSystem3D::writeGeoObject(inflow.get(),pathname+"/geo/inflow", WbWriterVtkXmlASCII::getInstance());
-            GbSystem3D::writeGeoObject(outflow.get(),pathname+"/geo/outflow", WbWriterVtkXmlASCII::getInstance());
-         }
-   
-
-         if (refineLevel > 0)
-         {
-		  if(myid == 0) UBLOG(logINFO,"Refinement - start");   
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(refineCube1, refineLevel);
-    //        refineHelper.addGbObject(refineCube3, 2);
-			 //refineHelper.addGbObject(refineCube2, 3);
-			 //refineHelper.addGbObject(refineCube4, 4);
-			 //
-			 //refineHelper.addGbObject(refineCubeInlet, 1);
-			 //refineHelper.addGbObject(refineCubeOutlet, 1);
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");   
-		 
-		 
-           // RefineCrossAndInsideGbObjectBlockVisitor refVisitor1(refineCube1, refineLevel-4);
-            // grid->accept(refVisitor1);
-
-			// RefineCrossAndInsideGbObjectBlockVisitor refVisitor3(refineCube3, refineLevel-3);
-            // grid->accept(refVisitor3);
-
-            // RefineCrossAndInsideGbObjectBlockVisitor refVisitor2(refineCube2, refineLevel-2);
-            // grid->accept(refVisitor2);
-			
-			 // RefineCrossAndInsideGbObjectBlockVisitor refVisitor4(refineCube4, refineLevel-1);
-            // grid->accept(refVisitor4);
-
-            // RatioBlockVisitor ratioVisitor(refineLevel);
-            // grid->accept(ratioVisitor);
-
-            // RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-            // grid->accept(ratioSmoothVisitor);
-
-            // OverlapBlockVisitor overlapVisitor(refineLevel);
-            // grid->accept(overlapVisitor);
-
-            // std::vector<int> dirs;
-            // D3Q27System::getLBMDirections(dirs);
-            // SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-            // grid->accept(interDirsVisitor);
-            // if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         //////////////////////////////////////////////////////////////////////////
-         //INTERAKTOREN SETZEN (=Randbedingungen)
-         //////////////////////////////////////////////////////////////////////////
-         //oben/unten = Haftrand
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-         geoInt = D3Q27TriFaceMeshInteractorPtr( new D3Q27TriFaceMeshInteractor(geo, grid, D3Q27BoundaryConditionAdapterPtr(new D3Q27NoSlipBCAdapter(bbOption)),Interactor3D::INVERSESOLID, Interactor3D::SIMPLE));
-	     geoInt->setUseHalfSpaceCheck(true);
-         geoInt->setRegardPointInObjectTest(true);
-         if(myid == 0) UBLOG(logINFO,"stl - end"); 
-         //D3Q27InteractorPtr plate1Int(new D3Q27Interactor(plate1, grid, bcObst,Interactor3D::INVERSESOLID));
-         // D3Q27InteractorPtr plate2Int(new D3Q27Interactor(plate2, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate3Int(new D3Q27Interactor(plate3, grid, bcObst,Interactor3D::SOLID));
-
-         // D3Q27InteractorPtr plate1_1Int(new D3Q27Interactor(plate1_1, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate1_2Int(new D3Q27Interactor(plate1_2, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate1_3Int(new D3Q27Interactor(plate1_3, grid, bcObst,Interactor3D::SOLID));
-         // D3Q27InteractorPtr plate1_4Int(new D3Q27Interactor(plate1_4, grid, bcObst,Interactor3D::SOLID));
-
-         //links: geschwindigkeits-einfluss
-         //Velocity-BC
-         //////////////////////////////////////////////////////////////////////////
-         mu::Parser fct;
-         fct.DefineConst("vx1"  , vLB*9.0/4.0 );
-         //fct = MathUtil::getDuctParaboloidX(0, 250*2.0, -51.08/2, 51.08, vLB*9.0/4.0);
-         fct.SetExpr("vx1");
-         //////////////////////////////////////////////////////////////////////////
-
-         //////////////////////////////////////////////////////////////////////////
-             D3Q27BoundaryConditionAdapterPtr velBCAdapter = D3Q27BoundaryConditionAdapterPtr(new D3Q27VelocityBCAdapter (false, false ,true ,fct, 0, D3Q27BCFunction::INFCONST));
-    //     D3Q27BoundaryConditionAdapterPtr velBCAdapter = D3Q27BoundaryConditionAdapterPtr(new D3Q27VelocityBCAdapter (false, false ,true ,fct,fct,fct, 0, D3Q27BCFunction::INFCONST));
-			 // velBCAdapter->setSecondaryBcOption(2);
-            // D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(inflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-		 D3Q27BoundaryConditionAdapterPtr denBCAdapterInlet(new D3Q27DensityBCAdapter(3.0*(dp_lb-rhoLB)));
-        denBCAdapterInlet->setSecondaryBcOption(1);
-        D3Q27InteractorPtr inflowInt = D3Q27InteractorPtr( new D3Q27Interactor(inflow, grid, denBCAdapterInlet,Interactor3D::SOLID));
-		 
-         //rechts: druckrand
-         //Density-BC
-         //fuer Kompressibles Modell  rho = 1.0
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         denBCAdapter->setSecondaryBcOption(1);
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(outflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-         grid->accept( metisVisitor );
-         
-      //   BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-        // if(myid == 0) ppblocks->update(0);
-         
-         SolidBlocksHelper sd(grid, comm);
-         sd.addInteractor(geoInt);
-         sd.addInteractor(inflowInt);
-         sd.addInteractor(outflowInt);
-         // sd.addInteractor(plate1_1Int);
-         // sd.addInteractor(plate1_2Int);
-         // sd.addInteractor(plate1_3Int);
-         // sd.addInteractor(plate1_4Int);
-         // sd.addInteractor(plate2Int);
-         // sd.addInteractor(plate3Int);
-		   if(myid == 0) UBLOG(logINFO,"line"<<__LINE__); 
-         sd.deleteSolidBlocks();     
-         if(myid == 0) UBLOG(logINFO,"line"<<__LINE__); 
-         grid->accept( metisVisitor );
-         if(myid == 0) UBLOG(logINFO,"line"<<__LINE__);
-
-         sd.setTransBlocks();
-         if(myid == 0) UBLOG(logINFO,"line"<<__LINE__);
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         if(myid == 0) ppblocks->update(0);
-         if(myid == 0) ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod_temp = nob * (nodePerBlockX1+gl) * (nodePerBlockX2+gl) * (nodePerBlockX3+gl);
-         unsigned long nod = nob * (nodePerBlockX1) * (nodePerBlockX2) * (nodePerBlockX3);
-         double needMemAll  = double(nod_temp*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }  
-
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2));
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(nodePerBlockX1, nodePerBlockX2, nodePerBlockX2));
-
-		
-		  int option = 0;
-		// LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(nodePerBlockX1, nodePerBlockX2, nodePerBlockX3,option));
-		  LBMKernel3DPtr kernel;
-		kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(nodePerBlockX1, nodePerBlockX2, nodePerBlockX3, LBMKernelETD3Q27CCLB::MAGIC));
-		//  
-		// kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(nodePerBlockX1, nodePerBlockX2, nodePerBlockX3, 1));
-		 
-		 
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-		 
-		  if(myid == 0) UBLOG(logINFO,"intractor - start"); 
-          //inflow
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         grid->addAndInitInteractor(outflowInt);
-         //canal
-         grid->addAndInitInteractor(geoInt);
-         // grid->addAndInitInteractor(plate1_1Int);
-         // grid->addAndInitInteractor(plate1_2Int);
-         // grid->addAndInitInteractor(plate1_3Int);
-         // grid->addAndInitInteractor(plate1_4Int);
-         // grid->addAndInitInteractor(plate2Int);
-         // grid->addAndInitInteractor(plate3Int);
-
-       
-
-         //////////////////////////////////////////////////////////////////////////
-         //connectoren setzen:
-
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         //////////////////////////////////////////////////////////////////////////	 
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-			 
-         //////////////////////////////////////////////////////////////////////////     
-	   //Stroemungsfeld initialisieren
-         //////////////////////////////////////////////////////////////////////////
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(rhoLB); //1.0
-         initVisitor.setVx1(0); 
-		   initVisitor.setVx1(0); 
-
-         grid->accept(initVisitor);
-
-         if(myid == 0)
-         {
-            //Abstände "q" als Linien rausschreiben
-            std::vector< UbTupleFloat3 > nodes;
-            std::vector< UbTupleInt2 >   lines;
-            geoInt->addQsLineSet(nodes, lines);
-            WbWriterVtkXmlBinary::getInstance()->writeLines(pathname+"/grid/qs",nodes,lines);
-         }
-
-          if(myid == 0) UBLOG(logINFO,"Preprozess - end");
-		 
-		 	  ////////////////////////
-           //Set Postprozessors
-           //////////////////////////////////////////////////////////////////////////
-           {
-            UbSchedulerPtr geoSch(new UbScheduler(1));
-            D3Q27MacroscopicQuantitiesPostprocessor ppgeo(grid,geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv,  comm, true);
-            grid->doPostProcess(0);
-           }
-	    
-
-      }
-
-      //////////////////////////////////////////////////////////////////////////
-	   // UbSchedulerPtr visSchAv(new UbScheduler());
-		UbSchedulerPtr visSchAv(new UbScheduler(100,100));
-      // visSchAv->addSchedule(100,10,1000);
-      // UbSchedulerPtr resSchAv(new UbScheduler());
-	   UbSchedulerPtr resSchAv(new UbScheduler(100,100));
-      // resSchAv->addSchedule(20,20,1000);
-      AverageValuesPostprocessor       Avpp(grid,  pathname + "/Turbulence/stepAV", WbWriterVtkXmlBinary::getInstance(), visSchAv/*wann wird rausgeschrieben*/,resSchAv/*wann wird resettet*/,comm);
-	  
-	   D3Q27ShearStressPostprocessor  shear(grid,  pathname + "/shear/step", WbWriterVtkXmlBinary::getInstance(), visSchAv/*wann wird rausgeschrieben*/,resSchAv/*wann wird resettet*/,comm,iProcessor); 
-	   //D3Q27ShearStressPostprocessor  shear(grid,  pathname + "/shear/step", WbWriterVtkXmlBinary::getInstance(), visSchAv/*wann wird rausgeschrieben*/,resSchAv/*wann wird resettet*/,comm);
-	   shear.addInteractor(geoInt);
-	   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  
-
-      UbSchedulerPtr nupsSch(new UbScheduler(1, 5, 10));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double outTime = 100.0;
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid,stepSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv,  comm);
-      //////////////////////////////////////////////////////////////////////////
-      //PathLine
-       UbSchedulerPtr plSch(new UbScheduler(5000, 5000));
-      const int numberofparticle=20;
-	
-	  std::vector<UbTupleDouble3 > potisions;
-	  double randomx[numberofparticle];
-	  double randomy[numberofparticle];
-	  double randomz[numberofparticle];
-	  double lowestx,highestx,lowesty,highesty,lowestz,highestz;
-	  if(myid==0)
-	  {
-		  for(int i = 0; i < numberofparticle; i++)
-		  {
-			  double random; 
-	        lowestx =-10300.0;  lowesty =-230;          lowestz =-250;
-	        highestx=-9792.0;  highesty=-330;          highestz=-250; 
-		  
-	      double rangex=(highestx-lowestx),rangey=(highesty-lowesty),rangez=(highestz-lowestz);	
-           randomx[i] = lowestx+(rangex*rand()/(RAND_MAX + 1.0));
-		   randomy[i] = lowesty+(rangey*rand()/(RAND_MAX + 1.0));
-	       randomz[i] = lowestz+(rangez*rand()/(RAND_MAX + 1.0));
-		  //val<1>(potisions[i])= 0.506983973456;
-		  //val<2>(potisions[i]) = lowesty+(rangey*rand()/(RAND_MAX + 1.0));
-		   //val<3>(potisions[i]) = lowestz+(rangez*rand()/(RAND_MAX + 1.0));
-		  }
-		  for (int i=0;i<comm->getNumberOfProcesses();i++)
-		  {
-			  if (i!=0)
-			  {
-			      MPI_Send(randomx,numberofparticle, MPI_DOUBLE_PRECISION,i,i,MPI_COMM_WORLD);
-				  MPI_Send(randomy,numberofparticle, MPI_DOUBLE_PRECISION,i,i,MPI_COMM_WORLD);
-				  MPI_Send(randomz,numberofparticle, MPI_DOUBLE_PRECISION,i,i,MPI_COMM_WORLD);
-			  }
-		  }
-	  }
-	  if (myid!=0)
-	  {
-		  MPI_Status status; 
-		  MPI_Recv(randomx,numberofparticle, MPI_DOUBLE_PRECISION,0,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
-		  MPI_Recv(randomy,numberofparticle, MPI_DOUBLE_PRECISION,0,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
-		  MPI_Recv(randomz,numberofparticle, MPI_DOUBLE_PRECISION,0,MPI_ANY_TAG,MPI_COMM_WORLD,&status);
-	  }
-	  for(int i = 0; i < numberofparticle; i++)
-	  {	
-		  potisions.push_back( makeUbTuple(randomx[i],randomy[i],randomz[i]) );
-		  //val<1>(potisions[i])= 0.506983973456;
-		  //val<2>(potisions[i]) = randomy[i];
-		  //val<3>(potisions[i]) = randomz[i];
-	  }
-	 //  UBLOG(logINFO,"Rank="<<myid<<" positions  = " <<val<1>(potisions)<< " "<<val<2>(potisions)<<" "<< val<3>(potisions));
-	 // D3Q27InterpolationProcessorPtr iProcessor2;
-     // D3Q27PathLinePostprocessorMcpart pathLine(grid, pathname + "/pathLine/pathLine", WbWriterVtkXmlASCII::getInstance(), conv, plSch, comm,potisions, nueLB, iProcessor);
-      //////////////////////////////////////////////////////////////////////////
-      //Simulation
-      //////////////////////////////////////////////////////////////////////////
-
-	  double endTime = 1000.0;
-      UbSchedulerPtr visSch(stepSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
\ No newline at end of file
diff --git a/apps/cpu/micropart/setup.txt b/apps/cpu/micropart/setup.txt
deleted file mode 100644
index d0e1e18ff1c94ed14246706de31dd59f3fdc7f14..0000000000000000000000000000000000000000
--- a/apps/cpu/micropart/setup.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-pathname = "/work/koskuche/scratch/micropart2";
-blocknx = 16
-double dx = 0.0134*0.5;
-LBMReal nueLB = 0.0000249*2.0;
-double outTime = 2000;
\ No newline at end of file
diff --git a/apps/cpu/mirror/CMakeLists.txt b/apps/cpu/mirror/CMakeLists.txt
deleted file mode 100644
index b0ff5d5943e630b9544b7dfdcec5f4e780452db8..0000000000000000000000000000000000000000
--- a/apps/cpu/mirror/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(mirror)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(mirror BINARY)
diff --git a/apps/cpu/mirror/mirror.cfg b/apps/cpu/mirror/mirror.cfg
deleted file mode 100644
index 29ebcb3218cef3c70d6eab92f94dd975fe346618..0000000000000000000000000000000000000000
--- a/apps/cpu/mirror/mirror.cfg
+++ /dev/null
@@ -1,54 +0,0 @@
-pathOut = d:/temp/mirror5
-pathGeo = d:/Projects/Spiegelbenchmark/geometry
-pathMesh = d:/Projects/Spiegelbenchmark/meshBoxes
-
-#geometry
-SAE = SAE_GRUNDKOERPER_CFD_INPUT_VERFEINERT_in_m_SOLID.ASCII_D_0.8.stl
-
-
-#refinement meshes
-VRES0600_chopped = VRES0600_chopped.stl 
-VRES0700_chopped = VRES0700_chopped.stl
-VRES0800_Fahrzeug = VRES0800_Fahrzeug.stl
-#VRES0900 = VRES0900_Cube.stl
-VRES1000_ASaeule = VRES1000_ASaeule.stl
-VRES1000_Scheibe = VRES1000_Scheibe.stl
-VRES1000_Spiegel = VRES1000_Spiegel.stl
-VRES1100_Spiegel_fein = VRES1100_Spiegel_fein.stl
-
-
-numOfThreads = 4
-availMem = 10e9
-refineLevel = 11  
-#blockNx = 9 8 9
-blockNx = 14 8 10
-
-#x1min x1max x2min x2max x3min x3max [m]
-#bounding box
-WTUNNEL1 = -35.8 37.4 -31.5 31.5 -0.177 32.8
-
-#refinement cubes
-VRES0100 = -18.4 24.5 -16.2 16.2 -0.187 16.5
-VRES0200 = -10.7 16.8 -8.56 8.56 -0.187 8.82
-VRES0300 = -6.9 13 -4.72 4.72 -0.187 4.98
-VRES0400 = -4.21 10.8 -2.8 2.8 -0.187 3.06
-VRES0500 = -2.87 8.74 -1.84 1.84 -0.187 2.1
-VRES0700 = -2.6 4.69 -1.25 1.25 -0.255 -0.125 
-VRES0900 = -0.823 0.941 -1.15 -0.7 0.502 1.01
-
-#deltaXcoarse = 4096e-3 #level 0
-deltaXcoarse = 2.048 #level 0
-deltaXfine = 1e-3 #level 11
-
-
-refineDistance = 0.3
-
-restartStep = 1
-restartStepStart = 100
-
-outTime = 1
-endTime = 10
-
-logToFile = flase
-
-nupsStep = 1 1 10000000
\ No newline at end of file
diff --git a/apps/cpu/mirror/mirror.cpp b/apps/cpu/mirror/mirror.cpp
deleted file mode 100644
index 8eaa847908a08fd3ea74ae766c8f1b362481c7ca..0000000000000000000000000000000000000000
--- a/apps/cpu/mirror/mirror.cpp
+++ /dev/null
@@ -1,572 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "VirtualFluids.h"
-
-using namespace std;
-
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathOut = config.getValue<string>("pathOut");
-      string          pathGeo = config.getValue<string>("pathGeo");
-      string          pathMesh = config.getValue<string>("pathMesh");
-      int             numOfThreads = config.getValue<int>("numOfThreads");
-      vector<int>     blockNx = config.getVector<int>("blockNx");
-      double          restartStep = config.getValue<double>("restartStep");
-      double          restartStepStart = config.getValue<double>("restartStepStart");
-      double          endTime = config.getValue<double>("endTime");
-      double          outTime = config.getValue<double>("outTime");
-      double          availMem = config.getValue<double>("availMem");
-      int             refineLevel = config.getValue<int>("refineLevel");
-      bool            logToFile = config.getValue<bool>("logToFile");
-      double          deltaXcoarse = config.getValue<double>("deltaXcoarse");
-      double          deltaXfine = config.getValue<double>("deltaXfine");
-      double          refineDistance = config.getValue<double>("refineDistance");
-      vector<double>  nupsStep = config.getVector<double>("nupsStep");
-
-      vector<double>  WTUNNEL1 = config.getVector<double>("WTUNNEL1");
-      vector<double>  VRES0100 = config.getVector<double>("VRES0100");
-      vector<double>  VRES0200 = config.getVector<double>("VRES0200");
-      vector<double>  VRES0300 = config.getVector<double>("VRES0300");
-      vector<double>  VRES0400 = config.getVector<double>("VRES0400");
-      vector<double>  VRES0500 = config.getVector<double>("VRES0500");
-      vector<double>  VRES0700 = config.getVector<double>("VRES0700");
-      vector<double>  VRES0900 = config.getVector<double>("VRES0900");
-
-      string          SAE = config.getValue<string>("SAE");
-      string          VRES0600_chopped = config.getValue<string>("VRES0600_chopped");
-      string          VRES0700_chopped = config.getValue<string>("VRES0700_chopped");
-      string          VRES0800_Fahrzeug = config.getValue<string>("VRES0800_Fahrzeug");
-      //string          VRES0900 = config.getValue<string>("VRES0900");
-      string          VRES1000_ASaeule = config.getValue<string>("VRES1000_ASaeule");
-      string          VRES1000_Scheibe = config.getValue<string>("VRES1000_Scheibe");
-      string          VRES1000_Spiegel = config.getValue<string>("VRES1000_Spiegel");
-      string          VRES1100_Spiegel_fein = config.getValue<string>("VRES1100_Spiegel_fein");
-
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid==0)
-         {
-            const char* str = pathOut.c_str();
-            mkdir(str, S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH);
-         }
-#endif 
-
-         if (myid==0)
-         {
-            stringstream logFilename;
-            logFilename<<pathOut+"/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-
-      double g_minX1 = WTUNNEL1[0];
-      double g_minX2 = WTUNNEL1[2];
-      double g_minX3 = WTUNNEL1[4];
-
-      double g_maxX1 = WTUNNEL1[1];
-      double g_maxX2 = WTUNNEL1[3];
-      double g_maxX3 = WTUNNEL1[5];
-
-      double blockLength = (double)blockNx[0]*deltaXcoarse;
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-
-
-      double rhoLB = 0.0;
-      double rhoReal = 1.2041; //(kg/m3)
-      double nueReal = 153.5e-7; //m^2/s
-
-      double lReal = 2.048;//m
-      double uReal = 140.0/3.6;
-
-      double Re = uReal*lReal/nueReal;
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-      double Ma = 140.0/1236.0;//Ma-Real!
-
-      double uLB = Ma*sqrt(1.0/3.0);
-      double nuLB = (uLB*1.0)/Re;
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      ////////////////////////////////////////////////////////////////////////
-      //Grid
-      //////////////////////////////////////////////////////////////////////////
-      SPtr<Grid3D> grid(new Grid3D(comm));
-      grid->setDeltaX(deltaXcoarse);
-      grid->setBlockNX(blockNx[0], blockNx[1], blockNx[2]);
-
-      SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if (myid==0) GbSystem3D::writeGeoObject(gridCube.get(), pathOut+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-      GenBlocksGridVisitor genBlocks(gridCube);
-      grid->accept(genBlocks);
-
-      grid->setPeriodicX1(false);
-      grid->setPeriodicX2(false);
-      grid->setPeriodicX3(false);
-
-      //BC adapters
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-
-      SPtr<BCAdapter> slipBCAdapter(new SlipBCAdapter());
-      slipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new SlipBCAlgorithm()));
-
-      mu::Parser fct;
-      fct.SetExpr("U");
-      fct.DefineConst("U", uLB);
-      SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-      velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapter(new DensityBCAdapter(rhoLB));
-      denBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      bcVisitor.addBC(slipBCAdapter);
-      bcVisitor.addBC(velBCAdapter);
-      bcVisitor.addBC(denBCAdapter);
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-    
-      //////////////////////////////////////////////////////////////////////////
-
-
-      if (grid->getTimeStep()==0)
-      {
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "* Re                  = "<<Re);
-            UBLOG(logINFO, "* Ma                  = "<<Ma);
-            UBLOG(logINFO, "* velocity (uReal)    = "<<uReal<<" m/s");
-            UBLOG(logINFO, "* viscosity (nuReal)  = "<<nueReal<<" m^2/s");
-            UBLOG(logINFO, "* velocity LB (uLB)   = "<<uLB);
-            UBLOG(logINFO, "* viscosity LB (nuLB) = "<<nuLB);
-            UBLOG(logINFO, "* dx_base             = "<<deltaXcoarse<<" m");
-            UBLOG(logINFO, "* dx_refine           = "<<deltaXfine<<" m");
-            UBLOG(logINFO, "* number of levels    = "<<refineLevel+1);
-            UBLOG(logINFO, "* number of threads   = "<<numOfThreads);
-            UBLOG(logINFO, "* number of processes = "<<comm->getNumberOfProcesses());
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         GbCuboid3DPtr geoVRES0100(new GbCuboid3D(VRES0100[0], VRES0100[2], VRES0100[4], VRES0100[1], VRES0100[3], VRES0100[5]));
-         if (myid==0) GbSystem3D::writeGeoObject(geoVRES0100.get(), pathOut+"/geo/geoVRES0100", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr geoVRES0200(new GbCuboid3D(VRES0200[0], VRES0200[2], VRES0200[4], VRES0200[1], VRES0200[3], VRES0200[5]));
-         if (myid==0) GbSystem3D::writeGeoObject(geoVRES0200.get(), pathOut+"/geo/geoVRES0200", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr geoVRES0300(new GbCuboid3D(VRES0300[0], VRES0300[2], VRES0300[4], VRES0300[1], VRES0300[3], VRES0300[5]));
-         if (myid==0) GbSystem3D::writeGeoObject(geoVRES0300.get(), pathOut+"/geo/geoVRES0300", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr geoVRES0400(new GbCuboid3D(VRES0400[0], VRES0400[2], VRES0400[4], VRES0400[1], VRES0400[3], VRES0400[5]));
-         if (myid==0) GbSystem3D::writeGeoObject(geoVRES0400.get(), pathOut+"/geo/geoVRES0400", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr geoVRES0500(new GbCuboid3D(VRES0500[0], VRES0500[2], VRES0500[4], VRES0500[1], VRES0500[3], VRES0500[5]));
-         if (myid==0) GbSystem3D::writeGeoObject(geoVRES0500.get(), pathOut+"/geo/geoVRES0500", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr geoVRES0700(new GbCuboid3D(VRES0700[0], VRES0700[2], VRES0700[4], VRES0700[1], VRES0700[3], VRES0700[5]));
-         if (myid==0) GbSystem3D::writeGeoObject(geoVRES0700.get(), pathOut+"/geo/geoVRES0700", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr geoVRES0900(new GbCuboid3D(VRES0900[0], VRES0900[2], VRES0900[4], VRES0900[1], VRES0900[3], VRES0900[5]));
-         if (myid==0) GbSystem3D::writeGeoObject(geoVRES0900.get(), pathOut+"/geo/geoVRES0900", WbWriterVtkXmlASCII::getInstance());
-
-         SPtr<D3Q27Interactor> geoVRES0700Int(new D3Q27Interactor(geoVRES0700, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         //GEO
-         if (myid==0) UBLOG(logINFO, "Read geoSAE:start");
-         SPtr<GbTriFaceMesh3D> geoSAE = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+SAE, "meshSAE", GbTriFaceMesh3D::KDTREE_SAHPLIT, true));
-         if (myid==0) UBLOG(logINFO, "Read meshSAE:end");
-         if (myid==0) GbSystem3D::writeGeoObject(geoSAE.get(), pathOut+"/geo/meshSAE", WbWriterVtkXmlBinary::getInstance());
-
-         SPtr<D3Q27TriFaceMeshInteractor> geoSAEInteractor(new D3Q27TriFaceMeshInteractor(geoSAE, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-
-
-         if (myid==0)
-         {
-            //////////////////////////////////////////
-            //meshes
-            if (myid==0) UBLOG(logINFO, "Read meshVRES0600:start");
-            SPtr<GbTriFaceMesh3D> meshVRES0600 = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathMesh+"/"+VRES0600_chopped, "meshVRES0600", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read meshVRES0600:end");
-            if (myid==0) GbSystem3D::writeGeoObject(meshVRES0600.get(), pathOut+"/geo/meshVRES0600", WbWriterVtkXmlBinary::getInstance());
-            SPtr<D3Q27TriFaceMeshInteractor> meshVRES0600Interactor(new D3Q27TriFaceMeshInteractor(meshVRES0600, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-            if (myid==0) UBLOG(logINFO, "Read meshVRES0700:start");
-            SPtr<GbTriFaceMesh3D> meshVRES0700 = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathMesh+"/"+VRES0700_chopped, "meshVRES0700", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read meshVRES0700:end");
-            if (myid==0) GbSystem3D::writeGeoObject(meshVRES0700.get(), pathOut+"/geo/meshVRES0700", WbWriterVtkXmlBinary::getInstance());
-            SPtr<D3Q27TriFaceMeshInteractor> meshVRES0700Interactor(new D3Q27TriFaceMeshInteractor(meshVRES0700, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-            if (myid==0) UBLOG(logINFO, "Read meshVRES0800:start");
-            SPtr<GbTriFaceMesh3D> meshVRES0800 = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathMesh+"/"+VRES0800_Fahrzeug, "meshVRES0800", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read meshVRES0800:end");
-            if (myid==0) GbSystem3D::writeGeoObject(meshVRES0800.get(), pathOut+"/geo/meshVRES0800", WbWriterVtkXmlBinary::getInstance());
-            SPtr<D3Q27TriFaceMeshInteractor> meshVRES0800Interactor(new D3Q27TriFaceMeshInteractor(meshVRES0800, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-            //if (myid==0) UBLOG(logINFO, "Read meshVRES0900:start");
-            //SPtr<GbTriFaceMesh3D> meshVRES0900 = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathMesh+"/"+VRES0900, "meshVRES0900", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            //if (myid==0) UBLOG(logINFO, "Read meshVRES0900:end");
-            //if (myid==0) GbSystem3D::writeGeoObject(meshVRES0900.get(), pathOut+"/geo/meshVRES0900", WbWriterVtkXmlBinary::getInstance());
-            //SPtr<D3Q27TriFaceMeshInteractor> meshVRES0900Interactor(new D3Q27TriFaceMeshInteractor(meshVRES0900, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-            if (myid==0) UBLOG(logINFO, "Read meshVRES1000ASaeule:start");
-            SPtr<GbTriFaceMesh3D> meshVRES1000ASaeule = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathMesh+"/"+VRES1000_ASaeule, "meshVRES1000ASaeule", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read meshVRES1000ASaeule:end");
-            if (myid==0) GbSystem3D::writeGeoObject(meshVRES1000ASaeule.get(), pathOut+"/geo/meshVRES1000ASaeule", WbWriterVtkXmlBinary::getInstance());
-            SPtr<D3Q27TriFaceMeshInteractor> meshVRES1000ASaeuleInteractor(new D3Q27TriFaceMeshInteractor(meshVRES1000ASaeule, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-            if (myid==0) UBLOG(logINFO, "Read meshVRES1000Scheibe:start");
-            SPtr<GbTriFaceMesh3D> meshVRES1000Scheibe = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathMesh+"/"+VRES1000_Scheibe, "meshVRES1000Scheibe", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read meshVRES1000Scheibe:end");
-            if (myid==0) GbSystem3D::writeGeoObject(meshVRES1000Scheibe.get(), pathOut+"/geo/meshVRES1000Scheibe", WbWriterVtkXmlBinary::getInstance());
-            SPtr<D3Q27TriFaceMeshInteractor> meshVRES1000ScheibeInteractor(new D3Q27TriFaceMeshInteractor(meshVRES1000Scheibe, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-            if (myid==0) UBLOG(logINFO, "Read meshVRES1000Spiegel:start");
-            SPtr<GbTriFaceMesh3D> meshVRES1000Spiegel = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathMesh+"/"+VRES1000_Spiegel, "meshSpiegel", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read meshVRES1000Spiegel:end");
-            if (myid==0) GbSystem3D::writeGeoObject(meshVRES1000Spiegel.get(), pathOut+"/geo/meshVRES1000Spiegel", WbWriterVtkXmlBinary::getInstance());
-            SPtr<D3Q27TriFaceMeshInteractor> meshVRES1000SpiegelInteractor(new D3Q27TriFaceMeshInteractor(meshVRES1000Spiegel, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-            if (myid==0) UBLOG(logINFO, "Read meshVRES1100SpiegelFine:start");
-            SPtr<GbTriFaceMesh3D> meshVRES1100SpiegelFine = SPtr<GbTriFaceMesh3D>(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathMesh+"/"+VRES1100_Spiegel_fein, "meshSpiegelFine", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
-            if (myid==0) UBLOG(logINFO, "Read meshVRES1100SpiegelFine:end");
-            if (myid==0) GbSystem3D::writeGeoObject(meshVRES1100SpiegelFine.get(), pathOut+"/geo/meshVRES1100SpiegelFine", WbWriterVtkXmlBinary::getInstance());
-            SPtr<D3Q27TriFaceMeshInteractor> meshVRES1100SpiegelFineInteractor(new D3Q27TriFaceMeshInteractor(meshVRES1100SpiegelFine, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-            UBLOG(logINFO, "Refinement - start");
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel, comm);
-            ////refineHelper.addGbObject(geoVRES0100, refineLevel-4);
-            //refineHelper.addGbObject(geoVRES0200, 1);
-            //refineHelper.addGbObject(geoVRES0300, 2);
-            //refineHelper.addGbObject(geoVRES0400, 3);
-            //refineHelper.addGbObject(geoVRES0500, 4);
-            //refineHelper.addGbObject(geoVRES0700, 7);
-            //refineHelper.addGbObject(geoVRES0900, 9);
-            //refineHelper.refine();
-
-            RefineCrossAndInsideGbObjectBlockVisitor geoVRES0200RefVisitor(geoVRES0200, 1);
-            grid->accept(geoVRES0200RefVisitor);
-            RefineCrossAndInsideGbObjectBlockVisitor geoVRES0300RefVisitor(geoVRES0300, 2);
-            grid->accept(geoVRES0300RefVisitor);
-            RefineCrossAndInsideGbObjectBlockVisitor geoVRES0400RefVisitor(geoVRES0400, 3);
-            grid->accept(geoVRES0400RefVisitor);
-            RefineCrossAndInsideGbObjectBlockVisitor geoVRES0500RefVisitor(geoVRES0500, 4);
-            grid->accept(geoVRES0500RefVisitor);
-
-
-            int rank = grid->getRank();
-            grid->setRank(0);
-            meshVRES0600Interactor->refineBlockGridToLevel(5, 0.0, 0.0);
-            meshVRES0700Interactor->refineBlockGridToLevel(6, -0.6, 0.0);
-
-            UBLOG(logINFO, "Refinement - geoVRES0700");
-            RefineCrossAndInsideGbObjectBlockVisitor geoVRES0700RefVisitor(geoVRES0700, 7);
-            grid->accept(geoVRES0700RefVisitor);
-
-            UBLOG(logINFO, "Refinement - geoSAEInteractor");
-            meshVRES0800Interactor->refineBlockGridToLevel(8, -0.5, 0.0);
-            //geoSAEInteractor->refineBlockGridToLevel(8, 0.0, 0.1);
-
-            //SetSolidOrTransBlockVisitor v(geoSAEInteractor, SetSolidOrTransBlockVisitor::SOLID);
-            //grid->accept(v);
-            //std::vector<SPtr<Block3D>>& sb = geoSAEInteractor->getSolidBlockSet();
-            //BOOST_FOREACH(SPtr<Block3D> block, sb)
-            //{
-            //   grid->deleteBlock(block);
-            //}
-            //geoSAEInteractor->removeSolidBlocks();
-            //geoSAEInteractor->removeTransBlocks();
-
-            UBLOG(logINFO, "Refinement - geoVRES0900RefVisitor");
-            //meshVRES0900Interactor->refineBlockGridToLevel(9, 0.0, 0.0);
-            RefineCrossAndInsideGbObjectBlockVisitor geoVRES0900RefVisitor(geoVRES0900, 9);
-            grid->accept(geoVRES0900RefVisitor);
-
-            UBLOG(logINFO, "Refinement - meshVRES1000ASaeuleInteractor");
-            meshVRES1000ASaeuleInteractor->refineBlockGridToLevel(10, -0.1, 0.0);
-
-            UBLOG(logINFO, "Refinement - meshVRES1000ScheibeInteractor");
-            meshVRES1000ScheibeInteractor->refineBlockGridToLevel(10, -0.1, 0.0);
-
-            UBLOG(logINFO, "Refinement - meshVRES1000SpiegelInteractor");
-            meshVRES1000SpiegelInteractor->refineBlockGridToLevel(10, -0.12, 0.0);
-
-            UBLOG(logINFO, "Refinement - meshVRES1100SpiegelFineInteractor");
-            meshVRES1100SpiegelFineInteractor->refineBlockGridToLevel(11, -0.12, 0.0);
-            grid->setRank(rank);
-
-            ///////////////////////////////////////////////////////////
-            ///BOX
-            //GbCuboid3DPtr geoBox1(new GbCuboid3D(-0.495, -0.8, 0.545, -0.045, -0.7, 0.795));
-            //if (myid==0) GbSystem3D::writeGeoObject(geoBox1.get(), pathOut+"/geo/geoBox1", WbWriterVtkXmlASCII::getInstance());
-            //CoarsenCrossAndInsideGbObjectBlockVisitor geoBox1Visitor(geoBox1, 11, 11);
-            //grid->accept(geoBox1Visitor);
-            //////////////////////////////////////////////////////////////////////////
-
-
-            if (myid==0)
-            {
-               WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-               ppblocks.process(0);
-            }
-
-            RatioBlockVisitor ratioVisitor(refineLevel);
-            CheckRatioBlockVisitor checkRatio(refineLevel);
-            int count = 0;
-
-            do {
-               UBLOG(logINFO, "Refinement - RatioBlockVisitor");
-               grid->accept(ratioVisitor);
-               checkRatio.resetState();
-               UBLOG(logINFO, "Refinement - CheckRatioBlockVisitor");
-               grid->accept(checkRatio);
-               if (myid==0) UBLOG(logINFO, "count ="<<count++<<" state="<<checkRatio.getState());
-            } while (!checkRatio.getState());
-
-            UBLOG(logINFO, "Refinement - OverlapBlockVisitor");
-            OverlapBlockVisitor overlapVisitor(refineLevel, false);
-            grid->accept(overlapVisitor);
-
-            if (myid==0) UBLOG(logINFO, "Refinement - end");
-
-            if (myid==0)
-            {
-               WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-               ppblocks.process(1);
-            }
-         }
-
-         grid->updateDistributedBlocks(comm);
-
-         if (myid == 0) UBLOG(logINFO, "SetInterpolationDirsBlockVisitor");
-         std::vector<int> dirs;
-         for (int i = D3Q27System::E; i<=D3Q27System::TS; i++)
-         {
-            dirs.push_back(i);
-         }
-         SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-         grid->accept(interDirsVisitor);
-
-         //////////////////////////////////////////////////////////////////////////
-
-
-         //walls
-         GbCuboid3DPtr addWallYmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_minX2, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathOut+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1-blockLength, g_maxX2, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathOut+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         //wall interactors
-         SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, slipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, slipBCAdapter, Interactor3D::SOLID));
-
-         //walls
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathOut+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathOut+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //wall interactors
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, slipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, slipBCAdapter, Interactor3D::SOLID));
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoInflow.get(), pathOut+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathOut+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         SPtr<D3Q27Interactor> inflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //outflow
-         SPtr<D3Q27Interactor> outflowIntr = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         //METIS
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(inflowIntr);
-         intHelper.addInteractor(outflowIntr);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(geoVRES0700Int);
-         intHelper.addInteractor(geoSAEInteractor);
-         //////////////////////////////////////////////////////////////////////////
-         intHelper.selectBlocks();
-
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         if (myid==0)
-         {
-            SPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm));
-            ppblocks->process(2);
-            ppblocks.reset();
-         }
-         unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-         int ghostLayer = 3;
-         unsigned long long numberOfNodesPerBlock = (unsigned long long)(blockNx[0])* (unsigned long long)(blockNx[1])* (unsigned long long)(blockNx[2]);
-         unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-         unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blockNx[0]+ghostLayer) * (blockNx[1]+ghostLayer) * (blockNx[2]+ghostLayer);
-         double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27*sizeof(double)+sizeof(int)+sizeof(float)*4));
-         double needMem = needMemAll/double(comm->getNumberOfProcesses());
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Number of blocks = "<<numberOfBlocks);
-            UBLOG(logINFO, "Number of nodes  = "<<numberOfNodes);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level "<<level<<" = "<<nobl);
-               UBLOG(logINFO, "Number of nodes for level "<<level<<" = "<<nobl*numberOfNodesPerBlock);
-            }
-            UBLOG(logINFO, "Necessary memory  = "<<needMemAll<<" bytes");
-            UBLOG(logINFO, "Necessary memory per process = "<<needMem<<" bytes");
-            UBLOG(logINFO, "Available memory per process = "<<availMem<<" bytes");
-         }
-
-         SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel(blockNx[0], blockNx[1], blockNx[2], CompressibleCumulantLBMKernel::NORMAL));
-
-         SPtr<BCProcessor> bcProc;
-
-         bcProc = SPtr<BCProcessor>(new BCProcessor());
-
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel>0)
-         {
-            SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //BC
-         intHelper.setBC();
-
-         grid->accept(bcVisitor);
-
-         //initialization of distributions
-         InitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-         initVisitor.setVx1(fct);
-         initVisitor.setNu(nuLB);
-         grid->accept(initVisitor);
-
-         ////set connectors
-         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //Postrozess
-         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         SPtr<CoProcessor> ppgeo(new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-         ppgeo->process(0);
-         ppgeo.reset();
-
-         if (myid==0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         grid->accept(bcVisitor);
-      }
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTime));
-
-      WriteMacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Total Physical Memory (RAM): "<<Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used: "<<Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe());
-      }
-
-      const SPtr<ConcreteCalculatorFactory> calculatorFactory = std::make_shared<ConcreteCalculatorFactory>(stepSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, calculatorFactory, CalculatorType::HYBRID));
-      if (myid==0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid==0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (std::exception& e)
-   {
-      cerr<<e.what()<<endl<<flush;
-   }
-   catch (std::string& s)
-   {
-      cerr<<s<<endl;
-   }
-   catch (...)
-   {
-      cerr<<"unknown exception"<<endl;
-   }
-
-}
-
-int main(int argc, char* argv[])
-{
-
-   if (argv!=NULL)
-   {
-      if (argv[1]!=NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout<<"Configuration file must be set!: "<<argv[0]<<" <config file>"<<endl<<std::flush;
-      }
-   }
-
-   return 0;
-}
-
diff --git a/apps/cpu/mirror/mirrorV1.cfg b/apps/cpu/mirror/mirrorV1.cfg
deleted file mode 100644
index 57d04a768cbc3557542032b103b22bcd3d01ad19..0000000000000000000000000000000000000000
--- a/apps/cpu/mirror/mirrorV1.cfg
+++ /dev/null
@@ -1,60 +0,0 @@
-pathOut = d:/temp/mirror5
-pathGeo = d:/Projects/Spiegelbenchmark/geometry
-pathMesh = d:/Projects/Spiegelbenchmark/meshBoxes
-
-#geometry
-SAE = SAE_GRUNDKOERPER_CFD_INPUT_VERFEINERT_in_m_SOLID.ASCII_D_0.8.stl
-
-
-#refinement meshes
-VRES0600_chopped = VRES0600_chopped.stl 
-VRES0700_chopped = VRES0700_chopped.stl
-VRES0800_Fahrzeug = VRES0800_Fahrzeug.stl
-#VRES0900 = VRES0900_Cube.stl
-VRES1000_ASaeule = VRES1000_ASaeule.stl
-VRES1000_Scheibe = VRES1000_Scheibe.stl
-VRES1000_Spiegel = VRES1000_Spiegel.stl
-VRES1100_Spiegel_fein = VRES1100_Spiegel_fein.stl
-
-
-numOfThreads = 4
-availMem = 10e9
-refineLevel = 11  
-#blockNx = 9 8 9
-blockNx = 5 5 5
-
-#x1min x1max x2min x2max x3min x3max [m]
-#bounding box
-WTUNNEL1 = -35.8 37.4 -31.5 31.5 -0.177 32.8
-
-#refinement cubes
-VRES0100 = -18.4 24.5 -16.2 16.2 -0.187 16.5
-VRES0200 = -10.7 16.8 -8.56 8.56 -0.187 8.82
-VRES0300 = -6.9 13 -4.72 4.72 -0.187 4.98
-VRES0400 = -4.21 10.8 -2.8 2.8 -0.187 3.06
-VRES0500 = -2.87 8.74 -1.84 1.84 -0.187 2.1
-VRES0700 = -2.6 4.69 -1.25 1.25 -0.255 -0.125 
-VRES0900 = -0.823 0.941 -1.15 -0.7 0.502 1.01
-
-#deltaXcoarse = 4096e-3 #level 0
-deltaXcoarse = 2.048 #level 0
-deltaXfine = 1e-3 #level 11
-
-
-refineDistance = 0.3
-
-restartStep = 1
-restartStepStart = 100
-
-outTime = 1
-endTime = 10
-
-logToFile = false
-
-porousTralingEdge = false
-
-thinWall = false
-
-testBox=false
-
-nupsStep = 1 1 10000000
\ No newline at end of file
diff --git a/apps/cpu/mpi_benchmark/CMakeLists.txt b/apps/cpu/mpi_benchmark/CMakeLists.txt
deleted file mode 100644
index 05bc1f64a91adb4477b9bf552f31cfafa18381d9..0000000000000000000000000000000000000000
--- a/apps/cpu/mpi_benchmark/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(mpib)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(mpib BINARY)
diff --git a/apps/cpu/mpi_benchmark/mpib.cfg b/apps/cpu/mpi_benchmark/mpib.cfg
deleted file mode 100644
index dabc02c8d885d83daf1dd6f19690b721a96e262f..0000000000000000000000000000000000000000
--- a/apps/cpu/mpi_benchmark/mpib.cfg
+++ /dev/null
@@ -1,13 +0,0 @@
-pathOut = d:/temp/mpib
-output = true
-numOfThreads = 4
-availMem = 3e9
-blockNx = 8 8 8
-logToFile = false
-oneD = true
-priorityQueue = false
-cpStep = 20
-restart = flase
-restartStep = 200
-nupsStep = 10 10 100
-endTime = 10
\ No newline at end of file
diff --git a/apps/cpu/mpi_benchmark/mpib.cpp b/apps/cpu/mpi_benchmark/mpib.cpp
deleted file mode 100644
index 118e51c975d544637497acf9fc2e0220ee7f142f..0000000000000000000000000000000000000000
--- a/apps/cpu/mpi_benchmark/mpib.cpp
+++ /dev/null
@@ -1,277 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "VirtualFluids.h"
-
-using namespace std;
-
-
-void run(string configname)
-{
-   SPtr<Communicator> comm = MPICommunicator::getInstance();
-   int myid = comm->getProcessID();
-
-   // Get the name of the processor
-   char machinename[MPI_MAX_PROCESSOR_NAME];
-   int name_len;
-   MPI_Get_processor_name(machinename, &name_len);
-
-   try
-   {
-      //UbLog::reportingLevel() = UbLog::logLevelFromString("DEBUG5");
-
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathOut = config.getString("pathOut");
-      double          endTime = config.getDouble("endTime");
-      int             numOfThreads = config.getInt("numOfThreads");
-      vector<int>     blockNx = config.getVector<int>("blockNx");
-      double          availMem = config.getDouble("availMem");
-      bool            logToFile = config.getBool("logToFile");
-      bool            oneD = config.getBool("oneD");
-      bool            output = config.getBool("output");
-      vector<double>  nupsStep = config.getVector<double>("nupsStep");
-      bool            priorityQueue = config.getBool("priorityQueue");
-      bool            restart = config.getBool("restart");
-      double          restartStep = config.getDouble("restartStep");
-      double          cpStep = config.getDouble("cpStep");
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid==0)
-         {
-            const char* str = pathOut.c_str();
-            mkdir(str, S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH);
-         }
-#endif 
-
-         if (myid==0)
-         {
-            stringstream logFilename;
-            logFilename<<pathOut+"/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "MPI benchmark");
-         UBLOG(logINFO, "1. PID = "<<myid<<" host name: "<<machinename);
-         UBLOG(logINFO, "1. PID = "<<myid<<" Number of processes = "<<comm->getNumberOfProcesses());
-         UBLOG(logINFO, "1. PID = "<<myid<<" Number of threads = "<<numOfThreads);
-         UBLOG(logINFO, "1. PID = "<<myid<<" Total Physical Memory (RAM): "<<Utilities::getTotalPhysMem()/1073741824.0<<" GB");
-         UBLOG(logINFO, "1. PID = "<<myid<<" Physical Memory currently used: "<<Utilities::getPhysMemUsed()/1073741824.0<<" GB");
-         UBLOG(logINFO, "1. PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-
-      }
-
-      LBMReal uLB = 0.05;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal nueLB = 0.05842;
-      
-      SPtr<Grid3D> grid(new Grid3D(comm));
-      
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<UbScheduler> rSch(new UbScheduler(cpStep,cpStep));
-      MPIIORestartCoProcessor rcp(grid, rSch, pathOut, comm);
-
-      if (restart)
-      {
-         rcp.restart((int)restartStep);
-      }
-      else
-      {
-         double dx = 1;
-         double g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3;
-         double factor = 1.0;
-
-         if (oneD)
-         {
-            factor = comm->getNumberOfProcesses() * numOfThreads;
-            g_minX1 = 0;
-            g_minX2 = 0;
-            g_minX3 = 0;
-
-            g_maxX1 = blockNx[0]*2.0 * factor;
-            g_maxX2 = blockNx[1]*2.0;
-            g_maxX3 = blockNx[2]*2.0;
-         }
-         else
-         {
-            factor = pow(comm->getNumberOfProcesses() * numOfThreads, 1.0/3.0);
-            g_minX1 = 0;
-            g_minX2 = 0;
-            g_minX3 = 0;
-
-            g_maxX1 = blockNx[0]*2.0 * factor;
-            g_maxX2 = blockNx[1]*2.0 * factor;
-            g_maxX3 = blockNx[2]*2.0 * factor;
-         }
-
-         SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-         grid->setDeltaX(dx);
-         grid->setBlockNX(blockNx[0], blockNx[1], blockNx[2]);
-
-         SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid==0&&output) GbSystem3D::writeGeoObject(gridCube.get(), pathOut+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         //grid->setPeriodicX1(true);
-         //grid->setPeriodicX2(true);
-         //grid->setPeriodicX3(true);
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "//////////////////////////////////////////////////////////////////////////");
-            UBLOG(logINFO, "2. PID = "<<myid<<" Total Physical Memory (RAM): "<<Utilities::getTotalPhysMem()/1073741824.0<<" GB");
-            UBLOG(logINFO, "2. PID = "<<myid<<" Physical Memory currently used: "<<Utilities::getPhysMemUsed()/1073741824.0<<" GB");
-            UBLOG(logINFO, "2. PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-            UBLOG(logINFO, "//////////////////////////////////////////////////////////////////////////");
-         }
-
-         if (priorityQueue)
-         {
-            if (myid==0) UBLOG(logINFO, "MetisPartitioningGridVisitor:start");
-            MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW);
-            grid->accept(metisVisitor);
-            if (myid==0) UBLOG(logINFO, "MetisPartitioningGridVisitor:end");
-
-            //domain decomposition for threads
-            if (myid==0) UBLOG(logINFO, "PQueuePartitioningGridVisitor:start");
-            PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-            grid->accept(pqPartVisitor);
-            if (myid==0) UBLOG(logINFO, "PQueuePartitioningGridVisitor:end");
-         }
-         else
-         {
-            if (myid==0) UBLOG(logINFO, "MetisPartitioningGridVisitor:start");
-            MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY, true, numOfThreads);
-            grid->accept(metisVisitor);
-            if (myid==0) UBLOG(logINFO, "MetisPartitioningGridVisitor:end");
-         }
-
-
-         if (output)
-         {
-            WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppblocks.process(0);
-         }
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blockNx[0])* (blockNx[1])* (blockNx[2]);
-         unsigned long nod = nob * (blockNx[0])* (blockNx[1])* (blockNx[2]);
-         unsigned long nodg = nob * (blockNx[0]+gl) * (blockNx[1]+gl) * (blockNx[2]+gl);
-         double needMemAll = double(nodg*(27*sizeof(double)+sizeof(int)+sizeof(float)*4));
-         double needMem = needMemAll/double(comm->getNumberOfProcesses());
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "//////////////////////////////////////////////////////////////////////////");
-            UBLOG(logINFO, "Setup information:");
-            UBLOG(logINFO, "Size of block = "<<blockNx[0]<<" x "<<blockNx[1]<<" x "<<blockNx[2]<<" nodes");
-            UBLOG(logINFO, "Size of domain = "<<g_maxX1<<" x "<<g_maxX2<<" x "<<g_maxX3<<" dx ");
-            UBLOG(logINFO, "Number of blocks = "<<nob);
-            UBLOG(logINFO, "Number of nodes  = "<<nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level "<<level<<" = "<<nob);
-               UBLOG(logINFO, "Number of nodes for level "<<level<<" = "<<nob*nodb);
-            }
-            UBLOG(logINFO, "//////////////////////////////////////////////////////////////////////////");
-            UBLOG(logINFO, "Necessary memory  = "<<needMemAll/1073741824.0<<" GB");
-            UBLOG(logINFO, "Necessary memory per process = "<<needMem/1073741824.0<<" GB");
-            UBLOG(logINFO, "Available memory per process = "<<availMem/1073741824.0<<" GB");
-            UBLOG(logINFO, "//////////////////////////////////////////////////////////////////////////");
-         }
-
-         SPtr<LBMKernel> kernel;
-         kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel(blockNx[0], blockNx[1], blockNx[2], IncompressibleCumulantLBMKernel::NORMAL));
-
-         SPtr<BCProcessor> bcProc(new BCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         //initialization of distributions
-         InitDistributionsBlockVisitor initVisitor(nueLB, rhoLB);
-         initVisitor.setVx1(uLB);
-         grid->accept(initVisitor);
-      }
-
-      //set connectors
-      if (myid==0) UBLOG(logINFO, "SetConnectorsBlockVisitor:start");
-      InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-      SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-      grid->accept(setConnsVisitor);
-      if (myid==0) UBLOG(logINFO, "SetConnectorsBlockVisitor:end");
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-
-      SPtr<UbScheduler> visSch(new UbScheduler(500, 500));
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "//////////////////////////////////////////////////////////////////////////");
-         UBLOG(logINFO, "System information:");
-         UBLOG(logINFO, "Total Physical Memory (RAM): "<<Utilities::getTotalPhysMem()/1073741824.0<<" GB");
-         UBLOG(logINFO, "Physical Memory currently used: "<<Utilities::getPhysMemUsed()/1073741824.0<<" GB");
-         UBLOG(logINFO, "Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-         UBLOG(logINFO, "//////////////////////////////////////////////////////////////////////////");
-      }
-
-      const SPtr<ConcreteCalculatorFactory> calculatorFactory = std::make_shared<ConcreteCalculatorFactory>(visSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, calculatorFactory, CalculatorType::MPI));
-      if (myid==0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid==0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (std::exception& e)
-   {
-      cerr<<"PID = "<<myid<<" host name: "<<machinename<<endl<<flush;
-      cerr<<e.what()<<endl<<flush<<
-         boost::current_exception_diagnostic_information();
-   }
-   catch (std::string& s)
-   {
-      cerr<<s<<endl<<boost::current_exception_diagnostic_information();
-   }
-   catch (...)
-   {
-      cerr<<"unknown exception"<<endl<<
-         boost::current_exception_diagnostic_information();
-   }
-}
-
-int main(int argc, char* argv[])
-{
-
-   if (argv!=NULL)
-   {
-      if (argv[1]!=NULL)
-      {
-         run(string(argv[1]));
-         UBLOG(logINFO, "run end");
-      }
-      else
-      {
-         cout<<"Configuration file must be set!: "<<argv[0]<<" <config file>"<<endl<<std::flush;
-      }
-   }
-
-   return 0;
-}
-
-
-
diff --git a/apps/cpu/mpi_benchmark/startJobPhoenix.slrm b/apps/cpu/mpi_benchmark/startJobPhoenix.slrm
deleted file mode 100644
index b93a2c1006cc49fbcf1667d62d2255766d257c14..0000000000000000000000000000000000000000
--- a/apps/cpu/mpi_benchmark/startJobPhoenix.slrm
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-#SBATCH -J vfb
-#SBATCH --ntasks=1
-##SBATCH --ntasks-per-node=10
-##SBATCH --threads-per-core=1
-##SBATCH --mem-per-cpu=3000
-#SBATCH --time=20:00:00 
-
-module load lib/boost/1.63.0/intel
-module load mpi/intelmpi/2017.2.174
-module load intel-studio-2017
-
-#set OMP_NUM_THREADS=20
-
-APP=./sscaling
-THREADS=1
-
-mpiexec $APP $THREADS 
-#mpiexec hostname
diff --git a/apps/cpu/mpi_benchmark/startMPIB.pbs b/apps/cpu/mpi_benchmark/startMPIB.pbs
deleted file mode 100644
index 534f63f200059a4ef3e04598df1527adcf2b0c12..0000000000000000000000000000000000000000
--- a/apps/cpu/mpi_benchmark/startMPIB.pbs
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-#PBS -A nii00092
-#PBS -N mpib
-#PBS -j oe
-#PBS -l nodes=1:ppn=20
-#PBS -l walltime=0:30:00
-##PBS -l feature=mpp2
-#PBS -l feature=mpp2:test
-
-cd $PBS_O_WORKDIR
-
-APP=./sscaling
-THREADS=1
-
-#aprun -n 6000 -N 20 -d 1 -j 1 -cc none $APP $THREADS
-aprun -n 20 -N 20 -d 1 -j 1 -cc none $APP $THREADS
-
diff --git a/apps/cpu/musis/CMakeLists.txt b/apps/cpu/musis/CMakeLists.txt
deleted file mode 100644
index ed82e04c1f63994b4eaf6b18ba2964da0bfdf071..0000000000000000000000000000000000000000
--- a/apps/cpu/musis/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(musis)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(musis BINARY)
diff --git a/apps/cpu/musis/config.txt b/apps/cpu/musis/config.txt
deleted file mode 100644
index 023b077a150c7535b7afc3a9e09e359b87bea218..0000000000000000000000000000000000000000
--- a/apps/cpu/musis/config.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-#number of threads
-numOfThreads = 1
-
-#block dimensions
-blocknx1 = 12
-blocknx2 = 12
-blocknx3 = 12
-
-#grid refinement
-refineLevel = 2
-numBaseBlock_L1 = 1
-
-#physical length
-L1 = 0.07
-L2 = 0.07
-L3 = 0.4169
-
-#material parameter
-nueLB = 0.0016666666667
-
-#Forcing
-ForcingX1 = 1.0e-7
-
-path = "J:/TBL/scratch/C100_DrySampleTest/"
-
-# musis sample
-geoFile = "J:/TBL/TBL_Sw_Geos/C100/C100MulTest.geo.00000000.raw"
-geoDimX1 = 78
-geoDimX2 = 78
-geoDimX3 = 45
-
-#paraview visualization
-outTime = 1.0
-endTime = 7.0
-
-#retart parameters
-restartDump = 3.0
-
-#data measurement
-calcBegin = 500.0
-calcEnd	 = 1000.0
-calcIntervall = 50.0
-
-
-#BGK=0, CLB=1, CCLB=2
-kernel = 2
\ No newline at end of file
diff --git a/apps/cpu/musis/musis.cpp b/apps/cpu/musis/musis.cpp
deleted file mode 100644
index 09bb95f862c8df85a389975838032fac417d7f0d..0000000000000000000000000000000000000000
--- a/apps/cpu/musis/musis.cpp
+++ /dev/null
@@ -1,474 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <vfluids.h>
-
-using namespace std;
-
-
-void run(const char *cstr1, const char *cstr2)
-{
-   
-   try
-   {
-      ConfigFileReader cf(cstr1);
-      if ( !cf.read() )
-      {
-         std::string exceptionText = "Unable to read configuration file\n";
-         throw exceptionText;
-      }
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname = cf.getValue("path"); 
-      int numOfThreads = UbSystem::stringTo<int>(cf.getValue("numOfThreads"));
-      double availMem = 0;
-      string geoFile;
-
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-
-      int d1, d2, d3; // for reading musis sample 
-
-      if(machine == "BOMBADIL") 
-      //if(machine == "YWANG")
-      {
-         //pathname = "J:/TBL/scratch/C100_DrySampleTest/";
-         //geoFile  = "J:/TBL/TBL_Sw_Geos/CS518/TBL_CS518_MulSim02.geo.00000000.raw";
-         pathname = cf.getValue("path"); 
-         geoFile  = cf.getValue("geoFile"); 
-         numOfThreads = UbSystem::stringTo<int>(cf.getValue("numOfThreads"));
-         
-         availMem = 3.0e9;
-         d1 = UbSystem::stringTo<int>(cf.getValue("geoDimX1"));;
-         d2 = UbSystem::stringTo<int>(cf.getValue("geoDimX2"));;
-         d3 = UbSystem::stringTo<int>(cf.getValue("geoDimX3"));;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         //pathname = "/hpc3lustre/work/wang/TBL/scratch/CS518_DrySampleTest/";
-         //geoFile = "/hpc3lustre/work/wang/TBL/TBL_Sw_Geos/CS518.X2Y2Z1/TBL_CS518_MulSim02.geo.00030000.raw";
-         //numOfThreads = 1;
-         pathname = cf.getValue("path"); 
-         geoFile  = cf.getValue("geoFile"); 
-         numOfThreads = UbSystem::stringTo<int>(cf.getValue("numOfThreads"));
-         availMem = 12.0e9;
-
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-         d1 = UbSystem::stringTo<int>(cf.getValue("geoDimX1"));;
-         d2 = UbSystem::stringTo<int>(cf.getValue("geoDimX2"));;
-         d3 = UbSystem::stringTo<int>(cf.getValue("geoDimX3"));;
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-      
-      const int baseLevel = 0;
-      const int refineLevel = UbSystem::stringTo<int>(cf.getValue("refineLevel"));//2;
-      const int blocknx1    = UbSystem::stringTo<int>(cf.getValue("blocknx1"));//12; 
-      const int blocknx2    = UbSystem::stringTo<int>(cf.getValue("blocknx1"));//12;
-      const int blocknx3    = UbSystem::stringTo<int>(cf.getValue("blocknx1"));//12;
-
-      const int numBaseBlockL1 = UbSystem::stringTo<int>(cf.getValue("numBaseBlock_L1"));//1;
-      ////////////////////////////////////////////////////////////////////////////
-      //// Geometrie
-      ////////////////////////////////////////////////////////////////////////////
-      double L1 = UbSystem::stringTo<double>(cf.getValue("L1"));//0.07; //m
-      double L2 = UbSystem::stringTo<double>(cf.getValue("L2"));//0.07; //m
-      double L3 = UbSystem::stringTo<double>(cf.getValue("L3"));//0.0379 + 0.379; //m
-      double dx = L1/(blocknx1*numBaseBlockL1)/(pow(2.0,refineLevel)); //0.0379/272.0; //m
-
-      LBMReal rhoReal = 1.0; //kg/m^3
-      LBMReal uReal = 5.0;  //m/s
-      LBMReal uLB = 0.1;
-      LBMReal nueLB = UbSystem::stringTo<double>(cf.getValue("nueLB"));//0.00166666666667;
-      LBMReal Re = 0.0;
-      LBMReal rhoLB = 0.0;
-
-      //LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter(1.0, 1/sqrt(3.0)*(uReal/uLB), 1.0, 1.0/dx, dx*dx*dx));
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-      
-      //bounding box
-      double d_minX1 = 0.0;
-      double d_minX2 = 0.0;
-      double d_minX3 = 0.0;
-
-      double d_maxX1 = L1;
-      double d_maxX2 = L2;
-      double d_maxX3 = L3;
-
-      double offs = 0.0;
-
-      double g_minX1 = d_minX1-offs;
-      double g_minX2 = d_minX2-offs;;
-      double g_minX3 = d_minX3-offs;
-
-      double g_maxX1 = d_maxX1+offs;
-      double g_maxX2 = d_maxX2+offs;
-      double g_maxX3 = d_maxX3+offs;
-
-      double blockLength = blocknx1 * dx;
-
-      Grid3DPtr grid(new Grid3D(comm));
-      grid->setPeriodicX1(true);
-      grid->setPeriodicX2(true);
-      grid->setPeriodicX3(false);
-      grid->setDeltaX(pow(2.0,refineLevel)*dx); // for coarse
-      grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-      double restartDump = UbSystem::stringTo<double>(cf.getValue("restartDump"));
-      UbSchedulerPtr rSch(new UbScheduler(restartDump));
-      RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY));
-      //UbSchedulerPtr emSch(new UbScheduler(1000, 1000));
-      //EmergencyExitPostprocessor em(grid, emSch, pathname+"/checkpoints/emex.txt", rp, comm);
-
-      std::string opt;
-      if(cstr2!= NULL)
-         opt = std::string(cstr2);
-
-      LBMKernel3DPtr kernel;
-      double ForcingX1 = UbSystem::stringTo<double>(cf.getValue("ForcingX1"));
-
-      mu::Parser fctForcingX1;
-      mu::Parser fctForcingX2;
-      mu::Parser fctForcingX3;
-
-      fctForcingX2.SetExpr("0.0");
-      fctForcingX3.SetExpr("0.0");
-      fctForcingX1.SetExpr("c3*(tanh(c1*(x3-c2))+c4)*Fx1*dx");
-      //fctForcingX1.SetExpr("Fx1*dx");
-      fctForcingX1.DefineConst("Fx1", ForcingX1);
-      fctForcingX1.DefineConst("c1", 0.5);       // incline
-      double ForcingLevel = 0.039/dx;
-      fctForcingX1.DefineConst("c2", ForcingLevel); // forcing switch level
-      fctForcingX1.DefineConst("c3", 0.5); // const always
-      fctForcingX1.DefineConst("c4", 1.0); // const always
-      if(myid == 0) UBLOG(logINFO,"Forcing Level = " << ForcingLevel );
-
-      if(cstr2!= NULL)
-      {
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-         grid = rp->restart(UbSystem::stringTo<int>(opt));
-         //rp->reconnect(grid);
-
-         //Forcing setzen falls nötig
-         SetForcingBlockVisitor forcingVisitor(fctForcingX1,fctForcingX2,fctForcingX3);
-         grid->accept(forcingVisitor); 
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         ////domain decomposition //useful if pro mpi processor contains more than 1 thread 
-         //PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         //grid->accept(pqPartVisitor);
-
-         //int option = 0;
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, option));
-
-
-        
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"L = " << L1/dx );
-            UBLOG(logINFO,"v = " << uLB );
-            UBLOG(logINFO,"rho = " << rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-            UBLOG(logINFO,"Re = " << Re );
-            UBLOG(logINFO,"dx = " << dx );
-            //UBLOG(logINFO,conv->toString() );
-            UBLOG(logINFO,"number of levels = " << refineLevel+1 );
-            UBLOG(logINFO,"numOfThreads = " << numOfThreads );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-         // read musis geometry 
-         //if(myid ==0) UBLOG(logINFO,"Read geometry: start");
-         //GbVoxelMatrix3DPtr vmatrix(new GbVoxelMatrix3D(d1, d2, d3, float(GbVoxelMatrix3D::FLUID),8.0,8.0)); 
-
-         //vmatrix->readMatrixFromRawFile<char>(geoFile);
-         //if(myid ==0) UBLOG(logINFO,"Read geometry: end");
-
-         //vmatrix->setVoxelMatrixDelta(L1/(d1-1),L1/(d1-1),L1/(d1-1));
-
-         //if(myid ==0) UBLOG(logINFO,"Write geometry: start");
-         //if(myid == 0) vmatrix->writeToLegacyVTK(pathname+"/geo/geo");
-         //if(myid ==0) UBLOG(logINFO,"Write geometry: end");
-         
-         // domain
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-         //refinement area
-         GbObject3DPtr refineCube1(new  GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3+8.0*0.0379));
-         if(myid ==0) GbSystem3D::writeGeoObject(refineCube1.get(),pathname + "/geo/refineCube1", WbWriterVtkXmlBinary::getInstance());
-         GbObject3DPtr refineCube2(new  GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3+4.0*0.0379));
-         if(myid ==0) GbSystem3D::writeGeoObject(refineCube2.get(),pathname + "/geo/refineCube2", WbWriterVtkXmlBinary::getInstance());
-
-         // walls
-         GbCuboid3DPtr addWallZmin (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-         GbCuboid3DPtr addWallZmax (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-         
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");   
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(refineCube1, refineLevel-1);
-            refineHelper.addGbObject(refineCube2, refineLevel);
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");   
-         }
-         
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-         grid->accept( metisVisitor );
-
-         SolidBlocksHelper sd(grid, comm);
-
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bc_noslip(new D3Q27NoSlipBCAdapter(bbOption));
-         D3Q27BoundaryConditionAdapterPtr bc_slip(new D3Q27SlipBCAdapter(bbOption));
-         // porous geometry
-         //D3Q27InteractorPtr geoInt = D3Q27InteractorPtr ( new D3Q27Interactor(vmatrix, grid, bc_noslip,Interactor3D::SOLID));
-
-         //mu::Parser fct; 
-         //fct.DefineConst("U", uLB);//Vx
-         //fct.SetExpr("U"); 
-         
-         //D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST)); 
-
-         //walls
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bc_noslip,Interactor3D::SOLID));
-         ////up velocity
-         //D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, velBCAdapter,Interactor3D::SOLID)); 
-         //up slip
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bc_slip  ,Interactor3D::SOLID));
-         
-         //sd.addInteractor(geoInt);
-         sd.addInteractor(addWallZminInt);
-         sd.addInteractor(addWallZmaxInt);
-      
-         sd.deleteSolidBlocks();
-
-         grid->accept( metisVisitor );
-
-
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx1) * (blocknx2) * (blocknx3);
-         unsigned long nod = nob * (blocknx1) * (blocknx2) * (blocknx3);
-         unsigned long nodg = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-         double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for(int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO,"Number of blocks for level " << level <<" = " << nobl);
-               UBLOG(logINFO,"Number of nodes for level " << level <<" = " << nobl*nodb);
-            }
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-
-         }            
-
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27BGK(blocknx1, blocknx2, blocknx3, true));
-         //option = 0 - ohne param., option = 1 - mit param.
-         //int option = 0;
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, option));
-         
-
-         int kernelType = UbSystem::stringTo<int>(cf.getValue("kernel"));
-         LBMKernel3DPtr kernel;
-         if (kernelType == 0)
-         {
-            rhoLB = 1.0;
-            kernel = LBMKernel3DPtr(new LBMKernelETD3Q27BGK(blocknx1, blocknx2, blocknx3, true));
-         }
-         else if (kernelType == 1)
-         {
-            rhoLB = 1.0;
-            kernel = LBMKernel3DPtr(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-         }
-         else if (kernelType == 2)
-         {
-            rhoLB = 0.0;
-            kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, 0));
-            //kernel = LBMKernel3DPtr(new LBMKernelESD3Q27CCLB(blocknx1, blocknx2, blocknx3, grid));
-            //kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLBex(blocknx1, blocknx2, blocknx3, 0, grid));
-         }
-         
-         kernel->setForcingX1(fctForcingX1);
-         kernel->setForcingX2(fctForcingX2);
-         kernel->setForcingX3(fctForcingX3);
-         kernel->setWithForcing(true);
-         
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         mu::Parser fctnueLB;
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-      //   //walls
-         grid->addAndInitInteractor(addWallZminInt);
-         grid->addAndInitInteractor(addWallZmaxInt);
-         // porous geometry
-         //grid->addAndInitInteractor(geoInt);
-
-         //initialization of distributions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(rhoLB);
-         //initVisitor.setVx1(0.0);
-         grid->accept(initVisitor);
-
-         ////Postrozess - Measurement
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, comm, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-
-         //if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-      }
-      
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double calcBegin = UbSystem::stringTo<double>(cf.getValue("calcBegin"));//0.07; //m
-      double calcEnd = UbSystem::stringTo<double>(cf.getValue("calcEnd"));//0.07; //m
-      double calcIntervall = UbSystem::stringTo<double>(cf.getValue("calcIntervall"));//0.0379 + 0.379; //m
-      
-      /*UbSchedulerPtr TBL_Sch(new UbScheduler(calcIntervall,calcBegin,calcEnd));
-      UbSchedulerPtr TBL_rSch(new UbScheduler(100000));
-      TurbulentStrengthSurfaceRoughnessPostprocessor TBLpp(grid,pathname +"/results/TBL", TBL_Sch,TBL_rSch,comm);
-      */
-
-      double outTime = UbSystem::stringTo<double>(cf.getValue("outTime"));
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname + "/steps/step", WbWriterVtkXmlASCII::getInstance(), conv, comm);
-
-      double fdx = grid->getDeltaX(grid->getFinestInitializedLevel());
-
-      //D3Q27IntegrateValuesHelperPtr h1(new D3Q27IntegrateValuesHelper(grid, comm, 
-      //   g_minX1, g_minX2, g_minX3, 
-      //   g_minX1+1.0*fdx, g_maxX2, g_maxX3));
-      ////if(myid ==0) GbSystem3D::writeGeoObject(h1->getBoundingBox().get(),pathname + "/geo/iv1", WbWriterVtkXmlBinary::getInstance());
-      //D3Q27IntegrateValuesHelperPtr h2(new D3Q27IntegrateValuesHelper(grid, comm, 
-      //   g_maxX1-1.0*fdx, g_minX2, g_minX3, 
-      //   g_maxX1, g_maxX2, g_maxX3));
-      ////if(myid ==0) GbSystem3D::writeGeoObject(h2->getBoundingBox().get(),pathname + "/geo/iv2", WbWriterVtkXmlBinary::getInstance());
-      //LBMReal rhoReal = rhoLB;
-      //LBMReal uReal = uLB; 
-      //D3Q27PressureDifferencePostprocessor rhopp(grid, stepSch, pathname + "/results/rho_diff.txt", h1, h2, rhoReal, uReal, uLB, comm);
-
-      //UbSchedulerPtr resSch(new UbScheduler(1000,10000,10000));
-      //UbSchedulerPtr visSch(new UbScheduler(1,0,1));         
-      //AverageValuesPostprocessor TBLpp(grid, pathname + "/results/AvVelocity", WbWriterVtkXmlBinary::getInstance(), visSch, resSch, comm); 
-
-
-      double endTime = UbSystem::stringTo<double>(cf.getValue("endTime"));;//10001.0;
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-      //
-      //double point1[3] = {0.45, 0.20, 0.205};
-      //double point2[3] = {0.55, 0.20, 0.205};
-      //D3Q27IntegrateValuesHelperPtr h1(new D3Q27IntegrateValuesHelper(grid, comm, 
-      //   point1[0]-1.0*fdx, point1[1]-1.0*fdx, point1[2]-1.0*fdx, 
-      //   point1[0], point1[1], point1[2]));
-      //if(myid ==0) GbSystem3D::writeGeoObject(h1->getBoundingBox().get(),pathname + "/geo/iv1", WbWriterVtkXmlBinary::getInstance());
-      //D3Q27IntegrateValuesHelperPtr h2(new D3Q27IntegrateValuesHelper(grid, comm, 
-      //   point2[0], point2[1]-1.0*fdx, point2[2]-1.0*fdx, 
-      //   point2[0]+1.0*fdx, point2[1], point2[2]));
-      //if(myid ==0) GbSystem3D::writeGeoObject(h2->getBoundingBox().get(),pathname + "/geo/iv2", WbWriterVtkXmlBinary::getInstance());
-      ////D3Q27PressureDifferencePostprocessor rhopp(grid, visSch, pathname + "/results/rho_diff.txt", h1, h2, conv, comm);
-      //D3Q27PressureDifferencePostprocessor rhopp(grid, visSch, pathname + "/results/rho_diff.txt", h1, h2, rhoReal, uReal, uLB, comm);
-      //
-      //double area = 2.0*radius*H;
-      //double v    = 4.0*uLB/9.0;
-      //D3Q27ForcesPostprocessor fp(grid, visSch, pathname + "/results/forces.txt", comm, rhoLB, v, area, D3Q27ForcesPostprocessor::X, D3Q27ForcesPostprocessor::Y);
-      //fp.addInteractor(cylinderInt);
-      //
-      //UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 40));
-      //NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      //double endTime = 40001.0;
-      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      //if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      //calculation->calculate();
-      //if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-   if ( argv != NULL )
-   {
-      if (argc > 1)
-      {
-         run(argv[1], argv[2]);
-      }
-      else
-      {
-         cout << "Configuration file must be set!: " <<  argv[0] << " <config file>" << endl << std::flush;
-      }
-   }
-
-   return 0;
- 
-}
-
-
-
-
diff --git a/apps/cpu/pChannel/CMakeLists.txt b/apps/cpu/pChannel/CMakeLists.txt
deleted file mode 100644
index c39cc238bb757edcfd5ebae5b6f4c6f05ef2dae7..0000000000000000000000000000000000000000
--- a/apps/cpu/pChannel/CMakeLists.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-#FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-#                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-#                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-#SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-#SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-#SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluidsCore VirtualFluidsBasic)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-#CREATE_CAB_PROJECT(pchannel BINARY)
-vf_add_library(BUILDTYPE binary DEPENDS VirtualFluidsCore VirtualFluidsBasic FILES pChannel.cpp)
diff --git a/apps/cpu/pChannel/configBombadilpChannel.cfg b/apps/cpu/pChannel/configBombadilpChannel.cfg
deleted file mode 100644
index b71aea0f6299dcd0c12bcb2c1d181771a892c895..0000000000000000000000000000000000000000
--- a/apps/cpu/pChannel/configBombadilpChannel.cfg
+++ /dev/null
@@ -1,107 +0,0 @@
-#
-#Simulation parameters for porous channel
-#
-
-pathOut = d:/temp/ChannelFlow
-pathGeo = d:/Projects/SFB880/GeometrienPoroeseMedien/isotrop/PA80-110
-numOfThreads = 4
-availMem = 14e9
-logToFile = false
-
-#porous media
-#rawFile = false
-sampleFilename = PA80-110_275x267x254_1mm.vti  
-#sampleFilename = PA80-110_1096x1062x254_4x4x1mm.vti
-#sampleFilename = PA80-110_1096x1327x303.vti  
-#writeSample = true
-
-rawFile = false
-#sampleFilename = PA80-110_1096x1327x1265.raw
-#sampleFilename = PA80-110_1096x1327x423.vti
-#sampleFilename = PA80-110_1096x1327x216.vti  
-#sampleFilename = PA80-110_1096x1327x303.vti  
-writeSample = false
-
-#diminsions [voxel]
-pmNX = 275 267 254
-#pmNX = 1096  1327  1265
-#pmNX = 1096 1327 216
-#pmNX = 1096 1062 254
-
-#threshold
-lthreshold = 29041
-uthreshold = 65535
-
-#deltas
-voxelDeltaX = 3.6496350365e-6 3.76789751319e-6 3.95256916996e-6
-
-#diminsions [m]
-#pmL = 7.299270073e-4 7.53579502638e-4 7.90513833992e-4
-
-#grid
-# deltax = 0.0000144
-# blocknx = 32 20 20
-
-#diminsions [m]
-#pmL = 4e-3 5e-3 5e-3
-#pmL = 4e-3 5e-3 1.67e-3
-#pmL = 4e-3 5e-3 0.85e-3
-
-#letzte
-#pmL = 4e-3 5e-3 1.19e-3
-
-#pmL = 4e-3 0.5e-3 1e-3
-
-pmL = 1e-3 1e-3 1e-3
-#pmL = 4e-3 4e-3 1e-3
-
-#grid
-refineLevel = 0
-#deltaXfine  = 10e-6
-
-
-#deltaXfine  = 20e-6
-deltaXfine  = 80e-6 #level 2
-
-
-
-blocknx = 10 10 10
-
-thinWall = false
-changeQs = false
-
-#channelHigh = 0.002
-
-#DLR-F15
-#channelHigh = 0.017
-channelHigh = 0.008
-#NACA 0012
-#channelHigh = 0.008
-
-#channelHigh = 0.005
-
-boundingBox = 0 0 0 0.024 0.008 0.009 
- 
-#physic
-# for DLRF-15 Re = 102000/2
-Re = 25000
-#real velocity is 54.95 m/s
-u_LB = 0.1
-
-newStart = true
-restartStep = 230000
-
-cpStep = 100
-cpStart = 100
-
-averaging = false
-averagingReset = false
-timeAvStart = 21000000
-timeAvStop = 2100010000
-
-outTime = 100
-endTime = 230000
-
- 
-nupsStep = 10 10 10000000 
-
diff --git a/apps/cpu/pChannel/configHLRNpChannel.cfg b/apps/cpu/pChannel/configHLRNpChannel.cfg
deleted file mode 100644
index 03bcfb431c60b491c7ccf2c8da2dfd1536c3c4da..0000000000000000000000000000000000000000
--- a/apps/cpu/pChannel/configHLRNpChannel.cfg
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-#Simulation parameters for porous channel
-#
-
-pathname = /gfs2/work/niikonst/scratch/pChannel2
-pathGeo = /gfs1/work/niikonst/data/materials
-numOfThreads = 24
-availMem = 128e9
-logToFile = true
-
-#porous media
-rawFile = false
-#sampleFilename = /PA80-110_1096x1327x1265.raw  
-sampleFilename = PA80-110_1096x1327x303.vti  
-writeSample = false
-
-#diminsions [voxel]
-#pmNX = 1096  1327  1265
-pmNX = 1096  1327  303
-
-#threshold
-lthreshold = 29041
-uthreshold = 65535
-
-#deltas
-voxelDeltaX = 3.6496350365e-6 3.76789751319e-6 3.95256916996e-6
-
-#diminsions [m]
-#pmL = 4e-3 5e-3 5e-3
-pmL = 4e-3 5e-3 1.19e-3
-
-#grid
-refineLevel = 2
-deltaXfine = 8.0e-6
-blocknx = 32 40 20
-lengthFactor = 2
-thinWall = true
-
-#DLR-F15
-channelHigh = 0.017
-
-#physic
-# for DLRF-15 Re = 102000/2
-Re = 51000
-#real velocity is 54.95 m/s
-u_LB = 0.1
-
-restartStep = 10000
-restartStepStart=10000
-
-endTime = 80000
-outTime = 10000
-
-nupsStep = 1000 1000 10000000
diff --git a/apps/cpu/pChannel/configLudwigpChannel.cfg b/apps/cpu/pChannel/configLudwigpChannel.cfg
deleted file mode 100644
index 784c4a65cdf3e6c790aa989bfbc4f405292016b8..0000000000000000000000000000000000000000
--- a/apps/cpu/pChannel/configLudwigpChannel.cfg
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-#Simulation parameters for porous channel
-#
-
-pathname = /hpc3lustre/work/koskuche/SFB880/pChannel
-pathGeo = /hpc3lustre/work/koskuche/SFB880/Materials/PA80-110
-numOfThreads = 8
-availMem = 11e9
-logToFile = true
-
-#porous media
-rawFile = false
-#sampleFilename = /PA80-110_1096x1327x1265.raw  
-sampleFilename = PA80-110_1096x1327x303.vti  
-writeSample = false
-
-#diminsions [voxel]
-#pmNX = 1096  1327  1265
-pmNX = 1096  1327  303
-
-#threshold
-lthreshold = 29041
-uthreshold = 65535
-
-#deltas
-voxelDeltaX = 3.6496350365e-6 3.76789751319e-6 3.95256916996e-6
-
-#diminsions [m]
-#pmL = 4e-3 5e-3 5e-3
-pmL = 4e-3 5e-3 1.19e-3
-
-#grid
-refineLevel = 2
-deltaXfine = 8.0e-6
-blocknx = 32 40 20
-lengthFactor = 2
-thinWall = true
-
-#DLR-F15
-channelHigh = 0.017
-
-#physic
-# for DLRF-15 Re = 102000/2
-Re = 51000
-#real velocity is 54.95 m/s
-u_LB = 0.1
-
-restartStep = 10000
-restartStepStart=10000
-
-endTime = 80000
-outTime = 10000
-
diff --git a/apps/cpu/pChannel/pChannel.cpp b/apps/cpu/pChannel/pChannel.cpp
deleted file mode 100644
index b7fb0b443c5cfbfb186300962258ece238b4feb7..0000000000000000000000000000000000000000
--- a/apps/cpu/pChannel/pChannel.cpp
+++ /dev/null
@@ -1,706 +0,0 @@
-#include <iostream>
-#include <string>
-#include "VirtualFluids.h"
-#include <omp.h>
-double rangeRandom(double M, double N)
-{
-   return M + (rand() / (RAND_MAX / (N - M)));
-}
-
-double rangeRandom1()
-{
-   return (2.0*rand())/RAND_MAX - 1.0;
-}
-
-//double rangeRandom(double M, double N)
-//{
-//   return rand() % (int)N+(int)M;
-//}
-
-
-
-//#include <thread>
-
-using namespace std;
-
-std::vector<int> x1Nbr;
-std::vector<int> x2Nbr;
-std::vector<int> x3Nbr;
-
-std::vector<int> x1NbrTemp;
-std::vector<int> x2NbrTemp;
-std::vector<int> x3NbrTemp;
-
-//void findSolidNeighbor(SPtr<GbVoxelMatrix3D> voxelMatrix, int x1, int x2, int x3)
-//{
-//   for (int k3 = -1; k3<=1; k3++)
-//   {
-//      for (int k2 = -1; k2<=1; k2++)
-//      {
-//         for (int k1 = -1; k1<=1; k1++)
-//         {
-//            int j1 = x1+k1;
-//            int j2 = x2+k2;
-//            int j3 = x3+k3;
-//            if (j1>=0&&j1<nodesX1 && j2>=0&&j2<nodesX2 && j3>=0&&j3<nodesX3)
-//            {
-//               if ((*voxelMatrix)(j1, j2, j3)==GbVoxelMatrix3D::FLUID)
-//               {
-//                  if (flagMatrix(j1, j2, j3)==0)
-//                  {
-//                     voxelMatrixTemp(j1, j2, j3) = GbVoxelMatrix3D::SOLID;
-//                     flagMatrix(j1, j2, j3) = 1;
-//                     x1NbrTemp.push_back(j1);
-//                     x2NbrTemp.push_back(j2);
-//                     x3NbrTemp.push_back(j3);
-//                  }
-//               }
-//            }
-//         }
-//      }
-//   }
-//}
-
-void changePorosity(SPtr<GbVoxelMatrix3D> sample, vector<int> pmNX)
-{
-   int minX1 = 0;
-   int minX2 = 0;
-   int minX3 = 0;
-   int maxX1 = pmNX[0];
-   int maxX2 = pmNX[1];
-   int maxX3 = pmNX[2];
-   sample->calculateNumberOfSolidAndFluid();
-   double nSolid = sample->getNumberOfSolid();
-   double nFluid = sample->getNumberOfFluid();
-   double porosityStart = nFluid/(nSolid+nFluid);
-   double porosityEnd = 0.5;
-   double porosityStep = (porosityEnd-porosityStart)/(double)maxX3;
-   double totallSliceVoxel = maxX1*maxX2;
-   vector<int> fluidThreshold;
-
-   SPtr<GbVoxelMatrix3D> sampleTemp = SPtr<GbVoxelMatrix3D>(sample->clone());
-
-   int count=1;
-
-   for (int ix3=minX3; ix3<maxX3; ix3++)
-   {
-      int cFluid = 0;
-      for (int ix2=minX2; ix2<maxX2; ix2++)
-      {
-         for (int ix1=minX1; ix1<maxX1; ix1++)
-         {
-            if ((*sample)(ix1, ix2, ix3) == GbVoxelMatrix3D::FLUID)
-            {
-               cFluid++;
-            }
-         }
-      }
-      double slicePorosity = (double)cFluid/totallSliceVoxel;
-      double porosityPercent = (porosityStep*(double)count)/slicePorosity;
-      fluidThreshold.push_back((totallSliceVoxel-(double)cFluid)*porosityPercent);
-      count++;
-   }
-   int solidCount = 0;
-   count=0;
-
-   for (int ix3=minX3; ix3<maxX3; ix3++)
-   {
-      //while (fluidThreshold[count] > 0)
-      //{
-     // int fTh = fluidThreshold[count];
-
-         int solidCount = 0;
-         for (int ix2=minX2; ix2<maxX2; ix2++)
-         {
-            for (int ix1=minX1; ix1<maxX1; ix1++)
-            {
-               if ((*sample)(ix1, ix2, ix3) == GbVoxelMatrix3D::SOLID)
-               {
-                  bool flagSolid = true;
-                  for (int k3 = -1; k3<=1; k3++)
-                  {
-                     for (int k2 = -1; k2<=1; k2++)
-                     {
-                        for (int k1 = -1; k1<=1; k1++)
-                        {
-                           int j1 = ix1+k1;
-                           int j2 = ix2+k2;
-                           int j3 = ix3;//+k3;
-                           if (j1>=0&&j1<maxX1 && j2>=0&&j2<maxX2 && j3>=0&&j3<maxX3)
-                           {
-                              if ((*sample)(j1, j2, j3) == GbVoxelMatrix3D::FLUID)
-                              {
-                                 flagSolid = flagSolid && false;
-                              }
-                           }
-                        }
-                     }
-                  }
-                  if (!flagSolid)
-                  {
-                     (*sample)(ix1, ix2, ix3)=GbVoxelMatrix3D::FLUID;
-                      fluidThreshold[count]--;
-                     solidCount++;
-                  }
-                  if ( fluidThreshold[count] == 0)
-                  {
-                     ix1=maxX1;
-                     ix2=maxX2;
-                  }
-               }
-            }
-         }
-         UBLOG(logINFO, "count = " << count);
-         UBLOG(logINFO, "fTh = " <<  fluidThreshold[count]);
-         UBLOG(logINFO, "solidCount = " << solidCount);
-         //sample = sampleTemp;
-         //sampleTemp = SPtr<GbVoxelMatrix3D>(sample->clone());
-         
-        count++;     
-      
-       }
-      
-   //}
-   //sampleTemp->writeToLegacyVTKBinary("d:/temp/ChannelFlow/geo/sampleTemp.vtk");
-}
-
-//////////////////////////////////////////////////////////////////////////
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathOut           = config.getValue<string>("pathOut");
-      string          pathGeo           = config.getValue<string>("pathGeo");
-      int             numOfThreads      = config.getValue<int>("numOfThreads");
-      string          sampleFilename    = config.getValue<string>("sampleFilename");
-      vector<int>     pmNX              = config.getVector<int>("pmNX");
-      double          lthreshold        = config.getValue<double>("lthreshold");
-      double          uthreshold        = config.getValue<double>("uthreshold");
-      vector<float>   voxelDeltaX       = config.getVector<float>("voxelDeltaX");
-      vector<int>     blocknx           = config.getVector<int>("blocknx");
-      double          u_LB              = config.getValue<double>("u_LB");
-      double          restartStep       = config.getValue<double>("restartStep");
-      double          cpStep            = config.getValue<double>("cpStep");
-      double          cpStart           = config.getValue<double>("cpStart");
-      double          endTime           = config.getValue<double>("endTime");
-      double          outTime           = config.getValue<double>("outTime");
-      double          availMem          = config.getValue<double>("availMem");
-      bool            rawFile           = config.getValue<bool>("rawFile");
-      bool            logToFile         = config.getValue<bool>("logToFile");
-      bool            writeSample       = config.getValue<bool>("writeSample");
-      vector<double>  pmL               = config.getVector<double>("pmL");
-      double          deltaXfine        = config.getValue<double>("deltaXfine");
-      int             refineLevel       = config.getValue<int>("refineLevel");
-      bool            thinWall          = config.getValue<bool>("thinWall");
-      double          Re                = config.getValue<double>("Re");
-      double          channelHigh       = config.getValue<double>("channelHigh");
-      bool            changeQs          = config.getValue<bool>("changeQs");
-      double          timeAvStart       = config.getValue<double>("timeAvStart");
-      double          timeAvStop        = config.getValue<double>("timeAvStop");
-      bool            averaging         = config.getValue<bool>("averaging");
-      bool            averagingReset    = config.getValue<bool>("averagingReset");
-      bool            newStart          = config.getValue<bool>("newStart");
-      vector<double>  nupsStep          = config.getVector<double>("nupsStep");
-      vector<double>  boundingBox       = config.getVector<double>("boundingBox");
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathOut.c_str();
-            mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if (myid == 0)
-         {
-            stringstream logFilename;
-            logFilename << pathOut + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      //Sleep(30000);
-
-      if (myid == 0) UBLOG(logINFO, "Testcase porous channel");
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      double deltaXcoarse = deltaXfine*(double)(1<<refineLevel);
-
-      LBMReal rho_LB = 0.0;
-      double rhoReal = 1.2041; //(kg/m3)
-      double uReal = 48; //m/s
-      double lReal = 0.008;//m
-      double hLB = lReal / deltaXcoarse;
-      double Ma = 0.13;//Ma-Real!
-      double csReal = uReal / Ma;
-      LBMUnitConverter unitConverter(lReal, csReal, rhoReal, hLB);
-      if (myid==0) UBLOG(logINFO, unitConverter.toString());
-
-      //double coord[6];
-
-      vector<double> origin(3);
-      origin[0] = 0;
-      origin[1] = 0;
-      origin[2] = 0;
-
-      //real velocity is 49.63 m/s
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      //BC adapters
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-
-      SPtr<BCProcessor> bcProc;
-      bcProc = SPtr<BCProcessor>(new BCProcessor());
-
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel());
-
-      mu::Parser fctForcingX1;
-      fctForcingX1.SetExpr("Fx1");
-      fctForcingX1.DefineConst("Fx1", 1.0e-6);
-      kernel->setWithForcing(true);
-
-      kernel->setBCProcessor(bcProc);
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<UbScheduler> rSch(new UbScheduler(cpStep, cpStart));
-      SPtr<MPIIORestartCoProcessor> restartCoProcessor(new MPIIORestartCoProcessor(grid, rSch, pathOut, comm));
-      restartCoProcessor->setLBMKernel(kernel);
-      restartCoProcessor->setBCProcessor(bcProc);
-
-      SPtr<UbScheduler> mSch(new UbScheduler(cpStep, cpStart));
-      SPtr<MPIIOMigrationCoProcessor> migCoProcessor(new MPIIOMigrationCoProcessor(grid, mSch, pathOut+"/mig", comm));
-      migCoProcessor->setLBMKernel(kernel);
-      migCoProcessor->setBCProcessor(bcProc);
-      //////////////////////////////////////////////////////////////////////////
-
-      //bounding box
-      double g_minX1 = boundingBox[0];
-      double g_minX2 = boundingBox[1];
-      double g_minX3 = boundingBox[2];
-
-      double g_maxX1 = boundingBox[3];
-      double g_maxX2 = boundingBox[4];
-      double g_maxX3 = boundingBox[5];
-
-      double blockLength = (double)blocknx[0]*deltaXcoarse;
-
-      double channel_high = channelHigh; // g_maxX3-g_minX3;
-      double channel_high_LB = channel_high/deltaXcoarse;
-      //////////////////////////////////////////////////////////////////////////
-      double nu_LB = (u_LB*channel_high_LB)/Re;
-      //////////////////////////////////////////////////////////////////////////
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "Parameters:");
-         UBLOG(logINFO, "Re                  = " << Re);
-         UBLOG(logINFO, "u_LB                = " << u_LB);
-         UBLOG(logINFO, "rho_LB              = " << rho_LB);
-         UBLOG(logINFO, "nu_LB               = " << nu_LB);
-         UBLOG(logINFO, "dx coarse           = " << deltaXcoarse << " m");
-         UBLOG(logINFO, "dx fine             = " << deltaXfine << " m");
-         UBLOG(logINFO, "channel_high        = " << channel_high << " m");
-         UBLOG(logINFO, "channel_high_LB     = " << channel_high_LB);
-         UBLOG(logINFO, "number of levels    = " << refineLevel + 1);
-         UBLOG(logINFO, "number of processes = " << comm->getNumberOfProcesses());
-         UBLOG(logINFO, "number of threads   = " << numOfThreads);
-         UBLOG(logINFO, "path = " << pathOut);
-         UBLOG(logINFO, "Preprocess - start");
-      }
-
-
-      if (newStart)
-      {
-         if (myid == 0) UBLOG(logINFO, "new start...");
-
-
-
-         grid->setPeriodicX1(true);
-         grid->setPeriodicX2(true);
-         grid->setPeriodicX3(false);
-         grid->setDeltaX(deltaXcoarse);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-
-         SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathOut + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-
-         //////////////////////////////////////////////////////////////////////////
-         //refinement
-         double blockLengthX3Fine = grid->getDeltaX(refineLevel) * blocknx[2];
-         double refHight = 0.002;
-
-         GbCuboid3DPtr refineBoxTop(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3-refHight, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxTop.get(), pathOut + "/geo/refineBoxTop", WbWriterVtkXmlASCII::getInstance());
-
-         //GbCuboid3DPtr refineBoxBottom(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3+offsetMinX3+blockLengthX3Fine));
-         GbCuboid3DPtr refineBoxBottom(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3+refHight));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxBottom.get(), pathOut + "/geo/refineBoxBottom", WbWriterVtkXmlASCII::getInstance());
-
-         if (refineLevel > 0)
-         {
-            if (myid == 0) UBLOG(logINFO, "Refinement - start");
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel, comm);
-            refineHelper.addGbObject(refineBoxTop, refineLevel);
-            refineHelper.addGbObject(refineBoxBottom, refineLevel);
-            refineHelper.refine();
-            if (myid == 0) UBLOG(logINFO, "Refinement - end");
-         }
-         //////////////////////////////////////////////////////////////////////////
-
-         //walls
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathOut+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathOut+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-
-         //wall interactors
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         //METIS
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-         ////////////////////////////////////////////
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.selectBlocks();
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         {
-            WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppblocks.process(0);
-         }
-
-         unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-         int ghostLayer = 3;
-         unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-         unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-         unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-         double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-            UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         //////////////////////////////////
-         //undef nodes for refinement
-         if (refineLevel > 0)
-         {
-            SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-
-         //BC
-         intHelper.setBC();
-
-         ////porous media
-         if (true)
-         {
-            string samplePathname = pathGeo + "/" + sampleFilename;
-
-            SPtr<GbVoxelMatrix3D> sample(new GbVoxelMatrix3D(pmNX[0], pmNX[1], pmNX[2], 0, lthreshold, uthreshold));
-            if (rawFile)
-            {
-               sample->readBufferedMatrixFromRawFile<unsigned short>(samplePathname, GbVoxelMatrix3D::BigEndian);
-            }
-            else
-            {
-               sample->readMatrixFromVtiASCIIFile(samplePathname);
-            }
-
-            sample->setVoxelMatrixDelta(voxelDeltaX[0], voxelDeltaX[1], voxelDeltaX[2]);
-            sample->setVoxelMatrixMininum(origin[0], origin[1], origin[2]);
-
-            changePorosity(sample, pmNX);
-
-            sample->writeToLegacyVTKBinary(pathOut+"/geo/sample.vtk");
-            return;
-
-            int bounceBackOption = 1;
-            bool vxFile = false;
-            int i = 0;
-            //for (int x = 0; x < lengthFactor; x+=2)
-            int lenX = (int)((g_maxX1-g_minX1)/(pmL[0]));
-            int lenY = (int)((g_maxX2-g_minX2)/(pmL[1]));
-
-            for (int y = 0; y < lenY; y+=2)
-               for (int x = 0; x < lenX; x+=2)
-               {
-                  double offsetX = pmL[0] * (double)x;
-                  double offsetY = pmL[1] * (double)y;
-                  //sample 0
-                  if (myid == 0) UBLOG(logINFO, "sample # " << i);
-                  sample->setVoxelMatrixMininum(origin[0]+offsetX, origin[1]+offsetY, origin[2]);
-                  Utilities::voxelMatrixDiscretisation(sample, pathOut, myid, i, grid, bounceBackOption, vxFile);
-                  i++;
-
-                  if (myid == 0)
-                  {
-                     UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem()/1073741824.0<<" GB");
-                     UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed()/1073741824.0<<" GB");
-                     UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-                  }
-
-                  //sample 1
-                  if (myid == 0) UBLOG(logINFO, "sample # " << i);
-                  sample->setVoxelMatrixMininum(origin[0]+pmL[0]+offsetX, origin[1]+offsetY, origin[2]);
-                  sample->mirrorX();
-                  Utilities::voxelMatrixDiscretisation(sample, pathOut, myid, i, grid, bounceBackOption, vxFile);
-                  i++;
-
-                  if (myid == 0)
-                  {
-                     UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem()/1073741824.0<<" GB");
-                     UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed()/1073741824.0<<" GB");
-                     UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe()/1073741824.0<<" GB");
-                  }
-
-                  //sample 2
-                  if (myid == 0) UBLOG(logINFO, "sample # " << i);
-                  sample->setVoxelMatrixMininum(origin[0]+pmL[0]+offsetX, origin[1]+pmL[1]+offsetY, origin[2]);
-                  sample->mirrorY();
-                  Utilities::voxelMatrixDiscretisation(sample, pathOut, myid, i, grid, bounceBackOption, vxFile);
-                  i++;
-
-                  if (myid == 0)
-                  {
-                     UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem()/1073741824.0<<" GB");
-                     UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed()/1073741824.0<<" GB");
-                     UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-                  }
-
-                  //sample 3
-                  if (myid == 0) UBLOG(logINFO, "sample # " << i);
-                  sample->setVoxelMatrixMininum(origin[0]+offsetX, origin[1]+pmL[1]+offsetY, origin[2]);
-                  sample->mirrorX();
-                  Utilities::voxelMatrixDiscretisation(sample, pathOut, myid, i, grid, bounceBackOption, vxFile);
-                  sample->mirrorY();
-                  i++;
-               }
-
-         }
-
-         grid->accept(bcVisitor);
-
-         mu::Parser inflowProfileVx1, inflowProfileVx2, inflowProfileVx3, inflowProfileRho;
-         inflowProfileVx1.SetExpr("x3 < h ? 0.0 : uLB+1*x1");
-         inflowProfileVx1.DefineConst("uLB", u_LB);
-         inflowProfileVx1.DefineConst("h", pmL[2]);
-
-         InitDistributionsBlockVisitor initVisitor;
-         initVisitor.setVx1(inflowProfileVx1);
-         grid->accept(initVisitor);
-
-         ////set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //Postrozess
-         {
-            SPtr<UbScheduler> geoSch(new UbScheduler(1));
-            WriteBoundaryConditionsCoProcessor ppgeo(grid, geoSch, pathOut, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppgeo.process(0);
-         }
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         //restartCoProcessor->restart((int)restartStep);
-         migCoProcessor->restart((int)restartStep);
-         grid->setTimeStep(restartStep);
-         ////////////////////////////////////////////////////////////////////////////
-         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         grid->accept(bcVisitor);
-
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-      }
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      std::shared_ptr<NUPSCounterCoProcessor> nupsCoProcessor(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTime));
-
-      SPtr<WriteMacroscopicQuantitiesCoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, stepSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-
-      SPtr<GbObject3D> bbBox(new GbCuboid3D(g_minX1-blockLength, (g_maxX2-g_minX2)/2.0, g_minX3-blockLength, g_maxX1+blockLength, (g_maxX2-g_minX2)/2.0+deltaXcoarse, g_maxX3+blockLength));
-      if (myid==0) GbSystem3D::writeGeoObject(bbBox.get(), pathOut+"/geo/bbBox", WbWriterVtkXmlASCII::getInstance());
-      SPtr<WriteMQFromSelectionCoProcessor> writeMQSelectCoProcessor(new WriteMQFromSelectionCoProcessor(grid, stepSch, bbBox, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-
-
-      SPtr<UbScheduler> AdjForcSch(new UbScheduler());
-      AdjForcSch->addSchedule(10, 0, 10000000);
-      SPtr<IntegrateValuesHelper> intValHelp(new IntegrateValuesHelper(grid, comm, g_minX1, g_minX2, g_minX3+pmL[2], g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(intValHelp->getBoundingBox().get(), pathOut + "/geo/IntValHelp", WbWriterVtkXmlBinary::getInstance());
-
-      double vxTarget=u_LB;
-      SPtr<AdjustForcingCoProcessor> AdjForcCoProcessor(new AdjustForcingCoProcessor(grid, AdjForcSch, pathOut, intValHelp, vxTarget, comm));
-
-      //mu::Parser decrViscFunc;
-      //decrViscFunc.SetExpr("nue0+c0/(t+1)/(t+1)");
-      //decrViscFunc.DefineConst("nue0", nu_LB*4.0);
-      //decrViscFunc.DefineConst("c0", 0.1);
-      //SPtr<UbScheduler> DecrViscSch(new UbScheduler());
-      //DecrViscSch->addSchedule(10, 0, 1000);
-      //DecreaseViscosityCoProcessor decrViscPPPtr(grid, DecrViscSch, &decrViscFunc, comm);
-
-     //if (changeQs)
-     //{
-       // double z1 = pmL[2];
-       // SPtr<IntegrateValuesHelper> intValHelp2(new IntegrateValuesHelper(grid, comm,
-         //  coord[0], coord[1], z1 - deltaXfine,
-         //  coord[3], coord[4], z1 + deltaXfine));
-       // if (myid == 0) GbSystem3D::writeGeoObject(intValHelp2->getBoundingBox().get(), pathOut + "/geo/intValHelp2", WbWriterVtkXmlBinary::getInstance());
-       // Utilities::ChangeRandomQs(intValHelp2);
-     //}
-
-      std::vector<double> levelCoords;
-      std::vector<int> levels;
-      std::vector<double> bounds;
-      //bounds.push_back(0);
-      //bounds.push_back(0);
-      //bounds.push_back(0);
-      //bounds.push_back(0.004);
-      //bounds.push_back(0.002);
-      //bounds.push_back(0.003);
-      //levels.push_back(1);
-      //levels.push_back(0);
-      //levels.push_back(1);
-      //levelCoords.push_back(0);
-      //levelCoords.push_back(0.0016);
-      //levelCoords.push_back(0.0024);
-      //levelCoords.push_back(0.003);
-      bounds.push_back(0);
-      bounds.push_back(0);
-      bounds.push_back(0);
-      bounds.push_back(0.004);
-      bounds.push_back(0.002);
-      bounds.push_back(0.002);
-      levels.push_back(0);
-      levelCoords.push_back(0);
-      levelCoords.push_back(0.002);
-      //SPtr<UbScheduler> tavSch(new UbScheduler(1, timeAvStart, timeAvStop));
-      //SPtr<CoProcessor> tav(new TimeAveragedValuesCoProcessor(grid, pathOut, WbWriterVtkXmlBinary::getInstance(), tavSch, comm,
-      //   TimeAveragedValuesCoProcessor::Velocity | TimeAveragedValuesCoProcessor::Fluctuations | TimeAveragedValuesCoProcessor::Triplecorrelations,
-      //   levels, levelCoords, bounds));
-
-
-      //create line time series
-      SPtr<UbScheduler> tpcSch(new UbScheduler(1, 1, 3));
-      //GbPoint3DPtr p1(new GbPoint3D(0.0,0.005,0.01));
-      //GbPoint3DPtr p2(new GbPoint3D(0.064,0.005,0.01));
-      //SPtr<GbLine3D> line(new GbLine3D(p1.get(),p2.get()));
-      SPtr<GbLine3D> line(new GbLine3D(new GbPoint3D(0.0, 0.005, 0.01), new GbPoint3D(0.064, 0.005, 0.01)));
-      LineTimeSeriesCoProcessor lineTs(grid, tpcSch, pathOut+"/TimeSeries/line1.csv", line, 0, comm);
-      if (myid==0) lineTs.writeLine(pathOut+"/geo/line1");
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      //omp_set_num_threads(numOfThreads);
-       numOfThreads = 4;
-      SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, (int)endTime));
-      calculator->addCoProcessor(nupsCoProcessor);
-      calculator->addCoProcessor(AdjForcCoProcessor);
-      calculator->addCoProcessor(migCoProcessor);
-      //calculator->addCoProcessor(restartCoProcessor);
-      calculator->addCoProcessor(writeMQSelectCoProcessor);
-      calculator->addCoProcessor(writeMQCoProcessor);
-
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (mu::Parser::exception_type &e)
-   {
-      std::cout << e.GetMsg() << std::endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout << "Configuration file is missing!" << endl;
-      }
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/pChannel/pChannel.cpp.hlrn b/apps/cpu/pChannel/pChannel.cpp.hlrn
deleted file mode 100644
index 04274a4a24fdb42156d54e56baff7560a323df18..0000000000000000000000000000000000000000
--- a/apps/cpu/pChannel/pChannel.cpp.hlrn
+++ /dev/null
@@ -1,729 +0,0 @@
-#include <iostream>
-#include <string>
-#include "VirtualFluids.h"
-
-
-
-//#include <thread>
-
-using namespace std;
-
-//////////////////////////////////////////////////////////////////////////
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathname          = config.getString("pathname");
-      string          pathGeo           = config.getString("pathGeo");
-      int             numOfThreads      = config.getInt("numOfThreads");
-      string          sampleFilename    = config.getString("sampleFilename");
-      vector<int>     pmNX              = config.getVector<int>("pmNX");
-      double          lthreshold        = config.getDouble("lthreshold");
-      double          uthreshold        = config.getDouble("uthreshold");
-      vector<float>   voxelDeltaX       = config.getVector<float>("voxelDeltaX");
-      vector<int>     blocknx           = config.getVector<int>("blocknx");
-      double          u_LB              = config.getDouble("u_LB");
-      double          restartStep       = config.getDouble("restartStep");
-      double          restartStepStart  = config.getDouble("restartStepStart");
-      double          endTime           = config.getDouble("endTime");
-      double          outTime           = config.getDouble("outTime");
-      double          availMem          = config.getDouble("availMem");
-      bool            rawFile           = config.getBool("rawFile");
-      bool            logToFile         = config.getBool("logToFile");
-      bool            writeSample       = config.getBool("writeSample");
-      vector<double>  pmL               = config.getVector<double>("pmL");
-      double          deltaXfine        = config.getDouble("deltaXfine");
-      int             refineLevel       = config.getInt("refineLevel");
-      bool            thinWall          = config.getBool("thinWall");
-      double          Re                = config.getDouble("Re");
-      double          channelHigh       = config.getDouble("channelHigh");
-      double          lengthFactor      = config.getDouble("lengthFactor");
-      double          forcing           = config.getDouble("forcing");
-      bool            changeQs          = config.getBool("changeQs"); 
-      double          timeAvStart       = config.getDouble("timeAvStart");
-      double          timeAvStop        = config.getDouble("timeAvStop");
-      bool            averaging         = config.getBool("averaging");
-      bool            averagingReset    = config.getBool("averagingReset");
-      double          nupsSteps         = config.getDouble("nupsSteps");
-      double          timeLineTsStart   = config.getDouble("timeLineTsStart");
-      double          timeLineTsStop    = config.getDouble("timeLineTsStop");
-
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathname.c_str();
-            mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if (myid == 0)
-         {
-            stringstream logFilename;
-            logFilename << pathname + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      //Sleep(30000);
-
-      if (myid == 0) UBLOG(logINFO, "Testcase porous channel");
-
-      LBMReal rho_LB = 0.0;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      double deltaXcoarse = deltaXfine*(double)(1<<refineLevel);
-
-      double coord[6];
-      bool restart;
-
-      vector<double> origin(3);
-      origin[0] = 0;
-      origin[1] = 0;
-      origin[2] = 0;
-
-      //real velocity is 49.63 m/s
-      double nu_LB;
-
-      Grid3DPtr grid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(restartStep, restartStepStart));
-      RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (grid->getTimeStep() == 0)
-      {
-         if (myid == 0) UBLOG(logINFO, "new start...");
-         restart = false;
-
-         double offsetMinX3 = pmL[2];
-         
-         double offsetMaxX1 = pmL[0]*lengthFactor;
-         double offsetMaxX2 = pmL[1]*2.0;
-         double offsetMaxX3 = pmL[2] + channelHigh; //DLR-F15  //pmL[2]*2.0;
-
-         //bounding box
-         double g_minX1 = origin[0];
-         double g_minX2 = origin[1];
-         double g_minX3 = origin[2];
-
-         double g_maxX1 = origin[0] + offsetMaxX1;
-         double g_maxX2 = origin[1] + offsetMaxX2;
-         double g_maxX3 = origin[2] + offsetMaxX3;
-//////////////////////////////////////////////////////////////////////////
-         double nx1_temp = floor((g_maxX1-g_minX1) /(deltaXcoarse*(double)blocknx[0]));
-
-         deltaXcoarse = (g_maxX1-g_minX1) /(nx1_temp*(double)blocknx[0]);
-
-         g_maxX1 -= 0.5* deltaXcoarse;
-//////////////////////////////////////////////////////////////////////////
-         double blockLength = (double)blocknx[0]*deltaXcoarse;
-
-         grid->setPeriodicX1(true);
-         grid->setPeriodicX2(true);
-         grid->setPeriodicX3(false);
-         grid->setDeltaX(deltaXcoarse);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-         double channel_high = channelHigh; // g_maxX3-g_minX3;
-         double channel_high_LB = channel_high/deltaXcoarse;
-//////////////////////////////////////////////////////////////////////////
-         //nu_LB = 0.005;
-         nu_LB = (u_LB*channel_high_LB)/Re;
-//////////////////////////////////////////////////////////////////////////
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "Re = " << Re);
-            UBLOG(logINFO, "u_LB = " << u_LB);
-            UBLOG(logINFO, "rho_LB = " << rho_LB);
-            UBLOG(logINFO, "nu_LB = " << nu_LB);
-            UBLOG(logINFO, "dx coarse = " << deltaXcoarse << " m");
-            UBLOG(logINFO, "dx fine = " << grid->getDeltaX(refineLevel) << " m");
-            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
-            UBLOG(logINFO, "number of processes = " << comm->getNumberOfProcesses());
-            UBLOG(logINFO, "number of threads = " << numOfThreads);
-            UBLOG(logINFO, "path = " << pathname);
-            UBLOG(logINFO, "Preprocess - start");
-         }
-
-         //////////////////////////////////////////////////////////////////////////
-         //refinement
-         double blockLengthX3Fine = grid->getDeltaX(refineLevel) * blocknx[2];
-
-         GbCuboid3DPtr refineBoxTop(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3-blockLengthX3Fine, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxTop.get(), pathname + "/geo/refineBoxTop", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr refineBoxBottom(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3+offsetMinX3+blockLengthX3Fine));
-         //GbCuboid3DPtr refineBoxBottom(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLengthX3Fine, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3+blockLengthX3Fine));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineBoxBottom.get(), pathname + "/geo/refineBoxBottom", WbWriterVtkXmlASCII::getInstance());
-
-         if (refineLevel > 0)
-         {
-            if (myid == 0) UBLOG(logINFO, "Refinement - start");
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(refineBoxTop, refineLevel);
-            refineHelper.addGbObject(refineBoxBottom, refineLevel);
-            refineHelper.refine();
-            if (myid == 0) UBLOG(logINFO, "Refinement - end");
-         }
-         //////////////////////////////////////////////////////////////////////////
-
-         //walls
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-
-         //wall interactors
-         int bbOption = 1;
-         D3Q27BoundaryConditionAdapterPtr bcNoSlip(new D3Q27NoSlipBCAdapter(bbOption));
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcNoSlip, Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcNoSlip, Interactor3D::SOLID));
-
-		 ////////////////////////////////////////////////
-		 //TEST
-		 //GbObject3DPtr testCube(new GbCuboid3D(g_minX1 + 2.0 * blockLength, g_minX2 + 2.0 * blockLength, g_minX3 + 5.0 * blockLength, 
-			// g_minX1 + 3.0 * blockLength, g_minX2 + 3.0 * blockLength, g_minX3 + 6.0 * blockLength));
-		 //if (myid == 0) GbSystem3D::writeGeoObject(testCube.get(), pathname + "/geo/testCube", WbWriterVtkXmlBinary::getInstance());
-		 //D3Q27InteractorPtr testCubeInt(new D3Q27Interactor(testCube, grid, bcNoSlip, Interactor3D::SOLID));
-		 ///////////////////////////////////////////////
-
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-         ////////////////////////////////////////////
-         //Zoltan
-         //Grid3DVisitorPtr zoltanVisitor(new ZoltanPartitioningGridVisitor(comm, D3Q27System::BSW, 1));
-         //grid->accept(zoltanVisitor);
-         /////delete solid blocks
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-		 //////////////////////////////////////////////////////////////////////////
-		 //TEST
-		 //intHelper.addInteractor(testCubeInt);
-         //////////////////////////////////////////////////////////////////////////
-		 intHelper.selectBlocks();
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-         ppblocks->process(0);
-         ppblocks.reset();
-
-         unsigned long long numberOfBlocks = (unsigned long long)grid->getNumberOfBlocks();
-         int ghostLayer = 3;
-         unsigned long long numberOfNodesPerBlock = (unsigned long long)(blocknx[0])* (unsigned long long)(blocknx[1])* (unsigned long long)(blocknx[2]);
-         unsigned long long numberOfNodes = numberOfBlocks * numberOfNodesPerBlock;
-         unsigned long long numberOfNodesPerBlockWithGhostLayer = numberOfBlocks * (blocknx[0] + ghostLayer) * (blocknx[1] + ghostLayer) * (blocknx[2] + ghostLayer);
-         double needMemAll = double(numberOfNodesPerBlockWithGhostLayer*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-	 
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << numberOfBlocks);
-            UBLOG(logINFO, "Number of nodes  = " << numberOfNodes);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*numberOfNodesPerBlock);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         LBMKernel3DPtr kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-
-         mu::Parser fctForcingX1;
-         fctForcingX1.SetExpr("Fx1");
-         fctForcingX1.DefineConst("Fx1", 1.0e-6);
-
-         kernel->setWithForcing(true);
-
-         BCProcessorPtr bcProc;
-         BoundaryConditionPtr noSlipBC;
-
-         if (thinWall)
-         {
-            bcProc = BCProcessorPtr(new D3Q27ETForThinWallBCProcessor());
-            noSlipBC = BoundaryConditionPtr(new ThinWallNoSlipBoundaryCondition());
-         }
-         else
-         {
-            bcProc = BCProcessorPtr(new D3Q27ETBCProcessor());
-            noSlipBC = BoundaryConditionPtr(new NoSlipBoundaryCondition());
-         }
-
-         bcProc->addBC(noSlipBC);
-
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         //////////////////////////////////
-         //undef nodes for refinement
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-
-         //BC
-         intHelper.setBC();
-
-         ////porous media
-         {
-            string samplePathname = pathGeo + "/" + sampleFilename;
-
-            GbVoxelMatrix3DPtr sample(new GbVoxelMatrix3D(pmNX[0], pmNX[1], pmNX[2], 0, lthreshold, uthreshold));
-            if (rawFile)
-            {
-               sample->readBufferedMatrixFromRawFile<unsigned short>(samplePathname, GbVoxelMatrix3D::BigEndian);
-            }
-            else
-            {
-               sample->readMatrixFromVtiASCIIFile(samplePathname);
-            }
-
-            sample->setVoxelMatrixDelta(voxelDeltaX[0], voxelDeltaX[1], voxelDeltaX[2]);
-            sample->setVoxelMatrixMininum(origin[0], origin[1], origin[2]);
-
-            int bounceBackOption = 1;
-            bool vxFile = false;
-            int i = 0;
-            for (int x = 0; x < lengthFactor; x+=2)
-            {
-               double offset = pmL[0] * (double)x;
-               //sample 0
-               if (myid == 0) UBLOG(logINFO, "sample # " << i);
-               sample->setVoxelMatrixMininum(origin[0]+offset, origin[1], origin[2]);
-               Utilities::voxelMatrixDiscretisation(sample, pathname, myid, i, grid, bounceBackOption, vxFile);
-               i++;
-
-               if (myid == 0)
-               {
-                  UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-                  UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-                  UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-               }
-
-               //sample 1
-               if (myid == 0) UBLOG(logINFO, "sample # " << i);
-               sample->setVoxelMatrixMininum(origin[0]+pmL[0]+offset, origin[1], origin[2]);
-               sample->mirrorX();
-               Utilities::voxelMatrixDiscretisation(sample, pathname, myid, i, grid, bounceBackOption, vxFile);
-               i++;
-
-               if (myid == 0)
-               {
-                  UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-                  UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-                  UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-               }
-
-               //sample 2
-               if (myid == 0) UBLOG(logINFO, "sample # " << i);
-               sample->setVoxelMatrixMininum(origin[0]+pmL[0]+offset, origin[1]+pmL[1], origin[2]);
-               sample->mirrorY();
-               Utilities::voxelMatrixDiscretisation(sample, pathname, myid, i, grid, bounceBackOption, vxFile);
-               i++;
-
-               if (myid == 0)
-               {
-                  UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-                  UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-                  UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-               }
-
-               //sample 3
-               if (myid == 0) UBLOG(logINFO, "sample # " << i);
-               sample->setVoxelMatrixMininum(origin[0]+offset, origin[1]+pmL[1], origin[2]);
-               sample->mirrorX();
-               Utilities::voxelMatrixDiscretisation(sample, pathname, myid, i, grid, bounceBackOption, vxFile);
-               sample->mirrorY();
-               i++;
-            }
-
-         }
-         BoundaryConditionBlockVisitor bcVisitor;
-         grid->accept(bcVisitor);
-
-         mu::Parser inflowProfile;
-         inflowProfile.SetExpr("x3 < h ? 0.0 : uLB+1*x1-1*x2");
-		   //inflowProfile.SetExpr("uLB+1*x1-1*x2");
-         //inflowProfile.SetExpr("uLB");
-         inflowProfile.DefineConst("uLB", u_LB);
-         inflowProfile.DefineConst("h", pmL[2]);
-
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(nu_LB, rho_LB);
-         initVisitor.setVx1(inflowProfile);
-         //initVisitor.setVx1(u_LB);
-         grid->accept(initVisitor);
-
-         ////set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //Postrozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         MacroscopicQuantitiesCoProcessorPtr ppgeo(
-            new MacroscopicQuantitiesCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, true));
-         ppgeo->process(0);
-         ppgeo.reset();
-
-         coord[0] = g_minX1;
-         coord[1] = g_minX2;
-         coord[2] = g_minX3;
-         coord[3] = g_maxX1;
-         coord[4] = g_maxX2;
-         coord[5] = g_maxX3;
-
-         ////////////////////////////////////////////////////////
-         FILE * pFile;
-         string str = pathname + "/checkpoints/coord.txt";
-         pFile = fopen(str.c_str(), "w");
-         fprintf(pFile, "%g\n", deltaXcoarse);
-         fprintf(pFile, "%g\n", nu_LB);
-         fprintf(pFile, "%g\n", coord[0]);
-         fprintf(pFile, "%g\n", coord[1]);
-         fprintf(pFile, "%g\n", coord[2]);
-         fprintf(pFile, "%g\n", coord[3]);
-         fprintf(pFile, "%g\n", coord[4]);
-         fprintf(pFile, "%g\n", coord[5]);
-         fclose(pFile);
-         ////////////////////////////////////////////////////////
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         ////////////////////////////////////////////////////////
-         FILE * pFile;
-         string str = pathname + "/checkpoints/coord.txt";
-         pFile = fopen(str.c_str(), "r");
-         fscanf(pFile, "%lg\n", &deltaXcoarse);
-         fscanf(pFile, "%lg\n", &nu_LB);
-         fscanf(pFile, "%lg\n", &coord[0]);
-         fscanf(pFile, "%lg\n", &coord[1]);
-         fscanf(pFile, "%lg\n", &coord[2]);
-         fscanf(pFile, "%lg\n", &coord[3]);
-         fscanf(pFile, "%lg\n", &coord[4]);
-         fscanf(pFile, "%lg\n", &coord[5]);
-         fclose(pFile);
-         ////////////////////////////////////////////////////////
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "Re = " << Re);
-            UBLOG(logINFO, "u_LB = " << u_LB);
-            UBLOG(logINFO, "rho_LB = " << rho_LB);
-            UBLOG(logINFO, "nu_LB = " << nu_LB);
-            UBLOG(logINFO, "dx coarse = " << deltaXcoarse << " m");
-            UBLOG(logINFO, "dx fine = " << grid->getDeltaX(refineLevel) << " m");
-            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
-            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
-            UBLOG(logINFO, "path = " << pathname);
-         }
-         
-         /////////////////////////////////////////////////////////////
-         /////////////////////////////////////////////////////////////
-         //bounding box
-//          double offsetMinX3 = pmL[2];
-// 
-//          double offsetMaxX1 = pmL[0]*lengthFactor;
-//          double offsetMaxX2 = pmL[1]*2.0;
-//          double offsetMaxX3 = channelHigh;
-// 
-//          double g_minX1 = origin[0];
-//          double g_minX2 = origin[1];
-//          double g_minX3 = origin[2];
-// 
-//          double g_maxX1 = origin[0]+offsetMaxX1;
-//          double g_maxX2 = origin[1]+offsetMaxX2;
-//          double g_maxX3 = origin[2]+offsetMaxX3;
-// 
-//          double blockLength = (double)blocknx[0]*deltaXcoarse;
-// 
-//          GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3+offsetMinX3));
-//          if (myid==0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-//          int bbOption = 1;
-//          D3Q27BoundaryConditionAdapterPtr bcNoSlip(new D3Q27NoSlipBCAdapter(bbOption));
-//          D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcNoSlip, Interactor3D::SOLID));
-// 
-//          SetSolidOrTransBlockVisitor v1(addWallZminInt, SetSolidOrTransBlockVisitor::SOLID);
-//          grid->accept(v1);
-//          SetSolidOrTransBlockVisitor v2(addWallZminInt, SetSolidOrTransBlockVisitor::TRANS);
-//          grid->accept(v2);
-// 
-//          std::vector<Block3DPtr> blocks;
-//          std::vector<Block3DPtr>& sb = addWallZminInt->getSolidBlockSet();
-//          if (myid==0) UBLOG(logINFO, "number of solid blocks = "<<sb.size());
-//          blocks.insert(blocks.end(), sb.begin(), sb.end());
-//          std::vector<Block3DPtr>& tb = addWallZminInt->getTransBlockSet();
-//          if (myid==0) UBLOG(logINFO, "number of trans blocks = "<<tb.size());
-//          blocks.insert(blocks.end(), tb.begin(), tb.end());
-// 
-//          if (myid==0) UBLOG(logINFO, "number of blocks = "<<blocks.size());
-// 
-//          BOOST_FOREACH(Block3DPtr block, blocks)
-//          {
-//             block->setActive(true);
-//             addWallZminInt->setDifferencesToGbObject3D(block);
-//          }
-// 
-//          //////////////////////////////////////////////
-//          ////METIS
-//          //Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY));
-//          //////////////////////////////////////////////
-//          ///////delete solid blocks
-//          //if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - start");
-//          //InteractorsHelper intHelper(grid, metisVisitor);
-//          //intHelper.addInteractor(addWallZminInt);
-//          //intHelper.selectBlocks();
-//          //if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - end");
-//          ////////////////////////////////////////
-//          //intHelper.setBC();
-//          //////////////////////////////////////////////////////////////
-// 
-//          BoundaryConditionBlockVisitor bcVisitor;
-//          grid->accept(bcVisitor);
-// 
-//          WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-//          ppblocks->process(0);
-//          ppblocks.reset();
-// 
-//          UbSchedulerPtr geoSch(new UbScheduler(1));
-//          MacroscopicQuantitiesCoProcessorPtr ppgeo(
-//             new MacroscopicQuantitiesCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, true));
-//          ppgeo->process(0);
-//          ppgeo.reset();
-         ////////////////////////////////////////////////////////////////
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         restart = true;
-
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-      }
-      UbSchedulerPtr nupsSch(new UbScheduler(nupsSteps));
-      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-
-      MacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv);
-
-      double startStep = grid->getTimeStep();
-
-      //UbSchedulerPtr visSch(new UbScheduler());
-      //visSch->addSchedule(40000,40000,40000000);
-      //UbSchedulerPtr resSchRMS(new UbScheduler());
-      //resSchRMS->addSchedule(40000, startStep, 40000000);
-      //UbSchedulerPtr resSchMeans(new UbScheduler());
-      //resSchMeans->addSchedule(40000, startStep, 40000000);
-      //UbSchedulerPtr stepAvSch(new UbScheduler());
-      //stepAvSch->addSchedule(100, 0, 10000000);
-      //AverageValuesPostprocessor Avpp(grid, pathname, WbWriterVtkXmlBinary::getInstance(),
-      //   stepSch/*wann wird rausgeschrieben*/, stepAvSch/*wann wird gemittelt*/, resSchMeans, resSchRMS/*wann wird resettet*/, restart);
-
-
-      UbSchedulerPtr AdjForcSch(new UbScheduler());
-      AdjForcSch->addSchedule(10, 0, 10000000);
-      D3Q27IntegrateValuesHelperPtr intValHelp(new D3Q27IntegrateValuesHelper(grid, comm,
-         coord[0], coord[1], coord[2],
-         coord[3], coord[4], coord[5]));
-      if (myid == 0) GbSystem3D::writeGeoObject(intValHelp->getBoundingBox().get(), pathname + "/geo/IntValHelp", WbWriterVtkXmlBinary::getInstance());
-
-      double vxTarget=u_LB;
-      AdjustForcingCoProcessor AdjForcPPPtr(grid, AdjForcSch, pathname, intValHelp, vxTarget, comm);
-
-      //mu::Parser decrViscFunc;
-      //decrViscFunc.SetExpr("nue0+c0/(t+1)/(t+1)");
-      //decrViscFunc.DefineConst("nue0", nu_LB*4.0);
-      //decrViscFunc.DefineConst("c0", 0.1);
-      //UbSchedulerPtr DecrViscSch(new UbScheduler());
-      //DecrViscSch->addSchedule(10, 0, 1000);
-      //DecreaseViscosityPostprocessor decrViscPPPtr(grid, DecrViscSch, &decrViscFunc, comm);
-
-	  //if (changeQs)
-	  //{
-		 // double z1 = pmL[2];
-		 // D3Q27IntegrateValuesHelperPtr intValHelp2(new D3Q27IntegrateValuesHelper(grid, comm,
-			//  coord[0], coord[1], z1 - deltaXfine,
-			//  coord[3], coord[4], z1 + deltaXfine));
-		 // if (myid == 0) GbSystem3D::writeGeoObject(intValHelp2->getBoundingBox().get(), pathname + "/geo/intValHelp2", WbWriterVtkXmlBinary::getInstance());
-		 // Utilities::ChangeRandomQs(intValHelp2);
-	  //}
-
-      std::vector<double> levelCoords;
-      std::vector<int> levels;
-      std::vector<double> bounds;
-      bounds.push_back(0);
-      bounds.push_back(0);
-      bounds.push_back(1e-3);
-      bounds.push_back(0.064);
-      bounds.push_back(0.008);
-      bounds.push_back(0.018);
-      levels.push_back(3);
-      levels.push_back(2);
-      levels.push_back(1);
-      levels.push_back(0);
-      levels.push_back(1);
-      levels.push_back(2);
-      levels.push_back(3);
-      levelCoords.push_back(0);
-      levelCoords.push_back(0.0016-6.0*deltaXfine);
-      levelCoords.push_back(0.0016);
-      levelCoords.push_back(0.0024-6.0*deltaXfine*2.0);
-      levelCoords.push_back(0.0024);
-      levelCoords.push_back(0.0048-6.0*deltaXfine*4.0);
-      levelCoords.push_back(0.0048);
-      levelCoords.push_back(0.0144);
-      levelCoords.push_back(0.0144+6.0*deltaXfine*4.0);
-      levelCoords.push_back(0.0168);
-      levelCoords.push_back(0.0168+6.0*deltaXfine*2.0);
-      levelCoords.push_back(0.0176);
-      levelCoords.push_back(0.0176+6.0*deltaXfine);
-      levelCoords.push_back(0.018);
-      UbSchedulerPtr tavSch(new UbScheduler(1, timeAvStart, timeAvStop));
-      TimeAveragedValuesCoProcessorPtr tav(new TimeAveragedValuesCoProcessor(grid, pathname, WbWriterVtkXmlBinary::getInstance(), tavSch, comm,
-         TimeAveragedValuesCoProcessor::Velocity | TimeAveragedValuesCoProcessor::Fluctuations | TimeAveragedValuesCoProcessor::Triplecorrelations//));
-         ,levels, levelCoords, bounds, false));
-      if (averagingReset)
-      {
-	     tav->reset();
-      }
-      //UbSchedulerPtr catalystSch(new UbScheduler(1));
-      //InSituCatalystCoProcessor catalyst(grid, catalystSch, "pchannel.py");
-      
-      UbSchedulerPtr exitSch(new UbScheduler(10));
-      EmergencyExitCoProcessor exitCoProc(grid, exitSch, pathname, RestartCoProcessorPtr(&rp), comm);
-      
-      //create line time series
-      UbSchedulerPtr tpcSch(new UbScheduler(1,timeLineTsStart,timeLineTsStop));
-      
-      GbLine3DPtr line1(new GbLine3D(new GbPoint3D(0.0,0.004,0.00078),new GbPoint3D(0.064,0.004,0.00078)));
-      LineTimeSeriesCoProcessor lineTs1(grid, tpcSch,pathname+"/TimeSeries/line1.csv",line1, 3,comm);
-      if (myid==0) lineTs1.writeLine(pathname+"/geo/line1");
-      
-      GbLine3DPtr line2(new GbLine3D(new GbPoint3D(0.0,0.004,0.001+deltaXfine*8.0),new GbPoint3D(0.064,0.004,0.001+deltaXfine*8.0)));
-      LineTimeSeriesCoProcessor lineTs2(grid, tpcSch,pathname+"/TimeSeries/line2.csv",line2, 3,comm);
-      if (myid==0) lineTs2.writeLine(pathname+"/geo/line2");
-      
-      GbLine3DPtr line3(new GbLine3D(new GbPoint3D(0.03,0.0,0.00078),new GbPoint3D(0.03,0.008,0.00078)));
-      LineTimeSeriesCoProcessor lineTs3(grid, tpcSch,pathname+"/TimeSeries/line3.csv",line3, 3,comm);
-      if (myid==0) lineTs3.writeLine(pathname+"/geo/line3");
-      
-      GbLine3DPtr line4(new GbLine3D(new GbPoint3D(0.03,0.0,0.001+deltaXfine*8.0),new GbPoint3D(0.03,0.008,0.001+deltaXfine*8.0)));
-      LineTimeSeriesCoProcessor lineTs4(grid, tpcSch,pathname+"/TimeSeries/line4.csv",line4, 3,comm);
-      if (myid==0) lineTs4.writeLine(pathname+"/geo/line4");
-      
-      GbLine3DPtr line5(new GbLine3D(new GbPoint3D(0.0,0.004,0.002),new GbPoint3D(0.064,0.004,0.002)));
-      LineTimeSeriesCoProcessor lineTs5(grid, tpcSch,pathname+"/TimeSeries/line5.csv",line5,2,comm);
-      if (myid==0) lineTs5.writeLine(pathname+"/geo/line5");
-      
-      GbLine3DPtr line6(new GbLine3D(new GbPoint3D(0.0,0.004,0.0035),new GbPoint3D(0.064,0.004,0.0035)));
-      LineTimeSeriesCoProcessor lineTs6(grid, tpcSch,pathname+"/TimeSeries/line6.csv",line6,1,comm);
-      if (myid==0) lineTs6.writeLine(pathname+"/geo/line6");
-      
-      GbLine3DPtr line7(new GbLine3D(new GbPoint3D(0.0,0.004,0.009),new GbPoint3D(0.064,0.004,0.009)));
-      LineTimeSeriesCoProcessor lineTs7(grid, tpcSch,pathname+"/TimeSeries/line7.csv",line7,0,comm);
-      if (myid==0) lineTs7.writeLine(pathname+"/geo/line7");
-      
-      GbLine3DPtr line8(new GbLine3D(new GbPoint3D(0.0,0.004,0.015),new GbPoint3D(0.064,0.004,0.015)));
-      LineTimeSeriesCoProcessor lineTs8(grid, tpcSch,pathname+"/TimeSeries/line8.csv",line8,1,comm);
-      if (myid==0) lineTs8.writeLine(pathname+"/geo/line8");
-      
-      GbLine3DPtr line9(new GbLine3D(new GbPoint3D(0.0,0.004,0.017),new GbPoint3D(0.064,0.004,0.017)));
-      LineTimeSeriesCoProcessor lineTs9(grid, tpcSch,pathname+"/TimeSeries/line9.csv",line9,2,comm);
-      if (myid==0) lineTs9.writeLine(pathname+"/geo/line9");    
-      
-      GbLine3DPtr line10(new GbLine3D(new GbPoint3D(0.0,0.004,0.018-deltaXfine*14.0),new GbPoint3D(0.064,0.004,0.018-deltaXfine*14.0)));
-      LineTimeSeriesCoProcessor lineTs10(grid, tpcSch,pathname+"/TimeSeries/line10.csv",line10,3,comm);
-      if (myid==0) lineTs10.writeLine(pathname+"/geo/line10");  
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepSch));
-      if (averaging)
-      {
-         calculation->setTimeAveragedValuesCoProcessor(tav);
-      }
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout << "Configuration file is missing!" << endl;
-      }
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/pChannel/pchannel.py b/apps/cpu/pChannel/pchannel.py
deleted file mode 100644
index 6a58fd005cdc695c6b016ccc1726cf187912ae2b..0000000000000000000000000000000000000000
--- a/apps/cpu/pChannel/pchannel.py
+++ /dev/null
@@ -1,85 +0,0 @@
-try: paraview.simple
-except: from paraview.simple import *
-
-from paraview import coprocessing
-
-
-#--------------------------------------------------------------
-# Code generated from cpstate.py to create the CoProcessor.
-
-
-# ----------------------- CoProcessor definition -----------------------
-
-def CreateCoProcessor():
-  def _CreatePipeline(coprocessor, datadescription):
-    class Pipeline:
-      filename_3_pvtu = coprocessor.CreateProducer( datadescription, "input" )
-
-      #~ Slice1 = Slice( guiName="Slice1", Crinkleslice=0, SliceOffsetValues=[0.0], Triangulatetheslice=1, SliceType="Plane" )
-      #~ Slice1.SliceType.Offset = 0.0
-      #~ Slice1.SliceType.Origin = [34.5, 32.45, 27.95]
-      #~ Slice1.SliceType.Normal = [1.0, 0.0, 0.0]
-#~ 
-      #~ ParallelPolyDataWriter1 = coprocessor.CreateWriter( XMLPPolyDataWriter, "slice_%t.pvtp", 10 )
-
-      SetActiveSource(filename_3_pvtu)
-      #~ ParallelUnstructuredGridWriter1 = coprocessor.CreateWriter( XMLPUnstructuredGridWriter, "fullgrid_%t.pvtu", 100 )
-
-    return Pipeline()
-
-  class CoProcessor(coprocessing.CoProcessor):
-    def CreatePipeline(self, datadescription):
-      self.Pipeline = _CreatePipeline(self, datadescription)
-
-  coprocessor = CoProcessor()
-  freqs = {'input': [10, 100]}
-  coprocessor.SetUpdateFrequencies(freqs)
-  return coprocessor
-
-#--------------------------------------------------------------
-# Global variables that will hold the pipeline for each timestep
-# Creating the CoProcessor object, doesn't actually create the ParaView pipeline.
-# It will be automatically setup when coprocessor.UpdateProducers() is called the
-# first time.
-coprocessor = CreateCoProcessor()
-
-#--------------------------------------------------------------
-# Enable Live-Visualizaton with ParaView
-coprocessor.EnableLiveVisualization(True)
-
-
-# ---------------------- Data Selection method ----------------------
-
-def RequestDataDescription(datadescription):
-    "Callback to populate the request for current timestep"
-    global coprocessor
-    if datadescription.GetForceOutput() == True:
-        # We are just going to request all fields and meshes from the simulation
-        # code/adaptor.
-        for i in range(datadescription.GetNumberOfInputDescriptions()):
-            datadescription.GetInputDescription(i).AllFieldsOn()
-            datadescription.GetInputDescription(i).GenerateMeshOn()
-        return
-
-    # setup requests for all inputs based on the requirements of the
-    # pipeline.
-    coprocessor.LoadRequestedData(datadescription)
-
-# ------------------------ Processing method ------------------------
-
-def DoCoProcessing(datadescription):
-    "Callback to do co-processing for current timestep"
-    global coprocessor
-
-    # Update the coprocessor by providing it the newly generated simulation data.
-    # If the pipeline hasn't been setup yet, this will setup the pipeline.
-    coprocessor.UpdateProducers(datadescription)
-
-    # Write output data, if appropriate.
-    coprocessor.WriteData(datadescription);
-
-    # Write image capture (Last arg: rescale lookup table), if appropriate.
-    coprocessor.WriteImages(datadescription, rescale_lookuptable=False)
-
-    # Live Visualization, if enabled.
-    coprocessor.DoLiveVisualization(datadescription, "localhost", 22222)
diff --git a/apps/cpu/pDisk/CMakeLists.txt b/apps/cpu/pDisk/CMakeLists.txt
deleted file mode 100644
index 75a6476e7d052d3d0a3ccc561a4d775395012cfb..0000000000000000000000000000000000000000
--- a/apps/cpu/pDisk/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(pDisk)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(pdisk BINARY)
diff --git a/apps/cpu/pDisk/configBombadilPdisk.cfg b/apps/cpu/pDisk/configBombadilPdisk.cfg
deleted file mode 100644
index a600e4cddd3e0f5375cc80be8fc8ac579c8e7900..0000000000000000000000000000000000000000
--- a/apps/cpu/pDisk/configBombadilPdisk.cfg
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-#Simulation parameters for porous disk
-#
-
-pathname = d:/temp/pDisk
-pathGeo = d:/Data/PorousDisk
-numOfThreads = 1
-availMem = 3e9
-logToFile = false
-
-#geometry
-diskFilename = PorousDiskDR.stl 
-mastFilename = Mast.stl
-
-#grid
-fineNodeDx = 10  # 0.3 / 0.2
-blocknx = 16 16 16
-refineLevel = 2
-geoLength = 5000 2000 2000
-
-#physic
-Re = 6.66e4
-u_LB = 0.01
-rho_LB = 0.0
-
-#averaging
-restart = false
-averaging = false
-
-restartStep = 20000
-restartStepStart=20000
-
-endTime = 60000
-outTime = 100
-
-
diff --git a/apps/cpu/pDisk/configHlrnPorousDisk.cfg b/apps/cpu/pDisk/configHlrnPorousDisk.cfg
deleted file mode 100644
index d3cfec356c0ed0adf157cf800678e02eed48e640..0000000000000000000000000000000000000000
--- a/apps/cpu/pDisk/configHlrnPorousDisk.cfg
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-#Simulation parameters for porous disk
-#
-
-pathname = /gfs1/work/niikonst/scratch/pDisk
-pathGeo = /gfs1/work/niikonst/data/PorousDisk
-numOfThreads = 24
-availMem = 128e9
-logToFile = true
-
-#geometry
-diskFilename = PorousDiskD2.stl 
-mastFilename = Mast.stl
-
-#grid
-fineNodeDx = 1.9  
-blocknx = 16 16 16
-refineLevel = 4
-geoLength = 5000 2000 2000
-
-#physic
-Re = 6.66e4
-u_LB = 0.01
-rho_LB = 0.0
-
-#averaging
-restart = false
-averaging = false
-
-restartStep = 10000
-restartStepStart=10000
-
-outTime = 10000
-
-endTime = 100000
-
diff --git a/apps/cpu/pDisk/pdisk.cpp b/apps/cpu/pDisk/pdisk.cpp
deleted file mode 100644
index e86cab201d3043328e004af3f41b47cc7677cbf6..0000000000000000000000000000000000000000
--- a/apps/cpu/pDisk/pdisk.cpp
+++ /dev/null
@@ -1,427 +0,0 @@
-
-
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <vfluids.h>
-
-using namespace std;
-
-
-void run(string configname)
-{
-   try
-   {
-      Configuration   config;
-      config.load(configname);
-
-      string          pathname          = config.getString("pathname");
-      string          pathGeo           = config.getString("pathGeo");
-      int             numOfThreads      = config.getInt("numOfThreads");
-      string          diskFilename      = config.getString("diskFilename");
-      string          mastFilename      = config.getString("mastFilename");
-      vector<int>     blocknx           = config.getVector<int>("blocknx");
-      double          restartStep       = config.getDouble("restartStep");
-      double          restartStepStart  = config.getDouble("restartStepStart");
-      double          endTime           = config.getDouble("endTime");
-      double          outTime           = config.getDouble("outTime");
-      double          availMem          = config.getDouble("availMem");
-      bool            logToFile         = config.getBool("logToFile");
-      vector<double>  geoLength         = config.getVector<double>("geoLength");
-      int             refineLevel       = config.getInt("refineLevel");
-      double          Re                = config.getDouble("Re");
-      double          u_LB              = config.getDouble("u_LB");
-      double          rho_LB            = config.getDouble("rho_LB");
-      double          fineNodeDx        = config.getDouble("fineNodeDx");
-      bool            restart           = config.getBool("restart");
-      bool            averaging         = config.getBool("averaging");
-
-      //UbLog::reportingLevel() = logDEBUG5;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-
-#if defined(__unix__)
-      if (myid==0) 
-      {
-         const char* str = pathname.c_str();
-         int status=mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-      }
-#endif 
-
-      if(myid == 0 && logToFile)
-      {
-         stringstream logFilename;
-         logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-         UbLog::output_policy::setStream(logFilename.str());
-      }
-
-      if(myid==0) UBLOG(logINFO,"Test case: porous disk");
-
-      int baseLevel = 0;
-
-      double coarseNodeDx = fineNodeDx * (double)(1<<refineLevel);//geowerte
-
-      double blockLengthx1 = blocknx[0]*coarseNodeDx; //geowerte
-      double blockLengthx2 = blockLengthx1;
-      double blockLengthx3 = blockLengthx1;
-
-      bool periodicx1 = false;
-      bool periodicx2 = true;
-      bool periodicx3 = false;
-
-      int sizeSP= (int)(500.0/coarseNodeDx); //500 mm sponge layer
-      mu::Parser spongeLayer;
-      spongeLayer.SetExpr("x1>=(sizeX-sizeSP)/dt ? (sizeX-x1)/sizeSP/2.0 + 0.5 : 1.0");
-      spongeLayer.DefineConst("sizeX", 5000.0/coarseNodeDx);
-      spongeLayer.DefineConst("sizeSP", sizeSP);
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-      double nu_LB = (u_LB*(geoLength[2]/coarseNodeDx))/Re;
-
-      LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter());
-      
-      Grid3DPtr grid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(restartStep, restartStepStart));
-      RestartPostprocessor rp(grid, rSch, comm, pathname, RestartPostprocessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-
-      
-
-      if (grid->getTimeStep() == 0)
-      {
-         if (myid==0) UBLOG(logINFO, "new start..");
-
-         if (myid==0) UBLOG(logINFO, "load geometry start");
-         GbTriFaceMesh3DPtr geoMast(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+mastFilename, "mast"));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoMast.get(), pathname + "/geo/geoMast", WbWriterVtkXmlBinary::getInstance());
-
-         GbTriFaceMesh3DPtr geoDisk(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+diskFilename, "disk"));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoDisk.get(), pathname + "/geo/geoDisk", WbWriterVtkXmlBinary::getInstance());
-         if (myid==0) UBLOG(logINFO, "load geometry end");
-
-         //bounding box
-         double g_minX1 = geoMast->getX1Centroid() - 2000.0;
-         double g_minX2 = geoMast->getX2Centroid() - 1000.0;
-         double g_minX3 = geoMast->getX3Minimum();
-
-         double g_maxX1 = g_minX1 + geoLength[0];
-         double g_maxX2 = g_minX2 + geoLength[1];
-         double g_maxX3 = g_minX3 + geoLength[2];
-
-         double nx1_temp = floor((g_maxX2-g_minX2) /(coarseNodeDx*(double)blocknx[1]));
-
-         coarseNodeDx = (g_maxX2-g_minX2) /(nx1_temp*(double)blocknx[1]);
-
-         fineNodeDx = coarseNodeDx / (double)(1<<refineLevel);
-
-         //set grid
-         grid->setDeltaX(coarseNodeDx);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-         grid->setPeriodicX1(periodicx1);
-         grid->setPeriodicX2(periodicx2);
-         grid->setPeriodicX3(periodicx3);
-
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         //////////////////////////////////////////////////////////////////////////
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* Parameters                            *");
-            UBLOG(logINFO, "* Re                = "<<Re);
-            UBLOG(logINFO, "* nu_LB             = "<<nu_LB);
-            UBLOG(logINFO, "* u_LB              = "<<u_LB);
-            UBLOG(logINFO, "* cdx               = "<<coarseNodeDx<<" mm");
-            UBLOG(logINFO, "* fdx               = "<<fineNodeDx<<" mm");
-            UBLOG(logINFO, "* nx1/2/3           = "<<grid->getNX1()<<"/"<<grid->getNX2()<<"/"<<grid->getNX3());
-            UBLOG(logINFO, "* blocknx1/2/3      = "<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-            UBLOG(logINFO, "* x1Periodic        = "<<periodicx1);
-            UBLOG(logINFO, "* x2Periodic        = "<<periodicx2);
-            UBLOG(logINFO, "* x3Periodic        = "<<periodicx3);
-            UBLOG(logINFO, "* number of levels  = "<<refineLevel+1);
-            UBLOG(logINFO, "* path              = "<<pathname);
-
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* number of threads    = "<<numOfThreads);
-            UBLOG(logINFO, "* number of processes  = "<<comm->getNumberOfProcesses());
-            UBLOG(logINFO, "*****************************************");
-            //UBLOGML(logINFO, "UnitConverter:"<<unitConverter->toString());
-            //UBLOG(logINFO, "*****************************************");     
-         }
-
-         ////walls
-         GbCuboid3DPtr addWallYmin(new GbCuboid3D(g_minX1-blockLengthx1, g_minX2-blockLengthx1, g_minX3-blockLengthx1, g_maxX1+blockLengthx1, g_minX2, g_maxX3+blockLengthx1));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1-blockLengthx1, g_maxX2, g_minX3-blockLengthx1, g_maxX1+blockLengthx1, g_maxX2+blockLengthx1, g_maxX3+blockLengthx1));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1 - blockLengthx1, g_minX2 - blockLengthx1, g_minX3 - blockLengthx1, g_maxX1 + blockLengthx1, g_maxX2 + blockLengthx1, g_minX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname + "/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1 - blockLengthx1, g_minX2 - blockLengthx1, g_maxX3, g_maxX1 + blockLengthx1, g_maxX2 + blockLengthx1, g_maxX3 + blockLengthx1));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname + "/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcNoSlip(new D3Q27NoSlipBCAdapter(bbOption));
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcNoSlip, Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcNoSlip, Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcNoSlip, Interactor3D::SOLID));
-         D3Q27BoundaryConditionAdapterPtr bcSlip(new D3Q27SlipBCAdapter());
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcSlip, Interactor3D::SOLID));
-
-         D3Q27TriFaceMeshInteractorPtr mastInt(new D3Q27TriFaceMeshInteractor(geoMast, grid, bcNoSlip, Interactor3D::SOLID, Interactor3D::POINTS));
-         D3Q27TriFaceMeshInteractorPtr diskInt(new D3Q27TriFaceMeshInteractor(geoDisk, grid, bcNoSlip, Interactor3D::SOLID, Interactor3D::POINTS));
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLengthx1, g_minX2-blockLengthx1, g_minX3-blockLengthx1, g_minX1, g_maxX2+blockLengthx1, g_maxX3+blockLengthx1));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname + "/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr inflowInt(new D3Q27Interactor(geoInflow, grid, Interactor3D::SOLID));
-
-         //inflow
-         mu::Parser inflowProfile;
-         //inflowProfile.SetExpr("u_ref*(((x3+Z_ref)/Z_ref)^a)");
-         inflowProfile.SetExpr("u_ref");
-         inflowProfile.DefineConst("u_ref", u_LB);
-         inflowProfile.DefineConst("Z_ref", 300.0);
-         inflowProfile.DefineConst("a", 0.143);
-
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter = D3Q27BoundaryConditionAdapterPtr(new D3Q27VelocityBCAdapter(true, false, false, inflowProfile, 0, D3Q27BCFunction::INFCONST));
-         inflowInt->addBCAdapter(velBCAdapter);
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLengthx1, g_minX3-blockLengthx1, g_maxX1+blockLengthx1, g_maxX2+blockLengthx1, g_maxX3+blockLengthx1));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname + "/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rho_LB));
-         D3Q27InteractorPtr outflowInt(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
-
-         {
-            if (myid == 0) UBLOG(logINFO, "Write blocks - start"); 
-            BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-            if (myid == 0)
-               ppblocks->update(0);
-            if (myid == 0) UBLOG(logINFO, "Write blocks - end"); 
-         }
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));	
-        
-         //////////////////////////////////////////////////////////////////////////
-         //refinement
-         double diameter = geoDisk->getLengthX2();
-         GbCuboid3DPtr refineDiskBox(new GbCuboid3D(geoDisk->getX1Centroid()-0.2*diameter, geoDisk->getX2Centroid()-0.6*diameter, geoDisk->getX3Minimum()-diameter, 
-            geoDisk->getX1Centroid() + 1.0*diameter, geoDisk->getX2Centroid()+0.6*diameter, geoDisk->getX3Maximum() + 0.05*diameter));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineDiskBox.get(), pathname + "/geo/refineDiskBox", WbWriterVtkXmlASCII::getInstance());
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(refineDiskBox, refineLevel);
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         {
-            if (myid == 0) UBLOG(logINFO, "Write blocks - start");
-            BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-            if (myid == 0)
-               ppblocks->update(1);
-            if (myid == 0) UBLOG(logINFO, "Write blocks - end");
-         }
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(mastInt);
-         intHelper.addInteractor(diskInt);
-         //intHelper.addInteractor(addWallYminInt);
-         //intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.selectBlocks();
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	 
-         //////////////////////////////////////
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx[0])* (blocknx[1])* (blocknx[2]);
-         unsigned long nod = nob * (blocknx[0])* (blocknx[1])* (blocknx[2]);
-         unsigned long nodg = nob * (blocknx[0] + gl) * (blocknx[1] + gl) * (blocknx[2] + gl);
-         double needMemAll = double(nodg*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << nob);
-            UBLOG(logINFO, "Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*nodb);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         ////////////////////////////
-         LBMKernel3DPtr kernel;
-         //kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-         //with sponge layer
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLBWithSpongeLayer(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-         kernel->setWithSpongeLayer(true);
-         kernel->setSpongeLayer(spongeLayer);
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         BoundaryConditionPtr densityBC(new NonEqDensityBoundaryCondition());
-         BoundaryConditionPtr noSlipBC(new NoSlipBoundaryCondition());
-         BoundaryConditionPtr velocityBC(new VelocityBoundaryCondition());
-         BoundaryConditionPtr slipBC(new SlipBoundaryCondition());
-
-         bcProc->addBC(densityBC);
-         bcProc->addBC(noSlipBC);
-         bcProc->addBC(velocityBC);
-         bcProc->addBC(slipBC);
-         kernel->setBCProcessor(bcProc);
-         SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem);
-         grid->accept(kernelVisitor);
-         //////////////////////////////////
-         //undef nodes
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-         //////////////////////////////////////////
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         intHelper.setBC();
-
-         BoundaryConditionBlockVisitor bcVisitor;
-         grid->accept(bcVisitor);
-
-         //initialization of decompositions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor( nu_LB,rho_LB);
-         //initVisitor.setVx1(inflowProfile);
-         initVisitor.setVx1(u_LB);
-         grid->accept(initVisitor);
-
-         //Postprozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), 
-            unitConverter, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-         geoSch.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end");      
-      }
-      else
-      {
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept( setConnsVisitor );
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-         //SetSpongeLayerBlockVisitor ssp(spongeLayer);
-         //grid->accept(ssp);
-         if(myid == 0) UBLOG(logINFO,"Restart - end"); 
-      }
-      UbSchedulerPtr visSch(new UbScheduler(outTime));
-
-      double startStep = 80000;
-
-      if (averaging)
-      {
-         UbSchedulerPtr resSchRMS(new UbScheduler());
-         resSchRMS->addSchedule(100000, 80000, 10000000);
-         UbSchedulerPtr resSchMeans(new UbScheduler());
-         resSchMeans->addSchedule(100000, 80000, 10000000);
-         UbSchedulerPtr stepAvSch(new UbScheduler());
-         int averageInterval=100;
-         stepAvSch->addSchedule(averageInterval, 0, 10000000);
-
-         AverageValuesPostprocessor Avpp(grid, pathname, WbWriterVtkXmlBinary::getInstance(),
-            visSch/*wann wird rausgeschrieben*/, stepAvSch/*wann wird gemittelt*/, resSchMeans, resSchRMS/*wann wird resettet*/, restart);
-      }
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), unitConverter);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 30));
-      nupsSch->addSchedule(1000, 1000, 1000000000);
-      NUPSCounterPostprocessor npr(grid, nupsSch, numOfThreads, comm);
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      //double endTime = 80001;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout << "Configuration file is missing!" << endl;
-      }
-   }
-
-   return 0;
-}
-
diff --git a/apps/cpu/perm/CMakeLists.txt b/apps/cpu/perm/CMakeLists.txt
deleted file mode 100644
index 72266e07ef2e67c5009946d7707d03857dc44c8d..0000000000000000000000000000000000000000
--- a/apps/cpu/perm/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(perm)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(perm BINARY)
diff --git a/apps/cpu/perm/config.txt b/apps/cpu/perm/config.txt
deleted file mode 100644
index 30d0cb452adb24805fdabb7e24105ad1c029c8e4..0000000000000000000000000000000000000000
--- a/apps/cpu/perm/config.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-pathname = /gfs1/work/niikonst/scratch/permAlu
-pathGeo = /gfs1/work/niikonst/data/materials
-numOfTreads = 24
-
-#poroeses Medium
-
-sampleFilename = alu_80-110.vti
-
-#Diminsion in Voxel
-pmNX1 = 1096
-pmNX2 = 1327
-pmNX3 = 1265
-
-#Threshold
-lthreshold = 29041
-uthreshold = 65535
-
-#Diminsion in m
-pmL1 = 4e-3
-pmL2 = 5e-3
-pmL3 = 5e-3
-
-dp_LB = 0.01
-
-#for Re=2
-nu_LB = 0.02
-
-#for Re=100
-#nu_LB = 0.0004
-
-#nu -= nuFactor*simNumber
-#coefficient for nu (0.02-0.0004)/10
-nuFactor = 0.00196
-#simulation number
-simNumber = 1
-
-restartStep = 20000
-#immer 40000 pro Job
-endTime = 140000
-outTime = 20000
-nupsStep = 10 80010 80100
\ No newline at end of file
diff --git a/apps/cpu/perm/configBombadil.txt b/apps/cpu/perm/configBombadil.txt
deleted file mode 100644
index 4f5a8115b0c56f4dc6afc658192fb948d0c66a55..0000000000000000000000000000000000000000
--- a/apps/cpu/perm/configBombadil.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-pathname = d:/temp/perm2
-pathGeo = d:/Projects/SFB880/GeometrienPoroeseMedien/Alu_80-110
-numOfTreads = 4
-
-#poroeses Medium
-
-sampleFilename = /alu_80-110.vti
-
-#Diminsion in Voxel
-pmNX1 = 200
-pmNX2 = 200
-pmNX3 = 200
-
-#Threshold
-lthreshold = 29041
-uthreshold = 65535
-
-#Diminsion in m
-pmL1 = 0.726e-3
-pmL2 = 0.75e-3
-pmL3 = 0.786e-3
-
-#dp_LB = 1e-9
-dp_LB = 1e-1
-nu_LB = 2e-5
-
-timeSeriesOut = /timeseries/simAlu80_5
-
-restartStep = 300
-restartStepStart = 300
-#immer 40000 pro Job
-endTime = 140000
-outTime = 10
-nupsStep = 10 80010 80100
\ No newline at end of file
diff --git a/apps/cpu/perm/configBombadil2.txt b/apps/cpu/perm/configBombadil2.txt
deleted file mode 100644
index 64bb2fb7f902d0849b478c41fa49f258fdc9995a..0000000000000000000000000000000000000000
--- a/apps/cpu/perm/configBombadil2.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-pathname = d:/temp/perm
-pathGeo = d:/Projects/SFB880/GeometrienPoroeseMedien/Alu_80-110
-numOfTreads = 4
-
-#poroeses Medium
-
-sampleFilename = /alu_80-110.vti
-
-#Diminsion in Voxel
-pmNX1 = 200
-pmNX2 = 200
-pmNX3 = 200
-
-#Threshold
-lthreshold = 29041
-uthreshold = 65535
-
-#Diminsion in m
-pmL1 = 0.726e-3
-pmL2 = 0.75e-3
-pmL3 = 0.786e-3
-
-dp_LB = 0.001
-#nu_LB = 0.168666666667
-#nu_LB = 0.168666666667e-1
-#nu_LB = 0.168666666667e-2
-#nu_LB = 0.168666666667e-3
-nu_LB = 0.168666666667e-4
-
-timeSeriesOut = /timeseries/simAlu80_5
-
-restartStep = 20000
-#immer 40000 pro Job
-endTime = 140000
-outTime = 1000
-nupsStep = 10 80010 80100
\ No newline at end of file
diff --git a/apps/cpu/perm/configBombadilSBP120s.txt b/apps/cpu/perm/configBombadilSBP120s.txt
deleted file mode 100644
index de8aa0694ea499ff23cb17048d5d4b47fa2c5202..0000000000000000000000000000000000000000
--- a/apps/cpu/perm/configBombadilSBP120s.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-#Simulation parameters for determitatoin of permeability
-#SBP120
-
-pathname = d:/temp/perm
-pathGeo = d:/Projects/SFB880/GeometrienPoroeseMedien/SBP120
-numOfThreads = 4
-availMem = 1.2e9
-
-#porous media
-rawFile = false
-sampleFilename = /SPB120s_center_closed.vti
-
-#diminsions [voxel]
-pmNX1 = 680
-pmNX2 = 689
-pmNX3 = 787
-
-#threshold
-lthreshold = 1
-uthreshold = 1
-
-#diminsions [m]
-pmL1 = 2.55e-3
-pmL2 = 2.55000278e-3
-pmL3 = 2.95125e-3
-
-#grid
-blocknx = 10
-nx3 = 10
-
-#physic
-dp_LB = 0.001
-nu_LB = 0.01
-
-timeSeriesOut = /timeseries/simSBP120_1
-
-restartStep = 20000
-restartStepStart=20000
-
-endTime = 140000
-outTime = 1000
diff --git a/apps/cpu/perm/configBombadilSBP120s500.txt b/apps/cpu/perm/configBombadilSBP120s500.txt
deleted file mode 100644
index 89e60d9a17fe690a17cccb1c7df8ec213fa795d4..0000000000000000000000000000000000000000
--- a/apps/cpu/perm/configBombadilSBP120s500.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-#Simulation parameters for determitatoin of permeability
-#SBP120
-
-pathname = d:/temp/perm
-pathGeo = d:/Projects/SFB880/GeometrienPoroeseMedien/SBP120
-numOfThreads = 4
-availMem = 3e9
-logToFile = false
-
-#porous media
-rawFile = false
-sampleFilename = /SBP120s500_center_closed.vti
-
-#diminsions [voxel]
-pmNX1 = 500
-pmNX2 = 500
-pmNX3 = 500
-
-#threshold
-#lthreshold = 38370
-#uthreshold = 65535
-lthreshold = 1
-uthreshold = 1
-
-
-#diminsions [m]
-pmL1 = 1.87e-3
-pmL2 = 1.87e-3
-pmL3 = 1.87e-3
-
-#grid
-#blocknx = 30
-#nx3 = 5
-blocknx = 50
-nx3 = 10
-spongeLayer=true
-
-#physic
-dp_LB = 1e-7
-nu_LB = 0.01
-
-timeSeriesFile = /timeseries/simSBP120_1
-timeSeriesOutTime = 10
-
-restartStep = 20000
-restartStepStart=20000
-
-endTime = 60000
-outTime = 100
diff --git a/apps/cpu/perm/configHlrnAlu.txt b/apps/cpu/perm/configHlrnAlu.txt
deleted file mode 100644
index 101c741be225b854e162c2b8f4b85f7f64885d56..0000000000000000000000000000000000000000
--- a/apps/cpu/perm/configHlrnAlu.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-pathname = /gfs1/work/niikonst/scratch/permAlu80
-pathGeo = /gfs1/work/niikonst/data/materials
-
-numOfTreads = 1
-
-#poroeses Medium
-
-sampleFilename = /alu_80-110.vti
-
-#Diminsion in Voxel
-pmNX1 = 200
-pmNX2 = 200
-pmNX3 = 200
-
-#Threshold
-lthreshold = 29041
-uthreshold = 65535
-
-#Diminsion in m
-pmL1 = 0.726e-3
-pmL2 = 0.75e-3
-pmL3 = 0.786e-3
-
-dp_LB = 0.001
-nu_LB = 0.15
-
-timeSeriesOut = /timeseries/simAlu80_1
-
-restartStep = 20
-#immer 40000 pro Job
-#endTime = 140000
-endTime = 60
-outTime = 10
-nupsStep = 10 80010 80100
\ No newline at end of file
diff --git a/apps/cpu/perm/configSBP120.txt b/apps/cpu/perm/configSBP120.txt
deleted file mode 100644
index 1d28d643c428b45b8ffbf6d882cc09932e08c416..0000000000000000000000000000000000000000
--- a/apps/cpu/perm/configSBP120.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-#
-#Simulation parameters for determitatoin of permeability
-#SBP120
-
-pathname = /beegfs/work/koskuche/perm
-pathGeo = /work/koskuche/data/Permiability/isotropic
-numOfThreads = 10
-availMem = 320e9
-logToFile = true
-
-#porous media
-rawFile = true
-sampleFilename = /Sinterbronze_SBP120_1358x1376x1572.raw
-
-#diminsions [voxel]
-pmNX1 = 1358
-pmNX2 = 1376
-pmNX3 = 1572
-
-#threshold
-lthreshold = 38370
-uthreshold = 65535
-
-#diminsions [m]
-pmL1 = 5092499.73e-9
-pmL2 = 5159999.85e-9
-pmL3 = 5894999.98e-9
-
-#test
-#########################################
-#rawFile = false
-#sampleFilename = /SBP120s500_center.vti
-#pmNX1 = 500
-#pmNX2 = 500
-#pmNX3 = 500
-#lthreshold = 1
-#uthreshold = 1
-#pmL1 = 0.001875
-#pmL2 = 0.001875
-#pmL3 = 0.001875
-########################################
-
-writeSampleToFile = false
-
-#grid
-blocknx = 32
-deltax = 3750e-9
-
-#physic
-dpLB = 1e-7
-nuLB = 0.01
-
-timeSeriesFile = /timeseries/simSBP120_1
-timeSeriesOutTime = 10
-
-restartStep = 20000
-restartStepStart=20000
-
-newStart = true
-restartStep = 31000
-
-cpStep = 1000
-cpStart = 1000
-
-outTimeStep = 1000
-outTimeStart = 1000
-
-nupsStep = 100 100 10000000
-
-endTime = 390000000
diff --git a/apps/cpu/perm/config_HLRS_SBP120.cfg b/apps/cpu/perm/config_HLRS_SBP120.cfg
deleted file mode 100644
index 54ceee42016bd06904a472fedccb35c68bbb06be..0000000000000000000000000000000000000000
--- a/apps/cpu/perm/config_HLRS_SBP120.cfg
+++ /dev/null
@@ -1,43 +0,0 @@
-#HLRS
-#Simulation parameters for determitatoin of permeability
-#SBP120
-
-pathname = /univ_1/ws1/ws/xrmkuchr-perm-0/SBP120
-pathGeo = /univ_1/ws1/ws/xrmkuchr-perm-0/SBP120/Data
-numOfThreads = 24
-availMem = 128e9
-logToFile = true
-#porous media
-rawFile = false
-sampleFilename = /Sinterbronze_SBP120_1358x1376x1572.raw
-
-#diminsions [voxel]
-pmNX1 = 1358
-pmNX2 = 1376
-pmNX3 = 1572
-
-#threshold
-lthreshold = 38370
-uthreshold = 65535
-
-#diminsions [m]
-pmL1 = 5092499.73e-9
-pmL2 = 5159999.85e-9
-pmL3 = 5894999.98e-9
-
-#grid
-blocknx = 64
-nx3 = 22
-
-#physic
-dp_LB = 1e-7
-nu_LB = 0.01
-
-timeSeriesFile = /timeseries/simSBP120_1
-timeSeriesOutTime = 100
-
-restartStep = 1000
-restartStepStart=1000
-
-endTime = 2000
-outTime = 1000
diff --git a/apps/cpu/perm/perm.cpp b/apps/cpu/perm/perm.cpp
deleted file mode 100644
index e979f9439bc38f727a90a8a98494d59e1e8f3700..0000000000000000000000000000000000000000
--- a/apps/cpu/perm/perm.cpp
+++ /dev/null
@@ -1,513 +0,0 @@
-#include <iostream>
-#include <string>
-#include <VirtualFluids.h>
-
-using namespace std;
-
-//////////////////////////////////////////////////////////////////////////
-void perm(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathname = config.getValue<string>("pathname");
-      string          pathGeo = config.getValue<string>("pathGeo");
-      int             numOfThreads = config.getValue<int>("numOfThreads");
-      string          sampleFilename = config.getValue<string>("sampleFilename");
-      int             pmNX1 = config.getValue<int>("pmNX1");
-      int             pmNX2 = config.getValue<int>("pmNX2");
-      int             pmNX3 = config.getValue<int>("pmNX3");
-      double          lthreshold = config.getValue<double>("lthreshold");
-      double          uthreshold = config.getValue<double>("uthreshold");
-      double          pmL1 = config.getValue<double>("pmL1");
-      double          pmL2 = config.getValue<double>("pmL2");
-      double          pmL3 = config.getValue<double>("pmL3");
-      int             blocknx = config.getValue<int>("blocknx");
-      double          dpLB = config.getValue<double>("dpLB");
-      double          nuLB = config.getValue<double>("nuLB");
-      string          timeSeriesFile = config.getValue<string>("timeSeriesFile");
-      double          restartStep = config.getValue<double>("restartStep");
-      double          restartStepStart = config.getValue<double>("restartStepStart");
-      double          endTime = config.getValue<double>("endTime");
-      double          availMem = config.getValue<double>("availMem");
-      bool            rawFile = config.getValue<bool>("rawFile");
-      double          timeSeriesOutTime = config.getValue<double>("timeSeriesOutTime");
-      bool            logToFile = config.getValue<bool>("logToFile");
-      bool            newStart = config.getValue<bool>("newStart");
-      double          cpStart = config.getValue<double>("cpStart");
-      double          cpStep = config.getValue<double>("cpStep");
-      vector<double>  nupsStep = config.getVector<double>("nupsStep");
-      double          outTimeStep = config.getValue<double>("outTimeStep");
-      double          outTimeStart = config.getValue<double>("outTimeStart");
-      double          deltax = config.getValue<double>("deltax");
-      bool            writeSampleToFile = config.getValue<bool>("writeSampleToFile");
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathname.c_str();
-            int status = mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if (myid == 0)
-         {
-            stringstream logFilename;
-            logFilename << pathname + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      //Sleep(30000);
-
-      if (myid == 0) UBLOG(logINFO, "Testcase permeability");
-
-      if (myid == 0)
-      {
-         //string machinename = UbSystem::getMachineName();
-         //UBLOG(logINFO, "PID = " << myid << " Hostname: " << machinename);
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      int blocknx1 = blocknx;
-      int blocknx2 = blocknx;
-      int blocknx3 = blocknx;
-
-      LBMReal rhoLB = 0.0;
-
-      double rhoLBinflow = dpLB*3.0;
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      double coord[6];
-
-
-
-      ///close void space
-      //////////////////////////////////////////////////////////////////////////
-      //{
-      //   string samplePathname = pathGeo + sampleFilename;
-
-      //   double deltaVoxelX1 = pmL1/(double)pmNX1;
-      //   double deltaVoxelX2 = pmL2/(double)pmNX2;
-      //   double deltaVoxelX3 = pmL3/(double)pmNX3;
-
-      //   GbVoxelMatrix3DPtr sample(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-      //   if (rawFile)
-      //   {
-      //      sample->readMatrixFromRawFile<unsigned short>(samplePathname, GbVoxelMatrix3D::BigEndian);
-      //   }
-      //   else
-      //   {
-      //      sample->readMatrixFromVtiASCIIFile(samplePathname);
-      //   }
-
-      //   sample->setVoxelMatrixDelta((float)deltaVoxelX1, (float)deltaVoxelX2, (float)deltaVoxelX3);
-      //   sample->setVoxelMatrixMininum(0.0, 0.0, 0.0);
-
-      //   if (myid == 0) sample->writeToVTKImageDataASCII(pathname + "/geo/sampleOpen");
-      //   sample->calculateNumberOfSolidAndFluid();
-      //   if (myid == 0)  UBLOG(logINFO, "number of solid = "<<sample->getNumberOfSolid());
-      //   if (myid == 0)  UBLOG(logINFO, "number of fluid = "<<sample->getNumberOfFluid());
-
-      //   sample->setClosedVoidSpaceToSolid();
-
-      //   if (myid == 0) sample->writeToVTKImageDataASCII(pathname + "/geo/sampleClosed");
-
-      //   sample->calculateNumberOfSolidAndFluid();
-      //   if (myid == 0)  UBLOG(logINFO, "number of solid = "<<sample->getNumberOfSolid());
-      //   if (myid == 0)  UBLOG(logINFO, "number of fluid = "<<sample->getNumberOfFluid());
-
-      //   UBLOG(logINFO, "Finish!");
-      //   return;
-      //}
-      //////////////////////////////////////////////////////////////////////////
-
-      ////////////////////////////////////////////////////////////////////////
-      //Grid
-      //////////////////////////////////////////////////////////////////////////
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      //BC adapters
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapterInflow(new DensityBCAdapter(rhoLBinflow));
-      denBCAdapterInflow->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapterOutflow(new DensityBCAdapter(rhoLB));
-      denBCAdapterOutflow->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-
-      //////////////////////////////////////////////////////////////////////////////////
-      //BS visitor
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      bcVisitor.addBC(denBCAdapterInflow);
-      bcVisitor.addBC(denBCAdapterOutflow);;
-
-      SPtr<BCProcessor> bcProc;
-      bcProc = SPtr<BCProcessor>(new BCProcessor());
-
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel());
-
-      kernel->setBCProcessor(bcProc);
-
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<UbScheduler> mSch(new UbScheduler(cpStep, cpStart));
-      SPtr<MPIIOMigrationCoProcessor> migCoProcessor(new MPIIOMigrationCoProcessor(grid, mSch, pathname+"/mig", comm));
-      migCoProcessor->setLBMKernel(kernel);
-      migCoProcessor->setBCProcessor(bcProc);
-      //////////////////////////////////////////////////////////////////////////
-      
-	 if (myid == 0)
-	 {
-		UBLOG(logINFO, "Parameters:");
-		UBLOG(logINFO, "rhoLB = " << rhoLB);
-		UBLOG(logINFO, "nuLB = " << nuLB);
-		UBLOG(logINFO, "dpLB = " << dpLB);
-		UBLOG(logINFO, "dx = " << deltax << " m");
-
-		UBLOG(logINFO, "numOfThreads = " << numOfThreads);
-		UBLOG(logINFO, "path = " << pathname);
-		UBLOG(logINFO, "Preprozess - start");
-	 }      
-
-      if (newStart)
-      {
-         if (myid == 0) UBLOG(logINFO, "new start..");
-
-         if (myid == 0)
-         {
-            //UBLOG(logINFO, "new start PID = " << myid << " Hostname: " << machinename);
-            UBLOG(logINFO, "new start PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-            UBLOG(logINFO, "new start PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-            UBLOG(logINFO, "new start PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-         }
-
-         string samplePathname = pathGeo + sampleFilename;
-
-         double deltaVoxelX1 = pmL1/(double)pmNX1;
-         double deltaVoxelX2 = pmL2/(double)pmNX2;
-         double deltaVoxelX3 = pmL3/(double)pmNX3;
-
-         SPtr<GbVoxelMatrix3D> sample(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-         if (rawFile)
-         {
-            sample->readMatrixFromRawFile<unsigned short>(samplePathname, GbVoxelMatrix3D::BigEndian);
-         }
-         else
-         {
-            sample->readMatrixFromVtiASCIIFile(samplePathname);
-         }
-
-         sample->setVoxelMatrixDelta((float)deltaVoxelX1, (float)deltaVoxelX2, (float)deltaVoxelX3);
-         sample->setVoxelMatrixMininum(0.0, 0.0, 0.0);
-
-         if (myid == 0 && writeSampleToFile) sample->writeToVTKImageDataASCII(pathname + "/geo/sample");
-
-         ///////////////////////////////////////////////////////
-
-         ////////////////////////////////////////////////////////////////////////
-
-         double offset1 = sample->getLengthX1()/10.0;
-         double offset2 = 2.0*offset1;
-         //bounding box
-         double g_minX1 = sample->getX1Minimum() - offset1;
-         double g_minX2 = sample->getX2Minimum();
-         double g_minX3 = sample->getX3Minimum();
-
-         double g_maxX1 = sample->getX1Maximum() + offset2;
-         double g_maxX2 = sample->getX2Maximum();
-         double g_maxX3 = sample->getX3Maximum();
-
-         double blockLength = (double)blocknx1*deltax;
-
-         grid->setPeriodicX1(false);
-         grid->setPeriodicX2(false);
-         grid->setPeriodicX3(false);
-         grid->setDeltaX(deltax);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-         SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         //walls
-         GbCuboid3DPtr addWallYmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_minX2, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1-blockLength, g_maxX2, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname + "/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname + "/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         //PM interactor
-         SPtr<D3Q27Interactor> sampleInt(new D3Q27Interactor(sample, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         //wall interactors
-         SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-		 //inflow
-         SPtr<D3Q27Interactor> inflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, denBCAdapterInflow, Interactor3D::SOLID));
-
-         //outflow
-         SPtr<D3Q27Interactor> outflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denBCAdapterOutflow, Interactor3D::SOLID));;
-
-         if (myid == 0)
-         {
-            //UBLOG(logINFO, "PID = " << myid << " Hostname: " << machinename);
-            UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-            UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-            UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-         }
-
-         ////////////////////////////////////////////
-         //METIS
-          SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B, MetisPartitioner::RECURSIVE));
-         ////////////////////////////////////////////
-
-         /////delete solid blocks
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.addInteractor(sampleInt);
-         intHelper.selectBlocks();
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         {
-            WriteBlocksCoProcessor ppblocks(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppblocks.process(1);
-         }
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nod = nob * (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nodg = nob * (blocknx1 + gl) * (blocknx2 + gl) * (blocknx3 + gl);
-         double needMemAll = double(nodg*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << nob);
-            UBLOG(logINFO, "Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*nodb);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-
-         //BC
-         intHelper.setBC();
-
-
-         //Press*1.6e8+(14.76-coordsX)/3.5*5000
-         //initialization of distributions
-         mu::Parser fct;
-         fct.SetExpr("(x1max-x1)/l*dp*3.0");
-         fct.DefineConst("dp", dpLB);
-         fct.DefineConst("x1max", g_maxX1);
-         fct.DefineConst("l", g_maxX1-g_minX1);
-
-         InitDistributionsBlockVisitor initVisitor;
-         initVisitor.setRho(fct);
-         grid->accept(initVisitor);
-
-         //Post process
-         {
-            SPtr<UbScheduler> geoSch(new UbScheduler(1));
-            WriteBoundaryConditionsCoProcessor ppgeo(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm);
-            ppgeo.process(0);
-         }
-
-         coord[0] = sample->getX1Minimum();
-         coord[1] = sample->getX2Minimum();
-         coord[2] = sample->getX3Minimum();
-         coord[3] = sample->getX1Maximum();
-         coord[4] = sample->getX2Maximum();
-         coord[5] = sample->getX3Maximum();
-
-         ////////////////////////////////////////////////////////
-         FILE * pFile;
-         string str = pathname + "/checkpoints/coord.txt";
-         pFile = fopen(str.c_str(), "w");
-         fprintf(pFile, "%g\n", deltax);
-         fprintf(pFile, "%g\n", coord[0]);
-         fprintf(pFile, "%g\n", coord[1]);
-         fprintf(pFile, "%g\n", coord[2]);
-         fprintf(pFile, "%g\n", coord[3]);
-         fprintf(pFile, "%g\n", coord[4]);
-         fprintf(pFile, "%g\n", coord[5]);
-         fclose(pFile);
-         ////////////////////////////////////////////////////////
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         ////////////////////////////////////////////////////////
-         FILE * pFile;
-         string str = pathname + "/checkpoints/coord.txt";
-         pFile = fopen(str.c_str(), "r");
-         fscanf(pFile, "%lg\n", &deltax);
-         fscanf(pFile, "%lg\n", &coord[0]);
-         fscanf(pFile, "%lg\n", &coord[1]);
-         fscanf(pFile, "%lg\n", &coord[2]);
-         fscanf(pFile, "%lg\n", &coord[3]);
-         fscanf(pFile, "%lg\n", &coord[4]);
-         fscanf(pFile, "%lg\n", &coord[5]);
-         fclose(pFile);
-         ////////////////////////////////////////////////////////
-
-         migCoProcessor->restart((int)restartStep);
-         grid->setTimeStep(restartStep);
-         
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-      }
-      
-      ////set connectors
-      SPtr<InterpolationProcessor> iProcessor(new CompressibleOffsetMomentsInterpolationProcessor());
-      SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-      grid->accept(setConnsVisitor);
-
-      //bcVisitor should be accept after initialization!!!!
-      grid->accept(bcVisitor);
-      if (myid == 0) UBLOG(logINFO, "grid->accept(bcVisitor):end");
-      
-      SPtr<UbScheduler> nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      std::shared_ptr<CoProcessor> nupsCoProcessor(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTimeStep, outTimeStart));
-
-      SPtr<CoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-
-      deltax = grid->getDeltaX(baseLevel);
-      double dxd2 = deltax / 2.0;
-
-      SPtr<IntegrateValuesHelper> ih1(new IntegrateValuesHelper(grid, comm, coord[0] - dxd2*10.0, coord[1] - dxd2, coord[2] - dxd2,
-         coord[0] - dxd2*10.0 - 2.0*dxd2, coord[4] + dxd2, coord[5] + dxd2));
-
-      //D3Q27IntegrateValuesHelperPtr ih2(new D3Q27IntegrateValuesHelper(grid, comm, coord[3]/2.0, coord[1] - dxd2, coord[2] - dxd2,
-      //   coord[3]/2.0 + 2.0*dxd2, coord[4] + dxd2, coord[5] + dxd2));
-      SPtr<IntegrateValuesHelper> ih2(new IntegrateValuesHelper(grid, comm, coord[0], coord[1], coord[2], coord[3], coord[4], coord[5]));
-
-      SPtr<IntegrateValuesHelper> ih3(new IntegrateValuesHelper(grid, comm, coord[3] + dxd2*10.0, coord[1] - dxd2, coord[2] - dxd2,
-         coord[3] + dxd2*10.0 + 2.0*dxd2, coord[4] + dxd2, coord[5] + dxd2));
-
-      //D3Q27IntegrateValuesHelperPtr ih1(new D3Q27IntegrateValuesHelper(grid, comm, coord[0], coord[1], coord[2], coord[3], coord[4], coord[5]));
-      if (myid == 0) GbSystem3D::writeGeoObject(ih1->getBoundingBox().get(), pathname + "/geo/ih1", WbWriterVtkXmlBinary::getInstance());
-      if (myid == 0) GbSystem3D::writeGeoObject(ih2->getBoundingBox().get(), pathname + "/geo/ih2", WbWriterVtkXmlBinary::getInstance());
-      if (myid == 0) GbSystem3D::writeGeoObject(ih3->getBoundingBox().get(), pathname + "/geo/ih3", WbWriterVtkXmlBinary::getInstance());
-
-      double factorp = 1; // dp_real / dpLB;
-      double factorv = 1;// dx / dt;
-      SPtr<UbScheduler> stepMV(new UbScheduler(timeSeriesOutTime));
-      
-      SPtr<CoProcessor> tsp1(new TimeseriesCoProcessor(grid, stepMV, ih1, pathname+timeSeriesFile+"_1", comm));
-      SPtr<CoProcessor> tsp2(new TimeseriesCoProcessor(grid, stepMV, ih2, pathname+timeSeriesFile+"_2", comm));
-      SPtr<CoProcessor> tsp3(new TimeseriesCoProcessor(grid, stepMV, ih3, pathname+timeSeriesFile+"_3", comm));
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      omp_set_num_threads(numOfThreads);
-      SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
-      calculator->addCoProcessor(nupsCoProcessor);
-      calculator->addCoProcessor(tsp1);
-      calculator->addCoProcessor(tsp2);
-      calculator->addCoProcessor(tsp3);
-      calculator->addCoProcessor(writeMQCoProcessor);
-      calculator->addCoProcessor(migCoProcessor);
-      
-
-
-      if (myid==0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
-      if (myid==0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-      {
-         perm(string(argv[1]));
-      }
-      else
-      {
-         cout<<"Configuration file must be set!: "<<argv[0]<<" <config file>"<<endl<<std::flush;
-      }
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/perm/perm.cpp_s b/apps/cpu/perm/perm.cpp_s
deleted file mode 100644
index 799c6d50c7d22b2c12347773da3144890f5049ec..0000000000000000000000000000000000000000
--- a/apps/cpu/perm/perm.cpp_s
+++ /dev/null
@@ -1,442 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <vfluids.h>
-
-using namespace std;
-
-
-void perm(const char *configname)
-{
-   try
-   {
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname, pathGeo;
-      int numOfThreads;
-      double availMem;
-
-      ConfigFileReader cf(configname);
-      if (!cf.read())
-      {
-         std::string exceptionText = "Unable to read configuration file\n";
-         throw exceptionText;
-      }
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (machine == "BOMBADIL")
-      {
-         numOfThreads = 4;
-         pathname = "d:/temp/perm";
-         pathGeo = "d:/Projects/SFB880/GeometrienPoroeseMedien/Allu_80-110";
-         availMem = 15.0e9;
-      }
-      else //if (machine == "M01" || machine == "M02")
-      {
-         numOfThreads = UbSystem::stringTo<int>(cf.getValue("numOfTreads"));
-         pathname = cf.getValue("pathname");
-         pathGeo = cf.getValue("pathGeo");
-         availMem = 12.0e9;
-
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathname.c_str();
-            int status = mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if (myid == 0)
-         {
-            stringstream logFilename;
-            logFilename << pathname + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + ".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      //else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-
-
-      if (myid == 0) UBLOG(logINFO, "Testcase permebility");
-
-      Grid3DPtr grid(new Grid3D(comm));
-  
-      const int blocknx1 = 64;
-      const int blocknx2 = 64;
-      const int blocknx3 = 64;
-
-      LBMReal rho_LB = 0.0;
-
-      //Re = (Lp*u)/nu, Lp - size of pore, u - volume-avaraged velocity, nu - viscositi
-      double Re = 1.0;
-      double u_LB = 0.01;
-
-      //dp/dx ~ u for laminar flow
-      double dp_LB = 0.0001;
-      double rhoLBinflow = dp_LB*3.0;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = 0;
-
-      double nx3 = 3.0; //number of blocks for z
-      double deltax;
-      double coord[6];
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(50000, 50000, 10000000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname, RestartPostprocessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (grid->getTimeStep() == 0)
-      {
-         if (myid == 0) UBLOG(logINFO, "Neustart..");
-
-         string sampleFilename = pathGeo + "/alu_80-110.vti";
-
-         int pmNX1 = 200;  //abmessung einzelbild in x-richtung
-         int pmNX2 = 200; //abmessung einzelbild in y richtung
-         int pmNX3 = 200; //anzahl der bilder
-
-         float lthreshold = 29041.0;
-         float uthreshold = 65535.0;
-         double deltaVoxelX1 = 4e-3/1096.0;
-         double deltaVoxelX2 = 5e-3/1327.0;
-         double deltaVoxelX3 = 5e-3/1265.0;
-
-
-         GbVoxelMatrix3DPtr sample(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-         //sample->readMatrixFromRawFile<unsigned char>(sampleFilename, GbVoxelMatrix3D::BigEndian);
-         sample->readMatrixFromVtiASCIIFile(sampleFilename);
-         sample->setVoxelMatrixDelta(deltaVoxelX1, deltaVoxelX2, deltaVoxelX3);
-         sample->setVoxelMatrixMininum(0.0, 0.0, 0.0);
-
-         if (myid == 0) sample->writeToVTKImageDataASCII(pathname + "/geo/sample");
-
-         ///////////////////////////////////////////////////////
-
-         ////////////////////////////////////////////////////////////////////////
-
-         double offset = 0.2e-3; //0.5e-3;
-         //bounding box
-         double g_minX1 = sample->getX1Minimum() - offset;
-         double g_minX2 = sample->getX2Minimum();
-         double g_minX3 = sample->getX3Minimum();
-
-         double g_maxX1 = sample->getX1Maximum() + offset;
-         double g_maxX2 = sample->getX2Maximum();
-         double g_maxX3 = sample->getX3Maximum();
-
-         deltax = (g_maxX3-g_minX3) /(nx3*blocknx3);
-
-         double Lp = 90e-6/deltax;
-         double nu_LB = (Lp*u_LB)/Re;
-
-
-         double blockLength = (double)blocknx1*deltax;
-
-         grid->setPeriodicX1(false);
-         grid->setPeriodicX2(false);
-         grid->setPeriodicX3(false);
-         grid->setDeltaX(deltax);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            //UBLOG(logINFO, "with forcing = " << with_forcing);
-            UBLOG(logINFO, "rho_LB = " << rho_LB);
-            UBLOG(logINFO, "nu_LB = " << nu_LB);
-            UBLOG(logINFO, "dp_LB = " << dp_LB);
-            UBLOG(logINFO, "u_LB = " << u_LB);
-            //UBLOG(logINFO, "forcing = " << forcing);
-            UBLOG(logINFO, "dx = " << deltax << " m");
-            //UBLOG(logINFO, "dt = " << dt << " s");
-            //UBLOG(logINFO, "rho_real = " << rho_real << " kg*m^-3");
-            //UBLOG(logINFO, "nu_real = " << nu_real << " m^2/s");
-            //UBLOG(logINFO, "dp_real = " << dp_real << " Pa");
-
-            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
-            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
-            UBLOG(logINFO, "path = " << pathname);
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         //walls
-         GbCuboid3DPtr addWallYmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_minX2, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1-blockLength, g_maxX2, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname + "/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname + "/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         //bone interactor
-         int bcOptionNoSlip = 1; //0=simple Bounce Back, 1=quadr. BB, 2=thin wall
-         D3Q27BoundaryConditionAdapterPtr bcNoSlip(new D3Q27NoSlipBCAdapter(bcOptionNoSlip));
-         D3Q27InteractorPtr sampleInt(new D3Q27Interactor(sample, grid, bcNoSlip, Interactor3D::SOLID));
-
-         //wall interactors
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcNoSlip, Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcNoSlip, Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcNoSlip, Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcNoSlip, Interactor3D::SOLID));
-
-         D3Q27BoundaryConditionAdapterPtr denBCAdapterInflow(new D3Q27DensityBCAdapter(rhoLBinflow));
-         denBCAdapterInflow->setSecondaryBcOption(0);
-         D3Q27InteractorPtr inflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoInflow, grid, denBCAdapterInflow, Interactor3D::SOLID));
-
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapterOutflow(new D3Q27DensityBCAdapter(rho_LB));
-         denBCAdapterOutflow->setSecondaryBcOption(0);
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoOutflow, grid, denBCAdapterOutflow, Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW));
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(sampleInt);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.selectBlocks();
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nod = nob * (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nodg = nob * (blocknx1 + gl) * (blocknx2 + gl) * (blocknx3 + gl);
-         double needMemAll = double(nodg*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << nob);
-            UBLOG(logINFO, "Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*nodb);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         LBMKernel3DPtr kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-
-         //mu::Parser fctForcingX3;
-         //fctForcingX3.SetExpr("Fx3");
-         //fctForcingX3.DefineConst("Fx3", forcing);
-
-         //kernel->setForcingX3(fctForcingX3);
-         //kernel->setWithForcing(true);
-
-         //BCProcessorPtr bcProc(new D3Q27ETForThinWallBCProcessor());
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-
-         //BC
-         intHelper.setBC();
-
-         //Press*1.6e8+(14.76-coordsX)/3.5*5000
-         //initialization of distributions
-         //mu::Parser fct;
-         //fct.SetExpr("(x1max-x1)/l*dp*3.0");
-         //fct.DefineConst("dp", dp_LB);
-         //fct.DefineConst("x3max", g_maxX3);
-         //fct.DefineConst("l", g_maxX3-g_minX3);
-
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(nu_LB, rho_LB);
-         //initVisitor.setRho(fct);
-         //initVisitor.setVx1(fct);
-         initVisitor.setVx1(0);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-
-         coord[0] = sample->getX1Minimum();
-         coord[1] = sample->getX2Minimum();
-         coord[2] = sample->getX3Minimum();
-         coord[3] = sample->getX1Maximum();
-         coord[4] = sample->getX2Maximum();
-         coord[5] = sample->getX3Maximum();
-
-         ////////////////////////////////////////////////////////
-         FILE * pFile;
-         string str = pathname + "/checkpoints/coord.txt";
-         pFile = fopen(str.c_str(), "w");
-         fprintf(pFile, "%f\n", deltax);
-         fprintf(pFile, "%f\n", coord[0]);
-         fprintf(pFile, "%f\n", coord[1]);
-         fprintf(pFile, "%f\n", coord[2]);
-         fprintf(pFile, "%f\n", coord[3]);
-         fprintf(pFile, "%f\n", coord[4]);
-         fprintf(pFile, "%f\n", coord[5]);
-         fclose(pFile);
-         ////////////////////////////////////////////////////////
-
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         ////////////////////////////////////////////////////////
-         FILE * pFile;
-         string str = pathname + "/checkpoints/coord.txt";
-         pFile = fopen(str.c_str(), "r");
-         fscanf(pFile, "%f\n", &deltax);
-         fscanf(pFile, "%f\n", &coord[0]);
-         fscanf(pFile, "%f\n", &coord[1]);
-         fscanf(pFile, "%f\n", &coord[2]);
-         fscanf(pFile, "%f\n", &coord[3]);
-         fscanf(pFile, "%f\n", &coord[4]);
-         fscanf(pFile, "%f\n", &coord[5]);
-         fclose(pFile);
-         ////////////////////////////////////////////////////////
-
-         double Lp = 0.35e-3/deltax;
-         double nu_LB = (Lp*u_LB)/Re;
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-
-
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-      }
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, numOfThreads, comm);
-
-      double outTime = 30000;
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      stepSch->addSchedule(10, 10, 10);
-      stepSch->addSchedule(100, 100, 100);
-      stepSch->addSchedule(1000, 1000, 1000);
-      stepSch->addSchedule(100, 1500, 2000);
-      stepSch->addSchedule(10000, 10000, 10000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv);
-
-      double dxd2 = deltax / 2.0;
-      //D3Q27IntegrateValuesHelperPtr ih1(new D3Q27IntegrateValuesHelper(grid, comm, coord[0] - dxd2, coord[1] - dxd2, coord[2] - dxd2,
-      //   coord[3] + dxd2, coord[4] + dxd2, coord[5] + dxd2));
-      //if (myid == 0) GbSystem3D::writeGeoObject(ih1->getBoundingBox().get(), pathname + "/geo/ih1", WbWriterVtkXmlBinary::getInstance());
-
-      D3Q27IntegrateValuesHelperPtr ih1(new D3Q27IntegrateValuesHelper(grid, comm, coord[3] + dxd2, coord[1] - dxd2, coord[2] - dxd2,
-         coord[3] + 2.0*dxd2, coord[4] + dxd2, coord[5] + dxd2));
-      if (myid == 0) GbSystem3D::writeGeoObject(ih1->getBoundingBox().get(), pathname + "/geo/ih1", WbWriterVtkXmlBinary::getInstance());
-
-      double factorp = 1; // dp_real / dp_LB;
-      double factorv = 1;// dx / dt;
-      UbSchedulerPtr stepMV(new UbScheduler(1));
-      D3Q27MeanValuesPostprocessor mvp1(grid, stepMV, pathname + "/mv/mv1.txt", comm, ih1, factorp, factorv);
-
-
-      //D3Q27IntegrateValuesHelperPtr ih2(new D3Q27IntegrateValuesHelper(grid, comm, g_maxX1-2.0*deltax, g_minX2, g_minX3,
-      //   g_maxX1 - deltax, g_maxX2, g_maxX3));
-      //if (myid == 0) GbSystem3D::writeGeoObject(ih2->getBoundingBox().get(), pathname + "/geo/ih2", WbWriterVtkXmlBinary::getInstance());
-
-      //D3Q27MeanValuesPostprocessor mvp2(grid, stepSch, pathname + "/mv/mv2.txt", comm, ih2, factorp, factorv);
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << MemoryUtil::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << MemoryUtil::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << MemoryUtil::getPhysMemUsedByMe());
-      }
-
-      double endTime = UbSystem::stringTo<double>(cf.getValue("endTime")); //100001;//10001.0;
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepMV));
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-
-   if (argv != NULL)
-   {
-      perm(argv[1]);
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/plate/CMakeLists.txt b/apps/cpu/plate/CMakeLists.txt
deleted file mode 100644
index e239e51050d988321fbdd347bd1d89722c788d2a..0000000000000000000000000000000000000000
--- a/apps/cpu/plate/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(plate)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(plate BINARY)
diff --git a/apps/cpu/plate/plate.cpp b/apps/cpu/plate/plate.cpp
deleted file mode 100644
index cb851e89625c1033fd58460070b5c35b5d923692..0000000000000000000000000000000000000000
--- a/apps/cpu/plate/plate.cpp
+++ /dev/null
@@ -1,652 +0,0 @@
-
-
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <vfluids.h>
-
-using namespace std;
-
-
-void run(const char *cstr, double endTime)
-{
-   try
-   {
-      string pathname; 
-      string pathGeo;
-      string pathLog;
-      string PlatteFilename;
-      string ZckbndFilename;
-      int numOfThreads = 1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      //UbLog::reportingLevel() = logDEBUG5;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      string machine = string(cstr);
-
-      if(machine == "my") 
-      {
-         pathname = "d:/temp/plate";
-         pathGeo = "d:/Data/plate";
-         pathLog = "d:/temp/plate";
-         numOfThreads = 6;
-         logfile = false;
-         availMem = 15.0e9;
-      }
-      else if(machine == "Ludwig")      
-      {
-         pathname = "/work/koskuche/SFB880/plateR1e06";
-         pathGeo = "/home/koskuche/data/plate";
-         pathLog = "/work/koskuche/SFB880/plateR1e06";
-         numOfThreads = 1;
-         availMem = 1.0e9;
-         logfile = true;
-      }
-      else if(machine == "Hermit")      
-      {
-         //Hermit
-         pathname = "/univ_1/ws1/ws/xrmkuchr-plate3-0";
-         pathGeo = "/zhome/academic/HLRS/xrm/xrmkuchr/data/plate";
-         pathLog = "/zhome/academic/HLRS/xrm/xrmkuchr/work/plate";
-         numOfThreads = 16;
-         availMem = 2.0e9;
-         logfile = true;
-      }
-      else if(machine == "HLRN")      
-      {
-         //Hermit
-         pathname = "/gfs1/work/niivfcpu/scratch/plate";
-         pathGeo = "/gfs1/work/niivfcpu/data/plate";
-         pathLog = "/gfs1/work/niivfcpu/scratch/plate";
-         numOfThreads = 24;
-         availMem = 12.0e9;
-         logfile = true;
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-#if defined(__unix__)
-      if (myid==0) 
-      {
-         const char* str = pathLog.c_str();
-         int status=mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-      }
-#endif 
-
-      if(myid == 0 && logfile)
-      {
-         logFilename <<  pathLog + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-      }
-
-      if(myid ==0 && logfile)
-      {
-         UbLog::output_policy::setStream(logFilename.str());
-      }
-
-      if(myid==0) UBLOG(logINFO,"Testcase plate");
-
-      PlatteFilename = pathGeo + "/platte_raw.stl"; 
-      ZckbndFilename= pathGeo + "/2zackenbaender0.stl";
-
-      int baseLevel, refineLevel,nx[3],blocknx[3];
-      double Re,velocity,rhoInit,vx1Init;
-
-      //////////////////////////////////////////////////////////////////////////
-      //physik
-      //////////////////////////////////////////////////////////////////////////
-      Re            = 1e6; //11900;// 13286;//13286;//gemessen 18.98 m/s...*spaeter koorestur michael moessner 17m/s
-      velocity      = 0.1;  
-      vx1Init       = 0.1;  
-      rhoInit       = 0.0;
-
-      //int H=200;//200;//392;
-      ///////////////Knotenabmessungen:
-      nx[0]      = 50;//240;//120;//60;//86;//43;//65;//50;  //länge
-      nx[1]      = 1;//2;//6;///1;//5;// //breite
-      nx[2]      = 16;//64;//32;//18;//5;//15;//15; //höhe gebiet
-      blocknx[0] = 25;//10;//6;
-      blocknx[1] = 25;//10;//6;
-      blocknx[2] = 25;//10;//6;
-
-      baseLevel   = 0;
-      refineLevel = 4;
-
-      ///////////////Weltabmessungen:
-      double kanalhoeheSI  = 60.0/100.0;//60.0/100.0;//cm, Kanalhöhe
-      double kanalbreiteSI = kanalhoeheSI*((double)nx[1])/((double)nx[2]);//=kanalhöhe*nx1/nx2//1.65/100.0;//13.2/100.0;////40.0/100.0; //cm, Kanalbreite //13.2 zeilbreite
-      double kanallaengeSI = kanalhoeheSI*((double)nx[0])/((double)nx[2]);//80.0/100.0;//cm, Kanallänge, ist nicht angegeben
-
-      // double refinewidth1=kanalhoeheSI/10.0;
-
-
-      double fineNodeDx   = (kanalhoeheSI) / (double)( blocknx[2]*nx[2]*(1<<refineLevel)+1 ); //+1--> gitter liegt jeweils 0.5dx innerhalb
-      //double fineNodeDx   = hReal/100.0;
-      double coarseNodeDx = fineNodeDx * (double)(1<<refineLevel);//geowerte
-
-      double blockLengthx1 = blocknx[0]*coarseNodeDx; //geowerte
-      double blockLengthx2 = blockLengthx1;
-      double blockLengthx3 = blockLengthx1;
-
-      double originX1 = 0.0;//-50.0*propellerDurchmesser;  //geowerte
-      double originX2 = 0.0;//-0.5*blockLengthx2*nx2;
-      double originX3 = 0.0;// minX3 + 0.5*fineNodeDx;
-
-      double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3}; 
-
-      //position vorderkante cube
-      double originBridgeX1 = 20.0/100.0; //cm, geraten
-      double originBridgeX2 = 0.0;//0.5*params.nx[1]*blockLengthx2-0.5*H-fineNodeDx;
-      double originBridgeX3 = kanalhoeheSI*0.5;//H*0.0-fineNodeDx; //boden
-
-      bool periodicx1 = false;
-      bool periodicx2 = true;
-      bool periodicx3 = true;
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-      double rhoLB         = rhoInit;
-      double rhoReal       = 1.0;
-      double nuReal  = 0.000015;//0.015;
-
-      double hReal         = 0.0105;//<-m     1.05;//Plattendicke in cm(! cm nicht m !)
-      double uReal         = 15;//m/s   //Re*nueReal/hReal;
-      double lReal         = 1; //m Plattenlänge
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-      double Ma      = 0.05;//0.0553;//Ma-Real!
-      double csReal  = 343; //uReal/Ma;
-      double hLB     = hReal/coarseNodeDx;
-
-      //LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter(hReal, csReal, rhoReal, hLB));
-      //LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter(hReal, LBMUnitConverter::AIR_20C, hLB));
-      
-
-      double uLB           = 0.1; //uReal   * unitConverter->getFactorVelocityWToLb();
-      //double nuLB         = nueReal * unitConverter->getFactorViscosityWToLb();
-      double nuLB         = (uLB*(lReal/coarseNodeDx))/Re;
-      //double timestep      = unitConverter->getFactorTimeLbToW(coarseNodeDx);
-
-      
-      //LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter(0, uReal, uLB, nuReal, nuLB));
-      LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter());
-      
-      velocity = uLB;
-      double viscosity = nuLB;
-
-      Grid3DPtr grid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(10000,10000,10000000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-
-      int sizeSP=4;
-      mu::Parser spongeLayer;
-      //spongeLayer.SetExpr("x1>=(sizeX-sizeSP)/dx ? (sizeX-(x1+1))/sizeSP/2.0 + 0.5 : 1.0");
-      spongeLayer.SetExpr("x1>=(sizeX-sizeSP)/dx ? (sizeX-x1)/sizeSP/2.0 + 0.5 : 1.0");
-      spongeLayer.DefineConst("sizeX", nx[0]*blocknx[0]);
-      spongeLayer.DefineConst("sizeSP", sizeSP*blocknx[0]);
-
-      if (grid->getTimeStep() == 0)
-      {
-         if(myid==0) UBLOG(logINFO,"Neustart..");
-         //bounding box
-         double g_minX1 = originX1;
-         double g_minX2 = originX2;
-         double g_minX3 = originX3;
-
-         double g_maxX1 = originX1 + geoLength[0];
-         double g_maxX2 = originX2 + geoLength[1];
-         double g_maxX3 = originX3 + geoLength[2];
-
-         //set grid
-         grid->setDeltaX(coarseNodeDx);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-         grid->setPeriodicX1(periodicx1);
-         grid->setPeriodicX2(periodicx2);
-         grid->setPeriodicX3(periodicx3);
-
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         /////////////////////////////////////////////////
-         //interactoren definieren
-         double geoOverlap = 3.0*coarseNodeDx;
-
-         //inflow
-         GbCuboid3DPtr velBCCuboid(new GbCuboid3D(originX1-geoOverlap, originX2-geoOverlap, originX3-geoOverlap, 
-            originX1/*+coarseNodeDx*/, originX2+geoLength[1]+geoOverlap, originX3+geoLength[2]+geoOverlap));
-         if(myid == 0) GbSystem3D::writeGeoObject(velBCCuboid.get(), pathname+"/geo/velBCCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr velBCInteractor(new D3Q27Interactor(velBCCuboid,grid,Interactor3D::SOLID)); 
-
-         //inflow
-         double uLB2=uLB*0.96*1.02;//*0.5;
-         double raiseVelSteps = 0;
-         vector<D3Q27BCFunction> velcX1BCs,dummy;
-
-         mu::Parser inflowProfile;
-         inflowProfile.SetExpr("uLB"); 
-
-         inflowProfile.DefineConst("uLB",uLB);
-         velcX1BCs.push_back(D3Q27BCFunction(inflowProfile,raiseVelSteps,D3Q27BCFunction::INFCONST));
-
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (velcX1BCs,dummy,dummy));
-         velBCInteractor->addBCAdapter(velBCAdapter);
-
-         //outflow
-         GbCuboid3DPtr densCuboid(new GbCuboid3D(originX1+geoLength[0], originX2-geoOverlap, originX3-geoOverlap, 
-            originX1+geoLength[0]+geoOverlap, originX2+geoLength[1]+geoOverlap, originX3+geoLength[2]+geoOverlap ));
-         if(myid == 0) GbSystem3D::writeGeoObject(densCuboid.get(), pathname+"/geo/densCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoInit));
-         D3Q27InteractorPtr densInteractor( new D3Q27Interactor(densCuboid,grid,denBCAdapter,Interactor3D::SOLID) );
-
-         //////////////////////////////////////////////////////////////////////////
-         if(myid == 0)
-         {
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* Parameters                            *");
-            UBLOG(logINFO, "* Re            ="<<Re);
-            UBLOG(logINFO, "* Ma            ="<<Ma);
-            UBLOG(logINFO, "* uReal         ="<<uReal);
-            UBLOG(logINFO, "* nueReal       ="<<nuReal);
-            UBLOG(logINFO, "* nueLB         ="<<nuLB);
-            UBLOG(logINFO, "* uLB           ="<<uLB);
-            UBLOG(logINFO, "* LX3 (world/LB)="<<kanalhoeheSI<<"/"<<kanalhoeheSI/coarseNodeDx);
-            UBLOG(logINFO, "* cdx           ="<<coarseNodeDx);
-            UBLOG(logINFO, "* fdx           ="<<fineNodeDx);
-            UBLOG(logINFO, "* dx_base       ="<<coarseNodeDx<<" == "<<coarseNodeDx);
-            UBLOG(logINFO, "* dx_refine     ="<<fineNodeDx<<" == "<<fineNodeDx );
-            UBLOG(logINFO, "* nx1/2/3       ="<<nx[0]<<"/"<<nx[1]<<"/"<<nx[2]);
-            UBLOG(logINFO, "* blocknx1/2/3  ="<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-            UBLOG(logINFO, "* x1Periodic    ="<<periodicx1);
-            UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-            UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-            UBLOG(logINFO, "* number of levels  ="<<refineLevel+1);
-            UBLOG(logINFO, "* path          ="<<pathname);
-
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* number of threads    ="<<numOfThreads);
-            UBLOG(logINFO, "* number of processes  ="<<comm->getNumberOfProcesses());
-            UBLOG(logINFO, "*****************************************");
-            //UBLOGML(logINFO, "UnitConverter:"<<unitConverter->toString());
-            UBLOG(logINFO, "*****************************************");     
-         }
-         //////////////////////////////////////////////////////////////////////////
-         //Platte
-         GbTriFaceMesh3DPtr mesh (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(PlatteFilename,"Netz"));
-
-         double x1minMesh = mesh->getX1Minimum(); double x1maxMesh = mesh->getX1Maximum();
-         double x2minMesh = mesh->getX2Minimum(); double x2maxMesh = mesh->getX2Maximum();
-         double x3minMesh = mesh->getX3Minimum(); double x3maxMesh = mesh->getX3Maximum();
-
-         double drehpunktX=x1minMesh+(x1maxMesh-x1minMesh)*0.5;//triFaceMeshS->getX1Centroid();
-         double drehpunktZ=x3minMesh+(x3maxMesh-x3minMesh)*0.5;//triFaceMeshS->getX3Centroid();
-         double drehpunktY=x2minMesh+(x2maxMesh-x2minMesh)*0.5;// seedX2-0.5*nodeDelta;//+nx2*deltaX2+0.5*deltaX2;
-
-         mesh->rotate(90.0,0.0,0.0);  //TriFacMesh-KO-System anders als LB-KO-System
-
-         x1minMesh = mesh->getX1Minimum();  x1maxMesh = mesh->getX1Maximum();
-         x2minMesh = mesh->getX2Minimum();  x2maxMesh = mesh->getX2Maximum();
-         x3minMesh = mesh->getX3Minimum();  x3maxMesh = mesh->getX3Maximum();
-
-         drehpunktX=x1minMesh+(x1maxMesh-x1minMesh)*0.5;//triFaceMeshS->getX1Centroid();
-         drehpunktZ=x3minMesh+(x3maxMesh-x3minMesh)*0.5;//triFaceMeshS->getX3Centroid();
-         drehpunktY=x2minMesh+(x2maxMesh-x2minMesh)*0.5;// seedX2-0.5*nodeDelta;//+nx2*deltaX2+0.5*deltaX2;
-
-         double H3=1.05/100.0;//cm, Plattendicke
-         double scaleB=H3/(x3maxMesh-x3minMesh);
-         double scaleX2=(geoLength[2]+2.0*coarseNodeDx)/(x2minMesh-x2maxMesh);
-
-         mesh->scale(scaleB,scaleB,scaleB);
-         x1minMesh = mesh->getX1Minimum(); x1maxMesh = mesh->getX1Maximum();
-         x2minMesh = mesh->getX2Minimum(); x2maxMesh = mesh->getX2Maximum();
-         x3minMesh = mesh->getX3Minimum(); x3maxMesh = mesh->getX3Maximum();
-         double offsetXBridge=originBridgeX1;//originBridgeX1;
-         double offsetYBridge=originBridgeX2;//originBridgeX2;
-         double offsetZBridge=originBridgeX3;//originBridgeX3;//-0.5*(x3minMesh-x3maxMesh);
-         //mesh->translate(-x1minMesh+offsetXBridge, -x2minMesh-0.5*offsetYBridge-coarseNodeDx, -x3minMesh+offsetZBridge); 
-         mesh->translate(-x1minMesh+offsetXBridge, -x2minMesh+offsetYBridge-coarseNodeDx, -x3minMesh+offsetZBridge-(x3maxMesh-x3minMesh)*0.5/*-hReal*2.0*/); 
-
-         x1minMesh = mesh->getX1Minimum(); x1maxMesh = mesh->getX1Maximum();
-         x2minMesh = mesh->getX2Minimum(); x2maxMesh = mesh->getX2Maximum();
-         x3minMesh = mesh->getX3Minimum(); x3maxMesh = mesh->getX3Maximum();
-
-         if(myid == 0) GbSystem3D::writeGeoObject( mesh.get(), pathname+"/geo/platte", WbWriterVtkXmlBinary::getInstance() );
-
-         //////////////////////////////////////////////////////////////////////////
-         // Zackenband
-         //////////////////////////////////////////////////////////////////////////
-         GbTriFaceMesh3DPtr meshBand (GbTriFaceMesh3DCreator::readMeshFromFile(ZckbndFilename, "NetzBand"));
-         meshBand->deleteRedundantNodes();
-
-         double x1minMeshB = meshBand->getX1Minimum(); double x1maxMeshB = meshBand->getX1Maximum();
-         double x2minMeshB = meshBand->getX2Minimum(); double x2maxMeshB = meshBand->getX2Maximum();
-         double x3minMeshB = meshBand->getX3Minimum(); double x3maxMeshB = meshBand->getX3Maximum();
-
-         x1minMeshB = meshBand->getX1Minimum();  x1maxMeshB = meshBand->getX1Maximum();
-         x2minMeshB = meshBand->getX2Minimum();  x2maxMeshB = meshBand->getX2Maximum();
-         x3minMeshB = meshBand->getX3Minimum();  x3maxMeshB = meshBand->getX3Maximum();
-
-         double H1B=1.05/100.0;//*2.0;//0.05;//cm, Banddicke..nachschauen!!!
-         double scaleBand=H1B/(x1maxMeshB-x1minMeshB);//H3B/(x3maxMeshB-x3minMeshB);
-
-         meshBand->scale(scaleBand,scaleBand,scaleBand);
-         x1minMeshB = meshBand->getX1Minimum(); x1maxMeshB = meshBand->getX1Maximum();
-         x2minMeshB = meshBand->getX2Minimum(); x2maxMeshB = meshBand->getX2Maximum();
-         x3minMeshB = meshBand->getX3Minimum(); x3maxMeshB = meshBand->getX3Maximum();
-         double dBandX=0.5/100.0;//1.29; //15mm-2.1mm Absand von Bandvorderkante
-         double dBandY=0.0/100.0;
-         double dBandZ=0.223/100.0;//0.344;//....
-         double offsetXBridgeB=x1minMesh+dBandX;//originBridgeX1+dBandX;//originBridgeX1;
-         double offsetYBridgeB=originBridgeX2+dBandY;//originBridgeX2;
-         double offsetZBridgeB=originBridgeX3+dBandZ;//originBridgeX3;//-0.5*(x3minMesh-x3maxMesh);
-         meshBand->translate(-x1minMeshB+offsetXBridgeB, -x2minMeshB+offsetYBridgeB-coarseNodeDx, -x3minMeshB+offsetZBridgeB);//-(x3maxMeshB-x3minMeshB)*0.5); 
-
-         x1minMeshB = meshBand->getX1Minimum(); x1maxMeshB = meshBand->getX1Maximum();
-         x2minMeshB = meshBand->getX2Minimum(); x2maxMeshB = meshBand->getX2Maximum();
-         x3minMeshB = meshBand->getX3Minimum(); x3maxMeshB = meshBand->getX3Maximum();
-
-         GbSystem3D::writeGeoObject( meshBand.get(), pathname+"/geo/Band", WbWriterVtkXmlASCII::getInstance() );
-
-         /////////////////Band2
-         GbTriFaceMesh3DPtr meshBand2(GbTriFaceMesh3DCreator::readMeshFromFile(ZckbndFilename, "NetzBand2"));
-         meshBand->deleteRedundantNodes();
-
-         double x1minMeshB2 = meshBand2->getX1Minimum(); double x1maxMeshB2 = meshBand2->getX1Maximum();
-         double x2minMeshB2 = meshBand2->getX2Minimum(); double x2maxMeshB2 = meshBand2->getX2Maximum();
-         double x3minMeshB2 = meshBand2->getX3Minimum(); double x3maxMeshB2 = meshBand2->getX3Maximum();
-
-         x1minMeshB2 = meshBand2->getX1Minimum();  x1maxMeshB2 = meshBand2->getX1Maximum();
-         x2minMeshB2 = meshBand2->getX2Minimum();  x2maxMeshB2 = meshBand2->getX2Maximum();
-         x3minMeshB2 = meshBand2->getX3Minimum();  x3maxMeshB2 = meshBand2->getX3Maximum();
-
-         double H1B2=1.05/100.0;//0.05;//cm, Banddicke..nachschauen!!!
-         double scaleBand2=H1B2/(x1maxMeshB2-x1minMeshB2);//*3.0;//H3B/(x3maxMeshB-x3minMeshB);
-
-         meshBand2->scale(scaleBand2,scaleBand2,scaleBand2);
-         x1minMeshB2 = meshBand2->getX1Minimum(); x1maxMeshB2 = meshBand2->getX1Maximum();
-         x2minMeshB2 = meshBand2->getX2Minimum(); x2maxMeshB2 = meshBand2->getX2Maximum();
-         x3minMeshB2 = meshBand2->getX3Minimum(); x3maxMeshB2 = meshBand2->getX3Maximum();
-         double dBandX2=0.5/100.0;//1.29;
-         double dBandY2=0.5/100.0;
-         double dBandZ2=0.223/100.0;//0.344;//...
-         double offsetXBridgeB2=x1minMesh+dBandX2;//originBridgeX1;
-         double offsetYBridgeB2=originBridgeX2+dBandY2;//originBridgeX2;
-         double offsetZBridgeB2=originBridgeX3+dBandZ2;//originBridgeX3;//-0.5*(x3minMesh-x3maxMesh);
-         meshBand2->translate(-x1minMeshB2+offsetXBridgeB2, -x2minMeshB2+offsetYBridgeB2-coarseNodeDx, -x3minMeshB2+offsetZBridgeB2);//-(x3maxMeshB2-x3minMeshB2)*0.5); 
-
-         x1minMeshB2 = meshBand2->getX1Minimum(); x1maxMeshB2 = meshBand2->getX1Maximum();
-         x2minMeshB2 = meshBand2->getX2Minimum(); x2maxMeshB2 = meshBand2->getX2Maximum();
-         x3minMeshB2 = meshBand2->getX3Minimum(); x3maxMeshB2 = meshBand2->getX3Maximum();
-
-         if(myid == 0) GbSystem3D::writeGeoObject( meshBand2.get(), pathname+"/geo/Band2", WbWriterVtkXmlASCII::getInstance() );
-         //////////////////////////////////////////////////////////////////////////
-
-         //////////////////////////////////////////////////////////////////////////
-         // refine
-         //////////////////////////////////////////////////////////////////////////
-
-         ///////////platte ausmessen:
-         x1minMesh = mesh->getX1Minimum(); x1maxMesh = mesh->getX1Maximum();
-         x2minMesh = mesh->getX2Minimum(); x2maxMesh = mesh->getX2Maximum();
-         x3minMesh = mesh->getX3Minimum(); x3maxMesh = mesh->getX3Maximum();
-         double deltaX3Platte=(x3maxMesh-x3minMesh);
-
-         GbCuboid3DPtr refine2PlatteCube(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-H3*0.5
-            , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3));
-         //if(myid == 0) GbSystem3D::writeGeoObject(refine2PlatteCube.get(), pathname+"/geo/refine2PlatteCube", WbWriterVtkXmlASCII::getInstance());
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP2(refine2PlatteCube, baseLevel, refineLevel-5);
-         //grid->accept(refineAdapterP2);
-
-         GbCuboid3DPtr refine3PlatteCube(new GbCuboid3D(   x1minMesh+H3*2.0  , originX2-geoOverlap  , x3minMesh+H3*0.8
-            , x1maxMesh-H3*0.2, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.1));
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP3(refine3PlatteCube, baseLevel, refineLevel-4);
-         //grid->accept(refineAdapterP3);
-
-         GbCuboid3DPtr refine4PlatteCube(new GbCuboid3D(   x1minMesh-H3*2.0  , originX2-geoOverlap  , x3minMesh+deltaX3Platte*0.04
-            ,  x1maxMesh+H3*2.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.25));
-         //if(myid == 0) GbSystem3D::writeGeoObject(refine4PlatteCube.get(), pathname+"/geo/refine4PlatteCube", WbWriterVtkXmlASCII::getInstance());
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP4(refine4PlatteCube, baseLevel, refineLevel-3);
-         //grid->accept(refineAdapterP4);
-
-         GbCuboid3DPtr refine5PlatteCube(new GbCuboid3D(   originX1-geoOverlap , originX2-geoOverlap  ,x3minMesh-deltaX3Platte/*x3minMesh+deltaX3Platte*0.8*//* x3minMesh+deltaX3Platte*0.8*/
-            ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3));
-         //if(myid == 0) GbSystem3D::writeGeoObject(refine5PlatteCube.get(), pathname+"/geo/refine5PlatteCube", WbWriterVtkXmlASCII::getInstance());
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP5(refine5PlatteCube, baseLevel, refineLevel-2);
-         //grid->accept(refineAdapterP5);
-
-         GbCuboid3DPtr refine6PlatteCube(new GbCuboid3D(   originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-deltaX3Platte*3.0/*x3minMesh+deltaX3Platte*0.9*/
-            ,  x1maxMesh+H3*7.0, originX2+geoOverlap+geoLength[1], x3maxMesh+deltaX3Platte*3.0));
-         //if(myid == 0) GbSystem3D::writeGeoObject(refine6PlatteCube.get(), pathname+"/geo/refine6PlatteCube", WbWriterVtkXmlASCII::getInstance());
-         //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP6(refine6PlatteCube, baseLevel, refineLevel-1);
-         //grid->accept(refineAdapterP6);
-
-         //GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX1-3.0*geoOverlap
-         //  , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.1));
-
-
-         GbCuboid3DPtr refinePlatteBox(new GbCuboid3D(mesh->getX1Minimum(), mesh->getX2Minimum(), mesh->getX3Minimum()+(mesh->getX3Maximum()-mesh->getX3Minimum())/2.0, 
-                                                      mesh->getX1Maximum(), mesh->getX2Maximum(), mesh->getX3Maximum()));
-         if(myid == 0) GbSystem3D::writeGeoObject( refinePlatteBox.get(), pathname+"/geo/refinePlatteBox", WbWriterVtkXmlASCII::getInstance() );
-
-         /////////////////////////////////////////////////
-         ///interactoren
-         int bbOption1 = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-         D3Q27TriFaceMeshInteractorPtr triPlateInteractor( new D3Q27TriFaceMeshInteractor(mesh, grid, bcObst,Interactor3D::SOLID));
-         D3Q27TriFaceMeshInteractorPtr triBandInteractor( new D3Q27TriFaceMeshInteractor( meshBand, grid, bcObst,Interactor3D::SOLID) );
-         D3Q27TriFaceMeshInteractorPtr triBand2Interactor( new D3Q27TriFaceMeshInteractor( meshBand2, grid, bcObst,Interactor3D::SOLID) );
-
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));	
-        
-         //////////////////////////////////////////////////////////////////////////
-         //refinement
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            //refineHelper.addGbObject( refine6PlatteCube, refineLevel-3);
-            //refineHelper.addGbObject( refine5PlatteCube, refineLevel-2);
-            //refineHelper.addGbObject( refine4PlatteCube, refineLevel-1);
-            //refineHelper.addGbObject( refine3PlatteCube, refineLevel);
-            refineHelper.addGbObject(refinePlatteBox, refineLevel);
-            refineHelper.refine();
-
-            //RefineAroundGbObjectHelper refineHelper(grid, refineLevel, boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triPlateInteractor), 0.0, hReal/4.0);
-            //refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         //BlocksPostprocessorPtr ppblocks1(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         ////if(myid == 0) 
-         //ppblocks1->update(0);
-
-         //return;
-
-         //GbCuboid3DPtr testBox(new GbCuboid3D(0.2, -1, 0.1, 1.6, 0.04, 0.5));
-         //if(myid == 0) GbSystem3D::writeGeoObject(testBox.get(), pathname+"/geo/testBox", WbWriterVtkXmlASCII::getInstance());
-         //D3Q27InteractorPtr testBoxInt(new D3Q27Interactor(testBox, grid, bcObst,Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(triPlateInteractor);
-         intHelper.addInteractor(triBandInteractor);
-         intHelper.addInteractor(triBand2Interactor);
-         //intHelper.addInteractor(testBoxInt);
-         intHelper.addInteractor(densInteractor);
-         intHelper.addInteractor(velBCInteractor);
-         intHelper.selectBlocks();
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	 
-         //////////////////////////////////////
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-
-         if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-         if(myid == 0) 
-            ppblocks->update(0);
-         if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-         
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         unsigned long nod = nob * blocknx[0]*blocknx[1]*blocknx[2];
-         unsigned long nod_real = nob * (blocknx[0]+3)*(blocknx[1]+3)*(blocknx[2]+3);
-
-         double needMemAll  = double(nod_real*(27*sizeof(double) + sizeof(int)));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-            UBLOG(logINFO,"Available memory per node/8.0 = " << (availMem/8.0) << " bytes");
-         }
-         ////////////////////////////
-         LBMKernel3DPtr kernel;
-         //kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-
-         //with sponge layer
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLBWithSpongeLayer(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-         kernel->setWithSpongeLayer(true);
-         kernel->setSpongeLayer(spongeLayer);
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-         //////////////////////////////////
-         //undef nodes
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-         //////////////////////////////////////////
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         intHelper.setBC();
-
-         //initialization of decompositions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor( nuLB,rhoInit);
-         initVisitor.setVx1(vx1Init);
-         grid->accept(initVisitor);
-
-         //Postprozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), 
-            unitConverter, true));
-         ppgeo->update(0);
-         //grid->doPostProcess(0);
-         ppgeo.reset();
-         geoSch.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end");      
-         
-         //return;
-      }
-      else
-      {
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         SetSpongeLayerBlockVisitor ssp(spongeLayer);
-         grid->accept(ssp);
-         if(myid == 0) UBLOG(logINFO,"Restart - end"); 
-      }
-      UbSchedulerPtr visSch(new UbScheduler());
-      //visSch->addSchedule(1,0,3);
-      //visSch->addSchedule(100,100,1000);
-      //visSch->addSchedule(1000,1000,5000);
-      //visSch->addSchedule(5000,5000,100000);
-      //visSch->addSchedule(100000,100000,10000000);
-
-      visSch->addSchedule(10000,10000,10000000);
-      //visSch->addSchedule(100,100,100000000);
-
-      //UbSchedulerPtr resSchRMS(new UbScheduler());
-      //resSchRMS->addSchedule(100000,0,10000000);
-      //UbSchedulerPtr resSchMeans(new UbScheduler());
-      //resSchMeans->addSchedule(100000,0,10000000);
-      //UbSchedulerPtr stepAvSch(new UbScheduler());
-      //int averageInterval=1000;
-      //stepAvSch->addSchedule(averageInterval,0,10000000);
-
-      //AverageValuesPostprocessor Avpp(grid, pathname + "/steps/stepAV", WbWriterVtkXmlBinary::getInstance(), visSch/*wann wird rausgeschrieben*/, stepAvSch/*wann wird gemittelt*/, resSchMeans,resSchRMS/*wann wird resettet*/);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), unitConverter);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 30));
-      nupsSch->addSchedule(1000, 1000, 1000000000);
-      NUPSCounterPostprocessor npr(grid, nupsSch, comm);
-
-      //mu::Parser decrViscFunc;
-      //decrViscFunc.SetExpr("nue0+c0/(t+1)/(t+1)");
-      //decrViscFunc.DefineConst("nue0", nueLB);
-      //decrViscFunc.DefineConst("c0", 0.1);
-      //UbSchedulerPtr DecrViscSch(new UbScheduler());
-      //DecrViscSch->addSchedule(10,10,5000);
-      //DecreaseViscosityPostprocessor decrViscPPPtr(grid, DecrViscSch,&decrViscFunc, comm);
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      //double endTime = 80001;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1], UbSystem::stringTo<double>(argv[2]));
-
-   return 0;
-}
-
diff --git a/apps/cpu/plate/plate.cpp.ludwig10092013 b/apps/cpu/plate/plate.cpp.ludwig10092013
deleted file mode 100644
index 852eed72bc66eef1d56d70edea8ad5c7033e7b2c..0000000000000000000000000000000000000000
--- a/apps/cpu/plate/plate.cpp.ludwig10092013
+++ /dev/null
@@ -1,626 +0,0 @@
-
-
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <vfluids.h>
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string machine = QUOTEME(CAB_MACHINE);
-	  UBLOG(logINFO,"Testcase plate");
-      string pathname; 
-      string pathGeo;
-	  string BrueckeFilename;
-	  string ZckbndFilename;
-      int numOfThreads =1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      UbLog::reportingLevel() = logDEBUG;
-
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-      
-      if(machine == "PIPPINNEU") 
-      {
-
-		  pathname = "f:/temp/plateBfluid";
-		  pathGeo = "e:/geometriedatenstls";
-         numOfThreads = 1;
-         logfile = false;
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-		  pathname = "/work/sonjaOutputs/plateBfluidNeud";
-		  pathGeo = "/home/sonuphof/Stl-Zeichnungen";
-         numOfThreads = 1;
-         availMem = 12.0e9;
-         logfile = true;
-
-         //if(myid ==0)
-         //{
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-         //}
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-	  BrueckeFilename = pathGeo + "/platte_raw.stl"; 
-	  ZckbndFilename= pathGeo + "/2zackenbaender0.stl";
-
-      //if(myid ==0 && logfile)
-      //{
-         UbLog::output_policy::setStream(logFilename.str());
-      //}
-
-      int baseLevel, refineLevel,nx[3],blocknx[3];
-      double Re,velocity,rhoInit,vx1Init;//,vx2Init,vx3Init;
-
-	  //////////////////////////////////////////////////////////////////////////
-	  //physik
-	  //////////////////////////////////////////////////////////////////////////
-	  Re            = 11900;// 13286;//13286;//gemessen 18.98 m/s...*5.0 zum  testen ob was passiert
-	  velocity      = 0.01;  
-	  vx1Init       = 0.01;  
-	  rhoInit       = 1.0;
-	  SimulationParametersPtr param = SimulationParameters::getInstanz();
-	  param->setCollisionModelType(SimulationParameters::COMPRESSIBLE);
-
-	  int H=200;//200;//392;
-	  ///////////////Knotenabmessungen:
-	  nx[0]      = 120;//60;//86;//43;//65;//50;  //länge
-	  nx[1]      = 3;//6;///1;//5;// //breite
-	  nx[2]      = 32;//18;//5;//15;//15; //höhe gebiet
-	  blocknx[0] = 9;
-	  blocknx[1] = 9;
-	  blocknx[2] = 9;
-
-	  baseLevel   = 0;
-	  refineLevel = 2;//1;//5;
-
-
-
-	  ///////////////Weltabmessungen:
-	  double kanalhoeheSI  = 60.0/100.0;//60.0/100.0;//cm, Kanalhöhe
-	  double kanalbreiteSI = kanalhoeheSI*120.0/2.0;//=kanalhöhe*nx1/nx2//1.65/100.0;//13.2/100.0;////40.0/100.0; //cm, Kanalbreite //13.2 zeilbreite
-	  double kanallaengeSI = kanalhoeheSI*120.0/32.0;//80.0/100.0;//cm, Kanallänge, ist nicht angegeben
-
-	  // double refinewidth1=kanalhoeheSI/10.0;
-
-	  double fineNodeDx   = (kanalhoeheSI) / (double)( blocknx[2]*nx[2]*(1<<refineLevel)+1 ); //+1--> gitter liegt jeweils 0.5dx innerhalb
-	  double coarseNodeDx = fineNodeDx * (double)(1<<refineLevel);//geowerte
-
-	  double blockLengthx1 = blocknx[0]*coarseNodeDx; //geowerte
-	  double blockLengthx2 = blockLengthx1;
-	  double blockLengthx3 = blockLengthx1;
-
-	  double originX1 = 0.0;//-50.0*propellerDurchmesser;  //geowerte
-	  double originX2 = 0.0;//-0.5*blockLengthx2*nx2;
-	  double originX3 = 0.0;// minX3 + 0.5*fineNodeDx;
-
-	  double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3}; 
-
-	  //position vorderkante cube
-	  double originBridgeX1 = 20.0/100.0; //cm, geraten
-	  double originBridgeX2 = 0.0;//0.5*params.nx[1]*blockLengthx2-0.5*H-fineNodeDx;
-	  double originBridgeX3 = kanalhoeheSI*0.5;//H*0.0-fineNodeDx; //boden
-
-	  bool periodicx1 = false;
-	  bool periodicx2 = true;
-	  bool periodicx3 = true;
-
-	  //##########################################################################
-	  //## physical parameters
-	  //##########################################################################
-
-	  double smagorinskiConstant = 0.18;
-
-
-	  double rhoLB         = 1.0;
-	  double rhoReal       = 1.0;
-	  double nueReal  = 0.000015;//0.015;
-
-	  double hReal         = 0.0105;//<-m     1.05;//Plattendicke in cm(! cm nicht m !)
-	  double uReal         = Re*nueReal/hReal;
-
-	  //##Machzahl:
-	  //#Ma     = uReal/csReal
-	  double Ma      = 0.05;//0.0553;//Ma-Real!
-	  double csReal  = uReal/Ma;
-	  double hLB     = hReal/coarseNodeDx;
-
-	  LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter(hReal, csReal, rhoReal, hLB));
-
-	  double uLB           = uReal   * unitConverter->getFactorVelocityWToLb();
-	  double nueLB         = nueReal * unitConverter->getFactorViscosityWToLb();
-	  double timestep      = unitConverter->getFactorTimeLbToW(coarseNodeDx);
-
-	  velocity = uLB;
-	  double viscosity = nueLB;
-
-	  //////////////////////////////////////////////////////////////////////////
-	  Grid3DPtr grid(new Grid3D(comm));
-	  UbSchedulerPtr rSch(new UbScheduler(5000,5000,1000000));
-	  RestartPostprocessor rp(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY);
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if(/*(cstr== NULL)*/cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-
-         grid = rp.restart(UbSystem::stringTo<int>(opt));
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         //PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         //grid->accept(pqPartVisitor);
-      }
-      else
-      {
-      //bounding box
-      double g_minX1 = originX1;
-      double g_minX2 = originX2;
-      double g_minX3 = originX3;
-
-      double g_maxX1 = originX1 + geoLength[0];
-      double g_maxX2 = originX2 + geoLength[1];
-      double g_maxX3 = originX3 + geoLength[2];
-
-      //set grid
-      grid->setDeltaX(coarseNodeDx);
-      grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-      grid->setPeriodicX1(periodicx1);
-      grid->setPeriodicX2(periodicx2);
-      grid->setPeriodicX3(periodicx3);
-	  
-      
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-      GenBlocksGridVisitor genBlocks;
-      genBlocks.addGeoObject(gridCube);
-      grid->accept(genBlocks);
-
-
-	  /////////////////////////////////////////////////7
-	  //interactoren definieren
-
-
-
-	  double geoOverlap = 3.0*coarseNodeDx;
-
-	  //inflow
-      GbCuboid3DPtr velBCCuboid(new GbCuboid3D(originX1-geoOverlap, originX2-geoOverlap, originX3-geoOverlap, 
-         originX1/*+coarseNodeDx*/, originX2+geoLength[1]+geoOverlap, originX3+geoLength[2]+geoOverlap));
-      if(myid == 0) GbSystem3D::writeGeoObject(velBCCuboid.get(), pathname+"/geo/velBCCuboid", WbWriterVtkXmlASCII::getInstance());
-      D3Q27InteractorPtr velBCInteractor(new D3Q27Interactor(velBCCuboid,grid,Interactor3D::SOLID)); 
-
-	   //inflow
-      double uLB2=uLB*0.96*1.02;//*0.5;
-      double raiseVelSteps = 0;
-      vector<D3Q27BCFunction> velcX1BCs,dummy;
-
-      mu::Parser inflowProfile;
-      inflowProfile.SetExpr("uLB"); 
-
-      inflowProfile.DefineConst("uLB",uLB2);
-      velcX1BCs.push_back(D3Q27BCFunction(inflowProfile,raiseVelSteps,D3Q27BCFunction::INFCONST));
-      
-      D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (velcX1BCs,dummy,dummy));
-      velBCInteractor->addBCAdapter(velBCAdapter);
-
-	  //outflow
-	  GbCuboid3DPtr densCuboid(new GbCuboid3D(originX1+geoLength[0]-coarseNodeDx, originX2-geoOverlap, originX3-geoOverlap, 
-		  originX1+geoLength[0]+geoOverlap, originX2+geoLength[1]+geoOverlap, originX3+geoLength[2]+geoOverlap ));
-	  if(myid == 0) GbSystem3D::writeGeoObject(densCuboid.get(), pathname+"/geo/densCuboid", WbWriterVtkXmlASCII::getInstance());
-	  D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoInit));
-	  D3Q27InteractorPtr densInteractor( new D3Q27Interactor(densCuboid,grid,denBCAdapter,Interactor3D::SOLID) );
-      
-      //////////////////////////////////////////////////////////////////////////
-      if(myid == 0)
-      {
-         UBLOG(logINFO, "*****************************************");
-         UBLOG(logINFO, "* Parameters                            *");
-         UBLOG(logINFO, "* Re            ="<<Re);
-         UBLOG(logINFO, "* Ma            ="<<Ma);
-         UBLOG(logINFO, "* uReal         ="<<uReal);
-         UBLOG(logINFO, "* nueReal       ="<<nueReal);
-         UBLOG(logINFO, "* nue           ="<<nueLB);
-         UBLOG(logINFO, "* velocity      ="<<uLB);
-        // UBLOG(logINFO, "* LX1 (world/LB)="<<kanallaengeSI<<"/"<<kanallaengeSI/coarseNodeDx);
-       //  UBLOG(logINFO, "* LX2 (world/LB)="<<kanalbreiteSI<<"/"<<kanalbreiteSI/coarseNodeDx);
-         UBLOG(logINFO, "* LX3 (world/LB)="<<kanalhoeheSI<<"/"<<kanalhoeheSI/coarseNodeDx);
-         UBLOG(logINFO, "* cdx           ="<<coarseNodeDx);
-         UBLOG(logINFO, "* fdx           ="<<fineNodeDx);
-         UBLOG(logINFO, "* dx_base       ="<<coarseNodeDx<<" == "<<coarseNodeDx);
-         UBLOG(logINFO, "* dx_refine     ="<<fineNodeDx<<" == "<<fineNodeDx );
-         UBLOG(logINFO, "* nx1/2/3       ="<<nx[0]<<"/"<<nx[1]<<"/"<<nx[2]);
-         UBLOG(logINFO, "* blocknx1/2/3  ="<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-         UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-         UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-         UBLOG(logINFO, "*****************************************");
-         UBLOGML(logINFO, "UnitConverter:"<<unitConverter->toString());
-         UBLOG(logINFO, "*****************************************");     
-      }
-	  //////////////////////////////////////////////////////////////////////////
-	  //platte
-	  GbTriFaceMesh3DPtr mesh (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(BrueckeFilename,"Netz"));
-
-	  double x1minMesh = mesh->getX1Minimum(); double x1maxMesh = mesh->getX1Maximum();
-	  double x2minMesh = mesh->getX2Minimum(); double x2maxMesh = mesh->getX2Maximum();
-	  double x3minMesh = mesh->getX3Minimum(); double x3maxMesh = mesh->getX3Maximum();
-
-	  double drehpunktX=x1minMesh+(x1maxMesh-x1minMesh)*0.5;//triFaceMeshS->getX1Centroid();
-	  double drehpunktZ=x3minMesh+(x3maxMesh-x3minMesh)*0.5;//triFaceMeshS->getX3Centroid();
-	  double drehpunktY=x2minMesh+(x2maxMesh-x2minMesh)*0.5;// seedX2-0.5*nodeDelta;//+nx2*deltaX2+0.5*deltaX2;
-
-	  mesh->rotate(90.0,0.0,0.0);  //TriFacMesh-KO-System anders als LB-KO-System
-
-	  x1minMesh = mesh->getX1Minimum();  x1maxMesh = mesh->getX1Maximum();
-	  x2minMesh = mesh->getX2Minimum();  x2maxMesh = mesh->getX2Maximum();
-	  x3minMesh = mesh->getX3Minimum();  x3maxMesh = mesh->getX3Maximum();
-
-	  drehpunktX=x1minMesh+(x1maxMesh-x1minMesh)*0.5;//triFaceMeshS->getX1Centroid();
-	  drehpunktZ=x3minMesh+(x3maxMesh-x3minMesh)*0.5;//triFaceMeshS->getX3Centroid();
-	  drehpunktY=x2minMesh+(x2maxMesh-x2minMesh)*0.5;// seedX2-0.5*nodeDelta;//+nx2*deltaX2+0.5*deltaX2;
-
-	  double H3=1.05/100.0;//cm, Plattendicke
-	  double scaleB=H3/(x3maxMesh-x3minMesh);
-	  double scaleX2=(geoLength[2]+2.0*coarseNodeDx)/(x2minMesh-x2maxMesh);
-
-	  mesh->scale(scaleB,scaleB,scaleB);
-	  x1minMesh = mesh->getX1Minimum(); x1maxMesh = mesh->getX1Maximum();
-	  x2minMesh = mesh->getX2Minimum(); x2maxMesh = mesh->getX2Maximum();
-	  x3minMesh = mesh->getX3Minimum(); x3maxMesh = mesh->getX3Maximum();
-	  double offsetXBridge=originBridgeX1;//originBridgeX1;
-	  double offsetYBridge=originBridgeX2;//originBridgeX2;
-	  double offsetZBridge=originBridgeX3;//originBridgeX3;//-0.5*(x3minMesh-x3maxMesh);
-	  //mesh->translate(-x1minMesh+offsetXBridge, -x2minMesh-0.5*offsetYBridge-coarseNodeDx, -x3minMesh+offsetZBridge); 
-	  mesh->translate(-x1minMesh+offsetXBridge, -x2minMesh+offsetYBridge-coarseNodeDx, -x3minMesh+offsetZBridge-(x3maxMesh-x3minMesh)*0.5); 
-
-	  x1minMesh = mesh->getX1Minimum(); x1maxMesh = mesh->getX1Maximum();
-	  x2minMesh = mesh->getX2Minimum(); x2maxMesh = mesh->getX2Maximum();
-	  x3minMesh = mesh->getX3Minimum(); x3maxMesh = mesh->getX3Maximum();
-
-	  if(myid == 0) GbSystem3D::writeGeoObject( mesh.get(), pathname+"/geo/platte", WbWriterVtkXmlBinary::getInstance() );
-
-	  //////////////////////////////////////////////////////////////////////////
-	  // Zackenband
-	  //////////////////////////////////////////////////////////////////////////
-	  GbTriFaceMesh3DPtr meshBand (GbTriFaceMesh3DCreator::readMeshFromFile(ZckbndFilename, "NetzBand"));
-	  meshBand->deleteRedundantNodes();
-
-	  double x1minMeshB = meshBand->getX1Minimum(); double x1maxMeshB = meshBand->getX1Maximum();
-	  double x2minMeshB = meshBand->getX2Minimum(); double x2maxMeshB = meshBand->getX2Maximum();
-	  double x3minMeshB = meshBand->getX3Minimum(); double x3maxMeshB = meshBand->getX3Maximum();
-
-	  x1minMeshB = meshBand->getX1Minimum();  x1maxMeshB = meshBand->getX1Maximum();
-	  x2minMeshB = meshBand->getX2Minimum();  x2maxMeshB = meshBand->getX2Maximum();
-	  x3minMeshB = meshBand->getX3Minimum();  x3maxMeshB = meshBand->getX3Maximum();
-
-	  double H1B=1.5/100.0;//0.05;//cm, Banddicke..nachschauen!!!
-	  double scaleBand=H1B/(x1maxMeshB-x1minMeshB);//H3B/(x3maxMeshB-x3minMeshB);
-
-	  meshBand->scale(scaleBand,scaleBand,scaleBand);
-	  x1minMeshB = meshBand->getX1Minimum(); x1maxMeshB = meshBand->getX1Maximum();
-	  x2minMeshB = meshBand->getX2Minimum(); x2maxMeshB = meshBand->getX2Maximum();
-	  x3minMeshB = meshBand->getX3Minimum(); x3maxMeshB = meshBand->getX3Maximum();
-	  double dBandX=0.5/100.0;//1.29; //15mm-2.1mm Absand von Bandvorderkante
-	  double dBandY=0.0/100.0;
-	  double dBandZ=0.223/100.0;//0.344;//....
-	  double offsetXBridgeB=x1minMesh+dBandX;//originBridgeX1+dBandX;//originBridgeX1;
-	  double offsetYBridgeB=originBridgeX2+dBandY;//originBridgeX2;
-	  double offsetZBridgeB=originBridgeX3+dBandZ;//originBridgeX3;//-0.5*(x3minMesh-x3maxMesh);
-	  meshBand->translate(-x1minMeshB+offsetXBridgeB, -x2minMeshB+offsetYBridgeB-coarseNodeDx, -x3minMeshB+offsetZBridgeB);//-(x3maxMeshB-x3minMeshB)*0.5); 
-
-	  x1minMeshB = meshBand->getX1Minimum(); x1maxMeshB = meshBand->getX1Maximum();
-	  x2minMeshB = meshBand->getX2Minimum(); x2maxMeshB = meshBand->getX2Maximum();
-	  x3minMeshB = meshBand->getX3Minimum(); x3maxMeshB = meshBand->getX3Maximum();
-
-	  GbSystem3D::writeGeoObject( meshBand.get(), pathname+"/geo/Band", WbWriterVtkXmlASCII::getInstance() );
-
-	  /////////////////Band2
-	  GbTriFaceMesh3DPtr meshBand2(GbTriFaceMesh3DCreator::readMeshFromFile(ZckbndFilename, "NetzBand2"));
-	  meshBand->deleteRedundantNodes();
-
-	  double x1minMeshB2 = meshBand2->getX1Minimum(); double x1maxMeshB2 = meshBand2->getX1Maximum();
-	  double x2minMeshB2 = meshBand2->getX2Minimum(); double x2maxMeshB2 = meshBand2->getX2Maximum();
-	  double x3minMeshB2 = meshBand2->getX3Minimum(); double x3maxMeshB2 = meshBand2->getX3Maximum();
-
-	  x1minMeshB2 = meshBand2->getX1Minimum();  x1maxMeshB2 = meshBand2->getX1Maximum();
-	  x2minMeshB2 = meshBand2->getX2Minimum();  x2maxMeshB2 = meshBand2->getX2Maximum();
-	  x3minMeshB2 = meshBand2->getX3Minimum();  x3maxMeshB2 = meshBand2->getX3Maximum();
-
-	  double H1B2=1.5/100.0;//0.05;//cm, Banddicke..nachschauen!!!
-	  double scaleBand2=H1B2/(x1maxMeshB2-x1minMeshB2);//H3B/(x3maxMeshB-x3minMeshB);
-
-	  meshBand2->scale(scaleBand2,scaleBand2,scaleBand2);
-	  x1minMeshB2 = meshBand2->getX1Minimum(); x1maxMeshB2 = meshBand2->getX1Maximum();
-	  x2minMeshB2 = meshBand2->getX2Minimum(); x2maxMeshB2 = meshBand2->getX2Maximum();
-	  x3minMeshB2 = meshBand2->getX3Minimum(); x3maxMeshB2 = meshBand2->getX3Maximum();
-	  double dBandX2=0.5/100.0;//1.29;
-	  double dBandY2=0.5/100.0;
-	  double dBandZ2=0.223/100.0;//0.344;//...
-	  double offsetXBridgeB2=x1minMesh+dBandX2;//originBridgeX1;
-	  double offsetYBridgeB2=originBridgeX2+dBandY2;//originBridgeX2;
-	  double offsetZBridgeB2=originBridgeX3+dBandZ2;//originBridgeX3;//-0.5*(x3minMesh-x3maxMesh);
-	  meshBand2->translate(-x1minMeshB2+offsetXBridgeB2, -x2minMeshB2+offsetYBridgeB2-coarseNodeDx, -x3minMeshB2+offsetZBridgeB2);//-(x3maxMeshB2-x3minMeshB2)*0.5); 
-
-	  x1minMeshB2 = meshBand2->getX1Minimum(); x1maxMeshB2 = meshBand2->getX1Maximum();
-	  x2minMeshB2 = meshBand2->getX2Minimum(); x2maxMeshB2 = meshBand2->getX2Maximum();
-	  x3minMeshB2 = meshBand2->getX3Minimum(); x3maxMeshB2 = meshBand2->getX3Maximum();
-
-	  if(myid == 0) GbSystem3D::writeGeoObject( meshBand2.get(), pathname+"/geo/Band2", WbWriterVtkXmlASCII::getInstance() );
-	  //////////////////////////////////////////////////////////////////////////
-      if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-
-      //////////////////////////////////////////////////////////////////////////
-      // refine
-      //////////////////////////////////////////////////////////////////////////
-
-	  ///////////platte ausmessen:
-	  x1minMesh = mesh->getX1Minimum(); x1maxMesh = mesh->getX1Maximum();
-	  x2minMesh = mesh->getX2Minimum(); x2maxMesh = mesh->getX2Maximum();
-	  x3minMesh = mesh->getX3Minimum(); x3maxMesh = mesh->getX3Maximum();
-	  double deltaX3Platte=(x3maxMesh-x3minMesh);
-
-
-	 // GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-	 // if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-
-
-
-	  //GbCuboid3DPtr refine2PlatteCube(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-H3*0.5
-	  //  , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3));
-	  //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP2(refine2PlatteCube, baseLevel, refineLevel-5);
-	  //grid->accept(refineAdapterP2);
-
-	  GbCuboid3DPtr refine3PlatteCube(new GbCuboid3D(   x1minMesh+H3*2.0  , originX2-geoOverlap  , x3minMesh+H3*0.8
-	     , x1maxMesh-H3*0.2, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.1));
-	  //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP3(refine3PlatteCube, baseLevel, refineLevel-4);
-	  //grid->accept(refineAdapterP3);
-
-	  GbCuboid3DPtr refine4PlatteCube(new GbCuboid3D(   x1minMesh-H3*2.0  , originX2-geoOverlap  , x3minMesh+deltaX3Platte*0.04
-	     ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.25));
-	  //if(myid == 0) GbSystem3D::writeGeoObject(refine4PlatteCube.get(), pathname+"/geo/refine4PlatteCube", WbWriterVtkXmlASCII::getInstance());
-	  //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP4(refine4PlatteCube, baseLevel, refineLevel-3);
-	  //grid->accept(refineAdapterP4);
-
-	  GbCuboid3DPtr refine5PlatteCube(new GbCuboid3D(   originX1-geoOverlap , originX2-geoOverlap  ,x3minMesh-deltaX3Platte/*x3minMesh+deltaX3Platte*0.8*//* x3minMesh+deltaX3Platte*0.8*/
-	     ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3));
-	  //if(myid == 0) GbSystem3D::writeGeoObject(refine5PlatteCube.get(), pathname+"/geo/refine5PlatteCube", WbWriterVtkXmlASCII::getInstance());
-	  //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP5(refine5PlatteCube, baseLevel, refineLevel-2);
-	  //grid->accept(refineAdapterP5);
-
-	  GbCuboid3DPtr refine6PlatteCube(new GbCuboid3D(   originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-deltaX3Platte*3.0/*x3minMesh+deltaX3Platte*0.9*/
-		  ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+deltaX3Platte*3.0));
-	  if(myid == 0) GbSystem3D::writeGeoObject(refine6PlatteCube.get(), pathname+"/geo/refine6PlatteCube", WbWriterVtkXmlASCII::getInstance());
-	  //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP6(refine6PlatteCube, baseLevel, refineLevel-1);
-	  //grid->accept(refineAdapterP6);
-
-	  //GbCuboid3DPtr wallsX1X2minRef4(new GbCuboid3D(  originX1-3.0*geoOverlap   , originX2-3.0*geoOverlap  , originX1-3.0*geoOverlap
-		//  , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], kanalhoeheSI*0.1));
-
-
-
-	  if (refineLevel > 0)
-	  {
-		 
-		  RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-		  refineHelper.addGbObject( refine6PlatteCube, refineLevel-1);
-                refineHelper.addGbObject( refine5PlatteCube, refineLevel);
-                //refineHelper.addGbObject( refine4PlatteCube, refineLevel);
-		  //refineHelper.addGbObject( refine3PlatteCube, refineLevel);
-		  refineHelper.refine();
-		  if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-	  }
-
-
-
-      if(myid == 0) UBLOG(logINFO,"Refinement - end");
-	  ////////////////////////////////////////////
-	  //METIS
-	  MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-	  grid->accept( metisVisitor );
-	  /////////////////////////////////////////////////
-	  ///interactoren
-	  int bbOption1 = 0; //0=simple Bounce Back, 1=quadr. BB
-	  D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-
-	  D3Q27TriFaceMeshInteractorPtr triBridgeInteractor( new D3Q27TriFaceMeshInteractor(mesh, grid, bcObst,Interactor3D::SOLID));
-	  //sd.addInteractor(triBridgeInteractor);
-
-	  D3Q27TriFaceMeshInteractorPtr triBandInteractor( new D3Q27TriFaceMeshInteractor( meshBand, grid, bcObst,Interactor3D::SOLID) );
-
-	  D3Q27TriFaceMeshInteractorPtr triBand2Interactor( new D3Q27TriFaceMeshInteractor( meshBand2, grid, bcObst,Interactor3D::SOLID) );
-
-	
-	  ////////////////////////////////////////////
-	  /////delete solid blocks
-	  if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-	  SolidBlocksHelper sd(grid, comm);
-
-	  sd.addInteractor(triBridgeInteractor);
-	  sd.addInteractor(triBandInteractor);
-	  sd.addInteractor(triBand2Interactor);
-	  sd.addInteractor(densInteractor);
-	  sd.addInteractor(velBCInteractor);
-	  sd.deleteSolidBlocks();
-	  if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	 
-
-
-
-	  //////////////////////////////////////
-
-     
-
-      unsigned long nob = grid->getNumberOfBlocks();
-      unsigned long nod = nob * blocknx[0]*blocknx[1]*blocknx[2];
-      unsigned long nod_real = nob * (blocknx[0]+3)*(blocknx[1]+3)*(blocknx[2]+3);
-      
-      double needMemAll  = double(nod_real*(27*sizeof(double) + sizeof(int)));
-      double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"Number of blocks = " << nob);
-         UBLOG(logINFO,"Number of nodes  = " << nod);
-         UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-         UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-         UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-	  UBLOG(logINFO,"Available memory per node/8.0 = " << (availMem/8.0) << " bytes");
-      }
-	  ////////////////////////////
-	  grid->accept( metisVisitor );
-	  /////kernel
-      //LBMKernel3DPtr kernel(new LBMKernelETD3Q27CascadedTI(blocknx[0], blocknx[1], blocknx[2]));
-	LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2],0)); 
-//	LBMKernel3DPtr kernel(new LBMKernelETD3Q27BGK (blocknx[0], blocknx[1], blocknx[2],1));
-      BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      kernel->setBCProcessor(bcProc);
-	 
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-	  
-      grid->accept(kernelVisitor);
-	  //////////////////////////////////
-	  //undef nodes
-	  if (refineLevel > 0)
-	  {
-		  D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-		  grid->accept(undefNodesVisitor);
-	  }
-	  //////////////////////////////////////////
-	  grid->addAndInitInteractor(triBridgeInteractor);
-	  grid->addAndInitInteractor(triBandInteractor);
-	  grid->addAndInitInteractor(triBand2Interactor);
-	  grid->addAndInitInteractor( densInteractor ); 
-	  grid->addAndInitInteractor( velBCInteractor );
-
-	    UbTimer timer;
-   timer.start();
- 
-   grid->accept( metisVisitor );
-
-   if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-   BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-   if(myid == 0) ppblocks->update(0);
-   if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-	      
-
-   if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-   grid->accept( metisVisitor );
-   if(myid == 0) ppblocks->update(1);
-   ppblocks.reset();
-   if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-  
-
-
-      //set connectors
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-      D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-      grid->accept( setConnsVisitor );
-
-      //domain decomposition
-      //PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      //grid->accept(pqPartVisitor);
-
-      //initialization of decompositions
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(1.0);
-      initVisitor.setVx1(inflowProfile);
-      grid->accept(initVisitor);
-
-      //Postprozess
-	
-      
-      UbSchedulerPtr geoSch(new UbScheduler(1));
-      D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-           new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), 
-                                                       unitConverter, comm, true));
-	  									
-
-      grid->doPostProcess(0);
-      ppgeo.reset();
-      geoSch.reset();
-
-      if(myid == 0) UBLOG(logINFO,"Preprozess - end");      
-
-}
-      
-
-
-      UbSchedulerPtr visSch(new UbScheduler());
-visSch->addSchedule(1,1,3);
-      visSch->addSchedule(100,100,1000);
- //     visSch->addSchedule(1000,1000,100000);
- //     visSch->addSchedule(100000,100000,1000000);
-	//  //TurbulenceIntensityPostprocessor tipp(grid,  pathname + "/steps/stepTI", WbWriterVtkXmlBinary::getInstance(), visSch, comm);
-	  UbSchedulerPtr resSch(new UbScheduler());
-      resSch->addSchedule(0,20,1000);
-	  AverageValuesPostprocessor       Avpp(grid,  pathname + "/steps/stepAV", WbWriterVtkXmlBinary::getInstance(), visSch/*wann wird rausgeschrieben*/,resSch/*wann wird resettet*/,comm);
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), unitConverter, comm);// unitConverter, comm);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-	  //}
-	  mu::Parser decrViscFunc;
-      decrViscFunc.SetExpr("nue0+c0/(t+1)/(t+1)");
-      decrViscFunc.DefineConst("nue0", nueLB);
-	  decrViscFunc.DefineConst("c0", 0.1);
-	  UbSchedulerPtr DecrViscSch(new UbScheduler());
-      DecrViscSch->addSchedule(10,10,1000);
-	  DecreaseViscosityPostprocessor decrViscPPPtr(grid, DecrViscSch,&decrViscFunc, comm);
-
-      cout << "PID = " << myid << " Total Physical Memory (RAM): " << MemoryUtil::getTotalPhysMem()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used: " << MemoryUtil::getPhysMemUsed()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used by current process: " << MemoryUtil::getPhysMemUsedByMe()<<endl;
-
-      double endTime = 200001;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/plate/plate.old b/apps/cpu/plate/plate.old
deleted file mode 100644
index f3d3be2d1db3823e4776da6bfcd410a11d8b9d95..0000000000000000000000000000000000000000
--- a/apps/cpu/plate/plate.old
+++ /dev/null
@@ -1,615 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "numerics/geometry3d/CoordinateTransformation3D.h"
-#include "Grid3D.h"
-#include "GenBlocksGridVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include <numerics/geometry3d/GbSphere3D.h>
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "RefineInterGbObjectsVisitor.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "MPICommunicator.h"
-#include "D3Q27ETBCProcessor.h"
-#include "SimulationParameters.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "D3Q27SetConnectorsBlockVisitor.h"
-#include "NullCommunicator.h"
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "CalculationManager.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27VelocityBCAdapter.h"
-#include "D3Q27DensityBCAdapter.h"
-#include "D3Q27BoundaryConditionAdapter.h"
-#include "StringUtil.hpp"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "D3Q27CompactInterpolationProcessor.h"
-#include "SyncBcBlockVisitor.h"
-#include "numerics/geometry3d/creator/GbTriFaceMesh3DCreator.h"
-#include "numerics/geometry3d/GbTriFaceMesh3D.h"
-#include "D3Q27TriFaceMeshInteractor.h"
-#include "MathUtil.hpp"
-#include "SolidBlocksHelper.h"
-#include "LBMKernelETD3Q27CascadedTI.h"
-#include "TurbulenceIntensityPostprocessor.h"
-#include "RestartPostprocessor.h"
-#include "BlocksPostprocessor.h"
-#include "NUPSCounterPostprocessor.h"
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string machine = QUOTEME(CAB_MACHINE);
-      string BrueckeFilename;
-      string ZckbndFilename;
-      string pathname; 
-      string pathGeo;
-      int numOfThreads =1;
-      bool logfile = false;
-      double availMem = 0;
-
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-      
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "c:/temp/plate";
-         pathGeo = "c:/Data/plate";
-         numOfThreads = 1;
-         logfile = false;
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/koskuche/scratch/plate";
-         pathGeo = "/home/koskuche/data/plate";
-         numOfThreads = 8;
-         availMem = 12.0e9;
-
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      BrueckeFilename = pathGeo + "/platte_raw.stl"; 
-      ZckbndFilename= pathGeo + "/2zackenbaender0.stl";
-      
-
-
-      if(myid ==0 && logfile)
-      {
-         stringstream logFilename;
-         logFilename <<  pathname + "/logfile.log";
-         UbLog::output_policy::setStream(logFilename.str());
-      }
-
-      int baseLevel, refineLevel,nx[3],blocknx[3];
-      double Re,velocity,rhoInit,vx1Init;//,vx2Init,vx3Init;
-
-      //////////////////////////////////////////////////////////////////////////
-      //physik
-      //////////////////////////////////////////////////////////////////////////
-      Re            = 11900;// 13286;//13286;//gemessen 18.98 m/s...*5.0 zum  testen ob was passiert
-      velocity      = 0.01;  
-      vx1Init       = 0.01;  
-      rhoInit       = 1.0;
-      SimulationParametersPtr param = SimulationParameters::getInstanz();
-      param->setCollisionModelType(SimulationParameters::COMPRESSIBLE);
-
-      ///////////////Knotenabmessungen:
-      //int KnotenCubeCoarse=40;
-      nx[0]      = 120;//60;//86;//43;//65;//50;  //länge
-      nx[1]      = 1;//6;///1;//5;// //breite
-      nx[2]      = 32;//18;//5;//15;//15; //höhe gebiet
-      blocknx[0] = 15;
-      blocknx[1] = 15;
-      blocknx[2] = 15;
-
-      baseLevel   = 0;
-      refineLevel = 4;
-
-      int inflowCubeLevel = 1;
-      int bottomLevel     = 1;
-
-      ///////////////Weltabmessungen:
-      double kanalhoeheSI  = 60.0/100.0;//60.0/100.0;//cm, Kanalhöhe
-      double kanalbreiteSI = 9.9/100.0;//1.65/100.0;//13.2/100.0;////40.0/100.0; //cm, Kanalbreite //13.2 zeilbreite
-      double kanallaengeSI = kanalhoeheSI*30.0/18.0;//80.0/100.0;//cm, Kanallänge, ist nicht angegeben
-
-      // double refinewidth1=kanalhoeheSI/10.0;
-
-      double fineNodeDx   = (kanalhoeheSI) / (double)( blocknx[2]*nx[2]*(1<<refineLevel)+1 ); //+1--> gitter liegt jeweils 0.5dx innerhalb
-      double coarseNodeDx = fineNodeDx * (double)(1<<refineLevel);//geowerte
-
-      double blockLengthx1 = blocknx[0]*coarseNodeDx; //geowerte
-      double blockLengthx2 = blockLengthx1;
-      double blockLengthx3 = blockLengthx1;
-
-      double originX1 = 0.0;//-50.0*propellerDurchmesser;  //geowerte
-      double originX2 = 0.0;//-0.5*blockLengthx2*nx2;
-      double originX3 = 0.0;// minX3 + 0.5*fineNodeDx;
-
-      double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3}; 
-
-      //position vorderkante cube
-      double originBridgeX1 = 20.0/100.0; //cm, geraten
-      double originBridgeX2 = 0.0;//0.5*params.nx[1]*blockLengthx2-0.5*H-fineNodeDx;
-      double originBridgeX3 = kanalhoeheSI*0.5;//H*0.0-fineNodeDx; //boden
-
-      bool periodicx1 = false;
-      bool periodicx2 = true;
-      bool periodicx3 = true;
-
-      //##########################################################################
-      //## physical parameters
-      //##########################################################################
-      double smagorinskiConstant = 0.18;
-
-
-      double rhoLB         = 1.0;
-      double rhoReal       = 1.0;
-      double nueReal  = 0.000015;//0.015;
-
-      double hReal         = 0.0105;//<-m     1.05;//Plattendicke in cm(! cm nicht m !)
-      double uReal         = Re*nueReal/hReal;
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-      double Ma      = 0.05;//0.0553;//Ma-Real!
-      double csReal  = uReal/Ma;
-      double hLB     = hReal/coarseNodeDx;
-
-      LBMUnitConverter unitConverter(hReal, csReal, rhoReal, hLB);
-
-      double uLB           = uReal   * unitConverter.getFactorVelocityWToLb();
-      double nueLB         = nueReal * unitConverter.getFactorViscosityWToLb();
-
-      velocity = uLB;
-      double viscosity = nueLB;
-
-      Grid3DPtr grid(new Grid3D());
-      UbSchedulerPtr rSch(new UbScheduler(5000,5000,1000000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY);
-
-      //////////////////////////////////////////////////////////////////////////
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if(/*(cstr== NULL)*/cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-
-         grid = rp.restart(UbSystem::stringTo<int>(opt));
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-      }
-      else
-      {
-      //bounding box
-      double g_minX1 = originX1;
-      double g_minX2 = originX2;
-      double g_minX3 = originX3;
-
-      double g_maxX1 = originX1 + geoLength[0];
-      double g_maxX2 = originX2 + geoLength[1];
-      double g_maxX3 = originX3 + geoLength[2];
-
-      //set grid
-      grid->setDeltaX(coarseNodeDx);
-      grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-      grid->setPeriodicX1(periodicx1);
-      grid->setPeriodicX2(periodicx2);
-      grid->setPeriodicX3(periodicx3);
-
-      
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-      GenBlocksGridVisitor genBlocks;
-      genBlocks.addGeoObject(gridCube);
-      grid->accept(genBlocks);
-
-      //////////////////////////////////////////////////////////////////////////
-      //platte
-      GbTriFaceMesh3DPtr mesh (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(BrueckeFilename,"Netz"));
-
-      double x1minMesh = mesh->getX1Minimum(); double x1maxMesh = mesh->getX1Maximum();
-      double x2minMesh = mesh->getX2Minimum(); double x2maxMesh = mesh->getX2Maximum();
-      double x3minMesh = mesh->getX3Minimum(); double x3maxMesh = mesh->getX3Maximum();
-
-      double drehpunktX=x1minMesh+(x1maxMesh-x1minMesh)*0.5;//triFaceMeshS->getX1Centroid();
-      double drehpunktZ=x3minMesh+(x3maxMesh-x3minMesh)*0.5;//triFaceMeshS->getX3Centroid();
-      double drehpunktY=x2minMesh+(x2maxMesh-x2minMesh)*0.5;// seedX2-0.5*nodeDelta;//+nx2*deltaX2+0.5*deltaX2;
-
-      mesh->rotate(90.0,0.0,0.0);  //TriFacMesh-KO-System anders als LB-KO-System
-
-      x1minMesh = mesh->getX1Minimum();  x1maxMesh = mesh->getX1Maximum();
-      x2minMesh = mesh->getX2Minimum();  x2maxMesh = mesh->getX2Maximum();
-      x3minMesh = mesh->getX3Minimum();  x3maxMesh = mesh->getX3Maximum();
-
-      drehpunktX=x1minMesh+(x1maxMesh-x1minMesh)*0.5;//triFaceMeshS->getX1Centroid();
-      drehpunktZ=x3minMesh+(x3maxMesh-x3minMesh)*0.5;//triFaceMeshS->getX3Centroid();
-      drehpunktY=x2minMesh+(x2maxMesh-x2minMesh)*0.5;// seedX2-0.5*nodeDelta;//+nx2*deltaX2+0.5*deltaX2;
-
-      double H3=1.05/100.0;//cm, Plattendicke
-      double scaleB=H3/(x3maxMesh-x3minMesh);
-      double scaleX2=(geoLength[2]+2.0*coarseNodeDx)/(x2minMesh-x2maxMesh);
-
-      mesh->scale(scaleB,scaleB,scaleB);
-      x1minMesh = mesh->getX1Minimum(); x1maxMesh = mesh->getX1Maximum();
-      x2minMesh = mesh->getX2Minimum(); x2maxMesh = mesh->getX2Maximum();
-      x3minMesh = mesh->getX3Minimum(); x3maxMesh = mesh->getX3Maximum();
-      double offsetXBridge=originBridgeX1;//originBridgeX1;
-      double offsetYBridge=originBridgeX2;//originBridgeX2;
-      double offsetZBridge=originBridgeX3;//originBridgeX3;//-0.5*(x3minMesh-x3maxMesh);
-      //mesh->translate(-x1minMesh+offsetXBridge, -x2minMesh-0.5*offsetYBridge-coarseNodeDx, -x3minMesh+offsetZBridge); 
-      mesh->translate(-x1minMesh+offsetXBridge, -x2minMesh+offsetYBridge-coarseNodeDx, -x3minMesh+offsetZBridge-(x3maxMesh-x3minMesh)*0.5); 
-
-      x1minMesh = mesh->getX1Minimum(); x1maxMesh = mesh->getX1Maximum();
-      x2minMesh = mesh->getX2Minimum(); x2maxMesh = mesh->getX2Maximum();
-      x3minMesh = mesh->getX3Minimum(); x3maxMesh = mesh->getX3Maximum();
-
-      if(myid == 0) GbSystem3D::writeGeoObject( mesh.get(), pathname+"/geo/platte", WbWriterVtkXmlBinary::getInstance() );
-
-      //////////////////////////////////////////////////////////////////////////
-      // Zackenband
-      //////////////////////////////////////////////////////////////////////////
-      GbTriFaceMesh3DPtr meshBand (GbTriFaceMesh3DCreator::readMeshFromFile(ZckbndFilename, "NetzBand"));
-      meshBand->deleteRedundantNodes();
-
-      double x1minMeshB = meshBand->getX1Minimum(); double x1maxMeshB = meshBand->getX1Maximum();
-      double x2minMeshB = meshBand->getX2Minimum(); double x2maxMeshB = meshBand->getX2Maximum();
-      double x3minMeshB = meshBand->getX3Minimum(); double x3maxMeshB = meshBand->getX3Maximum();
-
-      x1minMeshB = meshBand->getX1Minimum();  x1maxMeshB = meshBand->getX1Maximum();
-      x2minMeshB = meshBand->getX2Minimum();  x2maxMeshB = meshBand->getX2Maximum();
-      x3minMeshB = meshBand->getX3Minimum();  x3maxMeshB = meshBand->getX3Maximum();
-
-      double H1B=1.5/100.0;//0.05;//cm, Banddicke..nachschauen!!!
-      double scaleBand=H1B/(x1maxMeshB-x1minMeshB);//H3B/(x3maxMeshB-x3minMeshB);
-
-      meshBand->scale(scaleBand,scaleBand,scaleBand);
-      x1minMeshB = meshBand->getX1Minimum(); x1maxMeshB = meshBand->getX1Maximum();
-      x2minMeshB = meshBand->getX2Minimum(); x2maxMeshB = meshBand->getX2Maximum();
-      x3minMeshB = meshBand->getX3Minimum(); x3maxMeshB = meshBand->getX3Maximum();
-      double dBandX=0.5/100.0;//1.29; //15mm-2.1mm Absand von Bandvorderkante
-      double dBandY=0.0/100.0;
-      double dBandZ=0.223/100.0;//0.344;//....
-      double offsetXBridgeB=x1minMesh+dBandX;//originBridgeX1+dBandX;//originBridgeX1;
-      double offsetYBridgeB=originBridgeX2+dBandY;//originBridgeX2;
-      double offsetZBridgeB=originBridgeX3+dBandZ;//originBridgeX3;//-0.5*(x3minMesh-x3maxMesh);
-      meshBand->translate(-x1minMeshB+offsetXBridgeB, -x2minMeshB+offsetYBridgeB-coarseNodeDx, -x3minMeshB+offsetZBridgeB);//-(x3maxMeshB-x3minMeshB)*0.5); 
-
-      x1minMeshB = meshBand->getX1Minimum(); x1maxMeshB = meshBand->getX1Maximum();
-      x2minMeshB = meshBand->getX2Minimum(); x2maxMeshB = meshBand->getX2Maximum();
-      x3minMeshB = meshBand->getX3Minimum(); x3maxMeshB = meshBand->getX3Maximum();
-
-      GbSystem3D::writeGeoObject( meshBand.get(), pathname+"/geo/Band", WbWriterVtkXmlASCII::getInstance() );
-
-      /////////////////Band2
-      GbTriFaceMesh3DPtr meshBand2(GbTriFaceMesh3DCreator::readMeshFromFile(ZckbndFilename, "NetzBand2"));
-      meshBand->deleteRedundantNodes();
-
-      double x1minMeshB2 = meshBand2->getX1Minimum(); double x1maxMeshB2 = meshBand2->getX1Maximum();
-      double x2minMeshB2 = meshBand2->getX2Minimum(); double x2maxMeshB2 = meshBand2->getX2Maximum();
-      double x3minMeshB2 = meshBand2->getX3Minimum(); double x3maxMeshB2 = meshBand2->getX3Maximum();
-
-      x1minMeshB2 = meshBand2->getX1Minimum();  x1maxMeshB2 = meshBand2->getX1Maximum();
-      x2minMeshB2 = meshBand2->getX2Minimum();  x2maxMeshB2 = meshBand2->getX2Maximum();
-      x3minMeshB2 = meshBand2->getX3Minimum();  x3maxMeshB2 = meshBand2->getX3Maximum();
-
-      double H1B2=1.5/100.0;//0.05;//cm, Banddicke..nachschauen!!!
-      double scaleBand2=H1B2/(x1maxMeshB2-x1minMeshB2);//H3B/(x3maxMeshB-x3minMeshB);
-
-      meshBand2->scale(scaleBand2,scaleBand2,scaleBand2);
-      x1minMeshB2 = meshBand2->getX1Minimum(); x1maxMeshB2 = meshBand2->getX1Maximum();
-      x2minMeshB2 = meshBand2->getX2Minimum(); x2maxMeshB2 = meshBand2->getX2Maximum();
-      x3minMeshB2 = meshBand2->getX3Minimum(); x3maxMeshB2 = meshBand2->getX3Maximum();
-      double dBandX2=0.5/100.0;//1.29;
-      double dBandY2=0.5/100.0;
-      double dBandZ2=0.223/100.0;//0.344;//...
-      double offsetXBridgeB2=x1minMesh+dBandX2;//originBridgeX1;
-      double offsetYBridgeB2=originBridgeX2+dBandY2;//originBridgeX2;
-      double offsetZBridgeB2=originBridgeX3+dBandZ2;//originBridgeX3;//-0.5*(x3minMesh-x3maxMesh);
-      meshBand2->translate(-x1minMeshB2+offsetXBridgeB2, -x2minMeshB2+offsetYBridgeB2-coarseNodeDx, -x3minMeshB2+offsetZBridgeB2);//-(x3maxMeshB2-x3minMeshB2)*0.5); 
-
-      x1minMeshB2 = meshBand2->getX1Minimum(); x1maxMeshB2 = meshBand2->getX1Maximum();
-      x2minMeshB2 = meshBand2->getX2Minimum(); x2maxMeshB2 = meshBand2->getX2Maximum();
-      x3minMeshB2 = meshBand2->getX3Minimum(); x3maxMeshB2 = meshBand2->getX3Maximum();
-
-      if(myid == 0) GbSystem3D::writeGeoObject( meshBand2.get(), pathname+"/geo/Band2", WbWriterVtkXmlASCII::getInstance() );
-      //////////////////////////////////////////////////////////////////////////
-      if(myid == 0) 
-      {
-         UBLOG(logINFO, "*****************************************");
-         UBLOG(logINFO, "* Parameters                            *");
-         UBLOG(logINFO, "* Re            ="<<Re);
-         UBLOG(logINFO, "* Ma            ="<<Ma);
-         UBLOG(logINFO, "* uReal         ="<<uReal);
-         UBLOG(logINFO, "* nueReal       ="<<nueReal);
-         UBLOG(logINFO, "* nue           ="<<nueLB);
-         UBLOG(logINFO, "* velocity      ="<<uLB);
-         UBLOG(logINFO, "* LX1 (world/LB)="<<kanallaengeSI<<"/"<<kanallaengeSI/coarseNodeDx);
-         UBLOG(logINFO, "* LX2 (world/LB)="<<kanalbreiteSI<<"/"<<kanalbreiteSI/coarseNodeDx);
-         UBLOG(logINFO, "* LX3 (world/LB)="<<kanalhoeheSI<<"/"<<kanalhoeheSI/coarseNodeDx);
-         //UBLOG(logINFO, "* dxInflow-Cube ="<<velBCCuboid->getX1Maximum()-mesh->getX1Minimum());
-         UBLOG(logINFO, "* cdx           ="<<coarseNodeDx);
-         UBLOG(logINFO, "* fdx           ="<<fineNodeDx);
-         //UBLOG(logINFO, "* inflowProfile ="<<inflowProfile.GetExpr());
-         UBLOG(logINFO, "* dx_base       ="<<coarseNodeDx<<" == "<<coarseNodeDx);
-         UBLOG(logINFO, "* dx_refine     ="<<fineNodeDx<<" == "<<fineNodeDx );
-         //UBLOG(logINFO, "* raiseVelSteps ="<<raiseVelSteps);
-         UBLOG(logINFO, "* nx1/2/3       ="<<nx[0]<<"/"<<nx[1]<<"/"<<nx[2]);
-         UBLOG(logINFO, "* blocknx1/2/3  ="<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-         UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-         UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-         UBLOG(logINFO, "*****************************************");
-         UBLOGML(logINFO, "UnitConverter:"<<unitConverter.toString());
-         UBLOG(logINFO, "*****************************************");     
-      }
-      if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-      double geoOverlap = 3.0*coarseNodeDx;
-      //////////////////////////////////////////////////////////////////////////
-      // refine
-      //////////////////////////////////////////////////////////////////////////
-      ///////////platte ausmessen:
-      x1minMesh = mesh->getX1Minimum(); x1maxMesh = mesh->getX1Maximum();
-      x2minMesh = mesh->getX2Minimum(); x2maxMesh = mesh->getX2Maximum();
-      x3minMesh = mesh->getX3Minimum(); x3maxMesh = mesh->getX3Maximum();
-      double deltaX3Platte=(x3maxMesh-x3minMesh);
-
-
-      //GbCuboid3DPtr refine1PlatteCube(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-H3
-      //   , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3));
-      //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP1(refine1PlatteCube, baseLevel, refineLevel-6);
-      //grid->accept(refineAdapterP1);
-
-      // GbCuboid3DPtr refine2PlatteCube(new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-H3*0.5
-        // , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3));
-      // RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP2(refine2PlatteCube, baseLevel, refineLevel-5);
-      // grid->accept(refineAdapterP2);
-
-      GbCuboid3DPtr refine3PlatteCube(new GbCuboid3D(  originX1-geoOverlap  , originX2-geoOverlap  , x3minMesh-H3*0.5
-         , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.5));
-      RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP3(refine3PlatteCube, baseLevel, refineLevel-4);
-      grid->accept(refineAdapterP3);
-
-      GbCuboid3DPtr refine4PlatteCube(new GbCuboid3D(   originX1-geoOverlap  , originX2-geoOverlap  , x3minMesh+deltaX3Platte*0.0
-         ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.25));
-      if(myid == 0) GbSystem3D::writeGeoObject(refine4PlatteCube.get(), pathname+"/geo/refine4PlatteCube", WbWriterVtkXmlASCII::getInstance());
-      RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP4(refine4PlatteCube, baseLevel, refineLevel-3);
-      grid->accept(refineAdapterP4);
-
-      GbCuboid3DPtr refine5PlatteCube(new GbCuboid3D(   originX1-geoOverlap , originX2-geoOverlap  ,x3minMesh+deltaX3Platte*0.1/* x3minMesh+deltaX3Platte*0.8*/
-         ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.00375));
-      if(myid == 0) GbSystem3D::writeGeoObject(refine5PlatteCube.get(), pathname+"/geo/refine5PlatteCube", WbWriterVtkXmlASCII::getInstance());
-      RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP5(refine5PlatteCube, baseLevel, refineLevel-2);
-      grid->accept(refineAdapterP5);
-
-      GbCuboid3DPtr refine6PlatteCube(new GbCuboid3D(   originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-deltaX3Platte*0.1/*x3minMesh+deltaX3Platte*0.9*/
-         ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+deltaX3Platte*0.9));
-      if(myid == 0) GbSystem3D::writeGeoObject(refine6PlatteCube.get(), pathname+"/geo/refine6PlatteCube", WbWriterVtkXmlASCII::getInstance());
-      RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP6(refine6PlatteCube, baseLevel, refineLevel-1);
-      grid->accept(refineAdapterP6);
-
-      //GbCuboid3DPtr refine7PlatteCube(new GbCuboid3D(originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-deltaX3Platte*0.3, 
-      //                                               meshBand->getX1Maximum()+meshBand->getLengthX1()*3.0, originX2+geoOverlap+geoLength[1], x3maxMesh));
-      //if(myid == 0) GbSystem3D::writeGeoObject(refine7PlatteCube.get(), pathname+"/geo/refine7PlatteCube", WbWriterVtkXmlASCII::getInstance());
-      //RefineCrossAndInsideGbObjectBlockVisitor refineAdapterP7(refine7PlatteCube, baseLevel, refineLevel-1);
-      //grid->accept(refineAdapterP7);
-
-      RatioBlockVisitor ratioVisitor(refineLevel);
-      grid->accept(ratioVisitor);
-      RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-      grid->accept(ratioSmoothVisitor);
-      OverlapBlockVisitor overlapVisitor(refineLevel);
-      grid->accept(overlapVisitor);
-      std::vector<int> dirs;
-      D3Q27System::getLBMDirections(dirs);
-      SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-      grid->accept(interDirsVisitor);
-
-      if(myid == 0) UBLOG(logINFO,"Refinement - end");
-
-      if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-      BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-      if(myid == 0) ppblocks->update(0);
-      //ppblocks.reset();
-      if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-      
-      MetisPartitioningGridVisitor metisVisitor(numOfThreads, D3Q27System::B, comm, false);
-      grid->accept( metisVisitor );
-
-      if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-      SolidBlocksHelper sd(grid, comm);
-
-      //iteractors
-      int bbOption1 = 0; //0=simple Bounce Back, 1=quadr. BB
-      D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-
-      D3Q27TriFaceMeshInteractorPtr triBridgeInteractor( new D3Q27TriFaceMeshInteractor(mesh, grid, bcObst,Interactor3D::SOLID));
-      sd.addInteractor(triBridgeInteractor);
-
-      D3Q27TriFaceMeshInteractorPtr triBandInteractor( new D3Q27TriFaceMeshInteractor( meshBand, grid, bcObst,Interactor3D::SOLID) );
-
-      D3Q27TriFaceMeshInteractorPtr triBand2Interactor( new D3Q27TriFaceMeshInteractor( meshBand2, grid, bcObst,Interactor3D::SOLID) );
-
-      sd.deleteSolidBlocks();
-      if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	      
-      
-      if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-      grid->accept( metisVisitor );
-      //BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-      if(myid == 0) ppblocks->update(0);
-      ppblocks.reset();
-      if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-      unsigned long nob = grid->getNumberOfBlocks();
-      unsigned long nod = nob * blocknx[0]*blocknx[1]*blocknx[2];
-      
-      double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int))*2);
-      double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"Number of blocks = " << nob);
-         UBLOG(logINFO,"Number of nodes  = " << nod);
-         UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-         UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-         UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-      }
-
-      LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(blocknx[0], blocknx[1], blocknx[2]));
-      BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-      if (refineLevel > 0)
-      {
-         D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-         grid->accept(undefNodesVisitor);
-      }
-
-      //discretization
-      grid->addAndInitInteractor(triBridgeInteractor);
-      grid->addAndInitInteractor(triBandInteractor);
-      grid->addAndInitInteractor(triBand2Interactor);
-
-      //outflow
-      GbCuboid3DPtr densCuboid(new GbCuboid3D(originX1+geoLength[0]-coarseNodeDx, originX2-geoOverlap, originX3-geoOverlap, 
-                                              originX1+geoLength[0]+geoOverlap, originX2+geoLength[1]+geoOverlap, originX3+geoLength[2]+geoOverlap ));
-      if(myid == 0) GbSystem3D::writeGeoObject(densCuboid.get(), pathname+"/geo/densCuboid", WbWriterVtkXmlASCII::getInstance());
-      D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoInit));
-      D3Q27InteractorPtr densInteractor( new D3Q27Interactor(densCuboid,grid,denBCAdapter,Interactor3D::SOLID) );
-      grid->addAndInitInteractor( densInteractor ); 
-
-      //inflow
-      double uLB2=uLB*0.96*1.02;//*0.5;
-      double raiseVelSteps = 0;
-      vector<D3Q27BCFunction> velcX1BCs,dummy;
-
-      mu::Parser inflowProfile;
-      inflowProfile.SetExpr("uLB"); 
-
-      inflowProfile.DefineConst("uLB",uLB2);
-      velcX1BCs.push_back(D3Q27BCFunction(inflowProfile,raiseVelSteps,D3Q27BCFunction::INFCONST));
-
-      GbCuboid3DPtr velBCCuboid(new GbCuboid3D(originX1-geoOverlap, originX2-geoOverlap, originX3-geoOverlap, 
-                                               originX1+coarseNodeDx, originX2+geoLength[1]+geoOverlap, originX3+geoLength[2]+geoOverlap));
-      if(myid == 0) GbSystem3D::writeGeoObject(velBCCuboid.get(), pathname+"/geo/velBCCuboid", WbWriterVtkXmlASCII::getInstance());
-
-      D3Q27InteractorPtr velBCInteractor(new D3Q27Interactor(velBCCuboid,grid,Interactor3D::SOLID)); 
-      D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (velcX1BCs,dummy,dummy));
-      velBCInteractor->addBCAdapter(velBCAdapter);
-      grid->addAndInitInteractor( velBCInteractor ); 
-
-      //set connectors
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-      D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-      grid->accept( setConnsVisitor );
-
-      //domain decomposition
-      PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      grid->accept(pqPartVisitor);
-
-      //initialization of decompositions
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(1.0);
-      initVisitor.setVx1(inflowProfile);
-      grid->accept(initVisitor);
-
-      //Postrozess
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-      
-      UbSchedulerPtr geoSch(new UbScheduler(1));
-      D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-           new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), 
-                                                       conv, comm, true));
-      grid->doPostProcess(0);
-      ppgeo.reset();
-      geoSch.reset();
-
-      if(myid == 0) UBLOG(logINFO,"Preprozess - end");    
-      
-      if(myid == 0) 
-      {
-         UBLOG(logINFO, "* dxInflow-Cube ="<<velBCCuboid->getX1Maximum()-mesh->getX1Minimum());
-         UBLOG(logINFO, "* inflowProfile ="<<inflowProfile.GetExpr());
-         UBLOG(logINFO, "* raiseVelSteps ="<<raiseVelSteps);
-      }
-}
-      
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-      double outTime = 1000;
-      UbSchedulerPtr visSch(new UbScheduler(outTime));
-      visSch->addSchedule(1000,1000,10000);
-      visSch->addSchedule(10000,10000,100000);
-      visSch->addSchedule(100000,100000,1000000);
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double endTime = 1000001;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/plate/sonjas_org.cpp.vf b/apps/cpu/plate/sonjas_org.cpp.vf
deleted file mode 100644
index 8f590605aed93606c716ef4c9276b3c96b66e5c0..0000000000000000000000000000000000000000
--- a/apps/cpu/plate/sonjas_org.cpp.vf
+++ /dev/null
@@ -1,678 +0,0 @@
-
-
-..damit wir gleich damit anfangen können. So sieht das Setup aus.
-Sonja
-
-
-SpD3Q19Plattenanstroemung.hpp
-
-#include <topology/amr3d/blockadaptation/AMR3DCrossAndInsideGbObject3DAdapter.h>
-//AMR3DCrossAndInsideGbObject3DAdapter
-#include <topology/amr3d/lbmd3q19/utils/D3Q19MetisTools.h>
-//#include <topology/amr3d/lbmd3q19/turbulenceWale/gridadaptation/TwD3Q19SpongeLayerAdapter.h>
-#include <topology/amr3d/lbmd3q19/gridadaptation/D3Q19GridInformationGridAdapter.h>
-#include <topology/amr3d/lbmd3q19/gridadaptation/D3Q19SetConnectorsGridAdapter.h>
-#include <topology/amr3d/lbmd3q19/gridadaptation/D3Q19InitDistributionsGridAdapter.h>
-#include <topology/amr3d/gridadaptation/AMR3DGridLevelPartitionMetisAdapter.h>
-#include <topology/amr3d/gridadaptation/AMR3DGridPartitionOneDirectionAdapter.h>
-#include <topology/amr3d/lbmd3q19/bcadapter/D3Q19DensityLodiBCAdapter.h>
-#include <topology/amr3d/lbmd3q19/singlephase/gridadaptation/SpD3Q19SpongeLayerAdapter.h>
-#include <topology/amr3d/lbmd3q19/gridadaptation/D3Q19InitDistributionsGridAdapter.h>
-
-#include <numerics/geometry3d/GbTriFaceMesh3D.h>
-#include <numerics/geometry3d/creator/GbTriFaceMesh3DCreator.h>
-#include <topology/amr3d/lbmd3q19/interactor/D3Q19AMRTriFaceMeshInteractor.h>
-#include <topology/amr3d/lbmd3q19/services/adapter/D3Q19ClientGridWriteInteractorNodeFiles.h>
-#include <topology/amr3d/lbmd3q19/gridadaptation/D3Q19ChangeSlipToNoSlipGridAdapter.h> 
-
-using namespace std;
-
-void SpD3Q19MasterTestcases::start( RcfClient<IRcfIpService>& ipService, 
-                                   RcfClient<IRcfD3Q19TopologyService>& topoService, 
-                                   RcfClient<IRcfD3Q19AMRInteractorService>& interactorService, 
-                                   RcfClient<IRcfD3Q19CalculationManager>& calculationManager,
-                                   std::vector< RcfClient<IRcfD3Q19CalcService> >& calcServices,
-                                   std::string inputfile )
-{
-   using namespace std;
-   UBLOG(logERROR,"Testcase GBBridge_Sonja "); 
-
-   string outpath = UbStaticPathMap::getPath(UbStaticPathMap::GLOBAL);
-
-   SpD3Q19TestCaseParameters params;
-   bool useLODI;
-   bool initWithLogProfile;
-   //////////////////////////////////////////////////////////////////////////
-   // Params
-   //////////////////////////////////////////////////////////////////////////
-   // if( inputfile.empty() )
-   // {
-   params.calcSteps          = 300000;
-   params.threadedClientCall = true;
-
-   //params.distributedDumpScheduler = UbScheduler(5000, 0);
-   params.distributedDumpScheduler.addSchedule(UbSchedule(100,0,100));
-   params.distributedDumpScheduler.addSchedule(UbSchedule(100,100,6000));
-   params.distributedDumpScheduler.addSchedule(UbSchedule(1000,6000,10000));
-   params.distributedDumpScheduler.addSchedule(UbSchedule(5000,10000,Ub::inf));
-
-   //params.schedulers.calcForces    = UbScheduler(10,0);
-   //params.schedulers.writeForces   = UbScheduler(500,500);
-   params.schedulers.resetAverage  = UbScheduler(50000,50000);
-   params.schedulers.serialization = UbScheduler(20000,20000);
-
-   //Schnickschnack(  so lassen, da geht es im Wesentlichen um Kommunikationsdetails)
-   params.connsTransAttr.setRemoteProtocol(D3Q19ConnectorTransmitterAttributes::MPI_PROTOCOL);
-   params.connsTransAttr.setOptionDirectConnectors(true);
-   params.connsTransAttr.setOptionTwoVectorsForLocalVectors(false);
-   params.connsTransAttr.setOptionConsForNotActiveBlocks(true);
-   params.connsTransAttr.setOptionRemoteBlockedSend(false);
-   params.connsTransAttr.setOptionRemoteBlockedReceive(true);
-   params.connsTransAttr.setOptionRemotePool(true);
-   params.connsTransAttr.setOptionStlVecForSameLevelCons(false);
-   params.connsTransAttr.setOptionStlVecForScaleCons(false);
-
-#ifndef CAB_MPI
-   if(params.connsTransAttr.getRemoteProtocol() == D3Q19ConnectorTransmitterAttributes::MPI_PROTOCOL) 
-      throw UbException(UB_EXARGS,"MPI Transmitter not available for this compilation without /DCAB_MPI");
-#endif
-
-   string machine = QUOTEME(CAB_MACHINE);
-   string BrueckeFilename;
-   string ZckbndFilename;
-   if(machine == "ARAGORN")     {  BrueckeFilename = "f:/data/bruecke/platte_raw.stl"; ZckbndFilename="f:/data/bruecke/zweiPlatten0.stl";}
-   else if(machine == "LUDWIG") {  BrueckeFilename = "/hpc3lustre/home/sonuphof/Stl-Zeichnungen/platte_raw.stl"; ZckbndFilename="/hpc3lustre/home/sonuphof/Stl-Zeichnungen/2zackenbaender0.stl";}
-   else if(machine == "PIPPIN") {  BrueckeFilename = "C:/platteD291009/sonja2/svn_uphoff/Daten/SFB880/platte-cad/platte_raw.stl"; ZckbndFilename="C:/platteD291009/sonja2/svn_uphoff/Daten/SFB880/platte-cad/2zackenbaender0.stl";}
-   else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-
-   //////////////////////////////////////////////////////////////////////////
-   //physik
-   //////////////////////////////////////////////////////////////////////////
-   params.Re            = 11900;// 13286;//13286;//gemessen 18.98 m/s...*5.0 zum  testen ob was passiert
-   params.velocity      = 0.01;  
-   params.vx1Init       = 0.01;  
-   params.rhoInit       = 0.0;
-   initWithLogProfile   = true;
-   useLODI              = false;
-
-   params.collModel = D3Q19System::INCOMPGLBEJTLESMODEL;
-   ///////////////Knotenabmessungen:
-   //int KnotenCubeCoarse=40;
-   params.nx[0]      = 120;//60;//86;//43;//65;//50;  //länge
-   params.nx[1]      = 6;///1;//5;// //breite
-   params.nx[2]      = 32;//18;//5;//15;//15; //höhe gebiet
-   params.blocknx[0] = 10;
-   params.blocknx[1] = 10;
-   params.blocknx[2] = 10;
-
-   params.baseLevel   = 0;
-   params.refineLevel = 3;
-
-   int inflowCubeLevel = 1;
-   int bottomLevel     = 1;
-
-   ///////////////Weltabmessungen:
-   double kanalhoeheSI  = 60.0/100.0;//60.0/100.0;//cm, Kanalhöhe
-   double kanalbreiteSI = 9.9/100.0;//1.65/100.0;//13.2/100.0;////40.0/100.0; //cm, Kanalbreite //13.2 zeilbreite
-   double kanallaengeSI = kanalhoeheSI*30.0/18.0;//80.0/100.0;//cm, Kanallänge, ist nicht angegeben
-
-   // double refinewidth1=kanalhoeheSI/10.0;
-
-   double fineNodeDx   = (kanalhoeheSI) / (double)( params.blocknx[2]*params.nx[2]*(1<<params.refineLevel)+1 ); //+1--> gitter liegt jeweils 0.5dx innerhalb
-   double coarseNodeDx = fineNodeDx * (double)(1<<params.refineLevel);//geowerte
-
-   double blockLengthx1 = params.blocknx[0]*coarseNodeDx; //geowerte
-   double blockLengthx2 = blockLengthx1;
-   double blockLengthx3 = blockLengthx1;
-
-   double originX1 = 0.0;//-50.0*propellerDurchmesser;  //geowerte
-   double originX2 = 0.0;//-0.5*blockLengthx2*nx2;
-   double originX3 = 0.0;// minX3 + 0.5*fineNodeDx;
-
-   double geoLength[]   = {  params.nx[0]*blockLengthx1, params.nx[1]*blockLengthx2, params.nx[2]*blockLengthx3}; 
-
-   //position vorderkante cube
-   double originBridgeX1 = 20.0/100.0; //cm, geraten
-   double originBridgeX2 = 0.0;//0.5*params.nx[1]*blockLengthx2-0.5*H-fineNodeDx;
-   double originBridgeX3 = kanalhoeheSI*0.5;//H*0.0-fineNodeDx; //boden
-
-   bool periodicx1 = false;
-   bool periodicx2 = true;
-   bool periodicx3 = false;
-
-#ifndef CAB_MPI
-   if(params.connsTransAttr.getRemoteProtocol() == D3Q19ConnectorTransmitterAttributes::MPI_PROTOCOL) 
-      throw UbException("LbD3Q19MasterTestcases::startChannelFlow - MPI Transmitter not available for this compilation without /DCAB_MPI");
-#endif
-
-   //weitere parameter
-   double raiseVelSteps                  = 0;
-   double startViscosity                 = 1.0/3.0;
-   int    decreaseViscositySteps         = 6000;
-   int    decreaseViscosityStepForHalVis = (int)(1.0/8.0*decreaseViscositySteps);
-
-   if( D3Q19System::isCompModel(params.collModel) ) params.rhoInit = 1.0;
-   //////////////////////////////////////////////////////////////////////////
-   //grid initialization
-   //////////////////////////////////////////////////////////////////////////
-   UBLOG2(logINFO, std::cout, "grid initialization...");
-
-   CoordinateTransformation3D* trafo = new CoordinateTransformation3D(originX1,originX2, originX3, blockLengthx1, blockLengthx2, blockLengthx3);
-   vector< boost::shared_ptr<AMR3DGridAdaptationCriterion> > adapter;
-   UBLOG(logINFO,"set periodic")
-   adapter.push_back( boost::shared_ptr<AMR3DGridAdaptationCriterion>(new AMR3DSetPeriodicAdapter(periodicx1, params.nx[0], periodicx2, params.nx[1], periodicx3, params.nx[2])) );
-      UBLOG(logINFO,"construct block grid")
-   topoService.constructBlockGrid("MyGrid", UbTupleInt6(params.nx[0],params.nx[1],params.nx[2],params.blocknx[0],params.blocknx[1],params.blocknx[2]), params.baseLevel, UbPointerWrapper<CoordinateTransformation3D>(trafo),adapter );
-
-   UBLOG2(logINFO, std::cout, "grid initialization... done");
-
-   //##########################################################################
-
-   double geoOverlap = 3.0*coarseNodeDx;
-
-   //////////////////////////////////////////////////////////////////////////////
-
-   GbTriFaceMesh3D* mesh = GbTriFaceMesh3DCreator::readMeshFromFile(BrueckeFilename, "Netz");
-    mesh->deleteRedundantNodes();
-
-     double x1minMesh = mesh->getX1Minimum(); double x1maxMesh = mesh->getX1Maximum();
-   double x2minMesh = mesh->getX2Minimum(); double x2maxMesh = mesh->getX2Maximum();
-   double x3minMesh = mesh->getX3Minimum(); double x3maxMesh = mesh->getX3Maximum();
-
-   double drehpunktX=x1minMesh+(x1maxMesh-x1minMesh)*0.5;//triFaceMeshS->getX1Centroid();
-   double drehpunktZ=x3minMesh+(x3maxMesh-x3minMesh)*0.5;//triFaceMeshS->getX3Centroid();
-   double drehpunktY=x2minMesh+(x2maxMesh-x2minMesh)*0.5;// seedX2-0.5*nodeDelta;//+nx2*deltaX2+0.5*deltaX2;
-
-     mesh->rotateAroundPoint(drehpunktZ,drehpunktX,drehpunktY,90.0,0.0,0.0);  //TriFacMesh-KO-System anders als LB-KO-System
-
-   x1minMesh = mesh->getX1Minimum();  x1maxMesh = mesh->getX1Maximum();
-   x2minMesh = mesh->getX2Minimum();  x2maxMesh = mesh->getX2Maximum();
-   x3minMesh = mesh->getX3Minimum();  x3maxMesh = mesh->getX3Maximum();
-
-   drehpunktX=x1minMesh+(x1maxMesh-x1minMesh)*0.5;//triFaceMeshS->getX1Centroid();
-   drehpunktZ=x3minMesh+(x3maxMesh-x3minMesh)*0.5;//triFaceMeshS->getX3Centroid();
-   drehpunktY=x2minMesh+(x2maxMesh-x2minMesh)*0.5;// seedX2-0.5*nodeDelta;//+nx2*deltaX2+0.5*deltaX2;
-
-   double H3=1.05/100.0;//cm, Plattendicke
-   double scaleB=H3/(x3maxMesh-x3minMesh);
-   double scaleX2=(geoLength[2]+2.0*coarseNodeDx)/(x2minMesh-x2maxMesh);
-
-   mesh->scale(scaleB,scaleB,scaleB);
-   x1minMesh = mesh->getX1Minimum(); x1maxMesh = mesh->getX1Maximum();
-   x2minMesh = mesh->getX2Minimum(); x2maxMesh = mesh->getX2Maximum();
-   x3minMesh = mesh->getX3Minimum(); x3maxMesh = mesh->getX3Maximum();
-   double offsetXBridge=originBridgeX1;//originBridgeX1;
-   double offsetYBridge=originBridgeX2;//originBridgeX2;
-   double offsetZBridge=originBridgeX3;//originBridgeX3;//-0.5*(x3minMesh-x3maxMesh);
-   //mesh->translate(-x1minMesh+offsetXBridge, -x2minMesh-0.5*offsetYBridge-coarseNodeDx, -x3minMesh+offsetZBridge); 
-   mesh->translate(-x1minMesh+offsetXBridge, -x2minMesh+offsetYBridge-coarseNodeDx, -x3minMesh+offsetZBridge-(x3maxMesh-x3minMesh)*0.5); 
-
-   x1minMesh = mesh->getX1Minimum(); x1maxMesh = mesh->getX1Maximum();
-   x2minMesh = mesh->getX2Minimum(); x2maxMesh = mesh->getX2Maximum();
-   x3minMesh = mesh->getX3Minimum(); x3maxMesh = mesh->getX3Maximum();
-
-   GbSystem3D::writeGeoObject( mesh, UbStaticPathMap::getPath(UbStaticPathMap::GLOBAL)+"/platte", WbWriterVtkXmlBinary::getInstance() );
-
-   //GbTriFaceMesh3D* Bruecke = GbTriFaceMesh3DCreator::getInstance()->readMeshFromFile(BrueckeFilename         ,"Bruecke");
-   // Bruecke->setPointInObjectTest(GbTriFaceMesh3D::RAYCROSSING);//, HALFSPACE, MEGARAY, SEGURA, GELLER)
-   //D3Q19AMRTriFaceMeshInteractor* triInteractor = new D3Q19AMRTriFaceMeshInteractor(mesh, grid,new D3Q19NoSlipBCAdapter, AMR3DInteractor::SOLID);
-   boost::shared_ptr<D3Q19AMRTriFaceMeshInteractor> triBridgeInteractor( new D3Q19AMRTriFaceMeshInteractor( mesh,new D3Q19NoSlipBCAdapter,AMR3DInteractor::SOLID,"bridge") );
-
-   //grid->addAndInitInteractor(triInteractor);
-   interactorService.addInteractor(triBridgeInteractor);
-
-     //////////////////////////////////////////////////////////////////////////////
-
- //////////////////////////////////////////////////////////////////////////
-   // Zackenband
-   //////////////////////////////////////////////////////////////////////////
-     GbTriFaceMesh3D* meshBand = GbTriFaceMesh3DCreator::readMeshFromFile(ZckbndFilename, "NetzBand");
-    meshBand->deleteRedundantNodes();
-
-   double x1minMeshB = meshBand->getX1Minimum(); double x1maxMeshB = meshBand->getX1Maximum();
-   double x2minMeshB = meshBand->getX2Minimum(); double x2maxMeshB = meshBand->getX2Maximum();
-   double x3minMeshB = meshBand->getX3Minimum(); double x3maxMeshB = meshBand->getX3Maximum();
-
-   //double drehpunktXB=x1minMeshB+(x1maxMeshB-x1minMeshB)*0.5;//triFaceMeshS->getX1Centroid();
-   //double drehpunktZB=x3minMeshB+(x3maxMeshB-x3minMeshB)*0.5;//triFaceMeshS->getX3Centroid();
-   //double drehpunktYB=x2minMeshB+(x2maxMeshB-x2minMeshB)*0.5;// seedX2-0.5*nodeDelta;//+nx2*deltaX2+0.5*deltaX2;
-
-    // meshBand->rotateAroundPoint(drehpunktZB,drehpunktXB,drehpunktYB,90.0,0.0,0.0);  //TriFacMesh-KO-System anders als LB-KO-System
-
-   x1minMeshB = meshBand->getX1Minimum();  x1maxMeshB = meshBand->getX1Maximum();
-   x2minMeshB = meshBand->getX2Minimum();  x2maxMeshB = meshBand->getX2Maximum();
-   x3minMeshB = meshBand->getX3Minimum();  x3maxMeshB = meshBand->getX3Maximum();
-
-   //drehpunktXB=x1minMeshB+(x1maxMeshB-x1minMeshB)*0.5;//triFaceMeshS->getX1Centroid();
-   //drehpunktZB=x3minMeshB+(x3maxMeshB-x3minMeshB)*0.5;//triFaceMeshS->getX3Centroid();
-   //drehpunktYB=x2minMeshB+(x2maxMeshB-x2minMeshB)*0.5;// seedX2-0.5*nodeDelta;//+nx2*deltaX2+0.5*deltaX2;
-
-   double H1B=1.5/100.0;//0.05;//cm, Banddicke..nachschauen!!!
-   double scaleBand=H1B/(x1maxMeshB-x1minMeshB);//H3B/(x3maxMeshB-x3minMeshB);
- //  double scaleX2B=(geoLength[2]+2.0*coarseNodeDx)/(x2minMeshB-x2maxMeshB);
-
-   meshBand->scale(scaleBand,scaleBand,scaleBand);
-   x1minMeshB = meshBand->getX1Minimum(); x1maxMeshB = meshBand->getX1Maximum();
-   x2minMeshB = meshBand->getX2Minimum(); x2maxMeshB = meshBand->getX2Maximum();
-   x3minMeshB = meshBand->getX3Minimum(); x3maxMeshB = meshBand->getX3Maximum();
-   double dBandX=0.5/100.0;//1.29; //15mm-2.1mm Absand von Bandvorderkante
-   double dBandY=0.0/100.0;
-   double dBandZ=0.223/100.0;//0.344;//....
-   double offsetXBridgeB=x1minMesh+dBandX;//originBridgeX1+dBandX;//originBridgeX1;
-   double offsetYBridgeB=originBridgeX2+dBandY;//originBridgeX2;
-   double offsetZBridgeB=originBridgeX3+dBandZ;//originBridgeX3;//-0.5*(x3minMesh-x3maxMesh);
-   //mesh->translate(-x1minMesh+offsetXBridge, -x2minMesh-0.5*offsetYBridge-coarseNodeDx, -x3minMesh+offsetZBridge); 
-   meshBand->translate(-x1minMeshB+offsetXBridgeB, -x2minMeshB+offsetYBridgeB-coarseNodeDx, -x3minMeshB+offsetZBridgeB);//-(x3maxMeshB-x3minMeshB)*0.5); 
-
-   x1minMeshB = meshBand->getX1Minimum(); x1maxMeshB = meshBand->getX1Maximum();
-   x2minMeshB = meshBand->getX2Minimum(); x2maxMeshB = meshBand->getX2Maximum();
-   x3minMeshB = meshBand->getX3Minimum(); x3maxMeshB = meshBand->getX3Maximum();
-
-   GbSystem3D::writeGeoObject( meshBand, UbStaticPathMap::getPath(UbStaticPathMap::GLOBAL)+"/Band", WbWriterVtkXmlBinary::getInstance() );
-
-   //GbTriFaceMesh3D* Bruecke = GbTriFaceMesh3DCreator::getInstance()->readMeshFromFile(BrueckeFilename         ,"Bruecke");
-   // Bruecke->setPointInObjectTest(GbTriFaceMesh3D::RAYCROSSING);//, HALFSPACE, MEGARAY, SEGURA, GELLER)
-   //D3Q19AMRTriFaceMeshInteractor* triInteractor = new D3Q19AMRTriFaceMeshInteractor(mesh, grid,new D3Q19NoSlipBCAdapter, AMR3DInteractor::SOLID);
-   boost::shared_ptr<D3Q19AMRTriFaceMeshInteractor> triBandInteractor( new D3Q19AMRTriFaceMeshInteractor( meshBand,new D3Q19NoSlipBCAdapter,AMR3DInteractor::SOLID,"band") );
-   interactorService.addInteractor(triBandInteractor);
-    /////////////////Band2
-
-
-      GbTriFaceMesh3D* meshBand2 = GbTriFaceMesh3DCreator::readMeshFromFile(ZckbndFilename, "NetzBand2");
-    meshBand->deleteRedundantNodes();
-
-   double x1minMeshB2 = meshBand2->getX1Minimum(); double x1maxMeshB2 = meshBand2->getX1Maximum();
-   double x2minMeshB2 = meshBand2->getX2Minimum(); double x2maxMeshB2 = meshBand2->getX2Maximum();
-   double x3minMeshB2 = meshBand2->getX3Minimum(); double x3maxMeshB2 = meshBand2->getX3Maximum();
-
-   //double drehpunktXB2=x1minMeshB2+(x1maxMeshB2-x1minMeshB2)*0.5;//triFaceMeshS->getX1Centroid();
-   //double drehpunktZB2=x3minMeshB2+(x3maxMeshB2-x3minMeshB2)*0.5;//triFaceMeshS->getX3Centroid();
-   //double drehpunktYB2=x2minMeshB2+(x2maxMeshB2-x2minMeshB2)*0.5;// seedX2-0.5*nodeDelta;//+nx2*deltaX2+0.5*deltaX2;
-
-//     meshBand2->rotateAroundPoint(drehpunktZB2,drehpunktXB2,drehpunktYB2,90.0,0.0,0.0);  //TriFacMesh-KO-System anders als LB-KO-System
-
-   x1minMeshB2 = meshBand2->getX1Minimum();  x1maxMeshB2 = meshBand2->getX1Maximum();
-   x2minMeshB2 = meshBand2->getX2Minimum();  x2maxMeshB2 = meshBand2->getX2Maximum();
-   x3minMeshB2 = meshBand2->getX3Minimum();  x3maxMeshB2 = meshBand2->getX3Maximum();
-
-   //drehpunktXB2=x1minMeshB2+(x1maxMeshB2-x1minMeshB2)*0.5;//triFaceMeshS->getX1Centroid();
-   //drehpunktZB2=x3minMeshB2+(x3maxMeshB2-x3minMeshB2)*0.5;//triFaceMeshS->getX3Centroid();
-   //drehpunktYB2=x2minMeshB2+(x2maxMeshB2-x2minMeshB2)*0.5;// seedX2-0.5*nodeDelta;//+nx2*deltaX2+0.5*deltaX2;
-
-   double H1B2=1.5/100.0;//0.05;//cm, Banddicke..nachschauen!!!
-   double scaleBand2=H1B2/(x1maxMeshB2-x1minMeshB2);//H3B/(x3maxMeshB-x3minMeshB);
-
-   meshBand2->scale(scaleBand2,scaleBand2,scaleBand2);
-   x1minMeshB2 = meshBand2->getX1Minimum(); x1maxMeshB2 = meshBand2->getX1Maximum();
-   x2minMeshB2 = meshBand2->getX2Minimum(); x2maxMeshB2 = meshBand2->getX2Maximum();
-   x3minMeshB2 = meshBand2->getX3Minimum(); x3maxMeshB2 = meshBand2->getX3Maximum();
-   double dBandX2=0.5/100.0;//1.29;
-   double dBandY2=0.5/100.0;
-   double dBandZ2=0.223/100.0;//0.344;//...
-   double offsetXBridgeB2=x1minMesh+dBandX2;//originBridgeX1;
-   double offsetYBridgeB2=originBridgeX2+dBandY2;//originBridgeX2;
-   double offsetZBridgeB2=originBridgeX3+dBandZ2;//originBridgeX3;//-0.5*(x3minMesh-x3maxMesh);
-   //mesh->translate(-x1minMesh+offsetXBridge, -x2minMesh-0.5*offsetYBridge-coarseNodeDx, -x3minMesh+offsetZBridge); 
-   meshBand2->translate(-x1minMeshB2+offsetXBridgeB2, -x2minMeshB2+offsetYBridgeB2-coarseNodeDx, -x3minMeshB2+offsetZBridgeB2);//-(x3maxMeshB2-x3minMeshB2)*0.5); 
-
-   x1minMeshB2 = meshBand2->getX1Minimum(); x1maxMeshB2 = meshBand2->getX1Maximum();
-   x2minMeshB2 = meshBand2->getX2Minimum(); x2maxMeshB2 = meshBand2->getX2Maximum();
-   x3minMeshB2 = meshBand2->getX3Minimum(); x3maxMeshB2 = meshBand2->getX3Maximum();
-
-   GbSystem3D::writeGeoObject( meshBand2, UbStaticPathMap::getPath(UbStaticPathMap::GLOBAL)+"/Band2", WbWriterVtkXmlBinary::getInstance() );
-
-   //GbTriFaceMesh3D* Bruecke = GbTriFaceMesh3DCreator::getInstance()->readMeshFromFile(BrueckeFilename         ,"Bruecke");
-   // Bruecke->setPointInObjectTest(GbTriFaceMesh3D::RAYCROSSING);//, HALFSPACE, MEGARAY, SEGURA, GELLER)
-   //D3Q19AMRTriFaceMeshInteractor* triInteractor = new D3Q19AMRTriFaceMeshInteractor(mesh, grid,new D3Q19NoSlipBCAdapter, AMR3DInteractor::SOLID);
-   boost::shared_ptr<D3Q19AMRTriFaceMeshInteractor> triBand2Interactor( new D3Q19AMRTriFaceMeshInteractor( meshBand2,new D3Q19NoSlipBCAdapter,AMR3DInteractor::SOLID,"band2") );
-    interactorService.addInteractor(triBand2Interactor);
-   
-   //////////////////////////////////////////////////////////////////////////
-   // refine
-   //////////////////////////////////////////////////////////////////////////
-                        
-
-
-   
-
-
-
-   ///////////platte ausmessen:
-   x1minMesh = mesh->getX1Minimum(); x1maxMesh = mesh->getX1Maximum();
-   x2minMesh = mesh->getX2Minimum(); x2maxMesh = mesh->getX2Maximum();
-   x3minMesh = mesh->getX3Minimum(); x3maxMesh = mesh->getX3Maximum();
-  double deltaX3Platte=(x3maxMesh-x3minMesh);
-
-
-      GbCuboid3D* refine1PlatteCube = new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-H3
-      , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3);
-   boost::shared_ptr<AMR3DBlockAdaptationCriterion> refineAdapterP1(new AMR3DCrossAndInsideGbObject3DAdapter(refine1PlatteCube,0,params.refineLevel-6));
-   topoService.adaptGridByBlockCriterion(refineAdapterP1);
-
-        GbCuboid3D* refine2PlatteCube = new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh-H3*0.5
-      , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3);
-   boost::shared_ptr<AMR3DBlockAdaptationCriterion> refineAdapterP2(new AMR3DCrossAndInsideGbObject3DAdapter(refine2PlatteCube,0,params.refineLevel-5));
-   topoService.adaptGridByBlockCriterion(refineAdapterP2);
-
-        GbCuboid3D* refine3PlatteCube = new GbCuboid3D(  originX1-geoOverlap  , originX2-geoOverlap  , x3minMesh-H3*0.5
-      , x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.5);
-   boost::shared_ptr<AMR3DBlockAdaptationCriterion> refineAdapterP3(new AMR3DCrossAndInsideGbObject3DAdapter(refine3PlatteCube,0,params.refineLevel-4));   //dieser hier hat eine ecke 
-   topoService.adaptGridByBlockCriterion(refineAdapterP3);
-
-        GbCuboid3D* refine4PlatteCube = new GbCuboid3D(   originX1-geoOverlap  , originX2-geoOverlap  , x3minMesh+deltaX3Platte*0.6
-      ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.25);
-   boost::shared_ptr<AMR3DBlockAdaptationCriterion> refineAdapterP4(new AMR3DCrossAndInsideGbObject3DAdapter(refine4PlatteCube,0,params.refineLevel-3));   //weil der hier zu hoch ist
-   topoService.adaptGridByBlockCriterion(refineAdapterP4);
-
-           GbCuboid3D* refine5PlatteCube = new GbCuboid3D(   originX1-geoOverlap , originX2-geoOverlap  , x3minMesh+deltaX3Platte*0.8
-      ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+H3*0.00375);
-   boost::shared_ptr<AMR3DBlockAdaptationCriterion> refineAdapterP5(new AMR3DCrossAndInsideGbObject3DAdapter(refine5PlatteCube,0,params.refineLevel-2));
-   topoService.adaptGridByBlockCriterion(refineAdapterP5);
-
-  //            GbCuboid3D* refine6PlatteCube = new GbCuboid3D(   x1minMeshB2+( x1maxMeshB2- x1minMeshB2)*0.8   , originX2-geoOverlap  , x3minMesh+deltaX3Platte*0.9
-  //    ,  x1maxMesh+H3*0.075, originX2+geoOverlap+geoLength[1], x3maxMesh+2.0*fineNodeDx);
-  // boost::shared_ptr<AMR3DBlockAdaptationCriterion> refineAdapterP6(new AMR3DCrossAndInsideGbObject3DAdapter(refine6PlatteCube,0,params.refineLevel-1));
-  // topoService.adaptGridByBlockCriterion(refineAdapterP6);
-
-           GbCuboid3D* refine6PlatteCube = new GbCuboid3D(   originX1-geoOverlap   , originX2-geoOverlap  , x3minMesh+deltaX3Platte*0.9
-      ,  x1maxMesh+H3*5.0, originX2+geoOverlap+geoLength[1], x3maxMesh+deltaX3Platte*0.9);
-   boost::shared_ptr<AMR3DBlockAdaptationCriterion> refineAdapterP6(new AMR3DCrossAndInsideGbObject3DAdapter(refine6PlatteCube,0,params.refineLevel-1));
-   topoService.adaptGridByBlockCriterion(refineAdapterP6);
-
-     UBLOG2(logINFO, std::cout, "Refinement..done");
-   //blockverhältnis von 2:1 herstellen:
-   UBLOG(logINFO,"ratio")
-      boost::shared_ptr<AMR3DBlockAdaptationCriterion> ratioAdapter(new AMR3DBlockRatioAdapter(params.refineLevel));
-   topoService.adaptGridByBlockCriterion(ratioAdapter);
-
-
-
-   //////////////////////////////////////////////////////////////////////////
-   //walls                                                                                                   
-   ////////////////////////////////////////////////////////////////////////// 
-   int noSlipSecOpt = 1; //0=2nd order BB 1=simple BB
-   int slipSecOpt   = 1; //0=2nd order BB 1=simple BB
-
-   ////x1x2-walls:                                                                                             
-   GbCuboid3D* wallsX1X2min = new GbCuboid3D(  originX1-geoOverlap   , originX2-geoOverlap  , originX3-geoOverlap
-      , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], originX3-0.5*fineNodeDx);
-   boost::shared_ptr<D3Q19AMRInteractor> wallsX1X2minInteractor( new D3Q19AMRInteractor( wallsX1X2min,new D3Q19SlipBCAdapter(slipSecOpt),AMR3DInteractor::SOLID,"wallsX1X2min") );
-   if(!params.periodic[2]) interactorService.addInteractor( wallsX1X2minInteractor );
-
-   GbCuboid3D* wallsX1X2max = new GbCuboid3D(  originX1-geoOverlap , originX2-geoOverlap , originX3+geoLength[2]+0.5*fineNodeDx            
-      , originX1+geoLength[0]+geoOverlap, originX2+geoOverlap+geoLength[1], originX3+geoLength[2]+geoOverlap); 
-   boost::shared_ptr<D3Q19AMRInteractor> wallsX1X2maxInteractor( new D3Q19AMRInteractor( wallsX1X2max,new D3Q19SlipBCAdapter(slipSecOpt),AMR3DInteractor::SOLID,"wallsX1X2max") ) ;  
-   if(!params.periodic[2]) interactorService.addInteractor( wallsX1X2maxInteractor );
-
-
-  
-
-   //##########################################################################
-   //## physical parameters
-   //##########################################################################
-   double smagorinskiConstant = 0.18;
-
-
-   double rhoLB         = 1.0;
-   double rhoReal       = 1.0;
-   double nueReal  = 0.000015;//0.015;
-
-   double hReal         = 0.0105;//<-m     1.05;//Plattendicke in cm(! cm nicht m !)
-   double uReal         = params.Re*nueReal/hReal;
-
-   //##Machzahl:
-   //#Ma     = uReal/csReal
-   double Ma      = 0.05;//0.0553;//Ma-Real!
-   double csReal  = uReal/Ma;
-   double hLB     = hReal/coarseNodeDx;
-
-   D3Q19UnitConverter unitConverter(hReal, csReal, rhoReal, hLB );
-
-   double uLB           = uReal   * unitConverter.getFactorVelocityWToLb();
-   double nueLB         = nueReal * unitConverter.getFactorViscosityWToLb();
-
-   params.velocity = uLB;
-   double viscosity = nueLB;
-
-   //////////////////////////////////////////////////////////////////////////
-   // BCs
-   //////////////////////////////////////////////////////////////////////////
-   //////////////////////////////////////////////////////////////////////////
-   // inflow
-   //////////////////////////////////////////////////////////////////////////
-
-
-   double uLB2=uLB*0.96*1.02;//*0.5;
-
-   vector<D3Q19BCFunction> velcX1BCs,dummy;
-
-   if(raiseVelSteps>0)
-   {
-      mu::Parser inflowProfile1;
-         inflowProfile1.SetExpr("uLB"); 
-    
-          inflowProfile1.DefineConst("uLB",uLB2);
-   }
-   mu::Parser inflowProfile;
-   inflowProfile.SetExpr("uLB"); 
-
-   inflowProfile.DefineConst("uLB",uLB2);
-   //inflowProfile.DefineConst("xlbnachxworld",xlbnachxworld);
-   velcX1BCs.push_back(D3Q19BCFunction(inflowProfile,raiseVelSteps,D3Q19BCFunction::INFCONST));
-
-
-   GbCuboid3D* velBCCuboid = NULL;
-   velBCCuboid = new GbCuboid3D(  originX1-geoOverlap, originX2-geoOverlap, originX3-geoOverlap
-      , originX1-fineNodeDx, originX2+geoLength[1]+geoOverlap, originX3+geoLength[2]+geoOverlap);
-
-   boost::shared_ptr< D3Q19AMRInteractor> velBCInteractor(new D3Q19AMRInteractor(velBCCuboid,AMR3DInteractor::SOLID,"velBC")); 
-   velBCInteractor->addBCAdapter(new D3Q19VelocityBCAdapter(velcX1BCs,dummy,dummy) );
-   interactorService.addInteractor( velBCInteractor ); 
-
-
-
-   //////////////////////////////////////////////////////////////////////////
-   // outflow
-   //////////////////////////////////////////////////////////////////////////
-   GbCuboid3D* densCuboid = NULL;
-   densCuboid = new GbCuboid3D(  originX1+geoLength[0]+fineNodeDx, originX2-geoOverlap             , originX3-geoOverlap
-      , originX1+geoLength[0]+geoOverlap, originX2+geoLength[1]+geoOverlap, originX3+geoLength[2]+geoOverlap );
-
-   if(useLODI)
-   {
-      float LX1 = (float)((densCuboid->getX1Minimum()-velBCCuboid->getX1Maximum())/coarseNodeDx);
-      float LX2 = -1.0f;
-      float LX3 = -1.0f;
-
-      D3Q19DensityLodiBCAdapter* lodiBCadapter = new D3Q19DensityLodiBCAdapter(3,LX1,LX2,LX3,params.rhoInit,params.vx1Init,params.vx2Init,params.vx3Init,params.rhoInit);
-      boost::shared_ptr< D3Q19AMRInteractor> densInteractor(new D3Q19AMRInteractor(densCuboid,lodiBCadapter,AMR3DInteractor::SOLID,"lodiDensBC"));
-      interactorService.addInteractor( densInteractor ); 
-   }
-   else
-   {
-      boost::shared_ptr< D3Q19AMRInteractor> densInteractor( new D3Q19AMRInteractor(densCuboid,new D3Q19DensityBCAdapter(params.rhoInit),AMR3DInteractor::SOLID,"densBC") );
-      interactorService.addInteractor( densInteractor ); 
-   }
-
-   UBLOG(logINFO, "*****************************************");
-   UBLOG(logINFO, "* Parameters                            *");
-   UBLOG(logINFO, "* Re            ="<<params.Re);
-   UBLOG(logINFO, "* Ma            ="<<Ma);
-   UBLOG(logINFO, "* uReal         ="<<uReal);
-   UBLOG(logINFO, "* nueReal       ="<<nueReal);
-   UBLOG(logINFO, "* nue           ="<<nueLB);
-   UBLOG(logINFO, "* velocity      ="<<uLB);
-   UBLOG(logINFO, "* LX1 (world/LB)="<<kanallaengeSI<<"/"<<kanallaengeSI/coarseNodeDx);
-   UBLOG(logINFO, "* LX2 (world/LB)="<<kanalbreiteSI<<"/"<<kanalbreiteSI/coarseNodeDx);
-   UBLOG(logINFO, "* LX3 (world/LB)="<<kanalhoeheSI<<"/"<<kanalhoeheSI/coarseNodeDx);
-   UBLOG(logINFO, "* dxInflow-Cube ="<<velBCCuboid->getX1Maximum()-mesh->getX1Minimum());
-   UBLOG(logINFO, "* cdx           ="<<coarseNodeDx);
-   UBLOG(logINFO, "* fdx           ="<<fineNodeDx);
-  // UBLOG(logINFO, "* H_world       ="<<H);
-  // UBLOG(logINFO, "* H_LB          ="<<H/coarseNodeDx);
-   //UBLOG(logINFO, "* H_log_world   ="<<delta);
-   //UBLOG(logINFO, "* H_log_LB      ="<<delta/baseDX);
-   //UBLOG(logINFO, "* alpha         ="<<alpha);
-   UBLOG(logINFO, "* inflowProfile ="<<inflowProfile.GetExpr());
-   UBLOG(logINFO, "* dx_base       ="<<coarseNodeDx<<" == "<<coarseNodeDx);
-   UBLOG(logINFO, "* dx_refine     ="<<fineNodeDx<<" == "<<fineNodeDx );
-   UBLOG(logINFO, "* collModel     ="<<params.collModel);
-   UBLOG(logINFO, "* raiseVelSteps ="<<raiseVelSteps);
-   UBLOG(logINFO, "* startVis      ="<<startViscosity);
-   UBLOG(logINFO, "* raiseVisSteps ="<<decreaseViscositySteps);
-   UBLOG(logINFO, "* nx1/2/3       ="<<params.nx[0]<<"/"<<params.nx[1]<<"/"<<params.nx[2]);
-   UBLOG(logINFO, "* blocknx1/2/3  ="<<params.blocknx[0]<<"/"<<params.blocknx[1]<<"/"<<params.blocknx[2]);
-   UBLOG(logINFO, "* x3Periodic    ="<<params.periodic[2]);
-   UBLOG(logINFO, "* useDirectConnectors           "<< params.connsTransAttr.useDirectConnectors()        ); 
-   UBLOG(logINFO, "* useSTLVectorForSameLevelCons  "<< params.connsTransAttr.useStlVecForSameLevelCons()  ); 
-   UBLOG(logINFO, "* useSTLVectorForScaleCons      "<< params.connsTransAttr.useStlVecForScaleCons()      ); 
-   UBLOG(logINFO, "* useConsForNotActiveBlocks     "<< params.connsTransAttr.useConsForNotActiveBlocks() ); 
-   UBLOG(logINFO, "* LODI           ="<< (useLODI ? "ON" : "OFF") ); 
-   UBLOG(logINFO, "*****************************************");
-   UBLOGML(logINFO, "UnitConverter:"<<unitConverter.toString());
-   UBLOG(logINFO, "*****************************************");
-
-   //////////////////////////////////////////////////////////////////////////
-   //geo holen und setzen!!!
-   //////////////////////////////////////////////////////////////////////////
-   topoService.getAndAddAndInitInteractors();
-
-   //////////////////////////////////////////////////////////////////////////
-   UBLOG(logINFO, "//////////////////////////////////////////////////////////////////");
-   int nofBlocks = topoService.getNumberOfBlocks(true);
-   UBLOG(logINFO, "//active blocks after interactors: "<<nofBlocks);
-   int nofAllBlocks = topoService.getNumberOfBlocks(false);
-   UBLOG(logINFO, "//total blocks after interactors: "<<nofAllBlocks);
-   UBLOG(logINFO, " -> ~"<<nofBlocks*(params.blocknx[0]+1)*(params.blocknx[1]+1)*(params.blocknx[2]+1)<<" nodes");
-   UBLOG(logINFO, "//////////////////////////////////////////////////////////////////");
-
-   //partitionierung
-   UBLOG2(logINFO,cout, "levelweise METIS SEGMENTIERUNG!!!!")
-      boost::shared_ptr<AMR3DGridAdaptationCriterion> partioningAdapter(new AMR3DGridLevelPartitionMetisAdapter( (int)calcServices.size()
-      , D3Q19MetisAdapterTools::getMetisDirsAndWeights(  params.blocknx[0]
-   , params.blocknx[1]
-   , params.blocknx[2] )
-      , params.connsTransAttr.useConsForNotActiveBlocks()
-      , D3Q19MetisAdapterTools::getD3Q19GetBlockWeightFunctor(false) ) );   ///////hier false auf keine gewichtung - default:doppelte gewichtung für fine
-   //  boost::shared_ptr<AMR3DGridAdaptationCriterion> partioningAdapter(new AMR3DGridPartitionOneDirectionAdapter((int)calcServices.size()) );   
-  // UBLOG2(logINFO,"params.connsTransAttr.useConsForNotActiveBlocks():" ); 
-   //UBLOG2(logINFO,params.connsTransAttr.useConsForNotActiveBlocks() );         
-   topoService.adaptGridByGridCriterion(partioningAdapter);
-   topoService.writeBlocksToAVS(outpath+"/blocksSegments",false);
-   UBLOG2(logINFO,cout, "BlockSegmentsGeschriebe")
-      //clientgrids erzeugen
-      topoService.createClientGridsAndSendBlocksToClients("client",params.connsTransAttr,params.threadedClientCall);
-   UBLOG2(logINFO,cout, "createClientGrids usw")
-
-
-
-      boost::shared_ptr<D3Q19ClientGridWriteInteractorNodeFiles> writeInteractorTransNodesAdapter(new D3Q19ClientGridWriteInteractorNodeFiles("shared",D3Q19ClientGridWriteInteractorNodeFiles::ValueProjOnGeoVertex)); 
-   writeInteractorTransNodesAdapter->setScheduler(UbSchedule(10000));
-   writeInteractorTransNodesAdapter->addInteractorID( triBridgeInteractor ->getName() );
-
-      //physik-daten zuweisen
-      D3Q19GridPhysicsAdapter* physicsAdapter = new D3Q19GridPhysicsAdapter(params.collModel,viscosity,0.0,0.0,0.0);
-   physicsAdapter->setSmagorinskyConstant(smagorinskiConstant);
-   physicsAdapter->setUnitConverter( unitConverter );
-   boost::shared_ptr<AMR3DGridAdaptationCriterion>  physicsAdapterPtr(physicsAdapter);
-
-   //UbPointerWrapper<AMR3DGridAdaptationCriterion>   decreaseViscosityAdapter( new D3Q19GridPhysicsAdapter(decreaseViscositySteps, startViscosity, viscosity, decreaseViscosityStepForHalVis) );
-   boost::shared_ptr<AMR3DGridAdaptationCriterion>  decreaseViscosityAdapter( new D3Q19GridPhysicsAdapter(decreaseViscositySteps, startViscosity, viscosity, decreaseViscosityStepForHalVis) );
-   //boost::shared_ptr<AMR3DBlockAdaptationCriterion> initadapter(new D3Q19InitDistributionsAdapter(params.connsTransAttr.useConsForNotActiveBlocks(), params.collModel, params.rhoInit,(params.vx1Init*0.96),params.vx2Init,params.vx3Init, 0, AMR3DSystem::MAXLEVEL));
-
-   boost::shared_ptr<AMR3DGridAdaptationCriterion> initadapter(new D3Q19InitDistributionsGridAdapter(params.rhoInit,params.vx1Init,params.vx2Init,params.vx3Init));
-   if(initWithLogProfile) 
-   {
-    
-      boost::dynamic_pointer_cast<D3Q19InitDistributionsGridAdapter>(initadapter)->setVx1( inflowProfile );
-   }
-
-
-   boost::shared_ptr<D3Q19ClientGridPostProcessFileAdapter> writeDumpsAdapter(new D3Q19ClientGridPostProcessFileAdapter("shared",true,false));
-   writeDumpsAdapter->setScheduler(params.distributedDumpScheduler);
-   writeDumpsAdapter->setUseFileCounterInsteadTimestepForGlobalPVD(true);
-
-
-   UBLOG(logINFO, "put physicsAdapter to clients");
-   calculationManager.adaptGridByGridCriterionAtClients(physicsAdapterPtr,params.threadedClientCall);
-
-   boost::shared_ptr<AMR3DGridAdaptationCriterion>  hackAdapter(new D3Q19ChangeSlipToNoSlipGridAdapter());
-   UBLOG2(logINFO, std::cout, "add hackAdapter to clients");
-   calculationManager.addTimeDependentGridAdapterAtClients(hackAdapter,params.threadedClientCall);
-   UBLOG2(logINFO, std::cout, "## adapter stuff - start"); 
-
-   UBLOG(logINFO, "getAndAddInteractorsAtClients at clients");
-   calculationManager.getAndAddInteractorsAtClients(params.threadedClientCall);
-
-   UBLOG(logINFO, "put initadapter to clients");
-   calculationManager.adaptGridByGridCriterionAtClients(initadapter,params.threadedClientCall);
-   UBLOG(logINFO, "put setConnectorAdapter to clients");
-   boost::shared_ptr<AMR3DGridAdaptationCriterion>  setConnectorAdapter(new D3Q19SetConnectorsGridAdapter( ) );
-   calculationManager.adaptGridByGridCriterionAtClients(setConnectorAdapter,params.threadedClientCall);
-
-   if(decreaseViscositySteps) calculationManager.addTimeDependentGridAdapterAtClients(decreaseViscosityAdapter,params.threadedClientCall);
-
-   UBLOG(logINFO,"put writeAdapter to calc clients")
-      calculationManager.addClientGridAdapterAtClients(writeDumpsAdapter,params.threadedClientCall);
-   UBLOG(logINFO, "put writeInteractorTransNodesAdapter to clients" )
-      calculationManager.addClientGridAdapterAtClients(writeInteractorTransNodesAdapter, params.threadedClientCall); 
-
-   //remote connetoren
-   UBLOG(logINFO, "setRemoteConnectorsOnCalcServices at clients");
-   topoService.setRemoteConnectorsOnCalcServices(D3Q19System::getAMR3DDirsForD3Q19Dirs(),params.connsTransAttr,params.threadedClientCall);
-
-    UbFileOutputASCII out(UbStaticPathMap::getPath(UbStaticPathMap::GLOBAL)+"/params.txt");
-   if(out.isOpen())
-   {
-      UBLOG(logINFO, "save params to "<<out.getFileName());
-      params.write(&out);
-      out.writeLine();
-      out.writeString("useLodi                  "); out.writeBool(useLODI);             out.writeLine();
-      out.writeString("initWithLogProfile       "); out.writeBool(initWithLogProfile);  out.writeLine();
-      UBLOG(logINFO, " done" )
-   }
-
-
-   //##########################################################################
-   //## spongelayer
-   //##########################################################################
-   UBLOG2(logINFO, std::cout, "##################################################################");
-   UBLOG2(logINFO, std::cout, "## spongelayer - start");
-
-   GbCuboid3D* spongeCubeLeft = new GbCuboid3D( velBCCuboid->getX1Minimum() 
-      , velBCCuboid->getX2Minimum() 
-      , velBCCuboid->getX3Minimum() 
-      , velBCCuboid->getX1Maximum()+(velBCCuboid->getX1Maximum()-velBCCuboid->getX1Minimum() )*0.1-1.0*coarseNodeDx 
-      , velBCCuboid->getX2Maximum() 
-      , velBCCuboid->getX3Maximum() );
-
-   GbSystem3D::writeGeoObject( spongeCubeLeft, UbStaticPathMap::getPath(UbStaticPathMap::GLOBAL)+"/spongeIn", WbWriterVtkXmlBinary::getInstance() );
-   boost::shared_ptr<AMR3DGridAdaptationCriterion>  spongeAdapterLeft( new SpD3Q19SpongeLayerAdapter(spongeCubeLeft, 1./3., nueLB,  SpD3Q19SpongeLayerAdapter::ALTERNATIONX1) );
-   calculationManager.adaptGridByGridCriterionAtClients(spongeAdapterLeft ,params.threadedClientCall);
-
-
-
-   UBLOG2(logINFO, std::cout, "## spongelayerOutflow - start");
-                                                double H=kanallaengeSI/10.0;
-   GbCuboid3D* spongeCubeRight = new GbCuboid3D( originX1+geoLength[0]+fineNodeDx-H 
-      , originX2-geoOverlap             , originX3-geoOverlap
-      , originX1+geoLength[0]+geoOverlap, originX2+geoLength[1]+geoOverlap, originX3+geoLength[2]+geoOverlap   );   
-
-   GbSystem3D::writeGeoObject( spongeCubeRight, UbStaticPathMap::getPath(UbStaticPathMap::GLOBAL)+"/spongeOut", WbWriterVtkXmlBinary::getInstance() );
-   boost::shared_ptr<AMR3DGridAdaptationCriterion>  spongeAdapterRight( new SpD3Q19SpongeLayerAdapter(spongeCubeRight,  nueLB,1./3.,  SpD3Q19SpongeLayerAdapter::ALTERNATIONX1) );
-   calculationManager.adaptGridByGridCriterionAtClients(spongeAdapterRight ,params.threadedClientCall);
-   UBLOG2(logINFO, std::cout, "## spongelayer - end");
-   UBLOG2(logINFO, std::cout, "##################################################################");
-
-
-
-   //GbCuboid3D* densCuboid = NULL;
-   //##########################################################################
-
-   calculationManager.calculate(params.calcSteps, UbStaticPathMap::GLOBAL, params.schedulers);
-
-   UBLOG(logINFO, "warte nun auf ende!!");
-
-}
-
diff --git a/apps/cpu/plate2/CMakeLists.txt b/apps/cpu/plate2/CMakeLists.txt
deleted file mode 100644
index 8bcfaf01f930a79e4b4bcef994fe79bd45830bb2..0000000000000000000000000000000000000000
--- a/apps/cpu/plate2/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(plate2)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(plate2 BINARY)
diff --git a/apps/cpu/plate2/plate2.cpp b/apps/cpu/plate2/plate2.cpp
deleted file mode 100644
index adce2d5a178f169b56a49deb4ed26e5939ff1c22..0000000000000000000000000000000000000000
--- a/apps/cpu/plate2/plate2.cpp
+++ /dev/null
@@ -1,557 +0,0 @@
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <vfluids.h>
-
-using namespace std;
-
-void run(const char *cstr1, const char *cstr2)
-{
-   try
-   {
-      string pathname; 
-      string pathGeo;
-      string pathLog;
-      int numOfThreads = 1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      string machine = string(cstr1);
-
-      if(machine == "my") 
-      {
-         pathname = "d:/temp/plate2R1e6";
-         pathGeo = "d:/Data/plate";
-         pathLog = "d:/temp/plate2R1e6";
-         numOfThreads = 4;
-         logfile = false;
-         availMem = 15.0e9;
-      }
-      else if(machine == "Ludwig")      
-      {
-         pathname = "/work/koskuche/SFB880/plate2Con";
-         pathGeo = "/home/koskuche/data/plate";
-         pathLog = pathname;
-         numOfThreads = 8;
-         availMem = 12.0e9;///8*numOfThreads;
-         logfile = true;
-      }
-      else if(machine == "HLRS")      
-      {
-         pathname = "/univ_1/ws1/ws/xrmkuchr-plate3-0";
-         pathGeo = "/zhome/academic/HLRS/xrm/xrmkuchr/data/plate";
-         pathLog = "/zhome/academic/HLRS/xrm/xrmkuchr/work/plate";
-         numOfThreads = 16;
-         availMem = 2.0e9;
-         logfile = true;
-      }
-      else if(machine == "HLRN")      
-      {
-         pathname = "/gfs1/work/niivfcpu/scratch/plateEx";
-         pathGeo = "/gfs1/work/niivfcpu/data/plate";
-         pathLog = pathname;
-         numOfThreads = 24;
-         availMem = 64.0e9/24.0*numOfThreads;
-         logfile = true;
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-#if defined(__unix__)
-      if (myid==0) 
-      {
-         const char* str = pathLog.c_str();
-         int status=mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-      }
-#endif 
-
-      if(myid == 0 && logfile)
-      {
-         //UbLog::reportingLevel() = logDEBUG5;
-         logFilename <<  pathLog + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-         UbLog::output_policy::setStream(logFilename.str());
-      }
-
-      if(myid==0) UBLOG(logINFO,"Testcase plate");
-
-      //string PlatteFilename = pathGeo + "/Platte4mesh_1.8mmProbendicke.stl";
-      string PlatteFilename = pathGeo + "/platte_raw.stl";
-
-      string ZckbndFilename = pathGeo + "/2zackenbaender0.stl";
-
-      ///////////////Knotenabmessungen:
-      int nx[3], blocknx[3];
-      nx[0]      = 90;//240;//120;//60;//86;//43;//65;//50;  //länge
-      nx[1]      = 2;//2;//6;///1;//5;// //breite
-      nx[2]      = 30;//64;//32;//18;//5;//15;//15; //höhe gebiet
-      blocknx[0] = 16;//10;//6;
-      blocknx[1] = 16;//10;//6;
-      blocknx[2] = 16;//10;//6;
-
-      int baseLevel   = 0;
-      int refineLevel = 4;
-
-      double H = 600.0; // Kanalhöhe [mm]
-      double cdx = H/(double)(nx[2]*blocknx[2]);
-      double fdx = cdx/double(1<<refineLevel);
-
-      //double h = 200.0; // gewünschte Plattenhöhe in Gitterpunkten
-      //double fdx = plate->getLengthX3()/h;
-      //double cdx = fdx*double(1<<refineLevel);
-
-      LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      //////////////////////////////////////////////////////////////////////////
-      //physik
-      //////////////////////////////////////////////////////////////////////////
-      double Re            = 1133333.3333333335; 
-      double rhoLB         = 0.0;
-      double uLB           = 0.1; 
-      double lReal         = 1000; //Plattenlänge in mm
-      double nuLB          = (uLB*(lReal/cdx))/Re;
-
-      int sizeSP=4;
-      mu::Parser spongeLayer;
-      spongeLayer.SetExpr("x1>=(sizeX-sizeSP)/dx ? (sizeX-(x1+1))/sizeSP/2.0 + 0.5 : 1.0");
-      spongeLayer.DefineConst("sizeX", nx[0]*blocknx[0]);
-      spongeLayer.DefineConst("sizeSP", sizeSP*blocknx[0]);
-
-      Grid3DPtr grid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(1000,1000,10000000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname, RestartPostprocessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-      bool restart;
-
-      if (grid->getTimeStep() == 0)
-      {
-
-         if(myid==0) UBLOG(logINFO,"Neustart..");
-         restart = false;
-         //////////////////////////////////////////////////////////////////////////
-         //Platte
-         GbTriFaceMesh3DPtr plate (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(PlatteFilename,"Netz"));
-         plate->rotate(90.0,0.0,0.0);  //TriFacMesh-KO-System anders als LB-KO-System
-         if(myid == 0) GbSystem3D::writeGeoObject( plate.get(), pathname+"/geo/platte", WbWriterVtkXmlBinary::getInstance() );
-         //////////////////////////////////////////////////////////////////////////
-         // Zackenband
-         //////////////////////////////////////////////////////////////////////////
-         GbTriFaceMesh3DPtr meshBand1 (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand"));
-         meshBand1->translate(-495, -700, -19.94);
-         if(myid == 0) GbSystem3D::writeGeoObject( meshBand1.get(), pathname+"/geo/Band1", WbWriterVtkXmlASCII::getInstance() );
-         // Zackenband2
-         GbTriFaceMesh3DPtr meshBand2(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand2"));
-         meshBand2->translate(-495, -705, -19.94); 
-         if(myid == 0) GbSystem3D::writeGeoObject( meshBand2.get(), pathname+"/geo/Band2", WbWriterVtkXmlASCII::getInstance() );
-         // Zackenband3
-         GbTriFaceMesh3DPtr meshBand3(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand3"));
-         meshBand3->translate(-495, -700, -19.64); 
-         if(myid == 0) GbSystem3D::writeGeoObject( meshBand3.get(), pathname+"/geo/Band3", WbWriterVtkXmlASCII::getInstance() );
-         // Zackenband4
-         GbTriFaceMesh3DPtr meshBand4(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand4"));
-         meshBand4->translate(-495, -705, -19.64); 
-         if(myid == 0) GbSystem3D::writeGeoObject( meshBand4.get(), pathname+"/geo/Band4", WbWriterVtkXmlASCII::getInstance() );
-         //////////////////////////////////////////////////////////////////////////
-
-         double blockLengthx1 = blocknx[0]*cdx; //geowerte
-         double blockLengthx2 = blockLengthx1;
-         double blockLengthx3 = blockLengthx1;
-
-         double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3}; 
-
-         double originX1 = plate->getX1Minimum()-plate->getLengthX1()/4.0;
-         double originX2 = plate->getX2Minimum();
-         double originX3 = plate->getX3Minimum()-299.5;
-
-
-         bool periodicx1 = false;
-         bool periodicx2 = true;
-         bool periodicx3 = true;
-
-         //bounding box
-         double g_minX1 = originX1;
-         double g_minX2 = originX2;
-         double g_minX3 = originX3;
-
-         double g_maxX1 = originX1 + geoLength[0];
-         double g_maxX2 = originX2 + geoLength[1];
-         double g_maxX3 = originX3 + geoLength[2];;
-
-
-         //set grid
-         grid->setDeltaX(cdx);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-         grid->setPeriodicX1(periodicx1);
-         grid->setPeriodicX2(periodicx2);
-         grid->setPeriodicX3(periodicx3);
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         gridCube->setCenterCoordinates(gridCube->getX1Centroid(),meshBand1->getX2Centroid(),gridCube->getX3Centroid());
-         if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         originX2 = gridCube->getX2Minimum();
-         g_minX2 = originX2;
-         g_maxX2 = originX2 + geoLength[1];
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         //////////////////////////////////////////////////////////////////////////
-         if(myid == 0)
-         {
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* Parameters                            *");
-            UBLOG(logINFO, "* Re            ="<<Re);
-            UBLOG(logINFO, "* nuLB          ="<<nuLB);
-            UBLOG(logINFO, "* uLB           ="<<uLB);
-            UBLOG(logINFO, "* cdx           ="<<cdx);
-            UBLOG(logINFO, "* fdx           ="<<fdx);
-            double Hzb = 0.6/fdx;
-            UBLOG(logINFO, "* Height of Zackenband ="<<Hzb);
-            UBLOG(logINFO, "* Re on Zackenband ="<<(uLB*Hzb)/(nuLB*double(1<<refineLevel)));
-            UBLOG(logINFO, "* nx1/2/3       ="<<nx[0]<<"/"<<nx[1]<<"/"<<nx[2]);
-            UBLOG(logINFO, "* blocknx1/2/3  ="<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-            UBLOG(logINFO, "* x1Periodic    ="<<periodicx1);
-            UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-            UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-            UBLOG(logINFO, "* number of levels  ="<<refineLevel+1);
-            UBLOG(logINFO, "* path          ="<<pathname);
-
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* number of threads    ="<<numOfThreads);
-            UBLOG(logINFO, "* number of processes  ="<<comm->getNumberOfProcesses());
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "*****************************************");     
-         }
-         //////////////////////////////////////////////////////////////////////////
-
-
-         //////////////////////////////////////////////////////////////////////////
-         //refinement
-         GbCuboid3DPtr refinePlatteBox(new GbCuboid3D(plate->getX1Minimum(), plate->getX2Minimum(), plate->getX3Minimum()+(plate->getX3Maximum()-plate->getX3Minimum())/2.0, 
-            plate->getX1Maximum()+40.0, plate->getX2Maximum(), plate->getX3Maximum()));
-         if(myid == 0) GbSystem3D::writeGeoObject( refinePlatteBox.get(), pathname+"/geo/refinePlatteBox", WbWriterVtkXmlASCII::getInstance() );
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            refineHelper.addGbObject(refinePlatteBox, refineLevel);
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         /////////////////////////////////////////////////
-         ///interactoren
-         int bbOption1 = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-         D3Q27TriFaceMeshInteractorPtr triPlateInteractor( new D3Q27TriFaceMeshInteractor(plate, grid, bcObst,Interactor3D::SOLID));
-         D3Q27TriFaceMeshInteractorPtr triBand1Interactor( new D3Q27TriFaceMeshInteractor( meshBand1, grid, bcObst,Interactor3D::SOLID, Interactor3D::EDGES) );
-         D3Q27TriFaceMeshInteractorPtr triBand2Interactor( new D3Q27TriFaceMeshInteractor( meshBand2, grid, bcObst,Interactor3D::SOLID, Interactor3D::EDGES) );
-         D3Q27TriFaceMeshInteractorPtr triBand3Interactor( new D3Q27TriFaceMeshInteractor( meshBand3, grid, bcObst,Interactor3D::SOLID, Interactor3D::EDGES) );
-         D3Q27TriFaceMeshInteractorPtr triBand4Interactor( new D3Q27TriFaceMeshInteractor( meshBand4, grid, bcObst,Interactor3D::SOLID, Interactor3D::EDGES) );
-
-         //inflow
-         GbCuboid3DPtr velBCCuboid(new GbCuboid3D(originX1-blockLengthx1, originX2-blockLengthx1, originX3-blockLengthx1, 
-            originX1, originX2+geoLength[1]+blockLengthx1, originX3+geoLength[2]+blockLengthx1));
-         if(myid == 0) GbSystem3D::writeGeoObject(velBCCuboid.get(), pathname+"/geo/velBCCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr velBCInteractor(new D3Q27Interactor(velBCCuboid,grid,Interactor3D::SOLID)); 
-
-         //inflow
-         double raiseVelSteps = 0;
-         vector<D3Q27BCFunction> velcX1BCs,dummy;
-
-         mu::Parser inflowProfile;
-         inflowProfile.SetExpr("uLB"); 
-         inflowProfile.DefineConst("uLB",uLB);
-         velcX1BCs.push_back(D3Q27BCFunction(inflowProfile,raiseVelSteps,D3Q27BCFunction::INFCONST));
-
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (velcX1BCs,dummy,dummy));
-         velBCInteractor->addBCAdapter(velBCAdapter);
-
-         //outflow
-         GbCuboid3DPtr densCuboid(new GbCuboid3D(originX1+geoLength[0], originX2-blockLengthx1, originX3-blockLengthx1, 
-            originX1+geoLength[0]+blockLengthx1, originX2+geoLength[1]+blockLengthx1, originX3+geoLength[2]+blockLengthx1 ));
-         if(myid == 0) GbSystem3D::writeGeoObject(densCuboid.get(), pathname+"/geo/densCuboid", WbWriterVtkXmlASCII::getInstance());
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         D3Q27InteractorPtr densInteractor( new D3Q27Interactor(densCuboid,grid,denBCAdapter,Interactor3D::SOLID) );
-
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));	
-
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(triPlateInteractor);
-         intHelper.addInteractor(triBand1Interactor);
-         intHelper.addInteractor(triBand2Interactor);
-         intHelper.addInteractor(triBand3Interactor);
-         intHelper.addInteractor(triBand4Interactor);
-         intHelper.addInteractor(densInteractor);
-         intHelper.addInteractor(velBCInteractor);
-         intHelper.selectBlocks();
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	 
-         //////////////////////////////////////
-
-         //domain decomposition for threads
-         if(numOfThreads > 1)
-         {
-            PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-            grid->accept(pqPartVisitor);
-         }
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Write blocks - start");
-            BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-            ppblocks->update(0);
-            UBLOG(logINFO,"Write blocks - end");
-         }
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         unsigned long nod = nob * blocknx[0]*blocknx[1]*blocknx[2];
-         unsigned long nod_real = nob * (blocknx[0]+3)*(blocknx[1]+3)*(blocknx[2]+3);
-         unsigned long nodb = (blocknx[0]) * (blocknx[1]) * (blocknx[2]);
-
-         double needMemAll  = double(nod_real*(27*sizeof(double) + sizeof(int)));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-         
-         double nup = 0; 
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for(int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO,"Number of blocks for level " << level <<" = " << nobl);
-               UBLOG(logINFO,"Number of nodes for level " << level <<" = " << nobl*nodb);
-               nup += nobl*nodb*double(1<<level); 
-            }
-            UBLOG(logINFO,"Hypothetically time for calculation step for 120 nodes  = " << nup/6.0e5/(120*8)  << " s");
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-            UBLOG(logINFO,"Available memory per node/8.0 = " << (availMem/8.0) << " bytes");
-         }
-
-         //////////////////////////////////////////
-         //set connectors
-         if(myid == 0) UBLOG(logINFO,"set connectors - start");
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         if(myid == 0) UBLOG(logINFO,"set connectors - end");
-
-         ////////////////////////////
-         LBMKernel3DPtr kernel;
-         //kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-
-         //with sponge layer
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLBWithSpongeLayer(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-         kernel->setWithSpongeLayer(true);
-         kernel->setSpongeLayer(spongeLayer);
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-         //////////////////////////////////
-         //undef nodes
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-
-         intHelper.setBC();
-
-         //initialization of decompositions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor( nuLB,rhoLB);
-         initVisitor.setVx1(uLB);
-         grid->accept(initVisitor);
-
-         //Postprozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), 
-            unitConverter, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-         geoSch.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end");      
-      }
-      else
-      {
-         restart = true;
-
-         //domain decomposition for threads
-         if(numOfThreads > 1)
-         {
-            PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-            grid->accept(pqPartVisitor);
-         }
-         //set connectors
-         //grid->setPeriodicX3(false);
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         SetSpongeLayerBlockVisitor ssp(spongeLayer);
-         grid->accept(ssp);
-
-         //////////////////////////////////////////////////////////////////////////
-         //////////////////////////////////////////////////////////////////////////
-         //Platte
-         GbTriFaceMesh3DPtr plate (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(PlatteFilename,"Netz"));
-         plate->rotate(90.0,0.0,0.0);  //TriFacMesh-KO-System anders als LB-KO-System
-         if(myid == 0) GbSystem3D::writeGeoObject( plate.get(), pathname+"/geo/platte", WbWriterVtkXmlBinary::getInstance() );
-         //////////////////////////////////////////////////////////////////////////
-         //////////////////////////////////////////////////////////////////////////
-         // Zackenband
-         //////////////////////////////////////////////////////////////////////////
-         GbTriFaceMesh3DPtr meshBand1 (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand"));
-         meshBand1->translate(-495, -700, -19.94);
-         if(myid == 0) GbSystem3D::writeGeoObject( meshBand1.get(), pathname+"/geo/Band1", WbWriterVtkXmlASCII::getInstance() );
-
-         double blockLengthx1 = blocknx[0]*cdx; //geowerte
-         double blockLengthx2 = blockLengthx1;
-         double blockLengthx3 = blockLengthx1;
-
-         double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3}; 
-
-         double originX1 = plate->getX1Minimum()-plate->getLengthX1()/4.0;
-         double originX2 = plate->getX2Minimum();
-         double originX3 = plate->getX3Minimum()-299.5;
-
-         //bounding box
-         double g_minX1 = originX1;
-         double g_minX2 = originX2;
-         double g_minX3 = originX3;
-
-         double g_maxX1 = originX1 + geoLength[0];
-         double g_maxX2 = originX2 + geoLength[1];
-         double g_maxX3 = originX3 + geoLength[2];;
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         gridCube->setCenterCoordinates(gridCube->getX1Centroid(),meshBand1->getX2Centroid(),gridCube->getX3Centroid());
-         if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         originX2 = gridCube->getX2Minimum();
-         g_minX2 = originX2;
-         g_maxX2 = originX2 + geoLength[1];
-         //walls
-         GbCuboid3DPtr addWallZmin (new GbCuboid3D(g_minX1-blockLengthx1, g_minX2-blockLengthx1, g_minX3-blockLengthx1, g_maxX1+blockLengthx1, g_maxX2+blockLengthx1, g_minX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax (new GbCuboid3D(g_minX1-blockLengthx1, g_minX2-blockLengthx1, g_maxX3, g_maxX1+blockLengthx1, g_maxX2+blockLengthx1, g_maxX3+blockLengthx1));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //walls
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB        
-         D3Q27BoundaryConditionAdapterPtr slip(new D3Q27SlipBCAdapter(bbOption));
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, slip,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, slip,Interactor3D::SOLID));
-
-         SetSolidOrTransBlockVisitor v1(addWallZminInt, SetSolidOrTransBlockVisitor::TRANS);
-         grid->accept(v1);
-         addWallZminInt->initInteractor();
-         SetSolidOrTransBlockVisitor v2(addWallZmaxInt, SetSolidOrTransBlockVisitor::TRANS);
-         grid->accept(v2);        
-         addWallZmaxInt->initInteractor();
-
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), 
-            unitConverter, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-         geoSch.reset();
-         //////////////////////////////////////////////////////////////////////////
-
-         if(myid == 0) UBLOG(logINFO,"Restart - end"); 
-      }
-      UbSchedulerPtr visSch(new UbScheduler());
-      //visSch->addSchedule(1,0,3);
-      //visSch->addSchedule(100,100,1000);
-      //visSch->addSchedule(1000,1000,5000);
-      //visSch->addSchedule(5000,5000,100000);
-      //visSch->addSchedule(100000,100000,10000000);
-
-      visSch->addSchedule(1000,1000,10000000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), unitConverter);
-
-      double startStep = 88000;
-
-      UbSchedulerPtr resSchRMS(new UbScheduler());
-      resSchRMS->addSchedule(1000000, startStep, 10000000);
-      UbSchedulerPtr resSchMeans(new UbScheduler());
-      resSchMeans->addSchedule(1000000, startStep, 10000000);
-      UbSchedulerPtr stepAvSch(new UbScheduler());
-      int averageInterval=100;
-      stepAvSch->addSchedule(averageInterval,0,10000000);
-      AverageValuesPostprocessor Avpp(grid, pathname, WbWriterVtkXmlBinary::getInstance(), visSch/*wann wird rausgeschrieben*/, 
-         stepAvSch/*wann wird gemittelt*/, resSchMeans,resSchRMS/*wann wird resettet*/,restart);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 30));
-      nupsSch->addSchedule(500,500,1e6);
-      NUPSCounterPostprocessor npr(grid, nupsSch, numOfThreads, comm);
-
-      UbSchedulerPtr emSch(new UbScheduler(10));
-      EmergencyExitPostprocessor empr(grid, emSch, pathname, RestartPostprocessorPtr(&rp), comm);
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      string lastStep = string(cstr2);
-      double endTime = UbSystem::stringTo<double>(lastStep);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if (argc == 1)
-   {
-      cout<<"Command line argument isn't specified!"<<endl;
-      cout<<"plate2 <machine name>"<<endl;
-      return 1;
-   }
-   run(argv[1], argv[2]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/pmTortu/CMakeLists.txt b/apps/cpu/pmTortu/CMakeLists.txt
deleted file mode 100644
index 000cf49662caf85298e49d5e4d1ca493984a035e..0000000000000000000000000000000000000000
--- a/apps/cpu/pmTortu/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(plate)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(pmTortu BINARY)
diff --git a/apps/cpu/pmTortu/pmTortu.cpp b/apps/cpu/pmTortu/pmTortu.cpp
deleted file mode 100644
index ddd039ec87f973720cf6191c23d08b4217658bde..0000000000000000000000000000000000000000
--- a/apps/cpu/pmTortu/pmTortu.cpp
+++ /dev/null
@@ -1,511 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <vfluids.h>
-
-using namespace std;
-
-//! \brief  Computes Flow thorugh a porous medium and writespathlines
-//! \details Aim: determine tortuosity. pathlines are later integrated using python-script streamlinesMean.py (needs scipy,numpy)
-//! \details If PM-data is large run on single visulalization node.
-//! \details Created on: 01.07.2013
-//! \author  Sonja Uphoff
-
-void run(const char *cstr)
-{
-   try
-   {
-     string machine = QUOTEME(CAB_MACHINE);
-      UBLOG(logINFO,"Testcase PMTortuosity");
-      string pathname;
-      string stlPath;
-      int numOfThreads =1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      UbLog::reportingLevel() = logDEBUG5; //logINFO;
-
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-
-      if(machine == "PIPPINNEU")
-      {
-
-         pathname = "f:/temp/PMtortu";
-         stlPath = "f:/GeometrienVliese";
-         numOfThreads = 3;
-         logfile = false;
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")
-      {
-         pathname = "/work/sonjaOutputs/PMTortu2metall450";
-         stlPath = "/work/sonjaOutputs";
-         numOfThreads = 4;
-         availMem = 12.0e9;
-         logfile = true;
-
-         //if(myid ==0)
-         //{
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-         //}
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-
-
-      //if(myid ==0 && logfile)
-      //{
-         UbLog::output_policy::setStream(logFilename.str());
-      //}
-
-      int baseLevel, refineLevel,nx[3],blocknx[3];
-      double Re,velocity,rhoInit,vx1Init;//,vx2Init,vx3Init;
-
-//////////////////////////////////////////////////////////////////////////
-      //physik
-//////////////////////////////////////////////////////////////////////////
-      Re            = 1;// 13286;//13286;//gemessen 18.98 m/s...*5.0 zum  testen ob was passiert
-      velocity      = 0.01;
-      vx1Init       = 0.01;
-      rhoInit       = 1.0;
-      SimulationParametersPtr param = SimulationParameters::getInstanz();
-param->setCollisionModelType(SimulationParameters::COMPRESSIBLE);
-
-      ///////////////Knotenabmessungen:
-
-    nx[0]=28;
-    nx[1]=27;
-       nx[2]=27;
-    blocknx[0]=10;
-    blocknx[1]=10;
-    blocknx[2]=10;
-
-   baseLevel   = 0;
-   refineLevel = 0;
-
-      bool periodicx1 = false;
-      bool periodicx2 = false;
-      bool periodicx3 = false;
-
-
-
-   double minX1 = 0.0;
-   double maxX1 = 280;
-   double minX2 = 0.0;
-   double maxX2 = 270;
-   double minX3 = 0.0;
-   double maxX3 = 270;
-   double centerX1 = 0.5*(maxX1-minX1);
-   double centerX2 = 0.5*(maxX2-minX2);
-   //double scaleAsphalt = 0.0000625; //10/1600
-   double scalepixeltomm=0.5;
-   double scaleAsphalt = 1.0;
-   minX1 = minX1*scaleAsphalt;
-   minX2 = minX2*scaleAsphalt;
-   minX3 = minX3*scaleAsphalt;
-   maxX1 = maxX1*scaleAsphalt;
-   maxX2 = maxX2*scaleAsphalt;
-   maxX3 = maxX3*scaleAsphalt;
-
-   //vorgabe geom. dx im feinsten = 1 -> abstand der voxel = 1
-   double coarseNodeDx = (maxX2 - minX2) / (double)( blocknx[1]*nx[1] );
-   double fineNodeDx   = coarseNodeDx / (double)(1<<refineLevel);
-
-   double blockLengthx1 = blocknx[0]*coarseNodeDx;
-   double blockLengthx2 = blocknx[1]*coarseNodeDx;
-   double blockLengthx3 = blocknx[2]*coarseNodeDx;
-
-   double originX1 = minX1;
-   double originX2 = minX2;
-   double originX3 = minX3;
-
-   int nx1 = nx[0];
-   int nx2 = nx[1];
-   int nx3 = nx[2];
-   int blocknx1      = blocknx[0];
-   int blocknx2      = blocknx[1];
-   int blocknx3      = blocknx[2];
-
-   double gridOrigin[3] = { originX1, originX2, originX3 };
-
-   //geom. GROBE Blocklaenge
-   double coarseBlockLength[3];
-   coarseBlockLength[0] = blockLengthx1;
-   coarseBlockLength[1] = blockLengthx2;
-   coarseBlockLength[2] = blockLengthx3;
-   double geoLength[]   = {  nx[0]*blockLengthx1, nx[1]*blockLengthx2, nx[2]*blockLengthx3};
-
-//////////////////////////////////////////////////////////////////////////
-   // PM File
-//////////////////////////////////////////////////////////////////////////
-   string pmFilename;
-   pmFilename = stlPath+"/metallrgbx271y271z270.vti";//
-   int pmNX1=270;
-   int pmNX2=271;
-   int pmNX3=270;
-   float threshold = 120.0;
-
-         GbVoxelMatrix3DPtr pmMesh(GbVoxelMatrix3DCreator::getInstance()->createFromVtiASCIIFloatFile(pmFilename,pmNX1,pmNX2,pmNX3,threshold));
-
-pmMesh->translate((maxX1-minX1)*0.05,-(maxX2-minX2)*0.01,-(maxX3-minX3)*0.01);
-   pmMesh->setTransferViaFilename(true, pmFilename);
-
-//##########################################################################
-      //## physical parameters
-//##########################################################################
-
-      double rhoLB         = 1.0;
-      double rhoReal       = 1.0;
-      double nueReal  = 0.16;//0.015;
-
-      double hReal         = maxX1;
-      double uReal         = Re*nueReal/hReal;
-
-      //##Machzahl:
-      //#Ma     = uReal/csReal
-
-      double csReal  = 1.0/sqrt(3.0);
-      double cs_LB=1.0/sqrt(3.0);
-      double Ma      = uReal/csReal;//0.0553;//Ma-Real!
-      double hLB     = hReal;
-
-      //LBMUnitConverter unitConverter(hReal, csReal, rhoReal, hLB);
-      LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter(hReal, csReal, rhoReal, blocknx[0]*nx[0] ));
-
-      double uLB           = uReal   * unitConverter->getFactorVelocityWToLb();
-      double nueLB         = nueReal * unitConverter->getFactorViscosityWToLb();
-
-      double realDeltaT     = (nueLB * hReal *hReal) / (nueReal * blocknx[0]*nx[0] *blocknx[0]*nx[0]);
-
-
-
-      Grid3DPtr grid(new Grid3D());
-      UbSchedulerPtr rSch(new UbScheduler(5000,5000,1000000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY);
-
-//////////////////////////////////////////////////////////////////////////
-
-     std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      //bounding box
-      double g_minX1 = originX1;
-      double g_minX2 = originX2;
-      double g_minX3 = originX3;
-
-      double g_maxX1 = originX1 + geoLength[0];
-      double g_maxX2 = originX2 + geoLength[1];
-      double g_maxX3 = originX3 + geoLength[2];
-
-      //set grid
-      grid->setDeltaX(coarseNodeDx);
-      grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-      grid->setPeriodicX1(periodicx1);
-      grid->setPeriodicX2(periodicx2);
-      grid->setPeriodicX3(periodicx3);
-
-
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-      GenBlocksGridVisitor genBlocks;
-      genBlocks.addGeoObject(gridCube);
-      grid->accept(genBlocks);
-
-
-//////////////////////////////////////////////////////////////////////////
-      if(myid == 0)
-      {
-         UBLOG(logINFO, "*****************************************");
-         UBLOG(logINFO, "* Parameters *");
-         UBLOG(logINFO, "* Re            ="<<Re);
-         UBLOG(logINFO, "* Ma            ="<<Ma);
-         UBLOG(logINFO, "* uReal         ="<<uReal);
-         UBLOG(logINFO, "* nueReal       ="<<nueReal);
-         UBLOG(logINFO, "* nue           ="<<nueLB);
-         UBLOG(logINFO, "* velocity      ="<<uLB);
-         UBLOG(logINFO, "* LX1 (world/LB)="<<hReal<<"/"<<hReal/coarseNodeDx);
-      //   UBLOG(logINFO, "* LX2 (world/LB)="<<kanalbreiteSI<<"/"<<kanalbreiteSI/coarseNodeDx);
-      //   UBLOG(logINFO, "* LX3 (world/LB)="<<kanalhoeheSI<<"/"<<kanalhoeheSI/coarseNodeDx);
-         UBLOG(logINFO, "* cdx           ="<<coarseNodeDx);
-         UBLOG(logINFO, "* fdx           ="<<fineNodeDx);
-         UBLOG(logINFO, "* dx_base ="<<coarseNodeDx<<" == "<<coarseNodeDx);
-         UBLOG(logINFO, "* dx_refine ="<<fineNodeDx<<" == "<<fineNodeDx );
-         UBLOG(logINFO, "* nx1/2/3 ="<<nx[0]<<"/"<<nx[1]<<"/"<<nx[2]);
-         UBLOG(logINFO, "* blocknx1/2/3 ="<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-         UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-         UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-         UBLOG(logINFO, "*****************************************");
-         UBLOGML(logINFO, "UnitConverter:"<<unitConverter->toString());
-         UBLOG(logINFO, "*****************************************");
-      }
-
-
-      RatioBlockVisitor ratioVisitor(refineLevel);
-      grid->accept(ratioVisitor);
-      RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-      grid->accept(ratioSmoothVisitor);
-      OverlapBlockVisitor overlapVisitor(refineLevel);
-      grid->accept(overlapVisitor);
-      std::vector<int> dirs;
-      D3Q27System::getLBMDirections(dirs);
-      SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-      grid->accept(interDirsVisitor);
-
-      if(myid == 0) UBLOG(logINFO,"Refinement - end");
-
-      MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-      grid->accept( metisVisitor );
-
-      if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-      BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-      if(myid == 0) ppblocks->update(0);
-      if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-      if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-      SolidBlocksHelper sd(grid, comm);
-
-
-      sd.deleteSolidBlocks();
-      if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");
-
-      if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-      grid->accept( metisVisitor );
-      if(myid == 0) ppblocks->update(1);
-      ppblocks.reset();
-      if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-      unsigned long nob = grid->getNumberOfBlocks();
-      unsigned long nod = nob * blocknx[0]*blocknx[1]*blocknx[2];
-      unsigned long nod_real = nob * (blocknx[0]+3)*(blocknx[1]+3)*(blocknx[2]+3);
-
-      double needMemAll  = double(nod_real*(27*sizeof(double) + sizeof(int)));
-      double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"Number of blocks = " << nob);
-         UBLOG(logINFO,"Number of nodes  = " << nod);
-         UBLOG(logINFO,"Necessary memory  = " << needMemAll << " bytes");
-         UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-         UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-      }
-
-      LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(blocknx[0], blocknx[1], blocknx[2]));
-
-  //    LBMKernel3DPtr kernel(new LBMKernelETD3Q27BGK(blocknx[0], blocknx[1], blocknx[2],1));
-      BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-
-      grid->accept(kernelVisitor);
-
-
-
-//////////////////////////////////////////////////////////////////////////
-    double geoOverlap = 5*coarseNodeDx;
-
-
-//////////////////////////////////////////////////////////////////////////
-   // Interactoren
-//////////////////////////////////////////////////////////////////////////
-//##########################################################################
-   int noSlipSecOpt = 0; // #0=2nd order BB 1=simple BB
-//##########################################################################
-   int noSlipSecOptAsphalt = 1; // #0=2nd order BB 1=simple BB
-//##########################################################################
-     int bbOption1 = 0; //0=simple Bounce Back, 1=quadr. BB
-     D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-   D3Q27InteractorPtr PM1Interactor = D3Q27InteractorPtr ( new D3Q27Interactor(pmMesh, grid, bcObst,Interactor3D::SOLID)); //wo ist bc obst definiert?
- grid->addAndInitInteractor( PM1Interactor);
-   //UBLOG(logINFO,"SpD3Q19Asphalt - send porous media to D3Q19InteractorService");
-   //UBLOG(logINFO,"SpD3Q19Asphalt - send porous media = "<<pmInteractor->getName()<<" with "<<typeid(*pmInteractor->getGbObject3D()).name()<<" node("<<pmNX1<<"/"<<pmNX2<<"/"<<pmNX3<<")");
-   UbTimer timer;
-   timer.start();
-
-
-   UBLOG(logINFO,"SpD3Q19Asphalt - send porous media to D3Q19InteractorService done in "<<timer.stop());
-
-
-      if (refineLevel > 0)
-      {
-         D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-         grid->accept(undefNodesVisitor);
-      }
-
-
-      //set connectors
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-      D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-      grid->accept( setConnsVisitor );
-
-      //domain decomposition
-      PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      grid->accept(pqPartVisitor);
-
-      //initialization of decompositions
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(1.0);
-      initVisitor.setVx1(0.0);
-      grid->accept(initVisitor);
-
-
- //////////////////////////////////////////////////////////////////////////
-   // BCs
-//////////////////////////////////////////////////////////////////////////
-      //Reparatur an den Seiten:
-       UBLOG(logINFO,"inflow")
-           double x3minMesh=0.000;  double x3maxMesh=originX3 + blockLengthx3*nx3 + geoOverlap;
-   GbCuboid3DPtr leftCuboid(new GbCuboid3D( originX1 + blockLengthx1*nx1 - coarseNodeDx,
-                                           originX2 - geoOverlap,
-                                           x3minMesh,
-                                           originX1 + blockLengthx1*nx1 + geoOverlap,
-                                           originX2 + blockLengthx2*nx2 + geoOverlap,
-                                           x3maxMesh));
-   GbCuboid3DPtr rightCuboid(new GbCuboid3D( originX1 - geoOverlap,
-                                           originX2 - geoOverlap,
-                                           x3minMesh,
-                                           originX1 + geoOverlap,
-                                           originX2 + blockLengthx2*nx2 + geoOverlap,
-                                           x3maxMesh));
-   GbCuboid3DPtr northCuboid(new GbCuboid3D( originX1- geoOverlap,
-                                           originX2 + blockLengthx2*nx2 - 0.5*coarseNodeDx,
-                                           x3minMesh,
-                                           originX1 + blockLengthx1*nx1 + geoOverlap,
-                                           originX2 + blockLengthx2*nx2 + geoOverlap,
-                                           x3maxMesh));
-   GbCuboid3DPtr southCuboid(new GbCuboid3D( originX1 - geoOverlap,
-                                           originX2 - geoOverlap,
-                                           x3minMesh,
-                                           originX1 + blockLengthx1*nx1 + geoOverlap,
-                                           originX2 + geoOverlap,
-                                           x3maxMesh));
-
-//////////////////////////////////////////////////////////////////////////
-   // inflow
-//////////////////////////////////////////////////////////////////////////
-   UBLOG(logINFO,"inflow")
-
-   GbCuboid3DPtr densCuboid(new GbCuboid3D(
-                                           originX1 - geoOverlap,
-                                           originX2 - geoOverlap,
-                                           originX3 + blockLengthx3*nx3 - coarseNodeDx,
-                                           originX1 + blockLengthx1*nx1 + geoOverlap,
-                                           originX2 + blockLengthx2*nx2 + geoOverlap,
-                                           originX3 + blockLengthx3*nx3 + geoOverlap));
-
-
-//////////////////////////////////////////////////////////////////////////
-   // bottom/outflow
-//////////////////////////////////////////////////////////////////////////
-      double dRho=0.05;
-      GbCuboid3DPtr densCuboid2(new GbCuboid3D(
-                                                 originX1 - geoOverlap,
-                                                 originX2 - geoOverlap,
-                                                 originX3 - geoOverlap,
-                                                 originX1 + blockLengthx1*nx1 + geoOverlap,
-                                                 originX2 + blockLengthx2*nx2 + geoOverlap,
-minX3+0.5*fineNodeDx   ));
-
-      if(myid == 0) GbSystem3D::writeGeoObject(densCuboid2.get(), pathname+"/geo/densCuboid2", WbWriterVtkXmlASCII::getInstance());
-      D3Q27BoundaryConditionAdapterPtr denBCAdapter2(new D3Q27DensityBCAdapter(rhoInit-dRho));
-      D3Q27InteractorPtr densInteractor2( new D3Q27Interactor(leftCuboid,grid,denBCAdapter2,Interactor3D::SOLID) );
-      grid->addAndInitInteractor( densInteractor2 );
-
-            if(myid == 0) GbSystem3D::writeGeoObject(densCuboid.get(), pathname+"/geo/densCuboid", WbWriterVtkXmlASCII::getInstance());
-      D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoInit+dRho));
-      D3Q27InteractorPtr densInteractor( new D3Q27Interactor(rightCuboid,grid,denBCAdapter,Interactor3D::SOLID) );
-      grid->addAndInitInteractor( densInteractor );
-
-   D3Q27InteractorPtr leftInteractor = D3Q27InteractorPtr ( new D3Q27Interactor(densCuboid2, grid, bcObst,Interactor3D::SOLID));
-   grid->addAndInitInteractor( leftInteractor);
-   D3Q27InteractorPtr rightInteractor = D3Q27InteractorPtr ( new D3Q27Interactor(densCuboid, grid, bcObst,Interactor3D::SOLID));
-  grid->addAndInitInteractor(rightInteractor);
-   D3Q27InteractorPtr northInteractor = D3Q27InteractorPtr ( new D3Q27Interactor(northCuboid, grid, bcObst,Interactor3D::SOLID));
-   grid->addAndInitInteractor(northInteractor);
-   D3Q27InteractorPtr southInteractor = D3Q27InteractorPtr ( new D3Q27Interactor(southCuboid, grid, bcObst,Interactor3D::SOLID));
-  grid->addAndInitInteractor(southInteractor);
-
-  if(myid == 0) GbSystem3D::writeGeoObject(northCuboid.get(), pathname+"/geo/north", WbWriterVtkXmlASCII::getInstance());
-if(myid == 0) GbSystem3D::writeGeoObject(southCuboid.get(), pathname+"/geo/south", WbWriterVtkXmlASCII::getInstance());
-if(myid == 0) GbSystem3D::writeGeoObject(rightCuboid.get(), pathname+"/geo/right", WbWriterVtkXmlASCII::getInstance());
-if(myid == 0) GbSystem3D::writeGeoObject(leftCuboid.get(), pathname+"/geo/left", WbWriterVtkXmlASCII::getInstance());
-
-
-      UbSchedulerPtr geoSch(new UbScheduler(1));
-      D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-           new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(),
-unitConverter, comm, true));
-
-              double raiseVelSteps = 0;
-
-      grid->doPostProcess(0);
-      ppgeo.reset();
-      geoSch.reset();
-
-     UbSchedulerPtr plSch(new UbScheduler(10, 2));
-      vector<D3Q27PathLinePostprocessorPtr> pathlinepostPParray;
-
- for (int ppz=0; ppz<27; ppz++)
-      {
-      for (int ppy=0; ppy<27; ppy++)
-      {
-          char numstr[21];
-          sprintf(numstr, "%d", ppy+20*ppz);
-          std::string pathPL = pathname+"/pathline" + numstr+".dat";
-         D3Q27PathLinePostprocessorPtr plptr1( new D3Q27PathLinePostprocessor(grid, pathPL, WbWriterVtkXmlASCII::getInstance(), unitConverter, plSch, comm, 8.0, 6.0+8.0*(double)ppy,5.0+8.0*(double)ppz, nueLB, iProcessor));
-              pathlinepostPParray.push_back(plptr1);//new D3Q27PathLinePostprocessor(grid, pathname + "/pathLine", WbWriterVtkXmlASCII::getInstance(), conv, plSch, comm, 0.01+(double)ppx*0.0001, 0.00001,0.00001, nueLB, iProcessor));
-
-          }
-      }
-
- UbSchedulerPtr visSch(new UbScheduler());
-      visSch->addSchedule(1,1,10);
-      visSch->addSchedule(10,10,100);
-      visSch->addSchedule(100,100,1000);
-      visSch->addSchedule(1000,1000,100000);
-      visSch->addSchedule(100000,100000,1000000);
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), unitConverter, comm);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-//////////////////////////////////////////////////////////////////////////
-
-      cout << "PID = " << myid << " Total Physical Memory (RAM): " << MemoryUtil::getTotalPhysMem()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used: " << MemoryUtil::getPhysMemUsed()<<endl;
-      cout << "PID = " << myid << " Physical Memory currently used by current process: " << MemoryUtil::getPhysMemUsedByMe()<<endl;
-
-      double endTime = 40001;
-      UbSchedulerPtr ghostLSch(new UbScheduler());
-      ghostLSch->addSchedule(1,1,endTime);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, ghostLSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-} 
diff --git a/apps/cpu/pmTortu/streamlinesMean.py b/apps/cpu/pmTortu/streamlinesMean.py
deleted file mode 100644
index 47d39b94575168d514e53a282bb068d6eaa6d787..0000000000000000000000000000000000000000
--- a/apps/cpu/pmTortu/streamlinesMean.py
+++ /dev/null
@@ -1,162 +0,0 @@
-import os
-import scipy
-import numpy
-import math
-
-#li=[[5,0.005]]
-
-n=409;
-i=0;
-j=0;
-k=0;
-length=[0];
-lengthx=[0];
-lengthT=[0,0,0,0,0];
-lengthxT=[0,0,0,0,0];
-ItortuList=[0];
-outKOx=78.0;#0.105;
-try:
- for i in range(1,n):
-  length.append(0);
-  lengthx.append(0);
-  #if (i<10):
-  # dateiIn="C:/Users/Sonja/Documents/pathlines3/pathline30"+str(i)+".dat.ascii.vtu"
-  #else:
-  dateiIn="C:/Users/Sonja/Documents/blech2c/pathline"+str(i)+".dat.ascii.vtu"
-  print dateiIn
-  datei = open(dateiIn,"r")
-  j=0; k=0;
-  for line in datei:
-     j=j+1
-     #print line
- ##   if ((i>6568) and (i<17261)  ):
-     #zuordnung = line.split("  ")
-     #if (j==1): print line
-     if (k==1): ##marker der anfang der koordinaten bezeichnet
-         zuordnung = line.split("  ")
-         #print zuordnung
-         #pointsxyz=zuordnung[7].split(" ")
-         #print pointsxyz
-         t=0;
-         for entry in zuordnung:
-             pointsxyz=entry.split(" ")
-             #print pointsxyz
-             t=t+1;
-             #if (i==1 | i==2):
-             lengthT.append(0);
-             lengthxT.append(0);
-             if (t>7):
-              if (pointsxyz[1]!="\n"):
-               if(float(pointsxyz[1])<outKOx): ##ende messbereich
-                 #print pointsxyz
-                 if (t==8):
-                     xalt=float(pointsxyz[1]);
-                     yalt=float(pointsxyz[2]);
-                     zalt=float(pointsxyz[3]);
-                 xneu=float(pointsxyz[1]);
-                 yneu=float(pointsxyz[2]);
-                 zneu=float(pointsxyz[3]);
-                 if (xalt>20.0):              ##beginn messbereicht
-                  length[i]=length[i]+math.sqrt((xneu-xalt)*(xneu-xalt)+(yneu-yalt)*(yneu-yalt)+(zneu-zalt)*(zneu-zalt));
-                  lengthx[i]=lengthx[i]+(xneu-xalt);
-                  lengthT[t]=lengthT[t]+length[i];
-                  lengthxT[t]=lengthxT[t]+lengthx[i];
-                  #print lengthT[t]
-                  #print xneu
-                  #print lengthx[i]
-                 xalt=xneu; yalt=yneu; zalt=zneu;
-                 
- 
-         k=2;
-     #if (str(line)=="""            <DataArray type="Float64" NumberOfComponents="3" format="ascii">"""):
- 
-     if(j==5):
-       print line
-       k=1;
-     #print zuordnung
-     #print zuordnung[0]
-     #print zuordnung[1]
-     #test0=float(zuordnung[0])
-     #test1=float(zuordnung[1])
-     #li.append([test0,test1])
- ##print float(li[10])/20
- #print li
-  datei.close();
- i=0;
- j=0;
- length.pop(0);
- lengthx.pop(0);
- #print length
- #print lengthx
- tortuGes=0;
- LGes=0.0;
- LxGes=0.0;
- fFile = open("f:/temp/pathlinesb2cLength.dat", "w")
- for entry in length:
-     #print entry;
-     #print lengthx[i];
-     LGes=LGes+length[i];
-     LxGes=LxGes+lengthx[i];
-     ItortuList.append(entry/max(lengthx[i],0.00000001));
-     if (length[i]>2.0):
-      Itortu=entry/lengthx[i]
-      print Itortu
-      j=j+1;
-      tortuGes=tortuGes+Itortu;
-     i=i+1
-     fFile.write(str(i))
-     fFile.write(" ")
-     fFile.write(str(entry))
-     fFile.write(" ")
-     #fFile.write(str(lengthx[i]))
-     #fFile.write(" ")
-     #fFile.write(str(entry/max(lengthx[i],0.00000001)))   
-     fFile.write("\n")
- tortuGes=tortuGes/j;
- print "berücksichtigte Stromlinien:" 
- print j
- fFile.close();
- ItortuList.pop(0);
- print "TortuGes:"
- print tortuGes;
- print "Lges:"
- print LGes;
- print "Lxges:"
- print LxGes;
- print "Lges/LxGes:"
- print LGes/LxGes;
- erg=[lengthx,length,ItortuList];
- #print erg
- erg=numpy.asarray(erg).T.tolist() #does a list-transpose
- #print erg
- erg=sorted(erg);
- fFile = open("f:/temp/pathlinesb2cLengthSortt1000.dat", "w")
- i=0;
- #print erg[1][1]
- #print erg[0][1]
- for entry in erg:
-     i=i+1;
-     #print i
-     fFile.write(str(entry[0]))
-     fFile.write(" ")
-     fFile.write(str(entry[1]))
-     fFile.write(" ")
-     fFile.write(" ")
-     fFile.write(str(entry[2]))
-     fFile.write("\n")
- fFile.close();
- fFile = open("f:/temp/pathlinesbcbwithTime.dat", "w")
- i=0;
- for entry in lengthxT:
-     i=i+1;
-     #print i
-     fFile.write(str(entry))
-     fFile.write(" ")
-     fFile.write(str(lengthT[i]))
-     fFile.write(" ")
-     fFile.write("\n")
- fFile.close();
-except IOError:
- datei.close()
- print "caught error couldnt process datafile"
- print i
diff --git a/apps/cpu/porplate2/CMakeLists.txt b/apps/cpu/porplate2/CMakeLists.txt
deleted file mode 100644
index 0c5ab0a066a5d953ca26e58bef628e2d56333454..0000000000000000000000000000000000000000
--- a/apps/cpu/porplate2/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(porplate2)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(porplate2 BINARY)
diff --git a/apps/cpu/porplate2/porplate.cpp b/apps/cpu/porplate2/porplate.cpp
deleted file mode 100644
index 639dfff35e6ef0aa994c9cece1dab3d32d3dcb45..0000000000000000000000000000000000000000
--- a/apps/cpu/porplate2/porplate.cpp
+++ /dev/null
@@ -1,1060 +0,0 @@
-
-
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <vfluids.h>
-
-using namespace std;
-
-//////////////////////////////////////////////////////////////////////////
-void inlay(GbVoxelMatrix3DPtr pmMesh, string& pathname, int myid, int i, Grid3DPtr grid)
-{
-   int bbOptionPM = 2; //quadratic bounce back with for thin walls
-   D3Q27BoundaryConditionAdapterPtr noSlipPM(new D3Q27NoSlipBCAdapter(bbOptionPM));
-   D3Q27InteractorPtr inlayInt = D3Q27InteractorPtr(new D3Q27Interactor(pmMesh, grid, noSlipPM, Interactor3D::SOLID));
-
-   GbCuboid3DPtr inlayBox(new GbCuboid3D(pmMesh->getX1Minimum(), pmMesh->getX2Minimum(), pmMesh->getX3Minimum(), pmMesh->getX1Maximum(), pmMesh->getX2Maximum(), pmMesh->getX3Maximum()));
-   if (myid == 0) GbSystem3D::writeGeoObject(inlayBox.get(), pathname + "/geo/inlay" + UbSystem::toString(i), WbWriterVtkXmlASCII::getInstance());
-   D3Q27InteractorPtr inlayBoxInt = D3Q27InteractorPtr(new D3Q27Interactor(inlayBox, grid, noSlipPM, Interactor3D::SOLID));
-   SetSolidOrTransBlockVisitor v1(inlayBoxInt, SetSolidOrTransBlockVisitor::SOLID);
-   grid->accept(v1);
-   SetSolidOrTransBlockVisitor v2(inlayBoxInt, SetSolidOrTransBlockVisitor::TRANS);
-   grid->accept(v2);
-
-   vector<Block3DPtr> inlayBlocks;
-   vector<Block3DPtr>& sb = inlayBoxInt->getSolidBlockSet();
-   if (myid == 0) UBLOG(logINFO, "sb.size = " << sb.size());
-   inlayBlocks.insert(inlayBlocks.end(), sb.begin(), sb.end());
-   vector<Block3DPtr>& tb = inlayBoxInt->getTransBlockSet();
-   if (myid == 0) UBLOG(logINFO, "tb.size = " << tb.size());
-   inlayBlocks.insert(inlayBlocks.end(), tb.begin(), tb.end());
-
-   if (myid == 0) UBLOG(logINFO, "inlayBlocks.size = " << inlayBlocks.size());
-
-   BOOST_FOREACH(Block3DPtr block, inlayBlocks)
-   {
-      block->setActive(true);
-      inlayInt->setDifferencesToGbObject3D(block);
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void deleteExistBlocks(Grid3DPtr ngrid, Grid3DPtr ogrid)
-{
-   int minInitLevel = ogrid->getCoarsestInitializedLevel();
-   int maxInitLevel = ogrid->getFinestInitializedLevel();
-
-   std::vector<std::vector<Block3DPtr> > blockVector;
-   blockVector.resize(maxInitLevel + 1);
-
-   std::vector<int> ids;
-
-   for (int level = minInitLevel; level <= maxInitLevel; level++)
-   {
-      ogrid->getBlocks(level, blockVector[level]);
-
-      BOOST_FOREACH(Block3DPtr block, blockVector[level])
-      {
-         int x1 = block->getX1();
-         int x2 = block->getX2();
-         int x3 = block->getX3();
-         Block3DPtr nblock = ngrid->getBlock(x1, x2, x3, level);
-         if (nblock)
-         {
-            ngrid->deleteBlock(x1, x2, x3, level);
-         }
-         else
-         {
-            ids.push_back(block->getGlobalID());
-         }
-      }
-   }
-
-   ogrid->deleteBlocks(ids);
-}
-//////////////////////////////////////////////////////////////////////////
-void reindexBlocks(Grid3DPtr ngrid)
-{
-   int minInitLevel = ngrid->getCoarsestInitializedLevel();
-   int maxInitLevel = ngrid->getFinestInitializedLevel();
-
-   std::vector<std::vector<Block3DPtr> > blockVector;
-   blockVector.resize(maxInitLevel + 1);
-
-   int maxID = Block3D::getMaxGlobalID();
-
-   for (int level = minInitLevel; level <= maxInitLevel; level++)
-   {
-      ngrid->getBlocks(level, blockVector[level]);
-
-      BOOST_FOREACH(Block3DPtr block, blockVector[level])
-      {
-         block->setGlobalID(++maxID);
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void setInterpolationFlag(Grid3DPtr grid)
-{
-   int minInitLevel = grid->getCoarsestInitializedLevel();
-   int maxInitLevel = grid->getFinestInitializedLevel();
-
-   std::vector<std::vector<Block3DPtr> > blockVector;
-   blockVector.resize(maxInitLevel + 1);
-
-   int maxID = Block3D::getMaxGlobalID();
-
-   for (int level = minInitLevel; level <= maxInitLevel; level++)
-   {
-      grid->getBlocks(level, blockVector[level]);
-
-      BOOST_FOREACH(Block3DPtr block, blockVector[level])
-      {
-         block->deleteInterpolationFlag();
-      }
-   }
-
-   std::vector<int> dirs;
-
-   for (int i = D3Q27System::E; i <= D3Q27System::TS; i++)
-   {
-      dirs.push_back(i);
-   }
-   SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-   grid->accept(interDirsVisitor);
-}
-//////////////////////////////////////////////////////////////////////////
-void addExistBlocks(Grid3DPtr ngrid, Grid3DPtr ogrid, Grid3DPtr hgrid)
-{
-   int minInitLevel = ngrid->getCoarsestInitializedLevel();
-   int maxInitLevel = ngrid->getFinestInitializedLevel();
-
-   std::vector<std::vector<Block3DPtr> > blockVector;
-   blockVector.resize(maxInitLevel + 1);
-
-   std::vector<Block3DPtr> db;
-
-   //int gridRank = ogrid->getRank();
-
-   for (int level = minInitLevel; level <= maxInitLevel; level++)
-   {
-      ngrid->getBlocks(level, blockVector[level]);
-
-      BOOST_FOREACH(Block3DPtr block, blockVector[level])
-      {
-         int x1 = block->getX1();
-         int x2 = block->getX2();
-         int x3 = block->getX3();
-         Block3DPtr oblock = ogrid->getBlock(x1, x2, x3, level);
-         if (oblock)
-         {
-            hgrid->addBlock(oblock);
-         }
-
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void moveBlocks(Grid3DPtr ngrid, Grid3DPtr ogrid)
-{
-   int minInitLevel = ngrid->getCoarsestInitializedLevel();
-   int maxInitLevel = ngrid->getFinestInitializedLevel();
-
-   std::vector<std::vector<Block3DPtr> > blockVector;
-   blockVector.resize(maxInitLevel + 1);
-
-   for (int level = minInitLevel; level <= maxInitLevel; level++)
-   {
-      ngrid->getBlocks(level, blockVector[level]);
-
-      BOOST_FOREACH(Block3DPtr block, blockVector[level])
-      {
-         ogrid->addBlock(block);
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void removeUndefNodes(Grid3DPtr grid)
-{
-   int minInitLevel = grid->getCoarsestInitializedLevel();
-   int maxInitLevel = grid->getFinestInitializedLevel();
-
-   std::vector<std::vector<Block3DPtr> > blockVector;
-   blockVector.resize(maxInitLevel + 1);
-
-   int gridRank = grid->getRank();
-
-   for (int level = minInitLevel; level <= maxInitLevel; level++)
-   {
-      grid->getBlocks(level, gridRank, true, blockVector[level]);
-
-      BOOST_FOREACH(Block3DPtr block, blockVector[level])
-      {
-         int gl = 0;
-
-         LBMKernel3DPtr kernel = block->getKernel();
-         BCArray3D<D3Q27BoundaryCondition>& bcMatrix = boost::dynamic_pointer_cast<D3Q27ETBCProcessor>(kernel->getBCProcessor())->getBCArray();
-
-         int minX1 = gl;
-         int minX2 = gl;
-         int minX3 = gl;
-
-         int maxX1 = static_cast<int>(bcMatrix.getNX1()) - 1 - gl;
-         int maxX2 = static_cast<int>(bcMatrix.getNX2()) - 1 - gl;
-         int maxX3 = static_cast<int>(bcMatrix.getNX3()) - 1 - gl;
-
-         minX1 = gl;
-         minX2 = gl;
-         minX3 = gl;
-
-         maxX1 = static_cast<int>(bcMatrix.getNX1()) - 1 - gl;
-         maxX2 = static_cast<int>(bcMatrix.getNX2()) - 1 - gl;
-         maxX3 = static_cast<int>(bcMatrix.getNX3()) - 1 - gl;
-
-         for (int ix3 = minX3; ix3 <= maxX3; ix3++)
-            for (int ix2 = minX2; ix2 <= maxX2; ix2++)
-               for (int ix1 = minX1; ix1 <= maxX3; ix1++)
-               {
-                  if (bcMatrix.isUndefined(ix1, ix2, ix3)) bcMatrix.setFluid(ix1, ix2, ix3);
-               }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void removeBCInformation(Grid3DPtr grid)
-{
-   int minInitLevel = grid->getCoarsestInitializedLevel();
-   int maxInitLevel = grid->getFinestInitializedLevel();
-
-   std::vector<std::vector<Block3DPtr> > blockVector;
-   blockVector.resize(maxInitLevel + 1);
-
-   int gridRank = grid->getRank();
-
-   for (int level = minInitLevel; level <= maxInitLevel; level++)
-   {
-      grid->getBlocks(level, gridRank, true, blockVector[level]);
-
-      BOOST_FOREACH(Block3DPtr block, blockVector[level])
-      {
-         int gl = 0;
-
-         LBMKernel3DPtr kernel = block->getKernel();
-         BCArray3D<D3Q27BoundaryCondition>& bcMatrix = boost::dynamic_pointer_cast<D3Q27ETBCProcessor>(kernel->getBCProcessor())->getBCArray();
-
-         int minX1 = gl;
-         int minX2 = gl;
-         int minX3 = gl;
-
-         int maxX1 = static_cast<int>(bcMatrix.getNX1()) - 1 - gl;
-         int maxX2 = static_cast<int>(bcMatrix.getNX2()) - 1 - gl;
-         int maxX3 = static_cast<int>(bcMatrix.getNX3()) - 1 - gl;
-
-         for (int ix3 = minX3; ix3 <= maxX3; ix3++)
-            for (int ix2 = minX2; ix2 <= maxX2; ix2++)
-               for (int ix1 = minX1; ix1 <= maxX3; ix1++)
-               {
-                  bcMatrix.setFluid(ix1, ix2, ix3);
-                  //bcMatrix.setBC(ix1, ix2, ix3, D3Q27BoundaryConditionPtr());
-               }
-
-   //      if (!block->getKernel())
-   //      {
-   //         if (block->getRank() == grid->getRank())
-   //         {
-   //            BCProcessorPtr bcProc(new D3Q27ETForThinWallBCProcessor());
-   //            block->getKernel()->setBCProcessor(bcProc);
-   //         }
-   //      }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void setKernel(Grid3DPtr grid, LBMKernel3DPtr kernel, double nu)
-{
-   int minInitLevel = grid->getCoarsestInitializedLevel();
-   int maxInitLevel = grid->getFinestInitializedLevel();
-
-   std::vector<std::vector<Block3DPtr> > blockVector;
-   blockVector.resize(maxInitLevel + 1);
-
-   int gridRank = grid->getRank();
-
-   for (int level = minInitLevel; level <= maxInitLevel; level++)
-   {
-      grid->getBlocks(level, gridRank, true, blockVector[level]);
-
-      BOOST_FOREACH(Block3DPtr block, blockVector[level])
-      {
-         if (!block->getKernel())
-         {
-            if (block->getRank() == grid->getRank())
-            {
-               LBMReal collFactor = LBMSystem::calcCollisionFactor(nu, block->getLevel());
-               kernel->setCollisionFactor(collFactor);
-               kernel->setIndex(block->getX1(), block->getX2(), block->getX3());
-               kernel->setDeltaT(LBMSystem::getDeltaT(block->getLevel()));
-               kernel->setBlock(block);
-               LBMKernel3DPtr newKernel = kernel->clone();
-               block->setKernel(newKernel);
-            }
-         }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-void run(const char *cstr, bool firststart)
-{
-   try
-   {
-      string pathname;
-      string pathGeo;
-      string pathLog;
-      int numOfThreads = 1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      string machine = string(cstr);
-
-      if (machine == "my")
-      {
-         pathname = "d:/temp/porplate2";
-         pathGeo = "d:/Data/plate";
-         pathLog = pathname;
-         numOfThreads = 1;
-         logfile = false;
-         availMem = 15.0e9;
-      }
-      else if (machine == "Ludwig")
-      {
-         pathname = "/work/koskuche/SFB880/porplate2";
-         pathGeo = "/home/koskuche/data/plate";
-         pathLog = pathname;
-         numOfThreads = 8;
-         availMem = 12.0e9;///8*numOfThreads;
-         logfile = true;
-      }
-      else if (machine == "HLRS")
-      {
-         pathname = "/univ_1/ws1/ws/xrmkuchr-plate3-0";
-         pathGeo = "/zhome/academic/HLRS/xrm/xrmkuchr/data/plate";
-         pathLog = "/zhome/academic/HLRS/xrm/xrmkuchr/work/plate";
-         numOfThreads = 16;
-         availMem = 2.0e9;
-         logfile = true;
-      }
-      else if (machine == "HLRN")
-      {
-         pathname = "/gfs1/work/niivfcpu/scratch/plateEx";
-         pathGeo = "/gfs1/work/niivfcpu/data/plate";
-         pathLog = pathname;
-         numOfThreads = 24;
-         availMem = 64.0e9 / 24.0*numOfThreads;
-         logfile = true;
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-#if defined(__unix__)
-      if (myid==0) 
-      {
-         const char* str = pathLog.c_str();
-         int status=mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-      }
-#endif 
-
-      if (myid == 0 && logfile)
-      {
-         //UbLog::reportingLevel() = logDEBUG5;
-         logFilename << pathLog + "/logfile" + UbSystem::toString(UbSystem::getTimeStamp()) + "_" + UbSystem::toString(myid) + ".txt";
-         UbLog::output_policy::setStream(logFilename.str());
-      }
-
-      if (myid == 0) UBLOG(logINFO, "Testcase plate");
-
-      string PlatteFilename = pathGeo + "/Platte_bearbeitet2_10cmA.stl";
-
-      string ZckbndFilename = pathGeo + "/2zackenbaender0.stl";
-
-      int ppblockc = 0;
-
-      ///////////////Knotenabmessungen:
-      int nx[3], blocknx[3];
-      nx[0] = 90;//240;//120;//60;//86;//43;//65;//50;  //länge
-      nx[1] = 2;//2;//6;///1;//5;// //breite
-      nx[2] = 30;//64;//32;//18;//5;//15;//15; //höhe gebiet
-      blocknx[0] = 16;//10;//6;
-      blocknx[1] = 16;//10;//6;
-      blocknx[2] = 16;//10;//6;
-
-      int baseLevel = 0;
-      int refineLevel = 5;
-
-      double H = 600.0; // Kanalhöhe [mm]
-      double cdx = H / (double)(nx[2] * blocknx[2]);
-      double fdx = cdx / double(1 << refineLevel);
-
-      //double h = 200.0; // gewünschte Plattenhöhe in Gitterpunkten
-      //double fdx = plate->getLengthX3()/h;
-      //double cdx = fdx*double(1<<refineLevel);
-
-      LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      //////////////////////////////////////////////////////////////////////////
-      // physik
-      //////////////////////////////////////////////////////////////////////////
-
-      //////////////////////////////////////////////////////////////////////////
-      // Experiment Parametr
-      // Re = 1000000
-      // V = 16.05  # m / s
-      // p = 994.7  #hPa(manuell abgelesen von MUB)
-      // T = 21.78  #°C
-      // Luftfeuchte = 50.5   # %
-      //////////////////////////////////////////////////////////////////////////
-      // Simulation Parametr
-      //////////////////////////////////////////////////////////////////////////
-      double Re = 1e6; // 1133333.3333333335;
-      double rhoLB = 0.0;
-      double uLB = 0.1;
-      double lReal = 1000; //Plattenlänge in mm
-      double nuLB = (uLB*(lReal / cdx)) / Re;
-
-      int sizeSP = 4;
-      mu::Parser spongeLayer;
-      spongeLayer.SetExpr("x1>=(sizeX-sizeSP)/dx ? (sizeX-(x1+1))/sizeSP/2.0 + 0.5 : 1.0");
-      spongeLayer.DefineConst("sizeX", nx[0] * blocknx[0]);
-      spongeLayer.DefineConst("sizeSP", sizeSP*blocknx[0]);
-
-      Grid3DPtr ogrid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(1000, 1000, 10000000));
-      rSch->addSchedule(100, 47000, 47100);
-      RestartPostprocessor rp(ogrid, rSch, comm, pathname, RestartPostprocessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-      bool restart;
-
-      if (firststart)
-      {
-
-         if (myid == 0) UBLOG(logINFO, "Neustart..");
-         restart = false;
-       
-         Grid3DPtr ngrid(new Grid3D(comm));
-         //////////////////////////////////////////////////////////////////////////
-         //Platte
-         GbTriFaceMesh3DPtr plate(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(PlatteFilename, "Netz"));
-         if (myid == 0) GbSystem3D::writeGeoObject(plate.get(), pathname + "/geo/platte", WbWriterVtkXmlBinary::getInstance());
-         //////////////////////////////////////////////////////////////////////////
-         // Zackenband
-         //////////////////////////////////////////////////////////////////////////
-         GbTriFaceMesh3DPtr meshBand1(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand"));
-         meshBand1->translate(5.0, -2.86, -14.717);
-         meshBand1->rotate(0.0, -0.5, 0.0);
-         if (myid == 0) GbSystem3D::writeGeoObject(meshBand1.get(), pathname + "/geo/Band1", WbWriterVtkXmlASCII::getInstance());
-         // Zackenband2
-         GbTriFaceMesh3DPtr meshBand2(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand2"));
-         meshBand2->translate(5.0, -7.86, -14.717);
-         meshBand2->rotate(0.0, -0.5, 0.0);
-         if (myid == 0) GbSystem3D::writeGeoObject(meshBand2.get(), pathname + "/geo/Band2", WbWriterVtkXmlASCII::getInstance());
-         // Zackenband3
-         GbTriFaceMesh3DPtr meshBand3(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand3"));
-         meshBand3->translate(5.0, -2.86, -14.417); //+0.3
-         meshBand3->rotate(0.0, -0.5, 0.0);
-         if (myid == 0) GbSystem3D::writeGeoObject(meshBand3.get(), pathname + "/geo/Band3", WbWriterVtkXmlASCII::getInstance());
-         // Zackenband4
-         GbTriFaceMesh3DPtr meshBand4(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(ZckbndFilename, "NetzBand4"));
-         meshBand4->translate(5.0, -7.86, -14.417);
-         meshBand4->rotate(0.0, -0.5, 0.0);
-         if (myid == 0) GbSystem3D::writeGeoObject(meshBand4.get(), pathname + "/geo/Band4", WbWriterVtkXmlASCII::getInstance());
-         //////////////////////////////////////////////////////////////////////////
-
-         double blockLengthx1 = blocknx[0] * cdx; //geowerte
-         double blockLengthx2 = blockLengthx1;
-         double blockLengthx3 = blockLengthx1;
-
-         double geoLength[] = { nx[0] * blockLengthx1, nx[1] * blockLengthx2, nx[2] * blockLengthx3 };
-
-         double originX1 = plate->getX1Minimum() - plate->getLengthX1() / 4.0;
-         double originX2 = plate->getX2Minimum();
-         double originX3 = plate->getX3Minimum() - 299.5;
-
-
-         bool periodicx1 = false;
-         bool periodicx2 = true;
-         bool periodicx3 = false;
-
-         //bounding box
-         double g_minX1 = originX1;
-         double g_minX2 = originX2;
-         double g_minX3 = originX3;
-
-         double g_maxX1 = originX1 + geoLength[0];
-         double g_maxX2 = originX2 + geoLength[1];
-         double g_maxX3 = originX3 + geoLength[2];;
-
-
-         //set grid
-         ngrid->setDeltaX(cdx);
-         ngrid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-         ngrid->setPeriodicX1(periodicx1);
-         ngrid->setPeriodicX2(periodicx2);
-         ngrid->setPeriodicX3(periodicx3);
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         gridCube->setCenterCoordinates(gridCube->getX1Centroid(), meshBand1->getX2Centroid(), gridCube->getX3Centroid());
-         if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         originX2 = gridCube->getX2Minimum();
-         g_minX2 = originX2;
-         g_maxX2 = originX2 + geoLength[1];
-
-         //Grid3DPtr hgrid(ngrid);
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         ngrid->accept(genBlocks);
-
-         //hgrid->setCoordinateTransformator(ngrid->getCoordinateTransformator());
-
-
-         //////////////////////////////////////////////////////////////////////////
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* Parameters                            *");
-            UBLOG(logINFO, "* Re            =" << Re);
-            UBLOG(logINFO, "* nuLB          =" << nuLB);
-            UBLOG(logINFO, "* uLB           =" << uLB);
-            UBLOG(logINFO, "* cdx           =" << cdx);
-            UBLOG(logINFO, "* fdx           =" << fdx);
-            double Hzb = 0.6 / fdx;
-            UBLOG(logINFO, "* Height of Zackenband =" << Hzb);
-            UBLOG(logINFO, "* Re on Zackenband =" << (uLB*Hzb) / (nuLB*double(1 << refineLevel)));
-            UBLOG(logINFO, "* nx1/2/3       =" << nx[0] << "/" << nx[1] << "/" << nx[2]);
-            UBLOG(logINFO, "* blocknx1/2/3  =" << blocknx[0] << "/" << blocknx[1] << "/" << blocknx[2]);
-            UBLOG(logINFO, "* x1Periodic    =" << periodicx1);
-            UBLOG(logINFO, "* x2Periodic    =" << periodicx2);
-            UBLOG(logINFO, "* x3Periodic    =" << periodicx3);
-            UBLOG(logINFO, "* number of levels  =" << refineLevel + 1);
-            UBLOG(logINFO, "* path          =" << pathname);
-
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* number of threads    =" << numOfThreads);
-            UBLOG(logINFO, "* number of processes  =" << comm->getNumberOfProcesses());
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "*****************************************");
-         }
-         //////////////////////////////////////////////////////////////////////////
-
-
-         //////////////////////////////////////////////////////////////////////////
-         //refinement
-         GbCuboid3DPtr refinePlatteBox(new GbCuboid3D(plate->getX1Minimum() - 1.0, plate->getX2Minimum(), plate->getX3Minimum() + (plate->getX3Maximum() - plate->getX3Minimum()) / 2.0,
-            plate->getX1Maximum() + 40.0, plate->getX2Maximum(), plate->getX3Maximum() + 2.0));
-         if (myid == 0) GbSystem3D::writeGeoObject(refinePlatteBox.get(), pathname + "/geo/refinePlatteBox", WbWriterVtkXmlASCII::getInstance());
-
-         //inlay patch
-         GbCuboid3DPtr refineInlayBox(new GbCuboid3D(plate->getX1Maximum() - 104.0, plate->getX2Minimum(), plate->getX3Minimum() + (plate->getX3Maximum() - plate->getX3Minimum()) / 2.0,
-            plate->getX1Maximum() + 1.0, plate->getX2Maximum(), plate->getX3Maximum() + 1.0));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineInlayBox.get(), pathname + "/geo/refineInlayBox", WbWriterVtkXmlASCII::getInstance());
-
-         if (refineLevel > 0)
-         {
-            if (myid == 0) UBLOG(logINFO, "Refinement - start");
-            RefineCrossAndInsideGbObjectHelper refineHelper(ngrid, refineLevel);
-            refineHelper.addGbObject(refinePlatteBox, refineLevel - 1);
-            refineHelper.addGbObject(refineInlayBox, refineLevel);
-
-            refineHelper.refine();
-            if (myid == 0) UBLOG(logINFO, "Refinement - end");
-         }
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Write blocks - start");
-            BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(ngrid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-            ppblocks->update(ppblockc++);
-            UBLOG(logINFO, "Write blocks - end");
-         }
-
-
-
-         {
-
-            ////walls
-            GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1 - blockLengthx1, g_minX2 - blockLengthx1, g_minX3 - blockLengthx1, g_maxX1 + blockLengthx1, g_maxX2 + blockLengthx1, g_minX3));
-            if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname + "/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-            GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1 - blockLengthx1, g_minX2 - blockLengthx1, g_maxX3, g_maxX1 + blockLengthx1, g_maxX2 + blockLengthx1, g_maxX3 + blockLengthx1));
-            if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname + "/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-            //walls
-            int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-            D3Q27BoundaryConditionAdapterPtr slip(new D3Q27SlipBCAdapter(bbOption));
-            D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, ngrid, slip, Interactor3D::SOLID));
-            D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, ngrid, slip, Interactor3D::SOLID));
-
-            /////////////////////////////////////////////////
-            ///interactoren
-            int bbOption1 = 1; //0=simple Bounce Back, 1=quadr. BB
-            D3Q27BoundaryConditionAdapterPtr noSlip(new D3Q27NoSlipBCAdapter(bbOption1));
-            //D3Q27TriFaceMeshInteractorPtr triPlateInteractor(new D3Q27TriFaceMeshInteractor(plate, ngrid, noSlip, Interactor3D::SOLID, Interactor3D::POINTS));
-            D3Q27TriFaceMeshInteractorPtr triPlateInteractor(new D3Q27TriFaceMeshInteractor(plate, ngrid, noSlip, Interactor3D::SOLID, Interactor3D::SIMPLE));
-            D3Q27TriFaceMeshInteractorPtr triBand1Interactor(new D3Q27TriFaceMeshInteractor(meshBand1, ngrid, noSlip, Interactor3D::SOLID, Interactor3D::EDGES));
-            D3Q27TriFaceMeshInteractorPtr triBand2Interactor(new D3Q27TriFaceMeshInteractor(meshBand2, ngrid, noSlip, Interactor3D::SOLID, Interactor3D::EDGES));
-            D3Q27TriFaceMeshInteractorPtr triBand3Interactor(new D3Q27TriFaceMeshInteractor(meshBand3, ngrid, noSlip, Interactor3D::SOLID, Interactor3D::EDGES));
-            D3Q27TriFaceMeshInteractorPtr triBand4Interactor(new D3Q27TriFaceMeshInteractor(meshBand4, ngrid, noSlip, Interactor3D::SOLID, Interactor3D::EDGES));
-
-            //inflow
-            GbCuboid3DPtr velBCCuboid(new GbCuboid3D(originX1 - blockLengthx1, originX2 - blockLengthx1, originX3 - blockLengthx1,
-               originX1, originX2 + geoLength[1] + blockLengthx1, originX3 + geoLength[2] + blockLengthx1));
-            if (myid == 0) GbSystem3D::writeGeoObject(velBCCuboid.get(), pathname + "/geo/velBCCuboid", WbWriterVtkXmlASCII::getInstance());
-            D3Q27InteractorPtr velBCInteractor(new D3Q27Interactor(velBCCuboid, ngrid, Interactor3D::SOLID));
-
-            //inflow
-            double raiseVelSteps = 0;
-            vector<D3Q27BCFunction> velcX1BCs, dummy;
-
-            mu::Parser inflowProfile;
-            inflowProfile.SetExpr("uLB");
-            inflowProfile.DefineConst("uLB", uLB);
-            velcX1BCs.push_back(D3Q27BCFunction(inflowProfile, raiseVelSteps, D3Q27BCFunction::INFCONST));
-
-            D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter(velcX1BCs, dummy, dummy));
-            velBCInteractor->addBCAdapter(velBCAdapter);
-
-            //outflow
-            GbCuboid3DPtr densCuboid(new GbCuboid3D(originX1 + geoLength[0], originX2 - blockLengthx1, originX3 - blockLengthx1,
-               originX1 + geoLength[0] + blockLengthx1, originX2 + geoLength[1] + blockLengthx1, originX3 + geoLength[2] + blockLengthx1));
-            if (myid == 0) GbSystem3D::writeGeoObject(densCuboid.get(), pathname + "/geo/densCuboid", WbWriterVtkXmlASCII::getInstance());
-            D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-            D3Q27InteractorPtr densInteractor(new D3Q27Interactor(densCuboid, ngrid, denBCAdapter, Interactor3D::SOLID));
-
- 
-            ///////////////////////////////////////////////////
-            if (myid == 0) UBLOG(logINFO, "deleteExistBlocks - start");
-            deleteExistBlocks(ngrid, ogrid);
-            if (myid == 0) UBLOG(logINFO, "deleteExistBlocks - end");
-
-            if (myid == 0)
-            {
-               UBLOG(logINFO, "Write blocks - start");
-               BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(ngrid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-               ppblocks->update(ppblockc++);
-               UBLOG(logINFO, "Write blocks - end");
-            }
-
-            ////////////////////////////////////////////
-            //METIS
-            Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-
-            ////////////////////////////////////////////
-            /////delete solid blocks
-            if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-            InteractorsHelper intHelper(ngrid, metisVisitor);
-            intHelper.addInteractor(triPlateInteractor);
-            intHelper.addInteractor(triBand1Interactor);
-            intHelper.addInteractor(triBand2Interactor);
-            intHelper.addInteractor(triBand3Interactor);
-            intHelper.addInteractor(triBand4Interactor);
-            intHelper.addInteractor(addWallZminInt);
-            intHelper.addInteractor(addWallZmaxInt);
-            intHelper.addInteractor(densInteractor);
-            intHelper.addInteractor(velBCInteractor);
-            intHelper.selectBlocks();
-            if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-            //////////////////////////////////////
-            if (myid == 0)
-            {
-               UBLOG(logINFO, "Write blocks - start");
-               BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(ngrid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-               ppblocks->update(ppblockc++);
-               UBLOG(logINFO, "Write blocks - end");
-            }
-            ////////////////////////////////////////////////////////
-
-            //addExistBlocks(ngrid, ogrid, hgrid);
-
-            ////////////////////////////////////////////////////////
-            unsigned long nob = ogrid->getNumberOfBlocks();
-            unsigned long nod = nob * blocknx[0] * blocknx[1] * blocknx[2];
-            unsigned long nod_real = nob * (blocknx[0] + 3)*(blocknx[1] + 3)*(blocknx[2] + 3);
-            unsigned long nodb = (blocknx[0]) * (blocknx[1]) * (blocknx[2]);
-
-            double needMemAll = double(nod_real*(27 * sizeof(double) + sizeof(int)));
-            double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-            double nup = 0;
-
-            if (myid == 0)
-            {
-               UBLOG(logINFO, "Number of blocks = " << nob);
-               UBLOG(logINFO, "Number of nodes  = " << nod);
-               int minInitLevel = ngrid->getCoarsestInitializedLevel();
-               int maxInitLevel = ngrid->getFinestInitializedLevel();
-               for (int level = minInitLevel; level <= maxInitLevel; level++)
-               {
-                  int nobl = ngrid->getNumberOfBlocks(level);
-                  UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-                  UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*nodb);
-                  nup += nobl*nodb*double(1 << level);
-               }
-               UBLOG(logINFO, "Hypothetically time for calculation step for 120 nodes  = " << nup / 6.0e5 / (120 * 8) << " s");
-               UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-               UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-               UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-               UBLOG(logINFO, "Available memory per node/8.0 = " << (availMem / 8.0) << " bytes");
-            }
-
-
-            //deleteNotExistBlocks(ngrid, ogrid);
-
-            //deleteExistBlocks(ngrid, ogrid);
-
-            //set kernel for new blocks
-            //////////////////////////////
-            LBMKernel3DPtr kernel;
-            //with sponge layer
-            kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLBWithSpongeLayer(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-            kernel->setWithSpongeLayer(true);
-            kernel->setSpongeLayer(spongeLayer);
-
-            BCProcessorPtr bcProc(new D3Q27ETForThinWallBCProcessor());
-            kernel->setBCProcessor(bcProc);
-
-            //setKernel(ogrid, kernel, nuLB);
-
-            SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-            ngrid->accept(kernelVisitor);
-            //////////////////////////////////
-
-            //initialization of decompositions
-            D3Q27ETInitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-            //double aVuLB = 0.1;
-            initVisitor.setVx1(uLB);
-            ngrid->accept(initVisitor);
-
-            int maxblock = Block3D::getMaxGlobalID();
-            if (myid == 0) UBLOG(logINFO, "maxblock = " << maxblock);
-
-            reindexBlocks(ngrid);
-
-            moveBlocks(ngrid, ogrid);
-
-            setInterpolationFlag(ogrid);
-
-            removeBCInformation(ogrid);
-
-            //set connectors
-            D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-            D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-            ogrid->accept(setConnsVisitor);
-
-            ////////////////////////////////////
-            ////undef nodes
-            if (refineLevel > 0)
-            {
-               D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-               ogrid->accept(undefNodesVisitor);
-            }
-
-
-            D3Q27InteractorPtr addWallZminInt1(new D3Q27Interactor(addWallZmin, ogrid, slip, Interactor3D::SOLID));
-            D3Q27InteractorPtr addWallZmaxInt1(new D3Q27Interactor(addWallZmax, ogrid, slip, Interactor3D::SOLID));
-            D3Q27TriFaceMeshInteractorPtr triPlateInteractor1(new D3Q27TriFaceMeshInteractor(plate, ogrid, noSlip, Interactor3D::SOLID, Interactor3D::SIMPLE));
-            D3Q27TriFaceMeshInteractorPtr triBand1Interactor1(new D3Q27TriFaceMeshInteractor(meshBand1, ogrid, noSlip, Interactor3D::SOLID, Interactor3D::EDGES));
-            D3Q27TriFaceMeshInteractorPtr triBand2Interactor1(new D3Q27TriFaceMeshInteractor(meshBand2, ogrid, noSlip, Interactor3D::SOLID, Interactor3D::EDGES));
-            D3Q27TriFaceMeshInteractorPtr triBand3Interactor1(new D3Q27TriFaceMeshInteractor(meshBand3, ogrid, noSlip, Interactor3D::SOLID, Interactor3D::EDGES));
-            D3Q27TriFaceMeshInteractorPtr triBand4Interactor1(new D3Q27TriFaceMeshInteractor(meshBand4, ogrid, noSlip, Interactor3D::SOLID, Interactor3D::EDGES));
-            D3Q27InteractorPtr velBCInteractor1(new D3Q27Interactor(velBCCuboid, ogrid, Interactor3D::SOLID));
-            velBCInteractor1->addBCAdapter(velBCAdapter);
-            D3Q27InteractorPtr densInteractor1(new D3Q27Interactor(densCuboid, ogrid, denBCAdapter, Interactor3D::SOLID));
-
-            {SetSolidOrTransBlockVisitor v2(addWallZminInt1, SetSolidOrTransBlockVisitor::TRANS);
-            ogrid->accept(v2); }
-            {SetSolidOrTransBlockVisitor v2(addWallZmaxInt1, SetSolidOrTransBlockVisitor::TRANS);
-            ogrid->accept(v2); }
-            {SetSolidOrTransBlockVisitor v2(triPlateInteractor1, SetSolidOrTransBlockVisitor::TRANS);
-            ogrid->accept(v2); }
-            {SetSolidOrTransBlockVisitor v2(triBand1Interactor1, SetSolidOrTransBlockVisitor::TRANS);
-            ogrid->accept(v2); }
-            {SetSolidOrTransBlockVisitor v2(triBand2Interactor1, SetSolidOrTransBlockVisitor::TRANS);
-            ogrid->accept(v2); }
-            {SetSolidOrTransBlockVisitor v2(triBand3Interactor1, SetSolidOrTransBlockVisitor::TRANS);
-            ogrid->accept(v2); }
-            {SetSolidOrTransBlockVisitor v2(triBand4Interactor1, SetSolidOrTransBlockVisitor::TRANS);
-            ogrid->accept(v2); }
-            {SetSolidOrTransBlockVisitor v2(velBCInteractor1, SetSolidOrTransBlockVisitor::TRANS);
-            ogrid->accept(v2); }
-            {SetSolidOrTransBlockVisitor v2(densInteractor1, SetSolidOrTransBlockVisitor::TRANS);
-            ogrid->accept(v2); }
-
-            addWallZminInt1->initInteractor();
-            addWallZmaxInt1->initInteractor();
-            triPlateInteractor1->initInteractor();
-            triBand1Interactor1->initInteractor();
-            triBand2Interactor1->initInteractor();
-            triBand3Interactor1->initInteractor();
-            triBand4Interactor1->initInteractor();
-            velBCInteractor1->initInteractor();
-            densInteractor1->initInteractor();
-
-
-            //intHelper.setBC();
-         }
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Write blocks - start");
-            BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(ogrid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-            ppblocks->update(ppblockc++);
-            UBLOG(logINFO, "Write blocks - end");
-         }
-
-         {
-            UbSchedulerPtr geoSch(new UbScheduler(1));
-            D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-               new D3Q27MacroscopicQuantitiesPostprocessor(ogrid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(),
-               unitConverter, true));
-            ppgeo->update(0);
-            ppgeo.reset();
-            geoSch.reset();
-         }
-
-         //////////////////////////////////////////////////////////////////////////
-         //porous inlay
-         {
-            string pmFilename = pathGeo + "/CT-2014-039.raw";
-            int pmNX1 = 1333;  //abmessung einzelbild in x-richtung
-            int pmNX2 = 463; //abmessung einzelbild in y richtung
-            int pmNX3 = 1333; //anzahl der bilder
-            float lthreshold = 27686.97;
-            float uthreshold = 65535.0;
-
-            GbVoxelMatrix3DPtr pmMesh(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-            pmMesh->readMatrixFromRawFile<unsigned short>(pmFilename, GbVoxelMatrix3D::LittleEndian);
-
-            double scaleFactor = 0.001;
-            double delta = 3.75*scaleFactor;
-            pmMesh->setVoxelMatrixDelta(delta, delta, delta);
-            pmMesh->rotate90aroundX();
-            pmMesh->rotate90aroundX();
-            pmMesh->rotate90aroundX();
-
-            double inlayXmin = plate->getX1Maximum() - 5.0;//995.0;
-            double inlayYmin = gridCube->getX2Minimum();//180.0;
-            double inlayZmin = 8.84 + fdx;//8.73;
-
-            //pmMesh->setVoxelMatrixMininum(inlayXmin, inlayYmin, inlayZmin);
-            //if(myid == 0) pmMesh->writeToLegacyVTKBinary(pathname+"/geo/pmMesh");
-
-            int i = 0;
-            for (int y = 0; y < 40; y += 10)
-               for (int x = 0; x < 100; x += 10)
-               {
-                  if (myid == 0) UBLOG(logINFO, "inlay # " << i);
-                  pmMesh->setVoxelMatrixMininum(inlayXmin - (double)x, inlayYmin + (double)y, inlayZmin);
-                  inlay(pmMesh, pathname, myid, i, ogrid);
-                  i++;
-
-                  if (myid == 0) UBLOG(logINFO, "inlay # " << i);
-                  pmMesh->setVoxelMatrixMininum(inlayXmin - (double)(x + 5), inlayYmin + (double)y, inlayZmin);
-                  pmMesh->mirrorX();
-                  inlay(pmMesh, pathname, myid, i, ogrid);
-                  i++;
-
-                  if (myid == 0) UBLOG(logINFO, "inlay # " << i);
-                  pmMesh->setVoxelMatrixMininum(inlayXmin - (double)(x + 5), inlayYmin + (double)(y + 5), inlayZmin);
-                  pmMesh->mirrorY();
-                  inlay(pmMesh, pathname, myid, i, ogrid);
-                  i++;
-
-                  if (myid == 0) UBLOG(logINFO, "inlay # " << i);
-                  pmMesh->setVoxelMatrixMininum(inlayXmin - (double)x, inlayYmin + (double)(y + 5), inlayZmin);
-                  pmMesh->mirrorX();
-                  inlay(pmMesh, pathname, myid, i, ogrid);
-                  pmMesh->mirrorY();
-                  i++;
-               }
-
-            if (myid == 0)
-            {
-               UBLOG(logINFO, "mit VoxelMatrix");
-               UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-               UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-               UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-            }
-         }
-         //////////////////////////////////////////////////////////////////////////
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Write blocks - start");
-            BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(ogrid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-            ppblocks->update(ppblockc++);
-            UBLOG(logINFO, "Write blocks - end");
-         }
-
-         ////initialization of decompositions
-         //D3Q27ETInitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-         ////initVisitor.setVx1(uLB);
-         //hgrid->accept(initVisitor);
-
-         
-         //Postprozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(ogrid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(),
-            unitConverter, true));
-         ppgeo->update(1);
-         ppgeo.reset();
-         geoSch.reset();
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Write blocks - start");
-            BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(ogrid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-            ppblocks->update(ppblockc++);
-            UBLOG(logINFO, "Write blocks - end");
-         }
-
-
-         //domain decomposition for threads
-         if (numOfThreads > 1)
-         {
-            PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-            ogrid->accept(pqPartVisitor);
-         }
-
-         SetSpongeLayerBlockVisitor ssp(spongeLayer);
-         ogrid->accept(ssp);
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         restart = true;
-
-         ////////////////////////////////////////////////////////////////////////////
-         //change viscosity
-         //Re = 1e6;
-         //nuLB = (uLB*(lReal / cdx)) / Re;
-         //if (myid == 0) UBLOG(logINFO, "nuLB =" << nuLB);
-
-         //int gridRank = grid->getRank();
-         //int minInitLevel = grid->getCoarsestInitializedLevel();
-         //int maxInitLevel = grid->getFinestInitializedLevel();
-
-         //std::vector<std::vector<Block3DPtr> > blockVector;
-         //blockVector.resize(maxInitLevel + 1);
-
-         //for (int level = minInitLevel; level <= maxInitLevel; level++)
-         //{
-         //   grid->getBlocks(level, gridRank, true, blockVector[level]);
-
-         //   BOOST_FOREACH(Block3DPtr block, blockVector[level])
-         //   {
-         //      LBMReal collFactor = LBMSystem::calcCollisionFactor(nuLB, block->getLevel());
-         //      block->getKernel()->setCollisionFactor(collFactor);
-         //   }
-         //}
-         ////////////////////////////////////////////////////////////////////////////
-
-         //domain decomposition for threads
-         if (numOfThreads > 1)
-         {
-            PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-            ogrid->accept(pqPartVisitor);
-         }
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         ogrid->accept(setConnsVisitor);
-         SetSpongeLayerBlockVisitor ssp(spongeLayer);
-         ogrid->accept(ssp);
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-      }
-      UbSchedulerPtr visSch(new UbScheduler());
-      //visSch->addSchedule(1,0,10);
-      visSch->addSchedule(100, 100, 1000);
-      //visSch->addSchedule(1000,1000,5000);
-      //visSch->addSchedule(5000,5000,100000);
-      //visSch->addSchedule(100000,100000,10000000);
-
-      visSch->addSchedule(1000, 1000, 10000000);
-      visSch->addSchedule(1, 47100, 47100);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(ogrid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), unitConverter);
-
-      double startStep = 47000;
-      double startStep2= 47500;
-
-      if(ogrid->getTimeStep() >= startStep2) startStep = startStep2;
-
-      UbSchedulerPtr resSchRMS(new UbScheduler());
-      resSchRMS->addSchedule(1000000, startStep, 10000000);
-      resSchRMS->addSchedule(1000000, startStep2, 10000000);
-      UbSchedulerPtr resSchMeans(new UbScheduler());
-      resSchMeans->addSchedule(1000000, startStep, 10000000);
-      resSchMeans->addSchedule(1000000, startStep2, 10000000);
-      UbSchedulerPtr stepAvSch(new UbScheduler());
-      int averageInterval = 100;
-
-      stepAvSch->addSchedule(averageInterval, 0, 10000000);
-      AverageValuesPostprocessor Avpp(ogrid, pathname, WbWriterVtkXmlBinary::getInstance(), visSch/*wann wird rausgeschrieben*/,
-         stepAvSch/*wann wird gemittelt*/, resSchMeans, resSchRMS/*wann wird resettet*/, restart);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 30));
-      nupsSch->addSchedule(500, 500, 1e6);
-      NUPSCounterPostprocessor npr(ogrid, nupsSch, numOfThreads, comm);
-
-      UbSchedulerPtr emSch(new UbScheduler(10));
-      EmergencyExitPostprocessor empr(ogrid, emSch, pathname, RestartPostprocessorPtr(&rp), comm);
-
-      if (myid == 0)
-      {
-         UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      double endTime = 100000001;
-      CalculationManagerPtr calculation(new CalculationManager(ogrid, numOfThreads, endTime, visSch));
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if (argc == 1)
-   {
-      cout << "Command line argument isn't specified!" << endl;
-      cout << "plate2 <machine name>" << endl;
-      return 1;
-   }
-   run(argv[1], true);
-
-   return 0;
-}
-
diff --git a/apps/cpu/reefer/CMakeLists.txt b/apps/cpu/reefer/CMakeLists.txt
deleted file mode 100644
index 116a067c86dfc847d74034b01ee30ccfff55225f..0000000000000000000000000000000000000000
--- a/apps/cpu/reefer/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(reefer)
-
-INCLUDE(${SOURCE_ROOT}/core/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES core)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(reefer BINARY)
diff --git a/apps/cpu/reefer/reefer.cpp b/apps/cpu/reefer/reefer.cpp
deleted file mode 100644
index 74bfc3d2d600be085faffc73cd68eca8d09fc698..0000000000000000000000000000000000000000
--- a/apps/cpu/reefer/reefer.cpp
+++ /dev/null
@@ -1,489 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "numerics/geometry3d/CoordinateTransformation3D.h"
-#include "Grid3D.h"
-#include "GenBlocksGridVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include <numerics/geometry3d/GbSphere3D.h>
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "RefineInterGbObjectsVisitor.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "MPICommunicator.h"
-#include "D3Q27ETBCProcessor.h"
-#include "SimulationParameters.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "D3Q27SetConnectorsBlockVisitor.h"
-#include "NullCommunicator.h"
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "CalculationManager.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27VelocityBCAdapter.h"
-#include "D3Q27DensityBCAdapter.h"
-#include "D3Q27BoundaryConditionAdapter.h"
-#include "StringUtil.hpp"
-#include "D3Q27OffsetInterpolationProcessor.h"
-#include "D3Q27CompactInterpolationProcessor.h"
-#include "SyncBcBlockVisitor.h"
-#include "numerics/geometry3d/creator/GbTriFaceMesh3DCreator.h"
-#include "numerics/geometry3d/GbTriFaceMesh3D.h"
-#include "D3Q27TriFaceMeshInteractor.h"
-#include "MathUtil.hpp"
-#include "SolidBlocksHelper.h"
-#include "LBMKernelETD3Q27CascadedTI.h"
-#include "TurbulenceIntensityPostprocessor.h"
-#include "RestartPostprocessor.h"
-
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   try
-   {
-      string pathname = "c:/temp/reefer/out";
-      string pathGeo = "c:/Data/reefer";
-
-      //string pathname = "/work/koskuche/scratch/reefer2/out";
-      //string pathGeo = "/home/koskuche/data/reefer/new";
-
-      //string pathname = "/home/kucher/temp/reefer/out";
-      //string pathGeo = "/home/kucher/data/reefer/new";
-
-      int numOfThreads = 2;
-      
-      CommunicatorPtr comm(new MPICommunicator());
-      int myid = comm->getProcessID();
-
-      //if(myid ==0)
-      //{
-      //   stringstream logFilename;
-      //   logFilename <<  "/work/koskuche/scratch/reefer2/logfile.log";
-      //   UbLog::output_policy::setStream(logFilename.str());
-      //}
-
-      //const double dx = 13.6;
-      const double dx = 2.0;
-      double refLentgthWorld = dx/1000.0; //from mm to m
-      double refLentgthLB = 1.0;
-      LBMUnitConverterPtr uconv = LBMUnitConverterPtr(new LBMUnitConverter(refLentgthWorld, LBMUnitConverter::AIR_20C, refLentgthLB));
-      LBMReal uSI = 10;//m/s
-      LBMReal uLB = uSI * uconv->getFactorVelocityWToLb();
-      LBMReal rhoLB = 1.0;
-      LBMReal nueSI = 1.5e-5;
-      LBMReal nueLB = nueSI * uconv->getFactorViscosityWToLb();//(uLB*l)/Re;
-
-      Grid3DPtr grid(new Grid3D());
-      UbSchedulerPtr rSch(new UbScheduler(1500,5000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY);
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if(cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-
-         grid = rp.restart(UbSystem::stringTo<int>(opt));
-
-         LBMReal nueLB = 1.5e-3;
-         
-         SimulationParametersPtr param = SimulationParameters::getInstanz();
-         param->setCollisionModelType(SimulationParameters::COMPRESSIBLE);
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-      }
-      else
-      {
-      const int baseLevel = 0;
-      const int refineLevel = 0;
-      //////////////////////////////////////////////////////////////////////////
-      // Geometries
-      //////////////////////////////////////////////////////////////////////////
-      //container
-      GbTriFaceMesh3DPtr geoContainer (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo +"/Containerascii.stl","geoContainer"));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoContainer.get(), pathname+"/geo/geoContainer", WbWriterVtkXmlASCII::getInstance());
-      //cargo
-      //GbTriFaceMesh3DPtr geoCargo (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo + "/Kisten_fuer_Palettenascii.stl","geoCargo"));
-      GbTriFaceMesh3DPtr geoCargo (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo + "/Kistenascii.stl","geoCargo"));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoCargo.get(), pathname+"/geo/geoCargo", WbWriterVtkXmlASCII::getInstance());
-      //palette
-      //GbTriFaceMesh3DPtr geoPalette (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo + "/Palettenascii.stl","geoPalette"));
-      //if(myid == 0) GbSystem3D::writeGeoObject(geoPalette.get(), pathname+"/geoPalette", WbWriterVtkXmlASCII::getInstance());
-      //reefer
-      GbTriFaceMesh3DPtr geoBlower (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo + "/Solidblockascii.stl","geoReefer"));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoBlower.get(), pathname+"/geo/geoBlower", WbWriterVtkXmlASCII::getInstance());
-      //T floor
-      GbTriFaceMesh3DPtr geoTFloor (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo + "/T-Floorascii.stl","geoTFloor"));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoTFloor.get(), pathname+"/geo/geoTFloor", WbWriterVtkXmlASCII::getInstance());
-
-      //bounding box
-      double g_minX1 = geoContainer->getX1Minimum();
-      double g_minX2 = geoContainer->getX2Minimum();
-      double g_minX3 = geoContainer->getX3Minimum();
-
-      double g_maxX1 = geoContainer->getX1Maximum();
-      double g_maxX2 = geoContainer->getX2Maximum();
-      double g_maxX3 = geoContainer->getX3Maximum();
-
-      const int nodesPerBlock = 10;
-      //const double dx = 1.7;
-      //const double dx = 13.6;
-      const double blockLength = double(nodesPerBlock)*dx;
-
-      const double gridOriginX1 = g_minX1;
-      const double gridOriginX2 = g_minX2;
-      const double gridOriginX3 = g_minX3;
-
-      //add wall X
-      GbCuboid3DPtr addWallXmax (new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-      //GbCuboid3DPtr addWallXmax (new GbCuboid3D(geoBlower->getX1Maximum()+geoBlower->getLengthX1(), g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallXmax.get(), pathname+"/geo/addWallXmax", WbWriterVtkXmlASCII::getInstance());
-      //add wall Y
-      GbCuboid3DPtr addWallYmax (new GbCuboid3D(g_minX1-blockLength, geoBlower->getX2Maximum(), g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-      //add wall Z
-      GbCuboid3DPtr addWallZmax (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-      //add wall X
-      GbCuboid3DPtr addWallXmin (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, geoBlower->getX1Minimum(), g_maxX2+blockLength, g_maxX3+blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallXmin.get(), pathname+"/geo/addWallXmin", WbWriterVtkXmlASCII::getInstance());
-      //add wall Y
-      GbCuboid3DPtr addWallYmin (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, geoBlower->getX2Minimum(), g_maxX3+blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-      //add wall Z
-      GbCuboid3DPtr addWallZmin (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, geoTFloor->getX3Minimum()));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-      //add wall for blower
-      GbCuboid3DPtr addWallBlower (new GbCuboid3D(geoBlower->getX1Minimum()-3.0*blockLength, geoBlower->getX2Minimum()-3.0*blockLength, geoBlower->getX3Minimum()+4.0*dx, 
-                                                  geoBlower->getX1Maximum(), geoBlower->getX2Maximum()+3.0*blockLength, geoBlower->getX3Maximum()-4.0*dx));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallBlower.get(), pathname+"/geo/addWallBlower", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallBlowerXmin (new GbCuboid3D(geoBlower->getX1Minimum(), geoBlower->getX2Minimum(), geoBlower->getX3Minimum(), 
-                                       geoBlower->getX1Minimum()+2.0*dx, geoBlower->getX2Maximum(), geoBlower->getX3Maximum()));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallBlowerXmin.get(), pathname+"/geo/addWallBlowerXmin", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallBlowerXmax (new GbCuboid3D(geoBlower->getX1Maximum()-2.0*dx, geoBlower->getX2Minimum(), geoBlower->getX3Minimum(), 
-                                                      geoBlower->getX1Maximum(), geoBlower->getX2Maximum(), geoBlower->getX3Maximum()));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallBlowerXmax.get(), pathname+"/geo/addWallBlowerXmax", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallBlowerYmin (new GbCuboid3D(geoBlower->getX1Minimum(), geoBlower->getX2Minimum(), geoBlower->getX3Minimum(), 
-                                                      geoBlower->getX1Maximum(), geoBlower->getX2Minimum()+2.0*dx, geoBlower->getX3Maximum()));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallBlowerYmin.get(), pathname+"/geo/addWallBlowerYmin", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallBlowerYmax (new GbCuboid3D(geoBlower->getX1Minimum()-2.0*dx, geoBlower->getX2Maximum()-2.0*dx, geoBlower->getX3Minimum(), 
-                                                      geoBlower->getX1Maximum(), geoBlower->getX2Maximum(), geoBlower->getX3Maximum()));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallBlowerYmax.get(), pathname+"/geo/addWallBlowerYmax", WbWriterVtkXmlASCII::getInstance());
-
-      //inflow
-      GbCuboid3DPtr geoInflow (new GbCuboid3D(geoBlower->getX1Minimum()+dx, geoBlower->getX2Minimum()+dx, geoBlower->getX3Minimum()+2.0*dx, 
-                                              geoBlower->getX1Maximum()-dx, geoBlower->getX2Maximum()-dx, geoBlower->getX3Minimum()+4.0*dx));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-      //outflow
-      GbCuboid3DPtr geoOutflow (new GbCuboid3D(geoBlower->getX1Minimum()+2.0*dx, geoBlower->getX2Minimum()+2.0*dx, geoBlower->getX3Maximum()-4.0*dx, 
-                                               geoBlower->getX1Maximum()-2.0*dx, geoBlower->getX2Maximum()-2.0*dx, geoBlower->getX3Maximum()-2.0*dx));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-      //simulation parameters
-      double lSI = g_maxX2 - g_minX2;
-      double lLB = lSI / dx;
-      //double refLentgthWorld = blockLength/1000.0; //from mm to m
-      //double refLentgthLB = double(nodesPerBlock);
-      //LBMUnitConverterPtr uconv = LBMUnitConverterPtr(new LBMUnitConverter(refLentgthWorld, LBMUnitConverter::AIR_20C, refLentgthLB));
-      //LBMReal uSI = 10;//m/s
-      //LBMReal uLB = uSI * uconv->getFactorVelocityWToLb();
-      //LBMReal rhoLB = 1.0;
-      //LBMReal nueSI = 1.5e-5;
-      //LBMReal nueLB = nueSI * uconv->getFactorViscosityWToLb();//(uLB*l)/Re;
-      //LBMReal nueLB = 1.5e-3;
-      LBMReal Re = (uLB*(420/dx))/nueLB;
-
-      if(myid ==0)
-      {
-         UBLOG(logINFO,"grid = " <<int((g_maxX1 - g_minX1)/dx)<<"x"<<int((g_maxX2 - g_minX2)/dx) << "x"<<int((g_maxX3 - g_minX3)/dx));
-         UBLOG(logINFO,"dx = " << dx);
-         UBLOG(logINFO,"nodes per block = " << nodesPerBlock);
-         UBLOG(logINFO,"block length = " << blockLength << "mm");
-         UBLOG(logINFO,"v = " << uLB );
-         UBLOG(logINFO,"rho = " << rhoLB );
-         UBLOG(logINFO,"nue = " << nueLB );
-         UBLOG(logINFO,"Re = " << Re );
-         UBLOG(logINFO,"Preprozess - start");
-      }
-
-      SimulationParametersPtr param = SimulationParameters::getInstanz();
-      param->setCollisionModelType(SimulationParameters::COMPRESSIBLE);
-      param->setRho(rhoLB);
-      param->setVelocityX(uLB);
-      param->setViscosity(nueLB);
-      
-      //set grid
-      //Grid3DPtr grid(new Grid3D());
-      grid->setDeltaX(dx);
-      grid->setBlockNX(nodesPerBlock, nodesPerBlock, nodesPerBlock);
-      
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-      GenBlocksGridVisitor genBlocks;
-      genBlocks.addGeoObject(gridCube);
-      grid->accept(genBlocks);
-
-      MetisPartitioningGridVisitor metisVisitor(numOfThreads, D3Q27System::B, comm, false);
-      grid->accept( metisVisitor );
-
-      SolidBlocksHelper sd(grid, comm);
-
-      //iteractors
-      int bbOption1 = 0; //0=simple Bounce Back, 1=quadr. BB
-      D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption1));
-
-      D3Q27TriFaceMeshInteractorPtr cargoInt( new D3Q27TriFaceMeshInteractor(geoCargo, grid, bcObst,Interactor3D::SOLID));
-      sd.addInteractor(cargoInt);
-
-      D3Q27InteractorPtr addWallBlowerInt(new D3Q27Interactor(addWallBlower, grid, bcObst,Interactor3D::SOLID));
-
-      sd.addInteractor(addWallBlowerInt);
-
-      //D3Q27TriFaceMeshInteractorPtr paletteInt( new D3Q27TriFaceMeshInteractor(geoPalette, grid, bcObst,Interactor3D::SOLID));
-      //sd.addInteractor(paletteInt);
-
-      D3Q27InteractorPtr addWallXmaxInt(new D3Q27Interactor(addWallXmax, grid, bcObst,Interactor3D::SOLID));
-      sd.addInteractor(addWallXmaxInt);
-
-      D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst,Interactor3D::SOLID));
-      sd.addInteractor(addWallYmaxInt);
-
-      D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst,Interactor3D::SOLID));
-      sd.addInteractor(addWallZmaxInt);
-
-      D3Q27InteractorPtr addWallXminInt(new D3Q27Interactor(addWallXmin, grid, bcObst,Interactor3D::SOLID));
-      sd.addInteractor(addWallXminInt);
-
-      D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst,Interactor3D::SOLID));
-      sd.addInteractor(addWallYminInt);
-
-      D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcObst,Interactor3D::SOLID));
-      sd.addInteractor(addWallZminInt);
-
-      sd.deleteSolidBlocks();
-      if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	      
-      
-      if (refineLevel > 0)
-      {
-         GbObject3DPtr refineCube1(new  GbCuboid3D(geoTFloor->getX1Minimum(), geoTFloor->getX2Minimum(), geoTFloor->getX3Minimum(), 
-            geoTFloor->getX1Maximum(), geoTFloor->getX2Maximum(), geoTFloor->getX3Maximum()));
-         GbSystem3D::writeGeoObject(refineCube1.get(),pathname + "/refineCube", WbWriterVtkXmlASCII::getInstance());
-
-         RefineCrossAndInsideGbObjectBlockVisitor refVisitor(refineCube1, baseLevel, refineLevel-1);
-         grid->accept(refVisitor);
-
-         RatioBlockVisitor ratioVisitor(refineLevel);
-         grid->accept(ratioVisitor);
-
-         RatioSmoothBlockVisitor ratioSmoothVisitor(refineLevel);
-         grid->accept(ratioSmoothVisitor);
-
-         OverlapBlockVisitor overlapVisitor(refineLevel);
-         grid->accept(overlapVisitor);
-      }
-
-      if(myid == 0) UBLOG(logINFO,"Write blocks - start");
-      grid->accept( metisVisitor );
-      if(myid == 0) grid->writeBlocks(pathname + "/blocks" + StringUtil::toString(myid), 0, WbWriterVtkXmlASCII::getInstance(), false);
-      if(myid == 0) UBLOG(logINFO,"Write blocks - end");
-
-      unsigned long nob = grid->getNumberOfBlocks();
-      unsigned long nod = nob * nodesPerBlock * nodesPerBlock *nodesPerBlock;
-      double availMem = 6.0e9;
-      double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int))*2);
-      double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"Number of blocks = " << nob);
-         UBLOG(logINFO,"Number of nodes  = " << nod);
-         UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-         UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-         UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-      }
-
-      //LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(nodesPerBlock, nodesPerBlock, nodesPerBlock));
-      LBMKernel3DPtr kernel(new LBMKernelETD3Q27CascadedTI(nodesPerBlock, nodesPerBlock, nodesPerBlock));
-      BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-      //SetKernelBlockVisitor kernelVisitor(kernel, nueLB);
-      grid->accept(kernelVisitor);
-
-      if (refineLevel > 0)
-      {
-         std::vector<int> dirs;
-         D3Q27System::getLBMDirections(dirs);
-         SetInterpolationDirsBlockVisitor interDirsVisitor(dirs);
-         grid->accept(interDirsVisitor);
-
-         D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-         grid->accept(undefNodesVisitor);
-      }
-
-      //discretization
-      //D3Q27TriFaceMeshInteractorPtr containerInt( new D3Q27TriFaceMeshInteractor(geoContainer, grid, bcObst,Interactor3D::SOLID));
-      //grid->addAndInitInteractor(containerInt);
-
-      D3Q27TriFaceMeshInteractorPtr tFloorInt( new D3Q27TriFaceMeshInteractor(geoTFloor, grid, bcObst,Interactor3D::SOLID));
-      grid->addAndInitInteractor(tFloorInt);
-
-      grid->addAndInitInteractor(addWallBlowerInt);
-      //grid->addAndInitInteractor(blowerInt);
-      grid->addAndInitInteractor(cargoInt);
-      //grid->addAndInitInteractor(paletteInt);
-      grid->addAndInitInteractor(addWallXmaxInt);
-      grid->addAndInitInteractor(addWallYmaxInt);
-      grid->addAndInitInteractor(addWallZmaxInt);
-      grid->addAndInitInteractor(addWallXminInt);
-      grid->addAndInitInteractor(addWallYminInt);
-      grid->addAndInitInteractor(addWallZminInt);
-
-      D3Q27InteractorPtr addWallBlowerXminInt(new D3Q27Interactor(addWallBlowerXmin, grid, bcObst,Interactor3D::SOLID));
-      grid->addAndInitInteractor(addWallBlowerXminInt);
-      
-      D3Q27InteractorPtr addWallBlowerXmaxInt(new D3Q27Interactor(addWallBlowerXmax, grid, bcObst,Interactor3D::SOLID));
-      grid->addAndInitInteractor(addWallBlowerXmaxInt);
-      
-      D3Q27InteractorPtr addWallBlowerYminInt(new D3Q27Interactor(addWallBlowerYmin, grid, bcObst,Interactor3D::SOLID));
-      grid->addAndInitInteractor(addWallBlowerYminInt);
-      
-      D3Q27InteractorPtr addWallBlowerYmaxInt(new D3Q27Interactor(addWallBlowerYmax, grid, bcObst,Interactor3D::SOLID));
-      grid->addAndInitInteractor(addWallBlowerYmaxInt);
-
-      //outflow
-      D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-      D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-      grid->addAndInitInteractor(outflowInt);
-
-      //inflow
-      double Cx = geoInflow->getX1Centroid();
-      double Hx = geoInflow->getLengthX1();
-      double Cy = geoInflow->getX2Centroid();
-      double Hy = geoInflow->getLengthX2();
-      mu::Parser fct = MathUtil::getDuctParaboloidZ(Cx,Hx,Cy,Hy,-uLB);
-      //mu::Parser fct;
-      //fct.SetExpr("vx3");
-      //fct.DefineConst("vx3", uLB);
-
-      D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (false, false ,true ,fct, 0, D3Q27BCFunction::INFCONST));
-      velBCAdapter->setSecondaryBcOption(2);
-      D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-      grid->addAndInitInteractor(inflowInt);
-
-      //set connectors
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-      D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-      grid->accept( setConnsVisitor );
-
-      //domain decomposition
-      PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      grid->accept(pqPartVisitor);
-
-      //initialization of decompositions
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(1.0);
-      grid->accept(initVisitor);
-
-
-      //Postrozess
-      //if(myid == 0) grid->writeBlocks(pathname + "/blocks" + StringUtil::toString(myid), 0, WbWriterVtkXmlASCII::getInstance(), false);
-
-      //std::vector< UbTupleFloat3 > nodes;
-      //std::vector< UbTupleInt2 >   lines;
-      //sphereInt->addQsLineSet(nodes, lines);
-      //WbWriterVtkXmlBinary::getInstance()->writeLines(pathname+"/qs",nodes,lines);
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-      
-      UbSchedulerPtr geoSch(new UbScheduler(1));
-      D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-           new D3Q27MacroscopicQuantitiesPostprocessor(grid, pathname + "/geo/nodes_geo", WbWriterVtkXmlBinary::getInstance(), 
-                                                       conv, geoSch, comm, true));
-      grid->doPostProcess(0);
-      ppgeo.reset();
-      geoSch.reset();
-      
-
-      if(myid == 0) UBLOG(logINFO,"Preprozess - end");      
-
-}
-      
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-      //double outTime = 50000;
-      double outTime = 500;
-      UbSchedulerPtr visSch(new UbScheduler());
-      visSch->addSchedule(1000,1000,10000);
-      visSch->addSchedule(10000,10000,100000);
-      visSch->addSchedule(100000,100000,1000000);
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, pathname + "/mq/nodes", WbWriterVtkXmlBinary::getInstance(), conv, visSch, comm);
-
-      //turbulence intensity postprocessor
-      UbSchedulerPtr tiSch(new UbScheduler());
-      tiSch->addSchedule(1000, 5000, 5000);
-      tiSch->addSchedule(10000, 50000, 50000);
-      tiSch->addSchedule(100000, 500000, 500000);
-      TurbulenceIntensityPostprocessor vp(grid, pathname + "/ti/TI", WbWriterVtkXmlBinary::getInstance(), tiSch, comm);
-
-      double endTime = 1000001;
-      //double endTime = 1001.0;
-      UbSchedulerPtr upSch(new UbScheduler(1));
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, upSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/sbone/CMakeLists.txt b/apps/cpu/sbone/CMakeLists.txt
deleted file mode 100644
index 883dab362fb5313d52af2ed81c0e9f15e6580a0c..0000000000000000000000000000000000000000
--- a/apps/cpu/sbone/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(sbone)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(sbone BINARY)
diff --git a/apps/cpu/sbone/sbone.cpp b/apps/cpu/sbone/sbone.cpp
deleted file mode 100644
index 2d404cee86f0e2dd895655c3c82397ad52a4ab33..0000000000000000000000000000000000000000
--- a/apps/cpu/sbone/sbone.cpp
+++ /dev/null
@@ -1,421 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <vfluids.h>
-
-using namespace std;
-
-
-void sbonepd(const char *configname)
-{
-   try
-   {
-
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname, pathGeo; 
-      int numOfThreads;
-      double availMem;
-
-      ConfigFileReader cf(configname);
-      if (!cf.read())
-      {
-         std::string exceptionText = "Unable to read configuration file\n";
-         throw exceptionText;
-      }
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if(machine == "BOMBADIL") 
-      {
-         numOfThreads = 4;
-         pathname = "d:/temp/sbone2";
-         pathGeo = "d:/Data/Bone/SmallBone";
-         availMem = 3.0e9;
-      }
-      else if(machine == "M01" || machine == "M02")      
-      {
-         numOfThreads = 8;
-         pathname = cf.getValue("pathname"); //"/work/koskuche/Bone/SmallBone";
-         pathGeo = cf.getValue("pathGeo"); //"/home/koskuche/data/Bone/SmallBone/vti";
-         availMem = 1.0e9;
-
-#if defined(__unix__)
-         if (myid == 0)
-         {
-            const char* str = pathname.c_str();
-            int status = mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-         }
-#endif 
-
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      if(myid==0) UBLOG(logINFO,"Testcase small bone");
-
-      //string boneFileName = pathGeo + "/sbone.stl";
-      string boneFileName = pathGeo + "/boneimage.vti";
-
-      double dx = 3.5e-3/175.0;
-
-      const int blocknx1 = 16;
-      const int blocknx2 = 16;
-      const int blocknx3 = 16;
-
-      LBMReal rho_LB = 0.0;
-      //nueWasser = 1e-6 m^2/s
-      double nu_real = 1e-6;
-      LBMReal dt = 5e-8; // s (frei gewählt)
-      //dx - frei gewählt
-      //
-      LBMReal nu_LB = nu_real/(dx*dx/dt);
-
-
-      //dp = 50000 Pa - 0 Pa = 50000 Pa
-      double dp_real = UbSystem::stringTo<double>(cf.getValue("pressure")); //5000;
-      //rho wasser = 1000 kg*m^-3
-      double rho_real = 1000;
-      //dp/rho = 50000/1000 = 50 m^2/s^2
-      double dp_div_rho_real = dp_real/rho_real;
-
-      double dp_LB = dp_div_rho_real/((dx/dt)*(dx/dt));
-
-      bool with_forcing = false;
-
-      double rhoLBinflow;
-      if (with_forcing)
-      {
-         rhoLBinflow = 0.0;
-      } 
-      else
-      {
-         rhoLBinflow = dp_LB*3.0;
-      }
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = 0;
-
-
-      //////////////////////////////////////////////////////////////////////////
-      //bone STL
-      //GbTriFaceMesh3DPtr bone (GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(boneFileName,"Netz"));
-      //if(myid == 0) GbSystem3D::writeGeoObject( bone.get(), pathname+"/geo/bone", WbWriterVtkXmlBinary::getInstance() );
-
-      string boneFilename = pathGeo + "/boneimage.vti";
-
-      int pmNX1=151;  //abmessung einzelbild in x-richtung
-      int pmNX2=101; //abmessung einzelbild in y richtung
-      int pmNX3=101; //anzahl der bilder
-      float lthreshold = 1.0;
-      float uthreshold = 255.0;
-
-      GbVoxelMatrix3DPtr bone(new GbVoxelMatrix3D(pmNX1,pmNX2,pmNX3,0,lthreshold,uthreshold));
-      bone->readMatrixFromVtiASCIIFile(boneFilename);
-      bone->setVoxelMatrixMininum(11.5, 8.01, 5.01);
-
-      double deltax = dx*1e3;
-      double deltaVoxel = 11e-3;
-      bone->setVoxelMatrixDelta(deltaVoxel, deltaVoxel, deltaVoxel);
-      bone->setLbGridDx(deltax);
-
-      if(myid == 0) bone->writeToLegacyVTKBinary(pathname+"/geo/bone");
-
-      //bounding box
-      double g_minX1 = bone->getX1Minimum()-0.25;
-      double g_minX2 = bone->getX2Minimum()-0.25;
-      double g_minX3 = bone->getX3Minimum()-0.25;
-
-      double g_maxX1 = bone->getX1Maximum()+0.25;
-      double g_maxX2 = bone->getX2Maximum()+0.25;
-      double g_maxX3 = bone->getX3Maximum()+0.25;
-
-      double blockLength = (double)blocknx1*deltax;
-
-      //double h = g_maxX2/2.0;
-      //double dpLB = (rhoLBinflow - rhoLB)/3.0;
-
-      //
-      //double dex = g_maxX1+1.0;
-      //double Umax = (1.0/(2.0*nueLB))*(dpLB/dex)*(h*h);
-
-      //double Re = (4*h*Umax)/(3*nueLB);
-
-      Grid3DPtr grid(new Grid3D(comm));
-      grid->setPeriodicX1(false);
-      grid->setPeriodicX2(false);
-      grid->setPeriodicX3(false);
-      grid->setDeltaX(deltax);
-      grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());      
-
-
-      GenBlocksGridVisitor genBlocks(gridCube);
-      grid->accept(genBlocks);
-
-      double forcing = 0;
-      if (with_forcing)
-      {
-         forcing = dp_LB/(blocknx1*grid->getNX1());
-      }
-
-      if(myid ==0)
-      {
-         UBLOG(logINFO,"Parameters:");
-         UBLOG(logINFO,"with forcing = " << with_forcing );
-         UBLOG(logINFO,"rho_LB = " << rho_LB );
-         UBLOG(logINFO,"nu_LB = " << nu_LB );
-         UBLOG(logINFO,"dp_LB = " << dp_LB );
-         UBLOG(logINFO,"forcing = " << forcing );
-         UBLOG(logINFO,"dx = " << dx << " m");
-         UBLOG(logINFO,"dt = " << dt << " s");
-         UBLOG(logINFO,"rho_real = " << rho_real << " kg*m^-3" );
-         UBLOG(logINFO,"nu_real = " << nu_real << " m^2/s" );
-         UBLOG(logINFO,"dp_real = " << dp_real << " Pa" );
-
-         UBLOG(logINFO,"number of levels = " << refineLevel+1 );
-         UBLOG(logINFO,"numOfThreads = " << numOfThreads );
-         UBLOG(logINFO,"path = " << pathname );
-         UBLOG(logINFO,"Preprozess - start");
-      }
-
-      //walls
-      GbCuboid3DPtr addWallYmin (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_minX2, g_maxX3+blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallYmax (new GbCuboid3D(g_minX1-blockLength, g_maxX2, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallZmin (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_minX3));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallZmax (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_maxX3, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-      //inflow
-      GbCuboid3DPtr geoInflow (new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-      //outflow
-      GbCuboid3DPtr geoOutflow (new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-      BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-
-      //   if (refineLevel > 0)
-      //   {
-      //      if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-      //      RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-      //      refineHelper.refine();
-      //      if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-      //   }
-
-
-
-      //bone interactor
-      int bcOptionBone = 2; //0=simple Bounce Back, 1=quadr. BB, 2=thin wall
-      D3Q27BoundaryConditionAdapterPtr bcBone(new D3Q27NoSlipBCAdapter(bcOptionBone));
-
-      D3Q27InteractorPtr boneInt(new D3Q27Interactor(bone, grid, bcBone,Interactor3D::SOLID));
-
-      //wall interactors
-      int bcOptionWall = 1; //0=simple Bounce Back, 1=quadr. BB, 2=thin wall
-      D3Q27BoundaryConditionAdapterPtr bcWall(new D3Q27NoSlipBCAdapter(bcOptionWall));
-      D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcWall,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcWall,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcWall,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcWall,Interactor3D::SOLID));
-
-      //   //inflow
-      //   //double dp_Ph=0.1*10000.0;//dp in Bar
-      //   //double dp_lb=dp_Ph*0.001*(nueLB*dx)*(nueLB*dx);//nue_ph=10e-6
-      //   //if(myid == 0) UBLOG(logINFO,"dp_lb = " << dp_lb );
-      //   //double rhoLBinflow = 3.0*(dp_lb-rhoLB);
-
-      D3Q27BoundaryConditionAdapterPtr denBCAdapterInflow(new D3Q27DensityBCAdapter(rhoLBinflow));
-      denBCAdapterInflow->setSecondaryBcOption(0);
-      D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, denBCAdapterInflow, Interactor3D::SOLID));
-
-      //outflow
-      D3Q27BoundaryConditionAdapterPtr denBCAdapterOutflow(new D3Q27DensityBCAdapter(rho_LB));
-      denBCAdapterOutflow->setSecondaryBcOption(0);
-      D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapterOutflow,Interactor3D::SOLID));
-
-      ////////////////////////////////////////////
-      //METIS
-      Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));   
-      ////////////////////////////////////////////
-      /////delete solid blocks
-      if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-      InteractorsHelper intHelper(grid, metisVisitor);
-      intHelper.addInteractor(boneInt);
-      intHelper.addInteractor(addWallYminInt);
-      intHelper.addInteractor(addWallYmaxInt);
-      intHelper.addInteractor(addWallZminInt);
-      intHelper.addInteractor(addWallZmaxInt);
-      intHelper.addInteractor(inflowInt);
-      intHelper.addInteractor(outflowInt);
-      intHelper.selectBlocks();
-      if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	 
-      //////////////////////////////////////
-
-      //set connectors
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-      D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-      grid->accept( setConnsVisitor );
-
-      //domain decomposition for threads
-      PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      grid->accept(pqPartVisitor);
-
-      ppblocks->update(0);
-      ppblocks.reset();
-
-      unsigned long nob = grid->getNumberOfBlocks();
-      int gl = 3;
-      unsigned long nodb = (blocknx1) * (blocknx2) * (blocknx3);
-      unsigned long nod = nob * (blocknx1) * (blocknx2) * (blocknx3);
-      unsigned long nodg = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-      double needMemAll  = double(nodg*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-      double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"Number of blocks = " << nob);
-         UBLOG(logINFO,"Number of nodes  = " << nod);
-         int minInitLevel = grid->getCoarsestInitializedLevel();
-         int maxInitLevel = grid->getFinestInitializedLevel();
-         for(int level = minInitLevel; level<=maxInitLevel; level++)
-         {
-            int nobl = grid->getNumberOfBlocks(level);
-            UBLOG(logINFO,"Number of blocks for level " << level <<" = " << nobl);
-            UBLOG(logINFO,"Number of nodes for level " << level <<" = " << nobl*nodb);
-         }
-         UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-         UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-         UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-      }            
-
-      LBMKernel3DPtr kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-
-      //mu::Parser fctForcingX1;
-      //fctForcingX1.SetExpr("Fx1");
-      //fctForcingX1.DefineConst("Fx1", forcing);
-
-      //kernel->setForcingX1(fctForcingX1);
-      //kernel->setWithForcing(true);
-
-      BCProcessorPtr bcProc(new D3Q27ETForThinWallBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-
-      //if (refineLevel > 0)
-      //{
-      //   D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-      //   grid->accept(undefNodesVisitor);
-      //}
-
-      //BC
-      intHelper.setBC();
-
-      //Press*1.6e8+(14.76-coordsX)/3.5*5000
-      //initialization of distributions
-      mu::Parser fct;
-      fct.SetExpr("(x1max-x1)/l*dp*3.0");
-      fct.DefineConst("dp", dp_LB);
-      fct.DefineConst("x1max", g_maxX1);
-      fct.DefineConst("l", g_maxX1-g_minX1);
-
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(nu_LB, rho_LB);
-      initVisitor.setRho(fct);
-      //initVisitor.setVx1(fct);
-      initVisitor.setVx1(0.0);
-      grid->accept(initVisitor);
-
-      //Postrozess
-      UbSchedulerPtr geoSch(new UbScheduler(1));
-      D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-         new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, true));
-      ppgeo->update(0);
-      ppgeo.reset();
-
-      if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, numOfThreads, comm);
-
-      double outTime = 1000;
-      UbSchedulerPtr stepSch(new UbScheduler(outTime));
-      stepSch->addSchedule(10,10,100);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv);
-
-
-      double dxd2 = deltax / 2.0;
-      D3Q27IntegrateValuesHelperPtr ih1(new D3Q27IntegrateValuesHelper(grid, comm, bone->getX1Minimum() - dxd2, bone->getX2Minimum() - dxd2, bone->getX3Minimum() - dxd2,
-         bone->getX1Maximum() + dxd2, bone->getX2Maximum() + dxd2, bone->getX3Maximum() + dxd2));
-      if (myid == 0) GbSystem3D::writeGeoObject(ih1->getBoundingBox().get(), pathname + "/geo/ih1", WbWriterVtkXmlBinary::getInstance());
-
-      double factorp = dp_real/dp_LB;
-      double factorv = dx/dt;
-      D3Q27MeanValuesPostprocessor mvp1(grid, stepSch, pathname + "/mv/mv1.txt", comm, ih1, factorp, factorv);
-
-
-      D3Q27IntegrateValuesHelperPtr ih2(new D3Q27IntegrateValuesHelper(grid, comm, g_maxX1-2.0*deltax, g_minX2, g_minX3,
-         g_maxX1 - deltax, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(ih2->getBoundingBox().get(), pathname + "/geo/ih2", WbWriterVtkXmlBinary::getInstance());
-
-      D3Q27MeanValuesPostprocessor mvp2(grid, stepSch, pathname + "/mv/mv2.txt", comm, ih2, factorp, factorv);
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      double endTime = UbSystem::stringTo<double>(cf.getValue("endTime")); //100001;//10001.0;
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, stepSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-
-   if ( argv != NULL )
-   {
-      sbonepd(argv[1]);
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/screw/CMakeLists.txt b/apps/cpu/screw/CMakeLists.txt
deleted file mode 100644
index c2fb4e44f90332302a1c6918b31223664b6e539a..0000000000000000000000000000000000000000
--- a/apps/cpu/screw/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(screw)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(screw BINARY)
diff --git a/apps/cpu/screw/config.txt b/apps/cpu/screw/config.txt
deleted file mode 100644
index 4929670dd07a16078a04b3878937bd8dfe5e9750..0000000000000000000000000000000000000000
--- a/apps/cpu/screw/config.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-pathname = d:/temp/screw
-numOfThreads = 4
-availMem = 8e9
-blocknx = 20 20 20
-
-uLB = 6.66666666667e-2
-Re  = 7000
-dx  = 0.0005
-
-endTime = 100000
-outTime = 10000
-
-restartStep = 10000
\ No newline at end of file
diff --git a/apps/cpu/screw/screw.cpp b/apps/cpu/screw/screw.cpp
deleted file mode 100644
index 3f48efaf9beb105d0c1e06237165153ef3c6898c..0000000000000000000000000000000000000000
--- a/apps/cpu/screw/screw.cpp
+++ /dev/null
@@ -1,257 +0,0 @@
-#include <VirtualFluids.h>
-
-using namespace std;
-
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   try
-   {
-      // Verify input arguments
-      if (argc != 2)
-      {
-         std::cout << "Usage: " << argv[0] << " <config file> " << std::endl;
-         return EXIT_FAILURE;
-      }
-
-      ConfigurationFile   config;
-      config.load(argv[1]);
-
-      string          pathname     = config.getString("pathname");
-      int             numOfThreads = config.getValue<int>("numOfThreads");
-      vector<int>     blocknx      = config.getVector<int>("blocknx");
-      double          uLB          = config.getValue<double>("uLB");
-      double          Re           = config.getValue<double>("Re");
-      double          dx           = config.getValue<double>("dx");
-      double          endTime      = config.getValue<double>("endTime");
-      double          outTime      = config.getValue<double>("outTime");
-      double          availMem     = config.getValue<double>("availMem");
-      int             restartStep  = config.getValue<int>("restartStep");
-
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      double r = 150e-3;
-      double h = 45e-3;
-
-      //bounding box
-      double g_minX1 = 0;
-      double g_minX2 = 0;
-      double g_minX3 = 0;
-
-      double g_maxX1 = 2.0*sqrt(2.0*r*h-h*h);
-      double g_maxX2 = 45e-3;
-      double g_maxX3 = 10e-3;
-
-      
-
-      double blockLength = (double)blocknx[0]*dx;
-
-      double nuLB = (uLB*(h/dx))/Re;
-      double rhoLB = 0.0;
-
-      //bc
-      mu::Parser fctVx;
-      fctVx.SetExpr("omega*(r-x2)");
-      fctVx.DefineConst("omega", uLB);
-      fctVx.DefineConst("r", r);
-
-      mu::Parser fctVy;
-      fctVy.SetExpr("omega*(x1-k)");
-      fctVy.DefineConst("omega", uLB);
-      fctVy.DefineConst("k", g_maxX1*0.5);
-
-      mu::Parser fctVz;
-      fctVz.SetExpr("0.0");
-
-      SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter(true, true, true, fctVx,fctVy,fctVz, 0, BCFunction::INFCONST));
-      velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityBCAlgorithm()));
-
-      SPtr<BCAdapter> slipBCAdapter(new SlipBCAdapter());
-      slipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new SlipBCAlgorithm()));
-
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(slipBCAdapter);
-      bcVisitor.addBC(velBCAdapter);
-
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-      grid->setPeriodicX1(false);
-      grid->setPeriodicX2(false);
-      grid->setPeriodicX3(false);
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-
-      SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-      if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<UbScheduler> rSch(new UbScheduler(restartStep));
-      RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (grid->getTimeStep() == 0)
-      {
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "h = " << h);
-            UBLOG(logINFO, "rho = " << rhoLB);
-            UBLOG(logINFO, "nue = " << nuLB);
-            UBLOG(logINFO, "Re = " << Re);
-            UBLOG(logINFO, "dx = " << dx);
-
-            //UBLOG(logINFO, "number of levels = " << refineLevel + 1);
-            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
-            UBLOG(logINFO, "path = " << pathname);
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         //BC
-         SPtr<GbObject3D> cylinder(new GbCylinder3D(g_maxX1*0.5, r, g_minX3, g_maxX1*0.5, r, g_maxX3, r));
-         GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLength, g_maxX2, g_minX3-blockLength, g_maxX1+blockLength,  g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         WriteBlocksSPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         //interactors
-         SPtr<D3Q27Interactor> cylinderInt(new D3Q27Interactor(cylinder, grid, velBCAdapter, Interactor3D::INVERSESOLID));
-         SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallZmax, grid, slipBCAdapter, Interactor3D::SOLID));
-
-
-         ////////////////////////////////////////////
-         //METIS
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(cylinderInt);
-
-         intHelper.selectBlocks();
-         if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         ppblocks->process(0);
-         ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx[0]) * (blocknx[1]) * (blocknx[2]);
-         unsigned long nod = nob * (blocknx[0]) * (blocknx[1]) * (blocknx[2]);
-         unsigned long nodg = nob * (blocknx[0] + gl) * (blocknx[1] + gl) * (blocknx[1] + gl);
-         double needMemAll = double(nodg*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << nob);
-            UBLOG(logINFO, "Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level <= maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level " << level << " = " << nobl);
-               UBLOG(logINFO, "Number of nodes for level " << level << " = " << nobl*nodb);
-            }
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         int kernelType = 2;
-         SPtr<LBMKernel> kernel;
-         kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], IncompressibleCumulantLBMKernel::NORMAL));
-         //kernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], CompressibleCumulantLBMKernel::NORMAL));
-         
-         SPtr<BCProcessor> bcProc(new BCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         //BC
-         intHelper.setBC();
-
-         grid->accept(bcVisitor);
-
-         //initialization of distributions
-         InitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-         initVisitor.setVx1(fctVx);
-         initVisitor.setVx2(fctVy);
-         initVisitor.setVx3(fctVz);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         WriteBoundaryConditionsSPtr<CoProcessor> ppgeo(
-            new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-         ppgeo->process(0);
-         ppgeo.reset();
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         grid->accept(bcVisitor);
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         if (myid == 0) UBLOG(logINFO, "Restart - end");
-      }
-      SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTime));
-
-      WriteMacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      const SPtr<ConcreteCalculatorFactory> calculatorFactory = std::make_shared<ConcreteCalculatorFactory>(stepSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, calculatorFactory, CalculatorType::HYBRID));
-      if (myid == 0) UBLOG(logINFO, "Simulation-start");
-      calculation->calculate();
-      if (myid == 0) UBLOG(logINFO, "Simulation-end");
-
-      return EXIT_SUCCESS;
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
diff --git a/apps/cpu/shear/CMakeLists.txt b/apps/cpu/shear/CMakeLists.txt
deleted file mode 100644
index ce43e1f71988432bb9aadcf64408d6bb942e2037..0000000000000000000000000000000000000000
--- a/apps/cpu/shear/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(shear)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(shear BINARY)
diff --git a/apps/cpu/shear/shear.cpp b/apps/cpu/shear/shear.cpp
deleted file mode 100644
index 8026d17f5cf136fa28a797119d1852a0ef01bc56..0000000000000000000000000000000000000000
--- a/apps/cpu/shear/shear.cpp
+++ /dev/null
@@ -1,514 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <vfluids.h>
-using namespace std;
-
-
-void run(const char *cstr)
-{
-   CommunicatorPtr comm(new MPICommunicator());
-   try
-   {
-      //Sleep(30000);
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname; 
-	  string geosphere;	  
-      int numOfThreads = 1;
-      double availMem = 0;
-
-      
-      int myid = comm->getProcessID();
-
-      if(machine == "BOMBADIL") 
-      {
-         pathname = "d:/temp/shear";
-         numOfThreads = 1;
-         availMem = 3.0e9;
-         geosphere = "d:/Data/Ehsan/Agglomerat_n_00020_fd_1.882437_r_0033.930997.txt";
-      }
-       else if(machine == "M01" || machine == "M02")      
-      {
-         pathname = "/work/koskuche/scratch/smallAgg80";
-		// geosphere = "/work/ehsan/data/Agglomerat4.txt";
-	   // geosphere = "/work/ehsan/data/Agglomerat_n_00060_fd_1.858514_r_0061.500327.txt";
-		// geosphere = "/work/ehsan/data/Agglomerat_n_00080_fd_1.855984_r_0071.870085.txt";
-		//geosphere = "/work/ehsan/data/Agglomerat_n_00040_fd_1.864231_r_0049.358563.txt";
-		//geosphere = "/work/ehsan/data/Agglomerat_n_00020_fd_1.882437_r_0033.930997.txt";
-		geosphere = "/work/ehsan/data/Agglomerat_n_00500_fd_1.850643_r_0193.702967.txt";
-      
-		
-		
-		
-         numOfThreads = 1;
-         availMem =1.0e10;// 12.0e9;
-
-         if(myid ==0)
-         {
-            stringstream logFilename;
-            logFilename <<  pathname + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-	   }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-      double dx =0.1*4.0;
-
-	  double eq_Diameter=2.0*38.0;//55.3586;//61.5003;//80;//71.8701;//61.5003;
-      double L1 =35.0*eq_Diameter;
-      double L2, L3, H;
-      L2 = L3 = H =35.0*eq_Diameter;//1.0;//0.42*3.9;
-
-      LBMReal radius = 6.0;
-      LBMReal rhoReal = 1.0; //kg/m^3
-      //LBMReal uReal = 0.45;//m/s
-   //   LBMReal uLB = 0.05;
-      LBMReal Re = 0.1;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
-
-      //LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter(1.0, 1/sqrt(3.0)*(uReal/uLB), 1.0, 1.0/dx, dx*dx*dx));
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-      const int refineLevel = 5;  
-  
-     
-
-      //bounding box
-      double d_minX1 = 0.0;
-      double d_minX2 = 0.0;
-      double d_minX3 = 0.0;
-
-      double d_maxX1 = L1;
-      double d_maxX2 = L2;
-      double d_maxX3 = L3;
-
-	  const int blocknx1 = 8;
-      const int blocknx2 = 8;
-      const int blocknx3 = 8;
-
-      dx =14.4*2.0;// ( 0.9) *(double)(1<<refineLevel);
-
-	  double area =/* radius/dx;*/radius*radius*PI/(dx/(double)(1<<refineLevel))/(dx/(double)(1<<refineLevel));//2.0*radius*H;
-	  double nueReal=1e-6;//water
-	  double uReal=Re*nueReal/(2.0*radius);//real velocity
-	  double F_stokss=6*PI*.001/*water*/*radius*uReal;
-      //LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-      LBMReal nueLB =.75/((double)(1<<refineLevel));// ((uLB)*2.0*(radius/dx))/Re;
-	//  LBMReal uLB  = ((nueLB)*Re)/ ( 2.0*(radius/dx));//base on the coarsest level
-	  LBMReal uLB  = ((0.75)*Re)/ ( 2.0*(radius/(dx/((double)(1<<refineLevel)))));//base on the coarsest level if nueLB =.75/((double)(1<<refineLevel)) and  dx = ( 0.9) *(double)(1<<refineLevel)
-  //     LBMReal uLB  = ((0.75)*Re)/ ((eq_Diameter/(dx/((double)(1<<refineLevel)))));//base on the coarsest level if nueLB =.75/((double)(1<<refineLevel)) and  dx = ( 0.9) *(double)(1<<refineLevel)
-	 double blockLength = blocknx1*dx;
-	
-
-		double xsphere=1.0*L1/2.0;//0.5;
-		double ysphere=L2/2.0;//0.75;
-		double zsphere=L3/2.0;//0.75;
- //obstacle
-    	 //////////////////////////////////////////////////////////////////////////
-	  UbFileInputASCII file;
-	  file.open(geosphere);
-	  //file.skipLine();file.skipLine();//2line skiped
-	  std::string NOP=file.readString();
-	  std::string NOP2=file.readString();
-	  const int numberOfParticles=file.readDouble();
-	  if(myid == 0){UBLOG(logINFO,__FILE__<<" " <<__LINE__<<" number of particles="<<numberOfParticles);}	
-	  //std::string Dia=file.readString();
-	  double diameter=2.0*radius;//12;//file.readDouble();
-	  file.skipLine();file.skipLine();file.skipLine();file.skipLine();file.skipLine();file.skipLine();file.skipLine();//7 line skiped
-			GbSphere3DPtr *sphereP=new GbSphere3DPtr[numberOfParticles];
-			  
-			for (int i=0;i<numberOfParticles;i++)
-			{
-			double x=file.readDouble();
-			double y=file.readDouble();
-			double z=file.readDouble();
-		///0degree in x direction		
-			    double x_rotation= x;
-			    double y_rotation= y;
-			    double z_rotation= z;
-///180degree in x direction		
-			   // double x_rotation= x;
-			   // double y_rotation= -y;
-			   // double z_rotation= -z;			   
-		///90degree in y direction	
-			  // double x_rotation=-z;
-			  // double y_rotation= y;
-			  // double z_rotation=x;			
-	   // ///90degree in z axis	
-			   // double x_rotation=-y;
-			   // double y_rotation=x;
-			   // double z_rotation=z;
-		//transfer	
-			double x_final=x_rotation/*/1450*/  +xsphere;
-			double y_final=y_rotation/*/1450*/  +ysphere;
-			double z_final=z_rotation/*/1450*/  +zsphere;
-				sphereP[i]=GbSphere3DPtr(new GbSphere3D(x_final, y_final, z_final, diameter/2.0/*/1450*/));
-				if(myid == 0)GbSystem3D::writeGeoObject(sphereP[i].get(),pathname + "/sphere/sphere"+ "_" + UbSystem::toString(i), WbWriterVtkXmlASCII::getInstance());
-			}
-			file.close();
-///////////////////////////////	
-       D3Q27InteractorPtr *spherePInt=new D3Q27InteractorPtr[numberOfParticles];	
-      double offs = dx;
-
-      //double g_minX1 = d_minX1-offs-0.499999*dx;
-      double g_minX1 = d_minX1-offs;
-      double g_minX2 = d_minX2-offs;
-      double g_minX3 = d_minX3-offs;
-
-      double g_maxX1 = d_maxX1+offs;
-      double g_maxX2 = d_maxX2+offs;
-      double g_maxX3 = d_maxX3+offs;
-			if(myid == 0){UBLOG(logINFO,__FILE__<<" " <<__LINE__);}	  
-      GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-			if(myid == 0){UBLOG(logINFO,__FILE__<<" " <<__LINE__);}	  
-      
-
-      //refinement area
-      double rf = 0.50*blockLength;
-      // GbObject3DPtr refineCube(new  GbCuboid3D(sphereP[0]->getX1Minimum()-rf*3.0/4.0, sphereP[3]->getX2Minimum()-rf*3.0/4.0, sphereP[5]->getX3Minimum()-rf*1.0/2.0, 
-         // sphereP[2]->getX1Maximum()+rf*3.0/4.0, sphereP[4]->getX2Maximum()+rf*3.0/4.0, sphereP[6]->getX3Maximum()+rf*1.0/2.0));
-		 
-		 //////////
-	   double level5=xsphere-(xsphere-eq_Diameter/2-0.50*(blocknx1*dx/pow(2.0,5)));//0.065;//.085;
-	   double level4=level5+.1*(blocknx1*dx/pow(2.0,4));//0.015;//0.1;
-	   double level3=level4+0.50*(blocknx1*dx/pow(2.0,3));//0.015;//0.115;
-	   double level2=level3+1.0*(blocknx1*dx/pow(2.0,2));//.035;//0.15;
-	   double level1=level2+1.0*(blocknx1*dx/pow(2.0,1));//.05;//0.2;
-	   
-	    GbCuboid3DPtr refineCube1(new GbCuboid3D(  xsphere-level1,ysphere-level1, zsphere-level1,xsphere+level1,ysphere+level1, zsphere+level1));
-	    GbCuboid3DPtr refineCube2(new GbCuboid3D(  xsphere-level2,ysphere-level2, zsphere-level2,xsphere+level2,ysphere+level2, zsphere+level2));
-		GbCuboid3DPtr refineCube3(new GbCuboid3D(  xsphere-level3,ysphere-level3, zsphere-level3,xsphere+level3,ysphere+level3, zsphere+level3));
-		GbCuboid3DPtr refineCube4(new GbCuboid3D(  xsphere-level4,ysphere-level4, zsphere-level4,xsphere+level4,ysphere+level4, zsphere+level4));
-		GbCuboid3DPtr refineCube5(new GbCuboid3D(  xsphere-level5,ysphere-level5, zsphere-level5,xsphere+level5,ysphere+level5, zsphere+level5));
-		 ///////////
-
-      Grid3DPtr grid(new Grid3D(comm));
-
-      UbSchedulerPtr rSch(new UbScheduler(100000, 100000));
-      //RestartPostprocessorPtr rp(new RestartPostprocessor(grid, rSch, comm, pathname+"/checkpoints", RestartPostprocessor::BINARY));
-
-      //UbSchedulerPtr emSch(new UbScheduler(1000, 1000));
-      //EmergencyExitPostprocessor em(grid, emSch, pathname+"/checkpoints/emex.txt", rp, comm);
-
-      std::string opt;
-
-      if(cstr!= NULL)
-         opt = std::string(cstr);
-
-      if/*(cstr== NULL)*/(cstr!= NULL)
-      {
-         opt = std::string(cstr);
-
-         if(myid==0) UBLOG(logINFO,"Restart step: " << opt);
-
-         //grid = rp->restart(UbSystem::stringTo<int>(opt));
-         //rp->reconnect();
-
-         //cylinderInt = 
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27OffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-      }
-      else
-      {
-         if(myid ==0)
-         {
-            UBLOG(logINFO,"L = " << L2/dx );
-            UBLOG(logINFO,"v = " << uLB );
-            UBLOG(logINFO,"rho = " << rhoLB );
-            UBLOG(logINFO,"nue = " << nueLB );
-            UBLOG(logINFO,"Re = " << Re );
-			UBLOG(logINFO,"F_stokss = " << F_stokss );
-			UBLOG(logINFO,"dx = " << dx );
-            UBLOG(logINFO,conv->toString() );
-            UBLOG(logINFO,"Preprozess - start");
-         }
-
-         grid->setDeltaX(dx);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-		 grid->setPeriodicX1(false);
-         grid->setPeriodicX2(true);
-         grid->setPeriodicX3(true);
-
-         // UbTupleDouble6 bouningBox(gridCube->getX1Minimum(),gridCube->getX2Minimum(),gridCube->getX3Minimum(),
-         // gridCube->getX1Maximum(),gridCube->getX2Maximum(),gridCube->getX3Maximum());
-         // UbTupleInt3 blockNx(blocknx1, blocknx2, blocknx3);
-         // UbTupleInt3 gridNx(8, 16, 16);
-         // grid = Grid3DPtr(new Grid3D(bouningBox, blockNx, gridNx));
-
-         if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
- //        if(myid ==0) GbSystem3D::writeGeoObject(refineCube.get(),pathname + "/geo/refineCube", WbWriterVtkXmlBinary::getInstance());
- 
-         ////
-         if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-         if(myid ==0) GbSystem3D::writeGeoObject(refineCube1.get(), pathname + "/geo/refineCube1", WbWriterVtkXmlBinary::getInstance());
-		 if(myid ==0) GbSystem3D::writeGeoObject(refineCube2.get(),pathname + "/geo/refineCube2", WbWriterVtkXmlBinary::getInstance());
-         if(myid ==0) GbSystem3D::writeGeoObject(refineCube3.get(),pathname + "/geo/refineCube3", WbWriterVtkXmlBinary::getInstance());
-		 if(myid ==0) GbSystem3D::writeGeoObject(refineCube4.get(),pathname + "/geo/refineCube4", WbWriterVtkXmlBinary::getInstance());
-		 if(myid ==0) GbSystem3D::writeGeoObject(refineCube5.get(),pathname + "/geo/refineCube5", WbWriterVtkXmlBinary::getInstance());
-		 ////
-		 
-         GenBlocksGridVisitor genBlocks;
-         genBlocks.addGeoObject(gridCube);
-         grid->accept(genBlocks);
-
-         //walls
-         GbCuboid3DPtr addWallYmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_minX2, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_minX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_maxX2, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_maxX3, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_minX1, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-         if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-
-        if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-			RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-			refineHelper.addGbObject(refineCube5, refineLevel);
-			
-		//	refineHelper.addGbObject(refineCube1, refineLevel);
-			// refineHelper.addGbObject(refineCube2, refineLevel-1);
-			// refineHelper.addGbObject(refineCube3, refineLevel-2);
-			// refineHelper.addGbObject(refineCube4, refineLevel-3);
-			//refineHelper.addGbObject(refineCube5, refineLevel-4);
-			
-
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");   
-		 
-         }
-
-         MetisPartitioningGridVisitor metisVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B);
-         grid->accept( metisVisitor );
-
-         SolidBlocksHelper sd(grid, comm);
-
-         int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcObst(new D3Q27NoSlipBCAdapter(bbOption));
-		 D3Q27BoundaryConditionAdapterPtr bcObst2(new D3Q27SlipBCAdapter(bbOption));
-        // cylinderInt = D3Q27InteractorPtr ( new D3Q27Interactor(cylinder, grid, bcObst,Interactor3D::SOLID));
-		
-			for (int i=0;i<numberOfParticles;i++)
-			{      
-				spherePInt[i]= D3Q27InteractorPtr( new D3Q27Interactor(sphereP[i], grid, bcObst,Interactor3D::SOLID));
-			}
-         //walls
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcObst2,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcObst2,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcObst2,Interactor3D::SOLID));
-         D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcObst2,Interactor3D::SOLID));
-
-		  //for shear strees =0
-		 // D3Q27BoundaryConditionAdapterPtr velBCAdapter2(new D3Q27VelocityBCAdapter ());
-         // velBCAdapter2->setSecondaryBcOption(1);
-         // D3Q27InteractorPtr addWallYminInt  = D3Q27InteractorPtr( new D3Q27Interactor(addWallYmin, grid, velBCAdapter2, Interactor3D::SOLID));
-		 // D3Q27InteractorPtr addWallZminInt  = D3Q27InteractorPtr( new D3Q27Interactor(addWallZmin, grid, velBCAdapter2, Interactor3D::SOLID));
-		 // D3Q27InteractorPtr addWallYmaxInt  = D3Q27InteractorPtr( new D3Q27Interactor(addWallYmax, grid, velBCAdapter2, Interactor3D::SOLID));
-		 // D3Q27InteractorPtr addWallZmaxInt  = D3Q27InteractorPtr( new D3Q27Interactor(addWallZmax, grid, velBCAdapter2, Interactor3D::SOLID));
-
-		
-		 
-         mu::Parser fct;
-         //fct.SetExpr("16*U*x2*x3*(H-x2)*(H-x3)/H^4");
-         //fct.DefineConst("U", uLB);
-         //fct.DefineConst("H", H);
-
-		 fct.SetExpr("U");
-         fct.DefineConst("U", uLB);
-         
-         //inflow
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-         velBCAdapter->setSecondaryBcOption(0);
-         D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
- 
-         //outflow
-         D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-	for (int i=0;i<numberOfParticles;i++)
-			{      
-				sd.addInteractor(spherePInt[i]  );
-			}
-         //sd.addInteractor(cylinderInt);
-         // sd.addInteractor(addWallYminInt);
-         // sd.addInteractor(addWallZminInt);
-         // sd.addInteractor(addWallYmaxInt);
-         // sd.addInteractor(addWallZmaxInt);
-         sd.addInteractor(inflowInt);
-         sd.addInteractor(outflowInt);
-if(myid == 0) UBLOG(logINFO,"delete - start"); 
-         sd.deleteSolidBlocks();
-if(myid == 0) UBLOG(logINFO,"delete - end"); 
-
-         grid->accept( metisVisitor );
-
-         sd.setTransBlocks();
-
-         ppblocks->update(0);
-         ppblocks.reset();
-
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-
-         double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-         }            
-
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3));
-         //LBMKernel3DPtr kernel(new LBMKernelETD3Q27BGK(blocknx1, blocknx2, blocknx3, true));
-         //option = 0 - ohne param., option = 1 - mit param.
-         int option = 0;
-       LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, option));
-      //   LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB_Geier(blocknx1, blocknx2, blocknx3, option));
-	 
-//	     LBMKernel3DPtr kernel(new  LBMKernelETD3Q27Cascaded(blocknx1, blocknx2, blocknx3, option));
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         //walls
-        // grid->addAndInitInteractor(addWallYminInt);
-        // grid->addAndInitInteractor(addWallZminInt);
-        // grid->addAndInitInteractor(addWallYmaxInt);
-        // grid->addAndInitInteractor(addWallZmaxInt);
-
-         //obstacle
-         //grid->addAndInitInteractor(cylinderInt);
-			for (int i=0;i<numberOfParticles;i++)
-			{      
-				grid->addAndInitInteractor(spherePInt[i]  );
-			}
-
-         //inflow
-         grid->addAndInitInteractor(inflowInt);
-
-         //outflow
-         grid->addAndInitInteractor(outflowInt);
-
-         //domain decomposition
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //initialization of distributions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor(rhoLB);
-         initVisitor.setVx1(fct);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname + "/grid/nodes", WbWriterVtkXmlBinary::getInstance(), conv, comm, true));
- if(myid == 0) UBLOG(logINFO,"/grid/nodes");         
-		ppgeo->update(0);
-		 if(myid == 0) UBLOG(logINFO,"line"<<__LINE__); 
-         ppgeo.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-      }  
-      double outTime = 5000.0;
-      UbSchedulerPtr visSch(new UbScheduler(outTime));
-      visSch->addSchedule(1000, 1000, 10000);
-      visSch->addSchedule(10000, 10000, 50000);
-      visSch->addSchedule(1000, 1000, 100000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname + "/steps/step", WbWriterVtkXmlBinary::getInstance(), conv, comm);
-
-      double fdx = grid->getDeltaX(grid->getFinestInitializedLevel());
-      double point1[3] = {0.45, 0.20, 0.205};
-      double point2[3] = {0.55, 0.20, 0.205};
-
-      D3Q27IntegrateValuesHelperPtr h1(new D3Q27IntegrateValuesHelper(grid, comm, 
-         point1[0]-1.0*fdx, point1[1]-1.0*fdx, point1[2]-1.0*fdx, 
-         point1[0], point1[1], point1[2]));
-      if(myid ==0) GbSystem3D::writeGeoObject(h1->getBoundingBox().get(),pathname + "/geo/iv1", WbWriterVtkXmlBinary::getInstance());
-      D3Q27IntegrateValuesHelperPtr h2(new D3Q27IntegrateValuesHelper(grid, comm, 
-         point2[0], point2[1]-1.0*fdx, point2[2]-1.0*fdx, 
-         point2[0]+1.0*fdx, point2[1], point2[2]));
-      if(myid ==0) GbSystem3D::writeGeoObject(h2->getBoundingBox().get(),pathname + "/geo/iv2", WbWriterVtkXmlBinary::getInstance());
-      //D3Q27PressureDifferencePostprocessor rhopp(grid, visSch, pathname + "/results/rho_diff.txt", h1, h2, conv, comm);
-      D3Q27PressureDifferencePostprocessor rhopp(grid, visSch, pathname + "/results/rho_diff.txt", h1, h2, rhoReal, uReal, uLB, comm);
-    
-      
-      double v    = uLB;//4.0*uLB/9.0;
-    //  D3Q27ForcesPostprocessor fp(grid, visSch, pathname + "/results/forces.txt", comm, rhoLB, v, area, D3Q27ForcesPostprocessor::X, D3Q27ForcesPostprocessor::Y, D3Q27ForcesPostprocessor::Z);
-    //      for (int i=0;i<numberOfParticles;i++)
-			 //{      
-				// fp.addInteractor(spherePInt[i]  );
-			 //}
-	  
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 40));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-      double endTime = 65001.0;
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-
-   run(argv[1]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/sphere/CMakeLists.txt b/apps/cpu/sphere/CMakeLists.txt
deleted file mode 100644
index 77d7e0a41ea36fef0813ace18ee699da481d2ddd..0000000000000000000000000000000000000000
--- a/apps/cpu/sphere/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(sphere)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(sphere BINARY)
diff --git a/apps/cpu/sphere/config.txt b/apps/cpu/sphere/config.txt
deleted file mode 100644
index 53bd75458a4bda12585ffc5f5f070fe759f037ec..0000000000000000000000000000000000000000
--- a/apps/cpu/sphere/config.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#Ordner für Simulationsergebnisse
-path=d:/temp/sphere
-
-#Verfügbare Arbeitsspeicher in Byte
-memory=3e9
-
-#Pfad zum Metafile
-metafile=d:/Data/insituDemo/metafile.csv
-
-#Ausgabezeitschritt
-outstep=1
-
-#maximale Anzahl Simulationszeitschritte
-endstep=100000
-
-#Anzahl von Threads
-threads=1
-
-#max refierment level (1 - 5)
-level=4
-
-test = true
\ No newline at end of file
diff --git a/apps/cpu/sphere/sphere.cpp b/apps/cpu/sphere/sphere.cpp
deleted file mode 100644
index 604d9e744b7c1821c048b163e53f4ec040fc8168..0000000000000000000000000000000000000000
--- a/apps/cpu/sphere/sphere.cpp
+++ /dev/null
@@ -1,372 +0,0 @@
-#include <VirtualFluids.h>
-#include <set>
-#include <map>
-using namespace std;
-
-
-////////////////////////////////////////////////////////////////////////
-void run(string configname)
-{
-   try
-   {
-
-      //Sleep(30000);
-
-      string machine = QUOTEME(CAB_MACHINE);
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-
-      int myid = comm->getProcessID();
-      int mybundle = comm->getBundleID();
-      int root = comm->getRoot();
-
-      //ConfigFileReader cf(cstr);
-      //if ( !cf.read() )
-      //{
-      //   std::string exceptionText = "Unable to read configuration file\n";
-      //   throw exceptionText;
-      //}
-
-      //pathname = cf.getValue("path");
-      //availMem = UbSystem::stringTo<double>(cf.getValue("memory"));
-      //string metafile = cf.getValue("metafile");
-      //double outstep = UbSystem::stringTo<double>(cf.getValue("outstep"));
-      //double endstep = UbSystem::stringTo<double>(cf.getValue("endstep"));
-      //int numOfThreads = UbSystem::stringTo<int>(cf.getValue("threads"));
-
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string pathname = config.getValue<string>("path");
-      double availMem = config.getValue<double>("memory");
-      string metafile = config.getValue<string>("metafile");
-      double outstep  = config.getValue<double>("outstep");
-      double endstep        = config.getValue<double>("endstep");
-      int numOfThreads      = config.getValue<int>("threads");
-      const int refineLevel = config.getValue<int>("level");
-
-      bool test = config.getValue<bool>("test");
-
-      LBMReal radius = 4;
-      LBMReal uLB = 0.1;
-      LBMReal Re = 1;
-      LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = (uLB*2.0*radius)/Re;
-      //LBMReal nuLB = (uLB*L2)/Re;
-      LBMReal nuLB = 0.168666666667/100;
-
-      double dp_LB = 1e-6;
-      double rhoLBinflow = dp_LB*3.0;
-
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithm()));
-      
-      mu::Parser fct;
-      fct.SetExpr("U");
-      fct.DefineConst("U", uLB);
-      SPtr<BCAdapter> velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
-      velBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapter(new DensityBCAdapter(rhoLB));
-      denBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      bcVisitor.addBC(velBCAdapter);
-      bcVisitor.addBC(denBCAdapter);
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      double dx = 1;
-
-      const int blocknx1 = 8;
-      const int blocknx2 = 8;
-      const int blocknx3 = 8;
-
-      const int gridNx1 = 4;//18;
-      const int gridNx2 = 4;// 11;
-      const int gridNx3 = 4;// 11;
-
-      //const int blocknx1 = 40;
-      //const int blocknx2 = 40;
-      //const int blocknx3 = 40;
-
-      //const int gridNx1 = 2;
-      //const int gridNx2 = 2;
-      //const int gridNx3 = 2;
-
-      double L1 = gridNx1*blocknx1;
-      double L2, L3;
-      L2 = gridNx2*blocknx1;
-      L3 = gridNx3*blocknx1;
-
-
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<UbScheduler> restartSch(new UbScheduler(100000, 100000, 100000));
-      RestartCoProcessor rp(grid, restartSch, comm, pathname, RestartCoProcessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (grid->getTimeStep() == 0)
-      {
-
-         const int baseLevel = 0;
-
-         //bounding box
-         double d_minX1 = 0.0;
-         double d_minX2 = 0.0;
-         double d_minX3 = 0.0;
-
-         double d_maxX1 = L1;
-         double d_maxX2 = L2;
-         double d_maxX3 = L3;
-
-         double blockLength = blocknx1*dx;
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "uLB = " << uLB);
-            UBLOG(logINFO, "rhoLB = " << rhoLB);
-            UBLOG(logINFO, "nueLB = " << nuLB);
-            UBLOG(logINFO, "Re = " << Re);
-            UBLOG(logINFO, "dx = " << dx);
-            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
-            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         SPtr<GbObject3D> gridCube(new GbCuboid3D(d_minX1, d_minX2, d_minX3, d_maxX1, d_maxX2, d_maxX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         //sphere
-         //SPtr<GbObject3D> sphereRef(new GbSphere3D(L1/4.0, L2*0.5, L3*0.5, radius+1.0));
-         //GbSystem3D::writeGeoObject(sphereRef.get(),pathname + "/geo/sphereRef", WbWriterVtkXmlBinary::getInstance());
-
-         
-         //sphere
-         SPtr<GbObject3D> sphere(new GbSphere3D(L1 / 2.0, L2*0.5, L3*0.5, radius));
-         //SPtr<GbObject3D> sphere(new GbSphere3D(L1/2.0-4.0, L2*0.5+4.0, L3*0.5+4.0, radius));
-         //SPtr<GbObject3D> sphere(new GbCuboid3D(L1/4.0-radius, L2/2.0-radius, L3/2.0-radius, L1/4.0+radius, L2/2.0+radius, L3/2.0+radius));
-         GbSystem3D::writeGeoObject(sphere.get(), pathname + "/geo/sphere", WbWriterVtkXmlBinary::getInstance());
-
-         double off = 0.0;
-         SPtr<GbObject3D> refCube(new GbCuboid3D(sphere->getX1Minimum() - off, sphere->getX2Minimum() - off, sphere->getX3Minimum(),
-            sphere->getX1Maximum() + off, sphere->getX2Maximum() + off, sphere->getX3Maximum()));
-         if (myid == 0) GbSystem3D::writeGeoObject(refCube.get(), pathname + "/geo/refCube", WbWriterVtkXmlBinary::getInstance());
-
-         if (refineLevel > 0)
-         {
-            if (myid == 0) UBLOG(logINFO, "Refinement - start");
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel, comm);
-            refineHelper.addGbObject(sphere, refineLevel);
-            //refineHelper.addGbObject(refCube, refineLevel);
-            refineHelper.refine();
-            if (myid == 0) UBLOG(logINFO, "Refinement - end");
-         }
-
-         //walls
-         GbCuboid3DPtr addWallYmin(new GbCuboid3D(d_minX1 - 4.0*blockLength, d_minX2 - 4.0*blockLength, d_minX3 - 4.0*blockLength, d_maxX1 + 4.0*blockLength, d_minX2, d_maxX3 + 4.0*blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname + "/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(d_minX1 - 4.0*blockLength, d_minX2 - 4.0*blockLength, d_minX3 - 4.0*blockLength, d_maxX1 + 4.0*blockLength, d_maxX2 + 4.0*blockLength, d_minX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname + "/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallYmax(new GbCuboid3D(d_minX1 - 4.0*blockLength, d_maxX2, d_minX3 - 4.0*blockLength, d_maxX1 + 4.0*blockLength, d_maxX2 + 4.0*blockLength, d_maxX3 + 4.0*blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname + "/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(d_minX1 - 4.0*blockLength, d_minX2 - 4.0*blockLength, d_maxX3, d_maxX1 + 4.0*blockLength, d_maxX2 + 4.0*blockLength, d_maxX3 + 4.0*blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname + "/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(d_minX1 - 4.0*blockLength, d_minX2 - 4.0*blockLength, d_minX3 - 4.0*blockLength, d_minX1, d_maxX2 + 4.0*blockLength, d_maxX3 + 4.0*blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname + "/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(d_maxX1, d_minX2 - 4.0*blockLength, d_minX3 - 4.0*blockLength, d_maxX1 + 4.0*blockLength, d_maxX2 + 4.0*blockLength, d_maxX3 + 4.0*blockLength));
-         if (myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname + "/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         WriteBlocksSPtr<CoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-
-
-         //sphere
-         SPtr<D3Q27Interactor> sphereInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(sphere, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         //walls
-         SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlipBCAdapter, Interactor3D::SOLID));
-
-         mu::Parser fct;
-         fct.SetExpr("U");
-         fct.DefineConst("U", uLB);
-
-         //inflow
-         SPtr<D3Q27Interactor> inflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-         //D3Q27BoundaryConditionAdapterPtr denBCAdapterInflow(new D3Q27DensityBCAdapter(rhoLBinflow));
-         //denBCAdapterInflow->setSecondaryBcOption(0);
-         //SPtr<D3Q27Interactor> inflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoInflow, grid, denBCAdapterInflow, Interactor3D::SOLID));
-
-         //outflow
-         SPtr<D3Q27Interactor> outflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
-
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-         InteractorsHelper intHelper(grid, metisVisitor);
-         //intHelper.addInteractor(sphereInt);
-         intHelper.addInteractor(addWallYminInt);
-         intHelper.addInteractor(addWallZminInt);
-         intHelper.addInteractor(addWallYmaxInt);
-         intHelper.addInteractor(addWallZmaxInt);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.selectBlocks();
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //Block3DSPtr<ConnectorFactory> factory(new Block3DConnectorFactory());
-         //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
-         //grid->accept(setConnsVisitor);
-
-         ppblocks->process(0);
-         ppblocks.reset();
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nod = nob * (blocknx1 + gl) * (blocknx2 + gl) * (blocknx3 + gl);
-
-         double needMemAll = double(nod*(27 * sizeof(double) + sizeof(int) + sizeof(float) * 4));
-         double needMem = needMemAll / double(comm->getNumberOfProcesses());
-
-         if (myid == 0)
-         {
-            UBLOG(logINFO, "Number of blocks = " << nob);
-            UBLOG(logINFO, "Number of nodes  = " << nod);
-            UBLOG(logINFO, "Necessary memory  = " << needMemAll << " bytes");
-            UBLOG(logINFO, "Necessary memory per process = " << needMem << " bytes");
-            UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
-         }
-
-         SPtr<LBMKernel> kernel(new IncompressibleCumulantLBMKernel(blocknx1, blocknx2, blocknx3, IncompressibleCumulantLBMKernel::NORMAL));
-
-         SPtr<BCProcessor> bcProcessor(new BCProcessor());
-
-
-         kernel->setBCProcessor(bcProcessor);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         if (refineLevel > 0)
-         {
-            SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-         intHelper.setBC();
-
-         grid->accept(bcVisitor);
-
-         mu::Parser fctRoh;
-         fctRoh.SetExpr("(x1max-x1)/l*dp*3.0");
-         fctRoh.DefineConst("dp", dp_LB);
-         fctRoh.DefineConst("x1max", d_maxX1);
-         fctRoh.DefineConst("l", d_maxX1 - d_minX1);
-
-         //initialization of distributions
-         InitDistributionsBlockVisitor initVisitor(nuLB, rhoLB);
-         initVisitor.setVx1(fct);
-         //initVisitor.setRho(fctRoh);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         WriteBoundaryConditionsSPtr<CoProcessor> ppgeo(
-            new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-         ppgeo->process(0);
-         ppgeo.reset();;
-
-         if (myid == 0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         UBLOG(logINFO, "SetConnectors - start, id=" << myid);
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         //D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         SPtr<ConnectorFactory> cFactory(new Block3DConnectorFactory());
-         ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, cFactory);
-         grid->accept(setConnsVisitor);
-
-         UBLOG(logINFO, "SetConnectors - end, id=" << myid);
-      }
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outstep));
-      //stepSch->addSchedule(10000, 0, 1000000);
-      WriteMacroscopicQuantitiesCoProcessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv,comm);
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
-
-      const SPtr<ConcreteCalculatorFactory> calculatorFactory = std::make_shared<ConcreteCalculatorFactory>(stepSch);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endstep, calculatorFactory, CalculatorType::HYBRID));
-
-      if (myid == 0)
-         UBLOG(logINFO, "Simulation-start");
-
-      calculation->calculate();
-
-      if (myid == 0)
-         UBLOG(logINFO, "Simulation-end");
-
-   }
-   catch (std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch (std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch (...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if (argv != NULL)
-   {
-      if (argv[1] != NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout << "Configuration file is missing!" << endl;
-      }
-   }
-}
-
diff --git a/apps/cpu/stick/CMakeLists.txt b/apps/cpu/stick/CMakeLists.txt
deleted file mode 100644
index 8a8270faa4222ad583aa07ef2d1cb8e10622ba97..0000000000000000000000000000000000000000
--- a/apps/cpu/stick/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(stick)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(stick BINARY)
diff --git a/apps/cpu/stick/stick.cpp b/apps/cpu/stick/stick.cpp
deleted file mode 100644
index 108b9aa91940d9f4de8ce7500a961d3a3e3fb57f..0000000000000000000000000000000000000000
--- a/apps/cpu/stick/stick.cpp
+++ /dev/null
@@ -1,232 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <boost/pointer_cast.hpp>
-
-#include "vfluids.h"
-
-using namespace std;
-
-
-
-void main()
-{
-
-   try
-   {
-      string machine = QUOTEME(CAB_MACHINE);
-      string pathname = "d:/temp/stick"; 
-      int numOfThreads = 4;
-      double availMem = 10e9;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      double dx = 1;
-
-      const int blocknx1 = 10;
-      const int blocknx2 = 10;
-      const int blocknx3 = 10;
-
-      const int gridNx1 = 60;
-      const int gridNx2 = 1;
-      const int gridNx3 = 8;
-
-      double L1 = gridNx1*blocknx1;
-      double L2, L3;
-      L2 = gridNx2*blocknx1;
-      L3 = gridNx3*blocknx1;
-
-      LBMReal radius = 1.0*dx;
-      LBMReal uLB = 0.07;
-      LBMReal Re = 1000.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal nueLB = (uLB*1.0*radius)/Re;
-
-      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      Grid3DPtr grid(new Grid3D(comm));
-      grid->setDeltaX(dx);
-      grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-      grid->setPeriodicX1(false);
-      grid->setPeriodicX2(true);
-      grid->setPeriodicX3(false);
-
-      const int baseLevel = 0;
-      const int refineLevel = 0;
-
-      //bounding box
-      double d_minX1 = 0.0;
-      double d_minX2 = 0.0;
-      double d_minX3 = 0.0;
-
-      double d_maxX1 = L1;
-      double d_maxX2 = L2;
-      double d_maxX3 = L3;
-
-      double blockLength = blocknx1*dx;
-
-      if(myid ==0)
-      {
-         UBLOG(logINFO,"Parameters:");
-         UBLOG(logINFO,"uLB = " << uLB );
-         UBLOG(logINFO,"rhoLB = " << rhoLB );
-         UBLOG(logINFO,"nueLB = " << nueLB );
-         UBLOG(logINFO,"Re = " << Re );
-         UBLOG(logINFO,"dx = " << dx );
-         UBLOG(logINFO,"number of levels = " << refineLevel+1 );
-         UBLOG(logINFO,"numOfThreads = " << numOfThreads );
-         UBLOG(logINFO,"Preprozess - start");
-      }
-
-      GbObject3DPtr gridCube(new GbCuboid3D(d_minX1, d_minX2, d_minX3, d_maxX1, d_maxX2, d_maxX3));
-      if(myid ==0) GbSystem3D::writeGeoObject(gridCube.get(),pathname + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance()); 
-
-      GenBlocksGridVisitor genBlocks(gridCube);
-      grid->accept(genBlocks);
-
-      //cylinder
-      //GbObject3DPtr cylinder(new GbCylinder3D(L1/4.0, -2.0, radius, L1/4.0, L2+2.0, radius, radius));
-      //GbSystem3D::writeGeoObject(cylinder.get(),pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
-
-      GbCuboid3DPtr stick (new GbCuboid3D(L1/4.0, -2.0, 0.0, L1/4.0+150.0, L2+2.0, radius*3.0));
-      if(myid == 0) GbSystem3D::writeGeoObject(stick.get(), pathname+"/geo/stick", WbWriterVtkXmlASCII::getInstance());
-
-      //walls
-      GbCuboid3DPtr addWallZmin (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_minX3));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-
-      GbCuboid3DPtr addWallZmax (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_maxX3, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-
-      //inflow
-      GbCuboid3DPtr geoInflow (new GbCuboid3D(d_minX1-4.0*blockLength, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_minX1, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-
-      //outflow
-      GbCuboid3DPtr geoOutflow (new GbCuboid3D(d_maxX1, d_minX2-4.0*blockLength, d_minX3-4.0*blockLength, d_maxX1+4.0*blockLength, d_maxX2+4.0*blockLength, d_maxX3+4.0*blockLength));
-      if(myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-      BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname + "/grid/blocks", WbWriterVtkXmlBinary::getInstance(), comm));
-
-
-      //cylinder
-      int bbOption = 1; //0=simple Bounce Back, 1=quadr. BB
-      D3Q27BoundaryConditionAdapterPtr noSlip(new D3Q27NoSlipBCAdapter(bbOption));
-      D3Q27InteractorPtr cylinderInt = D3Q27InteractorPtr ( new D3Q27Interactor(stick, grid, noSlip,Interactor3D::SOLID));
-
-      //walls
-      D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlip,Interactor3D::SOLID));
-      D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlip,Interactor3D::SOLID));
-
-      mu::Parser fct;
-      fct.SetExpr("U");
-      fct.DefineConst("U", uLB);
-
-      //inflow
-      D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter (true, false ,false ,fct, 0, D3Q27BCFunction::INFCONST));
-      velBCAdapter->setSecondaryBcOption(2);
-      D3Q27InteractorPtr inflowInt  = D3Q27InteractorPtr( new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
-
-      //outflow
-      D3Q27BoundaryConditionAdapterPtr denBCAdapter(new D3Q27DensityBCAdapter(rhoLB));
-      D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr( new D3Q27Interactor(geoOutflow, grid, denBCAdapter,Interactor3D::SOLID));
-
-      Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
-      InteractorsHelper intHelper(grid, metisVisitor);
-      intHelper.addInteractor(cylinderInt);
-      intHelper.addInteractor(addWallZminInt);
-      intHelper.addInteractor(addWallZmaxInt);
-      intHelper.addInteractor(inflowInt);
-      intHelper.addInteractor(outflowInt);
-      intHelper.selectBlocks();
-
-      //domain decomposition for threads
-      PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-      grid->accept(pqPartVisitor);
-
-      ppblocks->update(0);
-      ppblocks.reset();
-
-      //set connectors
-      D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-      D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nueLB, iProcessor);
-      grid->accept( setConnsVisitor );
-
-      unsigned long nob = grid->getNumberOfBlocks();
-      int gl = 3;
-      unsigned long nod = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-
-      double needMemAll  = double(nod*(27*sizeof(double) + sizeof(int) + sizeof(float)*4));
-      double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"Number of blocks = " << nob);
-         UBLOG(logINFO,"Number of nodes  = " << nod);
-         UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-         UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-         UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-      }            
-
-      LBMKernel3DPtr kernel(new LBMKernelETD3Q27CCLB(blocknx1, blocknx2, blocknx3, LBMKernelETD3Q27CCLB::NORMAL));
-
-      BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      SetKernelBlockVisitor kernelVisitor(kernel, nueLB, availMem, needMem);
-      grid->accept(kernelVisitor);
-
-      intHelper.setBC();
-
-      //initialization of distributions
-      D3Q27ETInitDistributionsBlockVisitor initVisitor(nueLB, rhoLB);
-      initVisitor.setVx1(fct);
-      grid->accept(initVisitor);
-
-      //Postrozess
-      UbSchedulerPtr geoSch(new UbScheduler(1));
-      D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-         new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, true));
-      ppgeo->update(0);
-      ppgeo.reset();
-
-      if(myid == 0) UBLOG(logINFO,"Preprozess - end"); 
-
-      UbSchedulerPtr stepSch(new UbScheduler(10000));
-      //stepSch->addSchedule(1000, 0, 1000000);
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv);
-
-      //InSituVTKPostprocessor isp(grid, stepSch, "d:/Data/insituDemo/metafile.csv", conv);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
-      NUPSCounterPostprocessor npr(grid, nupsSch, pathname + "/results/nups.txt", comm);
-
-
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, 1000000, stepSch));
-
-      if(myid == 0) 
-         UBLOG(logINFO,"Simulation-start");
-
-      calculation->calculate();
-
-      if(myid == 0) 
-         UBLOG(logINFO,"Simulation-end");
-
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-
-
diff --git a/apps/cpu/teperm/CMakeLists.txt b/apps/cpu/teperm/CMakeLists.txt
deleted file mode 100644
index 848ac938ec07d34eb90797de7bdecdcc38728396..0000000000000000000000000000000000000000
--- a/apps/cpu/teperm/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(teperm)
-
-INCLUDE(${APPS_ROOT}/IncludsList.cmake) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(teperm BINARY)
diff --git a/apps/cpu/teperm/TE-PA80-110gradiert6mm_1.cfg b/apps/cpu/teperm/TE-PA80-110gradiert6mm_1.cfg
deleted file mode 100644
index 988ac261d2b0b2d889ce6707cf946d1686f7c547..0000000000000000000000000000000000000000
--- a/apps/cpu/teperm/TE-PA80-110gradiert6mm_1.cfg
+++ /dev/null
@@ -1,70 +0,0 @@
-#pathname = /work/i5042202/6mm_dir2_results/TE-PA80-110gradiertII/TE_3-part-1
-#pathGeo = /work/i5042202/data/6mm5parts/TE-PA80-110gradiert_II
-
-pathname = d:/temp/teperm
-pathGeo = d:/Data/teperm
-
-numOfThreads = 4
-availMem = 6e9
-logToFile = faöse
-
-#porous media
-rawFile = true
-#sampleFilename = /part1_345x447x447.raw
-sampleFilename = /part10_45x225x225.raw
-
-#diminsions [voxel]
-#pmNX1 = 345
-#pmNX2 = 447 
-#pmNX3 = 447
-
-pmNX1 = 45
-pmNX2 = 225 
-pmNX3 = 225
-
-
-#threshold
-lthreshold = 7874
-uthreshold = 65535
-
-#deltas [m]
-pmDeltaX1 = 13393e-9
-pmDeltaX2 = 13393e-9
-pmDeltaX3 = 13393e-9
-
-yDir = true
-zDir = false
-
-#grid
-blocknx = 30
-deltax = 13303.71333e-9
-
-spongeLayer=false
-
-#physic
-newPressure = false
-dp_LB = 1e-6
-newViscosity = false
-nu_LB = 0.01
-
-vx1=0
-vx2=0
-vx3=0
-
-timeSeriesFile = /timeseries/1
-timeSeriesOutTime = 1000
-
-newStart    = true
-restartStep = 1000
-chunk = 100
-
-cpStep  = 1000
-cpStepStart = 1000
-
-outTimeStep  = 1000
-outTimeStart = 1000
-
-nupsStep = 100 1000 10000000
-
-endTime = 1000
- 
diff --git a/apps/cpu/teperm/teperm.cpp b/apps/cpu/teperm/teperm.cpp
deleted file mode 100644
index b881495912710982a9944f6274ed037595b1442a..0000000000000000000000000000000000000000
--- a/apps/cpu/teperm/teperm.cpp
+++ /dev/null
@@ -1,601 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include <VirtualFluids.h>
-
-
-using namespace std;
-
-void changeDP()
-{
-}
-//////////////////////////////////////////////////////////////////////////
-void run(string configname)
-{
-   try
-   {
-      ConfigurationFile   config;
-      config.load(configname);
-
-      string          pathname = config.getString("pathname");
-      string          pathGeo = config.getString("pathGeo");
-      int             numOfThreads = config.getValue<int>("numOfThreads");
-      string          sampleFilename = config.getString("sampleFilename");
-      int             pmNX1 = config.getValue<int>("pmNX1");
-      int             pmNX2 = config.getValue<int>("pmNX2");
-      int             pmNX3 = config.getValue<int>("pmNX3");
-      double          lthreshold = config.getValue<double>("lthreshold");
-      double          uthreshold = config.getValue<double>("uthreshold");
-      //double          pmL1 = config.getValue<double>("pmL1");
-      //double          pmL2 = config.getValue<double>("pmL2");
-      //double          pmL3 = config.getValue<double>("pmL3");
-      int             blocknx = config.getValue<int>("blocknx");
-      //double          nx3 = config.getValue<double>("nx3");
-      double          dp_LB = config.getValue<double>("dp_LB");
-      double          nu_LB = config.getValue<double>("nu_LB");
-      string          timeSeriesFile = config.getString("timeSeriesFile");
-      double          restartStep = config.getValue<double>("restartStep");
-      //double          restartStepStart = config.getValue<double>("restartStepStart");
-      int          endTime = config.getValue<int>("endTime");
-      double          outTimeStep = config.getValue<double>("outTimeStep");
-      double          outTimeStart = config.getValue<double>("outTimeStart");
-      double          availMem = config.getValue<double>("availMem");
-      bool            rawFile = config.getValue<bool>("rawFile");
-      double          timeSeriesOutTime = config.getValue<double>("timeSeriesOutTime");
-      bool            logToFile = config.getValue<bool>("logToFile");
-      bool            spongeLayer = config.getValue<bool>("spongeLayer");
-      vector<double>  nupsStep = config.getVector<double>("nupsStep");
-      double          deltax = config.getValue<double>("deltax");
-      bool            newViscosity = config.getValue<bool>("newViscosity");
-      bool            newPressure = config.getValue<bool>("newPressure");
-      //bool            pmDeltas = config.getValue<bool>("pmDeltas");
-      double          pmDeltaX1 = config.getValue<double>("pmDeltaX1");
-      double          pmDeltaX2 = config.getValue<double>("pmDeltaX2");
-      double          pmDeltaX3 = config.getValue<double>("pmDeltaX3");
-      double          vx1 = config.getValue<double>("vx1");
-      double          vx2 = config.getValue<double>("vx2");
-      double          vx3 = config.getValue<double>("vx3");
-      bool            yDir = config.getValue<bool>("yDir");
-      bool            zDir = config.getValue<bool>("zDir");
-      double          cpStep = config.getValue<double>("cpStep");
-      double          cpStepStart = config.getValue<double>("cpStepStart");
-      bool            newStart = config.getValue<bool>("newStart");
-      int             chunk = config.getValue<int>("chunk");
-
-
-      SPtr<Communicator> comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      if (logToFile)
-      {
-#if defined(__unix__)
-         if (myid==0)
-         {
-            const char* str = pathname.c_str();
-            int status = mkdir(str, S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH);
-         }
-#endif 
-
-         if (myid==0)
-         {
-            stringstream logFilename;
-            logFilename<<pathname+"/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+".txt";
-            UbLog::output_policy::setStream(logFilename.str());
-         }
-      }
-
-      if (myid==0) UBLOG(logINFO, "Testcase permeability");
-
-      //string machinename = UbSystem::getMachineName();
-      //UBLOG(logINFO, "PID = " << myid << " Hostname: " << machinename);
-      //UBLOG(logINFO, "PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-      //UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-      //UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-
-      int blocknx1 = blocknx;
-      int blocknx2 = blocknx;
-      int blocknx3 = blocknx;
-
-      LBMReal rho_LB = 0.0;
-      double rhoLBinflow = dp_LB*3.0;
-
-      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
-
-      const int baseLevel = 0;
-
-      double coord[6];
-      //double deltax;
-
-      SPtr<Grid3D> grid(new Grid3D(comm));
-
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel());
-      SPtr<BCProcessor> bcProc;
-      bcProc = SPtr<BCProcessor>(new ThinWallBCProcessor());
-      kernel->setBCProcessor(bcProc);
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      SPtr<UbScheduler> rSch(new UbScheduler(cpStep, cpStepStart));
-      SPtr<MPIIORestartCoProcessor> restartCoProcessor(new MPIIORestartCoProcessor(grid, rSch, pathname, comm));
-      restartCoProcessor->setLBMKernel(kernel);
-      restartCoProcessor->setBCProcessor(bcProc);
-      //////////////////////////////////////////////////////////////////////////
-
-      //BC Adapter
-      //////////////////////////////////////////////////////////////////////////////
-      SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
-      noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new ThinWallNoSlipBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapterInflow(new DensityBCAdapter(rhoLBinflow));
-      denBCAdapterInflow->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-
-      SPtr<BCAdapter> denBCAdapterOutflow(new DensityBCAdapter(rho_LB));
-      denBCAdapterOutflow->setBcAlgorithm(SPtr<BCAlgorithm>(new NonEqDensityBCAlgorithm()));
-      //////////////////////////////////////////////////////////////////////////////////
-      //BS visitor
-      BoundaryConditionsBlockVisitor bcVisitor;
-      bcVisitor.addBC(noSlipBCAdapter);
-      bcVisitor.addBC(denBCAdapterInflow);
-      bcVisitor.addBC(denBCAdapterOutflow);
-
-      if (newStart)
-      {
-         if (myid==0) UBLOG(logINFO, "new start..");
-         if (myid==0) UBLOG(logINFO, "preprocess start..");
-
-         //UBLOG(logINFO, "new start PID = " << myid << " Hostname: " << machinename);
-         //UBLOG(logINFO, "new start PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         //UBLOG(logINFO, "new start PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         //UBLOG(logINFO, "new start PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-
-         string samplePathname = pathGeo+sampleFilename;
-
-         double deltaVoxelX1 = pmDeltaX1;
-         double deltaVoxelX2 = pmDeltaX2;
-         double deltaVoxelX3 = pmDeltaX3;
-
-         if (myid==0) UBLOG(logINFO, "read voxel matrix: start");
-         ////////////////////////////////////////////////////////////////////////////////////////////////////////////         
-         SPtr<GbVoxelMatrix3D> sample1(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-         if (rawFile)
-         {
-            sample1->readMatrixFromRawFile<unsigned short>(samplePathname, GbVoxelMatrix3D::BigEndian);
-         }
-         else
-         {
-            sample1->readMatrixFromVtiASCIIFile(samplePathname);
-         }
-         sample1->setVoxelMatrixDelta((float)deltaVoxelX1, (float)deltaVoxelX2, (float)deltaVoxelX3);
-         sample1->setVoxelMatrixMininum(0.0, 0.0, 0.0);
-
-         if (myid==0) UBLOG(logINFO, "sample1: rotate voxel matrix: start");
-         if (yDir)
-         {
-            sample1->rotate90aroundZ();
-         }
-         else if (zDir)
-         {
-            sample1->rotate90aroundY();
-         }
-         if (myid==0) UBLOG(logINFO, "sample1: rotate voxel matrix: end");
-         
-         if (myid==0) sample1->writeToVTKImageDataAppended(pathname+"/geo/sample1");
-///////////////////////////////////////////////////////////////////////////////////////////////////////////         
-         SPtr<GbVoxelMatrix3D> sample2(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-         if (rawFile)
-         {
-            sample2->readMatrixFromRawFile<unsigned short>(samplePathname, GbVoxelMatrix3D::BigEndian);
-         }
-         else
-         {
-            sample2->readMatrixFromVtiASCIIFile(samplePathname);
-         }
-         sample2->setVoxelMatrixDelta((float)deltaVoxelX1, (float)deltaVoxelX2, (float)deltaVoxelX3);
-         sample2->setVoxelMatrixMininum(0.0, sample1->getX2Maximum(), 0.0);
-         if (myid==0) UBLOG(logINFO, "read voxel matrix: end");
-
-         if (myid==0) UBLOG(logINFO, "sample2: rotate voxel matrix: start");
-         if (yDir)
-         {
-            sample2->rotate90aroundZ();
-            sample2->setVoxelMatrixMinX2(sample1->getX2Maximum());
-         }
-         else if (zDir)
-         {
-            sample2->rotate90aroundY();
-         }
-
-         sample2->mirrorY();
-
-         if (myid==0) UBLOG(logINFO, "sample2: rotate voxel matrix: end");
-
-         if (myid==0) sample2->writeToVTKImageDataAppended(pathname+"/geo/sample2");
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         SPtr<GbVoxelMatrix3D> sample3(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-         if (rawFile)
-         {
-            sample3->readMatrixFromRawFile<unsigned short>(samplePathname, GbVoxelMatrix3D::BigEndian);
-         }
-         else
-         {
-            sample3->readMatrixFromVtiASCIIFile(samplePathname);
-         }
-         sample3->setVoxelMatrixDelta((float)deltaVoxelX1, (float)deltaVoxelX2, (float)deltaVoxelX3);
-         sample3->setVoxelMatrixMininum(0.0, 0.0, sample1->getX3Maximum());
-         if (myid == 0) UBLOG(logINFO, "read voxel matrix: end");
-
-         if (myid==0) UBLOG(logINFO, "sample3: rotate voxel matrix: start");
-         if (yDir)
-         {
-            sample3->rotate90aroundZ();
-         }
-         else if (zDir)
-         {
-            sample3->rotate90aroundY();
-         }
-         sample3->mirrorZ();
-         if (myid==0) UBLOG(logINFO, "sample3: rotate voxel matrix: end");
-
-         if (myid==0) sample3->writeToVTKImageDataAppended(pathname+"/geo/sample3");
-
-         ////////////////////////////////////////////////////////////////////////////////////////////////////////////         
-         SPtr<GbVoxelMatrix3D> sample4(new GbVoxelMatrix3D(pmNX1, pmNX2, pmNX3, 0, lthreshold, uthreshold));
-         if (rawFile)
-         {
-            sample4->readMatrixFromRawFile<unsigned short>(samplePathname, GbVoxelMatrix3D::BigEndian);
-         }
-         else
-         {
-            sample4->readMatrixFromVtiASCIIFile(samplePathname);
-         }
-         sample4->setVoxelMatrixDelta((float)deltaVoxelX1, (float)deltaVoxelX2, (float)deltaVoxelX3);
-         sample4->setVoxelMatrixMininum(0.0, sample1->getX1Maximum(), sample1->getX3Maximum());
-         if (myid == 0) UBLOG(logINFO, "read voxel matrix: end");
-
-         if (myid==0) UBLOG(logINFO, "sample4: rotate voxel matrix: start");
-
-         if (yDir)
-         {
-            sample4->rotate90aroundZ();
-            sample4->setVoxelMatrixMinX2(sample1->getX2Maximum());
-            sample4->setVoxelMatrixMinX3(sample1->getX3Maximum());
-         }
-         else if (zDir)
-         {
-            sample4->rotate90aroundY();
-         }
-         sample4->mirrorY();
-         sample4->mirrorZ();
-         if (myid==0) UBLOG(logINFO, "sample4: rotate voxel matrix: end");
-
-         if (myid==0) sample4->writeToVTKImageDataAppended(pathname+"/geo/sample4");
-
-         ///////////////////////////////////////////////////////
-
-         ////////////////////////////////////////////////////////////////////////
-
-         double offset1 = sample1->getLengthX1()/10.0;
-         double offset2 = 2.0*offset1;
-         //double offset2 = offset1;
-         //bounding box
-         double g_minX1 = sample1->getX1Minimum()-offset1;
-         double g_minX2 = sample1->getX2Minimum()-0.5*deltax;
-         double g_minX3 = sample1->getX3Minimum()-0.5*deltax;
-
-         double g_maxX1 = sample1->getX1Maximum()+offset2;
-         double g_maxX2 = sample4->getX2Maximum()-0.5*deltax;
-         double g_maxX3 = sample4->getX3Maximum()-0.5*deltax;
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "g_minX1="<<g_minX1<<",g_minX2="<<g_minX2<<",g_minX3="<<g_minX3<<",g_maxX1="<<g_maxX1<<",g_maxX2="<<g_maxX2<<",g_maxX3="<<g_maxX3);
-         }
-
-         double blockLength = (double)blocknx1*deltax;
-
-         grid->setPeriodicX1(false);
-         grid->setPeriodicX2(true);
-         grid->setPeriodicX3(true);
-         grid->setDeltaX(deltax);
-         grid->setBlockNX(blocknx1, blocknx2, blocknx3);
-
-         SPtr<GbObject3D> gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if (myid==0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlBinary::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Parameters:");
-            UBLOG(logINFO, "rho_LB = "<<rho_LB);
-            UBLOG(logINFO, "nu_LB = "<<nu_LB);
-            UBLOG(logINFO, "dp_LB = "<<dp_LB);
-            UBLOG(logINFO, "dx = "<<deltax<<" m");
-            UBLOG(logINFO, "numOfThreads = "<<numOfThreads);
-            UBLOG(logINFO, "path = "<<pathname);
-            UBLOG(logINFO, "Preprozess - start");
-         }
-
-         //inflow
-         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoInflow.get(), pathname+"/geo/geoInflow", WbWriterVtkXmlASCII::getInstance());
-         //outflow
-         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_maxX1, g_minX2-blockLength, g_minX3-blockLength, g_maxX1+blockLength, g_maxX2+blockLength, g_maxX3+blockLength));
-         if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
-
-         SPtr<WriteBlocksCoProcessor> ppblocks(new WriteBlocksCoProcessor(grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-
-         //PM interactor
-         SPtr<D3Q27Interactor> sample1Int(new D3Q27Interactor(sample1, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> sample2Int(new D3Q27Interactor(sample2, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> sample3Int(new D3Q27Interactor(sample3, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         SPtr<D3Q27Interactor> sample4Int(new D3Q27Interactor(sample4, grid, noSlipBCAdapter, Interactor3D::SOLID));
-         //inflow
-         SPtr<D3Q27Interactor> inflowInt(new D3Q27Interactor(geoInflow, grid, denBCAdapterInflow, Interactor3D::SOLID));
-         //outflow
-         SPtr<D3Q27Interactor> outflowInt(new D3Q27Interactor(geoOutflow, grid, denBCAdapterOutflow, Interactor3D::SOLID));
-
-         ////////////////////////////////////////////
-         //METIS
-         SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::RECURSIVE));
-         ////////////////////////////////////////////
-
-         /////delete solid blocks
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         intHelper.addInteractor(inflowInt);
-         intHelper.addInteractor(outflowInt);
-         intHelper.addInteractor(sample1Int);
-         intHelper.addInteractor(sample2Int);
-         intHelper.addInteractor(sample3Int);
-         intHelper.addInteractor(sample4Int);
-         intHelper.selectBlocks();
-         if (myid==0) UBLOG(logINFO, "deleteSolidBlocks - end");
-         //////////////////////////////////////
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         ppblocks->process(0);
-         ppblocks.reset();
-
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         int gl = 3;
-         unsigned long nodb = (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nod = nob * (blocknx1)* (blocknx2)* (blocknx3);
-         unsigned long nodg = nob * (blocknx1+gl) * (blocknx2+gl) * (blocknx3+gl);
-         double needMemAll = double(nodg*(27*sizeof(double)+sizeof(int)+sizeof(float)*4));
-         double needMem = needMemAll/double(comm->getNumberOfProcesses());
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Number of blocks = "<<nob);
-            UBLOG(logINFO, "Number of nodes  = "<<nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for (int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO, "Number of blocks for level "<<level<<" = "<<nobl);
-               UBLOG(logINFO, "Number of nodes for level "<<level<<" = "<<nobl*nodb);
-            }
-            UBLOG(logINFO, "Necessary memory  = "<<needMemAll<<" bytes");
-            UBLOG(logINFO, "Necessary memory per process = "<<needMem<<" bytes");
-            UBLOG(logINFO, "Available memory per process = "<<availMem<<" bytes");
-         }
-
-         kernel->setBCProcessor(bcProc);
-
-         SetKernelBlockVisitor kernelVisitor(kernel, nu_LB, availMem, needMem);
-         grid->accept(kernelVisitor);
-
-         //BC
-         intHelper.setBC();
-
-         //BS visitor
-         grid->accept(bcVisitor);
-
-         //Press*1.6e8+(14.76-coordsX)/3.5*5000
-         //initialization of distributions
-         mu::Parser fct;
-         fct.SetExpr("(x1max-x1)/l*dp*3.0");
-         fct.DefineConst("dp", dp_LB);
-         fct.DefineConst("x1max", g_maxX1);
-         fct.DefineConst("l", g_maxX1-g_minX1);
-
-         InitDistributionsBlockVisitor initVisitor;
-         initVisitor.setRho(fct);
-         grid->accept(initVisitor);
-
-         //Postrozess
-         SPtr<UbScheduler> geoSch(new UbScheduler(1));
-         SPtr<WriteBoundaryConditionsCoProcessor> ppgeo(
-            new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-         ppgeo->process(0);
-         ppgeo.reset();
-
-         coord[0] = sample1->getX1Minimum();
-         coord[1] = sample1->getX2Minimum();
-         coord[2] = sample1->getX3Minimum();
-         coord[3] = sample4->getX1Maximum();
-         coord[4] = sample4->getX2Maximum();
-         coord[5] = sample4->getX3Maximum();
-
-         ////////////////////////////////////////////////////////
-         UbFileOutputASCII outf(pathname+"/checkpoints/coord.txt");
-         outf.writeDouble(deltax);
-         outf.writeDouble(coord[0]);
-         outf.writeDouble(coord[1]);
-         outf.writeDouble(coord[2]);
-         outf.writeDouble(coord[3]);
-         outf.writeDouble(coord[4]);
-         outf.writeDouble(coord[5]);
-         outf.writeDouble(g_minX1);
-         outf.writeDouble(g_maxX1);
-         outf.writeDouble(availMem);
-         outf.writeDouble(needMem);
-         ////////////////////////////////////////////////////////
-
-         grid->addInteractor(inflowInt);
-
-         if (myid==0) UBLOG(logINFO, "Preprozess - end");
-      }
-      else
-      {
-         ////////////////////////////////////////////////////////
-         UbFileInputASCII inf(pathname+"/checkpoints/coord.txt");
-         deltax = inf.readDouble();
-         coord[0] = inf.readDouble();
-         coord[1] = inf.readDouble();
-         coord[2] = inf.readDouble();
-         coord[3] = inf.readDouble();
-         coord[4] = inf.readDouble();
-         coord[5] = inf.readDouble();
-         double g_minX1 = inf.readDouble();
-         double g_maxX1 = inf.readDouble();
-         double availMem = inf.readDouble();
-         double needMem = inf.readDouble();
-         ////////////////////////////////////////////////////////
-
-         restartCoProcessor->restart((int)restartStep);
-         grid->setTimeStep(restartStep);
-
-
-         //new nu
-         //if (newViscosity)
-         //{
-         //   ViscosityBlockVisitor nuVisitor(nu_LB);
-         //   grid->accept(nuVisitor);
-         //}
-
-         ////new dp
-         //if (newPressure)
-         //{
-         //   Grid3D::Interactor3DSet interactors = grid->getInteractors();
-         //   interactors[0]->setGrid3D(grid);
-         //   boost::dynamic_pointer_cast<D3Q27Interactor>(interactors[0])->deleteBCAdapter();
-         //   BCAdapterPtr denBCAdapterFront(new DensityBCAdapter(rhoLBinflow));
-         //   denBCAdapterFront->setBcAlgorithm(BCAlgorithmPtr(new EqDensityBCAlgorithm()));
-         //   boost::dynamic_pointer_cast<D3Q27Interactor>(interactors[0])->addBCAdapter(denBCAdapterFront);
-         //   interactors[0]->updateInteractor();
-         //}
-
-         if (myid==0)
-         {
-            UBLOG(logINFO, "Parameters:");         UBLOG(logINFO, "PID = "<<myid<<" Total Physical Memory (RAM): "<<Utilities::getTotalPhysMem());
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used: "<<Utilities::getPhysMemUsed());
-            UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe());
-            UBLOG(logINFO, "rho_LB = "<<rho_LB);
-            UBLOG(logINFO, "nu_LB = "<<nu_LB);
-            UBLOG(logINFO, "dp_LB = "<<dp_LB);
-            UBLOG(logINFO, "dx = "<<deltax<<" m");
-         }
-
-         //set connectors
-         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
-         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nu_LB, iProcessor);
-         grid->accept(setConnsVisitor);
-
-         //domain decomposition for threads
-         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-         grid->accept(pqPartVisitor);
-
-         //BS visitor
-         grid->accept(bcVisitor);
-
-         if (myid==0) UBLOG(logINFO, "Restart - end");
-      }
-
-
-
-      SPtr<UbScheduler> nupsSch(new UbScheduler(nupsStep[0], nupsStep[1], nupsStep[2]));
-      //nupsSch->addSchedule(nupsStep[0], nupsStep[1], nupsStep[2]);
-      SPtr<NUPSCounterCoProcessor> npr(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
-
-      SPtr<UbScheduler> stepSch(new UbScheduler(outTimeStep, outTimeStart));
-
-      SPtr<WriteMacroscopicQuantitiesCoProcessor> pp(new WriteMacroscopicQuantitiesCoProcessor(grid, stepSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
-
-      deltax = grid->getDeltaX(baseLevel);
-      double dxd2 = deltax/2.0;
-
-      SPtr<IntegrateValuesHelper> ih1(new IntegrateValuesHelper(grid, comm, coord[0]-dxd2*10.0, coord[1]-dxd2, coord[2]-dxd2,
-         coord[0]-dxd2*10.0-2.0*dxd2, coord[4]+dxd2, coord[5]+dxd2));
-
-      SPtr<IntegrateValuesHelper> ih2(new IntegrateValuesHelper(grid, comm, coord[0], coord[1], coord[2], coord[3], coord[4], coord[5]));
-
-      SPtr<IntegrateValuesHelper> ih3(new IntegrateValuesHelper(grid, comm, coord[3]+dxd2*10.0, coord[1]-dxd2, coord[2]-dxd2,
-         coord[3]+dxd2*10.0+2.0*dxd2, coord[4]+dxd2, coord[5]+dxd2));
-
-      if (myid==0) GbSystem3D::writeGeoObject(ih1->getBoundingBox().get(), pathname+"/geo/ih1", WbWriterVtkXmlBinary::getInstance());
-      if (myid==0) GbSystem3D::writeGeoObject(ih2->getBoundingBox().get(), pathname+"/geo/ih2", WbWriterVtkXmlBinary::getInstance());
-      if (myid==0) GbSystem3D::writeGeoObject(ih3->getBoundingBox().get(), pathname+"/geo/ih3", WbWriterVtkXmlBinary::getInstance());
-
-      double factorp = 1; // dp_real / dp_LB;
-      double factorv = 1;// dx / dt;
-      SPtr<UbScheduler> stepMV(new UbScheduler(timeSeriesOutTime));
-
-      SPtr<TimeseriesCoProcessor> tsp1(new TimeseriesCoProcessor(grid, stepMV, ih1, pathname+timeSeriesFile+"_1", comm));
-      SPtr<TimeseriesCoProcessor> tsp2(new TimeseriesCoProcessor(grid, stepMV, ih2, pathname+timeSeriesFile+"_2", comm));
-      SPtr<TimeseriesCoProcessor> tsp3(new TimeseriesCoProcessor(grid, stepMV, ih3, pathname+timeSeriesFile+"_3", comm));
-
-      if (myid==0)
-      {
-         UBLOG(logINFO, "PID = "<<myid<<" Total Physical Memory (RAM): "<<Utilities::getTotalPhysMem());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used: "<<Utilities::getPhysMemUsed());
-         UBLOG(logINFO, "PID = "<<myid<<" Physical Memory currently used by current process: "<<Utilities::getPhysMemUsedByMe());
-      }
-
-      omp_set_num_threads(numOfThreads);
-      SPtr<Calculator> calculator(new BasicCalculator(grid, stepSch, endTime));
-      calculator->addCoProcessor(npr);
-      calculator->addCoProcessor(restartCoProcessor);
-      calculator->addCoProcessor(pp);
-      calculator->addCoProcessor(tsp1);
-      calculator->addCoProcessor(tsp2);
-      calculator->addCoProcessor(tsp3);
-      if (myid==0) UBLOG(logINFO, "Simulation-start");
-      calculator->calculate();
-      if (myid==0) UBLOG(logINFO, "Simulation-end");
-   }
-   catch (exception& e)
-   {
-      cerr<<e.what()<<endl<<flush;
-   }
-   catch (string& s)
-   {
-      cerr<<s<<endl;
-   }
-   catch (...)
-   {
-      cerr<<"unknown exception"<<endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-
-   if (argv!=NULL)
-   {
-      if (argv[1]!=NULL)
-      {
-         run(string(argv[1]));
-      }
-      else
-      {
-         cout<<"Configuration file is missing!"<<endl;
-      }
-   }
-
-   return 0;
-}
diff --git a/apps/cpu/town/CMakeLists.txt b/apps/cpu/town/CMakeLists.txt
deleted file mode 100644
index 8cb7da8a658ce538b6f7edc8d83183d0912b811b..0000000000000000000000000000000000000000
--- a/apps/cpu/town/CMakeLists.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(town)
-
-INCLUDE(${SOURCE_ROOT}/lib/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES vfluids)
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(town BINARY)
diff --git a/apps/cpu/town/town.cpp b/apps/cpu/town/town.cpp
deleted file mode 100644
index 0aa0f289ccb6a229ab29d7b76fb5ba15b8656062..0000000000000000000000000000000000000000
--- a/apps/cpu/town/town.cpp
+++ /dev/null
@@ -1,464 +0,0 @@
-#include <iostream>
-#include <string>
-#include <math.h> 
-
-#include <vfluids.h>
-
-using namespace std;
-
-void run(const char *cstr1, const char *cstr2)
-{
-   try
-   {
-      string pathname; 
-      string pathGeo;
-      string pathLog;
-      int numOfThreads = 1;
-      bool logfile = false;
-      stringstream logFilename;
-      double availMem = 0;
-
-      CommunicatorPtr comm = MPICommunicator::getInstance();
-      int myid = comm->getProcessID();
-
-      string machine = string(cstr1);
-
-      if(machine == "my") 
-      {
-         //Sleep(30000);
-         pathname = "d:/temp/town";
-         pathGeo = "d:/Data/town";
-         pathLog = "d:/temp/town";
-         numOfThreads = 1;
-         logfile = false;
-         availMem = 15.0e9;
-      }
-      else if(machine == "Ludwig")      
-      {
-         pathname = "/work/koskuche/town";
-         pathGeo = "/home/koskuche/data/town";
-         pathLog = pathname;
-         numOfThreads = 8;
-         availMem = 12.0e9;///8*numOfThreads;
-         logfile = true;
-      }
-      else if(machine == "HLRS")      
-      {
-         pathname = "/univ_1/ws1/ws/xrmkuchr-plate3-0";
-         pathGeo = "/zhome/academic/HLRS/xrm/xrmkuchr/data/plate";
-         pathLog = "/zhome/academic/HLRS/xrm/xrmkuchr/work/plate";
-         numOfThreads = 16;
-         availMem = 2.0e9;
-         logfile = true;
-      }
-      else if(machine == "HLRN")      
-      {
-         pathname = "/gfs1/work/niivfcpu/scratch/plateEx";
-         pathGeo = "/gfs1/work/niivfcpu/data/plate";
-         pathLog = pathname;
-         numOfThreads = 24;
-         availMem = 64.0e9/24.0*numOfThreads;
-         logfile = true;
-      }
-      else throw UbException(UB_EXARGS, "unknown CAB_MACHINE");
-
-#if defined(__unix__)
-      if (myid==0) 
-      {
-         const char* str = pathLog.c_str();
-         int status=mkdir(str, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
-      }
-#endif 
-
-      if(myid == 0 && logfile)
-      {
-         //UbLog::reportingLevel() = logDEBUG5;
-         logFilename <<  pathLog + "/logfile"+UbSystem::toString(UbSystem::getTimeStamp())+"_"+UbSystem::toString(myid)+".txt";
-         UbLog::output_policy::setStream(logFilename.str());
-      }
-
-      if(myid==0) UBLOG(logINFO,"Testcase town");
-
-      //string townFilename = pathGeo + "/Manhattan.stl";
-      string townFilename = pathGeo + "/town.stl"; 
-
-
-      ///////////////Knotenabmessungen:
-      int blocknx[3], nx[3];
-      blocknx[0] = 8;
-      blocknx[1] = 8;
-      blocknx[2] = 8;
-
-      nx[0] = 12;
-      nx[1] = 12;
-      nx[2] = 3;
-
-      int baseLevel   = 0;
-      int refineLevel = 2;
-
-      LBMUnitConverterPtr unitConverter = LBMUnitConverterPtr(new LBMUnitConverter());
-
-      //////////////////////////////////////////////////////////////////////////
-      //physik
-      //////////////////////////////////////////////////////////////////////////
-      LBMReal uLB = 0.05;
-      LBMReal rhoLB = 0.0;
-      LBMReal nuLB = 1e-5;
-
-      Grid3DPtr grid(new Grid3D(comm));
-
-      //////////////////////////////////////////////////////////////////////////
-      //restart
-      UbSchedulerPtr rSch(new UbScheduler(1000,1000,10000000));
-      RestartPostprocessor rp(grid, rSch, comm, pathname, RestartPostprocessor::BINARY);
-      //////////////////////////////////////////////////////////////////////////
-
-      if (grid->getTimeStep() == 0)
-      {
-
-         if(myid==0) UBLOG(logINFO,"Neustart..");
-
-         //////////////////////////////////////////////////////////////////////////
-         //town
-         GbTriFaceMesh3DPtr town(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(townFilename, "Netz"));
-         if(myid == 0) GbSystem3D::writeGeoObject( town.get(), pathname+"/geo/town", WbWriterVtkXmlBinary::getInstance() );
-         //////////////////////////////////////////////////////////////////////////
-
-         //double cdx = 0.8;
-         double cdx = town->getX3Maximum() / (double)(nx[2] * blocknx[2]);
-         double fdx = cdx/double(1<<refineLevel);
- 
-         double blockLengthx = blocknx[0]*cdx; //geowerte
-
-         double geoLength[] = { nx[0] * blockLengthx, nx[1] * blockLengthx, nx[2] * blockLengthx };
-
-         double originX1 = town->getX1Minimum();
-         double originX2 = town->getX2Minimum();
-         double originX3 = town->getX3Minimum();
-
-
-         bool periodicx1 = true;
-         bool periodicx2 = true;
-         bool periodicx3 = false;
-
-         //bounding box
-         double g_minX1 = originX1-3.0*blockLengthx;
-         double g_minX2 = originX2-3.0*blockLengthx;
-         double g_minX3 = originX3;
-
-         double g_maxX1 = originX1 + geoLength[0]+3.0*blockLengthx;
-         double g_maxX2 = originX2 + geoLength[1]+1.0*blockLengthx;
-         double g_maxX3 = originX3 + geoLength[2]+2.0*blockLengthx;
-
-         //double g_maxX1 = town->getX1Maximum()+blockLengthx;
-         //double g_maxX2 = town->getX2Maximum()+2.0*blockLengthx;
-         //double g_maxX3 = town->getX3Maximum()+2.0*blockLengthx;
-
-
-         //set grid
-         grid->setDeltaX(cdx);
-         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
-         grid->setPeriodicX1(periodicx1);
-         grid->setPeriodicX2(periodicx2);
-         grid->setPeriodicX3(periodicx3);
-
-         GbObject3DPtr gridCube(new GbCuboid3D(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3));
-         if(myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), pathname+"/geo/gridCube", WbWriterVtkXmlASCII::getInstance());
-
-         GenBlocksGridVisitor genBlocks(gridCube);
-         grid->accept(genBlocks);
-
-
-         //////////////////////////////////////////////////////////////////////////
-         if(myid == 0)
-         {
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* Parameters                            *");
-            //UBLOG(logINFO, "* Re            ="<<Re);
-            UBLOG(logINFO, "* nuLB          ="<<nuLB);
-            UBLOG(logINFO, "* uLB           ="<<uLB);
-            UBLOG(logINFO, "* cdx           ="<<cdx);
-            UBLOG(logINFO, "* fdx           ="<<fdx);
-            UBLOG(logINFO, "* blocknx1/2/3  ="<<blocknx[0]<<"/"<<blocknx[1]<<"/"<<blocknx[2]);
-            UBLOG(logINFO, "* x1Periodic    ="<<periodicx1);
-            UBLOG(logINFO, "* x2Periodic    ="<<periodicx2);
-            UBLOG(logINFO, "* x3Periodic    ="<<periodicx3);
-            UBLOG(logINFO, "* number of levels  ="<<refineLevel+1);
-            UBLOG(logINFO, "* path          ="<<pathname);
-
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "* number of threads    ="<<numOfThreads);
-            UBLOG(logINFO, "* number of processes  ="<<comm->getNumberOfProcesses());
-            UBLOG(logINFO, "*****************************************");
-            UBLOG(logINFO, "*****************************************");     
-         }
-         //////////////////////////////////////////////////////////////////////////
-
-
-         //////////////////////////////////////////////////////////////////////////
-         //refinement
-
-         /////////////////////////////////////////////////
-         ///interactor
-         int bbOption1 = 1; //0=simple Bounce Back, 1=quadr. BB
-         D3Q27BoundaryConditionAdapterPtr bcNoSlip(new D3Q27NoSlipBCAdapter(bbOption1));
-         D3Q27TriFaceMeshInteractorPtr triTownInteractor(new D3Q27TriFaceMeshInteractor(town, grid, bcNoSlip, Interactor3D::SOLID));
-
-         GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLengthx, g_minX2-blockLengthx, g_maxX3, g_maxX1+blockLengthx, g_maxX2+blockLengthx, g_maxX3+blockLengthx));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr velBCInteractor(new D3Q27Interactor(addWallZmax, grid, Interactor3D::SOLID));
-
-         double raiseVelSteps = 0;
-         vector<D3Q27BCFunction> velcX2BCs, dummy;
-
-         mu::Parser inflowProfile;
-         inflowProfile.SetExpr("uLB");
-         inflowProfile.DefineConst("uLB", uLB);
-         velcX2BCs.push_back(D3Q27BCFunction(inflowProfile, raiseVelSteps, D3Q27BCFunction::INFCONST));
-
-         D3Q27BoundaryConditionAdapterPtr velBCAdapter(new D3Q27VelocityBCAdapter(dummy, velcX2BCs, dummy));
-         velBCInteractor->addBCAdapter(velBCAdapter);
-
-         GbCuboid3DPtr addWallZmin(new GbCuboid3D(g_minX1-blockLengthx, g_minX2-blockLengthx, g_minX3-blockLengthx, g_maxX1+blockLengthx, g_maxX2+blockLengthx, g_minX3));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallZmin.get(), pathname+"/geo/addWallZmin", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr addWallZminInt(new D3Q27Interactor(addWallZmin, grid, bcNoSlip, Interactor3D::SOLID));
-
-         //GbCuboid3DPtr addWallZmax(new GbCuboid3D(g_minX1-blockLengthx, g_minX2-blockLengthx, g_maxX3, g_maxX1+blockLengthx, g_maxX2+blockLengthx, g_maxX3+blockLengthx));
-         //if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathname+"/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance());
-         //D3Q27InteractorPtr addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, bcNoSlip, Interactor3D::SOLID));
-
-         GbCuboid3DPtr addWallYmin(new GbCuboid3D(g_minX1-blockLengthx, g_minX2-blockLengthx, g_minX3-blockLengthx, g_maxX1+blockLengthx, g_minX2, g_maxX3+blockLengthx));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmin.get(), pathname+"/geo/addWallYmin", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr addWallYminInt(new D3Q27Interactor(addWallYmin, grid, bcNoSlip, Interactor3D::SOLID));
-
-         GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1-blockLengthx, g_minX2-blockLengthx, g_maxX3, g_maxX1+blockLengthx, g_maxX2+blockLengthx, g_maxX3+blockLengthx));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname+"/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, bcNoSlip, Interactor3D::SOLID));
-
-         GbCuboid3DPtr addWallXmin(new GbCuboid3D(g_minX1-blockLengthx, g_minX2-blockLengthx, g_minX3-blockLengthx, g_minX1, g_maxX2+blockLengthx, g_maxX3+blockLengthx));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallXmin.get(), pathname+"/geo/addWallXmin", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr addWallXminInt(new D3Q27Interactor(addWallXmin, grid, bcNoSlip, Interactor3D::SOLID));
-
-         GbCuboid3DPtr addWallXmax(new GbCuboid3D(g_maxX1, g_minX2-blockLengthx, g_minX3-blockLengthx, g_maxX1+blockLengthx, g_maxX2+blockLengthx, g_maxX3+blockLengthx));
-         if (myid == 0) GbSystem3D::writeGeoObject(addWallXmax.get(), pathname+"/geo/addWallXmax", WbWriterVtkXmlASCII::getInstance());
-         D3Q27InteractorPtr addWallXmaxInt(new D3Q27Interactor(addWallXmax, grid, bcNoSlip, Interactor3D::SOLID));
-
-         GbCuboid3DPtr refineTownBox(new GbCuboid3D(town->getX1Minimum(), town->getX2Minimum(), town->getX3Minimum(), town->getX1Maximum(), town->getX2Maximum(), town->getX3Maximum()));
-         if (myid == 0) GbSystem3D::writeGeoObject(refineTownBox.get(), pathname + "/geo/refineTownBox", WbWriterVtkXmlASCII::getInstance());
-
-         if (refineLevel > 0)
-         {
-            if(myid == 0) UBLOG(logINFO,"Refinement - start");	
-            //RefineAroundGbObjectHelper refineHelper(grid, refineLevel, boost::dynamic_pointer_cast<D3Q27TriFaceMeshInteractor>(triTownInteractor), 0.0, 3.0, comm);
-            RefineCrossAndInsideGbObjectHelper refineHelper(grid, refineLevel);
-            //refineHelper.addGbObject(refineTownBox, refineLevel);
-            refineHelper.addGbObject(town, refineLevel);
-            refineHelper.refine();
-            if(myid == 0) UBLOG(logINFO,"Refinement - end");	
-         }
-
-         //Grid3D::BlockIDMap bmap = grid->getBlockIDs();
-         //bmap.clear();
-         //(grid->getBlockIDs()).clear();
-         //grid->deleteBlockIDs();
-
-         //RenumberBlockVisitor renumber;
-         //grid->accept(renumber);
-
-
-         ////////////////////////////////////////////
-         //METIS
-         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));	
-
-         ////////////////////////////////////////////
-         /////delete solid blocks
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - start");
-         InteractorsHelper intHelper(grid, metisVisitor);
-         //intHelper.addInteractor(triTownInteractor);
-         intHelper.addInteractor(velBCInteractor);
-         intHelper.addInteractor(addWallZminInt);
-         //intHelper.addInteractor(addWallZmaxInt);
-         //intHelper.addInteractor(addWallYminInt);
-         //intHelper.addInteractor(addWallYmaxInt);
-         //intHelper.addInteractor(addWallXminInt);
-         //intHelper.addInteractor(addWallXmaxInt);
-         intHelper.selectBlocks();
-         if(myid == 0) UBLOG(logINFO,"deleteSolidBlocks - end");	 
-         //////////////////////////////////////
-
-         //grid->accept(renumber);
-
-         //if (myid == 0)
-         {
-            UBLOG(logINFO, "Write blocks - start");
-            BlocksPostprocessorPtr ppblocks(new BlocksPostprocessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
-            ppblocks->update(0);
-            UBLOG(logINFO, "Write blocks - end");
-         }
-
-         
-
-
-         //domain decomposition for threads
-         if(numOfThreads > 1)
-         {
-            PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-            grid->accept(pqPartVisitor);
-         }
-
-
-         unsigned long nob = grid->getNumberOfBlocks();
-         unsigned long nod = nob * blocknx[0]*blocknx[1]*blocknx[2];
-         unsigned long nod_real = nob * (blocknx[0]+3)*(blocknx[1]+3)*(blocknx[2]+3);
-         unsigned long nodb = (blocknx[0]) * (blocknx[1]) * (blocknx[2]);
-
-         double needMemAll  = double(nod_real*(27*sizeof(double) + sizeof(int)));
-         double needMem  = needMemAll / double(comm->getNumberOfProcesses());
-         
-         double nup = 0; 
-
-         if(myid == 0)
-         {
-            UBLOG(logINFO,"Number of blocks = " << nob);
-            UBLOG(logINFO,"Number of nodes  = " << nod);
-            int minInitLevel = grid->getCoarsestInitializedLevel();
-            int maxInitLevel = grid->getFinestInitializedLevel();
-            for(int level = minInitLevel; level<=maxInitLevel; level++)
-            {
-               int nobl = grid->getNumberOfBlocks(level);
-               UBLOG(logINFO,"Number of blocks for level " << level <<" = " << nobl);
-               UBLOG(logINFO,"Number of nodes for level " << level <<" = " << nobl*nodb);
-               nup += nobl*nodb*double(1<<level); 
-            }
-            UBLOG(logINFO,"Hypothetically time for calculation step for 120 nodes  = " << nup/6.0e5/(120*8)  << " s");
-            UBLOG(logINFO,"Necessary memory  = " << needMemAll  << " bytes");
-            UBLOG(logINFO,"Necessary memory per process = " << needMem  << " bytes");
-            UBLOG(logINFO,"Available memory per process = " << availMem << " bytes");
-            UBLOG(logINFO,"Available memory per node/8.0 = " << (availMem/8.0) << " bytes");
-         }
-         //////////////////////////////////////////
-         //set connectors
-         if(myid == 0) UBLOG(logINFO,"set connectors - start");
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept( setConnsVisitor );
-         if(myid == 0) UBLOG(logINFO,"set connectors - end");
-
-         ////////////////////////////
-         LBMKernel3DPtr kernel;
-         kernel = LBMKernel3DPtr(new LBMKernelETD3Q27CCLB(blocknx[0], blocknx[1], blocknx[2], LBMKernelETD3Q27CCLB::NORMAL));
-
-         //mu::Parser fctForcingX2;
-         //fctForcingX2.SetExpr("Fx2*dx");
-         //fctForcingX2.DefineConst("Fx2", 5e-6);
-
-         //kernel->setForcingX2(fctForcingX2);
-         //kernel->setWithForcing(true);
-
-         BCProcessorPtr bcProc(new D3Q27ETBCProcessor());
-         //BCProcessorPtr bcProc(new D3Q27ETForThinWallBCProcessor());
-         kernel->setBCProcessor(bcProc);
-         SetKernelBlockVisitor kernelVisitor(kernel, nuLB, availMem, needMem);
-         grid->accept(kernelVisitor);
-         //////////////////////////////////
-         //undef nodes
-         if (refineLevel > 0)
-         {
-            D3Q27SetUndefinedNodesBlockVisitor undefNodesVisitor;
-            grid->accept(undefNodesVisitor);
-         }
-
-
-         intHelper.setBC();
-
-         //initialization of decompositions
-         D3Q27ETInitDistributionsBlockVisitor initVisitor( nuLB,rhoLB);
-         initVisitor.setVx2(uLB);
-         grid->accept(initVisitor);
-
-         //Postprozess
-         UbSchedulerPtr geoSch(new UbScheduler(1));
-         D3Q27MacroscopicQuantitiesPostprocessorPtr ppgeo(
-            new D3Q27MacroscopicQuantitiesPostprocessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), 
-            unitConverter, true));
-         ppgeo->update(0);
-         ppgeo.reset();
-         geoSch.reset();
-
-         if(myid == 0) UBLOG(logINFO,"Preprozess - end");      
-      }
-      else
-      {
-         //domain decomposition for threads
-         if(numOfThreads > 1)
-         {
-            PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
-            grid->accept(pqPartVisitor);
-         }
-         //set connectors
-         D3Q27InterpolationProcessorPtr iProcessor(new D3Q27IncompressibleOffsetInterpolationProcessor());
-         D3Q27SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
-         grid->accept( setConnsVisitor );
-
-         if(myid == 0) UBLOG(logINFO,"Restart - end"); 
-      }
-      UbSchedulerPtr visSch(new UbScheduler());
-      visSch->addSchedule(1,0,3);
-      //visSch->addSchedule(100,100,1000);
-      //visSch->addSchedule(1000,1000,5000);
-      //visSch->addSchedule(5000,5000,100000);
-      //visSch->addSchedule(100000,100000,10000000);
-
-      visSch->addSchedule(1000,1000,10000000);
-
-      D3Q27MacroscopicQuantitiesPostprocessor pp(grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), unitConverter);
-
-      UbSchedulerPtr nupsSch(new UbScheduler(10, 10, 30));
-      nupsSch->addSchedule(500,500,1e6);
-      NUPSCounterPostprocessor npr(grid, nupsSch, numOfThreads, comm);
-
-      //UbSchedulerPtr emSch(new UbScheduler(100));
-      //EmergencyExitPostprocessor empr(grid, emSch, pathname, RestartPostprocessorPtr(&rp), comm);
-
-      if(myid == 0)
-      {
-         UBLOG(logINFO,"PID = " << myid << " Total Physical Memory (RAM): " << Utilities::getTotalPhysMem());
-         UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used: " << Utilities::getPhysMemUsed());
-         UBLOG(logINFO,"PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
-      }
-
-      string lastStep = "1000000";// string(cstr2);
-      double endTime = UbSystem::stringTo<double>(lastStep);
-      CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch));
-      if(myid == 0) UBLOG(logINFO,"Simulation-start");
-      calculation->calculate();
-      if(myid == 0) UBLOG(logINFO,"Simulation-end");
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-//////////////////////////////////////////////////////////////////////////
-int main(int argc, char* argv[])
-{
-   if (argc == 1)
-   {
-      cout<<"Command line argument isn't specified!"<<endl;
-      cout<<"plate2 <machine name>"<<endl;
-      return 1;
-   }
-   run(argv[1], argv[2]);
-
-   return 0;
-}
-
diff --git a/apps/cpu/vfscript/CMakeLists.txt b/apps/cpu/vfscript/CMakeLists.txt
deleted file mode 100644
index f7a0bf1d28fc8d54d02fe8717598806733a77110..0000000000000000000000000000000000000000
--- a/apps/cpu/vfscript/CMakeLists.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(vfscript)
-
-INCLUDE(${SOURCE_ROOT}/core/IncludsList.txt) 
-
-#################################################################
-###   LOCAL FILES                                             ###
-#################################################################
-FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
-                         ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp  )
- 
-SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
-SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
-  
-SET(CAB_ADDITIONAL_LINK_LIBRARIES core)
-
-#YAML support
-SET(LINK_LIBRARY optimized ${YAML_RELEASE_LIBRARY} debug ${YAML_DEBUG_LIBRARY})
-SET(CAB_ADDITIONAL_LINK_LIBRARIES ${CAB_ADDITIONAL_LINK_LIBRARIES} ${LINK_LIBRARY})
-
-#################################################################
-###   CREATE PROJECT                                          ###
-#################################################################
-CREATE_CAB_PROJECT(vfscript BINARY)
diff --git a/apps/cpu/vfscript/input.json b/apps/cpu/vfscript/input.json
deleted file mode 100644
index 28aa5a4ba256493db73ed7bf707e5b1c1c4259bf..0000000000000000000000000000000000000000
--- a/apps/cpu/vfscript/input.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{"Simulation": {
-   "GeoObjectList":
-   ["GeoObject" : { 
-      "ID": "channel",
-      "GeoType": "GbCuboid3D",
-      "Point1": [0.0, 0.0, 0.0],
-      "Point2": [5.0, 5.0, 5.0],
-      "Properties": {
-         "Physics": {
-            "Rho": 1.0,
-            "Vx1": 0.001
-         },
-         "Numerical":{
-            "BC": {
-               "Type": "NoSlip",
-               "State": "Fluid",
-               "SecondaryBcOptions": "SimpleBounceBack"
-            }
-         }
-      }
-    "GeoObject" : { 
-      "ID": "sphere",
-      "GeoType": "GbSphere3D",
-      "Center": [2.5, 2.5, 2.5], 
-      "Radius": 1.5,
-       "Properties": {
-         "Numerical":{
-            "BC": {
-               "Type": "NoSlip",
-               "State": "Solid",
-               "SecondaryBcOptions": "SimpleBounceBack"
-            }
-         }
-      }]      
-}}
\ No newline at end of file
diff --git a/apps/cpu/vfscript/sphere.yaml b/apps/cpu/vfscript/sphere.yaml
deleted file mode 100644
index 436cd633fe3b7143c96718c93c97d1cb84690d73..0000000000000000000000000000000000000000
--- a/apps/cpu/vfscript/sphere.yaml
+++ /dev/null
@@ -1,37 +0,0 @@
-#flow around sphere
-
-SimulationParametrs:
-   OutputPath: c:\temp\sphere\out
-   Steps: 1000
-   Output: 100
-
-Grid:
- NumberOfThreads: 4
- Block: [10, 10, 10]
- BlockSize: [1.0, 1.0, 1.0]
- RefineLevel: 1
- 
-GeoObjects: 
- - ID: channel
-   GeoType: GbCuboid3D,
-   Point1: [0.0, 0.0, 0.0]
-   Point2: [5.0, 5.0, 5.0]
-   Properties: 
-    Physics: 
-     Rho: 1.0
-     Vx1: 0.001
-    Numerical:
-     BC: 
-      Type: NoSlip
-      State: Fluid
-      SecondaryBcOptions: SimpleBounceBack
- - ID: sphere
-   GeoType: GbSphere3D
-   Center: [2.5, 2.5, 2.5] 
-   Radius: 1.5
-   Properties:
-    Numerical:
-     BC:
-      Type: NoSlip
-      State: Solid
-      SecondaryBcOptions: SecondOrderBounceBack           
diff --git a/apps/cpu/vfscript/vfscript.cpp b/apps/cpu/vfscript/vfscript.cpp
deleted file mode 100644
index e7322b73f0807c0f8891e6706545b605b05d7fb9..0000000000000000000000000000000000000000
--- a/apps/cpu/vfscript/vfscript.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-#include <iostream>
-#include <string>
-
-#include "numerics/geometry3d/CoordinateTransformation3D.h"
-#include "Grid3D.h"
-#include "GenBlocksGridVisitor.h"
-#include "numerics/geometry3d/GbSystem3D.h"
-#include "numerics/geometry3d/GbCuboid3D.h"
-#include "numerics/geometry3d/GbCylinder3D.h"
-#include <numerics/geometry3d/GbSphere3D.h>
-#include "basics/writer/WbWriterVtkXmlASCII.h"
-#include "basics/writer/WbWriterVtkXmlBinary.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "RatioBlockVisitor.h"
-#include "RatioSmoothBlockVisitor.h"
-#include "OverlapBlockVisitor.h"
-#include "RefineInterGbObjectsVisitor.h"
-#include "RefineCrossAndInsideGbObjectBlockVisitor.h"
-#include "SetKernelBlockVisitor.h"
-#include "LBMKernelETD3Q27Cascaded.h"
-#include "D3Q27MacroscopicQuantitiesPostprocessor.h"
-#include "MPICommunicator.h"
-#include "D3Q27ETBCProcessor.h"
-#include "SimulationParameters.h"
-#include "D3Q27SetUndefinedNodesBlockVisitor.h"
-#include "SetInterpolationDirsBlockVisitor.h"
-#include "D3Q27SetConnectorsBlockVisitor.h"
-#include "NullCommunicator.h"
-#include "D3Q27ETInitDistributionsBlockVisitor.h"
-#include "CalculationManager.h"
-#include "PQueuePartitioningGridVisitor.h"
-#include "MetisPartitioningGridVisitor.h"
-#include "D3Q27Interactor.h"
-#include "D3Q27NoSlipBCAdapter.h"
-#include "D3Q27VelocityBCAdapter.h"
-#include "D3Q27DensityBCAdapter.h"
-#include "D3Q27BoundaryConditionAdapter.h"
-#include "StringUtil.hpp"
-//#include "rapidjson/document.h"		// rapidjson's DOM-style API
-//#include "rapidjson/filestream.h"
-
-#include <fstream>
-#include "yaml-cpp/yaml.h"
-
-using namespace std;
-
-
-void run(const char *istr)
-{
-   try
-   {
-      //// Prepare reader and input stream.
-      //rapidjson::Reader reader;
-      ////rapidjson::Document reader;
-      //FILE* fp;
-      //fp = fopen(istr, "r");
-      //rapidjson::FileStream is(fp);
-
-      //rapidjson::Document document;	// Default template parameter uses UTF8 and MemoryPoolAllocator.
-
-      //if (document.ParseStream<0>(is).HasParseError())
-      //{
-      //   //UBLOG(logINFO,"JSON parcing is fail" );
-      //   fprintf(stderr, "\nError(%u): %s\n", (unsigned)document.GetErrorOffset(), document.GetParseError());
-      //   return;
-      //}
-
-      //fclose(fp);
-
-      std::ifstream fin(istr);
-      YAML::Parser parser(fin);
-      YAML::Node doc;
-      parser.GetNextDocument(doc);
-
-      if(doc.FindValue("GeoObjects"))
-      {
-         const YAML::Node& geoObjects = doc["GeoObjects"];
-         string id;
-         for(unsigned i=0;i<geoObjects.size();i++)
-         {
-            geoObjects[i]["ID"] >> id;
-            std::cout << id << "\n";
-         }
-      }
-
-   }
-   catch(YAML::ParserException& e) {
-      std::cout << e.what() << "\n";
-   }
-   catch(std::exception& e)
-   {
-      cerr << e.what() << endl << flush;
-   }
-   catch(std::string& s)
-   {
-      cerr << s << endl;
-   }
-   catch(...)
-   {
-      cerr << "unknown exception" << endl;
-   }
-
-}
-int main(int argc, char* argv[])
-{
-   if ( argv != NULL )
-   {
-      if (argc > 1)
-      {
-         run(argv[1]);
-      }
-      else
-      {
-         cout << "Input file must be set!: " <<  argv[0] << " <input file>" << endl << std::flush;
-      }
-   }
-
-   return 0;
-}
-
diff --git a/src/basics/CMakeLists.txt b/src/basics/CMakeLists.txt
index 9e876d834508af0d340bfe4cdd18bcc6a37d3b11..ef983646465e9b81a82fd345aae2a7375a42e751 100644
--- a/src/basics/CMakeLists.txt
+++ b/src/basics/CMakeLists.txt
@@ -1,8 +1,8 @@
 
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR})
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/numerics/geometry3d)
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/numerics/geometry3d/Creator)
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/numerics/geometry3d/KdTree)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/geometry3d)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/geometry3d/Creator)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/geometry3d/KdTree)
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/basics/container)
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/basics/memory)
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/basics/objects)
@@ -25,9 +25,9 @@ ENDIF(MSVC)
 
 vf_add_library(BUILDTYPE static
                FOLDER
-        ${CMAKE_CURRENT_LIST_DIR}/numerics/geometry3d
-        ${CMAKE_CURRENT_LIST_DIR}/numerics/geometry3d/creator
-        ${CMAKE_CURRENT_LIST_DIR}/numerics/geometry3d/KdTree
+        ${CMAKE_CURRENT_LIST_DIR}/geometry3d
+        ${CMAKE_CURRENT_LIST_DIR}/geometry3d/creator
+        ${CMAKE_CURRENT_LIST_DIR}/geometry3d/KdTree
         ${CMAKE_CURRENT_LIST_DIR}/basics/container
         ${CMAKE_CURRENT_LIST_DIR}/basics/memory
         ${CMAKE_CURRENT_LIST_DIR}/basics/objects