diff --git a/apps/cpu/Applications.cmake b/apps/cpu/Applications.cmake
index fb5b9cdf5136f95fad370ee68bf16fbcdb0ba1bd..2fc89f7036ba707fdd4412c702b8be626956bb86 100644
--- a/apps/cpu/Applications.cmake
+++ b/apps/cpu/Applications.cmake
@@ -68,4 +68,5 @@ add_subdirectory(${APPS_ROOT_CPU}/HerschelBulkleySphere)
 add_subdirectory(${APPS_ROOT_CPU}/HerschelBulkleyModel)
 add_subdirectory(${APPS_ROOT_CPU}/rheometer)
 add_subdirectory(${APPS_ROOT_CPU}/CouetteFlow)
+add_subdirectory(${APPS_ROOT_CPU}/Multiphase)
 
diff --git a/apps/cpu/JetBreakup/CMakeLists.txt b/apps/cpu/JetBreakup/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..19553ec4c1cca9dde298d377f82f8730f48269d0
--- /dev/null
+++ b/apps/cpu/JetBreakup/CMakeLists.txt
@@ -0,0 +1,6 @@
+########################################################
+## C++ PROJECT                                       ###
+########################################################
+PROJECT(JetBreakup)
+
+vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} FILES JetBreakup.cpp )
\ No newline at end of file
diff --git a/apps/cpu/JetBreakup/JetBreakup.cfg b/apps/cpu/JetBreakup/JetBreakup.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..22d20f7d5667ae30c2f3405334566c4d109e7d9f
--- /dev/null
+++ b/apps/cpu/JetBreakup/JetBreakup.cfg
@@ -0,0 +1,48 @@
+pathname = d:/temp/Multiphase
+pathGeo = d:/Projects/VirtualFluids-Multiphase/source/Applications/Multiphase/backup
+geoFile = JetBreakup2.ASCII.stl
+numOfThreads = 4
+availMem = 10e9
+
+#Grid
+
+#boundingBox = -1.0 121.0 0.5 629.0 -1.0 121.0 #(Jet Breakup) (Original with inlet length)
+#boundingBox = -60.5 60.5 -1.0 -201.0 -60.5 60.5 #(Jet Breakup2) (Original without inlet length)
+#blocknx = 22 20 22
+
+boundingBox = -60.5 60.5 -1.0 -21.0 -60.5 60.5 #(Jet Breakup2) (Original without inlet length)
+blocknx = 22 20 22
+
+
+dx = 0.5
+refineLevel = 0
+
+#Simulation
+uLB = 0.05 #inlet velocity
+uF2 = 0.0001
+Re = 10
+nuL = 1.0e-5  #!1e-2
+nuG = 1.16e-4 #!1e-2
+densityRatio = 10 #30
+sigma = 4.66e-3 #surface tension 1e-4 ./. 1e-5
+interfaceThickness = 5
+radius = 615.0   (Jet Breakup)
+contactAngle = 110.0
+gravity = 0.0
+#gravity = -5.04e-6
+phi_L = 0.0
+phi_H = 1.0
+Phase-field Relaxation = 0.6
+Mobility = 0.02 # 0.01 ./. 0.08, fine correction of Phase-field Relaxation parameter, to activate it need to change in kernel tauH to tauH1 
+
+
+logToFile = false
+
+newStart = true
+restartStep = 100000
+
+cpStart = 100000
+cpStep = 100000
+
+outTime = 1
+endTime = 200000000
\ No newline at end of file
diff --git a/apps/cpu/JetBreakup/JetBreakup.cpp b/apps/cpu/JetBreakup/JetBreakup.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e2dc0f0e31483310bc119b26ce246aa8dfb7133c
--- /dev/null
+++ b/apps/cpu/JetBreakup/JetBreakup.cpp
@@ -0,0 +1,516 @@
+#include <iostream>
+#include <string>
+
+#include "VirtualFluids.h"
+
+using namespace std;
+
+
+void run(string configname)
+{
+   try
+   {
+      ConfigurationFile   config;
+      config.load(configname);
+
+      string          pathname = config.getString("pathname");
+      string		  pathGeo = config.getString("pathGeo");
+      string		  geoFile = config.getString("geoFile");
+      int             numOfThreads = config.getInt("numOfThreads");
+      vector<int>     blocknx = config.getVector<int>("blocknx");
+      vector<double>  boundingBox = config.getVector<double>("boundingBox");
+      //vector<double>  length = config.getVector<double>("length");
+      double          uLB = config.getDouble("uLB");
+      double          uF2 = config.getDouble("uF2");
+      double		  nuL = config.getDouble("nuL");
+      double		  nuG = config.getDouble("nuG");
+      double		  densityRatio = config.getDouble("densityRatio");
+      double		  sigma = config.getDouble("sigma");
+      int		      interfaceThickness = config.getInt("interfaceThickness");
+      double		  radius = config.getDouble("radius");
+      double		  theta = config.getDouble("contactAngle");
+      double		  gr = config.getDouble("gravity");
+      double		  phiL = config.getDouble("phi_L");
+      double		  phiH = config.getDouble("phi_H");
+      double		  tauH = config.getDouble("Phase-field Relaxation");
+      double		  mob = config.getDouble("Mobility");
+
+
+      double          endTime = config.getDouble("endTime");
+      double          outTime = config.getDouble("outTime");
+      double          availMem = config.getDouble("availMem");
+      int             refineLevel = config.getInt("refineLevel");
+      double          Re = config.getDouble("Re");
+      double          dx = config.getDouble("dx");
+      bool            logToFile = config.getBool("logToFile");
+      double          restartStep = config.getDouble("restartStep");
+      double          cpStart = config.getValue<double>("cpStart");
+      double          cpStep = config.getValue<double>("cpStep");
+      bool            newStart = config.getValue<bool>("newStart");
+
+      double beta = 12 * sigma / interfaceThickness;
+      double kappa = 1.5 * interfaceThickness * sigma;
+
+      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);
+
+      LBMReal dLB; // = length[1] / dx;
+      LBMReal rhoLB = 0.0;
+      LBMReal nuLB = nuL; //(uLB*dLB) / Re;
+
+      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
+
+      const int baseLevel = 0;
+
+
+
+      Grid3DPtr grid(new Grid3D(comm));
+      //grid->setPeriodicX1(true);
+     //grid->setPeriodicX2(true);
+     //grid->setPeriodicX3(true);
+      //////////////////////////////////////////////////////////////////////////
+      //restart
+      UbSchedulerPtr rSch(new UbScheduler(cpStep, cpStart));
+      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
+      MPIIORestart1CoProcessor rcp(grid, rSch, pathname, comm);
+      //////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+      mu::Parser fctF1;
+      //fctF1.SetExpr("vy1*(1-((x1-x0)^2+(x3-z0)^2)/(R^2))");
+      //fctF1.SetExpr("vy1*(1-(sqrt((x1-x0)^2+(x3-z0)^2)/R))^0.1");
+      fctF1.SetExpr("vy1");
+      fctF1.DefineConst("vy1", -uLB);
+      fctF1.DefineConst("R", 8.0);
+      fctF1.DefineConst("x0", 0.0);
+      fctF1.DefineConst("z0", 0.0);
+
+
+      if (newStart)
+      {
+
+         //bounding box
+         /*double g_minX1 = 0.0;
+         double g_minX2 = -length[1] / 2.0;
+         double g_minX3 = -length[2] / 2.0;
+
+         double g_maxX1 = length[0];
+         double g_maxX2 = length[1] / 2.0;
+         double g_maxX3 = length[2] / 2.0;*/
+
+         double g_minX1 = boundingBox[0];
+         double g_minX2 = boundingBox[2];
+         double g_minX3 = boundingBox[4];
+
+         double g_maxX1 = boundingBox[1];
+         double g_maxX2 = boundingBox[3];
+         double g_maxX3 = boundingBox[5];
+
+         //geometry
+
+         //GbObject3DPtr innerCube(new GbCuboid3D(g_minX1+2, g_minX2+2, g_minX3+2, g_maxX1-2, g_maxX2-2, g_maxX3-2));
+
+       //GbObject3DPtr cylinder1(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, radius));
+       //GbObject3DPtr cylinder2(new GbCylinder3D(g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+
+       //GbObject3DPtr cylinder(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+       //GbObject3DPtr cylinders(new GbObject3DManager());
+       //GbObject3DPtr cylinders1(new GbObjectGroup3D());
+
+
+
+
+         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());
+
+         GbTriFaceMesh3DPtr cylinder;
+         if (myid == 0) UBLOG(logINFO, "Read geoFile:start");
+         //cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
+         cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo + "/" + geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT));
+         GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/Stlgeo", WbWriterVtkXmlBinary::getInstance());
+
+
+
+         //inflow
+      //GbCuboid3DPtr geoInflowF1(new GbCuboid3D(40.0, 628.0, 40.0, 80, 631.0, 80.0));  // For JetBreakup (Original)
+         //GbCuboid3DPtr geoInflowF1(new GbCuboid3D(g_minX1-2.0*dx, g_minX2-2.0*dx, g_minX3-2.0*dx, g_maxX1+2.0*dx, g_minX2+2.0*dx, g_maxX3+2.0*dx));
+         //if (myid == 0) GbSystem3D::writeGeoObject(geoInflowF1.get(), pathname + "/geo/geoInflowF1", WbWriterVtkXmlASCII::getInstance());
+
+
+         ////outflow
+         ////GbCuboid3DPtr geoOutflow(new GbCuboid3D(-1.0, -1, -1.0, 121.0, 1.0, 121.0)); // For JetBreakup (Original)
+         //GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_minX1-2.0*dx, g_maxX2, g_minX3-2.0*dx, g_maxX1+2.0*dx, g_maxX2+2.0*dx, g_maxX3+2.0*dx));
+         //if (myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname + "/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
+
+         GbCuboid3DPtr geoInflowF1(new GbCuboid3D(g_minX1, g_minX2-0.5*dx, g_minX3, g_maxX1, g_minX2 - 1.0*dx, g_maxX3));
+         if (myid==0) GbSystem3D::writeGeoObject(geoInflowF1.get(), pathname+"/geo/geoInflowF1", WbWriterVtkXmlASCII::getInstance());
+
+
+         //outflow
+         //GbCuboid3DPtr geoOutflow(new GbCuboid3D(-1.0, -1, -1.0, 121.0, 1.0, 121.0)); // For JetBreakup (Original)
+         GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_minX1, g_maxX2-1*dx, g_minX3, g_maxX1, g_maxX2, g_maxX3));
+         if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
+
+         double blockLength = blocknx[0] * dx;
+
+
+
+         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, "Preprocess - start");
+         }
+
+         grid->setDeltaX(dx);
+         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
+
+         grid->setPeriodicX1(false);
+         grid->setPeriodicX2(false);
+         grid->setPeriodicX3(false);
+
+
+
+         GenBlocksGridVisitor genBlocks(gridCube);
+         grid->accept(genBlocks);
+
+
+
+
+         //BC Adapter
+         //////////////////////////////////////////////////////////////////////////////
+         BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+         noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+
+
+         BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+         denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+
+         double r = 5.0; //boost::dynamic_pointer_cast<GbCylinder3D>(cylinder)->getRadius();
+         double cx1 = g_minX1;
+         double cx2 = 0.0; //cylinder->getX2Centroid();
+         double cx3 = 0.0; //cylinder->getX3Centroid();
+
+
+
+         mu::Parser fctPhi_F1;
+         fctPhi_F1.SetExpr("phiH");
+         fctPhi_F1.DefineConst("phiH", phiH);
+
+         mu::Parser fctPhi_F2;
+         fctPhi_F2.SetExpr("phiL");
+         fctPhi_F2.DefineConst("phiL", phiL);
+
+         mu::Parser fctvel_F2_init;
+         fctvel_F2_init.SetExpr("U");
+         fctvel_F2_init.DefineConst("U", 0);
+
+         //fct.SetExpr("U");
+         //fct.DefineConst("U", uLB);
+         //BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+
+         BCAdapterPtr velBCAdapterF1(new VelocityBCAdapterMultiphase(false, true, false, fctF1, phiH, 0.0, endTime));
+
+         //BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_1, phiH, 0.0, endTime));
+         //BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_2, phiH, 0.0, endTime));
+
+         //BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+         //BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+
+         velBCAdapterF1->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+         //velBCAdapterF2_1_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+         //velBCAdapterF2_2_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+
+
+          //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+          //mu::Parser fct;
+          //fct.SetExpr("U");
+          //fct.DefineConst("U", uLB);
+          //BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+          //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingVelocityBCAlgorithm()));
+
+
+          //////////////////////////////////////////////////////////////////////////////////
+          //BC visitor
+         BoundaryConditionsBlockVisitorMultiphase bcVisitor;
+         bcVisitor.addBC(noSlipBCAdapter);
+         bcVisitor.addBC(denBCAdapter);
+         bcVisitor.addBC(velBCAdapterF1);
+         //bcVisitor.addBC(velBCAdapterF2_1_init);
+         //bcVisitor.addBC(velBCAdapterF2_2_init);
+
+
+
+         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
+
+         ppblocks->process(0);
+
+         Interactor3DPtr tubes(new D3Q27TriFaceMeshInteractor(cylinder, grid, noSlipBCAdapter, Interactor3D::SOLID));
+
+         D3Q27InteractorPtr inflowF1Int = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF1, grid, velBCAdapterF1, Interactor3D::SOLID));
+
+         //D3Q27InteractorPtr inflowF2_1Int_init = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_1, grid, velBCAdapterF2_1_init, Interactor3D::SOLID));
+
+         //D3Q27InteractorPtr inflowF2_2Int_init = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_2, grid, velBCAdapterF2_2_init, Interactor3D::SOLID));
+
+         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
+
+         //SetSolidBlockVisitor visitor1(inflowF2_1Int, SetSolidBlockVisitor::BC);
+         //grid->accept(visitor1);
+         //SetSolidBlockVisitor visitor2(inflowF2_2Int, SetSolidBlockVisitor::BC);
+         //grid->accept(visitor2);
+
+
+         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW));
+         InteractorsHelper intHelper(grid, metisVisitor);
+         intHelper.addInteractor(tubes);
+         intHelper.addInteractor(inflowF1Int);
+         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");
+         }
+
+         LBMKernelPtr kernel;
+
+         kernel = LBMKernelPtr(new MultiphaseCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], MultiphaseCumulantLBMKernel::NORMAL));
+
+         kernel->setWithForcing(true);
+         kernel->setForcingX1(0.0);
+         kernel->setForcingX2(gr);
+         kernel->setForcingX3(0.0);
+
+         kernel->setPhiL(phiL);
+         kernel->setPhiH(phiH);
+         kernel->setPhaseFieldRelaxation(tauH);
+         kernel->setMobility(mob);
+
+         BCProcessorPtr bcProc(new BCProcessor());
+         //BCProcessorPtr bcProc(new ThinWallBCProcessor());
+
+         kernel->setBCProcessor(bcProc);
+
+         SetKernelBlockVisitorMultiphase kernelVisitor(kernel, nuL, nuG, densityRatio, beta, kappa, theta, availMem, needMem);
+
+         grid->accept(kernelVisitor);
+
+         if (refineLevel > 0)
+         {
+            SetUndefinedNodesBlockVisitor undefNodesVisitor;
+            grid->accept(undefNodesVisitor);
+         }
+
+         //inflowF2_1Int->initInteractor();
+         //inflowF2_2Int->initInteractor();
+
+         intHelper.setBC();
+
+
+         grid->accept(bcVisitor);
+
+         //initialization of distributions
+         LBMReal x1c = radius; //g_minX1; //radius; //19; //(g_maxX1+g_minX1)/2;
+         LBMReal x2c = (g_maxX2 + g_minX2) / 2; //g_minX2 + 2;
+         LBMReal x3c = (g_maxX3 + g_minX3) / 2;
+         mu::Parser fct1;
+
+         //fct1.SetExpr("0.5-0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+         //fct1.SetExpr("phiM-phiM*tanh((sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/(interfaceThickness*phiM))");
+
+         //fct1.SetExpr("0.5*(phiH + phiL)-0.5*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+
+
+         //fct1.SetExpr("0.5*(phiH + phiL) + 0.5*(phiH - phiL)*tanh(2*((x2-radius))/interfaceThickness)");
+         fct1.SetExpr("phiL");
+         fct1.DefineConst("x1c", x1c);
+         fct1.DefineConst("x2c", x2c);
+         fct1.DefineConst("x3c", x3c);
+         fct1.DefineConst("phiL", phiL);
+         fct1.DefineConst("phiH", phiH);
+         fct1.DefineConst("radius", radius);
+         fct1.DefineConst("interfaceThickness", interfaceThickness);
+
+         mu::Parser fct2;
+         //fct2.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+         fct2.SetExpr("vx1");
+         fct2.DefineConst("R", 10.0);
+         fct2.DefineConst("vx1", uLB);
+         fct2.DefineConst("y0", 1.0);
+         fct2.DefineConst("z0", 31.0);
+         /*fct2.SetExpr("0.5*uLB-uLB*0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+         fct2.DefineConst("uLB", uLB);
+         fct2.DefineConst("x1c", x1c);
+         fct2.DefineConst("x2c", x2c);
+         fct2.DefineConst("x3c", x3c);
+         fct2.DefineConst("radius", radius);
+         fct2.DefineConst("interfaceThickness", interfaceThickness);*/
+
+
+         InitDistributionsBlockVisitorMultiphase initVisitor(densityRatio, interfaceThickness, radius);
+         initVisitor.setPhi(fct1);
+         //initVisitor.setVx1(fct2);
+         grid->accept(initVisitor);
+
+         //set connectors
+         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         //ConnectorFactoryPtr factory(new Block3DConnectorFactory());
+         //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
+         grid->accept(setConnsVisitor);
+
+         //domain decomposition for threads
+         //PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
+         //grid->accept(pqPartVisitor);
+
+
+
+
+         //boundary conditions grid
+         {
+            UbSchedulerPtr geoSch(new UbScheduler(1));
+            WriteBoundaryConditionsCoProcessorPtr ppgeo(
+               new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
+            ppgeo->process(0);
+            ppgeo.reset();
+         }
+
+         if (myid == 0) UBLOG(logINFO, "Preprocess - end");
+      }
+      else
+      {
+         if (myid == 0)
+         {
+            UBLOG(logINFO, "Parameters:");
+            UBLOG(logINFO, "uLb = " << uLB);
+            UBLOG(logINFO, "rho = " << rhoLB);
+            UBLOG(logINFO, "nuLb = " << nuLB);
+            UBLOG(logINFO, "Re = " << Re);
+            UBLOG(logINFO, "dx = " << dx);
+            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
+            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
+            UBLOG(logINFO, "path = " << pathname);
+         }
+
+         rcp.restart((int)restartStep);
+         grid->setTimeStep(restartStep);
+
+         //BCAdapterPtr velBCAdapter(new VelocityBCAdapter());
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithm()));
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+         //bcVisitor.addBC(velBCAdapter);
+         //grid->accept(bcVisitor);
+
+         //set connectors
+         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         grid->accept(setConnsVisitor);
+
+         if (myid == 0) UBLOG(logINFO, "Restart - end");
+      }
+      UbSchedulerPtr visSch(new UbScheduler(outTime));
+      WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm);
+
+      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
+      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
+
+
+
+
+
+
+      //UbSchedulerPtr bcSch(new UbScheduler(1, 12000, 12000));
+      //TimeDependentBCCoProcessorPtr inflowF2 (new TimeDependentBCCoProcessor(grid,bcSch));
+      //inflowF2->addInteractor(inflowF2_1Int);
+      //inflowF2->addInteractor(inflowF2_2Int);
+
+       //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch,CalculationManager::MPI));
+      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[])
+{
+   //Sleep(30000);
+   if (argv != NULL)
+   {
+      if (argv[1] != NULL)
+      {
+         run(string(argv[1]));
+      }
+      else
+      {
+         cout << "Configuration file is missing!" << endl;
+      }
+   }
+
+}
+
diff --git a/apps/cpu/Multiphase/CMakeLists.txt b/apps/cpu/Multiphase/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3daebaf854a900fa1fdb9bc31b015969167de15d
--- /dev/null
+++ b/apps/cpu/Multiphase/CMakeLists.txt
@@ -0,0 +1,3 @@
+PROJECT(Multiphase)
+
+vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} FILES Multiphase.cpp )
diff --git a/apps/cpu/Multiphase/Multiphase (Droplet Test).cpp.backup b/apps/cpu/Multiphase/Multiphase (Droplet Test).cpp.backup
new file mode 100644
index 0000000000000000000000000000000000000000..46297d526c76362e2d45e00ad5496c20dac2af99
--- /dev/null
+++ b/apps/cpu/Multiphase/Multiphase (Droplet Test).cpp.backup	
@@ -0,0 +1,482 @@
+#include <iostream>
+#include <string>
+
+#include "VirtualFluids.h"
+
+using namespace std;
+
+
+void run(string configname)
+{
+   try
+   {
+      ConfigurationFile   config;
+      config.load(configname);
+
+      string          pathname = config.getString("pathname");
+	  string		  pathGeo = config.getString("pathGeo");
+	  string		  geoFile = config.getString("geoFile");
+      int             numOfThreads = config.getInt("numOfThreads");
+      vector<int>     blocknx = config.getVector<int>("blocknx");
+	  vector<double>  boundingBox = config.getVector<double>("boundingBox");
+      //vector<double>  length = config.getVector<double>("length");
+	  double      uLB = config.getDouble("uLB");
+	  double      uF2 = config.getDouble("uF2");
+	  double		  nuL = config.getDouble("nuL");
+	  double		  nuG = config.getDouble("nuG");
+	  double		  densityRatio = config.getDouble("densityRatio");
+	  double		  sigma = config.getDouble("sigma");
+	  int		     interfaceThickness = config.getInt("interfaceThickness");
+	  double		  radius = config.getDouble("radius");
+	  double		  theta = config.getDouble("contactAngle");
+	  double		  gr = config.getDouble("gravity");
+	  double		  phiL = config.getDouble("phi_L");
+	  double		  phiH = config.getDouble("phi_H");
+	  double		  tauH = config.getDouble("Phase-field Relaxation");
+	  double		  mob = config.getDouble("Mobility");
+
+
+      double          endTime = config.getDouble("endTime");
+      double          outTime = config.getDouble("outTime");
+      double          availMem = config.getDouble("availMem");
+      int             refineLevel = config.getInt("refineLevel");
+      double          Re = config.getDouble("Re");
+      double          dx = config.getDouble("dx");
+      bool            logToFile = config.getBool("logToFile");
+      double          restartStep = config.getDouble("restartStep");
+      double          cpStart = config.getValue<double>("cpStart");
+      double          cpStep = config.getValue<double>("cpStep");
+      bool            newStart = config.getValue<bool>("newStart");
+
+      double beta  = 12*sigma/interfaceThickness;
+	  double kappa = 1.5*interfaceThickness*sigma;
+	  
+	  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);
+
+      LBMReal dLB; // = length[1] / dx;
+      LBMReal rhoLB = 0.0;
+      LBMReal nuLB = nuL; //(uLB*dLB) / Re;
+
+      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
+
+      const int baseLevel = 0;
+
+ 
+      
+      Grid3DPtr grid(new Grid3D(comm));
+      //grid->setPeriodicX1(true);
+	  //grid->setPeriodicX2(true);
+	  //grid->setPeriodicX3(true);
+      //////////////////////////////////////////////////////////////////////////
+      //restart
+      UbSchedulerPtr rSch(new UbScheduler(cpStep, cpStart));
+      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
+      MPIIORestart1CoProcessor rcp(grid, rSch, pathname, comm);
+      //////////////////////////////////////////////////////////////////////////
+	  
+	  
+
+	  if (newStart)
+      {
+
+         //bounding box
+         /*double g_minX1 = 0.0;
+         double g_minX2 = -length[1] / 2.0;
+         double g_minX3 = -length[2] / 2.0;
+
+         double g_maxX1 = length[0];
+         double g_maxX2 = length[1] / 2.0;
+         double g_maxX3 = length[2] / 2.0;*/
+
+		 double g_minX1 = boundingBox[0];
+		 double g_minX2 = boundingBox[2];
+		 double g_minX3 = boundingBox[4];
+
+		 double g_maxX1 = boundingBox[1];
+		 double g_maxX2 = boundingBox[3];
+		 double g_maxX3 = boundingBox[5];
+
+         //geometry
+
+		 GbObject3DPtr cylinder(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, 20.0));
+		 GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
+		 
+		 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());
+
+
+         double blockLength = blocknx[0] * dx;
+
+
+
+         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, "Preprocess - start");
+         }
+
+         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);
+
+
+		 //inflow
+		 //GbCuboid3DPtr geoInflowF1(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
+		 //GbCuboid3DPtr geoInflowF1(new GbCuboid3D(-34.0, -20.0, 1.0, -31.5, 16.0, 46.0));
+		 //GbCuboid3DPtr geoInflowF1(new GbCuboid3D(-24.0, 3, 20.0, -22.0, 24.0, 42.0));
+		 //if (myid==0) GbSystem3D::writeGeoObject(geoInflowF1.get(), pathname+"/geo/geoInflowF1", WbWriterVtkXmlASCII::getInstance());
+
+		 /*GbCuboid3DPtr geoInflowF2_1(new GbCuboid3D(-24.0, -24.0, 0.0, 26.0, 26.0, 3.5));
+		 if (myid==0) GbSystem3D::writeGeoObject(geoInflowF2_1.get(), pathname+"/geo/geoInflowF2_1", WbWriterVtkXmlASCII::getInstance());
+		 
+		 GbCuboid3DPtr geoInflowF2_2(new GbCuboid3D(-24.0, -24.0, 56.5, 26.0, 26.0, 59.9));
+		 if (myid==0) GbSystem3D::writeGeoObject(geoInflowF2_2.get(), pathname+"/geo/geoInflowF2_2", WbWriterVtkXmlASCII::getInstance());*/
+		 
+		 //outflow
+		 //GbCuboid3DPtr geoOutflow(new GbCuboid3D(126.0-50, -20.0, 1.0, 130.0-50, 16.0, 46.0));
+		 //GbCuboid3DPtr geoOutflow(new GbCuboid3D(126.0, -20.0, 1.0, 130.0, 16.0, 46.0));
+		 //GbCuboid3DPtr geoOutflow(new GbCuboid3D(78.0, 3, 20.0, 81.0, 24.0, 42.0));
+		 //if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
+
+		 //BC Adapter
+		 //////////////////////////////////////////////////////////////////////////////
+		 //BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+		 //noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+
+
+		//BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+		//denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+		
+		double r = 5.0; //boost::dynamic_pointer_cast<GbCylinder3D>(cylinder)->getRadius();
+		double cx1 = g_minX1;
+		double cx2 = 0.0; //cylinder->getX2Centroid();
+		double cx3 = 0.0; //cylinder->getX3Centroid();
+
+		mu::Parser fctF1;
+		fctF1.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+		//fctF1.SetExpr("vx1");
+		fctF1.DefineConst("R", 10.0);
+		//fctF1.DefineConst("R", 8.0); // FlowFocusingSS
+		fctF1.DefineConst("vx1", uLB);
+		fctF1.DefineConst("y0", 1.0);
+		fctF1.DefineConst("z0", 31.0);
+		
+		mu::Parser fctF2_1;
+		fctF2_1.SetExpr("vx3*(1-((x1-x0)^2+(x2-y0)^2)/(R^2))");
+		//fctF2_1.SetExpr("vx3");
+		fctF2_1.DefineConst("R", 12.0);
+		fctF2_1.DefineConst("vx3", uF2);
+		fctF2_1.DefineConst("x0", 1.0);
+		fctF2_1.DefineConst("y0", 1.0);
+
+		mu::Parser fctF2_2;
+		fctF2_2.SetExpr("vx3*(1-((x1-x0)^2+(x2-y0)^2)/(R^2))");
+		//fctF2_2.SetExpr("vx3");
+		fctF2_2.DefineConst("R", 12.0);
+		fctF2_2.DefineConst("vx3", -uF2);
+		fctF2_2.DefineConst("x0", 1.0);
+		fctF2_2.DefineConst("y0", 1.0);
+		
+		mu::Parser fctPhi_F1;
+		fctPhi_F1.SetExpr("phiH");
+		fctPhi_F1.DefineConst("phiH", phiH);
+
+		mu::Parser fctPhi_F2;
+		fctPhi_F2.SetExpr("phiL");
+		fctPhi_F2.DefineConst("phiL", phiL);
+		
+		mu::Parser fctvel_F2_init;
+		fctvel_F2_init.SetExpr("U");
+		fctvel_F2_init.DefineConst("U", 0);
+
+		//fct.SetExpr("U");
+		//fct.DefineConst("U", uLB);
+		//BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		//BCAdapterPtr velBCAdapterF1(new VelocityBCAdapterMultiphase(true, false, false, fctF1, phiH, 0.0, endTime));
+		
+		//BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_1, phiL, 0.0, endTime));
+		//BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_2, phiL, 0.0, endTime));
+
+		//BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		//BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		
+		//velBCAdapterF1->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		//velBCAdapterF2_1_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		//velBCAdapterF2_2_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		 
+		 
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+		 //mu::Parser fct;
+		 //fct.SetExpr("U");
+		 //fct.DefineConst("U", uLB);
+		 //BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingVelocityBCAlgorithm()));
+
+
+		 //////////////////////////////////////////////////////////////////////////////////
+		 //BC visitor
+		 BoundaryConditionsBlockVisitorMultiphase bcVisitor;
+		 /*bcVisitor.addBC(noSlipBCAdapter);
+		 bcVisitor.addBC(denBCAdapter);
+		 bcVisitor.addBC(velBCAdapterF1);
+		 bcVisitor.addBC(velBCAdapterF2_1_init);
+		 bcVisitor.addBC(velBCAdapterF2_2_init);*/
+
+
+
+         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
+
+         ppblocks->process(0);
+
+         //Interactor3DPtr tubes(new D3Q27TriFaceMeshInteractor(cylinder, grid, noSlipBCAdapter, Interactor3D::INVERSESOLID));
+		 
+
+
+         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
+         InteractorsHelper intHelper(grid, metisVisitor);
+		 //intHelper.addInteractor(tubes);
+
+         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");
+         }
+
+         LBMKernelPtr kernel;
+
+         kernel = LBMKernelPtr(new MultiphaseCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], MultiphaseCumulantLBMKernel::NORMAL));
+
+         kernel->setWithForcing(false);
+		 kernel->setForcingX1(gr);
+		 kernel->setForcingX2(0.0);
+		 kernel->setForcingX3(0.0);
+
+		 kernel->setPhiL(phiL);
+		 kernel->setPhiH(phiH);
+		 kernel->setPhaseFieldRelaxation(tauH);
+		 kernel->setMobility(mob);
+
+         BCProcessorPtr bcProc(new BCProcessor());
+         //BCProcessorPtr bcProc(new ThinWallBCProcessor());
+
+         kernel->setBCProcessor(bcProc);
+
+         SetKernelBlockVisitorMultiphase kernelVisitor(kernel, nuL, nuG, densityRatio, beta, kappa, theta, availMem, needMem);
+         
+		 grid->accept(kernelVisitor);
+
+         if (refineLevel > 0)
+         {
+            SetUndefinedNodesBlockVisitor undefNodesVisitor;
+            grid->accept(undefNodesVisitor);
+         }
+
+
+
+         //intHelper.setBC();
+         //grid->accept(bcVisitor);
+
+         //initialization of distributions
+		 //initialization of distributions
+		 LBMReal x1c = (g_maxX1 - g_minX1-1)/2;
+		 LBMReal x2c = (g_maxX2 - g_minX2-1)/2;
+		 LBMReal x3c = (g_maxX3 - g_minX3-1)/2;
+		 mu::Parser fct1;
+		 fct1.SetExpr("0.5-0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct1.DefineConst("x1c", x1c);
+		 fct1.DefineConst("x2c", x2c);
+		 fct1.DefineConst("x3c", x3c);
+		 fct1.DefineConst("radius", radius);
+		 fct1.DefineConst("interfaceThickness", interfaceThickness);
+		 
+		 mu::Parser fct2;
+		 //fct2.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+		 //fct2.SetExpr("0.5*uLB-uLB*0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 //fct2.SetExpr("vx1");
+		 /*fct2.DefineConst("R", 10.0);
+		 fct2.DefineConst("vx1", uLB);
+		 fct2.DefineConst("y0", 1.0);
+		 fct2.DefineConst("z0", 31.0);*/
+		 fct2.SetExpr("0.5*uLB-uLB*0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct2.DefineConst("uLB", uLB);
+		 fct2.DefineConst("x1c", x1c);
+		 fct2.DefineConst("x2c", x2c);
+		 fct2.DefineConst("x3c", x3c);
+		 fct2.DefineConst("radius", radius);
+		 fct2.DefineConst("interfaceThickness", interfaceThickness);
+
+
+		 InitDistributionsBlockVisitorMultiphase initVisitor(densityRatio, interfaceThickness, radius);
+         initVisitor.setPhi(fct1);
+         //initVisitor.setVx1(fct2);
+         grid->accept(initVisitor);
+
+         //set connectors
+         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         //ConnectorFactoryPtr factory(new Block3DConnectorFactory());
+         //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
+         grid->accept(setConnsVisitor);
+
+         //domain decomposition for threads
+         //PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
+         //grid->accept(pqPartVisitor);
+
+
+
+
+         //boundary conditions grid
+         {
+            UbSchedulerPtr geoSch(new UbScheduler(1));
+            WriteBoundaryConditionsCoProcessorPtr ppgeo(
+               new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
+            ppgeo->process(0);
+            ppgeo.reset();
+         }
+
+         if (myid == 0) UBLOG(logINFO, "Preprocess - end");
+      }
+      else
+      {
+         if (myid == 0)
+         {
+            UBLOG(logINFO, "Parameters:");
+            UBLOG(logINFO, "uLb = " << uLB);
+            UBLOG(logINFO, "rho = " << rhoLB);
+            UBLOG(logINFO, "nuLb = " << nuLB);
+            UBLOG(logINFO, "Re = " << Re);
+            UBLOG(logINFO, "dx = " << dx);
+            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
+            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
+            UBLOG(logINFO, "path = " << pathname);
+         }
+
+         rcp.restart((int)restartStep);
+         grid->setTimeStep(restartStep);
+
+         //BCAdapterPtr velBCAdapter(new VelocityBCAdapter());
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithm()));
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+         //bcVisitor.addBC(velBCAdapter);
+         //grid->accept(bcVisitor);
+
+         //set connectors
+         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         grid->accept(setConnsVisitor);
+
+         if (myid == 0) UBLOG(logINFO, "Restart - end");
+      }
+      UbSchedulerPtr visSch(new UbScheduler(outTime));
+      //WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm);
+
+      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
+      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
+
+	  
+	  
+	  
+
+	  
+	  UbSchedulerPtr bcSch(new UbScheduler(1, 12000, 12000));
+	  TimeDependentBCCoProcessorPtr inflowF2 (new TimeDependentBCCoProcessor(grid,bcSch));
+	  //inflowF2->addInteractor(inflowF2_1Int);
+	  //inflowF2->addInteractor(inflowF2_2Int);
+
+      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch,CalculationManager::MPI));
+      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[])
+{
+   //Sleep(30000);
+	if (argv != NULL)
+   {
+      if (argv[1] != NULL)
+      {
+         run(string(argv[1]));
+      }
+      else
+      {
+         cout << "Configuration file is missing!" << endl;
+      }
+   }
+
+}
+
diff --git a/apps/cpu/Multiphase/Multiphase (Jet breakup on Phoenix).cpp.backup b/apps/cpu/Multiphase/Multiphase (Jet breakup on Phoenix).cpp.backup
new file mode 100644
index 0000000000000000000000000000000000000000..9f28008987968254edb46a1b7750155aad4f5ced
--- /dev/null
+++ b/apps/cpu/Multiphase/Multiphase (Jet breakup on Phoenix).cpp.backup	
@@ -0,0 +1,508 @@
+#include <iostream>
+#include <string>
+
+#include "VirtualFluids.h"
+
+using namespace std;
+
+
+void run(string configname)
+{
+   try
+   {
+      ConfigurationFile   config;
+      config.load(configname);
+
+      string          pathname = config.getString("pathname");
+	  string		  pathGeo = config.getString("pathGeo");
+	  string		  geoFile = config.getString("geoFile");
+      int             numOfThreads = config.getInt("numOfThreads");
+      vector<int>     blocknx = config.getVector<int>("blocknx");
+	  vector<double>  boundingBox = config.getVector<double>("boundingBox");
+      //vector<double>  length = config.getVector<double>("length");
+	  double          uLB = config.getDouble("uLB");
+	  double          uF2 = config.getDouble("uF2");
+	  double		  nuL = config.getDouble("nuL");
+	  double		  nuG = config.getDouble("nuG");
+	  double		  densityRatio = config.getDouble("densityRatio");
+	  double		  sigma = config.getDouble("sigma");
+	  int		      interfaceThickness = config.getInt("interfaceThickness");
+	  double		  radius = config.getDouble("radius");
+	  double		  theta = config.getDouble("contactAngle");
+	  double		  gr = config.getDouble("gravity");
+	  double		  phiL = config.getDouble("phi_L");
+	  double		  phiH = config.getDouble("phi_H");
+	  double		  tauH = config.getDouble("Phase-field Relaxation");
+	  double		  mob = config.getDouble("Mobility");
+
+
+      double          endTime = config.getDouble("endTime");
+      double          outTime = config.getDouble("outTime");
+      double          availMem = config.getDouble("availMem");
+      int             refineLevel = config.getInt("refineLevel");
+      double          Re = config.getDouble("Re");
+      double          dx = config.getDouble("dx");
+      bool            logToFile = config.getBool("logToFile");
+      double          restartStep = config.getDouble("restartStep");
+      double          cpStart = config.getValue<double>("cpStart");
+      double          cpStep = config.getValue<double>("cpStep");
+      bool            newStart = config.getValue<bool>("newStart");
+
+      double beta  = 12*sigma/interfaceThickness;
+	  double kappa = 1.5*interfaceThickness*sigma;
+	  
+	  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);
+
+      LBMReal dLB; // = length[1] / dx;
+      LBMReal rhoLB = 0.0;
+      LBMReal nuLB = nuL; //(uLB*dLB) / Re;
+
+      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
+
+      const int baseLevel = 0;
+
+ 
+      
+      Grid3DPtr grid(new Grid3D(comm));
+      //grid->setPeriodicX1(true);
+	  //grid->setPeriodicX2(true);
+	  //grid->setPeriodicX3(true);
+      //////////////////////////////////////////////////////////////////////////
+      //restart
+      UbSchedulerPtr rSch(new UbScheduler(cpStep, cpStart));
+      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
+      MPIIORestart1CoProcessor rcp(grid, rSch, pathname, comm);
+      //////////////////////////////////////////////////////////////////////////
+	  
+
+
+      
+	  
+	  mu::Parser fctF1;
+	  //fctF1.SetExpr("vy1*(1-((x1-x0)^2+(x3-z0)^2)/(R^2))");
+	  //fctF1.SetExpr("vy1*(1-(sqrt((x1-x0)^2+(x3-z0)^2)/R))^0.1");
+	  fctF1.SetExpr("vy1");
+	  fctF1.DefineConst("vy1", -uLB);
+	  fctF1.DefineConst("R", 8.0);
+	  fctF1.DefineConst("x0", 0.0);
+	  fctF1.DefineConst("z0", 0.0);
+	  
+
+	  if (newStart)
+      {
+
+         //bounding box
+         /*double g_minX1 = 0.0;
+         double g_minX2 = -length[1] / 2.0;
+         double g_minX3 = -length[2] / 2.0;
+
+         double g_maxX1 = length[0];
+         double g_maxX2 = length[1] / 2.0;
+         double g_maxX3 = length[2] / 2.0;*/
+
+		 double g_minX1 = boundingBox[0];
+		 double g_minX2 = boundingBox[2];
+		 double g_minX3 = boundingBox[4];
+
+		 double g_maxX1 = boundingBox[1];
+		 double g_maxX2 = boundingBox[3];
+		 double g_maxX3 = boundingBox[5];
+
+         //geometry
+
+         //GbObject3DPtr innerCube(new GbCuboid3D(g_minX1+2, g_minX2+2, g_minX3+2, g_maxX1-2, g_maxX2-2, g_maxX3-2));
+
+		 //GbObject3DPtr cylinder1(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, radius));
+		 //GbObject3DPtr cylinder2(new GbCylinder3D(g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+		 
+		 //GbObject3DPtr cylinder(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+		 //GbObject3DPtr cylinders(new GbObject3DManager());
+		 //GbObject3DPtr cylinders1(new GbObjectGroup3D());
+		 
+
+		 
+		 
+		 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());
+
+		 GbTriFaceMesh3DPtr cylinder;
+		 if (myid==0) UBLOG(logINFO, "Read geoFile:start");
+		 //cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
+		 cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT));
+		 GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/Stlgeo", WbWriterVtkXmlBinary::getInstance());
+
+         
+         
+         //inflow
+		//GbCuboid3DPtr geoInflowF1(new GbCuboid3D(40.0, 628.0, 40.0, 80, 631.0, 80.0));  // For JetBreakup (Original)
+		GbCuboid3DPtr geoInflowF1(new GbCuboid3D(g_minX1, g_minX2-0.5*dx, g_minX3, g_maxX1, g_minX2 - 1.0*dx, g_maxX3));
+		if (myid==0) GbSystem3D::writeGeoObject(geoInflowF1.get(), pathname+"/geo/geoInflowF1", WbWriterVtkXmlASCII::getInstance());
+
+
+		//outflow
+		//GbCuboid3DPtr geoOutflow(new GbCuboid3D(-1.0, -1, -1.0, 121.0, 1.0, 121.0)); // For JetBreakup (Original)
+		GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_minX1, g_maxX2-1*dx, g_minX3, g_maxX1, g_maxX2, g_maxX3));
+		if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
+         
+         
+         double blockLength = blocknx[0] * dx;
+
+
+
+         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, "Preprocess - start");
+         }
+
+         grid->setDeltaX(dx);
+         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
+
+		 grid->setPeriodicX1(false);
+		 grid->setPeriodicX2(false);
+		 grid->setPeriodicX3(false);
+
+         
+
+         GenBlocksGridVisitor genBlocks(gridCube);
+         grid->accept(genBlocks);
+
+
+
+
+		 //BC Adapter
+		 //////////////////////////////////////////////////////////////////////////////
+		 BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+		 noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+
+
+		BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+		denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+		
+		double r = 5.0; //boost::dynamic_pointer_cast<GbCylinder3D>(cylinder)->getRadius();
+		double cx1 = g_minX1;
+		double cx2 = 0.0; //cylinder->getX2Centroid();
+		double cx3 = 0.0; //cylinder->getX3Centroid();
+
+
+		
+		mu::Parser fctPhi_F1;
+		fctPhi_F1.SetExpr("phiH");
+		fctPhi_F1.DefineConst("phiH", phiH);
+
+		mu::Parser fctPhi_F2;
+		fctPhi_F2.SetExpr("phiL");
+		fctPhi_F2.DefineConst("phiL", phiL);
+		
+		mu::Parser fctvel_F2_init;
+		fctvel_F2_init.SetExpr("U");
+		fctvel_F2_init.DefineConst("U", 0);
+
+		//fct.SetExpr("U");
+		//fct.DefineConst("U", uLB);
+		//BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		
+		BCAdapterPtr velBCAdapterF1       (new VelocityBCAdapterMultiphase(false, true, false, fctF1  , phiH, 0.0, endTime));
+		
+		//BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_1, phiH, 0.0, endTime));
+		//BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_2, phiH, 0.0, endTime));
+
+		//BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		//BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		
+		velBCAdapterF1->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		//velBCAdapterF2_1_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		//velBCAdapterF2_2_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		 
+		 
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+		 //mu::Parser fct;
+		 //fct.SetExpr("U");
+		 //fct.DefineConst("U", uLB);
+		 //BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingVelocityBCAlgorithm()));
+
+
+		 //////////////////////////////////////////////////////////////////////////////////
+		 //BC visitor
+		 BoundaryConditionsBlockVisitorMultiphase bcVisitor;
+		 bcVisitor.addBC(noSlipBCAdapter);
+		 bcVisitor.addBC(denBCAdapter);
+		 bcVisitor.addBC(velBCAdapterF1);
+		 //bcVisitor.addBC(velBCAdapterF2_1_init);
+		 //bcVisitor.addBC(velBCAdapterF2_2_init);
+
+
+
+         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
+
+         ppblocks->process(0);
+
+         Interactor3DPtr tubes(new D3Q27TriFaceMeshInteractor(cylinder, grid, noSlipBCAdapter, Interactor3D::SOLID));
+		 
+	     D3Q27InteractorPtr inflowF1Int = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF1, grid, velBCAdapterF1, Interactor3D::SOLID));
+
+		 //D3Q27InteractorPtr inflowF2_1Int_init = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_1, grid, velBCAdapterF2_1_init, Interactor3D::SOLID));
+
+		 //D3Q27InteractorPtr inflowF2_2Int_init = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_2, grid, velBCAdapterF2_2_init, Interactor3D::SOLID));
+
+         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
+
+		 //SetSolidBlockVisitor visitor1(inflowF2_1Int, SetSolidBlockVisitor::BC);
+		 //grid->accept(visitor1);
+		 //SetSolidBlockVisitor visitor2(inflowF2_2Int, SetSolidBlockVisitor::BC);
+		 //grid->accept(visitor2);
+
+
+         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW));
+         InteractorsHelper intHelper(grid, metisVisitor);
+		 intHelper.addInteractor(tubes);
+         intHelper.addInteractor(inflowF1Int);
+         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");
+         }
+
+         LBMKernelPtr kernel;
+
+         kernel = LBMKernelPtr(new MultiphaseCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], MultiphaseCumulantLBMKernel::NORMAL));
+
+         kernel->setWithForcing(true);
+		 kernel->setForcingX1(0.0);
+		 kernel->setForcingX2(gr);
+		 kernel->setForcingX3(0.0);
+
+		 kernel->setPhiL(phiL);
+		 kernel->setPhiH(phiH);
+		 kernel->setPhaseFieldRelaxation(tauH);
+		 kernel->setMobility(mob);
+
+         BCProcessorPtr bcProc(new BCProcessor());
+         //BCProcessorPtr bcProc(new ThinWallBCProcessor());
+
+         kernel->setBCProcessor(bcProc);
+
+         SetKernelBlockVisitorMultiphase kernelVisitor(kernel, nuL, nuG, densityRatio, beta, kappa, theta, availMem, needMem);
+         
+		 grid->accept(kernelVisitor);
+
+         if (refineLevel > 0)
+         {
+            SetUndefinedNodesBlockVisitor undefNodesVisitor;
+            grid->accept(undefNodesVisitor);
+         }
+
+		 //inflowF2_1Int->initInteractor();
+		 //inflowF2_2Int->initInteractor();
+
+         intHelper.setBC();
+		 
+        
+         grid->accept(bcVisitor);
+
+         //initialization of distributions
+		 LBMReal x1c =  radius; //g_minX1; //radius; //19; //(g_maxX1+g_minX1)/2;
+		 LBMReal x2c = (g_maxX2+g_minX2)/2; //g_minX2 + 2;
+		 LBMReal x3c = (g_maxX3+g_minX3)/2;
+		 mu::Parser fct1;
+		 
+		 //fct1.SetExpr("0.5-0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 //fct1.SetExpr("phiM-phiM*tanh((sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/(interfaceThickness*phiM))");
+		 
+		 //fct1.SetExpr("0.5*(phiH + phiL)-0.5*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 
+		 
+		 //fct1.SetExpr("0.5*(phiH + phiL) + 0.5*(phiH - phiL)*tanh(2*((x2-radius))/interfaceThickness)");
+		 fct1.SetExpr("phiL");
+		 fct1.DefineConst("x1c", x1c);
+		 fct1.DefineConst("x2c", x2c);
+		 fct1.DefineConst("x3c", x3c);
+		 fct1.DefineConst("phiL", phiL);
+		 fct1.DefineConst("phiH", phiH);
+		 fct1.DefineConst("radius", radius);
+		 fct1.DefineConst("interfaceThickness", interfaceThickness);
+		 
+		 mu::Parser fct2;
+		 //fct2.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+		 fct2.SetExpr("vx1");
+		 fct2.DefineConst("R", 10.0);
+		 fct2.DefineConst("vx1", uLB);
+		 fct2.DefineConst("y0", 1.0);
+		 fct2.DefineConst("z0", 31.0);
+		 /*fct2.SetExpr("0.5*uLB-uLB*0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct2.DefineConst("uLB", uLB);
+		 fct2.DefineConst("x1c", x1c);
+		 fct2.DefineConst("x2c", x2c);
+		 fct2.DefineConst("x3c", x3c);
+		 fct2.DefineConst("radius", radius);
+		 fct2.DefineConst("interfaceThickness", interfaceThickness);*/
+
+
+		 InitDistributionsBlockVisitorMultiphase initVisitor(densityRatio, interfaceThickness, radius);
+         initVisitor.setPhi(fct1);
+         //initVisitor.setVx1(fct2);
+         grid->accept(initVisitor);
+
+         //set connectors
+         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         //ConnectorFactoryPtr factory(new Block3DConnectorFactory());
+         //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
+         grid->accept(setConnsVisitor);
+
+         //domain decomposition for threads
+         //PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
+         //grid->accept(pqPartVisitor);
+
+
+
+
+         //boundary conditions grid
+         {
+            UbSchedulerPtr geoSch(new UbScheduler(1));
+            WriteBoundaryConditionsCoProcessorPtr ppgeo(
+               new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
+            ppgeo->process(0);
+            ppgeo.reset();
+         }
+
+         if (myid == 0) UBLOG(logINFO, "Preprocess - end");
+      }
+      else
+      {
+         if (myid == 0)
+         {
+            UBLOG(logINFO, "Parameters:");
+            UBLOG(logINFO, "uLb = " << uLB);
+            UBLOG(logINFO, "rho = " << rhoLB);
+            UBLOG(logINFO, "nuLb = " << nuLB);
+            UBLOG(logINFO, "Re = " << Re);
+            UBLOG(logINFO, "dx = " << dx);
+            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
+            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
+            UBLOG(logINFO, "path = " << pathname);
+         }
+
+         rcp.restart((int)restartStep);
+         grid->setTimeStep(restartStep);
+
+         //BCAdapterPtr velBCAdapter(new VelocityBCAdapter());
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithm()));
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+         //bcVisitor.addBC(velBCAdapter);
+         //grid->accept(bcVisitor);
+
+         //set connectors
+         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         grid->accept(setConnsVisitor);
+
+         if (myid == 0) UBLOG(logINFO, "Restart - end");
+      }
+      UbSchedulerPtr visSch(new UbScheduler(outTime));
+      WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm);
+
+      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
+      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
+
+	  
+	  
+	  
+
+	  
+	  //UbSchedulerPtr bcSch(new UbScheduler(1, 12000, 12000));
+	  //TimeDependentBCCoProcessorPtr inflowF2 (new TimeDependentBCCoProcessor(grid,bcSch));
+	  //inflowF2->addInteractor(inflowF2_1Int);
+	  //inflowF2->addInteractor(inflowF2_2Int);
+
+      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch,CalculationManager::MPI));
+      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[])
+{
+   //Sleep(30000);
+	if (argv != NULL)
+   {
+      if (argv[1] != NULL)
+      {
+         run(string(argv[1]));
+      }
+      else
+      {
+         cout << "Configuration file is missing!" << endl;
+      }
+   }
+
+}
+
diff --git a/apps/cpu/Multiphase/Multiphase.cfg b/apps/cpu/Multiphase/Multiphase.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..0d3e5633ea5b4c718eadd5fba04b89abc38497ed
--- /dev/null
+++ b/apps/cpu/Multiphase/Multiphase.cfg
@@ -0,0 +1,48 @@
+pathname = d:/temp/MultiphaseNew
+pathGeo = d:/Projects/VirtualFluids-Multiphase/source/Applications/Multiphase/backup
+geoFile = JetBreakup2.ASCII.stl
+numOfThreads = 4
+availMem = 10e9
+
+#Grid
+
+#boundingBox = -1.0 121.0 0.5 629.0 -1.0 121.0 #(Jet Breakup) (Original with inlet length)
+#boundingBox = -60.5 60.5 -1.0 -201.0 -60.5 60.5 #(Jet Breakup2) (Original without inlet length)
+#blocknx = 22 20 22
+
+boundingBox = -60.5 60.5 -1.0 -21.0 -60.5 60.5 #(Jet Breakup2) (Original without inlet length)
+blocknx = 22 20 22
+
+
+dx = 0.5
+refineLevel = 0
+
+#Simulation
+uLB = 0.05 #inlet velocity
+uF2 = 0.0001
+Re = 10
+nuL = 1.0e-5  #!1e-2
+nuG = 1.16e-4 #!1e-2
+densityRatio = 10 #30
+sigma = 4.66e-3 #surface tension 1e-4 ./. 1e-5
+interfaceThickness = 5
+radius = 615.0   (Jet Breakup)
+contactAngle = 110.0
+gravity = 0.0
+#gravity = -5.04e-6
+phi_L = 0.0
+phi_H = 1.0
+Phase-field Relaxation = 0.6
+Mobility = 0.02 # 0.01 ./. 0.08, fine correction of Phase-field Relaxation parameter, to activate it need to change in kernel tauH to tauH1 
+
+
+logToFile = false
+
+newStart = true
+restartStep = 100000
+
+cpStart = 100000
+cpStep = 100000
+
+outTime = 1
+endTime = 200000000
\ No newline at end of file
diff --git a/apps/cpu/Multiphase/Multiphase.cpp b/apps/cpu/Multiphase/Multiphase.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4ea38e31c7ec3b29f157bcb66d0b0d885bcc12af
--- /dev/null
+++ b/apps/cpu/Multiphase/Multiphase.cpp
@@ -0,0 +1,503 @@
+#include <iostream>
+#include <string>
+
+#include "VirtualFluids.h"
+
+using namespace std;
+
+void run(string configname)
+{
+    try {
+        ConfigurationFile config;
+        config.load(configname);
+
+        string pathname            = config.getValue<string>("pathname");
+        string pathGeo             = config.getValue<string>("pathGeo");
+        string geoFile             = config.getValue<string>("geoFile");
+        int numOfThreads           = config.getValue<int>("numOfThreads");
+        vector<int> blocknx        = config.getVector<int>("blocknx");
+        vector<double> boundingBox = config.getVector<double>("boundingBox");
+        // vector<double>  length = config.getVector<double>("length");
+        double uLB = config.getValue<double>("uLB");
+        // double uF2                         = config.getValue<double>("uF2");
+        double nuL             = config.getValue<double>("nuL");
+        double nuG             = config.getValue<double>("nuG");
+        double densityRatio    = config.getValue<double>("densityRatio");
+        double sigma           = config.getValue<double>("sigma");
+        int interfaceThickness = config.getValue<int>("interfaceThickness");
+        double radius          = config.getValue<double>("radius");
+        double theta           = config.getValue<double>("contactAngle");
+        double gr              = config.getValue<double>("gravity");
+        double phiL            = config.getValue<double>("phi_L");
+        double phiH            = config.getValue<double>("phi_H");
+        double tauH            = config.getValue<double>("Phase-field Relaxation");
+        double mob             = config.getValue<double>("Mobility");
+
+        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");
+        bool logToFile     = config.getValue<bool>("logToFile");
+        double restartStep = config.getValue<double>("restartStep");
+        double cpStart     = config.getValue<double>("cpStart");
+        double cpStep      = config.getValue<double>("cpStep");
+        bool newStart      = config.getValue<bool>("newStart");
+
+        double beta  = 12 * sigma / interfaceThickness;
+        double kappa = 1.5 * interfaceThickness * sigma;
+
+        SPtr<Communicator> comm = MPICommunicator::getInstance();
+        int myid                = comm->getProcessID();
+
+        if (myid == 0)
+            UBLOG(logINFO, "Jet Breakup: Start!");
+
+        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);
+
+        // LBMReal dLB = 0; // = length[1] / dx;
+        LBMReal rhoLB = 0.0;
+        LBMReal nuLB  = nuL; //(uLB*dLB) / Re;
+
+        SPtr<LBMUnitConverter> conv(new LBMUnitConverter());
+
+        const int baseLevel = 0;
+
+        SPtr<LBMKernel> kernel;
+
+        kernel = SPtr<LBMKernel>(new MultiphaseCumulantLBMKernel());
+
+        kernel->setWithForcing(true);
+        kernel->setForcingX1(0.0);
+        kernel->setForcingX2(gr);
+        kernel->setForcingX3(0.0);
+
+        kernel->setPhiL(phiL);
+        kernel->setPhiH(phiH);
+        kernel->setPhaseFieldRelaxation(tauH);
+        kernel->setMobility(mob);
+
+        SPtr<BCProcessor> bcProc(new BCProcessor());
+        // BCProcessorPtr bcProc(new ThinWallBCProcessor());
+
+        kernel->setBCProcessor(bcProc);
+
+        SPtr<Grid3D> grid(new Grid3D(comm));
+        // grid->setPeriodicX1(true);
+        // grid->setPeriodicX2(true);
+        // grid->setPeriodicX3(true);
+        //////////////////////////////////////////////////////////////////////////
+        // restart
+        SPtr<UbScheduler> rSch(new UbScheduler(cpStep, cpStart));
+        // RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
+        MPIIORestartCoProcessor rcp(grid, rSch, pathname, comm);
+        rcp.setLBMKernel(kernel);
+        rcp.setBCProcessor(bcProc);
+        //////////////////////////////////////////////////////////////////////////
+
+        mu::Parser fctF1;
+        // fctF1.SetExpr("vy1*(1-((x1-x0)^2+(x3-z0)^2)/(R^2))");
+        // fctF1.SetExpr("vy1*(1-(sqrt((x1-x0)^2+(x3-z0)^2)/R))^0.1");
+        fctF1.SetExpr("vy1");
+        fctF1.DefineConst("vy1", -uLB);
+        fctF1.DefineConst("R", 8.0);
+        fctF1.DefineConst("x0", 0.0);
+        fctF1.DefineConst("z0", 0.0);
+
+        if (newStart) {
+
+            // bounding box
+            /*double g_minX1 = 0.0;
+            double g_minX2 = -length[1] / 2.0;
+            double g_minX3 = -length[2] / 2.0;
+
+            double g_maxX1 = length[0];
+            double g_maxX2 = length[1] / 2.0;
+            double g_maxX3 = length[2] / 2.0;*/
+
+            double g_minX1 = boundingBox[0];
+            double g_minX2 = boundingBox[2];
+            double g_minX3 = boundingBox[4];
+
+            double g_maxX1 = boundingBox[1];
+            double g_maxX2 = boundingBox[3];
+            double g_maxX3 = boundingBox[5];
+
+            // geometry
+
+            // GbObject3DPtr innerCube(new GbCuboid3D(g_minX1+2, g_minX2+2, g_minX3+2, g_maxX1-2, g_maxX2-2,
+            // g_maxX3-2));
+
+            // GbObject3DPtr cylinder1(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_minX1 + 12.0*dx,
+            // g_maxX2/2, g_maxX3/2, radius)); GbObject3DPtr cylinder2(new GbCylinder3D(g_minX1 + 12.0*dx, g_maxX2/2,
+            // g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+
+            // GbObject3DPtr cylinder(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx,
+            // g_maxX2/2, g_maxX3/2, dLB / 2.0)); GbObject3DPtr cylinders(new GbObject3DManager()); GbObject3DPtr
+            // cylinders1(new GbObjectGroup3D());
+
+            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());
+
+
+            if (myid == 0) UBLOG(logINFO, "Read geoFile:start");
+            SPtr<GbTriFaceMesh3D> cylinder = make_shared<GbTriFaceMesh3D>();
+            cylinder->readMeshFromSTLFileASCII(pathGeo + "/" + geoFile, false);
+            GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/Stlgeo", WbWriterVtkXmlBinary::getInstance());
+            if (myid == 0) UBLOG(logINFO, "Read geoFile:stop");
+            // inflow
+            // GbCuboid3DPtr geoInflowF1(new GbCuboid3D(40.0, 628.0, 40.0, 80, 631.0, 80.0));  // For JetBreakup
+            // (Original) GbCuboid3DPtr geoInflowF1(new GbCuboid3D(g_minX1-2.0*dx, g_minX2-2.0*dx, g_minX3-2.0*dx,
+            // g_maxX1+2.0*dx, g_minX2+2.0*dx, g_maxX3+2.0*dx)); if (myid == 0)
+            // GbSystem3D::writeGeoObject(geoInflowF1.get(), pathname + "/geo/geoInflowF1",
+            // WbWriterVtkXmlASCII::getInstance());
+
+            ////outflow
+            ////GbCuboid3DPtr geoOutflow(new GbCuboid3D(-1.0, -1, -1.0, 121.0, 1.0, 121.0)); // For JetBreakup
+            ///(Original)
+            // GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_minX1-2.0*dx, g_maxX2, g_minX3-2.0*dx, g_maxX1+2.0*dx,
+            // g_maxX2+2.0*dx, g_maxX3+2.0*dx)); if (myid == 0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname +
+            // "/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
+
+            GbCuboid3DPtr geoInflowF1(
+                new GbCuboid3D(g_minX1, g_minX2 - 0.5 * dx, g_minX3, g_maxX1, g_minX2 - 1.0 * dx, g_maxX3));
+            if (myid == 0)
+                GbSystem3D::writeGeoObject(geoInflowF1.get(), pathname + "/geo/geoInflowF1",
+                                           WbWriterVtkXmlASCII::getInstance());
+
+            // outflow
+            // GbCuboid3DPtr geoOutflow(new GbCuboid3D(-1.0, -1, -1.0, 121.0, 1.0, 121.0)); // For JetBreakup (Original)
+            GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_minX1, g_maxX2 - 1 * dx, g_minX3, g_maxX1, g_maxX2, g_maxX3));
+            if (myid == 0)
+                GbSystem3D::writeGeoObject(geoOutflow.get(), pathname + "/geo/geoOutflow",
+                                           WbWriterVtkXmlASCII::getInstance());
+
+            // double blockLength = blocknx[0] * dx;
+
+            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, "Preprocess - start");
+            }
+
+            grid->setDeltaX(dx);
+            grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
+
+            grid->setPeriodicX1(false);
+            grid->setPeriodicX2(false);
+            grid->setPeriodicX3(false);
+
+            GenBlocksGridVisitor genBlocks(gridCube);
+            grid->accept(genBlocks);
+
+            // BC Adapter
+            //////////////////////////////////////////////////////////////////////////////
+            SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter());
+            noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NoSlipBCAlgorithmMultiphase()));
+
+            SPtr<BCAdapter> denBCAdapter(new DensityBCAdapter(rhoLB));
+            denBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingOutflowBCAlgorithmMultiphase()));
+
+            // double r = 5.0; //boost::dynamic_pointer_cast<GbCylinder3D>(cylinder)->getRadius();
+            // double cx1 = g_minX1;
+            // double cx2 = 0.0; //cylinder->getX2Centroid();
+            // double cx3 = 0.0; //cylinder->getX3Centroid();
+
+            mu::Parser fctPhi_F1;
+            fctPhi_F1.SetExpr("phiH");
+            fctPhi_F1.DefineConst("phiH", phiH);
+
+            mu::Parser fctPhi_F2;
+            fctPhi_F2.SetExpr("phiL");
+            fctPhi_F2.DefineConst("phiL", phiL);
+
+            mu::Parser fctvel_F2_init;
+            fctvel_F2_init.SetExpr("U");
+            fctvel_F2_init.DefineConst("U", 0);
+
+            // fct.SetExpr("U");
+            // fct.DefineConst("U", uLB);
+            // BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+
+            SPtr<BCAdapter> velBCAdapterF1(
+                new VelocityBCAdapterMultiphase(false, true, false, fctF1, phiH, 0.0, endTime));
+
+            // BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_1, phiH,
+            // 0.0, endTime)); BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true,
+            // fctF2_2, phiH, 0.0, endTime));
+
+            // BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init,
+            // phiL, 0.0, endTime)); BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false,
+            // true, fctvel_F2_init, phiL, 0.0, endTime));
+
+            velBCAdapterF1->setBcAlgorithm(SPtr<BCAlgorithm>(new VelocityBCAlgorithmMultiphase()));
+            // velBCAdapterF2_1_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+            // velBCAdapterF2_2_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+
+            // velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+            // mu::Parser fct;
+            // fct.SetExpr("U");
+            // fct.DefineConst("U", uLB);
+            // BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+            // velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingVelocityBCAlgorithm()));
+
+            //////////////////////////////////////////////////////////////////////////////////
+            // BC visitor
+            BoundaryConditionsBlockVisitorMultiphase bcVisitor;
+            bcVisitor.addBC(noSlipBCAdapter);
+            bcVisitor.addBC(denBCAdapter);
+            bcVisitor.addBC(velBCAdapterF1);
+            // bcVisitor.addBC(velBCAdapterF2_1_init);
+            // bcVisitor.addBC(velBCAdapterF2_2_init);
+
+            SPtr<WriteBlocksCoProcessor> ppblocks(new WriteBlocksCoProcessor(
+                grid, SPtr<UbScheduler>(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
+
+            //ppblocks->process(0);
+
+            SPtr<Interactor3D> tubes(
+                new D3Q27TriFaceMeshInteractor(cylinder, grid, noSlipBCAdapter, Interactor3D::SOLID));
+
+            SPtr<D3Q27Interactor> inflowF1Int(
+                new D3Q27Interactor(geoInflowF1, grid, velBCAdapterF1, Interactor3D::SOLID));
+
+            // D3Q27InteractorPtr inflowF2_1Int_init = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_1, grid,
+            // velBCAdapterF2_1_init, Interactor3D::SOLID));
+
+            // D3Q27InteractorPtr inflowF2_2Int_init = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_2, grid,
+            // velBCAdapterF2_2_init, Interactor3D::SOLID));
+
+            SPtr<D3Q27Interactor> outflowInt(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
+
+            // SetSolidBlockVisitor visitor1(inflowF2_1Int, SetSolidBlockVisitor::BC);
+            // grid->accept(visitor1);
+            // SetSolidBlockVisitor visitor2(inflowF2_2Int, SetSolidBlockVisitor::BC);
+            // grid->accept(visitor2);
+
+            SPtr<Grid3DVisitor> metisVisitor(
+                new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW));
+            InteractorsHelper intHelper(grid, metisVisitor);
+            intHelper.addInteractor(tubes);
+            intHelper.addInteractor(inflowF1Int);
+            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");
+            }
+
+            // LBMKernelPtr kernel;
+
+            // kernel = LBMKernelPtr(new MultiphaseCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2],
+            // MultiphaseCumulantLBMKernel::NORMAL));
+
+            // kernel->setWithForcing(true);
+            // kernel->setForcingX1(0.0);
+            // kernel->setForcingX2(gr);
+            // kernel->setForcingX3(0.0);
+
+            // kernel->setPhiL(phiL);
+            // kernel->setPhiH(phiH);
+            // kernel->setPhaseFieldRelaxation(tauH);
+            // kernel->setMobility(mob);
+
+            // BCProcessorPtr bcProc(new BCProcessor());
+            // //BCProcessorPtr bcProc(new ThinWallBCProcessor());
+
+            // kernel->setBCProcessor(bcProc);
+
+            SetKernelBlockVisitorMultiphase kernelVisitor(kernel, nuL, nuG, densityRatio, beta, kappa, theta, availMem,
+                                                          needMem);
+
+            grid->accept(kernelVisitor);
+
+            if (refineLevel > 0) {
+                SetUndefinedNodesBlockVisitor undefNodesVisitor;
+                grid->accept(undefNodesVisitor);
+            }
+
+            // inflowF2_1Int->initInteractor();
+            // inflowF2_2Int->initInteractor();
+
+            intHelper.setBC();
+
+            grid->accept(bcVisitor);
+
+            // initialization of distributions
+            LBMReal x1c = radius;                  // g_minX1; //radius; //19; //(g_maxX1+g_minX1)/2;
+            LBMReal x2c = (g_maxX2 + g_minX2) / 2; // g_minX2 + 2;
+            LBMReal x3c = (g_maxX3 + g_minX3) / 2;
+            mu::Parser fct1;
+
+            // fct1.SetExpr("0.5-0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+            // fct1.SetExpr("phiM-phiM*tanh((sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/(interfaceThickness*phiM))");
+
+            // fct1.SetExpr("0.5*(phiH + phiL)-0.5*(phiH -
+            // phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+
+            // fct1.SetExpr("0.5*(phiH + phiL) + 0.5*(phiH - phiL)*tanh(2*((x2-radius))/interfaceThickness)");
+            fct1.SetExpr("phiL");
+            fct1.DefineConst("x1c", x1c);
+            fct1.DefineConst("x2c", x2c);
+            fct1.DefineConst("x3c", x3c);
+            fct1.DefineConst("phiL", phiL);
+            fct1.DefineConst("phiH", phiH);
+            fct1.DefineConst("radius", radius);
+            fct1.DefineConst("interfaceThickness", interfaceThickness);
+
+            mu::Parser fct2;
+            // fct2.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+            fct2.SetExpr("vx1");
+            fct2.DefineConst("R", 10.0);
+            fct2.DefineConst("vx1", uLB);
+            fct2.DefineConst("y0", 1.0);
+            fct2.DefineConst("z0", 31.0);
+            /*fct2.SetExpr("0.5*uLB-uLB*0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+            fct2.DefineConst("uLB", uLB);
+            fct2.DefineConst("x1c", x1c);
+            fct2.DefineConst("x2c", x2c);
+            fct2.DefineConst("x3c", x3c);
+            fct2.DefineConst("radius", radius);
+            fct2.DefineConst("interfaceThickness", interfaceThickness);*/
+
+            InitDistributionsBlockVisitorMultiphase initVisitor(densityRatio, interfaceThickness, radius);
+            initVisitor.setPhi(fct1);
+            // initVisitor.setVx1(fct2);
+            grid->accept(initVisitor);
+
+            // set connectors
+            InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+            // InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+            SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+            // ConnectorFactoryPtr factory(new Block3DConnectorFactory());
+            // ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
+            grid->accept(setConnsVisitor);
+
+            // domain decomposition for threads
+            // PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
+            // grid->accept(pqPartVisitor);
+
+            // boundary conditions grid
+            {
+                SPtr<UbScheduler> geoSch(new UbScheduler(1));
+                SPtr<WriteBoundaryConditionsCoProcessor> ppgeo(new WriteBoundaryConditionsCoProcessor(
+                    grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), comm));
+                ppgeo->process(0);
+                ppgeo.reset();
+            }
+
+            if (myid == 0)
+                UBLOG(logINFO, "Preprocess - end");
+        } else {
+            if (myid == 0) {
+                UBLOG(logINFO, "Parameters:");
+                UBLOG(logINFO, "uLb = " << uLB);
+                UBLOG(logINFO, "rho = " << rhoLB);
+                UBLOG(logINFO, "nuLb = " << nuLB);
+                UBLOG(logINFO, "Re = " << Re);
+                UBLOG(logINFO, "dx = " << dx);
+                UBLOG(logINFO, "number of levels = " << refineLevel + 1);
+                UBLOG(logINFO, "numOfThreads = " << numOfThreads);
+                UBLOG(logINFO, "path = " << pathname);
+            }
+
+            rcp.restart((int)restartStep);
+            grid->setTimeStep(restartStep);
+
+            // BCAdapterPtr velBCAdapter(new VelocityBCAdapter());
+            // velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithm()));
+            // velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+            // bcVisitor.addBC(velBCAdapter);
+            // grid->accept(bcVisitor);
+
+            // set connectors
+            // InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+            InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+            SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+            grid->accept(setConnsVisitor);
+
+            if (myid == 0)
+                UBLOG(logINFO, "Restart - end");
+        }
+        SPtr<UbScheduler> visSch(new UbScheduler(outTime));
+        SPtr<WriteMacroscopicQuantitiesCoProcessor> pp(new WriteMacroscopicQuantitiesCoProcessor(
+            grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm));
+
+        SPtr<UbScheduler> nupsSch(new UbScheduler(10, 30, 100));
+        SPtr<NUPSCounterCoProcessor> npr(new NUPSCounterCoProcessor(grid, nupsSch, numOfThreads, comm));
+
+        SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
+        SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, endTime));
+        calculator->addCoProcessor(npr);
+        calculator->addCoProcessor(pp);
+
+        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[])
+{
+    // Sleep(30000);
+    if (argv != NULL) {
+        if (argv[1] != NULL) {
+            run(string(argv[1]));
+        } else {
+            cout << "Configuration file is missing!" << endl;
+        }
+    }
+}
diff --git a/apps/cpu/Multiphase/backup/3D flow-focusing.STL b/apps/cpu/Multiphase/backup/3D flow-focusing.STL
new file mode 100644
index 0000000000000000000000000000000000000000..88aa3e365ce64c70526dc909d3578ac35a72f815
Binary files /dev/null and b/apps/cpu/Multiphase/backup/3D flow-focusing.STL differ
diff --git a/apps/cpu/Multiphase/backup/Cubic_jet.stl b/apps/cpu/Multiphase/backup/Cubic_jet.stl
new file mode 100644
index 0000000000000000000000000000000000000000..c72bd5e4cc997a156f43cc526b38d7fb49077aa1
Binary files /dev/null and b/apps/cpu/Multiphase/backup/Cubic_jet.stl differ
diff --git a/apps/cpu/Multiphase/backup/CumulantKernel-Before Cumulant modifications.cpp b/apps/cpu/Multiphase/backup/CumulantKernel-Before Cumulant modifications.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..860a1f1128fb161ee502bf8e1989748722a7941b
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/CumulantKernel-Before Cumulant modifications.cpp	
@@ -0,0 +1,2006 @@
+#include "MultiphaseCumulantLBMKernel.h"
+#include "D3Q27System.h"
+#include "InterpolationProcessor.h"
+#include "D3Q27EsoTwist3DSplittedVector.h"
+#include <math.h>
+#include <omp.h>
+
+#define PROOF_CORRECTNESS
+
+//////////////////////////////////////////////////////////////////////////
+MultiphaseCumulantLBMKernel::MultiphaseCumulantLBMKernel()
+{
+   this->nx1 = 0;
+   this->nx2 = 0;
+   this->nx3 = 0;
+   this->parameter = NORMAL;
+   this->OxyyMxzz = 1.0;
+   this->compressible = false;
+}
+//////////////////////////////////////////////////////////////////////////
+MultiphaseCumulantLBMKernel::MultiphaseCumulantLBMKernel(int nx1, int nx2, int nx3, Parameter p) 
+{
+   this->nx1 = nx1;
+   this->nx2 = nx2;
+   this->nx3 = nx3;
+   parameter = p;
+   this->compressible = false;
+}
+//////////////////////////////////////////////////////////////////////////
+MultiphaseCumulantLBMKernel::~MultiphaseCumulantLBMKernel(void)
+{
+
+}
+//////////////////////////////////////////////////////////////////////////
+void MultiphaseCumulantLBMKernel::init()
+{
+   //DistributionArray3DPtr d(new D3Q27EsoTwist3DSplittedVector(nx1+ghostLayerWitdh*2, nx2+ghostLayerWitdh*2, nx3+ghostLayerWitdh*2, -999.0));
+   DistributionArray3DPtr f(new D3Q27EsoTwist3DSplittedVector(nx1+2, nx2+2, nx3+2, -999.0));
+   DistributionArray3DPtr h(new D3Q27EsoTwist3DSplittedVector(nx1+2, nx2+2, nx3+2, -999.0)); // For phase-field
+   //PhaseFieldArray3DPtr phi(new CbArray3D<LBMReal,IndexerX3X2X1>(nx1+2, nx2+2, nx3+2, -999.0));
+   dataSet->setFdistributions(f);
+   dataSet->setHdistributions(h); // For phase-field
+   //dataSet->setPhaseField(phi);
+}
+//////////////////////////////////////////////////////////////////////////
+LBMKernelPtr MultiphaseCumulantLBMKernel::clone()
+{
+   LBMKernelPtr kernel(new MultiphaseCumulantLBMKernel(nx1, nx2, nx3, parameter));
+   boost::dynamic_pointer_cast<MultiphaseCumulantLBMKernel>(kernel)->init();
+   
+   kernel->setCollisionFactorMultiphase(this->collFactorL, this->collFactorG);
+   kernel->setDensityRatio(this->densityRatio);
+   kernel->setMultiphaseModelParameters(this->beta, this->kappa);
+   kernel->setContactAngle(this->contactAngle);
+   kernel->setPhiL(this->phiL);
+   kernel->setPhiH(this->phiH);
+   kernel->setPhaseFieldRelaxation(this->tauH);
+
+   kernel->setBCProcessor(bcProcessor->clone(kernel));
+   kernel->setWithForcing(withForcing);
+   kernel->setForcingX1(muForcingX1);
+   kernel->setForcingX2(muForcingX2);
+   kernel->setForcingX3(muForcingX3);
+   kernel->setIndex(ix1, ix2, ix3);
+   kernel->setDeltaT(deltaT);
+   switch (parameter)
+   {
+   case NORMAL:
+      boost::dynamic_pointer_cast<MultiphaseCumulantLBMKernel>(kernel)->OxyyMxzz = 1.0;
+   	break;
+   case MAGIC:
+      boost::dynamic_pointer_cast<MultiphaseCumulantLBMKernel>(kernel)->OxyyMxzz = 2.0 +(-collFactor);
+      break;
+   }
+   return kernel;
+}
+//////////////////////////////////////////////////////////////////////////
+void MultiphaseCumulantLBMKernel::calculate()
+{
+   timer.resetAndStart();
+   collideAll();
+   timer.stop();
+}
+//////////////////////////////////////////////////////////////////////////
+void MultiphaseCumulantLBMKernel::collideAll()
+{
+   using namespace D3Q27System;
+
+   //initializing of forcing stuff 
+   /*if (withForcing)
+   {
+   muForcingX1.DefineVar("x1",&muX1); muForcingX1.DefineVar("x2",&muX2); muForcingX1.DefineVar("x3",&muX3);
+   muForcingX2.DefineVar("x1",&muX1); muForcingX2.DefineVar("x2",&muX2); muForcingX2.DefineVar("x3",&muX3);
+   muForcingX3.DefineVar("x1",&muX1); muForcingX3.DefineVar("x2",&muX2); muForcingX3.DefineVar("x3",&muX3);
+
+   muDeltaT = deltaT;
+
+   muForcingX1.DefineVar("dt",&muDeltaT);
+   muForcingX2.DefineVar("dt",&muDeltaT);
+   muForcingX3.DefineVar("dt",&muDeltaT);
+
+   muNu = (1.0/3.0)*(1.0/collFactor - 1.0/2.0);
+
+   muForcingX1.DefineVar("nu",&muNu);
+   muForcingX2.DefineVar("nu",&muNu);
+   muForcingX3.DefineVar("nu",&muNu);
+
+   LBMReal forcingX1 = 0;
+   LBMReal forcingX2 = 0;
+   LBMReal forcingX3 = 0;
+   }*/
+   forcingX1 = 0.0;
+   forcingX2 = 0.0;
+   forcingX3 = 0.0;
+   /////////////////////////////////////
+
+   localDistributionsF = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions();
+   nonLocalDistributionsF = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions();
+   zeroDistributionsF = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions();
+
+   localDistributionsH = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getHdistributions())->getLocalDistributions();
+   nonLocalDistributionsH = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getHdistributions())->getNonLocalDistributions();
+   zeroDistributionsH = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getHdistributions())->getZeroDistributions();
+
+   //phaseField = dataSet->getPhaseField();
+
+   BCArray3DPtr bcArray = this->getBCProcessor()->getBCArray();
+
+   
+
+   const int bcArrayMaxX1 = (int)bcArray->getNX1();
+   const int bcArrayMaxX2 = (int)bcArray->getNX2();
+   const int bcArrayMaxX3 = (int)bcArray->getNX3();
+
+   int minX1 = ghostLayerWidth;
+   int minX2 = ghostLayerWidth;
+   int minX3 = ghostLayerWidth;
+   int maxX1 = bcArrayMaxX1-ghostLayerWidth;
+   int maxX2 = bcArrayMaxX2-ghostLayerWidth;
+   int maxX3 = bcArrayMaxX3-ghostLayerWidth;
+
+
+//#pragma omp parallel num_threads(8)
+   {
+   //   int i = omp_get_thread_num();
+   //   printf_s("Hello from thread %d\n", i);
+   //}
+//#pragma omp for 
+
+
+
+/*
+/////// Filling ghost nodes for FD computations //////////
+	for(int x1 = minX1; x1 < maxX1; x1++)
+	{
+		for(int x2 = minX2; x2 < maxX2; x2++)
+		{
+			int x3 = 0;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, x2, maxX3-1);
+			x3 = maxX3;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, x2, minX3);
+		}
+	}
+	for(int x2 = minX2; x2 < maxX2; x2++)
+	{
+		for(int x3 = minX3; x3 < maxX3; x3++)
+		{
+			int x1 = 0;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(maxX1-1, x2, x3);
+			x1 = maxX1;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(minX1, x2, x3);
+		}
+	}
+	for(int x1 = minX1; x1 < maxX1; x1++)
+	{
+		for(int x3 = minX3; x3 < maxX3; x3++)
+		{
+			int x2 = 0;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, maxX2-1, x3);
+			x2 = maxX2;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, minX2, x3);
+		}
+	}
+	(*phaseField)(0, 0,     0    ) = (*phaseField)(maxX1-1, maxX2-1, maxX3-1);
+	(*phaseField)(0, 0,     maxX3) = (*phaseField)(maxX1-1, maxX2-1, minX3  );
+	(*phaseField)(0, maxX2, 0    ) = (*phaseField)(maxX1-1, minX2, maxX3-1  );
+	(*phaseField)(0, maxX2, maxX3) = (*phaseField)(maxX1-1, minX2, minX3    );
+
+	(*phaseField)(maxX1, 0,     0    ) = (*phaseField)(minX1, maxX2-1, maxX3-1);
+	(*phaseField)(maxX1, 0,     maxX3) = (*phaseField)(minX1, maxX2-1, minX3  );
+	(*phaseField)(maxX1, maxX2, 0    ) = (*phaseField)(minX1, minX2, maxX3-1  );
+	(*phaseField)(maxX1, maxX2, maxX3) = (*phaseField)(minX1, minX2, minX3    );
+
+/////////////////////////////////////////////////////////   
+*/
+   
+   CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr phaseField(new CbArray3D<LBMReal,IndexerX3X2X1>(bcArrayMaxX1, bcArrayMaxX2, bcArrayMaxX3, -999.0));
+   
+   //CbArray3D<LBMReal> phaseField(bcArrayMaxX1, bcArrayMaxX2, bcArrayMaxX3,-999);
+   
+
+   for(int x3 = 0; x3 <= maxX3; x3++)
+   {
+      for(int x2 = 0; x2 <= maxX2; x2++)
+      {
+         for(int x1 = 0; x1 <= maxX1; x1++)
+         {
+            if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3))
+            {
+				int x1p = x1 + 1;
+				int x2p = x2 + 1;
+				int x3p = x3 + 1;
+
+				h[E  ] = (*this->localDistributionsH)(D3Q27System::ET_E, x1,x2,x3);
+				h[N  ] = (*this->localDistributionsH)(D3Q27System::ET_N,x1,x2,x3); 
+				h[T  ] = (*this->localDistributionsH)(D3Q27System::ET_T,x1,x2,x3);
+				h[NE ] = (*this->localDistributionsH)(D3Q27System::ET_NE,x1,x2,x3);
+				h[NW ] = (*this->localDistributionsH)(D3Q27System::ET_NW,x1p,x2,x3);
+				h[TE ] = (*this->localDistributionsH)(D3Q27System::ET_TE,x1,x2,x3);
+				h[TW ] = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p,x2,x3);
+				h[TN ] = (*this->localDistributionsH)(D3Q27System::ET_TN,x1,x2,x3);
+				h[TS ] = (*this->localDistributionsH)(D3Q27System::ET_TS,x1,x2p,x3);
+				h[TNE] = (*this->localDistributionsH)(D3Q27System::ET_TNE,x1,x2,x3);
+				h[TNW] = (*this->localDistributionsH)(D3Q27System::ET_TNW,x1p,x2,x3);
+				h[TSE] = (*this->localDistributionsH)(D3Q27System::ET_TSE,x1,x2p,x3);
+				h[TSW] = (*this->localDistributionsH)(D3Q27System::ET_TSW,x1p,x2p,x3);
+
+				h[W  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_W,x1p,x2,x3  );
+				h[S  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_S,x1,x2p,x3  );
+				h[B  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_B,x1,x2,x3p  );
+				h[SW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW,x1p,x2p,x3 );
+				h[SE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE,x1,x2p,x3 );
+				h[BW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW,x1p,x2,x3p );
+				h[BE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE,x1,x2,x3p );
+				h[BS ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS,x1,x2p,x3p );
+				h[BN ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN,x1,x2,x3p );
+				h[BSW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+				h[BSE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE,x1,x2p,x3p);
+				h[BNW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW,x1p,x2,x3p);
+				h[BNE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE,x1,x2,x3p);
+
+				h[ZERO] = (*this->zeroDistributionsH)(x1,x2,x3);
+				//LBMReal phase = h[ZERO] + h[E] + h[W] + h[N] + h[S] + h[T] + h[B] + h[NE] + h[SW] + h[SE] + h[NW] + h[TE] + h[BW] + 
+				//	h[BE] + h[TW] + h[TN] + h[BS] + h[BN] + h[TS] + h[TNE] + h[TNW] + h[TSE] + h[TSW] + h[BNE] + h[BNW] + h[BSE] + h[BSW];
+				//if (phase > 1.0) phase = 1.0e0;
+				//(*phaseField)(x1,x2,x3) = phase;
+				(*phaseField)(x1,x2,x3) = h[ZERO] + h[E] + h[W] + h[N] + h[S] + h[T] + h[B] + h[NE] + h[SW] + h[SE] + h[NW] + h[TE] + h[BW] + 
+					h[BE] + h[TW] + h[TN] + h[BS] + h[BN] + h[TS] + h[TNE] + h[TNW] + h[TSE] + h[TSW] + h[BNE] + h[BNW] + h[BSE] + h[BSW];
+			}
+		 }
+	  }
+   }
+   
+   
+   LBMReal collFactorM;
+   LBMReal forcingTerm[D3Q27System::ENDF+1];
+   LBMReal m000, m100, m010, m001, m110, m101, m011, m200, m020, m002, m120, m102, m210, m012, m201, m021, m111, m220, m202, m022, m211, m121, m112, m221, m212, m122, m222;
+   LBMReal k000, k100, k010, k001, k110, k101, k011, k200, k020, k002, k120, k102, k210, k012, k201, k021, k111, k220, k202, k022, k211, k121, k112, k221, k212, k122, k222;
+   LBMReal c000, c100, c010, c001, c110, c101, c011, c200, c020, c002, c120, c102, c210, c012, c201, c021, c111, c220, c202, c022, c211, c121, c112, c221, c212, c122, c222;
+
+   LBMReal k200_pl_k020_pl_k002, k200_mi_k020, k200_mi_k002, k210_pl_k012, k210_mi_k012, k201_pl_k021, k201_mi_k021, k120_pl_k102, k120_mi_k102, k220_pl_k202_pl_k022, 
+	   k220_mi2_k202_pl_k022, k220_pl_k202_mi2_k022;
+
+   LBMReal c200_pl_c020_pl_c002, c200_mi_c020, c200_mi_c002, c210_pl_c012, c210_mi_c012, c201_pl_c021, c201_mi_c021, c120_pl_c102, c120_mi_c102, c220_pl_c202_pl_c022, 
+	   c220_mi2_c202_pl_c022, c220_pl_c202_mi2_c022;
+
+   LBMReal w1, w2, w3, w4, w5, w6, w7, w8, w9, w10;
+   
+   w2  = 1.0;
+   w3  = 1.0;
+   w4  = 1.0;
+   w5  = 1.0;
+   w6  = 1.0;
+   w7  = 1.0;
+   w8  = 1.0;
+   w9  = 1.0;
+   w10 = 1.0;
+
+   for(int x3 = minX3; x3 < maxX3; x3++)
+   {
+      for(int x2 = minX2; x2 < maxX2; x2++)
+      {
+         for(int x1 = minX1; x1 < maxX1; x1++)
+         {
+            if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3))
+            {
+               int x1p = x1 + 1;
+               int x2p = x2 + 1;
+               int x3p = x3 + 1;
+
+
+               //////////////////////////////////////////////////////////////////////////
+               //Read distributions and phase field
+               ////////////////////////////////////////////////////////////////////////////
+               //////////////////////////////////////////////////////////////////////////
+
+               //E   N  T
+               //c   c  c
+               //////////
+               //W   S  B
+               //a   a  a
+
+               //Rest ist b
+
+               //mfxyz
+               //a - negative
+               //b - null
+               //c - positive
+               
+               // a b c
+               //-1 0 1
+			   
+			   /*
+			   phi[ZERO] = (phaseField)(x1,x2,x3);
+			   phi[E  ] = (phaseField)(x1 + DX1[E  ], x2 + DX2[E  ], x3 + DX3[E  ]);
+			   phi[N  ] = (phaseField)(x1 + DX1[N  ], x2 + DX2[N  ], x3 + DX3[N  ]);
+			   phi[T  ] = (phaseField)(x1 + DX1[T  ], x2 + DX2[T  ], x3 + DX3[T  ]);
+			   phi[W  ] = (phaseField)(x1 + DX1[W  ], x2 + DX2[W  ], x3 + DX3[W  ]);
+			   phi[S  ] = (phaseField)(x1 + DX1[S  ], x2 + DX2[S  ], x3 + DX3[S  ]);
+			   phi[B  ] = (phaseField)(x1 + DX1[B  ], x2 + DX2[B  ], x3 + DX3[B  ]);
+			   phi[NE ] = (phaseField)(x1 + DX1[NE ], x2 + DX2[NE ], x3 + DX3[NE ]);
+			   phi[NW ] = (phaseField)(x1 + DX1[NW ], x2 + DX2[NW ], x3 + DX3[NW ]);
+			   phi[TE ] = (phaseField)(x1 + DX1[TE ], x2 + DX2[TE ], x3 + DX3[TE ]);
+			   phi[TW ] = (phaseField)(x1 + DX1[TW ], x2 + DX2[TW ], x3 + DX3[TW ]);
+			   phi[TN ] = (phaseField)(x1 + DX1[TN ], x2 + DX2[TN ], x3 + DX3[TN ]);
+			   phi[TS ] = (phaseField)(x1 + DX1[TS ], x2 + DX2[TS ], x3 + DX3[TS ]);
+			   phi[SW ] = (phaseField)(x1 + DX1[SW ], x2 + DX2[SW ], x3 + DX3[SW ]);
+			   phi[SE ] = (phaseField)(x1 + DX1[SE ], x2 + DX2[SE ], x3 + DX3[SE ]);
+			   phi[BW ] = (phaseField)(x1 + DX1[BW ], x2 + DX2[BW ], x3 + DX3[BW ]);
+			   phi[BE ] = (phaseField)(x1 + DX1[BE ], x2 + DX2[BE ], x3 + DX3[BE ]);
+			   phi[BS ] = (phaseField)(x1 + DX1[BS ], x2 + DX2[BS ], x3 + DX3[BS ]);
+			   phi[BN ] = (phaseField)(x1 + DX1[BN ], x2 + DX2[BN ], x3 + DX3[BN ]);
+			   phi[BSW] = (phaseField)(x1 + DX1[BSW], x2 + DX2[BSW], x3 + DX3[BSW]);
+			   phi[BSE] = (phaseField)(x1 + DX1[BSE], x2 + DX2[BSE], x3 + DX3[BSE]);
+			   phi[BNW] = (phaseField)(x1 + DX1[BNW], x2 + DX2[BNW], x3 + DX3[BNW]);
+			   phi[BNE] = (phaseField)(x1 + DX1[BNE], x2 + DX2[BNE], x3 + DX3[BNE]);
+			   phi[TNE] = (phaseField)(x1 + DX1[TNE], x2 + DX2[TNE], x3 + DX3[TNE]);
+			   phi[TNW] = (phaseField)(x1 + DX1[TNW], x2 + DX2[TNW], x3 + DX3[TNW]);
+			   phi[TSE] = (phaseField)(x1 + DX1[TSE], x2 + DX2[TSE], x3 + DX3[TSE]);
+			   phi[TSW] = (phaseField)(x1 + DX1[TSW], x2 + DX2[TSW], x3 + DX3[TSW]);
+			   */
+			   findNeighbors(phaseField, x1, x2, x3);
+
+			   g[E  ] = (*this->localDistributionsF)(D3Q27System::ET_E, x1,x2,x3);
+			   g[N  ] = (*this->localDistributionsF)(D3Q27System::ET_N,x1,x2,x3); 
+			   g[T  ] = (*this->localDistributionsF)(D3Q27System::ET_T,x1,x2,x3);
+			   g[NE ] = (*this->localDistributionsF)(D3Q27System::ET_NE,x1,x2,x3);
+			   g[NW ] = (*this->localDistributionsF)(D3Q27System::ET_NW,x1p,x2,x3);
+			   g[TE ] = (*this->localDistributionsF)(D3Q27System::ET_TE,x1,x2,x3);
+			   g[TW ] = (*this->localDistributionsF)(D3Q27System::ET_TW, x1p,x2,x3);
+			   g[TN ] = (*this->localDistributionsF)(D3Q27System::ET_TN,x1,x2,x3);
+			   g[TS ] = (*this->localDistributionsF)(D3Q27System::ET_TS,x1,x2p,x3);
+			   g[TNE] = (*this->localDistributionsF)(D3Q27System::ET_TNE,x1,x2,x3);
+			   g[TNW] = (*this->localDistributionsF)(D3Q27System::ET_TNW,x1p,x2,x3);
+			   g[TSE] = (*this->localDistributionsF)(D3Q27System::ET_TSE,x1,x2p,x3);
+			   g[TSW] = (*this->localDistributionsF)(D3Q27System::ET_TSW,x1p,x2p,x3);
+
+			   g[W  ] = (*this->nonLocalDistributionsF)(D3Q27System::ET_W,x1p,x2,x3  );
+			   g[S  ] = (*this->nonLocalDistributionsF)(D3Q27System::ET_S,x1,x2p,x3  );
+			   g[B  ] = (*this->nonLocalDistributionsF)(D3Q27System::ET_B,x1,x2,x3p  );
+			   g[SW ] = (*this->nonLocalDistributionsF)(D3Q27System::ET_SW,x1p,x2p,x3 );
+			   g[SE ] = (*this->nonLocalDistributionsF)(D3Q27System::ET_SE,x1,x2p,x3 );
+			   g[BW ] = (*this->nonLocalDistributionsF)(D3Q27System::ET_BW,x1p,x2,x3p );
+			   g[BE ] = (*this->nonLocalDistributionsF)(D3Q27System::ET_BE,x1,x2,x3p );
+			   g[BS ] = (*this->nonLocalDistributionsF)(D3Q27System::ET_BS,x1,x2p,x3p );
+			   g[BN ] = (*this->nonLocalDistributionsF)(D3Q27System::ET_BN,x1,x2,x3p );
+			   g[BSW] = (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+			   g[BSE] = (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE,x1,x2p,x3p);
+			   g[BNW] = (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW,x1p,x2,x3p);
+			   g[BNE] = (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE,x1,x2,x3p);
+
+			   g[ZERO] = (*this->zeroDistributionsF)(x1,x2,x3);
+
+			   
+			   
+			   h[E  ] = (*this->localDistributionsH)(D3Q27System::ET_E, x1,x2,x3);
+			   h[N  ] = (*this->localDistributionsH)(D3Q27System::ET_N,x1,x2,x3); 
+			   h[T  ] = (*this->localDistributionsH)(D3Q27System::ET_T,x1,x2,x3);
+			   h[NE ] = (*this->localDistributionsH)(D3Q27System::ET_NE,x1,x2,x3);
+			   h[NW ] = (*this->localDistributionsH)(D3Q27System::ET_NW,x1p,x2,x3);
+			   h[TE ] = (*this->localDistributionsH)(D3Q27System::ET_TE,x1,x2,x3);
+			   h[TW ] = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p,x2,x3);
+			   h[TN ] = (*this->localDistributionsH)(D3Q27System::ET_TN,x1,x2,x3);
+			   h[TS ] = (*this->localDistributionsH)(D3Q27System::ET_TS,x1,x2p,x3);
+			   h[TNE] = (*this->localDistributionsH)(D3Q27System::ET_TNE,x1,x2,x3);
+			   h[TNW] = (*this->localDistributionsH)(D3Q27System::ET_TNW,x1p,x2,x3);
+			   h[TSE] = (*this->localDistributionsH)(D3Q27System::ET_TSE,x1,x2p,x3);
+			   h[TSW] = (*this->localDistributionsH)(D3Q27System::ET_TSW,x1p,x2p,x3);
+
+			   h[W  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_W,x1p,x2,x3  );
+			   h[S  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_S,x1,x2p,x3  );
+			   h[B  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_B,x1,x2,x3p  );
+			   h[SW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW,x1p,x2p,x3 );
+			   h[SE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE,x1,x2p,x3 );
+			   h[BW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW,x1p,x2,x3p );
+			   h[BE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE,x1,x2,x3p );
+			   h[BS ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS,x1,x2p,x3p );
+			   h[BN ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN,x1,x2,x3p );
+			   h[BSW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+			   h[BSE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE,x1,x2p,x3p);
+			   h[BNW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW,x1p,x2,x3p);
+			   h[BNE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE,x1,x2,x3p);
+
+			   h[ZERO] = (*this->zeroDistributionsH)(x1,x2,x3);
+
+			   LBMReal rhoH = 1.0;
+			   LBMReal rhoL = 1.0/densityRatio;
+
+			   //LBMReal rhoToPhi = (1.0 - 1.0/densityRatio);
+			   LBMReal rhoToPhi = (rhoH - rhoL)/(phiH - phiL);
+
+			   //collFactorM = phi[ZERO]*collFactorL + (1-phi[ZERO])*collFactorG;
+			   //collFactorM = phi[ZERO]*collFactorG + (1-phi[ZERO])*collFactorL;
+			   collFactorM = collFactorL + (collFactorL - collFactorG)*(phi[ZERO] - phiH)/(phiH - phiL);
+
+			   w1 = collFactorM;
+			   //LBMReal tauH = 1.0;
+			   LBMReal dX1_phi = gradX1_phi();
+			   LBMReal dX2_phi = gradX2_phi();
+			   LBMReal dX3_phi = gradX3_phi();
+			   LBMReal mu = 2*beta*phi[ZERO]*(phi[ZERO]-1)*(2*phi[ZERO]-1) - kappa*nabla2_phi();
+			   
+			   //LBMReal rhoToPhi = (1.0/densityRatio - 1.0);
+			   
+			   			   
+
+			   //----------- Calculating Macroscopic Values -------------
+
+			   //LBMReal rho = phi[ZERO] + (1.0 - phi[ZERO])*1.0/densityRatio;
+			   LBMReal rho = rhoH + rhoToPhi*(phi[ZERO] - phiH);
+			   //LBMReal rho = phi[ZERO]*1.0/densityRatio + (1.0 - phi[ZERO]);
+
+			   if (withForcing)
+			   {
+				   //muX1 = static_cast<double>(x1-1+ix1*maxX1);
+				   //muX2 = static_cast<double>(x2-1+ix2*maxX2);
+				   //muX3 = static_cast<double>(x3-1+ix3*maxX3);
+
+				   forcingX1 = muForcingX1.Eval();
+				   forcingX2 = muForcingX2.Eval();
+				   forcingX3 = muForcingX3.Eval();
+
+				   LBMReal rho_m = 1.0/densityRatio;
+				   forcingX1 = forcingX1*(rho-rho_m);
+				   forcingX2 = forcingX2*(rho-rho_m);
+				   forcingX3 = forcingX3*(rho-rho_m);
+
+				   //ux += forcingX1*deltaT*0.5; // X
+				   //uy += forcingX2*deltaT*0.5; // Y
+				   //uz += forcingX3*deltaT*0.5; // Z
+			   }
+
+			   LBMReal ux = (g[BE] + g[BNE] - g[BNW] + g[BSE] - g[BSW] - g[BW] + g[E] + g[NE] - g[NW] + g[SE] - g[SW] + g[TE] + 
+			   g[TNE] - g[TNW] + g[TSE] - g[TSW] - g[TW] - g[W]) / (rho*c1o3) + (mu*dX1_phi + forcingX1)/(2*rho);
+
+			   LBMReal uy = (g[BN] + g[BNE] + g[BNW] - g[BS] - g[BSE] - g[BSW] + g[N] + g[NE] + g[NW] - g[S] - g[SE] - g[SW] + 
+			   g[TN] + g[TNE] + g[TNW] - g[TS] - g[TSE] - g[TSW]) / (rho*c1o3) + (mu*dX2_phi + forcingX2)/(2*rho);
+
+			   LBMReal uz = (g[T] + g[TE] + g[TN] + g[TNE] + g[TNW] + g[TS] + g[TSE] + g[TSW] + g[TW] - g[B] - g[BE] - g[BN] - 
+			   g[BNE] - g[BNW] - g[BS] - g[BSE] - g[BSW] - g[BW]) / (rho*c1o3) + (mu*dX3_phi + forcingX3)/(2*rho);
+
+			   LBMReal p1 = (g[ZERO] + g[E] + g[W] + g[N] + g[S] + g[T] + g[B] + g[NE] + g[SW] + g[SE] + g[NW] + g[TE] + g[BW] + 
+			   g[BE] + g[TW] + g[TN] + g[BS] + g[BN] + g[TS] + g[TNE] + g[TNW] + g[TSE] + g[TSW] + g[BNE] + g[BNW] + g[BSE] + g[BSW]) +
+			   (ux*rhoToPhi*dX1_phi*c1o3 + uy*rhoToPhi*dX2_phi*c1o3 + uz*rhoToPhi*dX3_phi*c1o3)/2.0;
+			   
+			   //vvx = 0.0; vvy = 0.0; vvz = 0.0;
+			   //--------------------------------------------------------
+			   
+
+
+
+			   LBMReal ux2 = ux*ux;
+			   LBMReal uy2 = uy*uy;
+			   LBMReal uz2 = uz*uz;
+			   LBMReal ux_uy = ux*uy;
+			   LBMReal ux_uz = ux*uz;
+			   LBMReal uy_uz = uy*uz;
+			   LBMReal ux_uy_uz = ux*uy*uz;
+
+
+/*
+			   //----------- Calculating Forcing Terms -------------
+			   LBMReal forcingTerm1 = (ux*mu*dX1_phi + uy*mu*dX2_phi + uz*mu*dX3_phi);
+			   for (int dir = STARTF; dir < (ENDF+1); dir++)
+			   {
+				   if (dir != ZERO)
+				   {
+					   LBMReal dirGrad_phi = (phi[dir] - phi[INVDIR[dir]])/2.0;
+					   forcingTerm[dir] = (c1o3*rhoToPhi*dirGrad_phi + mu*dirGrad_phi)*(DX1[dir]*ux + DX2[dir]*uy + DX3[dir]*uz)*WEIGTH[dir]/c1o3 + mu*dirGrad_phi*WEIGTH[dir] - 
+						   (forcingTerm1)*WEIGTH[dir];
+				   } 
+				   else
+				   {
+					   forcingTerm[ZERO] =  -(forcingTerm1)*WEIGTH[ZERO];
+				   }
+			   }
+			  //--------------------------------------------------------
+*/
+
+			   //----------- Calculating Forcing Terms * -------------
+			   //LBMReal forcingTerm1 = (ux*mu*dX1_phi + uy*mu*dX2_phi + uz*mu*dX3_phi);
+			   for (int dir = STARTF; dir <= (FENDDIR); dir++)
+			   {
+				   LBMReal velProd = DX1[dir]*ux + DX2[dir]*uy + DX3[dir]*uz;
+				   LBMReal velSq1 = velProd*velProd;
+				   LBMReal gamma = WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(ux2+uy2+uz2));
+				   
+				   //forcingTerm[dir] = (DX1[dir] - ux)*((gamma - WEIGTH[dir])*c1o3*rhoToPhi*dX1_phi + gamma*mu*dX1_phi) + 
+					//   (DX2[dir] - uy)*((gamma - WEIGTH[dir])*c1o3*rhoToPhi*dX2_phi + gamma*mu*dX2_phi) + 
+					//   (DX3[dir] - uz)*((gamma - WEIGTH[dir])*c1o3*rhoToPhi*dX3_phi + gamma*mu*dX3_phi);
+				   
+				   LBMReal fac1 = (gamma - WEIGTH[dir])*c1o3*rhoToPhi;
+				   //LBMReal fac2 = gamma*mu;
+				   //LBMReal dirGrad_phi = (phi[dir] - phi[INVDIR[dir]])/2.0;
+				   //LBMReal dirGrad_phi = DX1[dir]*dX1_phi + DX2[dir]*dX2_phi + DX3[dir]*dX3_phi;
+				   /*forcingTerm[dir] = (fac1*dirGrad_phi + gamma*mu*dirGrad_phi + DX1[dir]*forcingX1 + DX2[dir]*forcingX2 + DX3[dir]*forcingX3) -
+				   (ux)*(fac1*dX1_phi + gamma*mu*dX1_phi) - 
+				   (uy)*(fac1*dX2_phi + gamma*mu*dX2_phi) - 
+				   (uz)*(fac1*dX3_phi + gamma*mu*dX3_phi);*/
+				   forcingTerm[dir] = (DX1[dir] - ux)*(fac1*dX1_phi + gamma*(mu*dX1_phi + forcingX1)) +
+									  (DX2[dir] - uy)*(fac1*dX2_phi + gamma*(mu*dX2_phi + forcingX2)) +
+									  (DX3[dir] - uz)*(fac1*dX3_phi + gamma*(mu*dX3_phi + forcingX3));
+
+			   }
+
+			   LBMReal gamma = WEIGTH[ZERO]*(1 - 1.5*(ux2+uy2+uz2));
+			   /*forcingTerm[ZERO] = -(ux)*((gamma - WEIGTH[ZERO])*c1o3*rhoToPhi*dX1_phi + gamma*mu*dX1_phi) - 
+				   (uy)*((gamma - WEIGTH[ZERO])*c1o3*rhoToPhi*dX2_phi + gamma*mu*dX2_phi) - 
+				   (uz)*((gamma - WEIGTH[ZERO])*c1o3*rhoToPhi*dX3_phi + gamma*mu*dX3_phi);*/
+			   LBMReal fac1 = (gamma - WEIGTH[ZERO])*c1o3*rhoToPhi;
+			   forcingTerm[ZERO] = (-ux)*(fac1*dX1_phi + gamma*(mu*dX1_phi + forcingX1)) +
+								   (-uy)*(fac1*dX2_phi + gamma*(mu*dX2_phi + forcingX2)) +
+							       (-uz)*(fac1*dX3_phi + gamma*(mu*dX3_phi + forcingX3));
+			   
+			   //--------------------------------------------------------
+
+/*			   
+			   f1[E  ] = (g[E  ] + 0.5*forcingTerm[E  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[E  ]/c1o3;
+			   f1[N  ] = (g[N  ] + 0.5*forcingTerm[N  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[N  ]/c1o3;
+			   f1[T  ] = (g[T  ] + 0.5*forcingTerm[T  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[T  ]/c1o3;
+			   f1[NE ] = (g[NE ] + 0.5*forcingTerm[NE ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[NE ]/c1o3;
+			   f1[NW ] = (g[NW ] + 0.5*forcingTerm[NW ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[NW ]/c1o3;
+			   f1[TE ] = (g[TE ] + 0.5*forcingTerm[TE ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TE ]/c1o3;
+			   f1[TW ] = (g[TW ] + 0.5*forcingTerm[TW ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TW ]/c1o3;
+			   f1[TN ] = (g[TN ] + 0.5*forcingTerm[TN ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TN ]/c1o3;
+			   f1[TS ] = (g[TS ] + 0.5*forcingTerm[TS ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TS ]/c1o3;
+			   f1[TNE] = (g[TNE] + 0.5*forcingTerm[TNE])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TNE]/c1o3;
+			   f1[TNW] = (g[TNW] + 0.5*forcingTerm[TNW])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TNW]/c1o3;
+			   f1[TSE] = (g[TSE] + 0.5*forcingTerm[TSE])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TSE]/c1o3;
+			   f1[TSW] = (g[TSW] + 0.5*forcingTerm[TSW])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TSW]/c1o3;
+			   f1[W  ] = (g[W  ] + 0.5*forcingTerm[W  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[W  ]/c1o3;
+			   f1[S  ] = (g[S  ] + 0.5*forcingTerm[S  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[S  ]/c1o3;
+			   f1[B  ] = (g[B  ] + 0.5*forcingTerm[B  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[B  ]/c1o3;
+			   f1[SW ] = (g[SW ] + 0.5*forcingTerm[SW ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[SW ]/c1o3;
+			   f1[SE ] = (g[SE ] + 0.5*forcingTerm[SE ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[SE ]/c1o3;
+			   f1[BW ] = (g[BW ] + 0.5*forcingTerm[BW ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BW ]/c1o3;
+			   f1[BE ] = (g[BE ] + 0.5*forcingTerm[BE ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BE ]/c1o3;
+			   f1[BS ] = (g[BS ] + 0.5*forcingTerm[BS ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BS ]/c1o3;
+			   f1[BN ] = (g[BN ] + 0.5*forcingTerm[BN ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BN ]/c1o3;
+			   f1[BSW] = (g[BSW] + 0.5*forcingTerm[BSW])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BSW]/c1o3;
+			   f1[BSE] = (g[BSE] + 0.5*forcingTerm[BSE])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BSE]/c1o3;
+			   f1[BNW] = (g[BNW] + 0.5*forcingTerm[BNW])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BNW]/c1o3;
+			   f1[BNE] = (g[BNE] + 0.5*forcingTerm[BNE])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BNE]/c1o3;
+			   f1[ZERO] = (g[ZERO] + 0.5*forcingTerm[ZERO])/c1o3 - (p1 - rho*c1o3)*WEIGTH[ZERO]/c1o3;
+*/
+			   
+			   LBMReal mfcbb = (g[E  ] + 0.5*forcingTerm[E  ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[E  ]/c1o3;
+			   LBMReal mfbcb = (g[N  ] + 0.5*forcingTerm[N  ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[N  ]/c1o3;
+			   LBMReal mfbbc = (g[T  ] + 0.5*forcingTerm[T  ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[T  ]/c1o3;
+			   LBMReal mfccb = (g[NE ] + 0.5*forcingTerm[NE ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[NE ]/c1o3;
+			   LBMReal mfacb = (g[NW ] + 0.5*forcingTerm[NW ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[NW ]/c1o3;
+			   LBMReal mfcbc = (g[TE ] + 0.5*forcingTerm[TE ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[TE ]/c1o3;
+			   LBMReal mfabc = (g[TW ] + 0.5*forcingTerm[TW ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[TW ]/c1o3;
+			   LBMReal mfbcc = (g[TN ] + 0.5*forcingTerm[TN ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[TN ]/c1o3;
+			   LBMReal mfbac = (g[TS ] + 0.5*forcingTerm[TS ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[TS ]/c1o3;
+			   LBMReal mfccc = (g[TNE] + 0.5*forcingTerm[TNE])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[TNE]/c1o3;
+			   LBMReal mfacc = (g[TNW] + 0.5*forcingTerm[TNW])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[TNW]/c1o3;
+			   LBMReal mfcac = (g[TSE] + 0.5*forcingTerm[TSE])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[TSE]/c1o3;
+			   LBMReal mfaac = (g[TSW] + 0.5*forcingTerm[TSW])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[TSW]/c1o3;
+			   LBMReal mfabb = (g[W  ] + 0.5*forcingTerm[W  ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[W  ]/c1o3;
+			   LBMReal mfbab = (g[S  ] + 0.5*forcingTerm[S  ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[S  ]/c1o3;
+			   LBMReal mfbba = (g[B  ] + 0.5*forcingTerm[B  ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[B  ]/c1o3;
+			   LBMReal mfaab = (g[SW ] + 0.5*forcingTerm[SW ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[SW ]/c1o3;
+			   LBMReal mfcab = (g[SE ] + 0.5*forcingTerm[SE ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[SE ]/c1o3;
+			   LBMReal mfaba = (g[BW ] + 0.5*forcingTerm[BW ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[BW ]/c1o3;
+			   LBMReal mfcba = (g[BE ] + 0.5*forcingTerm[BE ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[BE ]/c1o3;
+			   LBMReal mfbaa = (g[BS ] + 0.5*forcingTerm[BS ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[BS ]/c1o3;
+			   LBMReal mfbca = (g[BN ] + 0.5*forcingTerm[BN ])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[BN ]/c1o3;
+			   LBMReal mfaaa = (g[BSW] + 0.5*forcingTerm[BSW])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[BSW]/c1o3;
+			   LBMReal mfcaa = (g[BSE] + 0.5*forcingTerm[BSE])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[BSE]/c1o3;
+			   LBMReal mfaca = (g[BNW] + 0.5*forcingTerm[BNW])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[BNW]/c1o3;
+			   LBMReal mfcca = (g[BNE] + 0.5*forcingTerm[BNE])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[BNE]/c1o3;
+
+			   LBMReal mfbbb = (g[ZERO] + 0.5*forcingTerm[ZERO])/c1o3 - 0*(p1 - rho*c1o3)*WEIGTH[ZERO]/c1o3;
+			   
+               
+
+			   /*
+               //forcing 
+               ///////////////////////////////////////////////////////////////////////////////////////////
+               if (withForcing)
+               {
+                  muX1 = static_cast<double>(x1-1+ix1*maxX1);
+                  muX2 = static_cast<double>(x2-1+ix2*maxX2);
+                  muX3 = static_cast<double>(x3-1+ix3*maxX3);
+
+                  forcingX1 = muForcingX1.Eval();
+                  forcingX2 = muForcingX2.Eval();
+                  forcingX3 = muForcingX3.Eval();
+
+                  vvx += forcingX1*deltaT*0.5; // X
+                  vvy += forcingX2*deltaT*0.5; // Y
+                  vvz += forcingX3*deltaT*0.5; // Z
+               }
+               /////////////////////////////////////////////////////////////////////////////////////////// 
+			   */
+              
+			   LBMReal oMdrho, m0, m1, m2;
+               
+			   oMdrho=mfccc+mfaaa;
+               m0=mfaca+mfcac;
+               m1=mfacc+mfcaa;
+               m2=mfaac+mfcca;
+               oMdrho+=m0;
+               m1+=m2;
+               oMdrho+=m1;
+               m0=mfbac+mfbca;
+               m1=mfbaa+mfbcc;
+               m0+=m1;
+               m1=mfabc+mfcba;
+               m2=mfaba+mfcbc;
+               m1+=m2;
+               m0+=m1;
+               m1=mfacb+mfcab;
+               m2=mfaab+mfccb;
+               m1+=m2;
+               m0+=m1;
+               oMdrho+=m0;
+               m0=mfabb+mfcbb;
+               m1=mfbab+mfbcb;
+               m2=mfbba+mfbbc;
+               m0+=m1+m2;
+               m0+=mfbbb; //hat gefehlt
+               //oMdrho = 1. - (oMdrho + m0);
+			   oMdrho = rho - (oMdrho + p1/c1o3);
+
+
+               ////////////////////////////////////////////////////////////////////////////////////
+               LBMReal wadjust;
+               LBMReal qudricLimit = 0.01;
+               ////////////////////////////////////////////////////////////////////////////////////
+               //Hin
+               ////////////////////////////////////////////////////////////////////////////////////
+               // mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36  Konditionieren
+               ////////////////////////////////////////////////////////////////////////////////////
+               // Z - Dir
+               m2    = mfaaa + mfaac;
+               m1    = mfaac - mfaaa;
+               m0    = m2          + mfaab;
+               mfaaa = m0;
+               m0   += c1o36 * oMdrho;   
+               mfaab = m1 -        m0 * uz;
+               mfaac = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaba  + mfabc;
+               m1    = mfabc  - mfaba;
+               m0    = m2          + mfabb;
+               mfaba = m0;
+               m0   += c1o9 * oMdrho;
+               mfabb = m1 -        m0 * uz;
+               mfabc = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaca  + mfacc;
+               m1    = mfacc  - mfaca;
+               m0    = m2          + mfacb;
+               mfaca = m0;
+               m0   += c1o36 * oMdrho;
+               mfacb = m1 -        m0 * uz;
+               mfacc = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfbaa + mfbac;
+               m1    = mfbac - mfbaa;
+               m0    = m2          + mfbab;
+               mfbaa = m0;
+               m0   += c1o9 * oMdrho;
+               mfbab = m1 -        m0 * uz;
+               mfbac = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfbba  + mfbbc;
+               m1    = mfbbc  - mfbba;
+               m0    = m2          + mfbbb;
+               mfbba = m0;
+               m0   += c4o9 * oMdrho;
+               mfbbb = m1 -        m0 * uz;
+               mfbbc = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfbca  + mfbcc;
+               m1    = mfbcc  - mfbca;
+               m0    = m2          + mfbcb;
+               mfbca = m0;
+               m0   += c1o9 * oMdrho;
+               mfbcb = m1 -        m0 * uz;
+               mfbcc = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfcaa + mfcac;
+               m1    = mfcac - mfcaa;
+               m0    = m2          + mfcab;
+               mfcaa = m0;
+               m0   += c1o36 * oMdrho;
+               mfcab = m1 -        m0 * uz;
+               mfcac = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfcba  + mfcbc;
+               m1    = mfcbc  - mfcba;
+               m0    = m2          + mfcbb;
+               mfcba = m0;
+               m0   += c1o9 * oMdrho;
+               mfcbb = m1 -        m0 * uz;
+               mfcbc = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfcca  + mfccc;
+               m1    = mfccc  - mfcca;
+               m0    = m2          + mfccb;
+               mfcca = m0;
+               m0   += c1o36 * oMdrho;
+               mfccb = m1 -        m0 * uz;
+               mfccc = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               // mit  1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren
+               ////////////////////////////////////////////////////////////////////////////////////
+               // Y - Dir
+               m2    = mfaaa + mfaca;
+               m1    = mfaca - mfaaa;
+               m0    = m2          + mfaba;
+               mfaaa = m0;
+               m0   += c1o6 * oMdrho;
+               mfaba = m1 -        m0 * uy;
+               mfaca = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaab  + mfacb;
+               m1    = mfacb  - mfaab;
+               m0    = m2          + mfabb;
+               mfaab = m0;
+               mfabb = m1 -        m0 * uy;
+               mfacb = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaac  + mfacc;
+               m1    = mfacc  - mfaac;
+               m0    = m2          + mfabc;
+               mfaac = m0;
+               m0   += c1o18 * oMdrho;
+               mfabc = m1 -        m0 * uy;
+               mfacc = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfbaa + mfbca;
+               m1    = mfbca - mfbaa;
+               m0    = m2          + mfbba;
+               mfbaa = m0;
+               m0   += c2o3 * oMdrho;
+               mfbba = m1 -        m0 * uy;
+               mfbca = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfbab  + mfbcb;
+               m1    = mfbcb  - mfbab;
+               m0    = m2          + mfbbb;
+               mfbab = m0;
+               mfbbb = m1 -        m0 * uy;
+               mfbcb = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfbac  + mfbcc;
+               m1    = mfbcc  - mfbac;
+               m0    = m2          + mfbbc;
+               mfbac = m0;
+               m0   += c2o9 * oMdrho;
+               mfbbc = m1 -        m0 * uy;
+               mfbcc = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfcaa + mfcca;
+               m1    = mfcca - mfcaa;
+               m0    = m2          + mfcba;
+               mfcaa = m0;
+               m0   += c1o6 * oMdrho;
+               mfcba = m1 -        m0 * uy;
+               mfcca = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfcab  + mfccb;
+               m1    = mfccb  - mfcab;
+               m0    = m2          + mfcbb;
+               mfcab = m0;
+               mfcbb = m1 -        m0 * uy;
+               mfccb = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfcac  + mfccc;
+               m1    = mfccc  - mfcac;
+               m0    = m2          + mfcbc;
+               mfcac = m0;
+               m0   += c1o18 * oMdrho;
+               mfcbc = m1 -        m0 * uy;
+               mfccc = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               // mit     1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9            Konditionieren
+               ////////////////////////////////////////////////////////////////////////////////////
+               // X - Dir
+               m2    = mfaaa + mfcaa;
+               m1    = mfcaa - mfaaa;
+               m0    = m2          + mfbaa;
+               mfaaa = m0;
+               m0   += 1. * oMdrho;
+               mfbaa = m1 -        m0 * ux;
+               mfcaa = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaba  + mfcba;
+               m1    = mfcba  - mfaba;
+               m0    = m2          + mfbba;
+               mfaba = m0;
+               mfbba = m1 -        m0 * ux;
+               mfcba = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaca  + mfcca;
+               m1    = mfcca  - mfaca;
+               m0    = m2          + mfbca;
+               mfaca = m0;
+               m0   += c1o3 * oMdrho;
+               mfbca = m1 -        m0 * ux;
+               mfcca = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaab + mfcab;
+               m1    = mfcab - mfaab;
+               m0    = m2          + mfbab;
+               mfaab = m0;
+               mfbab = m1 -        m0 * ux;
+               mfcab = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfabb  + mfcbb;
+               m1    = mfcbb  - mfabb;
+               m0    = m2          + mfbbb;
+               mfabb = m0;
+               mfbbb = m1 -        m0 * ux;
+               mfcbb = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfacb  + mfccb;
+               m1    = mfccb  - mfacb;
+               m0    = m2          + mfbcb;
+               mfacb = m0;
+               mfbcb = m1 -        m0 * ux;
+               mfccb = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaac + mfcac;
+               m1    = mfcac - mfaac;
+               m0    = m2          + mfbac;
+               mfaac = m0;
+               m0   += c1o3 * oMdrho;
+               mfbac = m1 -        m0 * ux;
+               mfcac = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfabc  + mfcbc;
+               m1    = mfcbc  - mfabc;
+               m0    = m2          + mfbbc;
+               mfabc = m0;
+               mfbbc = m1 -        m0 * ux;
+               mfcbc = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfacc  + mfccc;
+               m1    = mfccc  - mfacc;
+               m0    = m2          + mfbcc;
+               mfacc = m0;
+               m0   += c1o9 * oMdrho;
+               mfbcc = m1 -        m0 * ux;
+               mfccc = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               // Cumulants
+               ////////////////////////////////////////////////////////////////////////////////////
+               LBMReal OxxPyyPzz = 1.; //omega2 or bulk viscosity
+               LBMReal OxyyPxzz  = 1.;//-s9;//2+s9;//
+               //LBMReal OxyyMxzz  = 1.;//2+s9;//
+               LBMReal O4        = 1.;
+               LBMReal O5        = 1.;
+               LBMReal O6        = 1.;
+
+               //Cum 4.
+               //LBMReal CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + 2. * mfbba * mfbab); // till 18.05.2015
+               //LBMReal CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + 2. * mfbba * mfabb); // till 18.05.2015
+               //LBMReal CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + 2. * mfbab * mfabb); // till 18.05.2015
+
+               LBMReal CUMcbb = mfcbb - ((mfcaa + c1o3 ) * mfabb + 2. * mfbba * mfbab);
+               LBMReal CUMbcb = mfbcb - ((mfaca + c1o3 ) * mfbab + 2. * mfbba * mfabb);
+               LBMReal CUMbbc = mfbbc - ((mfaac + c1o3 ) * mfbba + 2. * mfbab * mfabb);
+
+			   LBMReal CUMcca = mfcca - ((mfcaa * mfaca + 2. * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-1)*oMdrho);
+			   LBMReal CUMcac = mfcac - ((mfcaa * mfaac + 2. * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-1)*oMdrho);
+			   LBMReal CUMacc = mfacc - ((mfaac * mfaca + 2. * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-1)*oMdrho);
+
+			   //LBMReal CUMcca = mfcca - ((mfcaa * mfaca + 2. * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(-p1/c1o3)*oMdrho);
+			   //LBMReal CUMcac = mfcac - ((mfcaa * mfaac + 2. * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(-p1/c1o3)*oMdrho);
+			   //LBMReal CUMacc = mfacc - ((mfaac * mfaca + 2. * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(-p1/c1o3)*oMdrho);
+
+               //Cum 5.
+               LBMReal CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + 4. * mfabb * mfbbb + 2. * (mfbab * mfacb + mfbba * mfabc)) - c1o3 * (mfbca + mfbac) * oMdrho;
+               LBMReal CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + 4. * mfbab * mfbbb + 2. * (mfabb * mfcab + mfbba * mfbac)) - c1o3 * (mfcba + mfabc) * oMdrho;
+               LBMReal CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + 4. * mfbba * mfbbb + 2. * (mfbab * mfbca + mfabb * mfcba)) - c1o3 * (mfacb + mfcab) * oMdrho;
+
+               //Cum 6.
+               LBMReal CUMccc = mfccc  +((-4. *  mfbbb * mfbbb 
+                  -       (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+                  -  4. * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
+                  -  2. * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb))
+                  +( 4. * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+                  +  2. * (mfcaa * mfaca * mfaac)
+                  + 16. *  mfbba * mfbab * mfabb)
+                  - c1o3* (mfacc + mfcac + mfcca) * oMdrho  -c1o9*oMdrho*oMdrho
+                  - c1o9* (mfcaa + mfaca + mfaac) * oMdrho*(1.-2.* oMdrho)- c1o27* oMdrho * oMdrho*(-2.* oMdrho)
+                  +( 2. * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+                  +       (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa)) * c2o3*oMdrho) +c1o27*oMdrho;
+
+               //2.
+               // linear combinations
+               LBMReal mxxPyyPzz = mfcaa + mfaca + mfaac;
+               LBMReal mxxMyy    = mfcaa - mfaca;
+               LBMReal mxxMzz         = mfcaa - mfaac;
+
+               LBMReal dxux = -c1o2 * collFactorM *(mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz*(mfaaa - mxxPyyPzz);
+               LBMReal dyuy = dxux + collFactorM * c3o2 * mxxMyy;
+               LBMReal dzuz = dxux + collFactorM * c3o2 * mxxMzz;
+
+               //relax
+               mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- 3. * (1. - c1o2 * OxxPyyPzz) * (ux2 * dxux + uy2 * dyuy + uz2 * dzuz);
+               mxxMyy    += collFactorM * (-mxxMyy) - 3. * (1. - c1o2 * collFactorM) * (ux2 * dxux - uy2 * dyuy);
+               mxxMzz    += collFactorM * (-mxxMzz) - 3. * (1. - c1o2 * collFactorM) * (ux2 * dxux - uz2 * dzuz);
+
+               mfabb     += collFactorM * (-mfabb);
+               mfbab     += collFactorM * (-mfbab);
+               mfbba     += collFactorM * (-mfbba);
+
+               // linear combinations back
+               mfcaa = c1o3 * (       mxxMyy +      mxxMzz + mxxPyyPzz);
+               mfaca = c1o3 * (-2. *  mxxMyy +      mxxMzz + mxxPyyPzz);
+               mfaac = c1o3 * (       mxxMyy - 2. * mxxMzz + mxxPyyPzz);
+
+               //3.
+               // linear combinations
+               LBMReal mxxyPyzz = mfcba + mfabc;
+               LBMReal mxxyMyzz = mfcba - mfabc;
+
+               LBMReal mxxzPyyz = mfcab + mfacb;
+               LBMReal mxxzMyyz = mfcab - mfacb;
+
+               LBMReal mxyyPxzz = mfbca + mfbac;
+               LBMReal mxyyMxzz = mfbca - mfbac;
+
+               //relax
+               wadjust    = OxyyMxzz+(1.-OxyyMxzz)*fabs(mfbbb)/(fabs(mfbbb)+qudricLimit);
+               mfbbb     += wadjust * (-mfbbb);
+               wadjust    = OxyyPxzz+(1.-OxyyPxzz)*fabs(mxxyPyzz)/(fabs(mxxyPyzz)+qudricLimit);
+               mxxyPyzz  += wadjust * (-mxxyPyzz);
+               wadjust    = OxyyMxzz+(1.-OxyyMxzz)*fabs(mxxyMyzz)/(fabs(mxxyMyzz)+qudricLimit);
+               mxxyMyzz  += wadjust * (-mxxyMyzz);
+               wadjust    = OxyyPxzz+(1.-OxyyPxzz)*fabs(mxxzPyyz)/(fabs(mxxzPyyz)+qudricLimit);
+               mxxzPyyz  += wadjust * (-mxxzPyyz);
+               wadjust    = OxyyMxzz+(1.-OxyyMxzz)*fabs(mxxzMyyz)/(fabs(mxxzMyyz)+qudricLimit);
+               mxxzMyyz  += wadjust * (-mxxzMyyz);
+               wadjust    = OxyyPxzz+(1.-OxyyPxzz)*fabs(mxyyPxzz)/(fabs(mxyyPxzz)+qudricLimit);
+               mxyyPxzz  += wadjust * (-mxyyPxzz);
+               wadjust    = OxyyMxzz+(1.-OxyyMxzz)*fabs(mxyyMxzz)/(fabs(mxyyMxzz)+qudricLimit);
+               mxyyMxzz  += wadjust * (-mxyyMxzz);
+
+               // linear combinations back
+               mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2;
+               mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2;
+               mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2;
+               mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2;
+               mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2;
+               mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2;
+
+               //4.
+               CUMacc += O4 * (-CUMacc);
+               CUMcac += O4 * (-CUMcac);
+               CUMcca += O4 * (-CUMcca);
+
+               CUMbbc += O4 * (-CUMbbc);
+               CUMbcb += O4 * (-CUMbcb);
+               CUMcbb += O4 * (-CUMcbb);
+
+               //5.
+               CUMbcc += O5 * (-CUMbcc);
+               CUMcbc += O5 * (-CUMcbc);
+               CUMccb += O5 * (-CUMccb);
+
+               //6.
+               CUMccc += O6 * (-CUMccc);
+
+               //back cumulants to central moments
+               //4.
+               //mfcbb = CUMcbb + ((mfcaa + c1o3 * oMdrho) * mfabb + 2. * mfbba * mfbab); // till 18.05.2015
+               //mfbcb = CUMbcb + ((mfaca + c1o3 * oMdrho) * mfbab + 2. * mfbba * mfabb); // till 18.05.2015
+               //mfbbc = CUMbbc + ((mfaac + c1o3 * oMdrho) * mfbba + 2. * mfbab * mfabb); // till 18.05.2015
+
+               mfcbb = CUMcbb + ((mfcaa + c1o3 ) * mfabb + 2. * mfbba * mfbab);
+               mfbcb = CUMbcb + ((mfaca + c1o3 ) * mfbab + 2. * mfbba * mfabb);
+               mfbbc = CUMbbc + ((mfaac + c1o3 ) * mfbba + 2. * mfbab * mfabb);
+
+               mfcca = CUMcca + (mfcaa * mfaca + 2. * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-1)*oMdrho;
+               mfcac = CUMcac + (mfcaa * mfaac + 2. * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-1)*oMdrho;
+               mfacc = CUMacc + (mfaac * mfaca + 2. * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-1)*oMdrho;
+
+			   //mfcca = CUMcca + (mfcaa * mfaca + 2. * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(-p1/c1o3)*oMdrho;
+			   //mfcac = CUMcac + (mfcaa * mfaac + 2. * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(-p1/c1o3)*oMdrho;
+			   //mfacc = CUMacc + (mfaac * mfaca + 2. * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(-p1/c1o3)*oMdrho;
+
+               //5.
+               mfbcc = CUMbcc + (mfaac * mfbca + mfaca * mfbac + 4. * mfabb * mfbbb + 2. * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) * oMdrho;
+               mfcbc = CUMcbc + (mfaac * mfcba + mfcaa * mfabc + 4. * mfbab * mfbbb + 2. * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) * oMdrho;
+               mfccb = CUMccb + (mfcaa * mfacb + mfaca * mfcab + 4. * mfbba * mfbbb + 2. * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) * oMdrho;
+
+               //6.
+               mfccc = CUMccc  -((-4. *  mfbbb * mfbbb 
+                  -       (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+                  -  4. * (mfabb * mfcbb + mfbac * mfbca + mfbba * mfbbc)
+                  -  2. * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb))
+                  +( 4. * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+                  +  2. * (mfcaa * mfaca * mfaac)
+                  + 16. *  mfbba * mfbab * mfabb)
+                  - c1o3* (mfacc + mfcac + mfcca) * oMdrho  -c1o9*oMdrho*oMdrho
+                  - c1o9* (mfcaa + mfaca + mfaac) * oMdrho*(1.-2.* oMdrho)- c1o27* oMdrho * oMdrho*(-2.* oMdrho)
+                  +( 2. * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+                  +       (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa)) * c2o3*oMdrho) -c1o27*oMdrho;
+
+               ////////////////////////////////////////////////////////////////////////////////////
+               //forcing
+               mfbaa=-mfbaa;
+               mfaba=-mfaba;
+               mfaab=-mfaab;
+               //////////////////////////////////////////////////////////////////////////////////////
+
+               ////////////////////////////////////////////////////////////////////////////////////
+               //back
+               ////////////////////////////////////////////////////////////////////////////////////
+               //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9   Konditionieren
+               ////////////////////////////////////////////////////////////////////////////////////
+               // Z - Dir
+               m0 =  mfaac * c1o2 +      mfaab * (uz - c1o2) + (mfaaa + 1. * oMdrho) * (     uz2 - uz) * c1o2;
+               m1 = -mfaac        - 2. * mfaab *  uz         +  mfaaa                * (1. - uz2)              - 1. * oMdrho * uz2;
+               m2 =  mfaac * c1o2 +      mfaab * (uz + c1o2) + (mfaaa + 1. * oMdrho) * (     uz2 + uz) * c1o2;
+               mfaaa = m0;
+               mfaab = m1;
+               mfaac = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfabc * c1o2 +      mfabb * (uz - c1o2) + mfaba * (     uz2 - uz) * c1o2;
+               m1 = -mfabc        - 2. * mfabb *  uz         + mfaba * (1. - uz2);
+               m2 =  mfabc * c1o2 +      mfabb * (uz + c1o2) + mfaba * (     uz2 + uz) * c1o2;
+               mfaba = m0;
+               mfabb = m1;
+               mfabc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfacc * c1o2 +      mfacb * (uz - c1o2) + (mfaca + c1o3 * oMdrho) * (     uz2 - uz) * c1o2;
+               m1 = -mfacc        - 2. * mfacb *  uz         +  mfaca                  * (1. - uz2)              - c1o3 * oMdrho * uz2;
+               m2 =  mfacc * c1o2 +      mfacb * (uz + c1o2) + (mfaca + c1o3 * oMdrho) * (     uz2 + uz) * c1o2;
+               mfaca = m0;
+               mfacb = m1;
+               mfacc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfbac * c1o2 +      mfbab * (uz - c1o2) + mfbaa * (     uz2 - uz) * c1o2;
+               m1 = -mfbac        - 2. * mfbab *  uz         + mfbaa * (1. - uz2);
+               m2 =  mfbac * c1o2 +      mfbab * (uz + c1o2) + mfbaa * (     uz2 + uz) * c1o2;
+               mfbaa = m0;
+               mfbab = m1;
+               mfbac = m2;
+               /////////b//////////////////////////////////////////////////////////////////////////
+               m0 =  mfbbc * c1o2 +      mfbbb * (uz - c1o2) + mfbba * (     uz2 - uz) * c1o2;
+               m1 = -mfbbc        - 2. * mfbbb *  uz         + mfbba * (1. - uz2);
+               m2 =  mfbbc * c1o2 +      mfbbb * (uz + c1o2) + mfbba * (     uz2 + uz) * c1o2;
+               mfbba = m0;
+               mfbbb = m1;
+               mfbbc = m2;
+               /////////b//////////////////////////////////////////////////////////////////////////
+               m0 =  mfbcc * c1o2 +      mfbcb * (uz - c1o2) + mfbca * (     uz2 - uz) * c1o2;
+               m1 = -mfbcc        - 2. * mfbcb *  uz         + mfbca * (1. - uz2);
+               m2 =  mfbcc * c1o2 +      mfbcb * (uz + c1o2) + mfbca * (     uz2 + uz) * c1o2;
+               mfbca = m0;
+               mfbcb = m1;
+               mfbcc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfcac * c1o2 +      mfcab * (uz - c1o2) + (mfcaa + c1o3 * oMdrho) * (     uz2 - uz) * c1o2;
+               m1 = -mfcac        - 2. * mfcab *  uz         +  mfcaa                  * (1. - uz2)              - c1o3 * oMdrho * uz2;
+               m2 =  mfcac * c1o2 +      mfcab * (uz + c1o2) + (mfcaa + c1o3 * oMdrho) * (     uz2 + uz) * c1o2;
+               mfcaa = m0;
+               mfcab = m1;
+               mfcac = m2;
+               /////////c//////////////////////////////////////////////////////////////////////////
+               m0 =  mfcbc * c1o2 +      mfcbb * (uz - c1o2) + mfcba * (     uz2 - uz) * c1o2;
+               m1 = -mfcbc        - 2. * mfcbb *  uz         + mfcba * (1. - uz2);
+               m2 =  mfcbc * c1o2 +      mfcbb * (uz + c1o2) + mfcba * (     uz2 + uz) * c1o2;
+               mfcba = m0;
+               mfcbb = m1;
+               mfcbc = m2;
+               /////////c//////////////////////////////////////////////////////////////////////////
+               m0 =  mfccc * c1o2 +      mfccb * (uz - c1o2) + (mfcca + c1o9 * oMdrho) * (     uz2 - uz) * c1o2;
+               m1 = -mfccc        - 2. * mfccb *  uz         +  mfcca                  * (1. - uz2)              - c1o9 * oMdrho * uz2;
+               m2 =  mfccc * c1o2 +      mfccb * (uz + c1o2) + (mfcca + c1o9 * oMdrho) * (     uz2 + uz) * c1o2;
+               mfcca = m0;
+               mfccb = m1;
+               mfccc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18   Konditionieren
+               ////////////////////////////////////////////////////////////////////////////////////
+               // Y - Dir
+               m0 =  mfaca * c1o2 +      mfaba * (uy - c1o2) + (mfaaa + c1o6 * oMdrho) * (     uy2 - uy) * c1o2;
+               m1 = -mfaca        - 2. * mfaba *  uy         +  mfaaa                  * (1. - uy2)              - c1o6 * oMdrho * uy2;
+               m2 =  mfaca * c1o2 +      mfaba * (uy + c1o2) + (mfaaa + c1o6 * oMdrho) * (     uy2 + uy) * c1o2;
+               mfaaa = m0;
+               mfaba = m1;
+               mfaca = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfacb * c1o2 +      mfabb * (uy - c1o2) + (mfaab + c2o3 * oMdrho) * (     uy2 - uy) * c1o2;
+               m1 = -mfacb        - 2. * mfabb *  uy         +  mfaab                  * (1. - uy2)              - c2o3 * oMdrho * uy2;
+               m2 =  mfacb * c1o2 +      mfabb * (uy + c1o2) + (mfaab + c2o3 * oMdrho) * (     uy2 + uy) * c1o2;
+               mfaab = m0;
+               mfabb = m1;
+               mfacb = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfacc * c1o2 +      mfabc * (uy - c1o2) + (mfaac + c1o6 * oMdrho) * (     uy2 - uy) * c1o2;
+               m1 = -mfacc        - 2. * mfabc *  uy         +  mfaac                  * (1. - uy2)              - c1o6 * oMdrho * uy2;
+               m2 =  mfacc * c1o2 +      mfabc * (uy + c1o2) + (mfaac + c1o6 * oMdrho) * (     uy2 + uy) * c1o2;
+               mfaac = m0;
+               mfabc = m1;
+               mfacc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfbca * c1o2 +      mfbba * (uy - c1o2) + mfbaa * (     uy2 - uy) * c1o2;
+               m1 = -mfbca        - 2. * mfbba *  uy         + mfbaa * (1. - uy2);
+               m2 =  mfbca * c1o2 +      mfbba * (uy + c1o2) + mfbaa * (     uy2 + uy) * c1o2;
+               mfbaa = m0;
+               mfbba = m1;
+               mfbca = m2;
+               /////////b//////////////////////////////////////////////////////////////////////////
+               m0 =  mfbcb * c1o2 +      mfbbb * (uy - c1o2) + mfbab * (     uy2 - uy) * c1o2;
+               m1 = -mfbcb        - 2. * mfbbb *  uy         + mfbab * (1. - uy2);
+               m2 =  mfbcb * c1o2 +      mfbbb * (uy + c1o2) + mfbab * (     uy2 + uy) * c1o2;
+               mfbab = m0;
+               mfbbb = m1;
+               mfbcb = m2;
+               /////////b//////////////////////////////////////////////////////////////////////////
+               m0 =  mfbcc * c1o2 +      mfbbc * (uy - c1o2) + mfbac * (     uy2 - uy) * c1o2;
+               m1 = -mfbcc        - 2. * mfbbc *  uy         + mfbac * (1. - uy2);
+               m2 =  mfbcc * c1o2 +      mfbbc * (uy + c1o2) + mfbac * (     uy2 + uy) * c1o2;
+               mfbac = m0;
+               mfbbc = m1;
+               mfbcc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfcca * c1o2 +      mfcba * (uy - c1o2) + (mfcaa + c1o18 * oMdrho) * (     uy2 - uy) * c1o2;
+               m1 = -mfcca        - 2. * mfcba *  uy         +  mfcaa                   * (1. - uy2)              - c1o18 * oMdrho * uy2;
+               m2 =  mfcca * c1o2 +      mfcba * (uy + c1o2) + (mfcaa + c1o18 * oMdrho) * (     uy2 + uy) * c1o2;
+               mfcaa = m0;
+               mfcba = m1;
+               mfcca = m2;
+               /////////c//////////////////////////////////////////////////////////////////////////
+               m0 =  mfccb * c1o2 +      mfcbb * (uy - c1o2) + (mfcab + c2o9 * oMdrho) * (     uy2 - uy) * c1o2;
+               m1 = -mfccb        - 2. * mfcbb *  uy         +  mfcab                  * (1. - uy2)              - c2o9 * oMdrho * uy2;
+               m2 =  mfccb * c1o2 +      mfcbb * (uy + c1o2) + (mfcab + c2o9 * oMdrho) * (     uy2 + uy) * c1o2;
+               mfcab = m0;
+               mfcbb = m1;
+               mfccb = m2;
+               /////////c//////////////////////////////////////////////////////////////////////////
+               m0 =  mfccc * c1o2 +      mfcbc * (uy - c1o2) + (mfcac + c1o18 * oMdrho) * (     uy2 - uy) * c1o2;
+               m1 = -mfccc        - 2. * mfcbc *  uy         +  mfcac                   * (1. - uy2)              - c1o18 * oMdrho * uy2;
+               m2 =  mfccc * c1o2 +      mfcbc * (uy + c1o2) + (mfcac + c1o18 * oMdrho) * (     uy2 + uy) * c1o2;
+               mfcac = m0;
+               mfcbc = m1;
+               mfccc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren
+               ////////////////////////////////////////////////////////////////////////////////////
+               // X - Dir
+               m0 =  mfcaa * c1o2 +      mfbaa * (ux - c1o2) + (mfaaa + c1o36 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcaa        - 2. * mfbaa *  ux         +  mfaaa                   * (1. - ux2)              - c1o36 * oMdrho * ux2;
+               m2 =  mfcaa * c1o2 +      mfbaa * (ux + c1o2) + (mfaaa + c1o36 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfaaa = m0;
+               mfbaa = m1;
+               mfcaa = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfcba * c1o2 +      mfbba * (ux - c1o2) + (mfaba + c1o9 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcba        - 2. * mfbba *  ux         +  mfaba                  * (1. - ux2)              - c1o9 * oMdrho * ux2;
+               m2 =  mfcba * c1o2 +      mfbba * (ux + c1o2) + (mfaba + c1o9 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfaba = m0;
+               mfbba = m1;
+               mfcba = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfcca * c1o2 +      mfbca * (ux - c1o2) + (mfaca + c1o36 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcca        - 2. * mfbca *  ux         +  mfaca                   * (1. - ux2)              - c1o36 * oMdrho * ux2;
+               m2 =  mfcca * c1o2 +      mfbca * (ux + c1o2) + (mfaca + c1o36 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfaca = m0;
+               mfbca = m1;
+               mfcca = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfcab * c1o2 +      mfbab * (ux - c1o2) + (mfaab + c1o9 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcab        - 2. * mfbab *  ux         +  mfaab                  * (1. - ux2)              - c1o9 * oMdrho * ux2;
+               m2 =  mfcab * c1o2 +      mfbab * (ux + c1o2) + (mfaab + c1o9 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfaab = m0;
+               mfbab = m1;
+               mfcab = m2;
+               ///////////b////////////////////////////////////////////////////////////////////////
+               m0 =  mfcbb * c1o2 +      mfbbb * (ux - c1o2) + (mfabb + c4o9 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcbb        - 2. * mfbbb *  ux         +  mfabb                  * (1. - ux2)              - c4o9 * oMdrho * ux2;
+               m2 =  mfcbb * c1o2 +      mfbbb * (ux + c1o2) + (mfabb + c4o9 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfabb = m0;
+               mfbbb = m1;
+               mfcbb = m2;
+               ///////////b////////////////////////////////////////////////////////////////////////
+               m0 =  mfccb * c1o2 +      mfbcb * (ux - c1o2) + (mfacb + c1o9 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfccb        - 2. * mfbcb *  ux         +  mfacb                  * (1. - ux2)              - c1o9 * oMdrho * ux2;
+               m2 =  mfccb * c1o2 +      mfbcb * (ux + c1o2) + (mfacb + c1o9 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfacb = m0;
+               mfbcb = m1;
+               mfccb = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfcac * c1o2 +      mfbac * (ux - c1o2) + (mfaac + c1o36 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcac        - 2. * mfbac *  ux         +  mfaac                   * (1. - ux2)              - c1o36 * oMdrho * ux2;
+               m2 =  mfcac * c1o2 +      mfbac * (ux + c1o2) + (mfaac + c1o36 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfaac = m0;
+               mfbac = m1;
+               mfcac = m2;
+               ///////////c////////////////////////////////////////////////////////////////////////
+               m0 =  mfcbc * c1o2 +      mfbbc * (ux - c1o2) + (mfabc + c1o9 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcbc        - 2. * mfbbc *  ux         +  mfabc                  * (1. - ux2)              - c1o9 * oMdrho * ux2;
+               m2 =  mfcbc * c1o2 +      mfbbc * (ux + c1o2) + (mfabc + c1o9 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfabc = m0;
+               mfbbc = m1;
+               mfcbc = m2;
+               ///////////c////////////////////////////////////////////////////////////////////////
+               m0 =  mfccc * c1o2 +      mfbcc * (ux - c1o2) + (mfacc + c1o36 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfccc        - 2. * mfbcc *  ux         +  mfacc                   * (1. - ux2)              - c1o36 * oMdrho * ux2;
+               m2 =  mfccc * c1o2 +      mfbcc * (ux + c1o2) + (mfacc + c1o36 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfacc = m0;
+               mfbcc = m1;
+               mfccc = m2;
+
+
+
+///////////////////////////////////////////////////////////////////////////
+
+/*
+			    m000 = f1[ZERO] + f1[E] + f1[W] + f1[N] + f1[S] + f1[T] + f1[B] + f1[NE] + f1[SW] + f1[SE] + f1[NW] + f1[TE] + f1[BW] + f1[BE] + f1[TW] + f1[TN] + f1[BS] + f1[BN] + 
+					   f1[TS] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW] + f1[BNE] + f1[BNW] + f1[BSE] + f1[BSW];
+				
+				m100 = f1[BE] + f1[BNE] - f1[BNW] + f1[BSE] - f1[BSW] - f1[BW] + f1[E] + f1[NE] - f1[NW] + f1[SE] - f1[SW] + f1[TE] + f1[TNE] - f1[TNW] + f1[TSE] - f1[TSW] - f1[TW] - f1[W];
+				m010 = f1[BN] + f1[BNE] + f1[BNW] - f1[BS] - f1[BSE] - f1[BSW] + f1[N] + f1[NE] + f1[NW] - f1[S] - f1[SE] - f1[SW] + f1[TN] + f1[TNE] + f1[TNW] - f1[TS] - f1[TSE] - f1[TSW];
+				m001 = f1[T] + f1[TE] + f1[TN] + f1[TNE] + f1[TNW] + f1[TS] + f1[TSE] + f1[TSW] + f1[TW] - f1[B] - f1[BE] - f1[BN] - f1[BNE] - f1[BNW] - f1[BS] - f1[BSE] - f1[BSW] - f1[BW];
+
+				m110 =  f1[BNE] - f1[BNW] - f1[BSE] + f1[BSW] + f1[NE] - f1[NW] - f1[SE] + f1[SW] + f1[TNE] - f1[TNW] - f1[TSE] + f1[TSW];
+				m101 = -f1[BE] - f1[BNE] + f1[BNW] - f1[BSE] + f1[BSW] + f1[BW] + f1[TE] + f1[TNE] - f1[TNW] + f1[TSE] - f1[TSW] - f1[TW];
+				m011 = -f1[BN] - f1[BNE] - f1[BNW] + f1[BS] + f1[BSE] + f1[BSW] + f1[TN] + f1[TNE] + f1[TNW] - f1[TS] - f1[TSE] - f1[TSW];
+				m200 =  f1[BE] + f1[BNE] + f1[BNW] + f1[BSE] + f1[BSW] + f1[BW] + f1[E] + f1[NE] + f1[NW] + f1[SE] + f1[SW] + f1[TE] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW] + f1[TW] + f1[W];
+				m020 =  f1[BN] + f1[BNE] + f1[BNW] + f1[BS] + f1[BSE] + f1[BSW] + f1[N] + f1[NE] + f1[NW] + f1[S] + f1[SE] + f1[SW] + f1[TN] + f1[TNE] + f1[TNW] + f1[TS] + f1[TSE] + f1[TSW];
+				m002 =  f1[B] + f1[BE] + f1[BN] + f1[BNE] + f1[BNW] + f1[BS] + f1[BSE] + f1[BSW] + f1[BW] + f1[T] + f1[TE] + f1[TN] + f1[TNE] + f1[TNW] + f1[TS] + f1[TSE] + f1[TSW] + f1[TW];
+				m120 =  f1[BNE] - f1[BNW] + f1[BSE] - f1[BSW] + f1[NE] - f1[NW] + f1[SE] - f1[SW] + f1[TNE] - f1[TNW] + f1[TSE] - f1[TSW];
+				m102 =  f1[BE] + f1[BNE] - f1[BNW] + f1[BSE] - f1[BSW] - f1[BW] + f1[TE] + f1[TNE] - f1[TNW] + f1[TSE] - f1[TSW] - f1[TW];
+				m210 =  f1[BNE] + f1[BNW] - f1[BSE] - f1[BSW] + f1[NE] + f1[NW] - f1[SE] - f1[SW] + f1[TNE] + f1[TNW] - f1[TSE] - f1[TSW];
+				m012 =  f1[BN] + f1[BNE] + f1[BNW] - f1[BS] - f1[BSE] - f1[BSW] + f1[TN] + f1[TNE] + f1[TNW] - f1[TS] - f1[TSE] - f1[TSW];
+				m201 = -f1[BE] - f1[BNE] - f1[BNW] - f1[BSE] - f1[BSW] - f1[BW] + f1[TE] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW] + f1[TW];
+				m021 = -f1[BN] - f1[BNE] - f1[BNW] - f1[BS] - f1[BSE] - f1[BSW] + f1[TN] + f1[TNE] + f1[TNW] + f1[TS] + f1[TSE] + f1[TSW];
+				m111 = -f1[BNE] + f1[BNW] + f1[BSE] - f1[BSW] + f1[TNE] - f1[TNW] - f1[TSE] + f1[TSW];
+				m220 =  f1[BNE] + f1[BNW] + f1[BSE] + f1[BSW] + f1[NE] + f1[NW] + f1[SE] + f1[SW] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW];
+				m202 =  f1[BE] + f1[BNE] + f1[BNW] + f1[BSE] + f1[BSW] + f1[BW] + f1[TE] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW] + f1[TW];
+				m022 =  f1[BN] + f1[BNE] + f1[BNW] + f1[BS] + f1[BSE] + f1[BSW] + f1[TN] + f1[TNE] + f1[TNW] + f1[TS] + f1[TSE] + f1[TSW];
+				m211 = -f1[BNE] - f1[BNW] + f1[BSE] + f1[BSW] + f1[TNE] + f1[TNW] - f1[TSE] - f1[TSW];
+				m121 = -f1[BNE] + f1[BNW] - f1[BSE] + f1[BSW] + f1[TNE] - f1[TNW] + f1[TSE] - f1[TSW];
+				m112 =  f1[BNE] - f1[BNW] - f1[BSE] + f1[BSW] + f1[TNE] - f1[TNW] - f1[TSE] + f1[TSW];
+				m221 = -f1[BNE] - f1[BNW] - f1[BSE] - f1[BSW] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW];
+				m212 =  f1[BNE] + f1[BNW] - f1[BSE] - f1[BSW] + f1[TNE] + f1[TNW] - f1[TSE] - f1[TSW];
+				m122 =  f1[BNE] - f1[BNW] + f1[BSE] - f1[BSW] + f1[TNE] - f1[TNW] + f1[TSE] - f1[TSW];
+				m222 =  f1[BNE] + f1[BNW] + f1[BSE] + f1[BSW] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW];
+
+				k200 = m200 - m000*ux2;
+				k020 = m020 - m000*uy2;
+				k002 = m002 - m000*uz2; 
+				k110 = m110 - m000*ux_uy;          
+				k101 = m101 - m000*ux_uz;
+				k011 = m011 - m000*uy_uz;
+
+				k021 = m021 - (m020*uz + 2.0*uy*k011);          
+				k012 = m012 - (uy*m002 + 2.0*uz*k011);
+				k102 = m102 - (ux*m002 + 2.0*uz*k101);
+				k201 = m201 - (m200*uz + 2.0*ux*k101 );
+				k210 = m210 - (m200*uy + 2.0*ux*k110 );
+				k120 = m120 - (ux*m020 + 2.0*uy*k110);
+				k111 = m111 - (ux_uy_uz + ux*k011 + uy*k101 + uz*k110);
+
+				k121 = m121 - (uz*m120+ 2.0*ux_uy*k011+ux*k021+uy2*k101+2.0*uy*k111); 
+				k112 = m112 - (uy*m102+ 2.0*ux_uz*k011+ux*k012+uz2*k110+2.0*uz*k111);
+				k211 = m211 - (uz*m210+ 2.0*ux_uy*k101+uy*k201+ux2*k011+2.0*ux*k111); 
+
+
+				k220 = m220 - ( ux2*m020+ 4.0*ux_uy*k110 + 2.0*ux*k120 + uy2*k200 + 2.0*uy*k210); 
+				k022 = m022 - ( uy2*m002+ 4.0*uy_uz*k011 + 2.0*uy*k012 + uz2*k020 + 2.0*uz*k021);
+				k202 = m202 - ( ux2*m002+ 4.0*ux_uz*k101 + 2.0*ux*k102 + uz2*k200 + 2.0*uz*k201); 
+
+				k221 = m221 - (uz*m220+
+					2.0*ux2*uy*k011  + ux2*k021 + 2.0*ux*uy2*k101  +4.0*ux_uy*k111 + 
+					2.0*ux*k121 + uy2*k201 + 2.0*uy*k211);
+				k122 = m122 - (ux*m022 
+					+ 2.0*uy2*uz*k101 + uy2*k102 + 2.0*uy*uz2*k110 + 4.0*uy_uz*k111 +
+					2.0*uy*k112 + uz2*k120 + 2.0*uz*k121);
+				k212 = m212 - (uy*m202
+					+ 2.0*ux2*uz*k011 +ux2*k012  + 2.0*ux*uz2*k110 + 4.0*ux_uz*k111 +
+					2.0*ux*k112 + uz2*k210 + 2.0*uz*k211);
+
+				k222 = m222 - (ux2*m022 
+					+ 4.0* ux*uy2*uz*k101   + 
+					2.0* ux*uy2*k102 + 4.0* ux_uy*uz2*k110+ 
+					8.0* ux_uy_uz*k111 + 4.0* ux_uy*k112 + 
+					2.0* ux*uz2*k120 + 4.0* ux_uz*k121 + 2.0*ux*k122 + 
+					uy2*uz2*k200 + 2.0* uy2*uz*k201  + 
+					uy2*k202     + 2.0* uy*uz2*k210  + 4.0*uy_uz*k211 + 
+					2.0* uy*k212 + uz2*k220 +2.0* uz*k221);
+
+				//////////////// Central moments to Cumulants \\\\\\\\\\\\\\\\\\\\\\\\\
+
+				c200 = k200;
+				c020 = k020;
+				c002 = k002;
+				c110 = k110;
+				c101 = k101;
+				c011 = k011;
+
+				c021 = k021;
+				c012 = k012;
+				c102 = k102;
+				c201 = k201;
+				c210 = k210;
+				c120 = k120;
+				c111 = k111;
+
+				c121 = k121 - (k020*k101 + 2*k011*k110)/m000;
+				c211 = k211 - (k200*k011 + 2*k110*k101)/m000;
+				c112 = k112 - (k002*k110 + 2*k011*k101)/m000;
+
+				c220 = k220 - (k200*k020 + 2*k110*k110)/m000;
+				c202 = k202 - (k200*k002 + 2*k101*k101)/m000;
+				c022 = k022 - (k020*k002 + 2*k011*k011)/m000;
+
+				c122 = k122 - (k002*k120 + k020*k102 + 4*k011*k111 + 2*(k101*k021 + k110*k012))/m000;
+				c212 = k212 - (k200*k012 + k002*k210 + 4*k101*k111 + 2*(k110*k102 + k011*k201))/m000;
+				c221 = k221 - (k200*k021 + k020*k201 + 4*k110*k111 + 2*(k101*k120 + k011*k210))/m000;
+
+				c222 = k222 - (4*k111*k111 + k200*k022 + k020*k202 + k002*k220 + 4*(k011*k211 + k101*k121 + k110*k112)
+					+ 2*(k120*k102 + k210*k012 + k201*k021))/m000
+					+ (16*k110*k101*k011 + 4*(k101*k101*k020 + k011*k011*k200 + k110*k110*k002) + 2*k200*k020*k002)/(m000*m000);
+
+				c200_pl_c020_pl_c002 = c200 + c020 + c002;
+				c200_mi_c020 = c200 - c020;
+				c200_mi_c002 = c200 - c002;
+
+				c210_pl_c012  =  c210+c012;
+				c210_mi_c012  =  c210-c012;
+				c201_pl_c021  =  c201+c021;
+				c201_mi_c021  =  c201-c021;
+				c120_pl_c102  =  c120+c102;
+				c120_mi_c102  =  c120-c102;
+
+				c220_pl_c202_pl_c022  = c220 + c202 + c022;
+				c220_mi2_c202_pl_c022 = c220 - 2.0*c202 + c022;
+				c220_pl_c202_mi2_c022 = c220 + c202 - 2.0*c022;
+
+				/////////////////////////// Relaxation \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
+
+				c110 = c110*(1-w1);
+				c101 = c101*(1-w1);
+				c011 = c011*(1-w1);
+
+				c200_mi_c020 = c200_mi_c020*(1-w1); 
+				c200_mi_c002 = c200_mi_c002*(1-w1); 
+
+				c200_pl_c020_pl_c002 = c200_pl_c020_pl_c002*(1-w2) + m000*w2;
+
+				c120_pl_c102 = c120_pl_c102*(1-w3);
+				c210_pl_c012 = c210_pl_c012*(1-w3);
+				c201_pl_c021 = c201_pl_c021*(1-w3); 
+
+
+				c120_mi_c102 = c120_mi_c102*(1-w4); 
+				c210_mi_c012 = c210_mi_c012*(1-w4);
+				c201_mi_c021 = c201_mi_c021*(1-w4);
+
+				c111 = c111*(1-w5);
+
+				c220_mi2_c202_pl_c022 = c220_mi2_c202_pl_c022*(1-w6);
+				c220_pl_c202_mi2_c022 = c220_pl_c202_mi2_c022*(1-w6);
+
+				c220_pl_c202_pl_c022 =  c220_pl_c202_pl_c022*(1-w7);
+
+				c211 = c211*(1-w8);
+				c121 = c121*(1-w8);
+				c112 = c112*(1-w8);
+
+
+				c221 = c221*(1-w9);
+				c212 = c212*(1-w9);
+				c122 = c122*(1-w9);
+
+				c222 = c222*(1-w10);
+
+
+				c200 = c1o3 *c200_mi_c020 + c1o3 *c200_mi_c002 +  c1o3* c200_pl_c020_pl_c002; 
+				c020 = -2*c1o3* c200_mi_c020+ c1o3* c200_mi_c002 +  c1o3* c200_pl_c020_pl_c002; 
+				c002 = c1o3   * c200_mi_c020 -2*c1o3 *c200_mi_c002 +  c1o3* c200_pl_c020_pl_c002; 
+
+				c210 = (c210_mi_c012 + c210_pl_c012)*0.5; 
+				c012 = 0.5*(-c210_mi_c012 + c210_pl_c012); 
+				c120 =(c120_mi_c102 + c120_pl_c102)*0.5; 
+				c102 = 0.5*(-c120_mi_c102 + c120_pl_c102); 
+				c201 = (c201_mi_c021 + c201_pl_c021)*0.5; 
+				c021 = 0.5*(-c201_mi_c021 + c201_pl_c021);
+
+				c220 =  c1o3* c220_mi2_c202_pl_c022 + c1o3* c220_pl_c202_mi2_c022 +  c1o3*c220_pl_c202_pl_c022; 
+				c202 = -c1o3* c220_mi2_c202_pl_c022 + c1o3* c220_pl_c202_pl_c022; 
+				c022 = -c1o3* c220_pl_c202_mi2_c022 + c1o3* c220_pl_c202_pl_c022;
+
+
+				////////////////////// Cumulants to Central moments   \\\\\\\\\\\\\\\\\\\\\\\\\
+
+				k200 = c200;
+				k020 = c020;
+				k002 = c002;
+				k110 = c110;
+				k101 = c101;
+				k011 = c011;
+
+				k021 = c021;
+				k012 = c012;
+				k102 = c102;
+				k201 = c201;
+				k210 = c210;
+				k120 = c120;
+				k111 = c111;
+
+				k121 = c121 + (k020*k101 + 2*k011*k110)/m000;
+				k211 = c211 + (k200*k011 + 2*k110*k101)/m000;
+				k112 = c112 + (k002*k110 + 2*k011*k101)/m000;
+
+				k220 = c220 + (k200*k020 + 2*k110*k110)/m000;
+				k202 = c202 + (k200*k002 + 2*k101*k101)/m000;
+				k022 = c022 + (k020*k002 + 2*k011*k011)/m000;
+
+				k122 = c122 + (k002*k120 + k020*k102 + 4*k011*k111 + 2*(k101*k021 + k110*k012))/m000;
+				k212 = c212 + (k200*k012 + k002*k210 + 4*k101*k111 + 2*(k110*k102 + k011*k201))/m000;
+				k221 = c221 + (k200*k021 + k020*k201 + 4*k110*k111 + 2*(k101*k120 + k011*k210))/m000;
+
+				k222 = c222 + (4*k111*k111 + k200*k022 + k020*k202 + k002*k220 + 4*(k011*k211 + k101*k121 + k110*k112)
+					+ 2*(k120*k102 + k210*k012 + k201*k021))/m000
+					- (16*k110*k101*k011 + 4*(k101*k101*k020 + k011*k011*k200 + k110*k110*k002) + 2*k200*k020*k002)/(m000*m000);
+
+				///////////////////////////////////////////////////////////////////////////////
+
+
+				m200 = k200 + m000*ux2;
+				m020 = k020 + m000*uy2;
+				m002 = k002 + m000*uz2; 
+				m110 = k110 + m000*ux_uy;          
+				m101 = k101 + m000*ux_uz;
+				m011 = k011 + m000*uy_uz;
+
+				m021 = m020*uz + 2.0*uy*k011  + k021;          
+				m012 = uy*m002 + 2.0*uz*k011 + k012;
+				m102 = ux*m002 + 2.0*uz*k101 + k102;
+				m112 = uy*m102 + 2.0*ux_uz*k011+ux*k012+uz2*k110+2.0*uz*k111+k112;
+
+				m201 = m200*uz + 2.0*ux*k101  + k201;
+				m210 = m200*uy + 2.0*ux*k110  + k210;
+				m211 = uz*m210 + 2.0*ux_uy*k101+uy*k201+ux2*k011+2.0*ux*k111+k211; 
+
+				m120 = ux*m020 + 2.0*uy*k110 + k120;
+				m121 = uz*m120 + 2.0*ux_uy*k011+ux*k021+uy2*k101+2.0*uy*k111+ k121; 
+
+				m111 = ux_uy_uz + ux*k011 + uy*k101 + uz*k110+k111;
+
+				m220 = ux2*m020 + 4.0*ux_uy*k110 + 2.0*ux*k120  + uy2*k200 + 2.0*uy*k210 +  k220; 
+
+				m221 = uz*m220 + 2.0*ux2*uy*k011  + ux2*k021 + 2.0*ux*uy2*k101  +4.0*ux_uy*k111+ 
+					2.0*ux*k121  +    uy2*k201  + 2.0*uy*k211  + k221;
+
+				m022 = uy2*m002 + 4.0*uy_uz*k011  +2.0*uy*k012+ uz2*k020+ 2.0*uz*k021 +  k022;
+
+				m122 = ux*m022 + 2.0*uy2*uz*k101 + uy2*k102 + 
+					2.0*uy*uz2*k110 + 4.0*uy_uz*k111 + 2.0*uy*k112 +uz2*k120 + 2.0*uz*k121 + k122;
+
+				m202 = ux2*m002 + 4.0*ux_uz*k101+ 2.0*ux*k102 + uz2*k200+ 2.0*uz*k201 + k202; 
+
+				m212 = uy*m202 + 2.0*ux2*uz*k011 +ux2*k012  + 2.0*ux*uz2*k110 + 4.0*ux_uz*k111 
+					+ 2.0*ux*k112  + uz2*k210 +  2.0*uz*k211 + k212;
+
+				m222 = ux2*m022 
+					+ 4.0* ux*uy2*uz*k101   + 
+					2.0* ux*uy2*k102 + 4.0* ux_uy*uz2*k110+ 
+					8.0* ux_uy_uz*k111 + 4.0* ux_uy*k112 + 
+					2.0* ux*uz2*k120 + 4.0* ux_uz*k121 + 2.0*ux*k122 + 
+					uy2*uz2*k200 + 2.0* uy2*uz*k201  + 
+					uy2*k202     + 2.0* uy*uz2*k210  + 4.0*uy_uz*k211 + 
+					2.0* uy*k212 + uz2*k220 +2.0* uz*k221 + k222;
+
+				f1[ZERO] = (-m200 + m220 - m222 + m202 - m020 + m022 - m002 + m000);
+				f1[E] = 0.5* (m200 -  m220 + m222 - m202 - m120 + m122 - m102 +m100);
+				f1[W] = 0.5* (m200 - m220 + m222 - m202 + m120 - m122 + m102 -m100);
+				f1[N] = 0.5* (-m210 - m220 + m222 + m212 + m020 - m022 - m012 +m010);
+				f1[S] = 0.5* (m210 -  m220 + m222 - m212 + m020 - m022 + m012 -m010);
+				f1[T] = 0.5* (m221 +  m222 - m201 - m202 - m021 - m022 + m002 +m001);
+				f1[B] = 0.5* (-m221 + m222 + m201  - m202 + m021 - m022 + m002-m001);
+
+				f1[NE] = 0.25*( m210  + m220- m222 - m212 + m110+ m120- m122 -m112); 
+				f1[SW] = 0.25*(-m210 + m220- m222 + m212 + m110- m120+ m122 -m112); 
+				f1[SE] = 0.25*(-m210 + m220- m222 + m212 - m110+ m120- m122 +m112); 
+				f1[NW] = 0.25*( m210  + m220- m222 - m212 - m110- m120+ m122 + m112); 
+				f1[TE] = 0.25*(-m221 - m222 + m201 + m202 - m121 - m122 + m101 + m102); 
+				f1[BW] = 0.25*( m221  -m222 - m201 + m202 - m121 + m122 + m101 - m102);
+				f1[BE] = 0.25*(m221 - m222 - m201 + m202 + m121 - m122 - m101 +m102);
+				f1[TW] = 0.25*(-m221 - m222 + m201 + m202 + m121 + m122 - m101 -m102); 
+				f1[TN] = 0.25*(-m221 - m222 - m211 - m212 + m021 + m022 + m011+m012);
+				f1[BS] = 0.25*( m221 - m222 - m211 + m212 - m021 + m022 + m011 - m012);
+				f1[BN] = 0.25*( m221 - m222 + m211 - m212 - m021 + m022 - m011 + m012);
+				f1[TS] = 0.25*(-m221 - m222 + m211 + m212 + m021 + m022 - m011 -m012); 
+
+				f1[TNE]=0.125*( m221 + m222 + m211 + m212 + m121 + m122 + m111 + m112); 
+				f1[BNE]=0.125*(-m221 + m222 -m211 + m212 -m121 + m122 -m111 + m112);
+				f1[TSE]=0.125*( m221 + m222 - m211 - m212 + m121 + m122 - m111 - m112); 
+				f1[BSE]=0.125*(-m221 + m222 +m211 - m212 -m121 + m122 +m111 - m112); 
+				f1[TNW]=0.125*( m221 + m222 + m211 + m212 - m121 - m122 - m111 - m112); 
+				f1[BNW]=0.125*(-m221 + m222 -m211 + m212 +m121 - m122 +m111 - m112); 
+				f1[TSW]=0.125*( m221 + m222 - m211 - m212 - m121 - m122 + m111 + m112); 
+				f1[BSW]=0.125*(-m221 + m222+m211 - m212+m121 - m122-m111 + m112);
+			   
+*/
+			   //////////////////////////////////////////////////////////////////////////
+               //proof correctness
+               //////////////////////////////////////////////////////////////////////////
+#ifdef  PROOF_CORRECTNESS
+			   LBMReal rho_post = (mfaaa+mfaac+mfaca+mfcaa+mfacc+mfcac+mfccc+mfcca)
+			   +(mfaab+mfacb+mfcab+mfccb)+(mfaba+mfabc+mfcba+mfcbc)+(mfbaa+mfbac+mfbca+mfbcc)
+			   +(mfabb+mfcbb)+(mfbab+mfbcb)+(mfbba+mfbbc)+mfbbb;
+				
+				/*LBMReal rho_post = f1[ZERO] + f1[E] + f1[W] + f1[N] + f1[S] + f1[T] + f1[B] + f1[NE] + f1[SW] + f1[SE] + f1[NW] + f1[TE] + f1[BW] + 
+					f1[BE] + f1[TW] + f1[TN] + f1[BS] + f1[BN] + f1[TS] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW] + f1[BNE] + f1[BNW] + f1[BSE] + f1[BSW]; */
+               //LBMReal dif = fabs(rho - rho_post);
+               LBMReal dif = rho - rho_post;
+#ifdef SINGLEPRECISION
+               if(dif > 10.0E-7 || dif < -10.0E-7)
+#else
+               if(dif > 10.0E-15 || dif < -10.0E-15)
+#endif
+               {
+				   UB_THROW(UbException(UB_EXARGS,"rho="+UbSystem::toString(rho)+", rho_post="+UbSystem::toString(rho_post)
+                     +" dif="+UbSystem::toString(dif)
+                     +" rho is not correct for node "+UbSystem::toString(x1)+","+UbSystem::toString(x2)+","+UbSystem::toString(x3)));
+                  //UBLOG(logERROR,"LBMKernelETD3Q27CCLB::collideAll(): rho is not correct for node "+UbSystem::toString(x1)+","+UbSystem::toString(x2)+","+UbSystem::toString(x3));
+                  //exit(EXIT_FAILURE);
+               }
+#endif
+               /*
+			   g[E  ] = (f1[E  ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[E  ] + 0.5*forcingTerm[E  ]);
+			   g[N  ] = (f1[N  ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[N  ] + 0.5*forcingTerm[N  ]);
+			   g[T  ] = (f1[T  ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[T  ] + 0.5*forcingTerm[T  ]);
+			   g[NE ] = (f1[NE ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[NE ] + 0.5*forcingTerm[NE ]);
+			   g[NW ] = (f1[NW ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[NW ] + 0.5*forcingTerm[NW ]);
+			   g[TE ] = (f1[TE ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[TE ] + 0.5*forcingTerm[TE ]);
+			   g[TW ] = (f1[TW ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[TW ] + 0.5*forcingTerm[TW ]);
+			   g[TN ] = (f1[TN ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[TN ] + 0.5*forcingTerm[TN ]);
+			   g[TS ] = (f1[TS ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[TS ] + 0.5*forcingTerm[TS ]);
+			   g[TNE] = (f1[TNE]*c1o3 + (p1 - rho*c1o3)*WEIGTH[TNE] + 0.5*forcingTerm[TNE]);
+			   g[TNW] = (f1[TNW]*c1o3 + (p1 - rho*c1o3)*WEIGTH[TNW] + 0.5*forcingTerm[TNW]);
+			   g[TSE] = (f1[TSE]*c1o3 + (p1 - rho*c1o3)*WEIGTH[TSE] + 0.5*forcingTerm[TSE]);
+			   g[TSW] = (f1[TSW]*c1o3 + (p1 - rho*c1o3)*WEIGTH[TSW] + 0.5*forcingTerm[TSW]);
+			   g[W  ] = (f1[W  ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[W  ] + 0.5*forcingTerm[W  ]);
+			   g[S  ] = (f1[S  ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[S  ] + 0.5*forcingTerm[S  ]);
+			   g[B  ] = (f1[B  ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[B  ] + 0.5*forcingTerm[B  ]);
+			   g[SW ] = (f1[SW ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[SW ] + 0.5*forcingTerm[SW ]);
+			   g[SE ] = (f1[SE ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[SE ] + 0.5*forcingTerm[SE ]);
+			   g[BW ] = (f1[BW ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[BW ] + 0.5*forcingTerm[BW ]);
+			   g[BE ] = (f1[BE ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[BE ] + 0.5*forcingTerm[BE ]);
+			   g[BS ] = (f1[BS ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[BS ] + 0.5*forcingTerm[BS ]);
+			   g[BN ] = (f1[BN ]*c1o3 + (p1 - rho*c1o3)*WEIGTH[BN ] + 0.5*forcingTerm[BN ]);
+			   g[BSW] = (f1[BSW]*c1o3 + (p1 - rho*c1o3)*WEIGTH[BSW] + 0.5*forcingTerm[BSW]);
+			   g[BSE] = (f1[BSE]*c1o3 + (p1 - rho*c1o3)*WEIGTH[BSE] + 0.5*forcingTerm[BSE]);
+			   g[BNW] = (f1[BNW]*c1o3 + (p1 - rho*c1o3)*WEIGTH[BNW] + 0.5*forcingTerm[BNW]);
+			   g[BNE] = (f1[BNE]*c1o3 + (p1 - rho*c1o3)*WEIGTH[BNE] + 0.5*forcingTerm[BNE]);
+
+			   g[ZERO] = (f1[ZERO]*c1o3 + (p1 - rho*c1o3)*WEIGTH[ZERO] + 0.5*forcingTerm[ZERO]);
+			   */
+			   
+			   
+			   mfcbb = (mfcbb*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[E  ] + 0.5*forcingTerm[E  ]);
+			   mfbcb = (mfbcb*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[N  ] + 0.5*forcingTerm[N  ]);
+			   mfbbc = (mfbbc*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[T  ] + 0.5*forcingTerm[T  ]);
+			   mfccb = (mfccb*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[NE ] + 0.5*forcingTerm[NE ]);
+			   mfacb = (mfacb*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[NW ] + 0.5*forcingTerm[NW ]);
+			   mfcbc = (mfcbc*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[TE ] + 0.5*forcingTerm[TE ]);
+			   mfabc = (mfabc*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[TW ] + 0.5*forcingTerm[TW ]);
+			   mfbcc = (mfbcc*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[TN ] + 0.5*forcingTerm[TN ]);
+			   mfbac = (mfbac*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[TS ] + 0.5*forcingTerm[TS ]);
+			   mfccc = (mfccc*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[TNE] + 0.5*forcingTerm[TNE]);
+			   mfacc = (mfacc*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[TNW] + 0.5*forcingTerm[TNW]);
+			   mfcac = (mfcac*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[TSE] + 0.5*forcingTerm[TSE]);
+			   mfaac = (mfaac*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[TSW] + 0.5*forcingTerm[TSW]);
+			   mfabb = (mfabb*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[W  ] + 0.5*forcingTerm[W  ]);
+			   mfbab = (mfbab*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[S  ] + 0.5*forcingTerm[S  ]);
+			   mfbba = (mfbba*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[B  ] + 0.5*forcingTerm[B  ]);
+			   mfaab = (mfaab*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[SW ] + 0.5*forcingTerm[SW ]);
+			   mfcab = (mfcab*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[SE ] + 0.5*forcingTerm[SE ]);
+			   mfaba = (mfaba*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[BW ] + 0.5*forcingTerm[BW ]);
+			   mfcba = (mfcba*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[BE ] + 0.5*forcingTerm[BE ]);
+			   mfbaa = (mfbaa*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[BS ] + 0.5*forcingTerm[BS ]);
+			   mfbca = (mfbca*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[BN ] + 0.5*forcingTerm[BN ]);
+			   mfaaa = (mfaaa*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[BSW] + 0.5*forcingTerm[BSW]);
+			   mfcaa = (mfcaa*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[BSE] + 0.5*forcingTerm[BSE]);
+			   mfaca = (mfaca*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[BNW] + 0.5*forcingTerm[BNW]);
+			   mfcca = (mfcca*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[BNE] + 0.5*forcingTerm[BNE]);
+
+			   mfbbb = (mfbbb*c1o3 + 0*(p1 - rho*c1o3)*WEIGTH[ZERO] + 0.5*forcingTerm[ZERO]);
+			   
+
+
+
+			   LBMReal denom = sqrt(dX1_phi*dX1_phi + dX2_phi*dX2_phi + dX3_phi*dX3_phi) + 1e-9;
+			   for (int dir = STARTF; dir < (ENDF+1); dir++)
+			   {
+				   LBMReal velProd = DX1[dir]*ux + DX2[dir]*uy + DX3[dir]*uz;
+				   LBMReal velSq1 = velProd*velProd;
+				   LBMReal hEq, gEq;
+				   
+				   if (dir != ZERO)
+				   {
+					   LBMReal dirGrad_phi = (phi[dir] - phi[INVDIR[dir]])/2.0;
+					   LBMReal hSource = (tauH - 0.5)*(1.0 - phi[ZERO])*(phi[ZERO])*(dirGrad_phi)/denom;
+					   hEq = phi[ZERO]*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(ux2+uy2+uz2)) + hSource*WEIGTH[dir];
+					   //gEq = rho*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(vx2+vy2+vz2))*c1o3 + (p1-rho*c1o3)*WEIGTH[dir];
+					   //h[dir] = hEq; //h[dir] - (h[dir] - hEq)/(tauH + 0.5));  /// This corresponds with the collision factor of 1.0 which equals (tauH + 0.5). 
+					   h[dir] = h[dir] - (h[dir] - hEq)/(tauH);
+					   //g[dir] = g[dir] - collFactorM*(g[dir]-gEq) + 0.5*forcingTerm[dir];
+
+				   } 
+				   else
+				   {
+					   hEq = phi[ZERO]*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(ux2+uy2+uz2));
+					   //gEq = rho*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(vx2+vy2+vz2))*c1o3 + (p1-rho*c1o3)*WEIGTH[dir];
+					   //h[dir] = hEq;
+					   h[dir] = h[dir] - (h[dir] - hEq)/(tauH);
+					   //g[dir] = g[dir] - collFactorM*(g[dir]-gEq) + 0.5*forcingTerm[dir];
+				   }
+			   }
+			   
+			   //////////////////////////////////////////////////////////////////////////
+               //write distribution
+               //////////////////////////////////////////////////////////////////////////
+               
+			   (*this->localDistributionsF)(D3Q27System::ET_E,   x1,  x2,  x3) = mfabb;
+               (*this->localDistributionsF)(D3Q27System::ET_N,   x1,  x2,  x3) = mfbab;
+               (*this->localDistributionsF)(D3Q27System::ET_T,   x1,  x2,  x3) = mfbba;
+               (*this->localDistributionsF)(D3Q27System::ET_NE,  x1,  x2,  x3) = mfaab;
+               (*this->localDistributionsF)(D3Q27System::ET_NW,  x1p, x2,  x3) = mfcab;
+               (*this->localDistributionsF)(D3Q27System::ET_TE,  x1,  x2,  x3) = mfaba;
+               (*this->localDistributionsF)(D3Q27System::ET_TW,  x1p, x2,  x3) = mfcba;
+               (*this->localDistributionsF)(D3Q27System::ET_TN,  x1,  x2,  x3) = mfbaa;
+               (*this->localDistributionsF)(D3Q27System::ET_TS,  x1,  x2p, x3) = mfbca;
+               (*this->localDistributionsF)(D3Q27System::ET_TNE, x1,  x2,  x3) = mfaaa;
+               (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p, x2,  x3) = mfcaa;
+               (*this->localDistributionsF)(D3Q27System::ET_TSE, x1,  x2p, x3) = mfaca;
+               (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p, x2p, x3) = mfcca;
+
+               (*this->nonLocalDistributionsF)(D3Q27System::ET_W,   x1p, x2,  x3 ) = mfcbb;
+               (*this->nonLocalDistributionsF)(D3Q27System::ET_S,   x1,  x2p, x3 ) = mfbcb;
+               (*this->nonLocalDistributionsF)(D3Q27System::ET_B,   x1,  x2,  x3p) = mfbbc;
+               (*this->nonLocalDistributionsF)(D3Q27System::ET_SW,  x1p, x2p, x3 ) = mfccb;
+               (*this->nonLocalDistributionsF)(D3Q27System::ET_SE,  x1,  x2p, x3 ) = mfacb;
+               (*this->nonLocalDistributionsF)(D3Q27System::ET_BW,  x1p, x2,  x3p) = mfcbc;
+               (*this->nonLocalDistributionsF)(D3Q27System::ET_BE,  x1,  x2,  x3p) = mfabc;
+               (*this->nonLocalDistributionsF)(D3Q27System::ET_BS,  x1,  x2p, x3p) = mfbcc;
+               (*this->nonLocalDistributionsF)(D3Q27System::ET_BN,  x1,  x2,  x3p) = mfbac;
+               (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p, x2p, x3p) = mfccc;
+               (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1,  x2p, x3p) = mfacc;
+               (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p, x2,  x3p) = mfcac;
+               (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1,  x2,  x3p) = mfaac;
+
+               (*this->zeroDistributionsF)(x1,x2,x3) = mfbbb;
+			   
+
+			   /*
+			   (*this->localDistributionsF)(D3Q27System::ET_E,   x1,  x2,  x3) = g[D3Q27System::INV_E];
+			   (*this->localDistributionsF)(D3Q27System::ET_N,   x1,  x2,  x3) = g[D3Q27System::INV_N];
+			   (*this->localDistributionsF)(D3Q27System::ET_T,   x1,  x2,  x3) = g[D3Q27System::INV_T];
+			   (*this->localDistributionsF)(D3Q27System::ET_NE,  x1,  x2,  x3) = g[D3Q27System::INV_NE];
+			   (*this->localDistributionsF)(D3Q27System::ET_NW,  x1p, x2,  x3) = g[D3Q27System::INV_NW];
+			   (*this->localDistributionsF)(D3Q27System::ET_TE,  x1,  x2,  x3) = g[D3Q27System::INV_TE];
+			   (*this->localDistributionsF)(D3Q27System::ET_TW,  x1p, x2,  x3) = g[D3Q27System::INV_TW];
+			   (*this->localDistributionsF)(D3Q27System::ET_TN,  x1,  x2,  x3) = g[D3Q27System::INV_TN];
+			   (*this->localDistributionsF)(D3Q27System::ET_TS,  x1,  x2p, x3) = g[D3Q27System::INV_TS];
+			   (*this->localDistributionsF)(D3Q27System::ET_TNE, x1,  x2,  x3) = g[D3Q27System::INV_TNE];
+			   (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p, x2,  x3) = g[D3Q27System::INV_TNW];
+			   (*this->localDistributionsF)(D3Q27System::ET_TSE, x1,  x2p, x3) = g[D3Q27System::INV_TSE];
+			   (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p, x2p, x3) = g[D3Q27System::INV_TSW];
+
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_W,   x1p, x2,  x3 ) = g[D3Q27System::INV_W ];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_S,   x1,  x2p, x3 ) = g[D3Q27System::INV_S ];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_B,   x1,  x2,  x3p) = g[D3Q27System::INV_B ];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_SW,  x1p, x2p, x3 ) = g[D3Q27System::INV_SW];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_SE,  x1,  x2p, x3 ) = g[D3Q27System::INV_SE];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BW,  x1p, x2,  x3p) = g[D3Q27System::INV_BW];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BE,  x1,  x2,  x3p) = g[D3Q27System::INV_BE];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BS,  x1,  x2p, x3p) = g[D3Q27System::INV_BS];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BN,  x1,  x2,  x3p) = g[D3Q27System::INV_BN];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p, x2p, x3p) = g[D3Q27System::INV_BSW];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1,  x2p, x3p) = g[D3Q27System::INV_BSE];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p, x2,  x3p) = g[D3Q27System::INV_BNW];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1,  x2,  x3p) = g[D3Q27System::INV_BNE];
+
+			   (*this->zeroDistributionsF)(x1,x2,x3) = g[D3Q27System::ZERO];
+			   */
+
+
+			   (*this->localDistributionsH)(D3Q27System::ET_E,   x1,  x2,  x3) = h[D3Q27System::INV_E];
+			   (*this->localDistributionsH)(D3Q27System::ET_N,   x1,  x2,  x3) = h[D3Q27System::INV_N];
+			   (*this->localDistributionsH)(D3Q27System::ET_T,   x1,  x2,  x3) = h[D3Q27System::INV_T];
+			   (*this->localDistributionsH)(D3Q27System::ET_NE,  x1,  x2,  x3) = h[D3Q27System::INV_NE];
+			   (*this->localDistributionsH)(D3Q27System::ET_NW,  x1p, x2,  x3) = h[D3Q27System::INV_NW];
+			   (*this->localDistributionsH)(D3Q27System::ET_TE,  x1,  x2,  x3) = h[D3Q27System::INV_TE];
+			   (*this->localDistributionsH)(D3Q27System::ET_TW,  x1p, x2,  x3) = h[D3Q27System::INV_TW];
+			   (*this->localDistributionsH)(D3Q27System::ET_TN,  x1,  x2,  x3) = h[D3Q27System::INV_TN];
+			   (*this->localDistributionsH)(D3Q27System::ET_TS,  x1,  x2p, x3) = h[D3Q27System::INV_TS];
+			   (*this->localDistributionsH)(D3Q27System::ET_TNE, x1,  x2,  x3) = h[D3Q27System::INV_TNE];
+			   (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2,  x3) = h[D3Q27System::INV_TNW];
+			   (*this->localDistributionsH)(D3Q27System::ET_TSE, x1,  x2p, x3) = h[D3Q27System::INV_TSE];
+			   (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3) = h[D3Q27System::INV_TSW];
+			   
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_W,   x1p, x2,  x3 ) = h[D3Q27System::INV_W ];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_S,   x1,  x2p, x3 ) = h[D3Q27System::INV_S ];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_B,   x1,  x2,  x3p) = h[D3Q27System::INV_B ];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_SW,  x1p, x2p, x3 ) = h[D3Q27System::INV_SW];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_SE,  x1,  x2p, x3 ) = h[D3Q27System::INV_SE];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BW,  x1p, x2,  x3p) = h[D3Q27System::INV_BW];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BE,  x1,  x2,  x3p) = h[D3Q27System::INV_BE];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BS,  x1,  x2p, x3p) = h[D3Q27System::INV_BS];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BN,  x1,  x2,  x3p) = h[D3Q27System::INV_BN];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p) = h[D3Q27System::INV_BSW];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1,  x2p, x3p) = h[D3Q27System::INV_BSE];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2,  x3p) = h[D3Q27System::INV_BNW];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1,  x2,  x3p) = h[D3Q27System::INV_BNE];
+			   
+			   (*this->zeroDistributionsH)(x1,x2,x3) = h[D3Q27System::ZERO];
+               //////////////////////////////////////////////////////////////////////////
+
+            }
+         }
+      }
+   }
+   
+   }
+}
+//////////////////////////////////////////////////////////////////////////
+double MultiphaseCumulantLBMKernel::getCallculationTime()
+{
+   //return timer.getDuration();
+   return timer.getTotalTime();
+}
+//////////////////////////////////////////////////////////////////////////
+
+LBMReal MultiphaseCumulantLBMKernel::gradX1_phi()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*DX1[k]*phi[k];
+	}
+	return 3.0*sum;
+}
+
+LBMReal MultiphaseCumulantLBMKernel::gradX2_phi()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*DX2[k]*phi[k];
+	}
+	return 3.0*sum;
+}
+
+LBMReal MultiphaseCumulantLBMKernel::gradX3_phi()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*DX3[k]*phi[k];
+	}
+	return 3.0*sum;
+}
+
+LBMReal MultiphaseCumulantLBMKernel::nabla2_phi()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*(phi[k] - phi[ZERO]);
+	}
+	return 6.0*sum;
+}
+///// Commnets neeeded ////////
+
+void MultiphaseCumulantLBMKernel::computePhasefield()
+{
+	using namespace D3Q27System;
+	DistributionArray3DPtr distributionsH = dataSet->getHdistributions();
+
+	//const int bcArrayMaxX1 = (int)distributionsH->getNX1();
+	//const int bcArrayMaxX2 = (int)distributionsH->getNX2();
+	//const int bcArrayMaxX3 = (int)distributionsH->getNX3();
+
+	int minX1 = ghostLayerWidth;
+	int minX2 = ghostLayerWidth;
+	int minX3 = ghostLayerWidth;
+	int maxX1 = (int)distributionsH->getNX1() - ghostLayerWidth;
+	int maxX2 = (int)distributionsH->getNX2() - ghostLayerWidth;
+	int maxX3 = (int)distributionsH->getNX3() - ghostLayerWidth;
+
+	//------------- Computing the phase-field ------------------
+	for(int x3 = minX3; x3 < maxX3; x3++)
+	{
+		for(int x2 = minX2; x2 < maxX2; x2++)
+		{
+			for(int x1 = minX1; x1 < maxX1; x1++)
+			{
+				//if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3))
+				{
+					int x1p = x1 + 1;
+					int x2p = x2 + 1;
+					int x3p = x3 + 1;
+
+					h[E  ] = (*this->localDistributionsH)(D3Q27System::ET_E, x1,x2,x3);
+					h[N  ] = (*this->localDistributionsH)(D3Q27System::ET_N,x1,x2,x3); 
+					h[T  ] = (*this->localDistributionsH)(D3Q27System::ET_T,x1,x2,x3);
+					h[NE ] = (*this->localDistributionsH)(D3Q27System::ET_NE,x1,x2,x3);
+					h[NW ] = (*this->localDistributionsH)(D3Q27System::ET_NW,x1p,x2,x3);
+					h[TE ] = (*this->localDistributionsH)(D3Q27System::ET_TE,x1,x2,x3);
+					h[TW ] = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p,x2,x3);
+					h[TN ] = (*this->localDistributionsH)(D3Q27System::ET_TN,x1,x2,x3);
+					h[TS ] = (*this->localDistributionsH)(D3Q27System::ET_TS,x1,x2p,x3);
+					h[TNE] = (*this->localDistributionsH)(D3Q27System::ET_TNE,x1,x2,x3);
+					h[TNW] = (*this->localDistributionsH)(D3Q27System::ET_TNW,x1p,x2,x3);
+					h[TSE] = (*this->localDistributionsH)(D3Q27System::ET_TSE,x1,x2p,x3);
+					h[TSW] = (*this->localDistributionsH)(D3Q27System::ET_TSW,x1p,x2p,x3);
+
+					h[W  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_W,x1p,x2,x3  );
+					h[S  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_S,x1,x2p,x3  );
+					h[B  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_B,x1,x2,x3p  );
+					h[SW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW,x1p,x2p,x3 );
+					h[SE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE,x1,x2p,x3 );
+					h[BW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW,x1p,x2,x3p );
+					h[BE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE,x1,x2,x3p );
+					h[BS ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS,x1,x2p,x3p );
+					h[BN ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN,x1,x2,x3p );
+					h[BSW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+					h[BSE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE,x1,x2p,x3p);
+					h[BNW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW,x1p,x2,x3p);
+					h[BNE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE,x1,x2,x3p);
+
+					h[ZERO] = (*this->zeroDistributionsH)(x1,x2,x3);
+
+					/*(*this->phaseField)(x1,x2,x3) = h[ZERO] + h[E] + h[W] + h[N] + h[S] + h[T] + h[B] + h[NE] + h[SW] + h[SE] + h[NW] + h[TE] + h[BW] + 
+						h[BE] + h[TW] + h[TN] + h[BS] + h[BN] + h[TS] + h[TNE] + h[TNW] + h[TSE] + h[TSW] + h[BNE] + h[BNW] + h[BSE] + h[BSW];*/
+
+				}
+			}
+		}
+	}
+	//----------------------------------------------------------
+	
+/*
+	/////// Filling ghost nodes for FD computations //////////
+	for(int x1 = minX1; x1 < maxX1; x1++)
+	{
+		for(int x2 = minX2; x2 < maxX2; x2++)
+		{
+			int x3 = 0;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, x2, maxX3-1);
+			x3 = maxX3;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, x2, minX3);
+		}
+	}
+	for(int x2 = minX2; x2 < maxX2; x2++)
+	{
+		for(int x3 = minX3; x3 < maxX3; x3++)
+		{
+			int x1 = 0;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(maxX1-1, x2, x3);
+			x1 = maxX1;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(minX1, x2, x3);
+		}
+	}
+	for(int x1 = minX1; x1 < maxX1; x1++)
+	{
+		for(int x3 = minX3; x3 < maxX3; x3++)
+		{
+			int x2 = 0;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, maxX2-1, x3);
+			x2 = maxX2;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, minX2, x3);
+		}
+	}
+	(*phaseField)(0, 0,     0    ) = (*phaseField)(maxX1-1, maxX2-1, maxX3-1);
+	(*phaseField)(0, 0,     maxX3) = (*phaseField)(maxX1-1, maxX2-1, minX3  );
+	(*phaseField)(0, maxX2, 0    ) = (*phaseField)(maxX1-1, minX2, maxX3-1  );
+	(*phaseField)(0, maxX2, maxX3) = (*phaseField)(maxX1-1, minX2, minX3    );
+
+	(*phaseField)(maxX1, 0,     0    ) = (*phaseField)(minX1, maxX2-1, maxX3-1);
+	(*phaseField)(maxX1, 0,     maxX3) = (*phaseField)(minX1, maxX2-1, minX3  );
+	(*phaseField)(maxX1, maxX2, 0    ) = (*phaseField)(minX1, minX2, maxX3-1  );
+	(*phaseField)(maxX1, maxX2, maxX3) = (*phaseField)(minX1, minX2, minX3    );
+
+	///////////////////////////////////////////////////////// 
+*/
+}
+
+void MultiphaseCumulantLBMKernel::findNeighbors(CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr ph, int x1, int x2, int x3)
+{
+	using namespace D3Q27System;
+	
+	BCArray3DPtr bcArray = this->getBCProcessor()->getBCArray();
+
+	phi[ZERO] = (*ph)(x1,x2,x3);
+	
+	LBMReal a = -0.5*sqrt(2*beta/kappa)*cos(contactAngle*PI/180);
+	LBMReal a1 = 1 + a;
+	
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		if (!bcArray->isSolid(x1 + DX1[k], x2 + DX2[k], x3 + DX3[k]))
+		{
+			phi[k] = (*ph)(x1 + DX1[k], x2 + DX2[k], x3 + DX3[k]);
+		} 
+		else
+		{
+			/*
+			if (phi[ZERO] < 1e-2)
+			{
+				phi[k] = (*ph)(x1 + DX1[INVDIR[k]], x2 + DX2[INVDIR[k]], x3 + DX3[INVDIR[k]]);
+			}
+			else
+			{
+				LBMReal phi_f = (*ph)(x1 + DX1[k], x2, x3 + DX3[k]);
+				phi[k] = (a1 - sqrt(a1*a1 - 4*a*phi_f) )/a - phi_f;
+			}
+			*/
+			phi[k] = (*ph)(x1 + DX1[INVDIR[k]], x2 + DX2[INVDIR[k]], x3 + DX3[INVDIR[k]]);
+			
+			
+		}
+	}
+
+	/*
+	phi[E  ] = (*ph)(x1 + DX1[E  ], x2 + DX2[E  ], x3 + DX3[E  ]);
+	phi[N  ] = (*ph)(x1 + DX1[N  ], x2 + DX2[N  ], x3 + DX3[N  ]);
+	phi[T  ] = (*ph)(x1 + DX1[T  ], x2 + DX2[T  ], x3 + DX3[T  ]);
+	phi[W  ] = (*ph)(x1 + DX1[W  ], x2 + DX2[W  ], x3 + DX3[W  ]);
+	phi[S  ] = (*ph)(x1 + DX1[S  ], x2 + DX2[S  ], x3 + DX3[S  ]);
+	phi[B  ] = (*ph)(x1 + DX1[B  ], x2 + DX2[B  ], x3 + DX3[B  ]);
+	phi[NE ] = (*ph)(x1 + DX1[NE ], x2 + DX2[NE ], x3 + DX3[NE ]);
+	phi[NW ] = (*ph)(x1 + DX1[NW ], x2 + DX2[NW ], x3 + DX3[NW ]);
+	phi[TE ] = (*ph)(x1 + DX1[TE ], x2 + DX2[TE ], x3 + DX3[TE ]);
+	phi[TW ] = (*ph)(x1 + DX1[TW ], x2 + DX2[TW ], x3 + DX3[TW ]);
+	phi[TN ] = (*ph)(x1 + DX1[TN ], x2 + DX2[TN ], x3 + DX3[TN ]);
+	phi[TS ] = (*ph)(x1 + DX1[TS ], x2 + DX2[TS ], x3 + DX3[TS ]);
+	phi[SW ] = (*ph)(x1 + DX1[SW ], x2 + DX2[SW ], x3 + DX3[SW ]);
+	phi[SE ] = (*ph)(x1 + DX1[SE ], x2 + DX2[SE ], x3 + DX3[SE ]);
+	phi[BW ] = (*ph)(x1 + DX1[BW ], x2 + DX2[BW ], x3 + DX3[BW ]);
+	phi[BE ] = (*ph)(x1 + DX1[BE ], x2 + DX2[BE ], x3 + DX3[BE ]);
+	phi[BS ] = (*ph)(x1 + DX1[BS ], x2 + DX2[BS ], x3 + DX3[BS ]);
+	phi[BN ] = (*ph)(x1 + DX1[BN ], x2 + DX2[BN ], x3 + DX3[BN ]);
+	phi[BSW] = (*ph)(x1 + DX1[BSW], x2 + DX2[BSW], x3 + DX3[BSW]);
+	phi[BSE] = (*ph)(x1 + DX1[BSE], x2 + DX2[BSE], x3 + DX3[BSE]);
+	phi[BNW] = (*ph)(x1 + DX1[BNW], x2 + DX2[BNW], x3 + DX3[BNW]);
+	phi[BNE] = (*ph)(x1 + DX1[BNE], x2 + DX2[BNE], x3 + DX3[BNE]);
+	phi[TNE] = (*ph)(x1 + DX1[TNE], x2 + DX2[TNE], x3 + DX3[TNE]);
+	phi[TNW] = (*ph)(x1 + DX1[TNW], x2 + DX2[TNW], x3 + DX3[TNW]);
+	phi[TSE] = (*ph)(x1 + DX1[TSE], x2 + DX2[TSE], x3 + DX3[TSE]);
+	phi[TSW] = (*ph)(x1 + DX1[TSW], x2 + DX2[TSW], x3 + DX3[TSW]);
+	*/
+}
+
+void MultiphaseCumulantLBMKernel::swapDistributions()
+{
+   dataSet->getFdistributions()->swap();
+   dataSet->getHdistributions()->swap();
+   //computePhasefield();
+}
\ No newline at end of file
diff --git a/apps/cpu/Multiphase/backup/Final.ast b/apps/cpu/Multiphase/backup/Final.ast
new file mode 100644
index 0000000000000000000000000000000000000000..d1909c7ae985f4014060a4e9b19e1f0bc093fe92
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/Final.ast
@@ -0,0 +1,5042 @@
+solid Mesh
+  facet normal -0.945841 -0.324629 0.000002
+    outer loop
+      vertex -190.759033 12.614820 -497.317169
+      vertex -190.732468 12.537620 -470.000000
+      vertex -190.758972 12.614843 -470.000000
+    endloop
+  endfacet
+  facet normal -0.913815 -0.406131 -0.000259
+    outer loop
+      vertex -190.716019 12.517895 -497.096222
+      vertex -190.692001 12.446568 -470.000000
+      vertex -190.732468 12.537620 -470.000000
+    endloop
+  endfacet
+  facet normal -0.913813 -0.406134 -0.000259
+    outer loop
+      vertex -190.732468 12.537620 -470.000000
+      vertex -190.759033 12.614820 -497.317169
+      vertex -190.716019 12.517895 -497.096222
+    endloop
+  endfacet
+  facet normal -0.913987 -0.405744 0.000002
+    outer loop
+      vertex -190.759033 12.614820 -497.317169
+      vertex -190.758972 12.614843 -470.000000
+      vertex -190.829590 12.773918 -470.000000
+    endloop
+  endfacet
+  facet normal -0.914011 -0.405689 0.000002
+    outer loop
+      vertex -190.829590 12.773918 -470.000000
+      vertex -190.833801 12.783269 -497.701202
+      vertex -190.759033 12.614820 -497.317169
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915769 -0.401705
+    outer loop
+      vertex -190.716019 12.517895 -497.096222
+      vertex -90.000000 12.563623 -497.200470
+      vertex -90.000000 12.517895 -497.096222
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915761 -0.401724
+    outer loop
+      vertex -190.716019 12.517895 -497.096222
+      vertex -190.759033 12.614820 -497.317169
+      vertex -90.000000 12.563623 -497.200470
+    endloop
+  endfacet
+  facet normal -0.928601 -0.371080 -0.000154
+    outer loop
+      vertex -190.571716 12.156562 -496.543152
+      vertex -190.555878 12.105928 -470.000000
+      vertex -190.692001 12.446568 -470.000000
+    endloop
+  endfacet
+  facet normal -0.928600 -0.371082 -0.000154
+    outer loop
+      vertex -190.692001 12.446568 -470.000000
+      vertex -190.716019 12.517895 -497.096222
+      vertex -190.571716 12.156562 -496.543152
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915773 -0.401697
+    outer loop
+      vertex -190.759033 12.614820 -497.317169
+      vertex -90.000000 12.783269 -497.701202
+      vertex -90.000000 12.703794 -497.520020
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915776 -0.401689
+    outer loop
+      vertex -190.759033 12.614820 -497.317169
+      vertex -190.833801 12.783269 -497.701202
+      vertex -90.000000 12.783269 -497.701202
+    endloop
+  endfacet
+  facet normal -0.904908 -0.425607 -0.000006
+    outer loop
+      vertex -190.833801 12.783269 -497.701202
+      vertex -190.829590 12.773918 -470.000000
+      vertex -190.871490 12.863006 -470.000000
+    endloop
+  endfacet
+  facet normal -0.904902 -0.425620 -0.000006
+    outer loop
+      vertex -190.871490 12.863006 -470.000000
+      vertex -190.878250 12.877775 -498.018738
+      vertex -190.833801 12.783269 -497.701202
+    endloop
+  endfacet
+  facet normal 0.000000 -0.837180 -0.546928
+    outer loop
+      vertex -190.716019 12.517895 -497.096222
+      vertex -90.000000 12.517895 -497.096222
+      vertex -90.000000 12.327077 -496.804138
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915770 -0.401704
+    outer loop
+      vertex -190.759033 12.614820 -497.317169
+      vertex -90.000000 12.703794 -497.520020
+      vertex -90.000000 12.563623 -497.200470
+    endloop
+  endfacet
+  facet normal 0.000000 -0.837160 -0.546958
+    outer loop
+      vertex -190.571716 12.156562 -496.543152
+      vertex -90.000000 12.327077 -496.804138
+      vertex -90.000000 12.156562 -496.543152
+    endloop
+  endfacet
+  facet normal 0.000000 -0.837171 -0.546942
+    outer loop
+      vertex -190.571716 12.156562 -496.543152
+      vertex -190.716019 12.517895 -497.096222
+      vertex -90.000000 12.327077 -496.804138
+    endloop
+  endfacet
+  facet normal -0.945346 -0.326068 -0.000058
+    outer loop
+      vertex -190.417419 11.709126 -496.057098
+      vertex -190.409958 11.682874 -470.000000
+      vertex -190.555878 12.105928 -470.000000
+    endloop
+  endfacet
+  facet normal -0.945348 -0.326063 -0.000058
+    outer loop
+      vertex -190.571716 12.156562 -496.543152
+      vertex -190.417419 11.709126 -496.057098
+      vertex -190.555878 12.105928 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.958450 -0.285260
+    outer loop
+      vertex -190.833801 12.783269 -497.701202
+      vertex -90.000000 12.827829 -497.850922
+      vertex -90.000000 12.783269 -497.701202
+    endloop
+  endfacet
+  facet normal 0.000000 -0.958451 -0.285258
+    outer loop
+      vertex -190.833801 12.783269 -497.701202
+      vertex -190.878250 12.877775 -498.018738
+      vertex -90.000000 12.827829 -497.850922
+    endloop
+  endfacet
+  facet normal -0.900645 -0.434557 -0.000012
+    outer loop
+      vertex -190.878250 12.877775 -498.018738
+      vertex -190.871490 12.863006 -470.000000
+      vertex -190.902206 12.926666 -470.000000
+    endloop
+  endfacet
+  facet normal -0.900605 -0.434639 -0.000012
+    outer loop
+      vertex -190.902206 12.926666 -470.000000
+      vertex -190.910904 12.945445 -498.341614
+      vertex -190.878250 12.877775 -498.018738
+    endloop
+  endfacet
+  facet normal 0.000000 -0.735719 -0.677287
+    outer loop
+      vertex -190.571716 12.156562 -496.543152
+      vertex -90.000000 12.156562 -496.543152
+      vertex -90.000000 11.920433 -496.286652
+    endloop
+  endfacet
+  facet normal -0.962260 -0.272134 0.000001
+    outer loop
+      vertex -190.276031 11.209196 -495.667999
+      vertex -190.276001 11.209205 -470.000000
+      vertex -190.409958 11.682874 -470.000000
+    endloop
+  endfacet
+  facet normal -0.962258 -0.272141 0.000001
+    outer loop
+      vertex -190.417419 11.709126 -496.057098
+      vertex -190.276031 11.209196 -495.667999
+      vertex -190.409958 11.682874 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.735742 -0.677262
+    outer loop
+      vertex -190.417419 11.709126 -496.057098
+      vertex -90.000000 11.920433 -496.286652
+      vertex -90.000000 11.709126 -496.057098
+    endloop
+  endfacet
+  facet normal 0.000000 -0.735730 -0.677275
+    outer loop
+      vertex -190.417419 11.709126 -496.057098
+      vertex -190.571716 12.156562 -496.543152
+      vertex -90.000000 11.920433 -496.286652
+    endloop
+  endfacet
+  facet normal -0.000072 -0.969398 -0.245496
+    outer loop
+      vertex -190.878250 12.877775 -498.018738
+      vertex -90.000000 12.913538 -498.189362
+      vertex -90.000000 12.827829 -497.850922
+    endloop
+  endfacet
+  facet normal -0.897461 -0.441094 -0.000017
+    outer loop
+      vertex -190.910904 12.945445 -498.341614
+      vertex -190.902206 12.926666 -470.000000
+      vertex -190.920990 12.964884 -470.000000
+    endloop
+  endfacet
+  facet normal -0.897547 -0.440920 -0.000017
+    outer loop
+      vertex -190.920990 12.964884 -470.000000
+      vertex -190.930923 12.986210 -498.668121
+      vertex -190.910904 12.945445 -498.341614
+    endloop
+  endfacet
+  facet normal 0.000000 -0.978739 -0.205112
+    outer loop
+      vertex -190.878250 12.877775 -498.018738
+      vertex -90.000000 12.945445 -498.341614
+      vertex -90.000000 12.913538 -498.189362
+    endloop
+  endfacet
+  facet normal 0.000000 -0.978735 -0.205128
+    outer loop
+      vertex -190.878250 12.877775 -498.018738
+      vertex -190.910904 12.945445 -498.341614
+      vertex -90.000000 12.945445 -498.341614
+    endloop
+  endfacet
+  facet normal 0.000000 -0.614219 -0.789136
+    outer loop
+      vertex -90.000000 11.709126 -496.057098
+      vertex -90.000000 11.472660 -495.873047
+      vertex -190.276031 11.209196 -495.667999
+    endloop
+  endfacet
+  facet normal 0.000000 -0.614201 -0.789149
+    outer loop
+      vertex -90.000000 11.709126 -496.057098
+      vertex -190.276031 11.209196 -495.667999
+      vertex -190.417419 11.709126 -496.057098
+    endloop
+  endfacet
+  facet normal -0.986371 -0.164536 0.000001
+    outer loop
+      vertex -190.276031 11.209196 -495.667999
+      vertex -190.263336 11.133281 -470.000000
+      vertex -190.276001 11.209205 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.992295 -0.123895
+    outer loop
+      vertex -190.910904 12.945445 -498.341614
+      vertex -90.000000 12.964661 -498.495514
+      vertex -90.000000 12.945445 -498.341614
+    endloop
+  endfacet
+  facet normal 0.000000 -0.992296 -0.123889
+    outer loop
+      vertex -190.910904 12.945445 -498.341614
+      vertex -190.930923 12.986210 -498.668121
+      vertex -90.000000 12.964661 -498.495514
+    endloop
+  endfacet
+  facet normal -0.896136 -0.443780 -0.000020
+    outer loop
+      vertex -190.930923 12.986210 -498.668121
+      vertex -190.920990 12.964884 -470.000000
+      vertex -190.927307 12.977640 -470.000000
+    endloop
+  endfacet
+  facet normal -0.896165 -0.443720 -0.000020
+    outer loop
+      vertex -190.927307 12.977640 -470.000000
+      vertex -190.937744 13.000000 -499.000000
+      vertex -190.930923 12.986210 -498.668121
+    endloop
+  endfacet
+  facet normal 0.000000 -0.614203 -0.789148
+    outer loop
+      vertex -90.000000 11.472660 -495.873047
+      vertex -90.000000 11.197916 -495.659210
+      vertex -190.276031 11.209196 -495.667999
+    endloop
+  endfacet
+  facet normal -0.961940 -0.273261 -0.000332
+    outer loop
+      vertex -190.269958 11.187792 -495.651337
+      vertex -190.257584 11.113030 -470.000000
+      vertex -190.263336 11.133281 -470.000000
+    endloop
+  endfacet
+  facet normal -0.961959 -0.273194 -0.000332
+    outer loop
+      vertex -190.276031 11.209196 -495.667999
+      vertex -190.269958 11.187792 -495.651337
+      vertex -190.263336 11.133281 -470.000000
+    endloop
+  endfacet
+  facet normal -0.000072 -0.996585 -0.082575
+    outer loop
+      vertex -190.930923 12.986210 -498.668121
+      vertex -90.000000 12.993500 -498.843567
+      vertex -90.000000 12.964661 -498.495514
+    endloop
+  endfacet
+  facet normal 0.000000 -0.999138 -0.041517
+    outer loop
+      vertex -190.930923 12.986210 -498.668121
+      vertex -90.000000 13.000000 -499.000000
+      vertex -90.000000 12.993500 -498.843567
+    endloop
+  endfacet
+  facet normal 0.000000 -0.999138 -0.041516
+    outer loop
+      vertex -190.930923 12.986210 -498.668121
+      vertex -190.937744 13.000000 -499.000000
+      vertex -90.000000 13.000000 -499.000000
+    endloop
+  endfacet
+  facet normal -0.879513 -0.475874 -0.000050
+    outer loop
+      vertex -190.937744 13.000000 -499.000000
+      vertex -190.927307 12.977640 -470.000000
+      vertex -190.968414 13.053615 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.613899 -0.789384
+    outer loop
+      vertex -90.000000 11.197916 -495.659210
+      vertex -90.000000 11.187792 -495.651337
+      vertex -190.269958 11.187792 -495.651337
+    endloop
+  endfacet
+  facet normal 0.000000 -0.614281 -0.789087
+    outer loop
+      vertex -90.000000 11.197916 -495.659210
+      vertex -190.269958 11.187792 -495.651337
+      vertex -190.276031 11.209196 -495.667999
+    endloop
+  endfacet
+  facet normal -0.977484 -0.211011 -0.000143
+    outer loop
+      vertex -190.144592 10.606782 -495.336914
+      vertex -190.138763 10.562610 -470.000000
+      vertex -190.257584 11.113030 -470.000000
+    endloop
+  endfacet
+  facet normal -0.977488 -0.210993 -0.000143
+    outer loop
+      vertex -190.269958 11.187792 -495.651337
+      vertex -190.144592 10.606782 -495.336914
+      vertex -190.257584 11.113030 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -190.937744 13.000000 -499.000000
+      vertex -90.000000 13.000000 -499.942719
+      vertex -90.000000 13.000000 -499.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -190.937744 13.000000 -499.000000
+      vertex -190.937744 13.000000 -501.000000
+      vertex -90.000000 13.000000 -499.942719
+    endloop
+  endfacet
+  facet normal -0.868067 -0.496447 0.000000
+    outer loop
+      vertex -190.937744 13.000000 -499.000000
+      vertex -190.968414 13.053615 -470.000000
+      vertex -190.970398 13.057083 -470.000000
+    endloop
+  endfacet
+  facet normal -0.868015 -0.496539 0.000000
+    outer loop
+      vertex -190.970398 13.057083 -470.000000
+      vertex -190.937744 13.000000 -501.000000
+      vertex -190.937744 13.000000 -499.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.475973 -0.879460
+    outer loop
+      vertex -90.000000 11.187792 -495.651337
+      vertex -90.000000 10.881607 -495.485626
+      vertex -190.269958 11.187792 -495.651337
+    endloop
+  endfacet
+  facet normal -0.989593 -0.143898 -0.000024
+    outer loop
+      vertex -190.053726 9.981941 -495.122406
+      vertex -190.052567 9.969829 -470.000000
+      vertex -190.138763 10.562610 -470.000000
+    endloop
+  endfacet
+  facet normal -0.989590 -0.143917 -0.000023
+    outer loop
+      vertex -190.144592 10.606782 -495.336914
+      vertex -190.053726 9.981941 -495.122406
+      vertex -190.138763 10.562610 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.475908 -0.879495
+    outer loop
+      vertex -90.000000 10.881607 -495.485626
+      vertex -90.000000 10.606782 -495.336914
+      vertex -190.144592 10.606782 -495.336914
+    endloop
+  endfacet
+  facet normal 0.000000 -0.475942 -0.879476
+    outer loop
+      vertex -90.000000 10.881607 -495.485626
+      vertex -190.144592 10.606782 -495.336914
+      vertex -190.269958 11.187792 -495.651337
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -190.937744 13.000000 -501.000000
+      vertex -90.000000 13.000000 -501.000000
+      vertex -90.000000 13.000000 -499.942719
+    endloop
+  endfacet
+  facet normal -0.868001 -0.496562 0.000000
+    outer loop
+      vertex -190.937744 13.000000 -501.000000
+      vertex -190.970398 13.057083 -470.000000
+      vertex -191.465500 13.922533 -470.000000
+    endloop
+  endfacet
+  facet normal -0.868002 -0.496561 0.000000
+    outer loop
+      vertex -191.465500 13.922533 -530.000000
+      vertex -190.968414 13.053615 -530.000000
+      vertex -190.937744 13.000000 -501.000000
+    endloop
+  endfacet
+  facet normal -0.868002 -0.496560 0.000000
+    outer loop
+      vertex -191.465500 13.922533 -470.000000
+      vertex -191.465500 13.922533 -530.000000
+      vertex -190.937744 13.000000 -501.000000
+    endloop
+  endfacet
+  facet normal -0.995390 -0.095910 0.000000
+    outer loop
+      vertex -190.030731 9.743214 -495.069641
+      vertex -190.030731 9.743214 -470.000000
+      vertex -190.052567 9.969829 -470.000000
+    endloop
+  endfacet
+  facet normal -0.995393 -0.095879 0.000000
+    outer loop
+      vertex -190.053726 9.981941 -495.122406
+      vertex -190.030731 9.743214 -495.069641
+      vertex -190.052567 9.969829 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.324699 -0.945817
+    outer loop
+      vertex -90.000000 10.277694 -495.223938
+      vertex -90.000000 9.981941 -495.122406
+      vertex -190.053726 9.981941 -495.122406
+    endloop
+  endfacet
+  facet normal 0.000000 -0.324699 -0.945817
+    outer loop
+      vertex -90.000000 10.277694 -495.223938
+      vertex -190.053726 9.981941 -495.122406
+      vertex -190.144592 10.606782 -495.336914
+    endloop
+  endfacet
+  facet normal 0.000000 -0.324699 -0.945817
+    outer loop
+      vertex -90.000000 10.606782 -495.336914
+      vertex -90.000000 10.277694 -495.223938
+      vertex -190.144592 10.606782 -495.336914
+    endloop
+  endfacet
+  facet normal 0.000000 -0.999143 0.041403
+    outer loop
+      vertex -190.930969 12.986291 -501.330841
+      vertex -90.000000 12.993538 -501.155945
+      vertex -90.000000 13.000000 -501.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.999143 0.041401
+    outer loop
+      vertex -190.937744 13.000000 -501.000000
+      vertex -190.930969 12.986291 -501.330841
+      vertex -90.000000 13.000000 -501.000000
+    endloop
+  endfacet
+  facet normal -0.895361 -0.445340 0.000124
+    outer loop
+      vertex -190.968414 13.053615 -530.000000
+      vertex -190.961700 13.040116 -530.000000
+      vertex -190.930969 12.986291 -501.330841
+    endloop
+  endfacet
+  facet normal -0.895315 -0.445434 0.000123
+    outer loop
+      vertex -190.937744 13.000000 -501.000000
+      vertex -190.968414 13.053615 -530.000000
+      vertex -190.930969 12.986291 -501.330841
+    endloop
+  endfacet
+  facet normal -0.789137 -0.614218 0.000000
+    outer loop
+      vertex -191.465500 13.922533 -530.000000
+      vertex -191.465500 13.922533 -470.000000
+      vertex -191.894608 14.473844 -470.000000
+    endloop
+  endfacet
+  facet normal -0.789137 -0.614218 0.000000
+    outer loop
+      vertex -191.949387 14.544223 -530.000000
+      vertex -191.465500 13.922533 -530.000000
+      vertex -191.894608 14.473844 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.215817 -0.976434
+    outer loop
+      vertex -90.000000 9.981941 -495.122406
+      vertex -190.030731 9.743214 -495.069641
+      vertex -190.053726 9.981941 -495.122406
+    endloop
+  endfacet
+  facet normal 0.000000 -0.215851 -0.976426
+    outer loop
+      vertex -90.000000 9.981941 -495.122406
+      vertex -90.000000 9.868878 -495.097412
+      vertex -190.030731 9.743214 -495.069641
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -190.030731 9.743214 -495.069641
+      vertex -190.030731 9.667943 -470.000000
+      vertex -190.030731 9.743214 -470.000000
+    endloop
+  endfacet
+  facet normal -0.000072 -0.996585 0.082575
+    outer loop
+      vertex -190.930969 12.986291 -501.330841
+      vertex -90.000000 12.964699 -501.503998
+      vertex -90.000000 12.993538 -501.155945
+    endloop
+  endfacet
+  facet normal -0.897115 -0.441797 0.000132
+    outer loop
+      vertex -190.961700 13.040116 -530.000000
+      vertex -190.942444 13.001014 -530.000000
+      vertex -190.910904 12.945445 -501.658386
+    endloop
+  endfacet
+  facet normal -0.897128 -0.441770 0.000132
+    outer loop
+      vertex -190.930969 12.986291 -501.330841
+      vertex -190.961700 13.040116 -530.000000
+      vertex -190.910904 12.945445 -501.658386
+    endloop
+  endfacet
+  facet normal -0.789137 -0.614218 0.000000
+    outer loop
+      vertex -191.949387 14.544223 -530.000000
+      vertex -191.894608 14.473844 -470.000000
+      vertex -192.378494 15.095533 -470.000000
+    endloop
+  endfacet
+  facet normal -0.789137 -0.614218 0.000000
+    outer loop
+      vertex -192.378494 15.095533 -530.000000
+      vertex -191.949387 14.544223 -530.000000
+      vertex -192.378494 15.095533 -470.000000
+    endloop
+  endfacet
+  facet normal -0.000106 -0.134402 -0.990927
+    outer loop
+      vertex -90.000000 9.868878 -495.097412
+      vertex -190.006058 9.330317 -495.013641
+      vertex -190.030731 9.743214 -495.069641
+    endloop
+  endfacet
+  facet normal -0.000107 -0.134359 -0.990933
+    outer loop
+      vertex -90.000000 9.868878 -495.097412
+      vertex -90.000000 9.673287 -495.070892
+      vertex -190.006058 9.330317 -495.013641
+    endloop
+  endfacet
+  facet normal -0.998219 -0.059664 -0.000179
+    outer loop
+      vertex -190.006058 9.330317 -495.013641
+      vertex -190.007309 9.276071 -470.000000
+      vertex -190.030731 9.667943 -470.000000
+    endloop
+  endfacet
+  facet normal -0.998218 -0.059675 -0.000179
+    outer loop
+      vertex -190.030731 9.743214 -495.069641
+      vertex -190.006058 9.330317 -495.013641
+      vertex -190.030731 9.667943 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.992313 0.123751
+    outer loop
+      vertex -190.910904 12.945445 -501.658386
+      vertex -90.000000 12.945445 -501.658386
+      vertex -90.000000 12.964699 -501.503998
+    endloop
+  endfacet
+  facet normal 0.000000 -0.992314 0.123745
+    outer loop
+      vertex -190.930969 12.986291 -501.330841
+      vertex -190.910904 12.945445 -501.658386
+      vertex -90.000000 12.964699 -501.503998
+    endloop
+  endfacet
+  facet normal -0.900340 -0.435187 0.000149
+    outer loop
+      vertex -190.942444 13.001014 -530.000000
+      vertex -190.910950 12.935857 -530.000000
+      vertex -190.877899 12.877043 -501.984131
+    endloop
+  endfacet
+  facet normal -0.900362 -0.435142 0.000149
+    outer loop
+      vertex -190.910904 12.945445 -501.658386
+      vertex -190.942444 13.001014 -530.000000
+      vertex -190.877899 12.877043 -501.984131
+    endloop
+  endfacet
+  facet normal -0.677284 -0.735722 0.000000
+    outer loop
+      vertex -192.892487 15.568697 -470.000000
+      vertex -192.958099 15.629101 -530.000000
+      vertex -192.378494 15.095533 -530.000000
+    endloop
+  endfacet
+  facet normal -0.677282 -0.735724 0.000000
+    outer loop
+      vertex -192.378494 15.095533 -470.000000
+      vertex -192.892487 15.568697 -470.000000
+      vertex -192.378494 15.095533 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.164649 -0.986352
+    outer loop
+      vertex -90.000000 9.673287 -495.070892
+      vertex -90.000000 9.330317 -495.013641
+      vertex -190.006058 9.330317 -495.013641
+    endloop
+  endfacet
+  facet normal -0.999830 -0.018425 -0.000090
+    outer loop
+      vertex -190.000000 9.001518 -495.000000
+      vertex -190.001556 8.963905 -470.000000
+      vertex -190.007309 9.276071 -470.000000
+    endloop
+  endfacet
+  facet normal -0.999830 -0.018424 -0.000090
+    outer loop
+      vertex -190.006058 9.330317 -495.013641
+      vertex -190.000000 9.001518 -495.000000
+      vertex -190.007309 9.276071 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.978657 0.205501
+    outer loop
+      vertex -190.877899 12.877043 -501.984131
+      vertex -90.000000 12.913193 -501.811981
+      vertex -90.000000 12.945445 -501.658386
+    endloop
+  endfacet
+  facet normal 0.000000 -0.978656 0.205505
+    outer loop
+      vertex -190.910904 12.945445 -501.658386
+      vertex -190.877899 12.877043 -501.984131
+      vertex -90.000000 12.945445 -501.658386
+    endloop
+  endfacet
+  facet normal -0.904717 -0.426013 0.000173
+    outer loop
+      vertex -190.910950 12.935857 -530.000000
+      vertex -190.868958 12.846679 -530.000000
+      vertex -190.833801 12.783269 -502.298767
+    endloop
+  endfacet
+  facet normal -0.904710 -0.426027 0.000173
+    outer loop
+      vertex -190.877899 12.877043 -501.984131
+      vertex -190.910950 12.935857 -530.000000
+      vertex -190.833801 12.783269 -502.298767
+    endloop
+  endfacet
+  facet normal -0.677282 -0.735724 0.000000
+    outer loop
+      vertex -193.472092 16.102264 -470.000000
+      vertex -193.472092 16.102264 -530.000000
+      vertex -192.958099 15.629101 -530.000000
+    endloop
+  endfacet
+  facet normal -0.677284 -0.735722 0.000000
+    outer loop
+      vertex -192.892487 15.568697 -470.000000
+      vertex -193.472092 16.102264 -470.000000
+      vertex -192.958099 15.629101 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.041453 -0.999140
+    outer loop
+      vertex -90.000000 9.330317 -495.013641
+      vertex -190.000000 9.001518 -495.000000
+      vertex -190.006058 9.330317 -495.013641
+    endloop
+  endfacet
+  facet normal 0.000000 -0.041504 -0.999138
+    outer loop
+      vertex -90.000000 9.330317 -495.013641
+      vertex -90.000000 9.174570 -495.007172
+      vertex -190.000000 9.001518 -495.000000
+    endloop
+  endfacet
+  facet normal -0.999833 0.018254 -0.000035
+    outer loop
+      vertex -190.000000 9.001518 -495.000000
+      vertex -190.007309 8.648817 -470.000000
+      vertex -190.001556 8.963905 -470.000000
+    endloop
+  endfacet
+  facet normal -0.999833 0.018254 -0.000035
+    outer loop
+      vertex -190.000000 9.001518 -495.000000
+      vertex -190.006058 8.669682 -495.013641
+      vertex -190.007309 8.648817 -470.000000
+    endloop
+  endfacet
+  facet normal -0.000072 -0.969398 0.245496
+    outer loop
+      vertex -190.877899 12.877043 -501.984131
+      vertex -90.000000 12.827484 -502.150421
+      vertex -90.000000 12.913193 -501.811981
+    endloop
+  endfacet
+  facet normal 0.000000 -0.958338 0.285637
+    outer loop
+      vertex -190.833801 12.783269 -502.298767
+      vertex -90.000000 12.783269 -502.298767
+      vertex -90.000000 12.827484 -502.150421
+    endloop
+  endfacet
+  facet normal 0.000000 -0.958342 0.285623
+    outer loop
+      vertex -190.877899 12.877043 -501.984131
+      vertex -190.833801 12.783269 -502.298767
+      vertex -90.000000 12.827484 -502.150421
+    endloop
+  endfacet
+  facet normal -0.913816 -0.406128 0.000230
+    outer loop
+      vertex -190.868958 12.846679 -530.000000
+      vertex -190.797836 12.686651 -530.000000
+      vertex -190.759033 12.614820 -502.682800
+    endloop
+  endfacet
+  facet normal -0.913815 -0.406131 0.000230
+    outer loop
+      vertex -190.833801 12.783269 -502.298767
+      vertex -190.868958 12.846679 -530.000000
+      vertex -190.759033 12.614820 -502.682800
+    endloop
+  endfacet
+  facet normal -0.546945 -0.837169 0.000000
+    outer loop
+      vertex -194.056946 16.484375 -470.000000
+      vertex -194.131622 16.533154 -530.000000
+      vertex -193.472092 16.102264 -530.000000
+    endloop
+  endfacet
+  facet normal -0.546955 -0.837162 0.000000
+    outer loop
+      vertex -193.472092 16.102264 -470.000000
+      vertex -194.056946 16.484375 -470.000000
+      vertex -193.472092 16.102264 -530.000000
+    endloop
+  endfacet
+  facet normal -0.000143 0.041077 -0.999156
+    outer loop
+      vertex -90.000000 9.017395 -495.013641
+      vertex -190.006058 8.669682 -495.013641
+      vertex -190.000000 9.001518 -495.000000
+    endloop
+  endfacet
+  facet normal -0.000143 0.041128 -0.999154
+    outer loop
+      vertex -90.000000 9.174570 -495.007172
+      vertex -90.000000 9.017395 -495.013641
+      vertex -190.000000 9.001518 -495.000000
+    endloop
+  endfacet
+  facet normal -0.998220 0.059639 0.000000
+    outer loop
+      vertex -190.006058 8.669682 -495.013641
+      vertex -190.030731 8.256785 -470.000000
+      vertex -190.007309 8.648817 -470.000000
+    endloop
+  endfacet
+  facet normal -0.998219 0.059651 0.000000
+    outer loop
+      vertex -190.006058 8.669682 -495.013641
+      vertex -190.030731 8.256785 -495.069641
+      vertex -190.030731 8.256785 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915789 0.401660
+    outer loop
+      vertex -190.833801 12.783269 -502.298767
+      vertex -90.000000 12.643049 -502.618469
+      vertex -90.000000 12.783269 -502.298767
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915764 0.401717
+    outer loop
+      vertex -190.759033 12.614820 -502.682800
+      vertex -90.000000 12.563623 -502.799530
+      vertex -90.000000 12.643049 -502.618469
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915776 0.401689
+    outer loop
+      vertex -190.833801 12.783269 -502.298767
+      vertex -190.759033 12.614820 -502.682800
+      vertex -90.000000 12.643049 -502.618469
+    endloop
+  endfacet
+  facet normal -0.879455 -0.475982 -0.000002
+    outer loop
+      vertex -190.797836 12.686651 -530.000000
+      vertex -190.758972 12.614843 -530.000000
+      vertex -190.759033 12.614820 -502.682800
+    endloop
+  endfacet
+  facet normal -0.546955 -0.837162 0.000000
+    outer loop
+      vertex -194.716476 16.915264 -470.000000
+      vertex -194.716476 16.915264 -530.000000
+      vertex -194.131622 16.533154 -530.000000
+    endloop
+  endfacet
+  facet normal -0.546945 -0.837169 0.000000
+    outer loop
+      vertex -194.056946 16.484375 -470.000000
+      vertex -194.716476 16.915264 -470.000000
+      vertex -194.131622 16.533154 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -190.006058 8.669682 -495.013641
+      vertex -90.000000 9.017395 -495.013641
+      vertex -90.000000 8.669682 -495.013641
+    endloop
+  endfacet
+  facet normal 0.000000 0.134396 -0.990928
+    outer loop
+      vertex -90.000000 8.474131 -495.040161
+      vertex -190.030731 8.256785 -495.069641
+      vertex -190.006058 8.669682 -495.013641
+    endloop
+  endfacet
+  facet normal 0.000000 0.134386 -0.990929
+    outer loop
+      vertex -90.000000 8.669682 -495.013641
+      vertex -90.000000 8.474131 -495.040161
+      vertex -190.006058 8.669682 -495.013641
+    endloop
+  endfacet
+  facet normal -0.986359 0.164606 0.000000
+    outer loop
+      vertex -190.030731 8.256785 -495.069641
+      vertex -190.043121 8.182541 -470.000000
+      vertex -190.030731 8.256785 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915813 0.401606
+    outer loop
+      vertex -190.716019 12.517895 -502.903809
+      vertex -90.000000 12.517895 -502.903809
+      vertex -90.000000 12.563623 -502.799530
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915801 0.401631
+    outer loop
+      vertex -190.759033 12.614820 -502.682800
+      vertex -190.716019 12.517895 -502.903809
+      vertex -90.000000 12.563623 -502.799530
+    endloop
+  endfacet
+  facet normal -0.914051 -0.405598 -0.000002
+    outer loop
+      vertex -190.758972 12.614843 -530.000000
+      vertex -190.718307 12.523202 -530.000000
+      vertex -190.716019 12.517895 -502.903809
+    endloop
+  endfacet
+  facet normal -0.914034 -0.405637 -0.000002
+    outer loop
+      vertex -190.759033 12.614820 -502.682800
+      vertex -190.758972 12.614843 -530.000000
+      vertex -190.716019 12.517895 -502.903809
+    endloop
+  endfacet
+  facet normal -0.401696 -0.915773 0.000000
+    outer loop
+      vertex -195.356247 17.195898 -470.000000
+      vertex -195.437927 17.231722 -530.000000
+      vertex -194.716476 16.915264 -530.000000
+    endloop
+  endfacet
+  facet normal -0.401701 -0.915771 0.000000
+    outer loop
+      vertex -194.716476 16.915264 -470.000000
+      vertex -195.356247 17.195898 -470.000000
+      vertex -194.716476 16.915264 -530.000000
+    endloop
+  endfacet
+  facet normal -0.000181 0.215833 -0.976430
+    outer loop
+      vertex -90.000000 8.361105 -495.065155
+      vertex -190.053726 8.018058 -495.122406
+      vertex -190.030731 8.256785 -495.069641
+    endloop
+  endfacet
+  facet normal -0.000181 0.215918 -0.976411
+    outer loop
+      vertex -90.000000 8.474131 -495.040161
+      vertex -90.000000 8.361105 -495.065155
+      vertex -190.030731 8.256785 -495.069641
+    endloop
+  endfacet
+  facet normal -0.995390 0.095915 -0.000208
+    outer loop
+      vertex -190.030731 8.256785 -495.069641
+      vertex -190.064972 7.955779 -470.000000
+      vertex -190.043121 8.182541 -470.000000
+    endloop
+  endfacet
+  facet normal -0.995389 0.095925 -0.000208
+    outer loop
+      vertex -190.030731 8.256785 -495.069641
+      vertex -190.053726 8.018058 -495.122406
+      vertex -190.064972 7.955779 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.837147 0.546978
+    outer loop
+      vertex -190.571716 12.156562 -503.456818
+      vertex -90.000000 12.347251 -503.164978
+      vertex -90.000000 12.517895 -502.903809
+    endloop
+  endfacet
+  facet normal 0.000000 -0.837143 0.546984
+    outer loop
+      vertex -190.716019 12.517895 -502.903809
+      vertex -190.571716 12.156562 -503.456818
+      vertex -90.000000 12.517895 -502.903809
+    endloop
+  endfacet
+  facet normal -0.928683 -0.370874 0.000006
+    outer loop
+      vertex -190.718307 12.523202 -530.000000
+      vertex -190.581680 12.181082 -530.000000
+      vertex -190.571716 12.156562 -503.456818
+    endloop
+  endfacet
+  facet normal -0.928678 -0.370887 0.000006
+    outer loop
+      vertex -190.716019 12.517895 -502.903809
+      vertex -190.718307 12.523202 -530.000000
+      vertex -190.571716 12.156562 -503.456818
+    endloop
+  endfacet
+  facet normal -0.401701 -0.915771 0.000000
+    outer loop
+      vertex -196.077698 17.512356 -470.000000
+      vertex -196.077698 17.512356 -530.000000
+      vertex -195.437927 17.231722 -530.000000
+    endloop
+  endfacet
+  facet normal -0.401696 -0.915773 0.000000
+    outer loop
+      vertex -195.356247 17.195898 -470.000000
+      vertex -196.077698 17.512356 -470.000000
+      vertex -195.437927 17.231722 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.164613 -0.986358
+    outer loop
+      vertex -90.000000 8.361105 -495.065155
+      vertex -90.000000 8.018058 -495.122406
+      vertex -190.053726 8.018058 -495.122406
+    endloop
+  endfacet
+  facet normal -0.989587 0.143938 -0.000087
+    outer loop
+      vertex -190.053726 8.018058 -495.122406
+      vertex -190.144592 7.393218 -495.336914
+      vertex -190.151291 7.362395 -470.000000
+    endloop
+  endfacet
+  facet normal -0.989584 0.143954 -0.000086
+    outer loop
+      vertex -190.053726 8.018058 -495.122406
+      vertex -190.151291 7.362395 -470.000000
+      vertex -190.064972 7.955779 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.837139 0.546990
+    outer loop
+      vertex -190.571716 12.156562 -503.456818
+      vertex -90.000000 12.156562 -503.456818
+      vertex -90.000000 12.347251 -503.164978
+    endloop
+  endfacet
+  facet normal -0.945350 -0.326059 0.000054
+    outer loop
+      vertex -190.581680 12.181082 -530.000000
+      vertex -190.417419 11.709126 -503.942902
+      vertex -190.571716 12.156562 -503.456818
+    endloop
+  endfacet
+  facet normal -0.945351 -0.326054 0.000054
+    outer loop
+      vertex -190.581680 12.181082 -530.000000
+      vertex -190.435318 11.756723 -530.000000
+      vertex -190.417419 11.709126 -503.942902
+    endloop
+  endfacet
+  facet normal -0.245483 -0.969401 0.000000
+    outer loop
+      vertex -196.754944 17.683857 -470.000000
+      vertex -196.841400 17.705750 -530.000000
+      vertex -196.077698 17.512356 -530.000000
+    endloop
+  endfacet
+  facet normal -0.245484 -0.969401 0.000000
+    outer loop
+      vertex -196.077698 17.512356 -470.000000
+      vertex -196.754944 17.683857 -470.000000
+      vertex -196.077698 17.512356 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.324667 -0.945828
+    outer loop
+      vertex -90.000000 8.018058 -495.122406
+      vertex -90.000000 7.689111 -495.235321
+      vertex -190.053726 8.018058 -495.122406
+    endloop
+  endfacet
+  facet normal -0.977242 0.212130 0.000000
+    outer loop
+      vertex -190.144592 7.393218 -495.336914
+      vertex -190.270752 6.812060 -470.000000
+      vertex -190.151291 7.362395 -470.000000
+    endloop
+  endfacet
+  facet normal -0.977241 0.212134 0.000000
+    outer loop
+      vertex -190.144592 7.393218 -495.336914
+      vertex -190.270493 6.813230 -495.653198
+      vertex -190.270752 6.812060 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.324700 -0.945817
+    outer loop
+      vertex -90.000000 7.393218 -495.336914
+      vertex -190.144592 7.393218 -495.336914
+      vertex -190.053726 8.018058 -495.122406
+    endloop
+  endfacet
+  facet normal 0.000000 0.324736 -0.945805
+    outer loop
+      vertex -90.000000 7.689111 -495.235321
+      vertex -90.000000 7.393218 -495.336914
+      vertex -190.053726 8.018058 -495.122406
+    endloop
+  endfacet
+  facet normal 0.000000 -0.735737 0.677268
+    outer loop
+      vertex -190.417419 11.709126 -503.942902
+      vertex -90.000000 11.945083 -503.686554
+      vertex -90.000000 12.156562 -503.456818
+    endloop
+  endfacet
+  facet normal 0.000000 -0.735751 0.677253
+    outer loop
+      vertex -190.571716 12.156562 -503.456818
+      vertex -190.417419 11.709126 -503.942902
+      vertex -90.000000 12.156562 -503.456818
+    endloop
+  endfacet
+  facet normal -0.961883 -0.273460 0.000161
+    outer loop
+      vertex -190.435318 11.756723 -530.000000
+      vertex -190.275406 11.209369 -504.334442
+      vertex -190.417419 11.709126 -503.942902
+    endloop
+  endfacet
+  facet normal -0.961882 -0.273466 0.000161
+    outer loop
+      vertex -190.435318 11.756723 -530.000000
+      vertex -190.300400 11.282166 -530.000000
+      vertex -190.275406 11.209369 -504.334442
+    endloop
+  endfacet
+  facet normal -0.245484 -0.969401 0.000000
+    outer loop
+      vertex -197.518646 17.877251 -470.000000
+      vertex -197.518646 17.877251 -530.000000
+      vertex -196.841400 17.705750 -530.000000
+    endloop
+  endfacet
+  facet normal -0.245483 -0.969401 0.000000
+    outer loop
+      vertex -196.754944 17.683857 -470.000000
+      vertex -197.518646 17.877251 -470.000000
+      vertex -196.841400 17.705750 -530.000000
+    endloop
+  endfacet
+  facet normal -0.977221 0.212222 0.000000
+    outer loop
+      vertex -190.270493 6.813230 -495.653198
+      vertex -190.275406 6.790630 -470.000000
+      vertex -190.270752 6.812060 -470.000000
+    endloop
+  endfacet
+  facet normal -0.977173 0.212444 0.000000
+    outer loop
+      vertex -190.270493 6.813230 -495.653198
+      vertex -190.275406 6.790630 -495.665527
+      vertex -190.275406 6.790630 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000011 0.478766 -0.877943
+    outer loop
+      vertex -90.000000 6.812691 -495.652222
+      vertex -190.270493 6.813230 -495.653198
+      vertex -190.144592 7.393218 -495.336914
+    endloop
+  endfacet
+  facet normal 0.000011 0.478802 -0.877923
+    outer loop
+      vertex -90.000000 7.087213 -495.502502
+      vertex -90.000000 6.812691 -495.652222
+      vertex -190.144592 7.393218 -495.336914
+    endloop
+  endfacet
+  facet normal 0.000000 0.475919 -0.879489
+    outer loop
+      vertex -90.000000 7.393218 -495.336914
+      vertex -90.000000 7.087213 -495.502502
+      vertex -190.144592 7.393218 -495.336914
+    endloop
+  endfacet
+  facet normal 0.000000 -0.735763 0.677239
+    outer loop
+      vertex -190.417419 11.709126 -503.942902
+      vertex -90.000000 11.709126 -503.942902
+      vertex -90.000000 11.945083 -503.686554
+    endloop
+  endfacet
+  facet normal -0.000011 -0.616727 0.787177
+    outer loop
+      vertex -90.000000 11.434198 -504.156891
+      vertex -190.417419 11.709126 -503.942902
+      vertex -190.275406 11.209369 -504.334442
+    endloop
+  endfacet
+  facet normal -0.000011 -0.616734 0.787171
+    outer loop
+      vertex -90.000000 11.197998 -504.341949
+      vertex -90.000000 11.434198 -504.156891
+      vertex -190.275406 11.209369 -504.334442
+    endloop
+  endfacet
+  facet normal -0.945806 -0.324731 0.000000
+    outer loop
+      vertex -190.300400 11.282166 -530.000000
+      vertex -190.275406 11.209369 -530.000000
+      vertex -190.275406 11.209369 -504.334442
+    endloop
+  endfacet
+  facet normal -0.082581 -0.996584 0.000000
+    outer loop
+      vertex -198.214890 17.934942 -470.000000
+      vertex -198.303757 17.942308 -530.000000
+      vertex -197.518646 17.877251 -530.000000
+    endloop
+  endfacet
+  facet normal -0.082578 -0.996585 0.000000
+    outer loop
+      vertex -197.518646 17.877251 -470.000000
+      vertex -198.214890 17.934942 -470.000000
+      vertex -197.518646 17.877251 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000011 0.478910 -0.877864
+    outer loop
+      vertex -90.000000 6.802001 -495.658051
+      vertex -190.275406 6.790630 -495.665527
+      vertex -190.270493 6.813230 -495.653198
+    endloop
+  endfacet
+  facet normal 0.000011 0.478731 -0.877961
+    outer loop
+      vertex -90.000000 6.812691 -495.652222
+      vertex -90.000000 6.802001 -495.658051
+      vertex -190.270493 6.813230 -495.653198
+    endloop
+  endfacet
+  facet normal -0.945806 0.324731 0.000000
+    outer loop
+      vertex -190.275406 6.790630 -495.665527
+      vertex -190.300400 6.717834 -470.000000
+      vertex -190.275406 6.790630 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.614221 0.789134
+    outer loop
+      vertex -90.000000 11.434198 -504.156891
+      vertex -90.000000 11.709126 -503.942902
+      vertex -190.417419 11.709126 -503.942902
+    endloop
+  endfacet
+  facet normal 0.000011 -0.479830 0.877361
+    outer loop
+      vertex -90.000000 11.197998 -504.341949
+      vertex -190.275406 11.209369 -504.334442
+      vertex -190.270493 11.186769 -504.346802
+    endloop
+  endfacet
+  facet normal 0.000011 -0.480660 0.876907
+    outer loop
+      vertex -90.000000 11.187308 -504.347809
+      vertex -90.000000 11.197998 -504.341949
+      vertex -190.270493 11.186769 -504.346802
+    endloop
+  endfacet
+  facet normal -0.977172 -0.212448 0.000000
+    outer loop
+      vertex -190.275406 11.209369 -530.000000
+      vertex -190.270493 11.186769 -504.346802
+      vertex -190.275406 11.209369 -504.334442
+    endloop
+  endfacet
+  facet normal -0.977221 -0.212222 0.000000
+    outer loop
+      vertex -190.275406 11.209369 -530.000000
+      vertex -190.270752 11.187939 -530.000000
+      vertex -190.270493 11.186769 -504.346802
+    endloop
+  endfacet
+  facet normal -0.082578 -0.996585 0.000000
+    outer loop
+      vertex -199.000000 18.000000 -470.000000
+      vertex -199.000000 18.000000 -530.000000
+      vertex -198.303757 17.942308 -530.000000
+    endloop
+  endfacet
+  facet normal -0.082581 -0.996584 0.000000
+    outer loop
+      vertex -198.214890 17.934942 -470.000000
+      vertex -199.000000 18.000000 -470.000000
+      vertex -198.303757 17.942308 -530.000000
+    endloop
+  endfacet
+  facet normal -0.000011 0.616756 -0.787154
+    outer loop
+      vertex -90.000000 6.565801 -495.843109
+      vertex -190.417419 6.290874 -496.057098
+      vertex -190.275406 6.790630 -495.665527
+    endloop
+  endfacet
+  facet normal -0.000011 0.616734 -0.787171
+    outer loop
+      vertex -90.000000 6.802001 -495.658051
+      vertex -90.000000 6.565801 -495.843109
+      vertex -190.275406 6.790630 -495.665527
+    endloop
+  endfacet
+  facet normal -0.961882 0.273466 -0.000161
+    outer loop
+      vertex -190.275406 6.790630 -495.665527
+      vertex -190.435318 6.243276 -470.000000
+      vertex -190.300400 6.717834 -470.000000
+    endloop
+  endfacet
+  facet normal -0.961883 0.273460 -0.000161
+    outer loop
+      vertex -190.275406 6.790630 -495.665527
+      vertex -190.417419 6.290874 -496.057098
+      vertex -190.435318 6.243276 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000011 -0.478801 0.877923
+    outer loop
+      vertex -90.000000 11.187308 -504.347809
+      vertex -190.270493 11.186769 -504.346802
+      vertex -190.144592 10.606782 -504.663116
+    endloop
+  endfacet
+  facet normal 0.000011 -0.478802 0.877923
+    outer loop
+      vertex -90.000000 10.912786 -504.497528
+      vertex -90.000000 11.187308 -504.347809
+      vertex -190.144592 10.606782 -504.663116
+    endloop
+  endfacet
+  facet normal -0.977241 -0.212134 0.000000
+    outer loop
+      vertex -190.270752 11.187939 -530.000000
+      vertex -190.144592 10.606782 -504.663116
+      vertex -190.270493 11.186769 -504.346802
+    endloop
+  endfacet
+  facet normal -0.977241 -0.212130 0.000000
+    outer loop
+      vertex -190.270752 11.187939 -530.000000
+      vertex -190.151291 10.637605 -530.000000
+      vertex -190.144592 10.606782 -504.663116
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -199.000000 18.000000 -470.000000
+      vertex -199.940002 18.000000 -530.000000
+      vertex -199.000000 18.000000 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -200.059998 18.000000 -470.000000
+      vertex -199.940002 18.000000 -530.000000
+      vertex -199.000000 18.000000 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.614221 -0.789134
+    outer loop
+      vertex -90.000000 6.565801 -495.843109
+      vertex -90.000000 6.290874 -496.057098
+      vertex -190.417419 6.290874 -496.057098
+    endloop
+  endfacet
+  facet normal -0.945351 0.326054 -0.000054
+    outer loop
+      vertex -190.417419 6.290874 -496.057098
+      vertex -190.581680 5.818917 -470.000000
+      vertex -190.435318 6.243276 -470.000000
+    endloop
+  endfacet
+  facet normal -0.945349 0.326059 -0.000054
+    outer loop
+      vertex -190.571716 5.843437 -496.543152
+      vertex -190.581680 5.818917 -470.000000
+      vertex -190.417419 6.290874 -496.057098
+    endloop
+  endfacet
+  facet normal 0.000000 -0.475920 0.879489
+    outer loop
+      vertex -90.000000 10.606782 -504.663116
+      vertex -90.000000 10.912786 -504.497528
+      vertex -190.144592 10.606782 -504.663116
+    endloop
+  endfacet
+  facet normal -0.989587 -0.143938 0.000087
+    outer loop
+      vertex -190.151291 10.637605 -530.000000
+      vertex -190.053726 9.981941 -504.877625
+      vertex -190.144592 10.606782 -504.663116
+    endloop
+  endfacet
+  facet normal -0.989584 -0.143954 0.000086
+    outer loop
+      vertex -190.151291 10.637605 -530.000000
+      vertex -190.064972 10.044221 -530.000000
+      vertex -190.053726 9.981941 -504.877625
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -200.059998 18.000000 -470.000000
+      vertex -201.000000 18.000000 -530.000000
+      vertex -199.940002 18.000000 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -201.000000 18.000000 -470.000000
+      vertex -201.000000 18.000000 -530.000000
+      vertex -200.059998 18.000000 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.735722 -0.677283
+    outer loop
+      vertex -190.417419 6.290874 -496.057098
+      vertex -90.000000 6.290874 -496.057098
+      vertex -90.000000 6.054916 -496.313416
+    endloop
+  endfacet
+  facet normal -0.928683 0.370874 -0.000006
+    outer loop
+      vertex -190.571716 5.843437 -496.543152
+      vertex -190.718307 5.476798 -470.000000
+      vertex -190.581680 5.818917 -470.000000
+    endloop
+  endfacet
+  facet normal -0.928678 0.370887 -0.000006
+    outer loop
+      vertex -190.716019 5.482105 -497.096222
+      vertex -190.718307 5.476798 -470.000000
+      vertex -190.571716 5.843437 -496.543152
+    endloop
+  endfacet
+  facet normal 0.000000 0.735737 -0.677267
+    outer loop
+      vertex -190.417419 6.290874 -496.057098
+      vertex -90.000000 6.054916 -496.313416
+      vertex -90.000000 5.843437 -496.543152
+    endloop
+  endfacet
+  facet normal 0.000000 0.735729 -0.677275
+    outer loop
+      vertex -190.571716 5.843437 -496.543152
+      vertex -190.417419 6.290874 -496.057098
+      vertex -90.000000 5.843437 -496.543152
+    endloop
+  endfacet
+  facet normal 0.000000 -0.324699 0.945817
+    outer loop
+      vertex -90.000000 10.606782 -504.663116
+      vertex -190.144592 10.606782 -504.663116
+      vertex -190.053726 9.981941 -504.877625
+    endloop
+  endfacet
+  facet normal 0.000000 -0.324735 0.945805
+    outer loop
+      vertex -90.000000 10.310888 -504.764709
+      vertex -90.000000 10.606782 -504.663116
+      vertex -190.053726 9.981941 -504.877625
+    endloop
+  endfacet
+  facet normal -0.995389 -0.095925 0.000208
+    outer loop
+      vertex -190.064972 10.044221 -530.000000
+      vertex -190.030731 9.743214 -504.930389
+      vertex -190.053726 9.981941 -504.877625
+    endloop
+  endfacet
+  facet normal -0.995390 -0.095914 0.000208
+    outer loop
+      vertex -190.064972 10.044221 -530.000000
+      vertex -190.043121 9.817457 -530.000000
+      vertex -190.030731 9.743214 -504.930389
+    endloop
+  endfacet
+  facet normal 0.082581 -0.996584 0.000000
+    outer loop
+      vertex -201.696243 17.942308 -470.000000
+      vertex -201.785110 17.934942 -530.000000
+      vertex -201.000000 18.000000 -530.000000
+    endloop
+  endfacet
+  facet normal 0.082578 -0.996585 0.000000
+    outer loop
+      vertex -201.000000 18.000000 -470.000000
+      vertex -201.696243 17.942308 -470.000000
+      vertex -201.000000 18.000000 -530.000000
+    endloop
+  endfacet
+  facet normal -0.914052 0.405597 0.000002
+    outer loop
+      vertex -190.716019 5.482105 -497.096222
+      vertex -190.758972 5.385156 -470.000000
+      vertex -190.718307 5.476798 -470.000000
+    endloop
+  endfacet
+  facet normal -0.914034 0.405637 0.000002
+    outer loop
+      vertex -190.759033 5.385180 -497.317169
+      vertex -190.758972 5.385156 -470.000000
+      vertex -190.716019 5.482105 -497.096222
+    endloop
+  endfacet
+  facet normal 0.000000 0.837176 -0.546933
+    outer loop
+      vertex -190.571716 5.843437 -496.543152
+      vertex -90.000000 5.652749 -496.835022
+      vertex -90.000000 5.482105 -497.096222
+    endloop
+  endfacet
+  facet normal 0.000000 0.837171 -0.546941
+    outer loop
+      vertex -190.716019 5.482105 -497.096222
+      vertex -190.571716 5.843437 -496.543152
+      vertex -90.000000 5.482105 -497.096222
+    endloop
+  endfacet
+  facet normal 0.000000 0.837166 -0.546949
+    outer loop
+      vertex -190.571716 5.843437 -496.543152
+      vertex -90.000000 5.843437 -496.543152
+      vertex -90.000000 5.652749 -496.835022
+    endloop
+  endfacet
+  facet normal 0.000000 -0.324667 0.945828
+    outer loop
+      vertex -90.000000 9.981941 -504.877625
+      vertex -90.000000 10.310888 -504.764709
+      vertex -190.053726 9.981941 -504.877625
+    endloop
+  endfacet
+  facet normal -0.000181 -0.215833 0.976430
+    outer loop
+      vertex -90.000000 9.638894 -504.934875
+      vertex -190.053726 9.981941 -504.877625
+      vertex -190.030731 9.743214 -504.930389
+    endloop
+  endfacet
+  facet normal -0.000181 -0.215667 0.976467
+    outer loop
+      vertex -90.000000 9.525868 -504.959839
+      vertex -90.000000 9.638894 -504.934875
+      vertex -190.030731 9.743214 -504.930389
+    endloop
+  endfacet
+  facet normal -0.986359 -0.164609 0.000000
+    outer loop
+      vertex -190.043121 9.817457 -530.000000
+      vertex -190.030731 9.743214 -530.000000
+      vertex -190.030731 9.743214 -504.930389
+    endloop
+  endfacet
+  facet normal 0.082578 -0.996585 0.000000
+    outer loop
+      vertex -202.481354 17.877251 -470.000000
+      vertex -202.481354 17.877251 -530.000000
+      vertex -201.785110 17.934942 -530.000000
+    endloop
+  endfacet
+  facet normal 0.082581 -0.996584 0.000000
+    outer loop
+      vertex -201.696243 17.942308 -470.000000
+      vertex -202.481354 17.877251 -470.000000
+      vertex -201.785110 17.934942 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.915768 -0.401708
+    outer loop
+      vertex -190.716019 5.482105 -497.096222
+      vertex -90.000000 5.482105 -497.096222
+      vertex -90.000000 5.436376 -497.200470
+    endloop
+  endfacet
+  facet normal 0.000000 0.915761 -0.401724
+    outer loop
+      vertex -190.759033 5.385180 -497.317169
+      vertex -190.716019 5.482105 -497.096222
+      vertex -90.000000 5.436376 -497.200470
+    endloop
+  endfacet
+  facet normal -0.879454 0.475985 0.000002
+    outer loop
+      vertex -190.759033 5.385180 -497.317169
+      vertex -190.797836 5.313348 -470.000000
+      vertex -190.758972 5.385156 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.164613 0.986358
+    outer loop
+      vertex -90.000000 9.638894 -504.934875
+      vertex -90.000000 9.981941 -504.877625
+      vertex -190.053726 9.981941 -504.877625
+    endloop
+  endfacet
+  facet normal 0.000000 -0.134324 0.990937
+    outer loop
+      vertex -90.000000 9.525868 -504.959839
+      vertex -190.030731 9.743214 -504.930389
+      vertex -190.006058 9.330317 -504.986359
+    endloop
+  endfacet
+  facet normal 0.000000 -0.134386 0.990929
+    outer loop
+      vertex -90.000000 9.330317 -504.986359
+      vertex -90.000000 9.525868 -504.959839
+      vertex -190.006058 9.330317 -504.986359
+    endloop
+  endfacet
+  facet normal -0.998219 -0.059651 0.000000
+    outer loop
+      vertex -190.030731 9.743214 -530.000000
+      vertex -190.006058 9.330317 -504.986359
+      vertex -190.030731 9.743214 -504.930389
+    endloop
+  endfacet
+  facet normal -0.998220 -0.059639 0.000000
+    outer loop
+      vertex -190.030731 9.743214 -530.000000
+      vertex -190.007309 9.351182 -530.000000
+      vertex -190.006058 9.330317 -504.986359
+    endloop
+  endfacet
+  facet normal 0.245483 -0.969401 0.000000
+    outer loop
+      vertex -203.158600 17.705750 -470.000000
+      vertex -203.245056 17.683857 -530.000000
+      vertex -202.481354 17.877251 -530.000000
+    endloop
+  endfacet
+  facet normal 0.245484 -0.969401 0.000000
+    outer loop
+      vertex -202.481354 17.877251 -470.000000
+      vertex -203.158600 17.705750 -470.000000
+      vertex -202.481354 17.877251 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.915765 -0.401715
+    outer loop
+      vertex -190.759033 5.385180 -497.317169
+      vertex -90.000000 5.436376 -497.200470
+      vertex -90.000000 5.356950 -497.381531
+    endloop
+  endfacet
+  facet normal 0.000000 0.915776 -0.401689
+    outer loop
+      vertex -190.833801 5.216731 -497.701202
+      vertex -190.759033 5.385180 -497.317169
+      vertex -90.000000 5.356950 -497.381531
+    endloop
+  endfacet
+  facet normal -0.913816 0.406129 -0.000230
+    outer loop
+      vertex -190.759033 5.385180 -497.317169
+      vertex -190.868958 5.153321 -470.000000
+      vertex -190.797836 5.313348 -470.000000
+    endloop
+  endfacet
+  facet normal -0.913815 0.406131 -0.000230
+    outer loop
+      vertex -190.833801 5.216731 -497.701202
+      vertex -190.868958 5.153321 -470.000000
+      vertex -190.759033 5.385180 -497.317169
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -90.000000 9.330317 -504.986359
+      vertex -190.006058 9.330317 -504.986359
+      vertex -90.000000 8.982604 -504.986359
+    endloop
+  endfacet
+  facet normal -0.999833 -0.018254 0.000035
+    outer loop
+      vertex -190.007309 9.351182 -530.000000
+      vertex -190.000000 8.998481 -505.000000
+      vertex -190.006058 9.330317 -504.986359
+    endloop
+  endfacet
+  facet normal -0.999833 -0.018254 0.000035
+    outer loop
+      vertex -190.007309 9.351182 -530.000000
+      vertex -190.001556 9.036094 -530.000000
+      vertex -190.000000 8.998481 -505.000000
+    endloop
+  endfacet
+  facet normal 0.245484 -0.969401 0.000000
+    outer loop
+      vertex -203.922302 17.512356 -470.000000
+      vertex -203.922302 17.512356 -530.000000
+      vertex -203.245056 17.683857 -530.000000
+    endloop
+  endfacet
+  facet normal 0.245483 -0.969401 0.000000
+    outer loop
+      vertex -203.158600 17.705750 -470.000000
+      vertex -203.922302 17.512356 -470.000000
+      vertex -203.245056 17.683857 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.915775 -0.401692
+    outer loop
+      vertex -190.833801 5.216731 -497.701202
+      vertex -90.000000 5.356950 -497.381531
+      vertex -90.000000 5.216731 -497.701202
+    endloop
+  endfacet
+  facet normal -0.904718 0.426011 -0.000173
+    outer loop
+      vertex -190.833801 5.216731 -497.701202
+      vertex -190.910950 5.064143 -470.000000
+      vertex -190.868958 5.153321 -470.000000
+    endloop
+  endfacet
+  facet normal -0.904710 0.426027 -0.000173
+    outer loop
+      vertex -190.877899 5.122957 -498.015839
+      vertex -190.910950 5.064143 -470.000000
+      vertex -190.833801 5.216731 -497.701202
+    endloop
+  endfacet
+  facet normal -0.000143 -0.041077 0.999156
+    outer loop
+      vertex -90.000000 8.982604 -504.986359
+      vertex -190.006058 9.330317 -504.986359
+      vertex -190.000000 8.998481 -505.000000
+    endloop
+  endfacet
+  facet normal -0.000143 -0.041128 0.999154
+    outer loop
+      vertex -90.000000 8.825429 -504.992828
+      vertex -90.000000 8.982604 -504.986359
+      vertex -190.000000 8.998481 -505.000000
+    endloop
+  endfacet
+  facet normal -0.999830 0.018424 0.000090
+    outer loop
+      vertex -190.007309 8.723928 -530.000000
+      vertex -190.006058 8.669682 -504.986359
+      vertex -190.000000 8.998481 -505.000000
+    endloop
+  endfacet
+  facet normal -0.999830 0.018425 0.000090
+    outer loop
+      vertex -190.001556 9.036094 -530.000000
+      vertex -190.007309 8.723928 -530.000000
+      vertex -190.000000 8.998481 -505.000000
+    endloop
+  endfacet
+  facet normal 0.401696 -0.915773 0.000000
+    outer loop
+      vertex -204.562073 17.231722 -470.000000
+      vertex -204.643753 17.195898 -530.000000
+      vertex -203.922302 17.512356 -530.000000
+    endloop
+  endfacet
+  facet normal 0.401701 -0.915771 0.000000
+    outer loop
+      vertex -203.922302 17.512356 -470.000000
+      vertex -204.562073 17.231722 -470.000000
+      vertex -203.922302 17.512356 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.958339 -0.285634
+    outer loop
+      vertex -190.833801 5.216731 -497.701202
+      vertex -90.000000 5.216731 -497.701202
+      vertex -90.000000 5.172516 -497.849548
+    endloop
+  endfacet
+  facet normal 0.000000 0.958342 -0.285623
+    outer loop
+      vertex -190.877899 5.122957 -498.015839
+      vertex -190.833801 5.216731 -497.701202
+      vertex -90.000000 5.172516 -497.849548
+    endloop
+  endfacet
+  facet normal -0.900340 0.435187 -0.000149
+    outer loop
+      vertex -190.877899 5.122957 -498.015839
+      vertex -190.942444 4.998986 -470.000000
+      vertex -190.910950 5.064143 -470.000000
+    endloop
+  endfacet
+  facet normal -0.900362 0.435142 -0.000149
+    outer loop
+      vertex -190.910904 5.054554 -498.341614
+      vertex -190.942444 4.998986 -470.000000
+      vertex -190.877899 5.122957 -498.015839
+    endloop
+  endfacet
+  facet normal 0.000000 0.041453 0.999140
+    outer loop
+      vertex -90.000000 8.669682 -504.986359
+      vertex -190.000000 8.998481 -505.000000
+      vertex -190.006058 8.669682 -504.986359
+    endloop
+  endfacet
+  facet normal 0.000000 0.041504 0.999138
+    outer loop
+      vertex -90.000000 8.669682 -504.986359
+      vertex -90.000000 8.825429 -504.992828
+      vertex -190.000000 8.998481 -505.000000
+    endloop
+  endfacet
+  facet normal -0.998218 0.059675 0.000179
+    outer loop
+      vertex -190.030731 8.332056 -530.000000
+      vertex -190.030731 8.256785 -504.930389
+      vertex -190.006058 8.669682 -504.986359
+    endloop
+  endfacet
+  facet normal -0.998219 0.059664 0.000179
+    outer loop
+      vertex -190.007309 8.723928 -530.000000
+      vertex -190.030731 8.332056 -530.000000
+      vertex -190.006058 8.669682 -504.986359
+    endloop
+  endfacet
+  facet normal 0.401701 -0.915771 0.000000
+    outer loop
+      vertex -205.283524 16.915264 -470.000000
+      vertex -205.283524 16.915264 -530.000000
+      vertex -204.643753 17.195898 -530.000000
+    endloop
+  endfacet
+  facet normal 0.401696 -0.915773 0.000000
+    outer loop
+      vertex -204.562073 17.231722 -470.000000
+      vertex -205.283524 16.915264 -470.000000
+      vertex -204.643753 17.195898 -530.000000
+    endloop
+  endfacet
+  facet normal -0.000072 0.969402 -0.245478
+    outer loop
+      vertex -190.877899 5.122957 -498.015839
+      vertex -90.000000 5.172516 -497.849548
+      vertex -90.000000 5.086806 -498.188019
+    endloop
+  endfacet
+  facet normal 0.000000 0.978657 -0.205498
+    outer loop
+      vertex -190.877899 5.122957 -498.015839
+      vertex -90.000000 5.086806 -498.188019
+      vertex -90.000000 5.054554 -498.341614
+    endloop
+  endfacet
+  facet normal 0.000000 0.978660 -0.205487
+    outer loop
+      vertex -190.910904 5.054554 -498.341614
+      vertex -190.877899 5.122957 -498.015839
+      vertex -90.000000 5.054554 -498.341614
+    endloop
+  endfacet
+  facet normal -0.897122 0.441784 -0.000132
+    outer loop
+      vertex -190.910904 5.054554 -498.341614
+      vertex -190.961700 4.959882 -470.000000
+      vertex -190.942444 4.998986 -470.000000
+    endloop
+  endfacet
+  facet normal -0.897133 0.441762 -0.000132
+    outer loop
+      vertex -190.930969 5.013708 -498.669128
+      vertex -190.961700 4.959882 -470.000000
+      vertex -190.910904 5.054554 -498.341614
+    endloop
+  endfacet
+  facet normal 0.000000 0.164564 0.986367
+    outer loop
+      vertex -90.000000 8.326712 -504.929138
+      vertex -90.000000 8.669682 -504.986359
+      vertex -190.006058 8.669682 -504.986359
+    endloop
+  endfacet
+  facet normal -0.000106 0.134331 0.990937
+    outer loop
+      vertex -90.000000 8.131121 -504.902618
+      vertex -190.006058 8.669682 -504.986359
+      vertex -190.030731 8.256785 -504.930389
+    endloop
+  endfacet
+  facet normal -0.000106 0.134359 0.990933
+    outer loop
+      vertex -90.000000 8.131121 -504.902618
+      vertex -90.000000 8.326712 -504.929138
+      vertex -190.006058 8.669682 -504.986359
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -190.030731 8.332056 -530.000000
+      vertex -190.030731 8.256785 -530.000000
+      vertex -190.030731 8.256785 -504.930389
+    endloop
+  endfacet
+  facet normal 0.546945 -0.837169 0.000000
+    outer loop
+      vertex -205.868393 16.533154 -470.000000
+      vertex -205.943054 16.484375 -530.000000
+      vertex -205.283524 16.915264 -530.000000
+    endloop
+  endfacet
+  facet normal 0.546944 -0.837169 0.000000
+    outer loop
+      vertex -205.283524 16.915264 -470.000000
+      vertex -205.868393 16.533154 -470.000000
+      vertex -205.283524 16.915264 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.992313 -0.123754
+    outer loop
+      vertex -190.910904 5.054554 -498.341614
+      vertex -90.000000 5.054554 -498.341614
+      vertex -90.000000 5.035300 -498.496002
+    endloop
+  endfacet
+  facet normal 0.000000 0.992312 -0.123759
+    outer loop
+      vertex -190.930969 5.013708 -498.669128
+      vertex -190.910904 5.054554 -498.341614
+      vertex -90.000000 5.035300 -498.496002
+    endloop
+  endfacet
+  facet normal -0.895336 0.445391 -0.000124
+    outer loop
+      vertex -190.930969 5.013708 -498.669128
+      vertex -190.968414 4.946385 -470.000000
+      vertex -190.961700 4.959882 -470.000000
+    endloop
+  endfacet
+  facet normal -0.895303 0.445458 -0.000123
+    outer loop
+      vertex -190.937744 5.000000 -499.000000
+      vertex -190.968414 4.946385 -470.000000
+      vertex -190.930969 5.013708 -498.669128
+    endloop
+  endfacet
+  facet normal 0.000000 0.215817 0.976434
+    outer loop
+      vertex -90.000000 8.018058 -504.877625
+      vertex -190.030731 8.256785 -504.930389
+      vertex -190.053726 8.018058 -504.877625
+    endloop
+  endfacet
+  facet normal 0.000000 0.215851 0.976426
+    outer loop
+      vertex -90.000000 8.018058 -504.877625
+      vertex -90.000000 8.131121 -504.902618
+      vertex -190.030731 8.256785 -504.930389
+    endloop
+  endfacet
+  facet normal -0.995393 0.095879 0.000000
+    outer loop
+      vertex -190.052567 8.030170 -530.000000
+      vertex -190.053726 8.018058 -504.877625
+      vertex -190.030731 8.256785 -504.930389
+    endloop
+  endfacet
+  facet normal -0.995390 0.095910 0.000000
+    outer loop
+      vertex -190.030731 8.256785 -530.000000
+      vertex -190.052567 8.030170 -530.000000
+      vertex -190.030731 8.256785 -504.930389
+    endloop
+  endfacet
+  facet normal 0.546944 -0.837169 0.000000
+    outer loop
+      vertex -206.527924 16.102264 -470.000000
+      vertex -206.527924 16.102264 -530.000000
+      vertex -205.943054 16.484375 -530.000000
+    endloop
+  endfacet
+  facet normal 0.546945 -0.837169 0.000000
+    outer loop
+      vertex -205.868393 16.533154 -470.000000
+      vertex -206.527924 16.102264 -470.000000
+      vertex -205.943054 16.484375 -530.000000
+    endloop
+  endfacet
+  facet normal -0.000072 0.996584 -0.082583
+    outer loop
+      vertex -190.930969 5.013708 -498.669128
+      vertex -90.000000 5.035300 -498.496002
+      vertex -90.000000 5.006461 -498.844025
+    endloop
+  endfacet
+  facet normal -0.868002 0.496561 0.000000
+    outer loop
+      vertex -190.937744 5.000000 -499.000000
+      vertex -191.465500 4.077466 -470.000000
+      vertex -190.968414 4.946385 -470.000000
+    endloop
+  endfacet
+  facet normal -0.868002 0.496561 0.000000
+    outer loop
+      vertex -190.970398 4.942916 -530.000000
+      vertex -191.465500 4.077466 -530.000000
+      vertex -190.937744 5.000000 -499.000000
+    endloop
+  endfacet
+  facet normal -0.868002 0.496560 0.000000
+    outer loop
+      vertex -191.465500 4.077466 -530.000000
+      vertex -191.465500 4.077466 -470.000000
+      vertex -190.937744 5.000000 -499.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.999143 -0.041392
+    outer loop
+      vertex -190.930969 5.013708 -498.669128
+      vertex -90.000000 5.006461 -498.844025
+      vertex -90.000000 5.000000 -499.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.999143 -0.041395
+    outer loop
+      vertex -190.937744 5.000000 -499.000000
+      vertex -190.930969 5.013708 -498.669128
+      vertex -90.000000 5.000000 -499.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.324700 0.945817
+    outer loop
+      vertex -90.000000 7.722306 -504.776093
+      vertex -90.000000 8.018058 -504.877625
+      vertex -190.053726 8.018058 -504.877625
+    endloop
+  endfacet
+  facet normal 0.000000 0.324700 0.945817
+    outer loop
+      vertex -90.000000 7.722306 -504.776093
+      vertex -190.053726 8.018058 -504.877625
+      vertex -190.144592 7.393218 -504.663116
+    endloop
+  endfacet
+  facet normal -0.989590 0.143917 0.000023
+    outer loop
+      vertex -190.138763 7.437390 -530.000000
+      vertex -190.144592 7.393218 -504.663116
+      vertex -190.053726 8.018058 -504.877625
+    endloop
+  endfacet
+  facet normal -0.989593 0.143898 0.000024
+    outer loop
+      vertex -190.052567 8.030170 -530.000000
+      vertex -190.138763 7.437390 -530.000000
+      vertex -190.053726 8.018058 -504.877625
+    endloop
+  endfacet
+  facet normal 0.677284 -0.735722 0.000000
+    outer loop
+      vertex -207.041916 15.629101 -470.000000
+      vertex -207.107529 15.568697 -530.000000
+      vertex -206.527924 16.102264 -530.000000
+    endloop
+  endfacet
+  facet normal 0.677282 -0.735724 0.000000
+    outer loop
+      vertex -206.527924 16.102264 -470.000000
+      vertex -207.041916 15.629101 -470.000000
+      vertex -206.527924 16.102264 -530.000000
+    endloop
+  endfacet
+  facet normal -0.868096 0.496396 0.000000
+    outer loop
+      vertex -190.968414 4.946385 -530.000000
+      vertex -190.970398 4.942916 -530.000000
+      vertex -190.937744 5.000000 -501.000000
+    endloop
+  endfacet
+  facet normal -0.868015 0.496539 0.000000
+    outer loop
+      vertex -190.970398 4.942916 -530.000000
+      vertex -190.937744 5.000000 -499.000000
+      vertex -190.937744 5.000000 -501.000000
+    endloop
+  endfacet
+  facet normal -0.789137 0.614217 0.000000
+    outer loop
+      vertex -191.894608 3.526156 -530.000000
+      vertex -191.949387 3.455776 -470.000000
+      vertex -191.465500 4.077466 -470.000000
+    endloop
+  endfacet
+  facet normal -0.789137 0.614218 0.000000
+    outer loop
+      vertex -191.465500 4.077466 -530.000000
+      vertex -191.894608 3.526156 -530.000000
+      vertex -191.465500 4.077466 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex -190.937744 5.000000 -499.000000
+      vertex -90.000000 5.000000 -499.000000
+      vertex -90.000000 5.000000 -500.057281
+    endloop
+  endfacet
+  facet normal 0.000000 0.324699 0.945817
+    outer loop
+      vertex -90.000000 7.393218 -504.663116
+      vertex -90.000000 7.722306 -504.776093
+      vertex -190.144592 7.393218 -504.663116
+    endloop
+  endfacet
+  facet normal -0.977488 0.210993 0.000143
+    outer loop
+      vertex -190.257584 6.886968 -530.000000
+      vertex -190.269958 6.812207 -504.348694
+      vertex -190.144592 7.393218 -504.663116
+    endloop
+  endfacet
+  facet normal -0.977484 0.211010 0.000143
+    outer loop
+      vertex -190.138763 7.437390 -530.000000
+      vertex -190.257584 6.886968 -530.000000
+      vertex -190.144592 7.393218 -504.663116
+    endloop
+  endfacet
+  facet normal 0.677282 -0.735724 0.000000
+    outer loop
+      vertex -207.621521 15.095533 -470.000000
+      vertex -207.621521 15.095533 -530.000000
+      vertex -207.107529 15.568697 -530.000000
+    endloop
+  endfacet
+  facet normal 0.677284 -0.735722 0.000000
+    outer loop
+      vertex -207.041916 15.629101 -470.000000
+      vertex -207.621521 15.095533 -470.000000
+      vertex -207.107529 15.568697 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex -190.937744 5.000000 -501.000000
+      vertex -90.000000 5.000000 -500.057281
+      vertex -90.000000 5.000000 -501.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex -190.937744 5.000000 -501.000000
+      vertex -190.937744 5.000000 -499.000000
+      vertex -90.000000 5.000000 -500.057281
+    endloop
+  endfacet
+  facet normal -0.879512 0.475877 0.000050
+    outer loop
+      vertex -190.927307 5.022359 -530.000000
+      vertex -190.968414 4.946385 -530.000000
+      vertex -190.937744 5.000000 -501.000000
+    endloop
+  endfacet
+  facet normal -0.789137 0.614218 0.000000
+    outer loop
+      vertex -192.378494 2.904465 -530.000000
+      vertex -192.378494 2.904465 -470.000000
+      vertex -191.949387 3.455776 -470.000000
+    endloop
+  endfacet
+  facet normal -0.789137 0.614217 0.000000
+    outer loop
+      vertex -191.894608 3.526156 -530.000000
+      vertex -192.378494 2.904465 -530.000000
+      vertex -191.949387 3.455776 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.475908 0.879495
+    outer loop
+      vertex -90.000000 7.118392 -504.514404
+      vertex -90.000000 7.393218 -504.663116
+      vertex -190.144592 7.393218 -504.663116
+    endloop
+  endfacet
+  facet normal 0.000000 0.475942 0.879477
+    outer loop
+      vertex -90.000000 7.118392 -504.514404
+      vertex -190.144592 7.393218 -504.663116
+      vertex -190.269958 6.812207 -504.348694
+    endloop
+  endfacet
+  facet normal -0.961957 0.273200 0.000332
+    outer loop
+      vertex -190.263336 6.866718 -530.000000
+      vertex -190.276031 6.790803 -504.332001
+      vertex -190.269958 6.812207 -504.348694
+    endloop
+  endfacet
+  facet normal -0.961937 0.273273 0.000332
+    outer loop
+      vertex -190.257584 6.886968 -530.000000
+      vertex -190.263336 6.866718 -530.000000
+      vertex -190.269958 6.812207 -504.348694
+    endloop
+  endfacet
+  facet normal 0.789137 -0.614218 0.000000
+    outer loop
+      vertex -207.621521 15.095533 -530.000000
+      vertex -207.621521 15.095533 -470.000000
+      vertex -208.050629 14.544223 -470.000000
+    endloop
+  endfacet
+  facet normal 0.789137 -0.614218 0.000000
+    outer loop
+      vertex -208.105408 14.473844 -530.000000
+      vertex -207.621521 15.095533 -530.000000
+      vertex -208.050629 14.544223 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.999138 0.041517
+    outer loop
+      vertex -190.930923 5.013789 -501.331879
+      vertex -90.000000 5.000000 -501.000000
+      vertex -90.000000 5.006500 -501.156433
+    endloop
+  endfacet
+  facet normal 0.000000 0.999138 0.041514
+    outer loop
+      vertex -190.930923 5.013789 -501.331879
+      vertex -190.937744 5.000000 -501.000000
+      vertex -90.000000 5.000000 -501.000000
+    endloop
+  endfacet
+  facet normal -0.896122 0.443807 0.000020
+    outer loop
+      vertex -190.920990 5.035115 -530.000000
+      vertex -190.927307 5.022359 -530.000000
+      vertex -190.930923 5.013789 -501.331879
+    endloop
+  endfacet
+  facet normal -0.896159 0.443733 0.000020
+    outer loop
+      vertex -190.927307 5.022359 -530.000000
+      vertex -190.937744 5.000000 -501.000000
+      vertex -190.930923 5.013789 -501.331879
+    endloop
+  endfacet
+  facet normal -0.677282 0.735724 0.000000
+    outer loop
+      vertex -192.378494 2.904465 -470.000000
+      vertex -192.378494 2.904465 -530.000000
+      vertex -192.892487 2.431302 -530.000000
+    endloop
+  endfacet
+  facet normal -0.677284 0.735722 0.000000
+    outer loop
+      vertex -192.958099 2.370898 -470.000000
+      vertex -192.378494 2.904465 -470.000000
+      vertex -192.892487 2.431302 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.475972 0.879460
+    outer loop
+      vertex -90.000000 6.812207 -504.348694
+      vertex -90.000000 7.118392 -504.514404
+      vertex -190.269958 6.812207 -504.348694
+    endloop
+  endfacet
+  facet normal 0.000000 0.615397 0.788217
+    outer loop
+      vertex -90.000000 6.802083 -504.340790
+      vertex -90.000000 6.812207 -504.348694
+      vertex -190.269958 6.812207 -504.348694
+    endloop
+  endfacet
+  facet normal 0.000000 0.614990 0.788535
+    outer loop
+      vertex -90.000000 6.802083 -504.340790
+      vertex -190.269958 6.812207 -504.348694
+      vertex -190.276031 6.790803 -504.332001
+    endloop
+  endfacet
+  facet normal -0.986371 0.164535 -0.000001
+    outer loop
+      vertex -190.263336 6.866718 -530.000000
+      vertex -190.276001 6.790794 -530.000000
+      vertex -190.276031 6.790803 -504.332001
+    endloop
+  endfacet
+  facet normal 0.789137 -0.614218 0.000000
+    outer loop
+      vertex -208.105408 14.473844 -530.000000
+      vertex -208.050629 14.544223 -470.000000
+      vertex -208.534515 13.922533 -470.000000
+    endloop
+  endfacet
+  facet normal 0.789137 -0.614218 0.000000
+    outer loop
+      vertex -208.534515 13.922533 -530.000000
+      vertex -208.105408 14.473844 -530.000000
+      vertex -208.534515 13.922533 -470.000000
+    endloop
+  endfacet
+  facet normal -0.000072 0.996585 0.082575
+    outer loop
+      vertex -190.930923 5.013789 -501.331879
+      vertex -90.000000 5.006500 -501.156433
+      vertex -90.000000 5.035339 -501.504486
+    endloop
+  endfacet
+  facet normal -0.897463 0.441089 0.000017
+    outer loop
+      vertex -190.902206 5.073333 -530.000000
+      vertex -190.920990 5.035115 -530.000000
+      vertex -190.910904 5.054554 -501.658386
+    endloop
+  endfacet
+  facet normal -0.897549 0.440916 0.000017
+    outer loop
+      vertex -190.920990 5.035115 -530.000000
+      vertex -190.930923 5.013789 -501.331879
+      vertex -190.910904 5.054554 -501.658386
+    endloop
+  endfacet
+  facet normal -0.677284 0.735722 0.000000
+    outer loop
+      vertex -192.958099 2.370898 -470.000000
+      vertex -192.892487 2.431302 -530.000000
+      vertex -193.472092 1.897735 -530.000000
+    endloop
+  endfacet
+  facet normal -0.677282 0.735724 0.000000
+    outer loop
+      vertex -193.472092 1.897735 -470.000000
+      vertex -192.958099 2.370898 -470.000000
+      vertex -193.472092 1.897735 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.614203 0.789148
+    outer loop
+      vertex -90.000000 6.527339 -504.126953
+      vertex -90.000000 6.802083 -504.340790
+      vertex -190.276031 6.790803 -504.332001
+    endloop
+  endfacet
+  facet normal -0.962258 0.272141 -0.000001
+    outer loop
+      vertex -190.409958 6.317125 -530.000000
+      vertex -190.417419 6.290874 -503.942902
+      vertex -190.276031 6.790803 -504.332001
+    endloop
+  endfacet
+  facet normal -0.962260 0.272134 -0.000001
+    outer loop
+      vertex -190.276001 6.790794 -530.000000
+      vertex -190.409958 6.317125 -530.000000
+      vertex -190.276031 6.790803 -504.332001
+    endloop
+  endfacet
+  facet normal 0.868006 -0.496553 0.000000
+    outer loop
+      vertex -209.062256 13.000000 -494.000000
+      vertex -208.534515 13.922533 -470.000000
+      vertex -209.036621 13.044820 -470.000000
+    endloop
+  endfacet
+  facet normal 0.868011 -0.496545 0.000000
+    outer loop
+      vertex -209.024704 13.065635 -530.000000
+      vertex -208.534515 13.922533 -530.000000
+      vertex -209.062256 13.000000 -494.000000
+    endloop
+  endfacet
+  facet normal 0.868008 -0.496549 0.000000
+    outer loop
+      vertex -208.534515 13.922533 -530.000000
+      vertex -208.534515 13.922533 -470.000000
+      vertex -209.062256 13.000000 -494.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.992295 0.123895
+    outer loop
+      vertex -190.910904 5.054554 -501.658386
+      vertex -90.000000 5.035339 -501.504486
+      vertex -90.000000 5.054554 -501.658386
+    endloop
+  endfacet
+  facet normal 0.000000 0.992296 0.123891
+    outer loop
+      vertex -190.910904 5.054554 -501.658386
+      vertex -190.930923 5.013789 -501.331879
+      vertex -90.000000 5.035339 -501.504486
+    endloop
+  endfacet
+  facet normal -0.900643 0.434559 0.000012
+    outer loop
+      vertex -190.871490 5.136993 -530.000000
+      vertex -190.902206 5.073333 -530.000000
+      vertex -190.878250 5.122224 -501.981262
+    endloop
+  endfacet
+  facet normal -0.900604 0.434641 0.000012
+    outer loop
+      vertex -190.902206 5.073333 -530.000000
+      vertex -190.910904 5.054554 -501.658386
+      vertex -190.878250 5.122224 -501.981262
+    endloop
+  endfacet
+  facet normal -0.546954 0.837163 0.000000
+    outer loop
+      vertex -193.472092 1.897735 -470.000000
+      vertex -193.472092 1.897735 -530.000000
+      vertex -194.056946 1.515625 -530.000000
+    endloop
+  endfacet
+  facet normal -0.546945 0.837168 0.000000
+    outer loop
+      vertex -194.131622 1.466845 -470.000000
+      vertex -193.472092 1.897735 -470.000000
+      vertex -194.056946 1.515625 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.614220 0.789135
+    outer loop
+      vertex -90.000000 6.290874 -503.942902
+      vertex -90.000000 6.527339 -504.126953
+      vertex -190.276031 6.790803 -504.332001
+    endloop
+  endfacet
+  facet normal 0.000000 0.614201 0.789149
+    outer loop
+      vertex -90.000000 6.290874 -503.942902
+      vertex -190.276031 6.790803 -504.332001
+      vertex -190.417419 6.290874 -503.942902
+    endloop
+  endfacet
+  facet normal -0.945348 0.326063 0.000058
+    outer loop
+      vertex -190.555878 5.894070 -530.000000
+      vertex -190.571716 5.843437 -503.456818
+      vertex -190.417419 6.290874 -503.942902
+    endloop
+  endfacet
+  facet normal -0.945346 0.326068 0.000058
+    outer loop
+      vertex -190.409958 6.317125 -530.000000
+      vertex -190.555878 5.894070 -530.000000
+      vertex -190.417419 6.290874 -503.942902
+    endloop
+  endfacet
+  facet normal 0.867832 -0.496858 -0.000001
+    outer loop
+      vertex -209.036621 13.044820 -530.000000
+      vertex -209.024704 13.065635 -530.000000
+      vertex -209.062256 13.000000 -505.999969
+    endloop
+  endfacet
+  facet normal 0.867979 -0.496601 0.000000
+    outer loop
+      vertex -209.024704 13.065635 -530.000000
+      vertex -209.062256 13.000000 -494.000000
+      vertex -209.062256 13.000000 -505.999969
+    endloop
+  endfacet
+  facet normal 0.895214 -0.445636 -0.000124
+    outer loop
+      vertex -209.069046 12.986291 -493.669128
+      vertex -209.036621 13.044820 -470.000000
+      vertex -209.043411 13.031179 -470.000000
+    endloop
+  endfacet
+  facet normal 0.894924 -0.446218 -0.000123
+    outer loop
+      vertex -209.062256 13.000000 -494.000000
+      vertex -209.036621 13.044820 -470.000000
+      vertex -209.069046 12.986291 -493.669128
+    endloop
+  endfacet
+  facet normal 0.000000 0.978739 0.205109
+    outer loop
+      vertex -190.878250 5.122224 -501.981262
+      vertex -90.000000 5.054554 -501.658386
+      vertex -90.000000 5.086461 -501.810638
+    endloop
+  endfacet
+  facet normal 0.000000 0.978735 0.205127
+    outer loop
+      vertex -190.878250 5.122224 -501.981262
+      vertex -190.910904 5.054554 -501.658386
+      vertex -90.000000 5.054554 -501.658386
+    endloop
+  endfacet
+  facet normal -0.904911 0.425601 0.000006
+    outer loop
+      vertex -190.829590 5.226082 -530.000000
+      vertex -190.871490 5.136993 -530.000000
+      vertex -190.833801 5.216731 -502.298767
+    endloop
+  endfacet
+  facet normal -0.904903 0.425618 0.000006
+    outer loop
+      vertex -190.871490 5.136993 -530.000000
+      vertex -190.878250 5.122224 -501.981262
+      vertex -190.833801 5.216731 -502.298767
+    endloop
+  endfacet
+  facet normal -0.546945 0.837168 0.000000
+    outer loop
+      vertex -194.131622 1.466845 -470.000000
+      vertex -194.056946 1.515625 -530.000000
+      vertex -194.716476 1.084736 -530.000000
+    endloop
+  endfacet
+  facet normal -0.546954 0.837163 0.000000
+    outer loop
+      vertex -194.716476 1.084736 -470.000000
+      vertex -194.131622 1.466845 -470.000000
+      vertex -194.716476 1.084736 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.735742 0.677262
+    outer loop
+      vertex -190.417419 6.290874 -503.942902
+      vertex -90.000000 6.079566 -503.713348
+      vertex -90.000000 6.290874 -503.942902
+    endloop
+  endfacet
+  facet normal 0.000000 0.735751 0.677253
+    outer loop
+      vertex -190.417419 6.290874 -503.942902
+      vertex -190.571716 5.843437 -503.456818
+      vertex -90.000000 6.079566 -503.713348
+    endloop
+  endfacet
+  facet normal -0.928601 0.371080 0.000154
+    outer loop
+      vertex -190.555878 5.894070 -530.000000
+      vertex -190.692001 5.553431 -530.000000
+      vertex -190.571716 5.843437 -503.456818
+    endloop
+  endfacet
+  facet normal -0.928600 0.371083 0.000154
+    outer loop
+      vertex -190.692001 5.553431 -530.000000
+      vertex -190.716019 5.482105 -502.903809
+      vertex -190.571716 5.843437 -503.456818
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -230.000000 13.000000 -494.253540
+      vertex -230.000000 13.000000 -505.999969
+      vertex -209.062256 13.000000 -505.999969
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -230.000000 13.000000 -494.253540
+      vertex -209.062256 13.000000 -505.999969
+      vertex -209.062256 13.000000 -494.000000
+    endloop
+  endfacet
+  facet normal 0.879521 -0.475861 0.000051
+    outer loop
+      vertex -209.070984 12.981308 -530.000000
+      vertex -209.036621 13.044820 -530.000000
+      vertex -209.062256 13.000000 -505.999969
+    endloop
+  endfacet
+  facet normal 0.897251 -0.441521 -0.000134
+    outer loop
+      vertex -209.089096 12.945445 -493.341614
+      vertex -209.043411 13.031179 -470.000000
+      vertex -209.062851 12.991674 -470.000000
+    endloop
+  endfacet
+  facet normal 0.897254 -0.441514 -0.000134
+    outer loop
+      vertex -209.069046 12.986291 -493.669128
+      vertex -209.043411 13.031179 -470.000000
+      vertex -209.089096 12.945445 -493.341614
+    endloop
+  endfacet
+  facet normal 0.000000 -0.999143 -0.041398
+    outer loop
+      vertex -230.000000 13.000000 -494.000000
+      vertex -209.062256 13.000000 -494.000000
+      vertex -209.069046 12.986291 -493.669128
+    endloop
+  endfacet
+  facet normal 0.000000 -0.999143 -0.041397
+    outer loop
+      vertex -230.000000 12.986581 -493.676117
+      vertex -230.000000 13.000000 -494.000000
+      vertex -209.069046 12.986291 -493.669128
+    endloop
+  endfacet
+  facet normal -0.000072 0.969392 0.245518
+    outer loop
+      vertex -190.878250 5.122224 -501.981262
+      vertex -90.000000 5.086461 -501.810638
+      vertex -90.000000 5.172170 -502.149048
+    endloop
+  endfacet
+  facet normal -0.913986 0.405746 -0.000002
+    outer loop
+      vertex -190.758972 5.385156 -530.000000
+      vertex -190.829590 5.226082 -530.000000
+      vertex -190.759033 5.385180 -502.682800
+    endloop
+  endfacet
+  facet normal -0.914011 0.405689 -0.000002
+    outer loop
+      vertex -190.829590 5.226082 -530.000000
+      vertex -190.833801 5.216731 -502.298767
+      vertex -190.759033 5.385180 -502.682800
+    endloop
+  endfacet
+  facet normal 0.000000 0.958450 0.285260
+    outer loop
+      vertex -190.833801 5.216731 -502.298767
+      vertex -90.000000 5.172170 -502.149048
+      vertex -90.000000 5.216731 -502.298767
+    endloop
+  endfacet
+  facet normal 0.000000 0.958443 0.285285
+    outer loop
+      vertex -190.833801 5.216731 -502.298767
+      vertex -190.878250 5.122224 -501.981262
+      vertex -90.000000 5.172170 -502.149048
+    endloop
+  endfacet
+  facet normal -0.401700 0.915771 0.000000
+    outer loop
+      vertex -194.716476 1.084736 -470.000000
+      vertex -194.716476 1.084736 -530.000000
+      vertex -195.356247 0.804103 -530.000000
+    endloop
+  endfacet
+  facet normal -0.401696 0.915773 0.000000
+    outer loop
+      vertex -195.437927 0.768277 -470.000000
+      vertex -194.716476 1.084736 -470.000000
+      vertex -195.356247 0.804103 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.735759 0.677244
+    outer loop
+      vertex -190.571716 5.843437 -503.456818
+      vertex -90.000000 5.843437 -503.456818
+      vertex -90.000000 6.079566 -503.713348
+    endloop
+  endfacet
+  facet normal 0.000000 0.837131 0.547002
+    outer loop
+      vertex -190.571716 5.843437 -503.456818
+      vertex -90.000000 5.672922 -503.195862
+      vertex -90.000000 5.843437 -503.456818
+    endloop
+  endfacet
+  facet normal 0.000000 0.837143 0.546984
+    outer loop
+      vertex -190.571716 5.843437 -503.456818
+      vertex -190.716019 5.482105 -502.903809
+      vertex -90.000000 5.672922 -503.195862
+    endloop
+  endfacet
+  facet normal -0.913815 0.406131 0.000259
+    outer loop
+      vertex -190.692001 5.553431 -530.000000
+      vertex -190.732468 5.462380 -530.000000
+      vertex -190.716019 5.482105 -502.903809
+    endloop
+  endfacet
+  facet normal -0.913813 0.406135 0.000259
+    outer loop
+      vertex -190.732468 5.462380 -530.000000
+      vertex -190.759033 5.385180 -502.682800
+      vertex -190.716019 5.482105 -502.903809
+    endloop
+  endfacet
+  facet normal 0.000000 -0.999138 0.041518
+    outer loop
+      vertex -230.000000 13.000000 -505.999969
+      vertex -230.000000 12.986501 -506.324829
+      vertex -209.069092 12.986210 -506.331848
+    endloop
+  endfacet
+  facet normal 0.000000 -0.999138 0.041516
+    outer loop
+      vertex -230.000000 13.000000 -505.999969
+      vertex -209.069092 12.986210 -506.331848
+      vertex -209.062256 13.000000 -505.999969
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -230.000000 13.000000 -494.000000
+      vertex -230.000000 13.000000 -494.253540
+      vertex -209.062256 13.000000 -494.000000
+    endloop
+  endfacet
+  facet normal 0.895763 -0.444533 0.000020
+    outer loop
+      vertex -209.077377 12.968425 -530.000000
+      vertex -209.070984 12.981308 -530.000000
+      vertex -209.069092 12.986210 -506.331848
+    endloop
+  endfacet
+  facet normal 0.895763 -0.444533 0.000020
+    outer loop
+      vertex -209.070984 12.981308 -530.000000
+      vertex -209.062256 13.000000 -505.999969
+      vertex -209.069092 12.986210 -506.331848
+    endloop
+  endfacet
+  facet normal 0.000000 -0.992313 -0.123756
+    outer loop
+      vertex -230.000000 12.985428 -493.662201
+      vertex -209.069046 12.986291 -493.669128
+      vertex -209.089096 12.945445 -493.341614
+    endloop
+  endfacet
+  facet normal 0.000000 -0.992312 -0.123759
+    outer loop
+      vertex -230.000000 12.945445 -493.341614
+      vertex -230.000000 12.985428 -493.662201
+      vertex -209.089096 12.945445 -493.341614
+    endloop
+  endfacet
+  facet normal 0.900352 -0.435162 -0.000150
+    outer loop
+      vertex -209.122101 12.877043 -493.015869
+      vertex -209.062851 12.991674 -470.000000
+      vertex -209.094666 12.925850 -470.000000
+    endloop
+  endfacet
+  facet normal 0.900359 -0.435149 -0.000151
+    outer loop
+      vertex -209.089096 12.945445 -493.341614
+      vertex -209.062851 12.991674 -470.000000
+      vertex -209.122101 12.877043 -493.015869
+    endloop
+  endfacet
+  facet normal 0.000014 -0.996585 -0.082571
+    outer loop
+      vertex -230.000000 12.985428 -493.662201
+      vertex -230.000000 12.986581 -493.676117
+      vertex -209.069046 12.986291 -493.669128
+    endloop
+  endfacet
+  facet normal 0.000000 0.915773 0.401697
+    outer loop
+      vertex -190.759033 5.385180 -502.682800
+      vertex -90.000000 5.216731 -502.298767
+      vertex -90.000000 5.296205 -502.479950
+    endloop
+  endfacet
+  facet normal 0.000000 0.915776 0.401689
+    outer loop
+      vertex -190.759033 5.385180 -502.682800
+      vertex -190.833801 5.216731 -502.298767
+      vertex -90.000000 5.216731 -502.298767
+    endloop
+  endfacet
+  facet normal -0.945842 0.324627 -0.000002
+    outer loop
+      vertex -190.732468 5.462380 -530.000000
+      vertex -190.758972 5.385156 -530.000000
+      vertex -190.759033 5.385180 -502.682800
+    endloop
+  endfacet
+  facet normal -0.401696 0.915773 0.000000
+    outer loop
+      vertex -195.437927 0.768277 -470.000000
+      vertex -195.356247 0.804103 -530.000000
+      vertex -196.077698 0.487644 -530.000000
+    endloop
+  endfacet
+  facet normal -0.401700 0.915771 0.000000
+    outer loop
+      vertex -196.077698 0.487644 -470.000000
+      vertex -195.437927 0.768277 -470.000000
+      vertex -196.077698 0.487644 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.837154 0.546967
+    outer loop
+      vertex -190.716019 5.482105 -502.903809
+      vertex -90.000000 5.482105 -502.903809
+      vertex -90.000000 5.672922 -503.195862
+    endloop
+  endfacet
+  facet normal 0.000000 0.915811 0.401610
+    outer loop
+      vertex -190.716019 5.482105 -502.903809
+      vertex -90.000000 5.436376 -502.799530
+      vertex -90.000000 5.482105 -502.903809
+    endloop
+  endfacet
+  facet normal 0.000000 0.915801 0.401631
+    outer loop
+      vertex -190.716019 5.482105 -502.903809
+      vertex -190.759033 5.385180 -502.682800
+      vertex -90.000000 5.436376 -502.799530
+    endloop
+  endfacet
+  facet normal 0.000014 -0.996591 0.082503
+    outer loop
+      vertex -230.000000 12.986501 -506.324829
+      vertex -230.000000 12.985349 -506.338745
+      vertex -209.069092 12.986210 -506.331848
+    endloop
+  endfacet
+  facet normal 0.897655 -0.440700 0.000017
+    outer loop
+      vertex -209.096329 12.929823 -530.000000
+      vertex -209.077377 12.968425 -530.000000
+      vertex -209.089096 12.945445 -506.658386
+    endloop
+  endfacet
+  facet normal 0.897680 -0.440648 0.000017
+    outer loop
+      vertex -209.077377 12.968425 -530.000000
+      vertex -209.069092 12.986210 -506.331848
+      vertex -209.089096 12.945445 -506.658386
+    endloop
+  endfacet
+  facet normal 0.000000 -0.978656 -0.205505
+    outer loop
+      vertex -230.000000 12.945445 -493.341614
+      vertex -209.089096 12.945445 -493.341614
+      vertex -209.122101 12.877043 -493.015869
+    endloop
+  endfacet
+  facet normal 0.000000 -0.978655 -0.205508
+    outer loop
+      vertex -230.000000 12.878484 -493.022736
+      vertex -230.000000 12.945445 -493.341614
+      vertex -209.122101 12.877043 -493.015869
+    endloop
+  endfacet
+  facet normal 0.904666 -0.426122 -0.000174
+    outer loop
+      vertex -209.166199 12.783269 -492.701202
+      vertex -209.094666 12.925850 -470.000000
+      vertex -209.137100 12.835760 -470.000000
+    endloop
+  endfacet
+  facet normal 0.904708 -0.426033 -0.000175
+    outer loop
+      vertex -209.122101 12.877043 -493.015869
+      vertex -209.094666 12.925850 -470.000000
+      vertex -209.166199 12.783269 -492.701202
+    endloop
+  endfacet
+  facet normal 0.000000 0.915784 0.401671
+    outer loop
+      vertex -190.759033 5.385180 -502.682800
+      vertex -90.000000 5.296205 -502.479950
+      vertex -90.000000 5.436376 -502.799530
+    endloop
+  endfacet
+  facet normal -0.245484 0.969401 0.000000
+    outer loop
+      vertex -196.077698 0.487644 -470.000000
+      vertex -196.077698 0.487644 -530.000000
+      vertex -196.754944 0.316143 -530.000000
+    endloop
+  endfacet
+  facet normal -0.245484 0.969401 0.000000
+    outer loop
+      vertex -196.841400 0.294249 -470.000000
+      vertex -196.077698 0.487644 -470.000000
+      vertex -196.754944 0.316143 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.992298 0.123877
+    outer loop
+      vertex -230.000000 12.985349 -506.338745
+      vertex -230.000000 12.945445 -506.658386
+      vertex -209.089096 12.945445 -506.658386
+    endloop
+  endfacet
+  facet normal 0.000000 -0.992298 0.123878
+    outer loop
+      vertex -230.000000 12.985349 -506.338745
+      vertex -209.089096 12.945445 -506.658386
+      vertex -209.069092 12.986210 -506.331848
+    endloop
+  endfacet
+  facet normal 0.900591 -0.434668 0.000012
+    outer loop
+      vertex -209.127365 12.865519 -530.000000
+      vertex -209.096329 12.929823 -530.000000
+      vertex -209.121750 12.877775 -506.981262
+    endloop
+  endfacet
+  facet normal 0.900605 -0.434639 0.000012
+    outer loop
+      vertex -209.096329 12.929823 -530.000000
+      vertex -209.089096 12.945445 -506.658386
+      vertex -209.121750 12.877775 -506.981262
+    endloop
+  endfacet
+  facet normal 0.000014 -0.969380 -0.245566
+    outer loop
+      vertex -230.000000 12.875067 -493.009247
+      vertex -230.000000 12.878484 -493.022736
+      vertex -209.122101 12.877043 -493.015869
+    endloop
+  endfacet
+  facet normal 0.000000 -0.958350 -0.285598
+    outer loop
+      vertex -230.000000 12.875067 -493.009247
+      vertex -209.122101 12.877043 -493.015869
+      vertex -209.166199 12.783269 -492.701202
+    endloop
+  endfacet
+  facet normal 0.000000 -0.958352 -0.285591
+    outer loop
+      vertex -230.000000 12.783269 -492.701202
+      vertex -230.000000 12.875067 -493.009247
+      vertex -209.166199 12.783269 -492.701202
+    endloop
+  endfacet
+  facet normal 0.913835 -0.406086 -0.000233
+    outer loop
+      vertex -209.240967 12.614820 -492.317169
+      vertex -209.137100 12.835760 -470.000000
+      vertex -209.208939 12.674099 -470.000000
+    endloop
+  endfacet
+  facet normal 0.913813 -0.406135 -0.000232
+    outer loop
+      vertex -209.166199 12.783269 -492.701202
+      vertex -209.137100 12.835760 -470.000000
+      vertex -209.240967 12.614820 -492.317169
+    endloop
+  endfacet
+  facet normal -0.245484 0.969401 0.000000
+    outer loop
+      vertex -196.841400 0.294249 -470.000000
+      vertex -196.754944 0.316143 -530.000000
+      vertex -197.518646 0.122748 -530.000000
+    endloop
+  endfacet
+  facet normal -0.245484 0.969401 0.000000
+    outer loop
+      vertex -197.518646 0.122748 -470.000000
+      vertex -196.841400 0.294249 -470.000000
+      vertex -197.518646 0.122748 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.978735 0.205130
+    outer loop
+      vertex -230.000000 12.945445 -506.658386
+      vertex -230.000000 12.879201 -506.974457
+      vertex -209.121750 12.877775 -506.981262
+    endloop
+  endfacet
+  facet normal 0.000000 -0.978735 0.205128
+    outer loop
+      vertex -230.000000 12.945445 -506.658386
+      vertex -209.121750 12.877775 -506.981262
+      vertex -209.089096 12.945445 -506.658386
+    endloop
+  endfacet
+  facet normal 0.904899 -0.425627 0.000006
+    outer loop
+      vertex -209.169693 12.775528 -530.000000
+      vertex -209.127365 12.865519 -530.000000
+      vertex -209.166199 12.783269 -507.298828
+    endloop
+  endfacet
+  facet normal 0.904902 -0.425620 0.000006
+    outer loop
+      vertex -209.127365 12.865519 -530.000000
+      vertex -209.121750 12.877775 -506.981262
+      vertex -209.166199 12.783269 -507.298828
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915829 -0.401568
+    outer loop
+      vertex -230.000000 12.777689 -492.688477
+      vertex -230.000000 12.783269 -492.701202
+      vertex -209.166199 12.783269 -492.701202
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915776 -0.401689
+    outer loop
+      vertex -230.000000 12.777689 -492.688477
+      vertex -209.166199 12.783269 -492.701202
+      vertex -209.240967 12.614820 -492.317169
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915778 -0.401684
+    outer loop
+      vertex -230.000000 12.612789 -492.312531
+      vertex -230.000000 12.777689 -492.688477
+      vertex -209.240967 12.614820 -492.317169
+    endloop
+  endfacet
+  facet normal 0.879447 -0.475998 0.000002
+    outer loop
+      vertex -209.240967 12.614820 -492.317169
+      vertex -209.208939 12.674099 -470.000000
+      vertex -209.241013 12.614840 -470.000000
+    endloop
+  endfacet
+  facet normal -0.082578 0.996585 0.000000
+    outer loop
+      vertex -197.518646 0.122748 -470.000000
+      vertex -197.518646 0.122748 -530.000000
+      vertex -198.214890 0.065057 -530.000000
+    endloop
+  endfacet
+  facet normal -0.082580 0.996584 0.000000
+    outer loop
+      vertex -198.303757 0.057692 -470.000000
+      vertex -197.518646 0.122748 -470.000000
+      vertex -198.214890 0.065057 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000014 -0.969380 0.245566
+    outer loop
+      vertex -230.000000 12.879201 -506.974457
+      vertex -230.000000 12.875784 -506.987946
+      vertex -209.121750 12.877775 -506.981262
+    endloop
+  endfacet
+  facet normal 0.914017 -0.405675 -0.000002
+    outer loop
+      vertex -209.241013 12.614840 -530.000000
+      vertex -209.169693 12.775528 -530.000000
+      vertex -209.240967 12.614820 -507.682800
+    endloop
+  endfacet
+  facet normal 0.914011 -0.405688 -0.000002
+    outer loop
+      vertex -209.169693 12.775528 -530.000000
+      vertex -209.166199 12.783269 -507.298828
+      vertex -209.240967 12.614820 -507.682800
+    endloop
+  endfacet
+  facet normal 0.000000 -0.958460 0.285226
+    outer loop
+      vertex -230.000000 12.875784 -506.987946
+      vertex -230.000000 12.783269 -507.298828
+      vertex -209.166199 12.783269 -507.298828
+    endloop
+  endfacet
+  facet normal 0.000000 -0.958458 0.285233
+    outer loop
+      vertex -230.000000 12.875784 -506.987946
+      vertex -209.166199 12.783269 -507.298828
+      vertex -209.121750 12.877775 -506.981262
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915761 -0.401724
+    outer loop
+      vertex -230.000000 12.612789 -492.312531
+      vertex -209.240967 12.614820 -492.317169
+      vertex -209.283997 12.517895 -492.096222
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915754 -0.401740
+    outer loop
+      vertex -230.000000 12.517895 -492.096222
+      vertex -230.000000 12.612789 -492.312531
+      vertex -209.283997 12.517895 -492.096222
+    endloop
+  endfacet
+  facet normal 0.914001 -0.405712 0.000002
+    outer loop
+      vertex -209.283997 12.517895 -492.096222
+      vertex -209.241013 12.614840 -470.000000
+      vertex -209.282104 12.522266 -470.000000
+    endloop
+  endfacet
+  facet normal 0.913981 -0.405757 0.000002
+    outer loop
+      vertex -209.240967 12.614820 -492.317169
+      vertex -209.241013 12.614840 -470.000000
+      vertex -209.283997 12.517895 -492.096222
+    endloop
+  endfacet
+  facet normal -0.082580 0.996584 0.000000
+    outer loop
+      vertex -198.303757 0.057692 -470.000000
+      vertex -198.214890 0.065057 -530.000000
+      vertex -199.000000 0.000000 -530.000000
+    endloop
+  endfacet
+  facet normal -0.082578 0.996585 0.000000
+    outer loop
+      vertex -199.000000 0.000000 -470.000000
+      vertex -198.303757 0.057692 -470.000000
+      vertex -199.000000 0.000000 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915748 0.401753
+    outer loop
+      vertex -230.000000 12.783269 -507.298828
+      vertex -230.000000 12.618349 -507.674744
+      vertex -209.240967 12.614820 -507.682800
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915753 0.401743
+    outer loop
+      vertex -230.000000 12.783269 -507.298828
+      vertex -209.240967 12.614820 -507.682800
+      vertex -209.166199 12.783269 -507.298828
+    endloop
+  endfacet
+  facet normal 0.945806 -0.324732 -0.000002
+    outer loop
+      vertex -209.262894 12.551109 -530.000000
+      vertex -209.241013 12.614840 -530.000000
+      vertex -209.240967 12.614820 -507.682800
+    endloop
+  endfacet
+  facet normal 0.000000 -0.837170 -0.546942
+    outer loop
+      vertex -230.000000 12.517895 -492.096222
+      vertex -209.283997 12.517895 -492.096222
+      vertex -209.428299 12.156562 -491.543152
+    endloop
+  endfacet
+  facet normal 0.000000 -0.837175 -0.546935
+    outer loop
+      vertex -230.000000 12.164065 -491.554626
+      vertex -230.000000 12.517895 -492.096222
+      vertex -209.428299 12.156562 -491.543152
+    endloop
+  endfacet
+  facet normal 0.928671 -0.370905 -0.000006
+    outer loop
+      vertex -209.428299 12.156562 -491.543152
+      vertex -209.282104 12.522266 -470.000000
+      vertex -209.420135 12.176665 -470.000000
+    endloop
+  endfacet
+  facet normal 0.928678 -0.370887 -0.000006
+    outer loop
+      vertex -209.283997 12.517895 -492.096222
+      vertex -209.282104 12.522266 -470.000000
+      vertex -209.428299 12.156562 -491.543152
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex -199.000000 0.000000 -530.000000
+      vertex -199.940002 0.000000 -470.000000
+      vertex -199.000000 0.000000 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex -200.059998 0.000000 -530.000000
+      vertex -199.940002 0.000000 -470.000000
+      vertex -199.000000 0.000000 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.916006 0.401165
+    outer loop
+      vertex -230.000000 12.618349 -507.674744
+      vertex -230.000000 12.612789 -507.687439
+      vertex -209.240967 12.614820 -507.682800
+    endloop
+  endfacet
+  facet normal 0.913746 -0.406286 0.000262
+    outer loop
+      vertex -209.303787 12.459139 -530.000000
+      vertex -209.262894 12.551109 -530.000000
+      vertex -209.283997 12.517895 -507.903809
+    endloop
+  endfacet
+  facet normal 0.913757 -0.406260 0.000262
+    outer loop
+      vertex -209.262894 12.551109 -530.000000
+      vertex -209.240967 12.614820 -507.682800
+      vertex -209.283997 12.517895 -507.903809
+    endloop
+  endfacet
+  facet normal 0.000000 -0.836940 -0.547294
+    outer loop
+      vertex -230.000000 12.156562 -491.543152
+      vertex -230.000000 12.164065 -491.554626
+      vertex -209.428299 12.156562 -491.543152
+    endloop
+  endfacet
+  facet normal 0.945359 -0.326031 -0.000054
+    outer loop
+      vertex -209.582581 11.709126 -491.057098
+      vertex -209.420135 12.176665 -470.000000
+      vertex -209.567978 11.747981 -470.000000
+    endloop
+  endfacet
+  facet normal 0.945359 -0.326030 -0.000054
+    outer loop
+      vertex -209.428299 12.156562 -491.543152
+      vertex -209.420135 12.176665 -470.000000
+      vertex -209.582581 11.709126 -491.057098
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex -200.059998 0.000000 -530.000000
+      vertex -201.000000 0.000000 -470.000000
+      vertex -199.940002 0.000000 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex -201.000000 0.000000 -530.000000
+      vertex -201.000000 0.000000 -470.000000
+      vertex -200.059998 0.000000 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915795 0.401645
+    outer loop
+      vertex -230.000000 12.612789 -507.687439
+      vertex -230.000000 12.517895 -507.903809
+      vertex -209.283997 12.517895 -507.903809
+    endloop
+  endfacet
+  facet normal 0.000000 -0.915801 0.401631
+    outer loop
+      vertex -230.000000 12.612789 -507.687439
+      vertex -209.283997 12.517895 -507.903809
+      vertex -209.240967 12.614820 -507.682800
+    endloop
+  endfacet
+  facet normal 0.928606 -0.371067 0.000155
+    outer loop
+      vertex -209.441284 12.115048 -530.000000
+      vertex -209.303787 12.459139 -530.000000
+      vertex -209.428299 12.156562 -508.456818
+    endloop
+  endfacet
+  facet normal 0.928599 -0.371084 0.000155
+    outer loop
+      vertex -209.303787 12.459139 -530.000000
+      vertex -209.283997 12.517895 -507.903809
+      vertex -209.428299 12.156562 -508.456818
+    endloop
+  endfacet
+  facet normal 0.000000 -0.735729 -0.677276
+    outer loop
+      vertex -230.000000 12.156562 -491.543152
+      vertex -209.428299 12.156562 -491.543152
+      vertex -209.582581 11.709126 -491.057098
+    endloop
+  endfacet
+  facet normal 0.000000 -0.735737 -0.677268
+    outer loop
+      vertex -230.000000 11.718349 -491.067108
+      vertex -230.000000 12.156562 -491.543152
+      vertex -209.582581 11.709126 -491.057098
+    endloop
+  endfacet
+  facet normal 0.961875 -0.273488 -0.000162
+    outer loop
+      vertex -209.724609 11.209369 -490.665527
+      vertex -209.567978 11.747981 -470.000000
+      vertex -209.704285 11.268581 -470.000000
+    endloop
+  endfacet
+  facet normal 0.961875 -0.273488 -0.000162
+    outer loop
+      vertex -209.724609 11.209369 -490.665527
+      vertex -209.582581 11.709126 -491.057098
+      vertex -209.567978 11.747981 -470.000000
+    endloop
+  endfacet
+  facet normal 0.082578 0.996585 0.000000
+    outer loop
+      vertex -201.000000 0.000000 -470.000000
+      vertex -201.000000 0.000000 -530.000000
+      vertex -201.696243 0.057692 -530.000000
+    endloop
+  endfacet
+  facet normal 0.082580 0.996584 0.000000
+    outer loop
+      vertex -201.785110 0.065057 -470.000000
+      vertex -201.000000 0.000000 -470.000000
+      vertex -201.696243 0.057692 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.837186 0.546918
+    outer loop
+      vertex -230.000000 12.517895 -507.903809
+      vertex -230.000000 12.510339 -507.915375
+      vertex -209.283997 12.517895 -507.903809
+    endloop
+  endfacet
+  facet normal 0.000000 -0.837142 0.546986
+    outer loop
+      vertex -230.000000 12.510339 -507.915375
+      vertex -230.000000 12.156562 -508.456818
+      vertex -209.428299 12.156562 -508.456818
+    endloop
+  endfacet
+  facet normal 0.000000 -0.837143 0.546984
+    outer loop
+      vertex -230.000000 12.510339 -507.915375
+      vertex -209.428299 12.156562 -508.456818
+      vertex -209.283997 12.517895 -507.903809
+    endloop
+  endfacet
+  facet normal 0.945358 -0.326035 0.000058
+    outer loop
+      vertex -209.441284 12.115048 -530.000000
+      vertex -209.428299 12.156562 -508.456818
+      vertex -209.582581 11.709126 -508.942902
+    endloop
+  endfacet
+  facet normal 0.945358 -0.326033 0.000058
+    outer loop
+      vertex -209.588669 11.687696 -530.000000
+      vertex -209.441284 12.115048 -530.000000
+      vertex -209.582581 11.709126 -508.942902
+    endloop
+  endfacet
+  facet normal 0.000000 -0.735383 -0.677651
+    outer loop
+      vertex -230.000000 11.709126 -491.057098
+      vertex -230.000000 11.718349 -491.067108
+      vertex -209.582581 11.709126 -491.057098
+    endloop
+  endfacet
+  facet normal 0.000002 -0.616772 -0.787142
+    outer loop
+      vertex -209.724609 11.209369 -490.665527
+      vertex -230.000000 11.208927 -490.665222
+      vertex -230.000000 11.698379 -491.048737
+    endloop
+  endfacet
+  facet normal 0.000002 -0.616755 -0.787155
+    outer loop
+      vertex -209.582581 11.709126 -491.057098
+      vertex -209.724609 11.209369 -490.665527
+      vertex -230.000000 11.698379 -491.048737
+    endloop
+  endfacet
+  facet normal 0.945832 -0.324656 0.000000
+    outer loop
+      vertex -209.724609 11.209369 -490.665527
+      vertex -209.704285 11.268581 -470.000000
+      vertex -209.724609 11.209369 -470.000000
+    endloop
+  endfacet
+  facet normal 0.082580 0.996584 0.000000
+    outer loop
+      vertex -201.785110 0.065057 -470.000000
+      vertex -201.696243 0.057692 -530.000000
+      vertex -202.481354 0.122748 -530.000000
+    endloop
+  endfacet
+  facet normal 0.082578 0.996585 0.000000
+    outer loop
+      vertex -202.481354 0.122748 -470.000000
+      vertex -201.785110 0.065057 -470.000000
+      vertex -202.481354 0.122748 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.735953 0.677032
+    outer loop
+      vertex -230.000000 12.156562 -508.456818
+      vertex -230.000000 12.147269 -508.466919
+      vertex -209.428299 12.156562 -508.456818
+    endloop
+  endfacet
+  facet normal 0.962250 -0.272168 -0.000001
+    outer loop
+      vertex -209.588669 11.687696 -530.000000
+      vertex -209.582581 11.709126 -508.942902
+      vertex -209.723984 11.209196 -509.332001
+    endloop
+  endfacet
+  facet normal 0.962246 -0.272180 -0.000002
+    outer loop
+      vertex -209.724014 11.209204 -530.000000
+      vertex -209.588669 11.687696 -530.000000
+      vertex -209.723984 11.209196 -509.332001
+    endloop
+  endfacet
+  facet normal 0.000000 -0.735746 0.677257
+    outer loop
+      vertex -230.000000 12.147269 -508.466919
+      vertex -230.000000 11.709126 -508.942902
+      vertex -209.582581 11.709126 -508.942902
+    endloop
+  endfacet
+  facet normal 0.000000 -0.735751 0.677253
+    outer loop
+      vertex -230.000000 12.147269 -508.466919
+      vertex -209.582581 11.709126 -508.942902
+      vertex -209.428299 12.156562 -508.456818
+    endloop
+  endfacet
+  facet normal 0.000000 -0.614081 -0.789243
+    outer loop
+      vertex -209.582581 11.709126 -491.057098
+      vertex -230.000000 11.698379 -491.048737
+      vertex -230.000000 11.709126 -491.057098
+    endloop
+  endfacet
+  facet normal -0.000002 -0.477302 -0.878739
+    outer loop
+      vertex -209.729507 11.186769 -490.653229
+      vertex -230.000000 11.186790 -490.653198
+      vertex -230.000000 11.208927 -490.665222
+    endloop
+  endfacet
+  facet normal -0.000003 -0.478005 -0.878357
+    outer loop
+      vertex -209.724609 11.209369 -490.665527
+      vertex -209.729507 11.186769 -490.653229
+      vertex -230.000000 11.208927 -490.665222
+    endloop
+  endfacet
+  facet normal 0.977380 -0.211493 0.000000
+    outer loop
+      vertex -209.729507 11.186769 -490.653229
+      vertex -209.724609 11.209369 -470.000000
+      vertex -209.729294 11.187720 -470.000000
+    endloop
+  endfacet
+  facet normal 0.977309 -0.211818 0.000000
+    outer loop
+      vertex -209.729507 11.186769 -490.653229
+      vertex -209.724609 11.209369 -490.665527
+      vertex -209.724609 11.209369 -470.000000
+    endloop
+  endfacet
+  facet normal 0.245484 0.969401 0.000000
+    outer loop
+      vertex -202.481354 0.122748 -470.000000
+      vertex -202.481354 0.122748 -530.000000
+      vertex -203.158600 0.294249 -530.000000
+    endloop
+  endfacet
+  facet normal 0.245484 0.969401 0.000000
+    outer loop
+      vertex -203.245056 0.316143 -470.000000
+      vertex -202.481354 0.122748 -470.000000
+      vertex -203.158600 0.294249 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.614203 0.789148
+    outer loop
+      vertex -209.723984 11.209196 -509.332001
+      vertex -230.000000 11.709126 -508.942902
+      vertex -230.000000 11.219432 -509.324036
+    endloop
+  endfacet
+  facet normal 0.000000 -0.614201 0.789149
+    outer loop
+      vertex -209.723984 11.209196 -509.332001
+      vertex -209.582581 11.709126 -508.942902
+      vertex -230.000000 11.709126 -508.942902
+    endloop
+  endfacet
+  facet normal 0.986377 -0.164503 -0.000002
+    outer loop
+      vertex -209.734314 11.147446 -530.000000
+      vertex -209.724014 11.209204 -530.000000
+      vertex -209.723984 11.209196 -509.332001
+    endloop
+  endfacet
+  facet normal -0.000002 -0.478835 -0.877905
+    outer loop
+      vertex -209.855408 10.606782 -490.336884
+      vertex -230.000000 10.618603 -490.343292
+      vertex -230.000000 11.186790 -490.653198
+    endloop
+  endfacet
+  facet normal -0.000002 -0.478838 -0.877903
+    outer loop
+      vertex -209.729507 11.186769 -490.653229
+      vertex -209.855408 10.606782 -490.336884
+      vertex -230.000000 11.186790 -490.653198
+    endloop
+  endfacet
+  facet normal 0.977241 -0.212134 0.000000
+    outer loop
+      vertex -209.855408 10.606782 -490.336884
+      vertex -209.729294 11.187720 -470.000000
+      vertex -209.849976 10.631775 -470.000000
+    endloop
+  endfacet
+  facet normal 0.977241 -0.212134 0.000000
+    outer loop
+      vertex -209.855408 10.606782 -490.336884
+      vertex -209.729507 11.186769 -490.653229
+      vertex -209.729294 11.187720 -470.000000
+    endloop
+  endfacet
+  facet normal 0.245484 0.969401 0.000000
+    outer loop
+      vertex -203.245056 0.316143 -470.000000
+      vertex -203.158600 0.294249 -530.000000
+      vertex -203.922302 0.487644 -530.000000
+    endloop
+  endfacet
+  facet normal 0.245484 0.969401 0.000000
+    outer loop
+      vertex -203.922302 0.487644 -470.000000
+      vertex -203.245056 0.316143 -470.000000
+      vertex -203.922302 0.487644 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.613867 0.789409
+    outer loop
+      vertex -209.723984 11.209196 -509.332001
+      vertex -230.000000 11.219432 -509.324036
+      vertex -230.000000 11.208757 -509.332336
+    endloop
+  endfacet
+  facet normal 0.962139 -0.272560 0.000333
+    outer loop
+      vertex -209.734314 11.147446 -530.000000
+      vertex -209.723984 11.209196 -509.332001
+      vertex -209.730042 11.187792 -509.348694
+    endloop
+  endfacet
+  facet normal 0.962094 -0.272718 0.000334
+    outer loop
+      vertex -209.740112 11.126990 -530.000000
+      vertex -209.734314 11.147446 -530.000000
+      vertex -209.730042 11.187792 -509.348694
+    endloop
+  endfacet
+  facet normal 0.000000 -0.476614 -0.879112
+    outer loop
+      vertex -209.855408 10.606782 -490.336884
+      vertex -230.000000 10.606782 -490.336884
+      vertex -230.000000 10.618603 -490.343292
+    endloop
+  endfacet
+  facet normal 0.989587 -0.143938 -0.000087
+    outer loop
+      vertex -209.946274 9.981941 -490.122406
+      vertex -209.855408 10.606782 -490.336884
+      vertex -209.849976 10.631775 -470.000000
+    endloop
+  endfacet
+  facet normal 0.989583 -0.143960 -0.000087
+    outer loop
+      vertex -209.946274 9.981941 -490.122406
+      vertex -209.849976 10.631775 -470.000000
+      vertex -209.937180 10.032334 -470.000000
+    endloop
+  endfacet
+  facet normal 0.401700 0.915771 0.000000
+    outer loop
+      vertex -203.922302 0.487644 -470.000000
+      vertex -203.922302 0.487644 -530.000000
+      vertex -204.562073 0.768277 -530.000000
+    endloop
+  endfacet
+  facet normal 0.401696 0.915773 0.000000
+    outer loop
+      vertex -204.643753 0.804103 -470.000000
+      vertex -203.922302 0.487644 -470.000000
+      vertex -204.562073 0.768277 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.615132 0.788424
+    outer loop
+      vertex -209.730042 11.187792 -509.348694
+      vertex -230.000000 11.208757 -509.332336
+      vertex -230.000000 11.187792 -509.348694
+    endloop
+  endfacet
+  facet normal 0.000000 -0.614981 0.788542
+    outer loop
+      vertex -209.730042 11.187792 -509.348694
+      vertex -209.723984 11.209196 -509.332001
+      vertex -230.000000 11.208757 -509.332336
+    endloop
+  endfacet
+  facet normal 0.977487 -0.210994 0.000145
+    outer loop
+      vertex -209.740112 11.126990 -530.000000
+      vertex -209.730042 11.187792 -509.348694
+      vertex -209.855408 10.606782 -509.663116
+    endloop
+  endfacet
+  facet normal 0.977491 -0.210978 0.000145
+    outer loop
+      vertex -209.860123 10.570965 -530.000000
+      vertex -209.740112 11.126990 -530.000000
+      vertex -209.855408 10.606782 -509.663116
+    endloop
+  endfacet
+  facet normal -0.000001 -0.324673 -0.945826
+    outer loop
+      vertex -209.946274 9.981941 -490.122406
+      vertex -230.000000 9.994597 -490.126740
+      vertex -230.000000 10.606782 -490.336884
+    endloop
+  endfacet
+  facet normal 0.000000 -0.324658 -0.945831
+    outer loop
+      vertex -209.855408 10.606782 -490.336884
+      vertex -209.946274 9.981941 -490.122406
+      vertex -230.000000 10.606782 -490.336884
+    endloop
+  endfacet
+  facet normal 0.995394 -0.095874 -0.000210
+    outer loop
+      vertex -209.969269 9.743214 -490.069672
+      vertex -209.937180 10.032334 -470.000000
+      vertex -209.959244 9.803257 -470.000000
+    endloop
+  endfacet
+  facet normal 0.995389 -0.095925 -0.000210
+    outer loop
+      vertex -209.969269 9.743214 -490.069672
+      vertex -209.946274 9.981941 -490.122406
+      vertex -209.937180 10.032334 -470.000000
+    endloop
+  endfacet
+  facet normal 0.401696 0.915773 0.000000
+    outer loop
+      vertex -204.643753 0.804103 -470.000000
+      vertex -204.562073 0.768277 -530.000000
+      vertex -205.283524 1.084736 -530.000000
+    endloop
+  endfacet
+  facet normal 0.401700 0.915771 0.000000
+    outer loop
+      vertex -205.283524 1.084736 -470.000000
+      vertex -204.643753 0.804103 -470.000000
+      vertex -205.283524 1.084736 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.476142 0.879368
+    outer loop
+      vertex -209.730042 11.187792 -509.348694
+      vertex -230.000000 11.187792 -509.348694
+      vertex -230.000000 11.175900 -509.355133
+    endloop
+  endfacet
+  facet normal 0.989590 -0.143917 0.000024
+    outer loop
+      vertex -209.860123 10.570965 -530.000000
+      vertex -209.855408 10.606782 -509.663116
+      vertex -209.946274 9.981941 -509.877625
+    endloop
+  endfacet
+  facet normal 0.989588 -0.143932 0.000024
+    outer loop
+      vertex -209.947220 9.972140 -530.000000
+      vertex -209.860123 10.570965 -530.000000
+      vertex -209.946274 9.981941 -509.877625
+    endloop
+  endfacet
+  facet normal 0.000000 -0.475938 0.879479
+    outer loop
+      vertex -209.855408 10.606782 -509.663116
+      vertex -230.000000 11.175900 -509.355133
+      vertex -230.000000 10.606782 -509.663116
+    endloop
+  endfacet
+  facet normal 0.000000 -0.475942 0.879476
+    outer loop
+      vertex -209.855408 10.606782 -509.663116
+      vertex -209.730042 11.187792 -509.348694
+      vertex -230.000000 11.175900 -509.355133
+    endloop
+  endfacet
+  facet normal 0.000000 -0.323938 -0.946078
+    outer loop
+      vertex -209.946274 9.981941 -490.122406
+      vertex -230.000000 9.981941 -490.122406
+      vertex -230.000000 9.994597 -490.126740
+    endloop
+  endfacet
+  facet normal 0.000035 -0.215706 -0.976458
+    outer loop
+      vertex -209.969269 9.743214 -490.069672
+      vertex -230.000000 9.734859 -490.068542
+      vertex -230.000000 9.968742 -490.120209
+    endloop
+  endfacet
+  facet normal 0.000035 -0.215701 -0.976459
+    outer loop
+      vertex -209.946274 9.981941 -490.122406
+      vertex -209.969269 9.743214 -490.069672
+      vertex -230.000000 9.968742 -490.120209
+    endloop
+  endfacet
+  facet normal 0.986346 -0.164684 0.000000
+    outer loop
+      vertex -209.969269 9.743214 -490.069672
+      vertex -209.959244 9.803257 -470.000000
+      vertex -209.969269 9.743214 -470.000000
+    endloop
+  endfacet
+  facet normal 0.546944 0.837169 0.000000
+    outer loop
+      vertex -205.283524 1.084736 -470.000000
+      vertex -205.283524 1.084736 -530.000000
+      vertex -205.868393 1.466845 -530.000000
+    endloop
+  endfacet
+  facet normal 0.546945 0.837168 0.000000
+    outer loop
+      vertex -205.943054 1.515625 -470.000000
+      vertex -205.283524 1.084736 -470.000000
+      vertex -205.868393 1.466845 -530.000000
+    endloop
+  endfacet
+  facet normal 0.995393 -0.095879 0.000000
+    outer loop
+      vertex -209.947220 9.972140 -530.000000
+      vertex -209.946274 9.981941 -509.877625
+      vertex -209.969269 9.743214 -509.930359
+    endloop
+  endfacet
+  facet normal 0.995394 -0.095871 0.000000
+    outer loop
+      vertex -209.969269 9.743214 -530.000000
+      vertex -209.947220 9.972140 -530.000000
+      vertex -209.969269 9.743214 -509.930359
+    endloop
+  endfacet
+  facet normal 0.000000 -0.324700 0.945817
+    outer loop
+      vertex -209.946274 9.981941 -509.877625
+      vertex -230.000000 10.594069 -509.667480
+      vertex -230.000000 9.981941 -509.877625
+    endloop
+  endfacet
+  facet normal 0.000000 -0.324699 0.945817
+    outer loop
+      vertex -209.946274 9.981941 -509.877625
+      vertex -209.855408 10.606782 -509.663116
+      vertex -230.000000 10.594069 -509.667480
+    endloop
+  endfacet
+  facet normal 0.000000 -0.324687 0.945821
+    outer loop
+      vertex -209.855408 10.606782 -509.663116
+      vertex -230.000000 10.606782 -509.663116
+      vertex -230.000000 10.594069 -509.667480
+    endloop
+  endfacet
+  facet normal 0.000000 -0.164214 -0.986425
+    outer loop
+      vertex -209.946274 9.981941 -490.122406
+      vertex -230.000000 9.968742 -490.120209
+      vertex -230.000000 9.981941 -490.122406
+    endloop
+  endfacet
+  facet normal 0.000000 -0.134406 -0.990926
+    outer loop
+      vertex -209.993942 9.330317 -490.013672
+      vertex -230.000000 9.330317 -490.013672
+      vertex -230.000000 9.734859 -490.068542
+    endloop
+  endfacet
+  facet normal 0.000000 -0.134396 -0.990928
+    outer loop
+      vertex -209.969269 9.743214 -490.069672
+      vertex -209.993942 9.330317 -490.013672
+      vertex -230.000000 9.734859 -490.068542
+    endloop
+  endfacet
+  facet normal 0.998219 -0.059652 0.000000
+    outer loop
+      vertex -209.993942 9.330317 -490.013672
+      vertex -209.969269 9.743214 -470.000000
+      vertex -209.992935 9.347181 -470.000000
+    endloop
+  endfacet
+  facet normal 0.998219 -0.059651 0.000000
+    outer loop
+      vertex -209.993942 9.330317 -490.013672
+      vertex -209.969269 9.743214 -490.069672
+      vertex -209.969269 9.743214 -470.000000
+    endloop
+  endfacet
+  facet normal 0.546945 0.837168 0.000000
+    outer loop
+      vertex -205.943054 1.515625 -470.000000
+      vertex -205.868393 1.466845 -530.000000
+      vertex -206.527924 1.897735 -530.000000
+    endloop
+  endfacet
+  facet normal 0.546944 0.837169 0.000000
+    outer loop
+      vertex -206.527924 1.897735 -470.000000
+      vertex -205.943054 1.515625 -470.000000
+      vertex -206.527924 1.897735 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.215698 0.976460
+    outer loop
+      vertex -209.969269 9.743214 -509.930359
+      vertex -209.946274 9.981941 -509.877625
+      vertex -230.000000 9.981941 -509.877625
+    endloop
+  endfacet
+  facet normal 0.000000 -0.215693 0.976461
+    outer loop
+      vertex -209.969269 9.743214 -509.930359
+      vertex -230.000000 9.981941 -509.877625
+      vertex -230.000000 9.748044 -509.929291
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex -209.969269 9.743214 -509.930359
+      vertex -209.969269 9.682341 -530.000000
+      vertex -209.969269 9.743214 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -209.993942 9.330317 -490.013672
+      vertex -230.000000 9.316967 -490.013672
+      vertex -230.000000 9.330317 -490.013672
+    endloop
+  endfacet
+  facet normal 0.999832 -0.018309 -0.000035
+    outer loop
+      vertex -210.000015 8.998481 -490.000000
+      vertex -209.992935 9.347181 -470.000000
+      vertex -209.998764 9.028878 -470.000000
+    endloop
+  endfacet
+  facet normal 0.999833 -0.018300 -0.000035
+    outer loop
+      vertex -210.000015 8.998481 -490.000000
+      vertex -209.993942 9.330317 -490.013672
+      vertex -209.992935 9.347181 -470.000000
+    endloop
+  endfacet
+  facet normal 0.677282 0.735724 0.000000
+    outer loop
+      vertex -206.527924 1.897735 -470.000000
+      vertex -206.527924 1.897735 -530.000000
+      vertex -207.041916 2.370898 -530.000000
+    endloop
+  endfacet
+  facet normal 0.677284 0.735722 0.000000
+    outer loop
+      vertex -207.107529 2.431302 -470.000000
+      vertex -206.527924 1.897735 -470.000000
+      vertex -207.041916 2.370898 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000020 -0.134327 0.990937
+    outer loop
+      vertex -209.993942 9.330317 -509.986328
+      vertex -230.000000 9.748044 -509.929291
+      vertex -230.000000 9.343486 -509.984131
+    endloop
+  endfacet
+  facet normal 0.000020 -0.134326 0.990937
+    outer loop
+      vertex -209.993942 9.330317 -509.986328
+      vertex -209.969269 9.743214 -509.930359
+      vertex -230.000000 9.748044 -509.929291
+    endloop
+  endfacet
+  facet normal 0.998218 -0.059675 0.000181
+    outer loop
+      vertex -209.969269 9.682341 -530.000000
+      vertex -209.969269 9.743214 -509.930359
+      vertex -209.993942 9.330317 -509.986328
+    endloop
+  endfacet
+  facet normal 0.998218 -0.059677 0.000181
+    outer loop
+      vertex -209.992935 9.286471 -530.000000
+      vertex -209.969269 9.682341 -530.000000
+      vertex -209.993942 9.330317 -509.986328
+    endloop
+  endfacet
+  facet normal 0.000027 -0.041171 -0.999152
+    outer loop
+      vertex -210.000015 8.998481 -490.000000
+      vertex -230.000000 8.991838 -490.000275
+      vertex -230.000000 9.316967 -490.013672
+    endloop
+  endfacet
+  facet normal 0.000027 -0.041166 -0.999152
+    outer loop
+      vertex -209.993942 9.330317 -490.013672
+      vertex -210.000015 8.998481 -490.000000
+      vertex -230.000000 9.316967 -490.013672
+    endloop
+  endfacet
+  facet normal 0.999829 0.018481 -0.000091
+    outer loop
+      vertex -210.000015 8.998481 -490.000000
+      vertex -209.998764 9.028878 -470.000000
+      vertex -209.992935 8.713528 -470.000000
+    endloop
+  endfacet
+  facet normal 0.999829 0.018471 -0.000091
+    outer loop
+      vertex -209.993942 8.669682 -490.013672
+      vertex -210.000015 8.998481 -490.000000
+      vertex -209.992935 8.713528 -470.000000
+    endloop
+  endfacet
+  facet normal 0.677284 0.735722 0.000000
+    outer loop
+      vertex -207.107529 2.431302 -470.000000
+      vertex -207.041916 2.370898 -530.000000
+      vertex -207.621521 2.904465 -530.000000
+    endloop
+  endfacet
+  facet normal 0.677282 0.735724 0.000000
+    outer loop
+      vertex -207.621521 2.904465 -470.000000
+      vertex -207.107529 2.431302 -470.000000
+      vertex -207.621521 2.904465 -530.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.164584 0.986363
+    outer loop
+      vertex -209.993942 9.330317 -509.986328
+      vertex -230.000000 9.343486 -509.984131
+      vertex -230.000000 9.330317 -509.986328
+    endloop
+  endfacet
+  facet normal 0.999829 -0.018471 0.000091
+    outer loop
+      vertex -209.992935 9.286471 -530.000000
+      vertex -209.993942 9.330317 -509.986328
+      vertex -210.000015 9.001518 -510.000000
+    endloop
+  endfacet
+  facet normal 0.999829 -0.018481 0.000091
+    outer loop
+      vertex -209.998764 8.971121 -530.000000
+      vertex -209.992935 9.286471 -530.000000
+      vertex -210.000015 9.001518 -510.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.041545 -0.999137
+    outer loop
+      vertex -210.000015 8.998481 -490.000000
+      vertex -209.993942 8.669682 -490.013672
+      vertex -230.000000 8.669682 -490.013672
+    endloop
+  endfacet
+  facet normal 0.000000 0.041550 -0.999136
+    outer loop
+      vertex -210.000015 8.998481 -490.000000
+      vertex -230.000000 8.669682 -490.013672
+      vertex -230.000000 8.991838 -490.000275
+    endloop
+  endfacet
+  facet normal 0.998218 0.059677 -0.000181
+    outer loop
+      vertex -209.993942 8.669682 -490.013672
+      vertex -209.992935 8.713528 -470.000000
+      vertex -209.969269 8.317658 -470.000000
+    endloop
+  endfacet
+  facet normal 0.998218 0.059675 -0.000181
+    outer loop
+      vertex -209.969269 8.256785 -490.069672
+      vertex -209.993942 8.669682 -490.013672
+      vertex -209.969269 8.317658 -470.000000
+    endloop
+  endfacet
+  facet normal 0.789137 0.614217 0.000000
+    outer loop
+      vertex -208.050629 3.455776 -530.000000
+      vertex -208.105408 3.526156 -470.000000
+      vertex -207.621521 2.904465 -470.000000
+    endloop
+  endfacet
+  facet normal 0.789137 0.614218 0.000000
+    outer loop
+      vertex -207.621521 2.904465 -530.000000
+      vertex -208.050629 3.455776 -530.000000
+      vertex -207.621521 2.904465 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.041545 0.999137
+    outer loop
+      vertex -210.000015 9.001518 -510.000000
+      vertex -209.993942 9.330317 -509.986328
+      vertex -230.000000 9.330317 -509.986328
+    endloop
+  endfacet
+  facet normal 0.000000 -0.041550 0.999136
+    outer loop
+      vertex -210.000015 9.001518 -510.000000
+      vertex -230.000000 9.330317 -509.986328
+      vertex -230.000000 9.008161 -509.999725
+    endloop
+  endfacet
+  facet normal 0.999833 0.018300 0.000035
+    outer loop
+      vertex -209.992935 8.652818 -530.000000
+      vertex -210.000015 9.001518 -510.000000
+      vertex -209.993942 8.669682 -509.986328
+    endloop
+  endfacet
+  facet normal 0.999832 0.018309 0.000035
+    outer loop
+      vertex -209.992935 8.652818 -530.000000
+      vertex -209.998764 8.971121 -530.000000
+      vertex -210.000015 9.001518 -510.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.164584 -0.986363
+    outer loop
+      vertex -209.993942 8.669682 -490.013672
+      vertex -230.000000 8.656513 -490.015869
+      vertex -230.000000 8.669682 -490.013672
+    endloop
+  endfacet
+  facet normal 0.000020 0.134400 -0.990927
+    outer loop
+      vertex -209.993942 8.669682 -490.013672
+      vertex -230.000000 8.251955 -490.070740
+      vertex -230.000000 8.656513 -490.015869
+    endloop
+  endfacet
+  facet normal 0.000020 0.134397 -0.990927
+    outer loop
+      vertex -209.993942 8.669682 -490.013672
+      vertex -209.969269 8.256785 -490.069672
+      vertex -230.000000 8.251955 -490.070740
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex -209.969269 8.256785 -490.069672
+      vertex -209.969269 8.317658 -470.000000
+      vertex -209.969269 8.256785 -470.000000
+    endloop
+  endfacet
+  facet normal 0.789137 0.614218 0.000000
+    outer loop
+      vertex -208.534515 4.077466 -530.000000
+      vertex -208.534515 4.077466 -470.000000
+      vertex -208.105408 3.526156 -470.000000
+    endloop
+  endfacet
+  facet normal 0.789137 0.614217 0.000000
+    outer loop
+      vertex -208.050629 3.455776 -530.000000
+      vertex -208.534515 4.077466 -530.000000
+      vertex -208.105408 3.526156 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000027 0.041171 0.999152
+    outer loop
+      vertex -210.000015 9.001518 -510.000000
+      vertex -230.000000 9.008161 -509.999725
+      vertex -230.000000 8.683032 -509.986328
+    endloop
+  endfacet
+  facet normal 0.000027 0.041166 0.999152
+    outer loop
+      vertex -209.993942 8.669682 -509.986328
+      vertex -210.000015 9.001518 -510.000000
+      vertex -230.000000 8.683032 -509.986328
+    endloop
+  endfacet
+  facet normal 0.998219 0.059651 0.000000
+    outer loop
+      vertex -209.969269 8.256785 -530.000000
+      vertex -209.993942 8.669682 -509.986328
+      vertex -209.969269 8.256785 -509.930359
+    endloop
+  endfacet
+  facet normal 0.998219 0.059652 0.000000
+    outer loop
+      vertex -209.969269 8.256785 -530.000000
+      vertex -209.992935 8.652818 -530.000000
+      vertex -209.993942 8.669682 -509.986328
+    endloop
+  endfacet
+  facet normal 0.000000 0.215698 -0.976460
+    outer loop
+      vertex -209.969269 8.256785 -490.069672
+      vertex -209.946274 8.018058 -490.122406
+      vertex -230.000000 8.018058 -490.122406
+    endloop
+  endfacet
+  facet normal 0.000000 0.215693 -0.976461
+    outer loop
+      vertex -209.969269 8.256785 -490.069672
+      vertex -230.000000 8.018058 -490.122406
+      vertex -230.000000 8.251955 -490.070740
+    endloop
+  endfacet
+  facet normal 0.995394 0.095871 0.000000
+    outer loop
+      vertex -209.969269 8.256785 -490.069672
+      vertex -209.969269 8.256785 -470.000000
+      vertex -209.947220 8.027859 -470.000000
+    endloop
+  endfacet
+  facet normal 0.995393 0.095879 0.000000
+    outer loop
+      vertex -209.946274 8.018058 -490.122406
+      vertex -209.969269 8.256785 -490.069672
+      vertex -209.947220 8.027859 -470.000000
+    endloop
+  endfacet
+  facet normal 0.868007 0.496552 0.000000
+    outer loop
+      vertex -209.062256 5.000000 -494.000000
+      vertex -209.036621 4.955180 -470.000000
+      vertex -208.534515 4.077466 -470.000000
+    endloop
+  endfacet
+  facet normal 0.868011 0.496545 0.000000
+    outer loop
+      vertex -208.534515 4.077466 -530.000000
+      vertex -209.024704 4.934365 -530.000000
+      vertex -209.062256 5.000000 -494.000000
+    endloop
+  endfacet
+  facet normal 0.868009 0.496549 0.000000
+    outer loop
+      vertex -208.534515 4.077466 -470.000000
+      vertex -208.534515 4.077466 -530.000000
+      vertex -209.062256 5.000000 -494.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -209.993942 8.669682 -509.986328
+      vertex -230.000000 8.683032 -509.986328
+      vertex -230.000000 8.669682 -509.986328
+    endloop
+  endfacet
+  facet normal 0.000000 0.134332 0.990936
+    outer loop
+      vertex -209.993942 8.669682 -509.986328
+      vertex -230.000000 8.669682 -509.986328
+      vertex -230.000000 8.265140 -509.931488
+    endloop
+  endfacet
+  facet normal 0.000000 0.134324 0.990937
+    outer loop
+      vertex -209.969269 8.256785 -509.930359
+      vertex -209.993942 8.669682 -509.986328
+      vertex -230.000000 8.265140 -509.931488
+    endloop
+  endfacet
+  facet normal 0.986346 0.164684 0.000000
+    outer loop
+      vertex -209.959244 8.196742 -530.000000
+      vertex -209.969269 8.256785 -530.000000
+      vertex -209.969269 8.256785 -509.930359
+    endloop
+  endfacet
+  facet normal 0.000000 0.324658 -0.945832
+    outer loop
+      vertex -209.946274 8.018058 -490.122406
+      vertex -230.000000 7.405930 -490.332520
+      vertex -230.000000 8.018058 -490.122406
+    endloop
+  endfacet
+  facet normal 0.000000 0.324658 -0.945831
+    outer loop
+      vertex -209.946274 8.018058 -490.122406
+      vertex -209.855408 7.393218 -490.336884
+      vertex -230.000000 7.405930 -490.332520
+    endloop
+  endfacet
+  facet normal 0.989588 0.143932 -0.000024
+    outer loop
+      vertex -209.946274 8.018058 -490.122406
+      vertex -209.947220 8.027859 -470.000000
+      vertex -209.860123 7.429034 -470.000000
+    endloop
+  endfacet
+  facet normal 0.989590 0.143917 -0.000024
+    outer loop
+      vertex -209.855408 7.393218 -490.336884
+      vertex -209.946274 8.018058 -490.122406
+      vertex -209.860123 7.429034 -470.000000
+    endloop
+  endfacet
+  facet normal 0.879519 0.475863 -0.000051
+    outer loop
+      vertex -209.062256 5.000000 -494.000000
+      vertex -209.070984 5.018692 -470.000000
+      vertex -209.036621 4.955180 -470.000000
+    endloop
+  endfacet
+  facet normal 0.867837 0.496850 -0.000001
+    outer loop
+      vertex -209.024704 4.934365 -530.000000
+      vertex -209.036621 4.955180 -530.000000
+      vertex -209.062256 5.000000 -505.999969
+    endloop
+  endfacet
+  facet normal 0.867979 0.496601 0.000000
+    outer loop
+      vertex -209.062256 5.000000 -494.000000
+      vertex -209.024704 4.934365 -530.000000
+      vertex -209.062256 5.000000 -505.999969
+    endloop
+  endfacet
+  facet normal 0.000035 0.215706 0.976458
+    outer loop
+      vertex -209.969269 8.256785 -509.930359
+      vertex -230.000000 8.265140 -509.931488
+      vertex -230.000000 8.031257 -509.879822
+    endloop
+  endfacet
+  facet normal 0.000035 0.215701 0.976459
+    outer loop
+      vertex -209.946274 8.018058 -509.877625
+      vertex -209.969269 8.256785 -509.930359
+      vertex -230.000000 8.031257 -509.879822
+    endloop
+  endfacet
+  facet normal 0.995389 0.095925 0.000210
+    outer loop
+      vertex -209.937180 7.967665 -530.000000
+      vertex -209.969269 8.256785 -509.930359
+      vertex -209.946274 8.018058 -509.877625
+    endloop
+  endfacet
+  facet normal 0.995393 0.095874 0.000210
+    outer loop
+      vertex -209.937180 7.967665 -530.000000
+      vertex -209.959244 8.196742 -530.000000
+      vertex -209.969269 8.256785 -509.930359
+    endloop
+  endfacet
+  facet normal 0.000000 0.324687 -0.945821
+    outer loop
+      vertex -209.855408 7.393218 -490.336884
+      vertex -230.000000 7.393218 -490.336884
+      vertex -230.000000 7.405930 -490.332520
+    endloop
+  endfacet
+  facet normal 0.977491 0.210978 -0.000145
+    outer loop
+      vertex -209.855408 7.393218 -490.336884
+      vertex -209.860123 7.429034 -470.000000
+      vertex -209.740112 6.873009 -470.000000
+    endloop
+  endfacet
+  facet normal 0.977488 0.210993 -0.000145
+    outer loop
+      vertex -209.730042 6.812207 -490.651337
+      vertex -209.855408 7.393218 -490.336884
+      vertex -209.740112 6.873009 -470.000000
+    endloop
+  endfacet
+  facet normal 0.895750 0.444559 -0.000020
+    outer loop
+      vertex -209.069092 5.013789 -493.668152
+      vertex -209.077377 5.031574 -470.000000
+      vertex -209.070984 5.018692 -470.000000
+    endloop
+  endfacet
+  facet normal 0.895756 0.444545 -0.000020
+    outer loop
+      vertex -209.070984 5.018692 -470.000000
+      vertex -209.062256 5.000000 -494.000000
+      vertex -209.069092 5.013789 -493.668152
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex -230.000000 5.000000 -505.746429
+      vertex -230.000000 5.000000 -494.000000
+      vertex -209.062256 5.000000 -494.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex -230.000000 5.000000 -505.746429
+      vertex -209.062256 5.000000 -494.000000
+      vertex -209.062256 5.000000 -505.999969
+    endloop
+  endfacet
+  facet normal 0.895196 0.445673 0.000124
+    outer loop
+      vertex -209.036621 4.955180 -530.000000
+      vertex -209.043411 4.968819 -530.000000
+      vertex -209.069046 5.013708 -506.330841
+    endloop
+  endfacet
+  facet normal 0.894912 0.446242 0.000123
+    outer loop
+      vertex -209.062256 5.000000 -505.999969
+      vertex -209.036621 4.955180 -530.000000
+      vertex -209.069046 5.013708 -506.330841
+    endloop
+  endfacet
+  facet normal 0.000000 0.164214 0.986425
+    outer loop
+      vertex -209.946274 8.018058 -509.877625
+      vertex -230.000000 8.031257 -509.879822
+      vertex -230.000000 8.018058 -509.877625
+    endloop
+  endfacet
+  facet normal 0.989587 0.143939 0.000087
+    outer loop
+      vertex -209.849976 7.368225 -530.000000
+      vertex -209.946274 8.018058 -509.877625
+      vertex -209.855408 7.393218 -509.663116
+    endloop
+  endfacet
+  facet normal 0.989583 0.143960 0.000087
+    outer loop
+      vertex -209.849976 7.368225 -530.000000
+      vertex -209.937180 7.967665 -530.000000
+      vertex -209.946274 8.018058 -509.877625
+    endloop
+  endfacet
+  facet normal 0.000000 0.475975 -0.879459
+    outer loop
+      vertex -209.855408 7.393218 -490.336884
+      vertex -230.000000 6.824100 -490.644897
+      vertex -230.000000 7.393218 -490.336884
+    endloop
+  endfacet
+  facet normal 0.000000 0.475978 -0.879457
+    outer loop
+      vertex -209.855408 7.393218 -490.336884
+      vertex -209.730042 6.812207 -490.651337
+      vertex -230.000000 6.824100 -490.644897
+    endloop
+  endfacet
+  facet normal 0.962094 0.272718 -0.000334
+    outer loop
+      vertex -209.730042 6.812207 -490.651337
+      vertex -209.740112 6.873009 -470.000000
+      vertex -209.734314 6.852553 -470.000000
+    endloop
+  endfacet
+  facet normal 0.962137 0.272565 -0.000333
+    outer loop
+      vertex -209.723984 6.790803 -490.667999
+      vertex -209.730042 6.812207 -490.651337
+      vertex -209.734314 6.852553 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.999138 -0.041519
+    outer loop
+      vertex -230.000000 5.000000 -494.000000
+      vertex -230.000000 5.013498 -493.675171
+      vertex -209.069092 5.013789 -493.668152
+    endloop
+  endfacet
+  facet normal 0.000000 0.999138 -0.041518
+    outer loop
+      vertex -230.000000 5.000000 -494.000000
+      vertex -209.069092 5.013789 -493.668152
+      vertex -209.062256 5.000000 -494.000000
+    endloop
+  endfacet
+  facet normal 0.897659 0.440691 -0.000017
+    outer loop
+      vertex -209.089096 5.054554 -493.341614
+      vertex -209.096329 5.070177 -470.000000
+      vertex -209.077377 5.031574 -470.000000
+    endloop
+  endfacet
+  facet normal 0.897682 0.440644 -0.000017
+    outer loop
+      vertex -209.077377 5.031574 -470.000000
+      vertex -209.069092 5.013789 -493.668152
+      vertex -209.089096 5.054554 -493.341614
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex -230.000000 5.000000 -505.999969
+      vertex -230.000000 5.000000 -505.746429
+      vertex -209.062256 5.000000 -505.999969
+    endloop
+  endfacet
+  facet normal 0.000000 0.999143 0.041395
+    outer loop
+      vertex -230.000000 5.000000 -505.999969
+      vertex -209.062256 5.000000 -505.999969
+      vertex -209.069046 5.013708 -506.330841
+    endloop
+  endfacet
+  facet normal 0.000000 0.999143 0.041395
+    outer loop
+      vertex -230.000000 5.013418 -506.323853
+      vertex -230.000000 5.000000 -505.999969
+      vertex -209.069046 5.013708 -506.330841
+    endloop
+  endfacet
+  facet normal 0.897255 0.441512 0.000134
+    outer loop
+      vertex -209.043411 4.968819 -530.000000
+      vertex -209.062851 5.008325 -530.000000
+      vertex -209.089096 5.054554 -506.658386
+    endloop
+  endfacet
+  facet normal 0.897258 0.441506 0.000134
+    outer loop
+      vertex -209.069046 5.013708 -506.330841
+      vertex -209.043411 4.968819 -530.000000
+      vertex -209.089096 5.054554 -506.658386
+    endloop
+  endfacet
+  facet normal 0.000000 0.323938 0.946078
+    outer loop
+      vertex -209.946274 8.018058 -509.877625
+      vertex -230.000000 8.018058 -509.877625
+      vertex -230.000000 8.005402 -509.873291
+    endloop
+  endfacet
+  facet normal 0.977241 0.212134 0.000000
+    outer loop
+      vertex -209.729294 6.812279 -530.000000
+      vertex -209.855408 7.393218 -509.663116
+      vertex -209.729507 6.813230 -509.346771
+    endloop
+  endfacet
+  facet normal 0.977241 0.212134 0.000000
+    outer loop
+      vertex -209.729294 6.812279 -530.000000
+      vertex -209.849976 7.368225 -530.000000
+      vertex -209.855408 7.393218 -509.663116
+    endloop
+  endfacet
+  facet normal -0.000001 0.324715 0.945812
+    outer loop
+      vertex -209.946274 8.018058 -509.877625
+      vertex -230.000000 8.005402 -509.873291
+      vertex -230.000000 7.393218 -509.663116
+    endloop
+  endfacet
+  facet normal 0.000000 0.324700 0.945817
+    outer loop
+      vertex -209.855408 7.393218 -509.663116
+      vertex -209.946274 8.018058 -509.877625
+      vertex -230.000000 7.393218 -509.663116
+    endloop
+  endfacet
+  facet normal 0.000000 0.476128 -0.879376
+    outer loop
+      vertex -209.730042 6.812207 -490.651337
+      vertex -230.000000 6.812207 -490.651337
+      vertex -230.000000 6.824100 -490.644897
+    endloop
+  endfacet
+  facet normal 0.000000 0.614417 -0.788981
+    outer loop
+      vertex -209.730042 6.812207 -490.651337
+      vertex -230.000000 6.791241 -490.667664
+      vertex -230.000000 6.812207 -490.651337
+    endloop
+  endfacet
+  facet normal 0.000000 0.614290 -0.789080
+    outer loop
+      vertex -209.730042 6.812207 -490.651337
+      vertex -209.723984 6.790803 -490.667999
+      vertex -230.000000 6.791241 -490.667664
+    endloop
+  endfacet
+  facet normal 0.986376 0.164504 0.000002
+    outer loop
+      vertex -209.723984 6.790803 -490.667999
+      vertex -209.734314 6.852553 -470.000000
+      vertex -209.724014 6.790796 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000014 0.996588 -0.082537
+    outer loop
+      vertex -230.000000 5.013498 -493.675171
+      vertex -230.000000 5.014650 -493.661255
+      vertex -209.069092 5.013789 -493.668152
+    endloop
+  endfacet
+  facet normal 0.000000 0.992297 -0.123879
+    outer loop
+      vertex -230.000000 5.014650 -493.661255
+      vertex -230.000000 5.054554 -493.341614
+      vertex -209.089096 5.054554 -493.341614
+    endloop
+  endfacet
+  facet normal 0.000000 0.992297 -0.123879
+    outer loop
+      vertex -230.000000 5.014650 -493.661255
+      vertex -209.089096 5.054554 -493.341614
+      vertex -209.069092 5.013789 -493.668152
+    endloop
+  endfacet
+  facet normal 0.900589 0.434671 -0.000012
+    outer loop
+      vertex -209.121750 5.122224 -493.018738
+      vertex -209.127365 5.134480 -470.000000
+      vertex -209.096329 5.070177 -470.000000
+    endloop
+  endfacet
+  facet normal 0.900603 0.434642 -0.000012
+    outer loop
+      vertex -209.096329 5.070177 -470.000000
+      vertex -209.089096 5.054554 -493.341614
+      vertex -209.121750 5.122224 -493.018738
+    endloop
+  endfacet
+  facet normal 0.000014 0.996591 0.082503
+    outer loop
+      vertex -230.000000 5.014570 -506.337769
+      vertex -230.000000 5.013418 -506.323853
+      vertex -209.069046 5.013708 -506.330841
+    endloop
+  endfacet
+  facet normal 0.000000 0.992314 0.123747
+    outer loop
+      vertex -230.000000 5.014570 -506.337769
+      vertex -209.069046 5.013708 -506.330841
+      vertex -209.089096 5.054554 -506.658386
+    endloop
+  endfacet
+  facet normal 0.000000 0.992313 0.123751
+    outer loop
+      vertex -230.000000 5.054554 -506.658386
+      vertex -230.000000 5.014570 -506.337769
+      vertex -209.089096 5.054554 -506.658386
+    endloop
+  endfacet
+  facet normal 0.900351 0.435165 0.000150
+    outer loop
+      vertex -209.062851 5.008325 -530.000000
+      vertex -209.094666 5.074149 -530.000000
+      vertex -209.122101 5.122957 -506.984100
+    endloop
+  endfacet
+  facet normal 0.900359 0.435148 0.000151
+    outer loop
+      vertex -209.089096 5.054554 -506.658386
+      vertex -209.062851 5.008325 -530.000000
+      vertex -209.122101 5.122957 -506.984100
+    endloop
+  endfacet
+  facet normal 0.977310 0.211814 0.000000
+    outer loop
+      vertex -209.724609 6.790630 -530.000000
+      vertex -209.729507 6.813230 -509.346771
+      vertex -209.724609 6.790630 -509.334442
+    endloop
+  endfacet
+  facet normal 0.977380 0.211493 0.000000
+    outer loop
+      vertex -209.724609 6.790630 -530.000000
+      vertex -209.729294 6.812279 -530.000000
+      vertex -209.729507 6.813230 -509.346771
+    endloop
+  endfacet
+  facet normal -0.000002 0.478835 0.877905
+    outer loop
+      vertex -209.855408 7.393218 -509.663116
+      vertex -230.000000 7.381397 -509.656708
+      vertex -230.000000 6.813209 -509.346802
+    endloop
+  endfacet
+  facet normal -0.000002 0.478838 0.877903
+    outer loop
+      vertex -209.729507 6.813230 -509.346771
+      vertex -209.855408 7.393218 -509.663116
+      vertex -230.000000 6.813209 -509.346802
+    endloop
+  endfacet
+  facet normal 0.000000 0.476614 0.879112
+    outer loop
+      vertex -209.855408 7.393218 -509.663116
+      vertex -230.000000 7.393218 -509.663116
+      vertex -230.000000 7.381397 -509.656708
+    endloop
+  endfacet
+  facet normal 0.000000 0.613867 -0.789409
+    outer loop
+      vertex -209.723984 6.790803 -490.667999
+      vertex -230.000000 6.780567 -490.675964
+      vertex -230.000000 6.791241 -490.667664
+    endloop
+  endfacet
+  facet normal 0.962247 0.272179 0.000002
+    outer loop
+      vertex -209.723984 6.790803 -490.667999
+      vertex -209.724014 6.790796 -470.000000
+      vertex -209.588669 6.312304 -470.000000
+    endloop
+  endfacet
+  facet normal 0.962250 0.272168 0.000001
+    outer loop
+      vertex -209.582581 6.290874 -491.057098
+      vertex -209.723984 6.790803 -490.667999
+      vertex -209.588669 6.312304 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.978735 -0.205128
+    outer loop
+      vertex -230.000000 5.054554 -493.341614
+      vertex -230.000000 5.120798 -493.025543
+      vertex -209.121750 5.122224 -493.018738
+    endloop
+  endfacet
+  facet normal 0.000000 0.978735 -0.205127
+    outer loop
+      vertex -230.000000 5.054554 -493.341614
+      vertex -209.121750 5.122224 -493.018738
+      vertex -209.089096 5.054554 -493.341614
+    endloop
+  endfacet
+  facet normal 0.904900 0.425625 -0.000006
+    outer loop
+      vertex -209.166199 5.216731 -492.701202
+      vertex -209.169693 5.224472 -470.000000
+      vertex -209.127365 5.134480 -470.000000
+    endloop
+  endfacet
+  facet normal 0.904903 0.425618 -0.000006
+    outer loop
+      vertex -209.127365 5.134480 -470.000000
+      vertex -209.121750 5.122224 -493.018738
+      vertex -209.166199 5.216731 -492.701202
+    endloop
+  endfacet
+  facet normal 0.000000 0.978652 0.205524
+    outer loop
+      vertex -230.000000 5.054554 -506.658386
+      vertex -209.089096 5.054554 -506.658386
+      vertex -209.122101 5.122957 -506.984100
+    endloop
+  endfacet
+  facet normal 0.000000 0.978652 0.205525
+    outer loop
+      vertex -230.000000 5.121515 -506.977234
+      vertex -230.000000 5.054554 -506.658386
+      vertex -209.122101 5.122957 -506.984100
+    endloop
+  endfacet
+  facet normal 0.904666 0.426122 0.000174
+    outer loop
+      vertex -209.094666 5.074149 -530.000000
+      vertex -209.137100 5.164239 -530.000000
+      vertex -209.166199 5.216731 -507.298828
+    endloop
+  endfacet
+  facet normal 0.904707 0.426033 0.000175
+    outer loop
+      vertex -209.122101 5.122957 -506.984100
+      vertex -209.094666 5.074149 -530.000000
+      vertex -209.166199 5.216731 -507.298828
+    endloop
+  endfacet
+  facet normal -0.000002 0.478229 0.878235
+    outer loop
+      vertex -209.729507 6.813230 -509.346771
+      vertex -230.000000 6.813209 -509.346802
+      vertex -230.000000 6.791072 -509.334747
+    endloop
+  endfacet
+  facet normal -0.000003 0.478911 0.877863
+    outer loop
+      vertex -209.724609 6.790630 -509.334442
+      vertex -209.729507 6.813230 -509.346771
+      vertex -230.000000 6.791072 -509.334747
+    endloop
+  endfacet
+  facet normal 0.945831 0.324658 0.000000
+    outer loop
+      vertex -209.704285 6.731418 -530.000000
+      vertex -209.724609 6.790630 -530.000000
+      vertex -209.724609 6.790630 -509.334442
+    endloop
+  endfacet
+  facet normal 0.000000 0.614203 -0.789148
+    outer loop
+      vertex -209.723984 6.790803 -490.667999
+      vertex -230.000000 6.290874 -491.057098
+      vertex -230.000000 6.780567 -490.675964
+    endloop
+  endfacet
+  facet normal 0.000000 0.614201 -0.789149
+    outer loop
+      vertex -209.723984 6.790803 -490.667999
+      vertex -209.582581 6.290874 -491.057098
+      vertex -230.000000 6.290874 -491.057098
+    endloop
+  endfacet
+  facet normal 0.945358 0.326033 -0.000058
+    outer loop
+      vertex -209.582581 6.290874 -491.057098
+      vertex -209.588669 6.312304 -470.000000
+      vertex -209.441284 5.884950 -470.000000
+    endloop
+  endfacet
+  facet normal 0.945358 0.326035 -0.000058
+    outer loop
+      vertex -209.428299 5.843437 -491.543152
+      vertex -209.582581 6.290874 -491.057098
+      vertex -209.441284 5.884950 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000014 0.969380 -0.245566
+    outer loop
+      vertex -230.000000 5.120798 -493.025543
+      vertex -230.000000 5.124215 -493.012054
+      vertex -209.121750 5.122224 -493.018738
+    endloop
+  endfacet
+  facet normal 0.000000 0.958452 -0.285254
+    outer loop
+      vertex -230.000000 5.124215 -493.012054
+      vertex -230.000000 5.216731 -492.701202
+      vertex -209.166199 5.216731 -492.701202
+    endloop
+  endfacet
+  facet normal 0.000000 0.958450 -0.285260
+    outer loop
+      vertex -230.000000 5.124215 -493.012054
+      vertex -209.166199 5.216731 -492.701202
+      vertex -209.121750 5.122224 -493.018738
+    endloop
+  endfacet
+  facet normal 0.914017 0.405675 0.000002
+    outer loop
+      vertex -209.240967 5.385180 -492.317169
+      vertex -209.241013 5.385160 -470.000000
+      vertex -209.169693 5.224472 -470.000000
+    endloop
+  endfacet
+  facet normal 0.914011 0.405688 0.000002
+    outer loop
+      vertex -209.169693 5.224472 -470.000000
+      vertex -209.166199 5.216731 -492.701202
+      vertex -209.240967 5.385180 -492.317169
+    endloop
+  endfacet
+  facet normal 0.000014 0.969372 0.245598
+    outer loop
+      vertex -230.000000 5.124933 -506.990723
+      vertex -230.000000 5.121515 -506.977234
+      vertex -209.122101 5.122957 -506.984100
+    endloop
+  endfacet
+  facet normal 0.000000 0.958365 0.285547
+    outer loop
+      vertex -230.000000 5.124933 -506.990723
+      vertex -209.122101 5.122957 -506.984100
+      vertex -209.166199 5.216731 -507.298828
+    endloop
+  endfacet
+  facet normal 0.000000 0.958367 0.285539
+    outer loop
+      vertex -230.000000 5.216731 -507.298828
+      vertex -230.000000 5.124933 -506.990723
+      vertex -209.166199 5.216731 -507.298828
+    endloop
+  endfacet
+  facet normal 0.913835 0.406086 0.000233
+    outer loop
+      vertex -209.137100 5.164239 -530.000000
+      vertex -209.208939 5.325900 -530.000000
+      vertex -209.240967 5.385180 -507.682800
+    endloop
+  endfacet
+  facet normal 0.913813 0.406135 0.000232
+    outer loop
+      vertex -209.166199 5.216731 -507.298828
+      vertex -209.137100 5.164239 -530.000000
+      vertex -209.240967 5.385180 -507.682800
+    endloop
+  endfacet
+  facet normal 0.000002 0.616742 0.787165
+    outer loop
+      vertex -209.724609 6.790630 -509.334442
+      vertex -230.000000 6.791072 -509.334747
+      vertex -230.000000 6.301621 -508.951263
+    endloop
+  endfacet
+  facet normal 0.000002 0.616725 0.787179
+    outer loop
+      vertex -209.582581 6.290874 -508.942902
+      vertex -209.724609 6.790630 -509.334442
+      vertex -230.000000 6.301621 -508.951263
+    endloop
+  endfacet
+  facet normal 0.961875 0.273488 0.000162
+    outer loop
+      vertex -209.567978 6.252017 -530.000000
+      vertex -209.724609 6.790630 -509.334442
+      vertex -209.582581 6.290874 -508.942902
+    endloop
+  endfacet
+  facet normal 0.961875 0.273488 0.000162
+    outer loop
+      vertex -209.567978 6.252017 -530.000000
+      vertex -209.704285 6.731418 -530.000000
+      vertex -209.724609 6.790630 -509.334442
+    endloop
+  endfacet
+  facet normal 0.000000 0.735724 -0.677281
+    outer loop
+      vertex -230.000000 5.852729 -491.533051
+      vertex -230.000000 6.290874 -491.057098
+      vertex -209.582581 6.290874 -491.057098
+    endloop
+  endfacet
+  facet normal 0.000000 0.735729 -0.677276
+    outer loop
+      vertex -230.000000 5.852729 -491.533051
+      vertex -209.582581 6.290874 -491.057098
+      vertex -209.428299 5.843437 -491.543152
+    endloop
+  endfacet
+  facet normal 0.928606 0.371068 -0.000155
+    outer loop
+      vertex -209.428299 5.843437 -491.543152
+      vertex -209.441284 5.884950 -470.000000
+      vertex -209.303787 5.540861 -470.000000
+    endloop
+  endfacet
+  facet normal 0.928599 0.371084 -0.000155
+    outer loop
+      vertex -209.303787 5.540861 -470.000000
+      vertex -209.283997 5.482105 -492.096222
+      vertex -209.428299 5.843437 -491.543152
+    endloop
+  endfacet
+  facet normal 0.000000 0.915772 -0.401698
+    outer loop
+      vertex -230.000000 5.216731 -492.701202
+      vertex -230.000000 5.381650 -492.325226
+      vertex -209.240967 5.385180 -492.317169
+    endloop
+  endfacet
+  facet normal 0.000000 0.915776 -0.401689
+    outer loop
+      vertex -230.000000 5.216731 -492.701202
+      vertex -209.240967 5.385180 -492.317169
+      vertex -209.166199 5.216731 -492.701202
+    endloop
+  endfacet
+  facet normal 0.945806 0.324732 0.000002
+    outer loop
+      vertex -209.240967 5.385180 -492.317169
+      vertex -209.262894 5.448890 -470.000000
+      vertex -209.241013 5.385160 -470.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.915829 0.401568
+    outer loop
+      vertex -230.000000 5.222311 -507.311554
+      vertex -230.000000 5.216731 -507.298828
+      vertex -209.166199 5.216731 -507.298828
+    endloop
+  endfacet
+  facet normal 0.000000 0.915753 0.401743
+    outer loop
+      vertex -230.000000 5.222311 -507.311554
+      vertex -209.166199 5.216731 -507.298828
+      vertex -209.240967 5.385180 -507.682800
+    endloop
+  endfacet
+  facet normal 0.000000 0.915754 0.401740
+    outer loop
+      vertex -230.000000 5.387211 -507.687439
+      vertex -230.000000 5.222311 -507.311554
+      vertex -209.240967 5.385180 -507.682800
+    endloop
+  endfacet
+  facet normal 0.879448 0.475995 -0.000002
+    outer loop
+      vertex -209.208939 5.325900 -530.000000
+      vertex -209.241013 5.385160 -530.000000
+      vertex -209.240967 5.385180 -507.682800
+    endloop
+  endfacet
+  facet normal 0.000000 0.614064 0.789256
+    outer loop
+      vertex -209.582581 6.290874 -508.942902
+      vertex -230.000000 6.301621 -508.951263
+      vertex -230.000000 6.290874 -508.942902
+    endloop
+  endfacet
+  facet normal 0.945359 0.326030 0.000054
+    outer loop
+      vertex -209.420135 5.823334 -530.000000
+      vertex -209.582581 6.290874 -508.942902
+      vertex -209.428299 5.843437 -508.456818
+    endloop
+  endfacet
+  facet normal 0.945359 0.326031 0.000054
+    outer loop
+      vertex -209.420135 5.823334 -530.000000
+      vertex -209.567978 6.252017 -530.000000
+      vertex -209.582581 6.290874 -508.942902
+    endloop
+  endfacet
+  facet normal 0.000000 0.735970 -0.677014
+    outer loop
+      vertex -230.000000 5.843437 -491.543152
+      vertex -230.000000 5.852729 -491.533051
+      vertex -209.428299 5.843437 -491.543152
+    endloop
+  endfacet
+  facet normal 0.000000 0.837170 -0.546943
+    outer loop
+      vertex -230.000000 5.489660 -492.084656
+      vertex -230.000000 5.843437 -491.543152
+      vertex -209.428299 5.843437 -491.543152
+    endloop
+  endfacet
+  facet normal 0.000000 0.837171 -0.546942
+    outer loop
+      vertex -230.000000 5.489660 -492.084656
+      vertex -209.428299 5.843437 -491.543152
+      vertex -209.283997 5.482105 -492.096222
+    endloop
+  endfacet
+  facet normal 0.913746 0.406286 -0.000262
+    outer loop
+      vertex -209.283997 5.482105 -492.096222
+      vertex -209.303787 5.540861 -470.000000
+      vertex -209.262894 5.448890 -470.000000
+    endloop
+  endfacet
+  facet normal 0.913757 0.406260 -0.000262
+    outer loop
+      vertex -209.262894 5.448890 -470.000000
+      vertex -209.240967 5.385180 -492.317169
+      vertex -209.283997 5.482105 -492.096222
+    endloop
+  endfacet
+  facet normal 0.000000 0.915993 -0.401194
+    outer loop
+      vertex -230.000000 5.381650 -492.325226
+      vertex -230.000000 5.387211 -492.312531
+      vertex -209.240967 5.385180 -492.317169
+    endloop
+  endfacet
+  facet normal 0.000000 0.915801 0.401631
+    outer loop
+      vertex -230.000000 5.387211 -507.687439
+      vertex -209.240967 5.385180 -507.682800
+      vertex -209.283997 5.482105 -507.903809
+    endloop
+  endfacet
+  facet normal 0.000000 0.915796 0.401644
+    outer loop
+      vertex -230.000000 5.482105 -507.903809
+      vertex -230.000000 5.387211 -507.687439
+      vertex -209.283997 5.482105 -507.903809
+    endloop
+  endfacet
+  facet normal 0.914001 0.405712 -0.000002
+    outer loop
+      vertex -209.241013 5.385160 -530.000000
+      vertex -209.282104 5.477733 -530.000000
+      vertex -209.283997 5.482105 -507.903809
+    endloop
+  endfacet
+  facet normal 0.913981 0.405757 -0.000002
+    outer loop
+      vertex -209.240967 5.385180 -507.682800
+      vertex -209.241013 5.385160 -530.000000
+      vertex -209.283997 5.482105 -507.903809
+    endloop
+  endfacet
+  facet normal 0.000000 0.735383 0.677651
+    outer loop
+      vertex -230.000000 6.290874 -508.942902
+      vertex -230.000000 6.281650 -508.932892
+      vertex -209.582581 6.290874 -508.942902
+    endloop
+  endfacet
+  facet normal 0.928670 0.370906 0.000006
+    outer loop
+      vertex -209.282104 5.477733 -530.000000
+      vertex -209.420135 5.823334 -530.000000
+      vertex -209.428299 5.843437 -508.456818
+    endloop
+  endfacet
+  facet normal 0.928678 0.370888 0.000006
+    outer loop
+      vertex -209.283997 5.482105 -507.903809
+      vertex -209.282104 5.477733 -530.000000
+      vertex -209.428299 5.843437 -508.456818
+    endloop
+  endfacet
+  facet normal 0.000000 0.735751 0.677253
+    outer loop
+      vertex -230.000000 5.843437 -508.456818
+      vertex -209.428299 5.843437 -508.456818
+      vertex -209.582581 6.290874 -508.942902
+    endloop
+  endfacet
+  facet normal 0.000000 0.735758 0.677244
+    outer loop
+      vertex -230.000000 6.281650 -508.932892
+      vertex -230.000000 5.843437 -508.456818
+      vertex -209.582581 6.290874 -508.942902
+    endloop
+  endfacet
+  facet normal 0.000000 0.837202 -0.546894
+    outer loop
+      vertex -230.000000 5.482105 -492.096222
+      vertex -230.000000 5.489660 -492.084656
+      vertex -209.283997 5.482105 -492.096222
+    endloop
+  endfacet
+  facet normal 0.000000 0.915754 -0.401739
+    outer loop
+      vertex -230.000000 5.387211 -492.312531
+      vertex -230.000000 5.482105 -492.096222
+      vertex -209.283997 5.482105 -492.096222
+    endloop
+  endfacet
+  facet normal 0.000000 0.915761 -0.401724
+    outer loop
+      vertex -230.000000 5.387211 -492.312531
+      vertex -209.283997 5.482105 -492.096222
+      vertex -209.240967 5.385180 -492.317169
+    endloop
+  endfacet
+  facet normal 0.000000 0.837143 0.546984
+    outer loop
+      vertex -230.000000 5.482105 -507.903809
+      vertex -209.283997 5.482105 -507.903809
+      vertex -209.428299 5.843437 -508.456818
+    endloop
+  endfacet
+  facet normal 0.000000 0.837148 0.546977
+    outer loop
+      vertex -230.000000 5.835933 -508.445343
+      vertex -230.000000 5.482105 -507.903809
+      vertex -209.428299 5.843437 -508.456818
+    endloop
+  endfacet
+  facet normal 0.000000 0.836924 0.547319
+    outer loop
+      vertex -230.000000 5.843437 -508.456818
+      vertex -230.000000 5.835933 -508.445343
+      vertex -209.428299 5.843437 -508.456818
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/Final.stl b/apps/cpu/Multiphase/backup/Final.stl
new file mode 100644
index 0000000000000000000000000000000000000000..a164dcafa1f68e70277d5d2c41d853c7416e4cff
Binary files /dev/null and b/apps/cpu/Multiphase/backup/Final.stl differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusing.FCStd b/apps/cpu/Multiphase/backup/FlowFocusing.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..80e088eaddb292386f6349b11f0cbefa75824501
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusing.FCStd differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusing.FCStd1 b/apps/cpu/Multiphase/backup/FlowFocusing.FCStd1
new file mode 100644
index 0000000000000000000000000000000000000000..9d5186df8e258a78afc0f27af756cf28d259af14
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusing.FCStd1 differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusing.ast b/apps/cpu/Multiphase/backup/FlowFocusing.ast
new file mode 100644
index 0000000000000000000000000000000000000000..062fb6d037177063808c135f8bb8a3ef48f430db
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/FlowFocusing.ast
@@ -0,0 +1,3194 @@
+solid Mesh
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 -5.325651 1.935894
+      vertex 165.500000 -5.500000 0.500000
+      vertex 165.500000 -5.325651 -0.935894
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 -5.325651 1.935894
+      vertex 165.500000 -5.325651 -0.935894
+      vertex 165.500000 -4.812736 -2.288339
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 -5.325651 1.935894
+      vertex 165.500000 -4.812736 -2.288339
+      vertex 165.500000 -3.991065 -3.478736
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 -5.325651 1.935894
+      vertex 165.500000 -3.991065 -3.478736
+      vertex 165.500000 -2.908388 -4.437903
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 -5.325651 1.935894
+      vertex 165.500000 -2.908388 -4.437903
+      vertex 165.500000 -1.627629 -5.110097
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 3.908388 -4.437903
+      vertex 165.500000 1.223220 -5.456253
+      vertex 165.500000 2.627629 -5.110097
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 -1.627629 6.110097
+      vertex 165.500000 -2.908388 5.437903
+      vertex 165.500000 -3.991065 4.478736
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 -1.627629 6.110097
+      vertex 165.500000 -3.991065 4.478736
+      vertex 165.500000 -4.812736 3.288339
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 -1.627629 6.110097
+      vertex 165.500000 -4.812736 3.288339
+      vertex 165.500000 -5.325651 1.935894
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 6.325651 -0.935894
+      vertex 165.500000 3.908388 -4.437903
+      vertex 165.500000 4.991065 -3.478736
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 6.325651 -0.935894
+      vertex 165.500000 4.991065 -3.478736
+      vertex 165.500000 5.812736 -2.288339
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 6.325651 1.935894
+      vertex 165.500000 6.325651 -0.935894
+      vertex 165.500000 6.500000 0.500000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 2.627629 6.110097
+      vertex 165.500000 1.223220 6.456253
+      vertex 165.500000 -0.223220 6.456253
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 2.627629 6.110097
+      vertex 165.500000 -0.223220 6.456253
+      vertex 165.500000 -1.627629 6.110097
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 2.627629 6.110097
+      vertex 165.500000 -1.627629 -5.110097
+      vertex 165.500000 -0.223220 -5.456253
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 2.627629 6.110097
+      vertex 165.500000 -0.223220 -5.456253
+      vertex 165.500000 1.223220 -5.456253
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 2.627629 6.110097
+      vertex 165.500000 1.223220 -5.456253
+      vertex 165.500000 3.908388 -4.437903
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 2.627629 6.110097
+      vertex 165.500000 -5.325651 1.935894
+      vertex 165.500000 -1.627629 -5.110097
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 2.627629 6.110097
+      vertex 165.500000 3.908388 -4.437903
+      vertex 165.500000 6.325651 -0.935894
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 2.627629 6.110097
+      vertex 165.500000 -1.627629 6.110097
+      vertex 165.500000 -5.325651 1.935894
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 2.627629 6.110097
+      vertex 165.500000 6.325651 -0.935894
+      vertex 165.500000 6.325651 1.935894
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 4.991065 4.478736
+      vertex 165.500000 6.325651 1.935894
+      vertex 165.500000 5.812736 3.288339
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 4.991065 4.478736
+      vertex 165.500000 3.908388 5.437903
+      vertex 165.500000 2.627629 6.110097
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 165.500000 4.991065 4.478736
+      vertex 165.500000 2.627629 6.110097
+      vertex 165.500000 6.325651 1.935894
+    endloop
+  endfacet
+  facet normal -0.000107 -0.772860 -0.634577
+    outer loop
+      vertex 165.500000 -3.991065 -3.478736
+      vertex 50.729084 -4.406632 -2.953253
+      vertex 50.899483 -3.842341 -3.640540
+    endloop
+  endfacet
+  facet normal 0.000185 -0.667672 -0.744456
+    outer loop
+      vertex 165.500000 -3.991065 -3.478736
+      vertex 50.899483 -3.842341 -3.640540
+      vertex 51.079292 -3.144950 -4.265956
+    endloop
+  endfacet
+  facet normal 0.000379 -0.822984 -0.568065
+    outer loop
+      vertex 165.500000 -3.991065 -3.478736
+      vertex 165.500000 -4.812736 -2.288339
+      vertex 50.729084 -4.406632 -2.953253
+    endloop
+  endfacet
+  facet normal -0.000154 -0.538308 -0.842748
+    outer loop
+      vertex 165.500000 -2.908388 -4.437903
+      vertex 51.079292 -3.144950 -4.265956
+      vertex 51.254513 -2.292002 -4.810812
+    endloop
+  endfacet
+  facet normal 0.000000 0.993822 0.110987
+    outer loop
+      vertex 165.500000 6.500000 0.500000
+      vertex 50.332397 6.500000 0.500000
+      vertex 50.391338 6.352184 1.823611
+    endloop
+  endfacet
+  facet normal 0.000246 -0.663123 -0.748511
+    outer loop
+      vertex 165.500000 -2.908388 -4.437903
+      vertex 165.500000 -3.991065 -3.478736
+      vertex 51.079292 -3.144950 -4.265956
+    endloop
+  endfacet
+  facet normal -0.000102 0.944707 0.327915
+    outer loop
+      vertex 165.500000 6.325651 1.935894
+      vertex 50.391338 6.352184 1.823611
+      vertex 50.556267 5.913767 3.086720
+    endloop
+  endfacet
+  facet normal -0.000216 -0.379672 -0.925121
+    outer loop
+      vertex 165.500000 -1.627629 -5.110097
+      vertex 51.254513 -2.292002 -4.810812
+      vertex 51.404663 -1.244035 -5.240935
+    endloop
+  endfacet
+  facet normal 0.000111 0.992709 0.120537
+    outer loop
+      vertex 165.500000 6.325651 1.935894
+      vertex 165.500000 6.500000 0.500000
+      vertex 50.391338 6.352184 1.823611
+    endloop
+  endfacet
+  facet normal 0.000383 -0.464723 -0.885456
+    outer loop
+      vertex 165.500000 -1.627629 -5.110097
+      vertex 165.500000 -2.908388 -4.437903
+      vertex 51.254513 -2.292002 -4.810812
+    endloop
+  endfacet
+  facet normal -0.000188 0.847029 0.531547
+    outer loop
+      vertex 165.500000 5.812736 3.288339
+      vertex 50.556267 5.913767 3.086720
+      vertex 50.799007 5.184052 4.249620
+    endloop
+  endfacet
+  facet normal 0.000200 0.935016 0.354605
+    outer loop
+      vertex 165.500000 5.812736 3.288339
+      vertex 165.500000 6.325651 1.935894
+      vertex 50.556267 5.913767 3.086720
+    endloop
+  endfacet
+  facet normal 0.000158 -0.223303 -0.974749
+    outer loop
+      vertex 165.500000 -0.223220 -5.456253
+      vertex 51.404663 -1.244035 -5.240935
+      vertex 51.473011 -0.428928 -5.427655
+    endloop
+  endfacet
+  facet normal -0.000110 -0.077642 -0.996981
+    outer loop
+      vertex 165.500000 -0.223220 -5.456253
+      vertex 51.473011 -0.428928 -5.427655
+      vertex 51.500000 0.500000 -5.500000
+    endloop
+  endfacet
+  facet normal 0.000309 -0.239316 -0.970942
+    outer loop
+      vertex 165.500000 -0.223220 -5.456253
+      vertex 165.500000 -1.627629 -5.110097
+      vertex 51.404663 -1.244035 -5.240935
+    endloop
+  endfacet
+  facet normal -0.000252 0.699064 0.715059
+    outer loop
+      vertex 165.500000 4.991065 4.478736
+      vertex 50.799007 5.184052 4.249620
+      vertex 51.079708 4.143171 5.267316
+    endloop
+  endfacet
+  facet normal 0.000250 0.822984 0.568065
+    outer loop
+      vertex 165.500000 4.991065 4.478736
+      vertex 165.500000 5.812736 3.288339
+      vertex 50.799007 5.184052 4.249620
+    endloop
+  endfacet
+  facet normal -0.000351 0.115384 -0.993321
+    outer loop
+      vertex 165.500000 1.223220 -5.456253
+      vertex 51.500000 0.500000 -5.500000
+      vertex 51.440762 1.875535 -5.340197
+    endloop
+  endfacet
+  facet normal -0.000250 0.505199 0.863003
+    outer loop
+      vertex 165.500000 3.908388 5.437903
+      vertex 51.079708 4.143171 5.267316
+      vertex 51.322906 2.873937 6.010392
+    endloop
+  endfacet
+  facet normal 0.000384 0.000000 -1.000000
+    outer loop
+      vertex 165.500000 1.223220 -5.456253
+      vertex 165.500000 -0.223220 -5.456253
+      vertex 51.500000 0.500000 -5.500000
+    endloop
+  endfacet
+  facet normal 0.000245 0.663123 0.748511
+    outer loop
+      vertex 165.500000 3.908388 5.437903
+      vertex 165.500000 4.991065 4.478736
+      vertex 51.079708 4.143171 5.267316
+    endloop
+  endfacet
+  facet normal -0.000226 0.323714 -0.946155
+    outer loop
+      vertex 165.500000 2.627629 -5.110097
+      vertex 51.440762 1.875535 -5.340197
+      vertex 51.304974 2.990543 -4.958681
+    endloop
+  endfacet
+  facet normal -0.000167 0.307643 0.951502
+    outer loop
+      vertex 165.500000 2.627629 6.110097
+      vertex 51.322906 2.873937 6.010392
+      vertex 51.446964 1.801675 6.357102
+    endloop
+  endfacet
+  facet normal 0.000229 0.464723 0.885456
+    outer loop
+      vertex 165.500000 2.627629 6.110097
+      vertex 165.500000 3.908388 5.437903
+      vertex 51.322906 2.873937 6.010392
+    endloop
+  endfacet
+  facet normal 0.000381 0.239316 -0.970942
+    outer loop
+      vertex 165.500000 2.627629 -5.110097
+      vertex 165.500000 1.223220 -5.456253
+      vertex 51.440762 1.875535 -5.340197
+    endloop
+  endfacet
+  facet normal 0.000011 0.492470 -0.870329
+    outer loop
+      vertex 165.500000 3.908388 -4.437903
+      vertex 51.304974 2.990543 -4.958681
+      vertex 51.135273 3.896791 -4.445888
+    endloop
+  endfacet
+  facet normal -0.000010 0.629979 -0.776612
+    outer loop
+      vertex 165.500000 3.908388 -4.437903
+      vertex 51.135273 3.896791 -4.445888
+      vertex 50.955387 4.638966 -3.843842
+    endloop
+  endfacet
+  facet normal -0.000311 0.109112 0.994029
+    outer loop
+      vertex 165.500000 1.223220 6.456253
+      vertex 51.446964 1.801675 6.357102
+      vertex 51.500000 0.500000 6.500000
+    endloop
+  endfacet
+  facet normal 0.000370 0.239316 0.970942
+    outer loop
+      vertex 165.500000 1.223220 6.456253
+      vertex 165.500000 2.627629 6.110097
+      vertex 51.446964 1.801675 6.357102
+    endloop
+  endfacet
+  facet normal 0.000303 0.464723 -0.885456
+    outer loop
+      vertex 165.500000 3.908388 -4.437903
+      vertex 165.500000 2.627629 -5.110097
+      vertex 51.304974 2.990543 -4.958681
+    endloop
+  endfacet
+  facet normal -0.000351 -0.115384 0.993321
+    outer loop
+      vertex 165.500000 -0.223220 6.456253
+      vertex 51.500000 0.500000 6.500000
+      vertex 51.440762 -0.875535 6.340197
+    endloop
+  endfacet
+  facet normal -0.000146 0.742297 -0.670071
+    outer loop
+      vertex 165.500000 4.991065 -3.478736
+      vertex 50.955387 4.638966 -3.843842
+      vertex 50.780647 5.243602 -3.173995
+    endloop
+  endfacet
+  facet normal 0.000384 -0.000000 1.000000
+    outer loop
+      vertex 165.500000 -0.223220 6.456253
+      vertex 165.500000 1.223220 6.456253
+      vertex 51.500000 0.500000 6.500000
+    endloop
+  endfacet
+  facet normal 0.000347 0.663123 -0.748511
+    outer loop
+      vertex 165.500000 4.991065 -3.478736
+      vertex 165.500000 3.908388 -4.437903
+      vertex 50.955387 4.638966 -3.843842
+    endloop
+  endfacet
+  facet normal 0.000381 -0.239316 0.970942
+    outer loop
+      vertex 165.500000 -1.627629 6.110097
+      vertex 165.500000 -0.223220 6.456253
+      vertex 51.440762 -0.875535 6.340197
+    endloop
+  endfacet
+  facet normal -0.000226 -0.323713 0.946155
+    outer loop
+      vertex 165.500000 -1.627629 6.110097
+      vertex 51.440762 -0.875535 6.340197
+      vertex 51.304974 -1.990543 5.958681
+    endloop
+  endfacet
+  facet normal 0.000138 0.833077 -0.553157
+    outer loop
+      vertex 165.500000 5.812736 -2.288339
+      vertex 50.780647 5.243602 -3.173995
+      vertex 50.622238 5.726650 -2.446545
+    endloop
+  endfacet
+  facet normal -0.000088 0.903881 -0.427784
+    outer loop
+      vertex 165.500000 5.812736 -2.288339
+      vertex 50.622238 5.726650 -2.446545
+      vertex 50.490826 6.092421 -1.673668
+    endloop
+  endfacet
+  facet normal 0.000303 0.822984 -0.568065
+    outer loop
+      vertex 165.500000 5.812736 -2.288339
+      vertex 165.500000 4.991065 -3.478736
+      vertex 50.780647 5.243602 -3.173995
+    endloop
+  endfacet
+  facet normal -0.000040 0.955261 -0.295765
+    outer loop
+      vertex 165.500000 6.325651 -0.935894
+      vertex 50.490826 6.092421 -1.673668
+      vertex 50.395226 6.342282 -0.866653
+    endloop
+  endfacet
+  facet normal 0.000039 0.985167 -0.171597
+    outer loop
+      vertex 165.500000 6.325651 -0.935894
+      vertex 50.395226 6.342282 -0.866653
+      vertex 50.348400 6.460290 -0.189163
+    endloop
+  endfacet
+  facet normal 0.000303 -0.464723 0.885456
+    outer loop
+      vertex 165.500000 -2.908388 5.437903
+      vertex 165.500000 -1.627629 6.110097
+      vertex 51.304974 -1.990543 5.958681
+    endloop
+  endfacet
+  facet normal 0.000011 -0.492470 0.870329
+    outer loop
+      vertex 165.500000 -2.908388 5.437903
+      vertex 51.304974 -1.990543 5.958681
+      vertex 51.135273 -2.896791 5.445888
+    endloop
+  endfacet
+  facet normal 0.000379 0.935016 -0.354605
+    outer loop
+      vertex 165.500000 6.325651 -0.935894
+      vertex 165.500000 5.812736 -2.288339
+      vertex 50.490826 6.092421 -1.673668
+    endloop
+  endfacet
+  facet normal -0.000010 -0.629979 0.776612
+    outer loop
+      vertex 165.500000 -2.908388 5.437903
+      vertex 51.135273 -2.896791 5.445888
+      vertex 50.955387 -3.638966 4.843842
+    endloop
+  endfacet
+  facet normal 0.000000 0.998344 -0.057525
+    outer loop
+      vertex 165.500000 6.500000 0.500000
+      vertex 50.348400 6.460290 -0.189163
+      vertex 50.332397 6.500000 0.500000
+    endloop
+  endfacet
+  facet normal 0.000379 0.992709 -0.120537
+    outer loop
+      vertex 165.500000 6.500000 0.500000
+      vertex 165.500000 6.325651 -0.935894
+      vertex 50.348400 6.460290 -0.189163
+    endloop
+  endfacet
+  facet normal 0.000347 -0.663123 0.748511
+    outer loop
+      vertex 165.500000 -3.991065 4.478736
+      vertex 165.500000 -2.908388 5.437903
+      vertex 50.955387 -3.638966 4.843842
+    endloop
+  endfacet
+  facet normal -0.000146 -0.742263 0.670108
+    outer loop
+      vertex 165.500000 -3.991065 4.478736
+      vertex 50.955387 -3.638966 4.843842
+      vertex 50.780762 -4.243235 4.174469
+    endloop
+  endfacet
+  facet normal 0.000302 -0.822984 0.568065
+    outer loop
+      vertex 165.500000 -4.812736 3.288339
+      vertex 165.500000 -3.991065 4.478736
+      vertex 50.780762 -4.243235 4.174469
+    endloop
+  endfacet
+  facet normal 0.000142 -0.832783 0.553599
+    outer loop
+      vertex 165.500000 -4.812736 3.288339
+      vertex 50.780762 -4.243235 4.174469
+      vertex 50.623219 -4.723814 3.451571
+    endloop
+  endfacet
+  facet normal -0.000089 -0.903265 0.429084
+    outer loop
+      vertex 165.500000 -4.812736 3.288339
+      vertex 50.623219 -4.723814 3.451571
+      vertex 50.492382 -5.088249 2.684370
+    endloop
+  endfacet
+  facet normal -0.000032 -0.954624 0.297812
+    outer loop
+      vertex 165.500000 -5.325651 1.935894
+      vertex 50.492382 -5.088249 2.684370
+      vertex 50.396503 -5.339019 1.880529
+    endloop
+  endfacet
+  facet normal 0.000037 -0.986889 0.161399
+    outer loop
+      vertex 165.500000 -5.325651 1.935894
+      vertex 50.396503 -5.339019 1.880529
+      vertex 50.342648 -5.474597 1.051531
+    endloop
+  endfacet
+  facet normal 0.000378 -0.935016 0.354605
+    outer loop
+      vertex 165.500000 -5.325651 1.935894
+      vertex 165.500000 -4.812736 3.288339
+      vertex 50.492382 -5.088249 2.684370
+    endloop
+  endfacet
+  facet normal -0.000115 -0.999759 0.021950
+    outer loop
+      vertex 165.500000 -5.500000 0.500000
+      vertex 50.342648 -5.474597 1.051531
+      vertex 50.335209 -5.493046 0.211204
+    endloop
+  endfacet
+  facet normal 0.000236 -0.993023 -0.117918
+    outer loop
+      vertex 165.500000 -5.500000 0.500000
+      vertex 50.335209 -5.493046 0.211204
+      vertex 50.374840 -5.393991 -0.622882
+    endloop
+  endfacet
+  facet normal 0.000358 -0.992709 0.120537
+    outer loop
+      vertex 165.500000 -5.500000 0.500000
+      vertex 165.500000 -5.325651 1.935894
+      vertex 50.342648 -5.474597 1.051531
+    endloop
+  endfacet
+  facet normal -0.000121 -0.966795 -0.255552
+    outer loop
+      vertex 165.500000 -5.325651 -0.935894
+      vertex 50.374840 -5.393991 -0.622882
+      vertex 50.458221 -5.179053 -1.436066
+    endloop
+  endfacet
+  facet normal 0.000262 -0.992709 -0.120537
+    outer loop
+      vertex 165.500000 -5.325651 -0.935894
+      vertex 165.500000 -5.500000 0.500000
+      vertex 50.374840 -5.393991 -0.622882
+    endloop
+  endfacet
+  facet normal 0.000055 -0.921408 -0.388597
+    outer loop
+      vertex 165.500000 -4.812736 -2.288339
+      vertex 50.458221 -5.179053 -1.436066
+      vertex 50.578938 -4.850290 -2.215583
+    endloop
+  endfacet
+  facet normal -0.000046 -0.856947 -0.515404
+    outer loop
+      vertex 165.500000 -4.812736 -2.288339
+      vertex 50.578938 -4.850290 -2.215583
+      vertex 50.729084 -4.406632 -2.953253
+    endloop
+  endfacet
+  facet normal 0.000350 -0.935016 -0.354605
+    outer loop
+      vertex 165.500000 -4.812736 -2.288339
+      vertex 165.500000 -5.325651 -0.935894
+      vertex 50.458221 -5.179053 -1.436066
+    endloop
+  endfacet
+  facet normal 0.997451 0.071339 -0.001616
+    outer loop
+      vertex 51.440762 1.875535 -5.340197
+      vertex 51.500000 0.500000 -29.500000
+      vertex 51.337143 2.777037 -29.500000
+    endloop
+  endfacet
+  facet normal 0.999074 0.043026 0.000000
+    outer loop
+      vertex 51.440762 1.875535 -5.340197
+      vertex 51.500000 0.500000 -5.500000
+      vertex 51.500000 0.500000 -29.500000
+    endloop
+  endfacet
+  facet normal 0.999171 0.040710 0.000000
+    outer loop
+      vertex 51.500000 0.500000 30.500000
+      vertex 51.500000 0.500000 6.500000
+      vertex 51.446964 1.801675 6.357102
+    endloop
+  endfacet
+  facet normal 0.992676 0.120805 0.000250
+    outer loop
+      vertex 51.304974 2.990543 -4.958681
+      vertex 51.440762 1.875535 -5.340197
+      vertex 51.337143 2.777037 -29.500000
+    endloop
+  endfacet
+  facet normal 0.977146 0.212565 -0.001627
+    outer loop
+      vertex 51.135273 3.896791 -4.445888
+      vertex 51.337143 2.777037 -29.500000
+      vertex 50.851887 5.007721 -29.500000
+    endloop
+  endfacet
+  facet normal 0.982883 0.184229 -0.000314
+    outer loop
+      vertex 51.135273 3.896791 -4.445888
+      vertex 51.304974 2.990543 -4.958681
+      vertex 51.337143 2.777037 -29.500000
+    endloop
+  endfacet
+  facet normal 0.971762 0.235962 -0.000529
+    outer loop
+      vertex 50.955387 4.638966 -3.843842
+      vertex 51.135273 3.896791 -4.445888
+      vertex 50.851887 5.007721 -29.500000
+    endloop
+  endfacet
+  facet normal 0.982114 0.188285 0.000174
+    outer loop
+      vertex 51.337143 2.777037 30.500000
+      vertex 51.322906 2.873937 6.010392
+      vertex 51.079708 4.143171 5.267316
+    endloop
+  endfacet
+  facet normal 0.993378 0.114891 -0.000123
+    outer loop
+      vertex 51.337143 2.777037 30.500000
+      vertex 51.446964 1.801675 6.357102
+      vertex 51.322906 2.873937 6.010392
+    endloop
+  endfacet
+  facet normal 0.997451 0.071339 0.001655
+    outer loop
+      vertex 51.337143 2.777037 30.500000
+      vertex 51.500000 0.500000 30.500000
+      vertex 51.446964 1.801675 6.357102
+    endloop
+  endfacet
+  facet normal 0.960719 0.277522 0.000113
+    outer loop
+      vertex 50.780647 5.243602 -3.173995
+      vertex 50.955387 4.638966 -3.843842
+      vertex 50.851887 5.007721 -29.500000
+    endloop
+  endfacet
+  facet normal 0.950111 0.311913 -0.000224
+    outer loop
+      vertex 50.622238 5.726650 -2.446545
+      vertex 50.780647 5.243602 -3.173995
+      vertex 50.851887 5.007721 -29.500000
+    endloop
+  endfacet
+  facet normal 0.940392 0.340090 -0.001055
+    outer loop
+      vertex 50.490826 6.092421 -1.673668
+      vertex 50.622238 5.726650 -2.446545
+      vertex 50.851887 5.007721 -29.500000
+    endloop
+  endfacet
+  facet normal 0.936949 0.349464 -0.001465
+    outer loop
+      vertex 50.490826 6.092421 -1.673668
+      vertex 50.851887 5.007721 -29.500000
+      vertex 50.054111 7.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.932892 0.360154 -0.000996
+    outer loop
+      vertex 50.395226 6.342282 -0.866653
+      vertex 50.490826 6.092421 -1.673668
+      vertex 50.054111 7.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.928288 0.371862 -0.000613
+    outer loop
+      vertex 50.348400 6.460290 -0.189163
+      vertex 50.395226 6.342282 -0.866653
+      vertex 50.054111 7.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.925109 0.379701 -0.000397
+    outer loop
+      vertex 50.332397 6.500000 0.500000
+      vertex 50.348400 6.460290 -0.189163
+      vertex 50.054111 7.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.948776 0.315948 0.000211
+    outer loop
+      vertex 50.851887 5.007721 30.500000
+      vertex 50.799007 5.184052 4.249620
+      vertex 50.556267 5.913767 3.086720
+    endloop
+  endfacet
+  facet normal 0.965556 0.260195 -0.000197
+    outer loop
+      vertex 50.851887 5.007721 30.500000
+      vertex 51.079708 4.143171 5.267316
+      vertex 50.799007 5.184052 4.249620
+    endloop
+  endfacet
+  facet normal 0.977146 0.212565 0.001539
+    outer loop
+      vertex 50.851887 5.007721 30.500000
+      vertex 51.337143 2.777037 30.500000
+      vertex 51.079708 4.143171 5.267316
+    endloop
+  endfacet
+  facet normal 0.877677 0.479248 0.002189
+    outer loop
+      vertex 48.960056 9.150253 -29.500000
+      vertex 50.332397 6.500000 0.500000
+      vertex 50.054111 7.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.936949 0.349464 0.001446
+    outer loop
+      vertex 50.054111 7.146640 30.500000
+      vertex 50.851887 5.007721 30.500000
+      vertex 50.556267 5.913767 3.086720
+    endloop
+  endfacet
+  facet normal 0.927238 0.374473 0.000530
+    outer loop
+      vertex 50.054111 7.146640 30.500000
+      vertex 50.391338 6.352184 1.823611
+      vertex 50.332397 6.500000 0.500000
+    endloop
+  endfacet
+  facet normal 0.934857 0.355022 0.001158
+    outer loop
+      vertex 50.054111 7.146640 30.500000
+      vertex 50.556267 5.913767 3.086720
+      vertex 50.391338 6.352184 1.823611
+    endloop
+  endfacet
+  facet normal 0.888010 0.459825 0.000000
+    outer loop
+      vertex 48.960056 9.150253 30.500000
+      vertex 50.332397 6.500000 0.500000
+      vertex 48.960056 9.150253 -29.500000
+    endloop
+  endfacet
+  facet normal 0.877677 0.479248 -0.002189
+    outer loop
+      vertex 48.960056 9.150253 30.500000
+      vertex 50.054111 7.146640 30.500000
+      vertex 50.332397 6.500000 0.500000
+    endloop
+  endfacet
+  facet normal 0.800541 0.599278 0.000000
+    outer loop
+      vertex 47.591991 10.977772 30.500000
+      vertex 48.960056 9.150253 30.500000
+      vertex 48.960056 9.150253 -29.500000
+    endloop
+  endfacet
+  facet normal 0.800541 0.599278 0.000000
+    outer loop
+      vertex 47.591991 10.977772 30.500000
+      vertex 48.960056 9.150253 -29.500000
+      vertex 47.591991 10.977772 -29.500000
+    endloop
+  endfacet
+  facet normal 0.707107 0.707106 0.000000
+    outer loop
+      vertex 45.977772 12.591993 30.500000
+      vertex 47.591991 10.977772 -29.500000
+      vertex 45.977772 12.591993 -29.500000
+    endloop
+  endfacet
+  facet normal 0.707107 0.707106 0.000000
+    outer loop
+      vertex 45.977772 12.591993 30.500000
+      vertex 47.591991 10.977772 30.500000
+      vertex 47.591991 10.977772 -29.500000
+    endloop
+  endfacet
+  facet normal 0.599278 0.800541 0.000000
+    outer loop
+      vertex 44.150253 13.960056 30.500000
+      vertex 45.977772 12.591993 30.500000
+      vertex 45.977772 12.591993 -29.500000
+    endloop
+  endfacet
+  facet normal 0.599278 0.800541 0.000000
+    outer loop
+      vertex 44.150253 13.960056 30.500000
+      vertex 45.977772 12.591993 -29.500000
+      vertex 44.150253 13.960056 -29.500000
+    endloop
+  endfacet
+  facet normal 0.479249 0.877679 0.000000
+    outer loop
+      vertex 42.146641 15.054111 30.500000
+      vertex 44.150253 13.960056 -29.500000
+      vertex 42.146641 15.054111 -29.500000
+    endloop
+  endfacet
+  facet normal 0.479249 0.877679 0.000000
+    outer loop
+      vertex 42.146641 15.054111 30.500000
+      vertex 44.150253 13.960056 30.500000
+      vertex 44.150253 13.960056 -29.500000
+    endloop
+  endfacet
+  facet normal 0.349464 0.936950 0.000000
+    outer loop
+      vertex 40.007721 15.851888 30.500000
+      vertex 42.146641 15.054111 -29.500000
+      vertex 40.007721 15.851888 -29.500000
+    endloop
+  endfacet
+  facet normal 0.349464 0.936950 0.000000
+    outer loop
+      vertex 40.007721 15.851888 30.500000
+      vertex 42.146641 15.054111 30.500000
+      vertex 42.146641 15.054111 -29.500000
+    endloop
+  endfacet
+  facet normal 0.212565 0.977147 0.000000
+    outer loop
+      vertex 37.777039 16.337143 30.500000
+      vertex 40.007721 15.851888 -29.500000
+      vertex 37.777039 16.337143 -29.500000
+    endloop
+  endfacet
+  facet normal 0.212565 0.977147 0.000000
+    outer loop
+      vertex 37.777039 16.337143 30.500000
+      vertex 40.007721 15.851888 30.500000
+      vertex 40.007721 15.851888 -29.500000
+    endloop
+  endfacet
+  facet normal 0.071339 0.997452 0.000000
+    outer loop
+      vertex 35.500000 16.500000 30.500000
+      vertex 37.777039 16.337143 -29.500000
+      vertex 35.500000 16.500000 -29.500000
+    endloop
+  endfacet
+  facet normal 0.071339 0.997452 0.000000
+    outer loop
+      vertex 35.500000 16.500000 30.500000
+      vertex 37.777039 16.337143 30.500000
+      vertex 37.777039 16.337143 -29.500000
+    endloop
+  endfacet
+  facet normal -0.071339 0.997452 0.000000
+    outer loop
+      vertex 33.222961 16.337143 30.500000
+      vertex 35.500000 16.500000 -29.500000
+      vertex 33.222961 16.337143 -29.500000
+    endloop
+  endfacet
+  facet normal -0.071339 0.997452 0.000000
+    outer loop
+      vertex 33.222961 16.337143 30.500000
+      vertex 35.500000 16.500000 30.500000
+      vertex 35.500000 16.500000 -29.500000
+    endloop
+  endfacet
+  facet normal -0.212565 0.977147 0.000000
+    outer loop
+      vertex 30.992279 15.851888 30.500000
+      vertex 33.222961 16.337143 -29.500000
+      vertex 30.992279 15.851888 -29.500000
+    endloop
+  endfacet
+  facet normal -0.212565 0.977147 0.000000
+    outer loop
+      vertex 30.992279 15.851888 30.500000
+      vertex 33.222961 16.337143 30.500000
+      vertex 33.222961 16.337143 -29.500000
+    endloop
+  endfacet
+  facet normal -0.349464 0.936950 0.000000
+    outer loop
+      vertex 28.853359 15.054111 30.500000
+      vertex 30.992279 15.851888 -29.500000
+      vertex 28.853359 15.054111 -29.500000
+    endloop
+  endfacet
+  facet normal -0.479249 0.877679 0.000000
+    outer loop
+      vertex 28.853359 15.054111 30.500000
+      vertex 28.853359 15.054111 -29.500000
+      vertex 26.849747 13.960056 -29.500000
+    endloop
+  endfacet
+  facet normal -0.349464 0.936950 0.000000
+    outer loop
+      vertex 28.853359 15.054111 30.500000
+      vertex 30.992279 15.851888 30.500000
+      vertex 30.992279 15.851888 -29.500000
+    endloop
+  endfacet
+  facet normal -0.479249 0.877679 0.000000
+    outer loop
+      vertex 26.849747 13.960056 30.500000
+      vertex 28.853359 15.054111 30.500000
+      vertex 26.849747 13.960056 -29.500000
+    endloop
+  endfacet
+  facet normal -0.599278 0.800541 0.000000
+    outer loop
+      vertex 25.022228 12.591993 30.500000
+      vertex 26.849747 13.960056 -29.500000
+      vertex 25.022228 12.591993 -29.500000
+    endloop
+  endfacet
+  facet normal -0.599278 0.800541 0.000000
+    outer loop
+      vertex 25.022228 12.591993 30.500000
+      vertex 26.849747 13.960056 30.500000
+      vertex 26.849747 13.960056 -29.500000
+    endloop
+  endfacet
+  facet normal -0.707107 0.707107 0.000000
+    outer loop
+      vertex 23.408007 10.977772 30.500000
+      vertex 25.022228 12.591993 -29.500000
+      vertex 23.408007 10.977772 -29.500000
+    endloop
+  endfacet
+  facet normal -0.707107 0.707107 0.000000
+    outer loop
+      vertex 23.408007 10.977772 30.500000
+      vertex 25.022228 12.591993 30.500000
+      vertex 25.022228 12.591993 -29.500000
+    endloop
+  endfacet
+  facet normal -0.800539 0.599276 0.002413
+    outer loop
+      vertex 21.643593 8.500000 0.500000
+      vertex 23.408007 10.977772 -29.500000
+      vertex 22.039944 9.150253 -29.500000
+    endloop
+  endfacet
+  facet normal -0.814576 0.580057 0.000000
+    outer loop
+      vertex 21.643593 8.500000 0.500000
+      vertex 23.408007 10.977772 30.500000
+      vertex 23.408007 10.977772 -29.500000
+    endloop
+  endfacet
+  facet normal -0.864717 0.502259 -0.000538
+    outer loop
+      vertex 21.589144 8.404941 -0.729599
+      vertex 21.643593 8.500000 0.500000
+      vertex 22.039944 9.150253 -29.500000
+    endloop
+  endfacet
+  facet normal -0.877678 0.479248 -0.001475
+    outer loop
+      vertex 21.434671 8.126698 -1.915257
+      vertex 22.039944 9.150253 -29.500000
+      vertex 20.945889 7.146640 -29.500000
+    endloop
+  endfacet
+  facet normal -0.872464 0.488677 -0.001011
+    outer loop
+      vertex 21.434671 8.126698 -1.915257
+      vertex 21.589144 8.404941 -0.729599
+      vertex 22.039944 9.150253 -29.500000
+    endloop
+  endfacet
+  facet normal -0.886204 0.463295 -0.000757
+    outer loop
+      vertex 21.186325 7.649735 -3.089051
+      vertex 21.434671 8.126698 -1.915257
+      vertex 20.945889 7.146640 -29.500000
+    endloop
+  endfacet
+  facet normal -0.866438 0.499284 0.000625
+    outer loop
+      vertex 22.039944 9.150253 30.500000
+      vertex 21.643593 8.500000 0.500000
+      vertex 21.547388 8.331002 2.135666
+    endloop
+  endfacet
+  facet normal -0.878497 0.477746 0.001457
+    outer loop
+      vertex 22.039944 9.150253 30.500000
+      vertex 21.547388 8.331002 2.135666
+      vertex 21.283375 7.840816 3.680002
+    endloop
+  endfacet
+  facet normal -0.800539 0.599276 -0.002413
+    outer loop
+      vertex 22.039944 9.150253 30.500000
+      vertex 23.408007 10.977772 30.500000
+      vertex 21.643593 8.500000 0.500000
+    endloop
+  endfacet
+  facet normal -0.904627 0.426204 0.000117
+    outer loop
+      vertex 20.875492 6.990284 -4.177202
+      vertex 21.186325 7.649735 -3.089051
+      vertex 20.945889 7.146640 -29.500000
+    endloop
+  endfacet
+  facet normal -0.936949 0.349464 -0.001673
+    outer loop
+      vertex 20.525652 6.136390 -5.177245
+      vertex 20.945889 7.146640 -29.500000
+      vertex 20.148113 5.007721 -29.500000
+    endloop
+  endfacet
+  facet normal -0.925255 0.379346 -0.000230
+    outer loop
+      vertex 20.525652 6.136390 -5.177245
+      vertex 20.875492 6.990284 -4.177202
+      vertex 20.945889 7.146640 -29.500000
+    endloop
+  endfacet
+  facet normal -0.897180 0.441664 0.000142
+    outer loop
+      vertex 20.945889 7.146640 30.500000
+      vertex 21.283375 7.840816 3.680002
+      vertex 21.008848 7.282812 4.741870
+    endloop
+  endfacet
+  facet normal -0.916945 0.399014 -0.000132
+    outer loop
+      vertex 20.945889 7.146640 30.500000
+      vertex 21.008848 7.282812 4.741870
+      vertex 20.661827 6.485701 5.807673
+    endloop
+  endfacet
+  facet normal -0.877678 0.479248 0.001360
+    outer loop
+      vertex 20.945889 7.146640 30.500000
+      vertex 22.039944 9.150253 30.500000
+      vertex 21.283375 7.840816 3.680002
+    endloop
+  endfacet
+  facet normal -0.947762 0.318978 -0.000091
+    outer loop
+      vertex 20.164255 5.062339 -6.071534
+      vertex 20.525652 6.136390 -5.177245
+      vertex 20.148113 5.007721 -29.500000
+    endloop
+  endfacet
+  facet normal -0.968710 0.248196 0.000089
+    outer loop
+      vertex 19.860142 3.875627 -6.752940
+      vertex 20.164255 5.062339 -6.071534
+      vertex 20.148113 5.007721 -29.500000
+    endloop
+  endfacet
+  facet normal -0.977145 0.212565 -0.001791
+    outer loop
+      vertex 19.860142 3.875627 -6.752940
+      vertex 20.148113 5.007721 -29.500000
+      vertex 19.662857 2.777037 -29.500000
+    endloop
+  endfacet
+  facet normal -0.936949 0.349464 0.001425
+    outer loop
+      vertex 20.148113 5.007721 30.500000
+      vertex 20.945889 7.146640 30.500000
+      vertex 20.661827 6.485701 5.807673
+    endloop
+  endfacet
+  facet normal -0.939211 0.343340 0.001011
+    outer loop
+      vertex 20.148113 5.007721 30.500000
+      vertex 20.661827 6.485701 5.807673
+      vertex 20.290781 5.467865 6.770592
+    endloop
+  endfacet
+  facet normal -0.962769 0.270325 -0.000546
+    outer loop
+      vertex 20.148113 5.007721 30.500000
+      vertex 20.290781 5.467865 6.770592
+      vertex 19.930262 4.185544 7.600476
+    endloop
+  endfacet
+  facet normal -0.984117 0.177521 -0.000038
+    outer loop
+      vertex 19.666361 2.801282 -7.161860
+      vertex 19.860142 3.875627 -6.752940
+      vertex 19.662857 2.777037 -29.500000
+    endloop
+  endfacet
+  facet normal -0.994642 0.103380 0.000044
+    outer loop
+      vertex 19.531559 1.504439 -7.436693
+      vertex 19.666361 2.801282 -7.161860
+      vertex 19.662857 2.777037 -29.500000
+    endloop
+  endfacet
+  facet normal -0.997450 0.071339 -0.001821
+    outer loop
+      vertex 19.531559 1.504439 -7.436693
+      vertex 19.662857 2.777037 -29.500000
+      vertex 19.500000 0.500000 -29.500000
+    endloop
+  endfacet
+  facet normal -0.977145 0.212565 0.001664
+    outer loop
+      vertex 19.662857 2.777037 30.500000
+      vertex 20.148113 5.007721 30.500000
+      vertex 19.930262 4.185544 7.600476
+    endloop
+  endfacet
+  facet normal -0.982769 0.184837 -0.000107
+    outer loop
+      vertex 19.662857 2.777037 30.500000
+      vertex 19.930262 4.185544 7.600476
+      vertex 19.655348 2.724181 8.184596
+    endloop
+  endfacet
+  facet normal -0.995239 0.097467 0.000104
+    outer loop
+      vertex 19.524847 1.391352 8.450188
+      vertex 19.662857 2.777037 30.500000
+      vertex 19.655348 2.724181 8.184596
+    endloop
+  endfacet
+  facet normal -0.999889 0.014895 0.000752
+    outer loop
+      vertex 19.508701 -0.027632 -7.482581
+      vertex 19.531559 1.504439 -7.436693
+      vertex 19.500000 0.500000 -29.500000
+    endloop
+  endfacet
+  facet normal -0.997451 -0.071339 -0.001315
+    outer loop
+      vertex 19.662857 -1.777037 -29.500000
+      vertex 19.508701 -0.027632 -7.482581
+      vertex 19.500000 0.500000 -29.500000
+    endloop
+  endfacet
+  facet normal -0.997029 -0.077021 -0.000861
+    outer loop
+      vertex 19.616875 -1.430375 -7.263611
+      vertex 19.508701 -0.027632 -7.482581
+      vertex 19.662857 -1.777037 -29.500000
+    endloop
+  endfacet
+  facet normal -0.997451 0.071339 0.001760
+    outer loop
+      vertex 19.500000 0.500000 30.500000
+      vertex 19.662857 2.777037 30.500000
+      vertex 19.524847 1.391352 8.450188
+    endloop
+  endfacet
+  facet normal -0.999940 0.010913 -0.000686
+    outer loop
+      vertex 19.500000 0.500000 30.500000
+      vertex 19.524847 1.391352 8.450188
+      vertex 19.509182 -0.041983 8.481620
+    endloop
+  endfacet
+  facet normal -0.985730 -0.168334 0.000586
+    outer loop
+      vertex 19.877827 -2.956544 -6.714728
+      vertex 19.616875 -1.430375 -7.263611
+      vertex 19.662857 -1.777037 -29.500000
+    endloop
+  endfacet
+  facet normal -0.977145 -0.212565 -0.001785
+    outer loop
+      vertex 19.877827 -2.956544 -6.714728
+      vertex 19.662857 -1.777037 -29.500000
+      vertex 20.148113 -4.007721 -29.500000
+    endloop
+  endfacet
+  facet normal -0.997198 -0.074802 0.001065
+    outer loop
+      vertex 19.662857 -1.777037 30.500000
+      vertex 19.509182 -0.041983 8.481620
+      vertex 19.606678 -1.344529 8.284453
+    endloop
+  endfacet
+  facet normal -0.988853 -0.148894 -0.000398
+    outer loop
+      vertex 19.662857 -1.777037 30.500000
+      vertex 19.606678 -1.344529 8.284453
+      vertex 19.768930 -2.421203 7.947588
+    endloop
+  endfacet
+  facet normal -0.997451 -0.071339 0.001340
+    outer loop
+      vertex 19.662857 -1.777037 30.500000
+      vertex 19.500000 0.500000 30.500000
+      vertex 19.509182 -0.041983 8.481620
+    endloop
+  endfacet
+  facet normal -0.967217 -0.253952 0.000242
+    outer loop
+      vertex 20.196081 -4.167983 -5.996918
+      vertex 19.877827 -2.956544 -6.714728
+      vertex 20.148113 -4.007721 -29.500000
+    endloop
+  endfacet
+  facet normal -0.946432 -0.322902 -0.000270
+    outer loop
+      vertex 20.531864 -5.152869 -5.160837
+      vertex 20.196081 -4.167983 -5.996918
+      vertex 20.148113 -4.007721 -29.500000
+    endloop
+  endfacet
+  facet normal -0.936948 -0.349464 -0.001669
+    outer loop
+      vertex 20.531864 -5.152869 -5.160837
+      vertex 20.148113 -4.007721 -29.500000
+      vertex 20.945889 -6.146640 -29.500000
+    endloop
+  endfacet
+  facet normal -0.925574 -0.378566 -0.000288
+    outer loop
+      vertex 20.856667 -5.947697 -4.235737
+      vertex 20.531864 -5.152869 -5.160837
+      vertex 20.945889 -6.146640 -29.500000
+    endloop
+  endfacet
+  facet normal -0.975386 -0.220501 0.000888
+    outer loop
+      vertex 20.148113 -4.007721 30.500000
+      vertex 19.768930 -2.421203 7.947588
+      vertex 20.038578 -3.616358 7.359708
+    endloop
+  endfacet
+  facet normal -0.956607 -0.291382 -0.000400
+    outer loop
+      vertex 20.148113 -4.007721 30.500000
+      vertex 20.038578 -3.616358 7.359708
+      vertex 20.372141 -4.710361 6.570597
+    endloop
+  endfacet
+  facet normal -0.977146 -0.212565 0.001476
+    outer loop
+      vertex 20.148113 -4.007721 30.500000
+      vertex 19.662857 -1.777037 30.500000
+      vertex 19.768930 -2.421203 7.947588
+    endloop
+  endfacet
+  facet normal -0.906353 -0.422522 0.000126
+    outer loop
+      vertex 21.149296 -6.575117 -3.233994
+      vertex 20.856667 -5.947697 -4.235737
+      vertex 20.945889 -6.146640 -29.500000
+    endloop
+  endfacet
+  facet normal -0.877678 -0.479248 -0.001469
+    outer loop
+      vertex 21.390741 -7.045117 -2.159174
+      vertex 20.945889 -6.146640 -29.500000
+      vertex 22.039944 -8.150253 -29.500000
+    endloop
+  endfacet
+  facet normal -0.888948 -0.458008 -0.000587
+    outer loop
+      vertex 21.390741 -7.045117 -2.159174
+      vertex 21.149296 -6.575117 -3.233994
+      vertex 20.945889 -6.146640 -29.500000
+    endloop
+  endfacet
+  facet normal -0.874730 -0.484610 -0.001182
+    outer loop
+      vertex 21.560614 -7.354522 -1.018713
+      vertex 21.390741 -7.045117 -2.159174
+      vertex 22.039944 -8.150253 -29.500000
+    endloop
+  endfacet
+  facet normal -0.866417 -0.499321 -0.000631
+    outer loop
+      vertex 21.639618 -7.493109 0.168034
+      vertex 21.560614 -7.354522 -1.018713
+      vertex 22.039944 -8.150253 -29.500000
+    endloop
+  endfacet
+  facet normal -0.935060 -0.354488 0.001143
+    outer loop
+      vertex 20.945889 -6.146640 30.500000
+      vertex 20.372141 -4.710361 6.570597
+      vertex 20.706879 -5.596193 5.680389
+    endloop
+  endfacet
+  facet normal -0.915154 -0.403104 -0.000127
+    outer loop
+      vertex 20.945889 -6.146640 30.500000
+      vertex 20.706879 -5.596193 5.680389
+      vertex 21.018789 -6.304007 4.707789
+    endloop
+  endfacet
+  facet normal -0.896713 -0.442613 0.000166
+    outer loop
+      vertex 20.945889 -6.146640 30.500000
+      vertex 21.018789 -6.304007 4.707789
+      vertex 21.287531 -6.848857 3.661376
+    endloop
+  endfacet
+  facet normal -0.936949 -0.349464 0.001490
+    outer loop
+      vertex 20.945889 -6.146640 30.500000
+      vertex 20.148113 -4.007721 30.500000
+      vertex 20.372141 -4.710361 6.570597
+    endloop
+  endfacet
+  facet normal -0.800539 -0.599276 0.002472
+    outer loop
+      vertex 23.408007 -9.977772 -29.500000
+      vertex 21.639618 -7.493109 0.168034
+      vertex 22.039944 -8.150253 -29.500000
+    endloop
+  endfacet
+  facet normal -0.879958 -0.475049 0.001634
+    outer loop
+      vertex 22.039944 -8.150253 30.500000
+      vertex 21.287531 -6.848857 3.661376
+      vertex 21.493242 -7.233742 2.546763
+    endloop
+  endfacet
+  facet normal -0.869705 -0.493571 0.000827
+    outer loop
+      vertex 22.039944 -8.150253 30.500000
+      vertex 21.493242 -7.233742 2.546763
+      vertex 21.616100 -7.452191 1.373303
+    endloop
+  endfacet
+  facet normal -0.861961 -0.506974 0.000393
+    outer loop
+      vertex 22.039944 -8.150253 30.500000
+      vertex 21.616100 -7.452191 1.373303
+      vertex 21.639618 -7.493109 0.168034
+    endloop
+  endfacet
+  facet normal -0.877678 -0.479248 0.001367
+    outer loop
+      vertex 22.039944 -8.150253 30.500000
+      vertex 20.945889 -6.146640 30.500000
+      vertex 21.287531 -6.848857 3.661376
+    endloop
+  endfacet
+  facet normal -0.707107 -0.707107 -0.000000
+    outer loop
+      vertex 23.408007 -9.977772 30.500000
+      vertex 23.408007 -9.977772 -29.500000
+      vertex 25.022228 -11.591993 -29.500000
+    endloop
+  endfacet
+  facet normal -0.814720 -0.579854 -0.000000
+    outer loop
+      vertex 23.408007 -9.977772 30.500000
+      vertex 21.639618 -7.493109 0.168034
+      vertex 23.408007 -9.977772 -29.500000
+    endloop
+  endfacet
+  facet normal -0.800539 -0.599276 -0.002418
+    outer loop
+      vertex 23.408007 -9.977772 30.500000
+      vertex 22.039944 -8.150253 30.500000
+      vertex 21.639618 -7.493109 0.168034
+    endloop
+  endfacet
+  facet normal -0.707107 -0.707107 -0.000000
+    outer loop
+      vertex 25.022228 -11.591993 30.500000
+      vertex 23.408007 -9.977772 30.500000
+      vertex 25.022228 -11.591993 -29.500000
+    endloop
+  endfacet
+  facet normal -0.599278 -0.800541 -0.000000
+    outer loop
+      vertex 26.849747 -12.960056 30.500000
+      vertex 25.022228 -11.591993 -29.500000
+      vertex 26.849747 -12.960056 -29.500000
+    endloop
+  endfacet
+  facet normal -0.479249 -0.877679 -0.000000
+    outer loop
+      vertex 26.849747 -12.960056 30.500000
+      vertex 26.849747 -12.960056 -29.500000
+      vertex 28.853359 -14.054111 -29.500000
+    endloop
+  endfacet
+  facet normal -0.599278 -0.800541 0.000000
+    outer loop
+      vertex 26.849747 -12.960056 30.500000
+      vertex 25.022228 -11.591993 30.500000
+      vertex 25.022228 -11.591993 -29.500000
+    endloop
+  endfacet
+  facet normal -0.479249 -0.877679 -0.000000
+    outer loop
+      vertex 28.853359 -14.054111 30.500000
+      vertex 26.849747 -12.960056 30.500000
+      vertex 28.853359 -14.054111 -29.500000
+    endloop
+  endfacet
+  facet normal -0.349464 -0.936950 0.000000
+    outer loop
+      vertex 30.992279 -14.851888 30.500000
+      vertex 28.853359 -14.054111 30.500000
+      vertex 28.853359 -14.054111 -29.500000
+    endloop
+  endfacet
+  facet normal -0.349464 -0.936950 -0.000000
+    outer loop
+      vertex 30.992279 -14.851888 30.500000
+      vertex 28.853359 -14.054111 -29.500000
+      vertex 30.992279 -14.851888 -29.500000
+    endloop
+  endfacet
+  facet normal -0.212565 -0.977147 -0.000000
+    outer loop
+      vertex 30.992279 -14.851888 30.500000
+      vertex 30.992279 -14.851888 -29.500000
+      vertex 33.222961 -15.337143 -29.500000
+    endloop
+  endfacet
+  facet normal -0.212565 -0.977147 -0.000000
+    outer loop
+      vertex 33.222961 -15.337143 30.500000
+      vertex 30.992279 -14.851888 30.500000
+      vertex 33.222961 -15.337143 -29.500000
+    endloop
+  endfacet
+  facet normal -0.071339 -0.997452 0.000000
+    outer loop
+      vertex 35.500000 -15.500000 30.500000
+      vertex 33.222961 -15.337143 30.500000
+      vertex 33.222961 -15.337143 -29.500000
+    endloop
+  endfacet
+  facet normal -0.071339 -0.997452 -0.000000
+    outer loop
+      vertex 35.500000 -15.500000 30.500000
+      vertex 33.222961 -15.337143 -29.500000
+      vertex 35.500000 -15.500000 -29.500000
+    endloop
+  endfacet
+  facet normal 0.071339 -0.997452 0.000000
+    outer loop
+      vertex 35.500000 -15.500000 30.500000
+      vertex 35.500000 -15.500000 -29.500000
+      vertex 37.777039 -15.337143 -29.500000
+    endloop
+  endfacet
+  facet normal 0.071339 -0.997452 0.000000
+    outer loop
+      vertex 37.777039 -15.337143 30.500000
+      vertex 35.500000 -15.500000 30.500000
+      vertex 37.777039 -15.337143 -29.500000
+    endloop
+  endfacet
+  facet normal 0.212565 -0.977147 0.000000
+    outer loop
+      vertex 40.007721 -14.851888 30.500000
+      vertex 37.777039 -15.337143 30.500000
+      vertex 37.777039 -15.337143 -29.500000
+    endloop
+  endfacet
+  facet normal 0.212565 -0.977147 0.000000
+    outer loop
+      vertex 40.007721 -14.851888 30.500000
+      vertex 37.777039 -15.337143 -29.500000
+      vertex 40.007721 -14.851888 -29.500000
+    endloop
+  endfacet
+  facet normal 0.349464 -0.936950 0.000000
+    outer loop
+      vertex 40.007721 -14.851888 30.500000
+      vertex 40.007721 -14.851888 -29.500000
+      vertex 42.146641 -14.054111 -29.500000
+    endloop
+  endfacet
+  facet normal 0.349464 -0.936950 0.000000
+    outer loop
+      vertex 42.146641 -14.054111 30.500000
+      vertex 40.007721 -14.851888 30.500000
+      vertex 42.146641 -14.054111 -29.500000
+    endloop
+  endfacet
+  facet normal 0.479249 -0.877679 0.000000
+    outer loop
+      vertex 44.150253 -12.960056 30.500000
+      vertex 42.146641 -14.054111 30.500000
+      vertex 42.146641 -14.054111 -29.500000
+    endloop
+  endfacet
+  facet normal 0.479249 -0.877679 0.000000
+    outer loop
+      vertex 44.150253 -12.960056 30.500000
+      vertex 42.146641 -14.054111 -29.500000
+      vertex 44.150253 -12.960056 -29.500000
+    endloop
+  endfacet
+  facet normal 0.599278 -0.800541 0.000000
+    outer loop
+      vertex 44.150253 -12.960056 30.500000
+      vertex 44.150253 -12.960056 -29.500000
+      vertex 45.977772 -11.591993 -29.500000
+    endloop
+  endfacet
+  facet normal 0.599278 -0.800541 0.000000
+    outer loop
+      vertex 45.977772 -11.591993 30.500000
+      vertex 44.150253 -12.960056 30.500000
+      vertex 45.977772 -11.591993 -29.500000
+    endloop
+  endfacet
+  facet normal 0.707107 -0.707106 0.000000
+    outer loop
+      vertex 47.591991 -9.977772 30.500000
+      vertex 45.977772 -11.591993 30.500000
+      vertex 45.977772 -11.591993 -29.500000
+    endloop
+  endfacet
+  facet normal 0.707107 -0.707106 0.000000
+    outer loop
+      vertex 47.591991 -9.977772 30.500000
+      vertex 45.977772 -11.591993 -29.500000
+      vertex 47.591991 -9.977772 -29.500000
+    endloop
+  endfacet
+  facet normal 0.800541 -0.599278 0.000000
+    outer loop
+      vertex 47.591991 -9.977772 30.500000
+      vertex 47.591991 -9.977772 -29.500000
+      vertex 48.960056 -8.150253 -29.500000
+    endloop
+  endfacet
+  facet normal 0.800541 -0.599278 0.000000
+    outer loop
+      vertex 48.960056 -8.150253 30.500000
+      vertex 47.591991 -9.977772 30.500000
+      vertex 48.960056 -8.150253 -29.500000
+    endloop
+  endfacet
+  facet normal 0.888117 -0.459617 0.000000
+    outer loop
+      vertex 50.335209 -5.493046 0.211204
+      vertex 48.960056 -8.150253 30.500000
+      vertex 48.960056 -8.150253 -29.500000
+    endloop
+  endfacet
+  facet normal 0.877677 -0.479248 0.002239
+    outer loop
+      vertex 50.335209 -5.493046 0.211204
+      vertex 48.960056 -8.150253 -29.500000
+      vertex 50.054111 -6.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.926941 -0.375206 -0.000516
+    outer loop
+      vertex 50.374840 -5.393991 -0.622882
+      vertex 50.335209 -5.493046 0.211204
+      vertex 50.054111 -6.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.931224 -0.364446 -0.000844
+    outer loop
+      vertex 50.458221 -5.179053 -1.436066
+      vertex 50.374840 -5.393991 -0.622882
+      vertex 50.054111 -6.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.937556 -0.347830 -0.001508
+    outer loop
+      vertex 50.578938 -4.850290 -2.215583
+      vertex 50.458221 -5.179053 -1.436066
+      vertex 50.054111 -6.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.936949 -0.349464 -0.001419
+    outer loop
+      vertex 50.578938 -4.850290 -2.215583
+      vertex 50.054111 -6.146640 -29.500000
+      vertex 50.851887 -4.007721 -29.500000
+    endloop
+  endfacet
+  facet normal 0.947000 -0.321234 -0.000446
+    outer loop
+      vertex 50.729084 -4.406632 -2.953253
+      vertex 50.578938 -4.850290 -2.215583
+      vertex 50.851887 -4.007721 -29.500000
+    endloop
+  endfacet
+  facet normal 0.932978 -0.359933 0.001005
+    outer loop
+      vertex 50.054111 -6.146640 30.500000
+      vertex 50.396503 -5.339019 1.880529
+      vertex 50.492382 -5.088249 2.684370
+    endloop
+  endfacet
+  facet normal 0.928104 -0.372320 0.000597
+    outer loop
+      vertex 50.054111 -6.146640 30.500000
+      vertex 50.342648 -5.474597 1.051531
+      vertex 50.396503 -5.339019 1.880529
+    endloop
+  endfacet
+  facet normal 0.923121 -0.384509 0.000270
+    outer loop
+      vertex 50.054111 -6.146640 30.500000
+      vertex 50.335209 -5.493046 0.211204
+      vertex 50.342648 -5.474597 1.051531
+    endloop
+  endfacet
+  facet normal 0.877677 -0.479248 -0.002196
+    outer loop
+      vertex 50.054111 -6.146640 30.500000
+      vertex 48.960056 -8.150253 30.500000
+      vertex 50.335209 -5.493046 0.211204
+    endloop
+  endfacet
+  facet normal 0.957335 -0.288981 0.000086
+    outer loop
+      vertex 50.899483 -3.842341 -3.640540
+      vertex 50.729084 -4.406632 -2.953253
+      vertex 50.851887 -4.007721 -29.500000
+    endloop
+  endfacet
+  facet normal 0.968292 -0.249822 -0.000185
+    outer loop
+      vertex 51.079292 -3.144950 -4.265956
+      vertex 50.899483 -3.842341 -3.640540
+      vertex 50.851887 -4.007721 -29.500000
+    endloop
+  endfacet
+  facet normal 0.977146 -0.212565 -0.001538
+    outer loop
+      vertex 51.079292 -3.144950 -4.265956
+      vertex 50.851887 -4.007721 -29.500000
+      vertex 51.337143 -1.777037 -29.500000
+    endloop
+  endfacet
+  facet normal 0.979427 -0.201798 -0.000931
+    outer loop
+      vertex 51.254513 -2.292002 -4.810812
+      vertex 51.079292 -3.144950 -4.265956
+      vertex 51.337143 -1.777037 -29.500000
+    endloop
+  endfacet
+  facet normal 0.971762 -0.235962 0.000529
+    outer loop
+      vertex 50.851887 -4.007721 30.500000
+      vertex 50.955387 -3.638966 4.843842
+      vertex 51.135273 -2.896791 5.445888
+    endloop
+  endfacet
+  facet normal 0.960723 -0.277510 -0.000113
+    outer loop
+      vertex 50.851887 -4.007721 30.500000
+      vertex 50.780762 -4.243235 4.174469
+      vertex 50.955387 -3.638966 4.843842
+    endloop
+  endfacet
+  facet normal 0.950144 -0.311811 0.000222
+    outer loop
+      vertex 50.851887 -4.007721 30.500000
+      vertex 50.623219 -4.723814 3.451571
+      vertex 50.780762 -4.243235 4.174469
+    endloop
+  endfacet
+  facet normal 0.940481 -0.339846 0.001046
+    outer loop
+      vertex 50.851887 -4.007721 30.500000
+      vertex 50.492382 -5.088249 2.684370
+      vertex 50.623219 -4.723814 3.451571
+    endloop
+  endfacet
+  facet normal 0.936949 -0.349464 0.001466
+    outer loop
+      vertex 50.851887 -4.007721 30.500000
+      vertex 50.054111 -6.146640 30.500000
+      vertex 50.492382 -5.088249 2.684370
+    endloop
+  endfacet
+  facet normal 0.989912 -0.141685 0.000358
+    outer loop
+      vertex 51.404663 -1.244035 -5.240935
+      vertex 51.254513 -2.292002 -4.810812
+      vertex 51.337143 -1.777037 -29.500000
+    endloop
+  endfacet
+  facet normal 0.997451 -0.071339 -0.001635
+    outer loop
+      vertex 51.473011 -0.428928 -5.427655
+      vertex 51.337143 -1.777037 -29.500000
+      vertex 51.500000 0.500000 -29.500000
+    endloop
+  endfacet
+  facet normal 0.996485 -0.083770 -0.000933
+    outer loop
+      vertex 51.473011 -0.428928 -5.427655
+      vertex 51.404663 -1.244035 -5.240935
+      vertex 51.337143 -1.777037 -29.500000
+    endloop
+  endfacet
+  facet normal 0.992676 -0.120805 -0.000250
+    outer loop
+      vertex 51.337143 -1.777037 30.500000
+      vertex 51.304974 -1.990543 5.958681
+      vertex 51.440762 -0.875535 6.340197
+    endloop
+  endfacet
+  facet normal 0.982883 -0.184229 0.000314
+    outer loop
+      vertex 51.337143 -1.777037 30.500000
+      vertex 51.135273 -2.896791 5.445888
+      vertex 51.304974 -1.990543 5.958681
+    endloop
+  endfacet
+  facet normal 0.977146 -0.212565 0.001627
+    outer loop
+      vertex 51.337143 -1.777037 30.500000
+      vertex 50.851887 -4.007721 30.500000
+      vertex 51.135273 -2.896791 5.445888
+    endloop
+  endfacet
+  facet normal 0.999578 -0.029042 0.000000
+    outer loop
+      vertex 51.500000 0.500000 -5.500000
+      vertex 51.473011 -0.428928 -5.427655
+      vertex 51.500000 0.500000 -29.500000
+    endloop
+  endfacet
+  facet normal 0.999074 -0.043026 0.000000
+    outer loop
+      vertex 51.500000 0.500000 30.500000
+      vertex 51.440762 -0.875535 6.340197
+      vertex 51.500000 0.500000 6.500000
+    endloop
+  endfacet
+  facet normal 0.997451 -0.071339 0.001616
+    outer loop
+      vertex 51.500000 0.500000 30.500000
+      vertex 51.337143 -1.777037 30.500000
+      vertex 51.440762 -0.875535 6.340197
+    endloop
+  endfacet
+  facet normal -0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 37.777039 16.337143 -29.500000
+      vertex 40.007721 15.851888 -29.500000
+      vertex 35.500000 16.500000 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 51.500000 0.500000 -29.500000
+      vertex 50.054111 7.146640 -29.500000
+      vertex 51.337143 2.777037 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 51.337143 2.777037 -29.500000
+      vertex 50.054111 7.146640 -29.500000
+      vertex 50.851887 5.007721 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 22.039944 -8.150253 -29.500000
+      vertex 20.945889 -6.146640 -29.500000
+      vertex 23.408007 -9.977772 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 23.408007 -9.977772 -29.500000
+      vertex 20.945889 -6.146640 -29.500000
+      vertex 25.022228 -11.591993 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 25.022228 -11.591993 -29.500000
+      vertex 20.945889 -6.146640 -29.500000
+      vertex 26.849747 -12.960056 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 26.849747 -12.960056 -29.500000
+      vertex 30.992279 -14.851888 -29.500000
+      vertex 28.853359 -14.054111 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 20.945889 -6.146640 -29.500000
+      vertex 30.992279 -14.851888 -29.500000
+      vertex 26.849747 -12.960056 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 50.054111 7.146640 -29.500000
+      vertex 47.591991 10.977772 -29.500000
+      vertex 48.960056 9.150253 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 51.500000 0.500000 -29.500000
+      vertex 47.591991 10.977772 -29.500000
+      vertex 50.054111 7.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 51.337143 -1.777037 -29.500000
+      vertex 47.591991 10.977772 -29.500000
+      vertex 51.500000 0.500000 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 28.853359 15.054111 -29.500000
+      vertex 45.977772 12.591993 -29.500000
+      vertex 51.337143 -1.777037 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 35.500000 16.500000 -29.500000
+      vertex 45.977772 12.591993 -29.500000
+      vertex 28.853359 15.054111 -29.500000
+    endloop
+  endfacet
+  facet normal -0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 44.150253 13.960056 -29.500000
+      vertex 45.977772 12.591993 -29.500000
+      vertex 42.146641 15.054111 -29.500000
+    endloop
+  endfacet
+  facet normal -0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 42.146641 15.054111 -29.500000
+      vertex 45.977772 12.591993 -29.500000
+      vertex 40.007721 15.851888 -29.500000
+    endloop
+  endfacet
+  facet normal -0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 40.007721 15.851888 -29.500000
+      vertex 45.977772 12.591993 -29.500000
+      vertex 35.500000 16.500000 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 51.337143 -1.777037 -29.500000
+      vertex 45.977772 12.591993 -29.500000
+      vertex 47.591991 10.977772 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 30.992279 -14.851888 -29.500000
+      vertex 35.500000 -15.500000 -29.500000
+      vertex 33.222961 -15.337143 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 20.945889 -6.146640 -29.500000
+      vertex 35.500000 -15.500000 -29.500000
+      vertex 30.992279 -14.851888 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 19.662857 -1.777037 -29.500000
+      vertex 19.500000 0.500000 -29.500000
+      vertex 20.148113 -4.007721 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 20.148113 -4.007721 -29.500000
+      vertex 19.500000 0.500000 -29.500000
+      vertex 20.945889 -6.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 20.945889 -6.146640 -29.500000
+      vertex 37.777039 -15.337143 -29.500000
+      vertex 35.500000 -15.500000 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 19.500000 0.500000 -29.500000
+      vertex 19.662857 2.777037 -29.500000
+      vertex 20.945889 -6.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 37.777039 -15.337143 -29.500000
+      vertex 42.146641 -14.054111 -29.500000
+      vertex 40.007721 -14.851888 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 20.945889 -6.146640 -29.500000
+      vertex 42.146641 -14.054111 -29.500000
+      vertex 37.777039 -15.337143 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 20.148113 5.007721 -29.500000
+      vertex 20.945889 7.146640 -29.500000
+      vertex 19.662857 2.777037 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 42.146641 -14.054111 -29.500000
+      vertex 45.977772 -11.591993 -29.500000
+      vertex 44.150253 -12.960056 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 42.146641 -14.054111 -29.500000
+      vertex 47.591991 -9.977772 -29.500000
+      vertex 45.977772 -11.591993 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 23.408007 10.977772 -29.500000
+      vertex 25.022228 12.591993 -29.500000
+      vertex 22.039944 9.150253 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 22.039944 9.150253 -29.500000
+      vertex 25.022228 12.591993 -29.500000
+      vertex 20.945889 7.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 47.591991 -9.977772 -29.500000
+      vertex 50.054111 -6.146640 -29.500000
+      vertex 48.960056 -8.150253 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 19.662857 2.777037 -29.500000
+      vertex 50.054111 -6.146640 -29.500000
+      vertex 20.945889 -6.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 20.945889 7.146640 -29.500000
+      vertex 50.054111 -6.146640 -29.500000
+      vertex 19.662857 2.777037 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 20.945889 -6.146640 -29.500000
+      vertex 50.054111 -6.146640 -29.500000
+      vertex 42.146641 -14.054111 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 25.022228 12.591993 -29.500000
+      vertex 50.054111 -6.146640 -29.500000
+      vertex 20.945889 7.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 42.146641 -14.054111 -29.500000
+      vertex 50.054111 -6.146640 -29.500000
+      vertex 47.591991 -9.977772 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 26.849747 13.960056 -29.500000
+      vertex 28.853359 15.054111 -29.500000
+      vertex 25.022228 12.591993 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 50.054111 -6.146640 -29.500000
+      vertex 51.337143 -1.777037 -29.500000
+      vertex 50.851887 -4.007721 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 28.853359 15.054111 -29.500000
+      vertex 51.337143 -1.777037 -29.500000
+      vertex 25.022228 12.591993 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 25.022228 12.591993 -29.500000
+      vertex 51.337143 -1.777037 -29.500000
+      vertex 50.054111 -6.146640 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 30.992279 15.851888 -29.500000
+      vertex 33.222961 16.337143 -29.500000
+      vertex 28.853359 15.054111 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 33.222961 16.337143 -29.500000
+      vertex 35.500000 16.500000 -29.500000
+      vertex 28.853359 15.054111 -29.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 40.007721 15.851888 30.500000
+      vertex 35.500000 16.500000 30.500000
+      vertex 28.853359 15.054111 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 40.007721 15.851888 30.500000
+      vertex 37.777039 16.337143 30.500000
+      vertex 35.500000 16.500000 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 40.007721 15.851888 30.500000
+      vertex 51.337143 -1.777037 30.500000
+      vertex 51.500000 0.500000 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 50.054111 7.146640 30.500000
+      vertex 51.337143 2.777037 30.500000
+      vertex 50.851887 5.007721 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 20.945889 -6.146640 30.500000
+      vertex 22.039944 -8.150253 30.500000
+      vertex 23.408007 -9.977772 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 20.945889 -6.146640 30.500000
+      vertex 23.408007 -9.977772 30.500000
+      vertex 25.022228 -11.591993 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 20.945889 -6.146640 30.500000
+      vertex 25.022228 -11.591993 30.500000
+      vertex 26.849747 -12.960056 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 47.591991 10.977772 30.500000
+      vertex 50.054111 7.146640 30.500000
+      vertex 48.960056 9.150253 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 30.992279 -14.851888 30.500000
+      vertex 26.849747 -12.960056 30.500000
+      vertex 28.853359 -14.054111 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 45.977772 12.591993 30.500000
+      vertex 51.500000 0.500000 30.500000
+      vertex 51.337143 2.777037 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 30.992279 -14.851888 30.500000
+      vertex 20.945889 -6.146640 30.500000
+      vertex 26.849747 -12.960056 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 45.977772 12.591993 30.500000
+      vertex 44.150253 13.960056 30.500000
+      vertex 42.146641 15.054111 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 45.977772 12.591993 30.500000
+      vertex 42.146641 15.054111 30.500000
+      vertex 40.007721 15.851888 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 45.977772 12.591993 30.500000
+      vertex 40.007721 15.851888 30.500000
+      vertex 51.500000 0.500000 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 45.977772 12.591993 30.500000
+      vertex 51.337143 2.777037 30.500000
+      vertex 50.054111 7.146640 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 45.977772 12.591993 30.500000
+      vertex 50.054111 7.146640 30.500000
+      vertex 47.591991 10.977772 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 35.500000 -15.500000 30.500000
+      vertex 30.992279 -14.851888 30.500000
+      vertex 33.222961 -15.337143 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 35.500000 -15.500000 30.500000
+      vertex 20.945889 -6.146640 30.500000
+      vertex 30.992279 -14.851888 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 19.500000 0.500000 30.500000
+      vertex 19.662857 -1.777037 30.500000
+      vertex 20.148113 -4.007721 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 19.500000 0.500000 30.500000
+      vertex 20.148113 -4.007721 30.500000
+      vertex 20.945889 -6.146640 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 37.777039 -15.337143 30.500000
+      vertex 20.945889 -6.146640 30.500000
+      vertex 35.500000 -15.500000 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 19.662857 2.777037 30.500000
+      vertex 19.500000 0.500000 30.500000
+      vertex 20.945889 -6.146640 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 42.146641 -14.054111 30.500000
+      vertex 37.777039 -15.337143 30.500000
+      vertex 40.007721 -14.851888 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 42.146641 -14.054111 30.500000
+      vertex 20.945889 -6.146640 30.500000
+      vertex 37.777039 -15.337143 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 20.945889 7.146640 30.500000
+      vertex 20.148113 5.007721 30.500000
+      vertex 19.662857 2.777037 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 45.977772 -11.591993 30.500000
+      vertex 42.146641 -14.054111 30.500000
+      vertex 44.150253 -12.960056 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 47.591991 -9.977772 30.500000
+      vertex 42.146641 -14.054111 30.500000
+      vertex 45.977772 -11.591993 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 25.022228 12.591993 30.500000
+      vertex 23.408007 10.977772 30.500000
+      vertex 22.039944 9.150253 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 25.022228 12.591993 30.500000
+      vertex 22.039944 9.150253 30.500000
+      vertex 20.945889 7.146640 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 50.054111 -6.146640 30.500000
+      vertex 47.591991 -9.977772 30.500000
+      vertex 48.960056 -8.150253 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 50.054111 -6.146640 30.500000
+      vertex 19.662857 2.777037 30.500000
+      vertex 20.945889 -6.146640 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 50.054111 -6.146640 30.500000
+      vertex 20.945889 7.146640 30.500000
+      vertex 19.662857 2.777037 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 50.054111 -6.146640 30.500000
+      vertex 20.945889 -6.146640 30.500000
+      vertex 42.146641 -14.054111 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 50.054111 -6.146640 30.500000
+      vertex 25.022228 12.591993 30.500000
+      vertex 20.945889 7.146640 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 50.054111 -6.146640 30.500000
+      vertex 42.146641 -14.054111 30.500000
+      vertex 47.591991 -9.977772 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 28.853359 15.054111 30.500000
+      vertex 26.849747 13.960056 30.500000
+      vertex 25.022228 12.591993 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 51.337143 -1.777037 30.500000
+      vertex 50.054111 -6.146640 30.500000
+      vertex 50.851887 -4.007721 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 51.337143 -1.777037 30.500000
+      vertex 28.853359 15.054111 30.500000
+      vertex 25.022228 12.591993 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 51.337143 -1.777037 30.500000
+      vertex 25.022228 12.591993 30.500000
+      vertex 50.054111 -6.146640 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 33.222961 16.337143 30.500000
+      vertex 30.992279 15.851888 30.500000
+      vertex 28.853359 15.054111 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 35.500000 16.500000 30.500000
+      vertex 33.222961 16.337143 30.500000
+      vertex 28.853359 15.054111 30.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 40.007721 15.851888 30.500000
+      vertex 28.853359 15.054111 30.500000
+      vertex 51.337143 -1.777037 30.500000
+    endloop
+  endfacet
+  facet normal 0.000661 -0.983098 0.183081
+    outer loop
+      vertex 21.616100 -7.452191 1.373303
+      vertex 21.493242 -7.233742 2.546763
+      vertex 0.500000 -7.289563 2.322828
+    endloop
+  endfacet
+  facet normal -0.000747 -0.988280 0.152649
+    outer loop
+      vertex 21.616100 -7.452191 1.373303
+      vertex 0.500000 -7.289563 2.322828
+      vertex 0.500000 -7.476526 1.112394
+    endloop
+  endfacet
+  facet normal -0.000784 -1.000000 0.000000
+    outer loop
+      vertex 21.639618 -7.493109 0.168034
+      vertex 0.500000 -7.476526 1.112394
+      vertex 0.500000 -7.476526 -0.112394
+    endloop
+  endfacet
+  facet normal 0.000732 -0.999423 0.033944
+    outer loop
+      vertex 21.639618 -7.493109 0.168034
+      vertex 21.616100 -7.452191 1.373303
+      vertex 0.500000 -7.476526 1.112394
+    endloop
+  endfacet
+  facet normal 0.000000 0.997066 0.076549
+    outer loop
+      vertex 21.643593 8.500000 0.500000
+      vertex 0.500000 8.500000 0.500000
+      vertex 0.500000 8.406243 1.721194
+    endloop
+  endfacet
+  facet normal -0.000844 -0.988280 -0.152649
+    outer loop
+      vertex 21.560614 -7.354522 -1.018713
+      vertex 0.500000 -7.476526 -0.112394
+      vertex 0.500000 -7.289563 -1.322828
+    endloop
+  endfacet
+  facet normal 0.000760 -0.993244 -0.116041
+    outer loop
+      vertex 21.560614 -7.354522 -1.018713
+      vertex 21.639618 -7.493109 0.168034
+      vertex 0.500000 -7.476526 -0.112394
+    endloop
+  endfacet
+  facet normal -0.001006 0.973695 0.227853
+    outer loop
+      vertex 21.547388 8.331002 2.135666
+      vertex 0.500000 8.406243 1.721194
+      vertex 0.500000 8.127172 2.913765
+    endloop
+  endfacet
+  facet normal 0.001530 0.994694 0.102862
+    outer loop
+      vertex 21.547388 8.331002 2.135666
+      vertex 21.643593 8.500000 0.500000
+      vertex 0.500000 8.406243 1.721194
+    endloop
+  endfacet
+  facet normal -0.000923 -0.953396 -0.301720
+    outer loop
+      vertex 21.390741 -7.045117 -2.159174
+      vertex 0.500000 -7.289563 -1.322828
+      vertex 0.500000 -6.920020 -2.490537
+    endloop
+  endfacet
+  facet normal 0.000806 -0.965082 -0.261945
+    outer loop
+      vertex 21.390741 -7.045117 -2.159174
+      vertex 21.560614 -7.354522 -1.018713
+      vertex 0.500000 -7.289563 -1.322828
+    endloop
+  endfacet
+  facet normal -0.001003 0.927502 0.373817
+    outer loop
+      vertex 21.283375 7.840816 3.680002
+      vertex 0.500000 8.127172 2.913765
+      vertex 0.500000 7.669324 4.049759
+    endloop
+  endfacet
+  facet normal 0.001966 0.953040 0.302839
+    outer loop
+      vertex 21.283375 7.840816 3.680002
+      vertex 21.547388 8.331002 2.135666
+      vertex 0.500000 8.127172 2.913765
+    endloop
+  endfacet
+  facet normal -0.001007 -0.896165 -0.443720
+    outer loop
+      vertex 21.149296 -6.575117 -3.233994
+      vertex 0.500000 -6.920020 -2.490537
+      vertex 0.500000 -6.376557 -3.588150
+    endloop
+  endfacet
+  facet normal 0.000871 -0.916158 -0.400816
+    outer loop
+      vertex 21.149296 -6.575117 -3.233994
+      vertex 21.390741 -7.045117 -2.159174
+      vertex 0.500000 -6.920020 -2.490537
+    endloop
+  endfacet
+  facet normal -0.001046 0.859569 0.511018
+    outer loop
+      vertex 21.008848 7.282812 4.741870
+      vertex 0.500000 7.669324 4.049759
+      vertex 0.500000 7.043435 5.102549
+    endloop
+  endfacet
+  facet normal 0.000976 0.885114 0.465374
+    outer loop
+      vertex 21.008848 7.282812 4.741870
+      vertex 21.283375 7.840816 3.680002
+      vertex 0.500000 7.669324 4.049759
+    endloop
+  endfacet
+  facet normal -0.001071 -0.817929 -0.575318
+    outer loop
+      vertex 20.856667 -5.947697 -4.235737
+      vertex 0.500000 -6.376557 -3.588150
+      vertex 0.500000 -5.671914 -4.589940
+    endloop
+  endfacet
+  facet normal 0.000959 -0.847365 -0.531009
+    outer loop
+      vertex 20.856667 -5.947697 -4.235737
+      vertex 21.149296 -6.575117 -3.233994
+      vertex 0.500000 -6.376557 -3.588150
+    endloop
+  endfacet
+  facet normal 0.001193 0.800620 0.599171
+    outer loop
+      vertex 20.661827 6.485701 5.807673
+      vertex 21.008848 7.282812 4.741870
+      vertex 0.500000 7.043435 5.102549
+    endloop
+  endfacet
+  facet normal -0.000910 0.771489 0.636242
+    outer loop
+      vertex 20.661827 6.485701 5.807673
+      vertex 0.500000 7.043435 5.102549
+      vertex 0.500000 6.264173 6.047460
+    endloop
+  endfacet
+  facet normal -0.001093 -0.720521 -0.693432
+    outer loop
+      vertex 20.531864 -5.152869 -5.160837
+      vertex 0.500000 -5.671914 -4.589940
+      vertex 0.500000 -4.822606 -5.472426
+    endloop
+  endfacet
+  facet normal 0.001070 -0.758306 -0.651898
+    outer loop
+      vertex 20.531864 -5.152869 -5.160837
+      vertex 20.856667 -5.947697 -4.235737
+      vertex 0.500000 -5.671914 -4.589940
+    endloop
+  endfacet
+  facet normal 0.001093 0.687027 0.726631
+    outer loop
+      vertex 20.290781 5.467865 6.770592
+      vertex 20.661827 6.485701 5.807673
+      vertex 0.500000 6.264173 6.047460
+    endloop
+  endfacet
+  facet normal -0.000508 0.665326 0.746553
+    outer loop
+      vertex 20.290781 5.467865 6.770592
+      vertex 0.500000 6.264173 6.047460
+      vertex 0.500000 5.349803 6.862343
+    endloop
+  endfacet
+  facet normal -0.001029 -0.606225 -0.795292
+    outer loop
+      vertex 20.196081 -4.167983 -5.996918
+      vertex 0.500000 -4.822606 -5.472426
+      vertex 0.500000 -3.848540 -6.214923
+    endloop
+  endfacet
+  facet normal 0.001195 -0.646929 -0.762549
+    outer loop
+      vertex 20.196081 -4.167983 -5.996918
+      vertex 20.531864 -5.152869 -5.160837
+      vertex 0.500000 -4.822606 -5.472426
+    endloop
+  endfacet
+  facet normal 0.000652 0.543190 0.839610
+    outer loop
+      vertex 19.930262 4.185544 7.600476
+      vertex 20.290781 5.467865 6.770592
+      vertex 0.500000 5.349803 6.862343
+    endloop
+  endfacet
+  facet normal -0.000669 -0.477720 -0.878512
+    outer loop
+      vertex 19.877827 -2.956544 -6.714728
+      vertex 0.500000 -3.848540 -6.214923
+      vertex 0.500000 -2.772549 -6.800029
+    endloop
+  endfacet
+  facet normal 0.000684 0.543568 0.839365
+    outer loop
+      vertex 19.930262 4.185544 7.600476
+      vertex 0.500000 5.349803 6.862343
+      vertex 0.500000 4.321759 7.528098
+    endloop
+  endfacet
+  facet normal -0.000531 0.409068 0.912504
+    outer loop
+      vertex 19.930262 4.185544 7.600476
+      vertex 0.500000 4.321759 7.528098
+      vertex 0.500000 3.204135 8.029120
+    endloop
+  endfacet
+  facet normal 0.001260 -0.509515 -0.860461
+    outer loop
+      vertex 19.877827 -2.956544 -6.714728
+      vertex 20.196081 -4.167983 -5.996918
+      vertex 0.500000 -3.848540 -6.214923
+    endloop
+  endfacet
+  facet normal 0.001755 0.370872 0.928682
+    outer loop
+      vertex 19.655348 2.724181 8.184596
+      vertex 19.930262 4.185544 7.600476
+      vertex 0.500000 3.204135 8.029120
+    endloop
+  endfacet
+  facet normal -0.001187 0.264981 0.964253
+    outer loop
+      vertex 19.655348 2.724181 8.184596
+      vertex 0.500000 3.204135 8.029120
+      vertex 0.500000 2.023129 8.353666
+    endloop
+  endfacet
+  facet normal 0.000909 -0.338017 -0.941140
+    outer loop
+      vertex 19.616875 -1.430375 -7.263611
+      vertex 0.500000 -2.772549 -6.800029
+      vertex 0.500000 -1.619852 -7.214028
+    endloop
+  endfacet
+  facet normal -0.000659 -0.190391 -0.981708
+    outer loop
+      vertex 19.616875 -1.430375 -7.263611
+      vertex 0.500000 -1.619852 -7.214028
+      vertex 0.500000 -0.417467 -7.447217
+    endloop
+  endfacet
+  facet normal 0.000930 -0.338285 -0.941043
+    outer loop
+      vertex 19.616875 -1.430375 -7.263611
+      vertex 19.877827 -2.956544 -6.714728
+      vertex 0.500000 -2.772549 -6.800029
+    endloop
+  endfacet
+  facet normal 0.001509 0.195285 0.980745
+    outer loop
+      vertex 19.524847 1.391352 8.450188
+      vertex 19.655348 2.724181 8.184596
+      vertex 0.500000 2.023129 8.353666
+    endloop
+  endfacet
+  facet normal -0.001232 0.114683 0.993401
+    outer loop
+      vertex 19.524847 1.391352 8.450188
+      vertex 0.500000 2.023129 8.353666
+      vertex 0.500000 0.806422 8.494129
+    endloop
+  endfacet
+  facet normal -0.001074 -0.038303 -0.999266
+    outer loop
+      vertex 19.508701 -0.027632 -7.482581
+      vertex 0.500000 -0.417467 -7.447217
+      vertex 0.500000 0.806422 -7.494130
+    endloop
+  endfacet
+  facet normal 0.001323 -0.154134 -0.988049
+    outer loop
+      vertex 19.508701 -0.027632 -7.482581
+      vertex 19.616875 -1.430375 -7.263611
+      vertex 0.500000 -0.417467 -7.447217
+    endloop
+  endfacet
+  facet normal 0.001636 0.021906 0.999759
+    outer loop
+      vertex 19.509182 -0.041983 8.481620
+      vertex 19.524847 1.391352 8.450188
+      vertex 0.500000 0.806422 8.494129
+    endloop
+  endfacet
+  facet normal -0.001052 -0.038302 0.999266
+    outer loop
+      vertex 19.509182 -0.041983 8.481620
+      vertex 0.500000 0.806422 8.494129
+      vertex 0.500000 -0.417467 8.447217
+    endloop
+  endfacet
+  facet normal 0.001920 0.029909 -0.999551
+    outer loop
+      vertex 19.531559 1.504439 -7.436693
+      vertex 19.508701 -0.027632 -7.482581
+      vertex 0.500000 0.806422 -7.494130
+    endloop
+  endfacet
+  facet normal -0.001208 0.114683 -0.993401
+    outer loop
+      vertex 19.531559 1.504439 -7.436693
+      vertex 0.500000 0.806422 -7.494130
+      vertex 0.500000 2.023129 -7.353667
+    endloop
+  endfacet
+  facet normal 0.001165 -0.149580 0.988749
+    outer loop
+      vertex 19.606678 -1.344529 8.284453
+      vertex 19.509182 -0.041983 8.481620
+      vertex 0.500000 -0.417467 8.447217
+    endloop
+  endfacet
+  facet normal -0.000875 -0.190391 0.981708
+    outer loop
+      vertex 19.606678 -1.344529 8.284453
+      vertex 0.500000 -0.417467 8.447217
+      vertex 0.500000 -1.619852 8.214028
+    endloop
+  endfacet
+  facet normal 0.001379 0.207183 -0.978301
+    outer loop
+      vertex 19.666361 2.801282 -7.161860
+      vertex 19.531559 1.504439 -7.436693
+      vertex 0.500000 2.023129 -7.353667
+    endloop
+  endfacet
+  facet normal -0.001109 0.264982 -0.964253
+    outer loop
+      vertex 19.666361 2.801282 -7.161860
+      vertex 0.500000 2.023129 -7.353667
+      vertex 0.500000 3.204135 -7.029120
+    endloop
+  endfacet
+  facet normal 0.000783 -0.298494 0.954411
+    outer loop
+      vertex 19.768930 -2.421203 7.947588
+      vertex 19.606678 -1.344529 8.284453
+      vertex 0.500000 -1.619852 8.214028
+    endloop
+  endfacet
+  facet normal -0.001044 -0.338017 0.941139
+    outer loop
+      vertex 19.768930 -2.421203 7.947588
+      vertex 0.500000 -1.619852 8.214028
+      vertex 0.500000 -2.772549 7.800029
+    endloop
+  endfacet
+  facet normal 0.001001 0.355568 -0.934650
+    outer loop
+      vertex 19.860142 3.875627 -6.752940
+      vertex 19.666361 2.801282 -7.161860
+      vertex 0.500000 3.204135 -7.029120
+    endloop
+  endfacet
+  facet normal -0.001171 0.409068 -0.912503
+    outer loop
+      vertex 19.860142 3.875627 -6.752940
+      vertex 0.500000 3.204135 -7.029120
+      vertex 0.500000 4.321759 -6.528098
+    endloop
+  endfacet
+  facet normal 0.001172 -0.441166 0.897425
+    outer loop
+      vertex 20.038578 -3.616358 7.359708
+      vertex 19.768930 -2.421203 7.947588
+      vertex 0.500000 -2.772549 7.800029
+    endloop
+  endfacet
+  facet normal -0.000833 -0.477720 0.878512
+    outer loop
+      vertex 20.038578 -3.616358 7.359708
+      vertex 0.500000 -2.772549 7.800029
+      vertex 0.500000 -3.848540 7.214923
+    endloop
+  endfacet
+  facet normal 0.001395 0.497678 -0.867361
+    outer loop
+      vertex 20.164255 5.062339 -6.071534
+      vertex 19.860142 3.875627 -6.752940
+      vertex 0.500000 4.321759 -6.528098
+    endloop
+  endfacet
+  facet normal -0.000983 0.543567 -0.839365
+    outer loop
+      vertex 20.164255 5.062339 -6.071534
+      vertex 0.500000 4.321759 -6.528098
+      vertex 0.500000 5.349803 -5.862343
+    endloop
+  endfacet
+  facet normal 0.000939 -0.584814 0.811167
+    outer loop
+      vertex 20.372141 -4.710361 6.570597
+      vertex 20.038578 -3.616358 7.359708
+      vertex 0.500000 -3.848540 7.214923
+    endloop
+  endfacet
+  facet normal -0.000505 -0.606225 0.795293
+    outer loop
+      vertex 20.372141 -4.710361 6.570597
+      vertex 0.500000 -3.848540 7.214923
+      vertex 0.500000 -4.822606 6.472426
+    endloop
+  endfacet
+  facet normal 0.001173 0.639633 -0.768680
+    outer loop
+      vertex 20.525652 6.136390 -5.177245
+      vertex 20.164255 5.062339 -6.071534
+      vertex 0.500000 5.349803 -5.862343
+    endloop
+  endfacet
+  facet normal -0.000593 0.665326 -0.746553
+    outer loop
+      vertex 20.525652 6.136390 -5.177245
+      vertex 0.500000 5.349803 -5.862343
+      vertex 0.500000 6.264173 -5.047460
+    endloop
+  endfacet
+  facet normal 0.000518 -0.708749 0.705460
+    outer loop
+      vertex 20.706879 -5.596193 5.680389
+      vertex 20.372141 -4.710361 6.570597
+      vertex 0.500000 -4.822606 6.472426
+    endloop
+  endfacet
+  facet normal -0.000404 -0.720521 0.693432
+    outer loop
+      vertex 20.706879 -5.596193 5.680389
+      vertex 0.500000 -4.822606 6.472426
+      vertex 0.500000 -5.671914 5.589940
+    endloop
+  endfacet
+  facet normal 0.000643 0.760379 -0.649480
+    outer loop
+      vertex 20.875492 6.990284 -4.177202
+      vertex 20.525652 6.136390 -5.177245
+      vertex 0.500000 6.264173 -5.047460
+    endloop
+  endfacet
+  facet normal -0.000319 0.771489 -0.636243
+    outer loop
+      vertex 20.875492 6.990284 -4.177202
+      vertex 0.500000 6.264173 -5.047460
+      vertex 0.500000 7.043435 -4.102549
+    endloop
+  endfacet
+  facet normal 0.000395 -0.808490 0.588510
+    outer loop
+      vertex 21.018789 -6.304007 4.707789
+      vertex 20.706879 -5.596193 5.680389
+      vertex 0.500000 -5.671914 5.589940
+    endloop
+  endfacet
+  facet normal -0.000463 -0.817929 0.575319
+    outer loop
+      vertex 21.018789 -6.304007 4.707789
+      vertex 0.500000 -5.671914 5.589940
+      vertex 0.500000 -6.376557 4.588150
+    endloop
+  endfacet
+  facet normal 0.000332 0.855168 -0.518351
+    outer loop
+      vertex 21.186325 7.649735 -3.089051
+      vertex 20.875492 6.990284 -4.177202
+      vertex 0.500000 7.043435 -4.102549
+    endloop
+  endfacet
+  facet normal -0.000157 0.859570 -0.511019
+    outer loop
+      vertex 21.186325 7.649735 -3.089051
+      vertex 0.500000 7.043435 -4.102549
+      vertex 0.500000 7.669324 -3.049759
+    endloop
+  endfacet
+  facet normal 0.000168 0.927502 -0.373817
+    outer loop
+      vertex 21.186325 7.649735 -3.089051
+      vertex 0.500000 7.669324 -3.049759
+      vertex 0.500000 8.127172 -1.913765
+    endloop
+  endfacet
+  facet normal 0.000443 -0.886922 0.461919
+    outer loop
+      vertex 21.287531 -6.848857 3.661376
+      vertex 21.018789 -6.304007 4.707789
+      vertex 0.500000 -6.376557 4.588150
+    endloop
+  endfacet
+  facet normal -0.000579 -0.896165 0.443720
+    outer loop
+      vertex 21.287531 -6.848857 3.661376
+      vertex 0.500000 -6.376557 4.588150
+      vertex 0.500000 -6.920020 3.490537
+    endloop
+  endfacet
+  facet normal -0.000006 0.926437 -0.376450
+    outer loop
+      vertex 21.434671 8.126698 -1.915257
+      vertex 21.186325 7.649735 -3.089051
+      vertex 0.500000 8.127172 -1.913765
+    endloop
+  endfacet
+  facet normal 0.000006 0.973696 -0.227853
+    outer loop
+      vertex 21.434671 8.126698 -1.915257
+      vertex 0.500000 8.127172 -1.913765
+      vertex 0.500000 8.406243 -0.721194
+    endloop
+  endfacet
+  facet normal -0.000683 -0.953396 0.301720
+    outer loop
+      vertex 21.493242 -7.233742 2.546763
+      vertex 0.500000 -6.920020 3.490537
+      vertex 0.500000 -7.289563 2.322828
+    endloop
+  endfacet
+  facet normal 0.000553 -0.945201 0.326487
+    outer loop
+      vertex 21.493242 -7.233742 2.546763
+      vertex 21.287531 -6.848857 3.661376
+      vertex 0.500000 -6.920020 3.490537
+    endloop
+  endfacet
+  facet normal -0.000031 0.973553 -0.228463
+    outer loop
+      vertex 21.589144 8.404941 -0.729599
+      vertex 21.434671 8.126698 -1.915257
+      vertex 0.500000 8.406243 -0.721194
+    endloop
+  endfacet
+  facet normal 0.000031 0.997066 -0.076549
+    outer loop
+      vertex 21.589144 8.404941 -0.729599
+      vertex 0.500000 8.406243 -0.721194
+      vertex 0.500000 8.500000 0.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.997025 -0.077079
+    outer loop
+      vertex 21.643593 8.500000 0.500000
+      vertex 21.589144 8.404941 -0.729599
+      vertex 0.500000 8.500000 0.500000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 8.406243 1.721194
+      vertex 0.500000 7.669324 4.049759
+      vertex 0.500000 8.127172 2.913765
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 8.406243 -0.721194
+      vertex 0.500000 4.321759 7.528098
+      vertex 0.500000 8.406243 1.721194
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.500000 0.806422 8.494129
+      vertex 0.500000 4.321759 7.528098
+      vertex 0.500000 -4.822606 6.472426
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex 0.500000 3.204135 8.029120
+      vertex 0.500000 4.321759 7.528098
+      vertex 0.500000 2.023129 8.353666
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 -5.671914 -4.589940
+      vertex 0.500000 -3.848540 -6.214923
+      vertex 0.500000 -4.822606 -5.472426
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex 0.500000 2.023129 8.353666
+      vertex 0.500000 4.321759 7.528098
+      vertex 0.500000 0.806422 8.494129
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 0.806422 -7.494130
+      vertex 0.500000 4.321759 7.528098
+      vertex 0.500000 5.349803 -5.862343
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 -4.822606 6.472426
+      vertex 0.500000 4.321759 7.528098
+      vertex 0.500000 0.806422 -7.494130
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 5.349803 -5.862343
+      vertex 0.500000 4.321759 7.528098
+      vertex 0.500000 7.669324 -3.049759
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 7.669324 -3.049759
+      vertex 0.500000 4.321759 7.528098
+      vertex 0.500000 8.406243 -0.721194
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 4.321759 7.528098
+      vertex 0.500000 7.043435 5.102549
+      vertex 0.500000 8.406243 1.721194
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 8.406243 1.721194
+      vertex 0.500000 7.043435 5.102549
+      vertex 0.500000 7.669324 4.049759
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 -5.671914 -4.589940
+      vertex 0.500000 -2.772549 -6.800029
+      vertex 0.500000 -3.848540 -6.214923
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 -6.376557 -3.588150
+      vertex 0.500000 -6.920020 -2.490537
+      vertex 0.500000 -5.671914 -4.589940
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex 0.500000 5.349803 6.862343
+      vertex 0.500000 6.264173 6.047460
+      vertex 0.500000 4.321759 7.528098
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 4.321759 7.528098
+      vertex 0.500000 6.264173 6.047460
+      vertex 0.500000 7.043435 5.102549
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 -2.772549 -6.800029
+      vertex 0.500000 -0.417467 -7.447217
+      vertex 0.500000 -1.619852 -7.214028
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 -5.671914 -4.589940
+      vertex 0.500000 -0.417467 -7.447217
+      vertex 0.500000 -2.772549 -6.800029
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 -7.289563 -1.322828
+      vertex 0.500000 -7.476526 -0.112394
+      vertex 0.500000 -6.920020 -2.490537
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 -6.920020 -2.490537
+      vertex 0.500000 -7.476526 -0.112394
+      vertex 0.500000 -5.671914 -4.589940
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 -0.417467 -7.447217
+      vertex 0.500000 -7.476526 1.112394
+      vertex 0.500000 0.806422 -7.494130
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 -5.671914 -4.589940
+      vertex 0.500000 -7.476526 1.112394
+      vertex 0.500000 -0.417467 -7.447217
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 -7.476526 -0.112394
+      vertex 0.500000 -7.476526 1.112394
+      vertex 0.500000 -5.671914 -4.589940
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.500000 -7.289563 2.322828
+      vertex 0.500000 -6.920020 3.490537
+      vertex 0.500000 -7.476526 1.112394
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 -7.476526 1.112394
+      vertex 0.500000 -6.920020 3.490537
+      vertex 0.500000 0.806422 -7.494130
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 0.806422 -7.494130
+      vertex 0.500000 4.321759 -6.528098
+      vertex 0.500000 2.023129 -7.353667
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 2.023129 -7.353667
+      vertex 0.500000 4.321759 -6.528098
+      vertex 0.500000 3.204135 -7.029120
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 0.806422 -7.494130
+      vertex 0.500000 5.349803 -5.862343
+      vertex 0.500000 4.321759 -6.528098
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.500000 -6.376557 4.588150
+      vertex 0.500000 -5.671914 5.589940
+      vertex 0.500000 -6.920020 3.490537
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 -6.920020 3.490537
+      vertex 0.500000 -4.822606 6.472426
+      vertex 0.500000 0.806422 -7.494130
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.500000 -5.671914 5.589940
+      vertex 0.500000 -4.822606 6.472426
+      vertex 0.500000 -6.920020 3.490537
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 5.349803 -5.862343
+      vertex 0.500000 7.669324 -3.049759
+      vertex 0.500000 6.264173 -5.047460
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 6.264173 -5.047460
+      vertex 0.500000 7.669324 -3.049759
+      vertex 0.500000 7.043435 -4.102549
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.500000 -3.848540 7.214923
+      vertex 0.500000 -2.772549 7.800029
+      vertex 0.500000 -4.822606 6.472426
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.500000 -2.772549 7.800029
+      vertex 0.500000 -1.619852 8.214028
+      vertex 0.500000 -4.822606 6.472426
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 7.669324 -3.049759
+      vertex 0.500000 8.406243 -0.721194
+      vertex 0.500000 8.127172 -1.913765
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.500000 -0.417467 8.447217
+      vertex 0.500000 0.806422 8.494129
+      vertex 0.500000 -1.619852 8.214028
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.500000 -1.619852 8.214028
+      vertex 0.500000 0.806422 8.494129
+      vertex 0.500000 -4.822606 6.472426
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 8.406243 -0.721194
+      vertex 0.500000 8.406243 1.721194
+      vertex 0.500000 8.500000 0.500000
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/FlowFocusing.stl b/apps/cpu/Multiphase/backup/FlowFocusing.stl
new file mode 100644
index 0000000000000000000000000000000000000000..da02cc8b14f6358e7878ab6d19bd66f9fdf408ef
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusing.stl differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingS.ast b/apps/cpu/Multiphase/backup/FlowFocusingS.ast
new file mode 100644
index 0000000000000000000000000000000000000000..147c1ff7a665b9bf91d4257b93c1af7c9bad65a2
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/FlowFocusingS.ast
@@ -0,0 +1,3082 @@
+solid Mesh
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 10.594930 28.182674
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 10.898214 29.576851
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 10.898214 29.576851
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 11.000000 31.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 7.548607 23.442505
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 7.548607 23.442505
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 9.412536 25.593592
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 9.412536 25.593592
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 10.594930 28.182674
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -0.423148 40.898216
+      vertex -34.000000 2.423148 40.898216
+      vertex -34.000000 -3.154150 40.096321
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 1.000000 41.000000
+      vertex -34.000000 2.423148 40.898216
+      vertex -34.000000 -0.423148 40.898216
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 2.423148 40.898216
+      vertex -34.000000 10.898214 32.423149
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -6.557496 24.451393
+      vertex -34.000000 -7.412535 25.593592
+      vertex -34.000000 -5.548607 23.442505
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 10.096320 35.154152
+      vertex -34.000000 10.594930 33.817326
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex -34.000000 3.817326 40.594929
+      vertex -34.000000 5.154150 40.096321
+      vertex -34.000000 2.423148 40.898216
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -8.096320 26.845850
+      vertex -34.000000 -8.594930 28.182674
+      vertex -34.000000 -7.412535 25.593592
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -7.412535 25.593592
+      vertex -34.000000 -8.594930 28.182674
+      vertex -34.000000 -5.548607 23.442505
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 10.096320 35.154152
+      vertex -34.000000 8.557496 37.548607
+      vertex -34.000000 9.412536 36.406406
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -3.154150 21.903681
+      vertex -34.000000 -0.423148 21.101786
+      vertex -34.000000 -1.817326 21.405069
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex -34.000000 6.406408 39.412537
+      vertex -34.000000 7.548607 38.557495
+      vertex -34.000000 5.154150 40.096321
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 2.423148 40.898216
+      vertex -34.000000 7.548607 38.557495
+      vertex -34.000000 10.898214 32.423149
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex -34.000000 5.154150 40.096321
+      vertex -34.000000 7.548607 38.557495
+      vertex -34.000000 2.423148 40.898216
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 7.548607 38.557495
+      vertex -34.000000 10.096320 35.154152
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 10.096320 35.154152
+      vertex -34.000000 7.548607 38.557495
+      vertex -34.000000 8.557496 37.548607
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -8.898214 29.576851
+      vertex -34.000000 -9.000000 31.000000
+      vertex -34.000000 -8.594930 28.182674
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -5.548607 23.442505
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 -4.406408 22.587465
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -4.406408 22.587465
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 -3.154150 21.903681
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -0.423148 21.101786
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 1.000000 21.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -3.154150 21.903681
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 -0.423148 21.101786
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -8.898214 32.423149
+      vertex -34.000000 -8.594930 33.817326
+      vertex -34.000000 -9.000000 31.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -9.000000 31.000000
+      vertex -34.000000 -8.594930 33.817326
+      vertex -34.000000 -8.594930 28.182674
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 6.406408 22.587465
+      vertex -34.000000 3.817326 21.405069
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 3.817326 21.405069
+      vertex -34.000000 6.406408 22.587465
+      vertex -34.000000 5.154150 21.903681
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -8.096320 35.154152
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 -8.594930 33.817326
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -8.594930 28.182674
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 -5.548607 23.442505
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -5.548607 23.442505
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 2.423148 21.101786
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -8.594930 33.817326
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 -8.594930 28.182674
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 6.406408 22.587465
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -6.557496 37.548607
+      vertex -34.000000 -5.548607 38.557495
+      vertex -34.000000 -7.412535 36.406406
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 7.548607 23.442505
+      vertex -34.000000 9.412536 25.593592
+      vertex -34.000000 8.557496 24.451393
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -4.406408 39.412537
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 -5.548607 38.557495
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 6.406408 22.587465
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 7.548607 23.442505
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 6.406408 22.587465
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -5.548607 38.557495
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 -7.412535 36.406406
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 9.412536 25.593592
+      vertex -34.000000 10.594930 28.182674
+      vertex -34.000000 10.096320 26.845850
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -1.817326 40.594929
+      vertex -34.000000 -0.423148 40.898216
+      vertex -34.000000 -3.154150 40.096321
+    endloop
+  endfacet
+  facet normal -0.000919 0.936949 -0.349464
+    outer loop
+      vertex -6.470624 10.390941 27.563398
+      vertex -34.000000 10.096320 26.845850
+      vertex -34.000000 10.594930 28.182674
+    endloop
+  endfacet
+  facet normal -0.000773 -0.936950 0.349464
+    outer loop
+      vertex -6.375164 -8.466096 34.223824
+      vertex -34.000000 -8.096320 35.154152
+      vertex -34.000000 -8.594930 33.817326
+    endloop
+  endfacet
+  facet normal 0.001442 -0.913852 0.406044
+    outer loop
+      vertex -6.375164 -8.466096 34.223824
+      vertex -7.218598 -7.743835 35.852356
+      vertex -34.000000 -8.096320 35.154152
+    endloop
+  endfacet
+  facet normal 0.000657 0.958118 -0.286375
+    outer loop
+      vertex -6.012733 10.737638 28.724386
+      vertex -6.470624 10.390941 27.563398
+      vertex -34.000000 10.594930 28.182674
+    endloop
+  endfacet
+  facet normal -0.000868 0.977146 -0.212565
+    outer loop
+      vertex -6.012733 10.737638 28.724386
+      vertex -34.000000 10.594930 28.182674
+      vertex -34.000000 10.898214 29.576851
+    endloop
+  endfacet
+  facet normal -0.000896 -0.977146 0.212565
+    outer loop
+      vertex -5.941191 -8.788762 33.044537
+      vertex -34.000000 -8.594930 33.817326
+      vertex -34.000000 -8.898214 32.423149
+    endloop
+  endfacet
+  facet normal 0.000612 -0.964490 0.264120
+    outer loop
+      vertex -5.941191 -8.788762 33.044537
+      vertex -6.375164 -8.466096 34.223824
+      vertex -34.000000 -8.594930 33.817326
+    endloop
+  endfacet
+  facet normal 0.000376 0.984892 -0.173172
+    outer loop
+      vertex -5.737499 10.930061 29.819368
+      vertex -6.012733 10.737638 28.724386
+      vertex -34.000000 10.898214 29.576851
+    endloop
+  endfacet
+  facet normal -0.000512 0.997452 -0.071339
+    outer loop
+      vertex -5.737499 10.930061 29.819368
+      vertex -34.000000 10.898214 29.576851
+      vertex -34.000000 11.000000 31.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.998250 -0.059135
+    outer loop
+      vertex -5.633250 11.000000 31.000000
+      vertex -5.737499 10.930061 29.819368
+      vertex -34.000000 11.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.000873 -0.997452 0.071339
+    outer loop
+      vertex -5.659541 -8.982511 31.591177
+      vertex -34.000000 -8.898214 32.423149
+      vertex -34.000000 -9.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.000307 0.997452 0.071339
+    outer loop
+      vertex -5.757563 10.916418 32.290215
+      vertex -34.000000 11.000000 31.000000
+      vertex -34.000000 10.898214 32.423149
+    endloop
+  endfacet
+  facet normal 0.000936 -0.991207 0.132320
+    outer loop
+      vertex -5.659541 -8.982511 31.591177
+      vertex -5.941191 -8.788762 33.044537
+      vertex -34.000000 -8.898214 32.423149
+    endloop
+  endfacet
+  facet normal 0.000000 0.997908 0.064646
+    outer loop
+      vertex -5.757563 10.916418 32.290215
+      vertex -5.633250 11.000000 31.000000
+      vertex -34.000000 11.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.000887 -0.997452 -0.071339
+    outer loop
+      vertex -5.681127 -8.968077 30.201591
+      vertex -34.000000 -9.000000 31.000000
+      vertex -34.000000 -8.898214 29.576851
+    endloop
+  endfacet
+  facet normal 0.000834 -0.999946 -0.010400
+    outer loop
+      vertex -5.681127 -8.968077 30.201591
+      vertex -5.659541 -8.982511 31.591177
+      vertex -34.000000 -9.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.000681 0.977147 0.212565
+    outer loop
+      vertex -6.080200 10.688693 33.475727
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 10.594930 33.817326
+    endloop
+  endfacet
+  facet normal 0.000255 0.982033 0.188708
+    outer loop
+      vertex -6.080200 10.688693 33.475727
+      vertex -5.757563 10.916418 32.290215
+      vertex -34.000000 10.898214 32.423149
+    endloop
+  endfacet
+  facet normal -0.000863 -0.977147 -0.212565
+    outer loop
+      vertex -5.919753 -8.803929 29.029472
+      vertex -34.000000 -8.898214 29.576851
+      vertex -34.000000 -8.594930 28.182674
+    endloop
+  endfacet
+  facet normal 0.000619 -0.990318 -0.138813
+    outer loop
+      vertex -5.919753 -8.803929 29.029472
+      vertex -5.681127 -8.968077 30.201591
+      vertex -34.000000 -8.898214 29.576851
+    endloop
+  endfacet
+  facet normal 0.000499 0.953166 0.302446
+    outer loop
+      vertex -6.528029 10.344987 34.559666
+      vertex -6.080200 10.688693 33.475727
+      vertex -34.000000 10.594930 33.817326
+    endloop
+  endfacet
+  facet normal -0.000919 0.936949 0.349463
+    outer loop
+      vertex -6.528029 10.344987 34.559666
+      vertex -34.000000 10.594930 33.817326
+      vertex -34.000000 10.096320 35.154152
+    endloop
+  endfacet
+  facet normal -0.000511 -0.936950 -0.349464
+    outer loop
+      vertex -6.298790 -8.525107 27.954950
+      vertex -34.000000 -8.594930 28.182674
+      vertex -34.000000 -8.096320 26.845850
+    endloop
+  endfacet
+  facet normal 0.000374 -0.967912 -0.251290
+    outer loop
+      vertex -6.298790 -8.525107 27.954950
+      vertex -5.919753 -8.803929 29.029472
+      vertex -34.000000 -8.594930 28.182674
+    endloop
+  endfacet
+  facet normal 0.000978 0.905646 0.424035
+    outer loop
+      vertex -7.240622 9.723082 35.889565
+      vertex -6.528029 10.344987 34.559666
+      vertex -34.000000 10.096320 35.154152
+    endloop
+  endfacet
+  facet normal -0.000929 0.877678 0.479250
+    outer loop
+      vertex -7.240622 9.723082 35.889565
+      vertex -34.000000 10.096320 35.154152
+      vertex -34.000000 9.412536 36.406406
+    endloop
+  endfacet
+  facet normal -0.000508 -0.877679 -0.479249
+    outer loop
+      vertex -6.938873 -7.998572 26.638153
+      vertex -34.000000 -8.096320 26.845850
+      vertex -34.000000 -7.412535 25.593592
+    endloop
+  endfacet
+  facet normal 0.000502 -0.928437 -0.371490
+    outer loop
+      vertex -6.938873 -7.998572 26.638153
+      vertex -6.298790 -8.525107 27.954950
+      vertex -34.000000 -8.096320 26.845850
+    endloop
+  endfacet
+  facet normal 0.001581 0.818925 0.573899
+    outer loop
+      vertex -8.299619 8.584002 37.517891
+      vertex -7.240622 9.723082 35.889565
+      vertex -34.000000 9.412536 36.406406
+    endloop
+  endfacet
+  facet normal -0.000109 0.800542 0.599277
+    outer loop
+      vertex -8.299619 8.584002 37.517891
+      vertex -34.000000 9.412536 36.406406
+      vertex -34.000000 8.557496 37.548607
+    endloop
+  endfacet
+  facet normal 0.000116 0.707107 0.707107
+    outer loop
+      vertex -8.299619 8.584002 37.517891
+      vertex -34.000000 8.557496 37.548607
+      vertex -34.000000 7.548607 38.557495
+    endloop
+  endfacet
+  facet normal -0.000754 -0.800541 -0.599278
+    outer loop
+      vertex -7.758467 -7.203003 25.280670
+      vertex -34.000000 -7.412535 25.593592
+      vertex -34.000000 -6.557496 24.451393
+    endloop
+  endfacet
+  facet normal 0.000853 -0.862528 -0.506009
+    outer loop
+      vertex -7.758467 -7.203003 25.280670
+      vertex -6.938873 -7.998572 26.638153
+      vertex -34.000000 -7.412535 25.593592
+    endloop
+  endfacet
+  facet normal -0.000997 -0.707106 -0.707106
+    outer loop
+      vertex -8.734071 -6.017682 23.875946
+      vertex -34.000000 -6.557496 24.451393
+      vertex -34.000000 -5.548607 23.442505
+    endloop
+  endfacet
+  facet normal 0.001184 0.693748 0.720217
+    outer loop
+      vertex -9.250660 7.238907 38.815117
+      vertex -8.299619 8.584002 37.517891
+      vertex -34.000000 7.548607 38.557495
+    endloop
+  endfacet
+  facet normal 0.001614 -0.763715 -0.645552
+    outer loop
+      vertex -8.734071 -6.017682 23.875946
+      vertex -7.758467 -7.203003 25.280670
+      vertex -34.000000 -6.557496 24.451393
+    endloop
+  endfacet
+  facet normal -0.000834 0.599278 0.800540
+    outer loop
+      vertex -9.250660 7.238907 38.815117
+      vertex -34.000000 7.548607 38.557495
+      vertex -34.000000 6.406408 39.412537
+    endloop
+  endfacet
+  facet normal 0.001572 -0.631668 -0.775238
+    outer loop
+      vertex -9.627810 -4.572220 22.696363
+      vertex -8.734071 -6.017682 23.875946
+      vertex -34.000000 -5.548607 23.442505
+    endloop
+  endfacet
+  facet normal -0.000500 -0.599278 -0.800541
+    outer loop
+      vertex -9.627810 -4.572220 22.696363
+      vertex -34.000000 -5.548607 23.442505
+      vertex -34.000000 -4.406408 22.587465
+    endloop
+  endfacet
+  facet normal 0.001037 0.562496 0.826800
+    outer loop
+      vertex -9.915038 5.986175 39.668221
+      vertex -9.250660 7.238907 38.815117
+      vertex -34.000000 6.406408 39.412537
+    endloop
+  endfacet
+  facet normal -0.000955 0.479249 0.877679
+    outer loop
+      vertex -9.915038 5.986175 39.668221
+      vertex -34.000000 6.406408 39.412537
+      vertex -34.000000 5.154150 40.096321
+    endloop
+  endfacet
+  facet normal 0.000575 -0.488490 -0.872569
+    outer loop
+      vertex -10.252209 -3.169867 21.910873
+      vertex -9.627810 -4.572220 22.696363
+      vertex -34.000000 -4.406408 22.587465
+    endloop
+  endfacet
+  facet normal -0.000051 -0.479249 -0.877679
+    outer loop
+      vertex -10.252209 -3.169867 21.910873
+      vertex -34.000000 -4.406408 22.587465
+      vertex -34.000000 -3.154150 21.903681
+    endloop
+  endfacet
+  facet normal 0.001741 0.417216 0.908806
+    outer loop
+      vertex -10.527491 4.334210 40.427780
+      vertex -9.915038 5.986175 39.668221
+      vertex -34.000000 5.154150 40.096321
+    endloop
+  endfacet
+  facet normal 0.000052 -0.349465 -0.936949
+    outer loop
+      vertex -10.252209 -3.169867 21.910873
+      vertex -34.000000 -3.154150 21.903681
+      vertex -34.000000 -1.817326 21.405069
+    endloop
+  endfacet
+  facet normal -0.001023 0.349463 0.936950
+    outer loop
+      vertex -10.527491 4.334210 40.427780
+      vertex -34.000000 5.154150 40.096321
+      vertex -34.000000 3.817326 40.594929
+    endloop
+  endfacet
+  facet normal -0.000469 -0.212565 -0.977147
+    outer loop
+      vertex -10.703868 -1.649430 21.357359
+      vertex -34.000000 -1.817326 21.405069
+      vertex -34.000000 -0.423148 21.101786
+    endloop
+  endfacet
+  facet normal 0.001080 0.262953 0.964808
+    outer loop
+      vertex -10.846192 2.915130 40.814899
+      vertex -10.527491 4.334210 40.427780
+      vertex -34.000000 3.817326 40.594929
+    endloop
+  endfacet
+  facet normal 0.000540 -0.341944 -0.939720
+    outer loop
+      vertex -10.703868 -1.649430 21.357359
+      vertex -10.252209 -3.169867 21.910873
+      vertex -34.000000 -1.817326 21.405069
+    endloop
+  endfacet
+  facet normal -0.001001 0.212567 0.977146
+    outer loop
+      vertex -10.846192 2.915130 40.814899
+      vertex -34.000000 3.817326 40.594929
+      vertex -34.000000 2.423148 40.898216
+    endloop
+  endfacet
+  facet normal 0.000954 -0.186630 -0.982430
+    outer loop
+      vertex -10.951837 -0.074060 21.057848
+      vertex -10.703868 -1.649430 21.357359
+      vertex -34.000000 -0.423148 21.101786
+    endloop
+  endfacet
+  facet normal -0.000821 -0.071339 -0.997452
+    outer loop
+      vertex -10.951837 -0.074060 21.057848
+      vertex -34.000000 -0.423148 21.101786
+      vertex -34.000000 1.000000 21.000000
+    endloop
+  endfacet
+  facet normal 0.001328 0.105907 0.994375
+    outer loop
+      vertex -10.998376 1.197410 40.998051
+      vertex -10.846192 2.915130 40.814899
+      vertex -34.000000 2.423148 40.898216
+    endloop
+  endfacet
+  facet normal -0.000528 0.071338 0.997452
+    outer loop
+      vertex -10.998376 1.197410 40.998051
+      vertex -34.000000 2.423148 40.898216
+      vertex -34.000000 1.000000 41.000000
+    endloop
+  endfacet
+  facet normal 0.001303 -0.025876 -0.999664
+    outer loop
+      vertex -10.987032 1.557723 21.015564
+      vertex -10.951837 -0.074060 21.057848
+      vertex -34.000000 1.000000 21.000000
+    endloop
+  endfacet
+  facet normal -0.001054 0.071339 -0.997451
+    outer loop
+      vertex -10.987032 1.557723 21.015564
+      vertex -34.000000 1.000000 21.000000
+      vertex -34.000000 2.423148 21.101786
+    endloop
+  endfacet
+  facet normal 0.000652 -0.066086 0.997814
+    outer loop
+      vertex -10.903988 -0.514951 40.884579
+      vertex -10.998376 1.197410 40.998051
+      vertex -34.000000 1.000000 41.000000
+    endloop
+  endfacet
+  facet normal 0.000305 -0.071338 0.997452
+    outer loop
+      vertex -10.903988 -0.514951 40.884579
+      vertex -34.000000 1.000000 41.000000
+      vertex -34.000000 -0.423148 40.898216
+    endloop
+  endfacet
+  facet normal 0.001446 0.137151 -0.990549
+    outer loop
+      vertex -10.800443 3.179347 21.240366
+      vertex -10.987032 1.557723 21.015564
+      vertex -34.000000 2.423148 21.101786
+    endloop
+  endfacet
+  facet normal -0.001092 0.212565 -0.977146
+    outer loop
+      vertex -10.800443 3.179347 21.240366
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 3.817326 21.405069
+    endloop
+  endfacet
+  facet normal -0.000259 -0.210447 0.977605
+    outer loop
+      vertex -10.695628 -1.685570 40.632637
+      vertex -10.903988 -0.514951 40.884579
+      vertex -34.000000 -0.423148 40.898216
+    endloop
+  endfacet
+  facet normal -0.000379 -0.212567 0.977146
+    outer loop
+      vertex -10.695628 -1.685570 40.632637
+      vertex -34.000000 -0.423148 40.898216
+      vertex -34.000000 -1.817326 40.594929
+    endloop
+  endfacet
+  facet normal 0.001252 0.292401 -0.956295
+    outer loop
+      vertex -10.429211 4.656930 21.692644
+      vertex -10.800443 3.179347 21.240366
+      vertex -34.000000 3.817326 21.405069
+    endloop
+  endfacet
+  facet normal -0.001017 0.349465 -0.936949
+    outer loop
+      vertex -10.429211 4.656930 21.692644
+      vertex -34.000000 3.817326 21.405069
+      vertex -34.000000 5.154150 21.903681
+    endloop
+  endfacet
+  facet normal 0.000342 -0.330589 0.943775
+    outer loop
+      vertex -10.343766 -2.913946 40.202229
+      vertex -10.695628 -1.685570 40.632637
+      vertex -34.000000 -1.817326 40.594929
+    endloop
+  endfacet
+  facet normal -0.000646 -0.349463 0.936950
+    outer loop
+      vertex -10.343766 -2.913946 40.202229
+      vertex -34.000000 -1.817326 40.594929
+      vertex -34.000000 -3.154150 40.096321
+    endloop
+  endfacet
+  facet normal 0.000892 0.426229 -0.904615
+    outer loop
+      vertex -9.974246 5.854475 22.257341
+      vertex -10.429211 4.656930 21.692644
+      vertex -34.000000 5.154150 21.903681
+    endloop
+  endfacet
+  facet normal -0.001050 0.479249 -0.877679
+    outer loop
+      vertex -9.974246 5.854475 22.257341
+      vertex -34.000000 5.154150 21.903681
+      vertex -34.000000 6.406408 22.587465
+    endloop
+  endfacet
+  facet normal 0.000565 -0.449518 0.893271
+    outer loop
+      vertex -9.880333 -4.061458 39.624477
+      vertex -10.343766 -2.913946 40.202229
+      vertex -34.000000 -3.154150 40.096321
+    endloop
+  endfacet
+  facet normal -0.000858 -0.479249 0.877679
+    outer loop
+      vertex -9.880333 -4.061458 39.624477
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 -4.406408 39.412537
+    endloop
+  endfacet
+  facet normal 0.001231 0.552229 -0.833691
+    outer loop
+      vertex -9.295414 7.164775 23.126274
+      vertex -9.974246 5.854475 22.257341
+      vertex -34.000000 6.406408 22.587465
+    endloop
+  endfacet
+  facet normal -0.000936 0.599277 -0.800541
+    outer loop
+      vertex -9.295414 7.164775 23.126274
+      vertex -34.000000 6.406408 22.587465
+      vertex -34.000000 7.548607 23.442505
+    endloop
+  endfacet
+  facet normal 0.000947 -0.570730 0.821137
+    outer loop
+      vertex -9.197071 -5.326117 38.744690
+      vertex -9.880333 -4.061458 39.624477
+      vertex -34.000000 -4.406408 39.412537
+    endloop
+  endfacet
+  facet normal -0.000666 -0.599279 0.800540
+    outer loop
+      vertex -9.197071 -5.326117 38.744690
+      vertex -34.000000 -4.406408 39.412537
+      vertex -34.000000 -5.548607 38.557495
+    endloop
+  endfacet
+  facet normal 0.001325 0.685290 -0.728269
+    outer loop
+      vertex -8.372675 8.493528 24.378290
+      vertex -9.295414 7.164775 23.126274
+      vertex -34.000000 7.548607 23.442505
+    endloop
+  endfacet
+  facet normal 0.000902 -0.700754 0.713403
+    outer loop
+      vertex -8.256754 -6.636262 37.456585
+      vertex -9.197071 -5.326117 38.744690
+      vertex -34.000000 -5.548607 38.557495
+    endloop
+  endfacet
+  facet normal -0.000252 0.707107 -0.707107
+    outer loop
+      vertex -8.372675 8.493528 24.378290
+      vertex -34.000000 7.548607 23.442505
+      vertex -34.000000 8.557496 24.451393
+    endloop
+  endfacet
+  facet normal 0.000364 -0.707107 0.707107
+    outer loop
+      vertex -8.256754 -6.636262 37.456585
+      vertex -34.000000 -5.548607 38.557495
+      vertex -34.000000 -6.557496 37.548607
+    endloop
+  endfacet
+  facet normal 0.000289 0.800541 -0.599278
+    outer loop
+      vertex -8.372675 8.493528 24.378290
+      vertex -34.000000 8.557496 24.451393
+      vertex -34.000000 9.412536 25.593592
+    endloop
+  endfacet
+  facet normal -0.000307 -0.800542 0.599277
+    outer loop
+      vertex -8.256754 -6.636262 37.456585
+      vertex -34.000000 -6.557496 37.548607
+      vertex -34.000000 -7.412535 36.406406
+    endloop
+  endfacet
+  facet normal 0.001198 0.809614 -0.586961
+    outer loop
+      vertex -7.338007 9.630043 25.948034
+      vertex -8.372675 8.493528 24.378290
+      vertex -34.000000 9.412536 25.593592
+    endloop
+  endfacet
+  facet normal -0.000789 0.877679 -0.479249
+    outer loop
+      vertex -7.338007 9.630043 25.948034
+      vertex -34.000000 9.412536 25.593592
+      vertex -34.000000 10.096320 26.845850
+    endloop
+  endfacet
+  facet normal -0.000943 -0.877678 0.479250
+    outer loop
+      vertex -7.218598 -7.743835 35.852356
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 -8.096320 35.154152
+    endloop
+  endfacet
+  facet normal 0.001594 -0.822439 0.568851
+    outer loop
+      vertex -7.218598 -7.743835 35.852356
+      vertex -8.256754 -6.636262 37.456585
+      vertex -34.000000 -7.412535 36.406406
+    endloop
+  endfacet
+  facet normal 0.001445 0.904362 -0.426764
+    outer loop
+      vertex -6.470624 10.390941 27.563398
+      vertex -7.338007 9.630043 25.948034
+      vertex -34.000000 10.096320 26.845850
+    endloop
+  endfacet
+  facet normal 0.995973 0.089639 -0.001845
+    outer loop
+      vertex 12.906315 2.496555 23.141226
+      vertex 13.000000 1.000000 1.000000
+      vertex 12.807155 3.142683 1.000000
+    endloop
+  endfacet
+  facet normal 0.998046 0.062478 0.000000
+    outer loop
+      vertex 12.906315 2.496555 23.141226
+      vertex 13.000000 1.000000 23.000000
+      vertex 13.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.998997 0.044772 0.000000
+    outer loop
+      vertex 13.000000 1.000000 61.000000
+      vertex 13.000000 1.000000 39.000000
+      vertex 12.951891 2.073451 38.927654
+    endloop
+  endfacet
+  facet normal 0.984363 0.176153 0.000732
+    outer loop
+      vertex 12.685336 3.730003 23.480221
+      vertex 12.906315 2.496555 23.141226
+      vertex 12.807155 3.142683 1.000000
+    endloop
+  endfacet
+  facet normal 0.963961 0.266036 -0.001727
+    outer loop
+      vertex 12.234818 5.216498 1.000000
+      vertex 12.685336 3.730003 23.480221
+      vertex 12.807155 3.142683 1.000000
+    endloop
+  endfacet
+  facet normal 0.962709 0.270535 -0.001404
+    outer loop
+      vertex 12.401385 4.742783 23.929527
+      vertex 12.685336 3.730003 23.480221
+      vertex 12.234818 5.216498 1.000000
+    endloop
+  endfacet
+  facet normal 0.995972 0.089639 0.002189
+    outer loop
+      vertex 12.807155 3.142683 61.000000
+      vertex 13.000000 1.000000 61.000000
+      vertex 12.951891 2.073451 38.927654
+    endloop
+  endfacet
+  facet normal 0.991662 0.128868 0.000260
+    outer loop
+      vertex 12.807155 3.142683 61.000000
+      vertex 12.951891 2.073451 38.927654
+      vertex 12.829484 3.015767 38.741879
+    endloop
+  endfacet
+  facet normal 0.973905 0.226955 -0.000317
+    outer loop
+      vertex 12.501177 4.423876 38.230289
+      vertex 12.807155 3.142683 61.000000
+      vertex 12.829484 3.015767 38.741879
+    endloop
+  endfacet
+  facet normal 0.933649 0.358189 0.000618
+    outer loop
+      vertex 11.975570 5.851481 24.638937
+      vertex 12.401385 4.742783 23.929527
+      vertex 12.234818 5.216498 1.000000
+    endloop
+  endfacet
+  facet normal 0.900968 0.433883 -0.001774
+    outer loop
+      vertex 11.301386 7.154791 1.000000
+      vertex 11.975570 5.851481 24.638937
+      vertex 12.234818 5.216498 1.000000
+    endloop
+  endfacet
+  facet normal 0.894453 0.447161 -0.000856
+    outer loop
+      vertex 11.475355 6.853796 25.547195
+      vertex 11.975570 5.851481 24.638937
+      vertex 11.301386 7.154791 1.000000
+    endloop
+  endfacet
+  facet normal 0.938377 0.345613 -0.001054
+    outer loop
+      vertex 12.234818 5.216498 61.000000
+      vertex 12.501177 4.423876 38.230289
+      vertex 11.968547 5.867337 37.348938
+    endloop
+  endfacet
+  facet normal 0.963961 0.266036 0.002016
+    outer loop
+      vertex 12.234818 5.216498 61.000000
+      vertex 12.807155 3.142683 61.000000
+      vertex 12.501177 4.423876 38.230289
+    endloop
+  endfacet
+  facet normal 0.853562 0.520991 0.000339
+    outer loop
+      vertex 10.990158 7.648063 26.549915
+      vertex 11.475355 6.853796 25.547195
+      vertex 11.301386 7.154791 1.000000
+    endloop
+  endfacet
+  facet normal 0.809016 0.587785 -0.001708
+    outer loop
+      vertex 10.553408 8.261708 27.643276
+      vertex 11.301386 7.154791 1.000000
+      vertex 10.036858 8.895265 1.000000
+    endloop
+  endfacet
+  facet normal 0.813608 0.581412 -0.001314
+    outer loop
+      vertex 10.553408 8.261708 27.643276
+      vertex 10.990158 7.648063 26.549915
+      vertex 11.301386 7.154791 1.000000
+    endloop
+  endfacet
+  facet normal 0.845588 0.533836 -0.000276
+    outer loop
+      vertex 11.301386 7.154791 61.000000
+      vertex 11.405221 6.977572 36.316826
+      vertex 10.866963 7.829570 35.166172
+    endloop
+  endfacet
+  facet normal 0.891587 0.452849 0.000499
+    outer loop
+      vertex 11.301386 7.154791 61.000000
+      vertex 11.968547 5.867337 37.348938
+      vertex 11.405221 6.977572 36.316826
+    endloop
+  endfacet
+  facet normal 0.900967 0.433883 0.001796
+    outer loop
+      vertex 11.301386 7.154791 61.000000
+      vertex 12.234818 5.216498 61.000000
+      vertex 11.968547 5.867337 37.348938
+    endloop
+  endfacet
+  facet normal 0.781345 0.624100 -0.000308
+    outer loop
+      vertex 10.203491 8.700374 28.831072
+      vertex 10.553408 8.261708 27.643276
+      vertex 10.036858 8.895265 1.000000
+    endloop
+  endfacet
+  facet normal 0.759111 0.650961 0.000013
+    outer loop
+      vertex 10.013048 8.922435 29.888680
+      vertex 10.203491 8.700374 28.831072
+      vertex 10.036858 8.895265 1.000000
+    endloop
+  endfacet
+  facet normal 0.748174 0.663503 -0.000007
+    outer loop
+      vertex 9.944272 9.000000 31.000000
+      vertex 10.013048 8.922435 29.888680
+      vertex 10.036858 8.895265 1.000000
+    endloop
+  endfacet
+  facet normal 0.691063 0.722795 -0.000391
+    outer loop
+      vertex 8.481877 10.381978 1.000000
+      vertex 9.944272 9.000000 31.000000
+      vertex 10.036858 8.895265 1.000000
+    endloop
+  endfacet
+  facet normal 0.750689 0.660656 -0.000010
+    outer loop
+      vertex 10.036858 8.895265 61.000000
+      vertex 10.070409 8.856697 32.507420
+      vertex 9.944272 9.000000 31.000000
+    endloop
+  endfacet
+  facet normal 0.769816 0.638266 0.000043
+    outer loop
+      vertex 10.036858 8.895265 61.000000
+      vertex 10.402563 8.455991 33.899689
+      vertex 10.070409 8.856697 32.507420
+    endloop
+  endfacet
+  facet normal 0.802209 0.597042 0.001148
+    outer loop
+      vertex 10.036858 8.895265 61.000000
+      vertex 10.866963 7.829570 35.166172
+      vertex 10.402563 8.455991 33.899689
+    endloop
+  endfacet
+  facet normal 0.809016 0.587785 0.001748
+    outer loop
+      vertex 10.036858 8.895265 61.000000
+      vertex 11.301386 7.154791 61.000000
+      vertex 10.866963 7.829570 35.166172
+    endloop
+  endfacet
+  facet normal 0.691063 0.722795 0.000391
+    outer loop
+      vertex 8.481877 10.381978 61.000000
+      vertex 10.036858 8.895265 61.000000
+      vertex 9.944272 9.000000 31.000000
+    endloop
+  endfacet
+  facet normal 0.550897 0.834573 0.000000
+    outer loop
+      vertex 8.481877 10.381978 61.000000
+      vertex 8.481877 10.381978 1.000000
+      vertex 6.686424 11.567146 1.000000
+    endloop
+  endfacet
+  facet normal 0.686841 0.726808 0.000000
+    outer loop
+      vertex 8.481877 10.381978 61.000000
+      vertex 9.944272 9.000000 31.000000
+      vertex 8.481877 10.381978 1.000000
+    endloop
+  endfacet
+  facet normal 0.550897 0.834573 0.000000
+    outer loop
+      vertex 6.686424 11.567146 61.000000
+      vertex 8.481877 10.381978 61.000000
+      vertex 6.686424 11.567146 1.000000
+    endloop
+  endfacet
+  facet normal 0.393025 0.919528 0.000000
+    outer loop
+      vertex 6.686424 11.567146 61.000000
+      vertex 6.686424 11.567146 1.000000
+      vertex 4.708204 12.412678 1.000000
+    endloop
+  endfacet
+  facet normal 0.393025 0.919528 0.000000
+    outer loop
+      vertex 4.708204 12.412678 61.000000
+      vertex 6.686424 11.567146 61.000000
+      vertex 4.708204 12.412678 1.000000
+    endloop
+  endfacet
+  facet normal 0.222521 0.974928 0.000000
+    outer loop
+      vertex 4.708204 12.412678 61.000000
+      vertex 4.708204 12.412678 1.000000
+      vertex 2.610799 12.891397 1.000000
+    endloop
+  endfacet
+  facet normal 0.222521 0.974928 0.000000
+    outer loop
+      vertex 2.610799 12.891397 61.000000
+      vertex 4.708204 12.412678 61.000000
+      vertex 2.610799 12.891397 1.000000
+    endloop
+  endfacet
+  facet normal 0.044865 0.998993 0.000000
+    outer loop
+      vertex 2.610799 12.891397 61.000000
+      vertex 2.610799 12.891397 1.000000
+      vertex 0.461622 12.987917 1.000000
+    endloop
+  endfacet
+  facet normal -0.134233 0.990950 0.000000
+    outer loop
+      vertex 0.461622 12.987917 61.000000
+      vertex 0.461622 12.987917 1.000000
+      vertex -1.670251 12.699135 1.000000
+    endloop
+  endfacet
+  facet normal 0.044865 0.998993 0.000000
+    outer loop
+      vertex 0.461622 12.987917 61.000000
+      vertex 2.610799 12.891397 61.000000
+      vertex 0.461622 12.987917 1.000000
+    endloop
+  endfacet
+  facet normal -0.309017 0.951057 0.000000
+    outer loop
+      vertex -1.670251 12.699135 61.000000
+      vertex -1.670251 12.699135 1.000000
+      vertex -3.716300 12.034333 1.000000
+    endloop
+  endfacet
+  facet normal -0.134233 0.990950 0.000000
+    outer loop
+      vertex -1.670251 12.699135 61.000000
+      vertex 0.461622 12.987917 61.000000
+      vertex -1.670251 12.699135 1.000000
+    endloop
+  endfacet
+  facet normal -0.309017 0.951057 0.000000
+    outer loop
+      vertex -3.716300 12.034333 61.000000
+      vertex -1.670251 12.699135 61.000000
+      vertex -3.716300 12.034333 1.000000
+    endloop
+  endfacet
+  facet normal -0.473869 0.880596 0.000082
+    outer loop
+      vertex -5.633250 11.000000 31.000000
+      vertex -3.716300 12.034333 1.000000
+      vertex -5.610764 11.014879 1.000000
+    endloop
+  endfacet
+  facet normal -0.474858 0.880063 0.000000
+    outer loop
+      vertex -5.633250 11.000000 31.000000
+      vertex -3.716300 12.034333 61.000000
+      vertex -3.716300 12.034333 1.000000
+    endloop
+  endfacet
+  facet normal -0.557076 0.830461 -0.000006
+    outer loop
+      vertex -5.737499 10.930061 29.819368
+      vertex -5.633250 11.000000 31.000000
+      vertex -5.610764 11.014879 1.000000
+    endloop
+  endfacet
+  facet normal -0.572700 0.819765 -0.000106
+    outer loop
+      vertex -6.012733 10.737638 28.724386
+      vertex -5.737499 10.930061 29.819368
+      vertex -5.610764 11.014879 1.000000
+    endloop
+  endfacet
+  facet normal -0.623489 0.781830 -0.001818
+    outer loop
+      vertex -6.470624 10.390941 27.563398
+      vertex -5.610764 11.014879 1.000000
+      vertex -7.292752 9.673538 1.000000
+    endloop
+  endfacet
+  facet normal -0.602432 0.798170 -0.000753
+    outer loop
+      vertex -6.470624 10.390941 27.563398
+      vertex -6.012733 10.737638 28.724386
+      vertex -5.610764 11.014879 1.000000
+    endloop
+  endfacet
+  facet normal -0.557913 0.829899 0.000007
+    outer loop
+      vertex -5.610764 11.014879 61.000000
+      vertex -5.633250 11.000000 31.000000
+      vertex -5.757563 10.916418 32.290215
+    endloop
+  endfacet
+  facet normal -0.576298 0.817240 0.000144
+    outer loop
+      vertex -5.610764 11.014879 61.000000
+      vertex -5.757563 10.916418 32.290215
+      vertex -6.080200 10.688693 33.475727
+    endloop
+  endfacet
+  facet normal -0.607404 0.794393 0.000945
+    outer loop
+      vertex -5.610764 11.014879 61.000000
+      vertex -6.080200 10.688693 33.475727
+      vertex -6.528029 10.344987 34.559666
+    endloop
+  endfacet
+  facet normal -0.473869 0.880596 -0.000082
+    outer loop
+      vertex -5.610764 11.014879 61.000000
+      vertex -3.716300 12.034333 61.000000
+      vertex -5.633250 11.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.659575 0.751638 0.000114
+    outer loop
+      vertex -7.338007 9.630043 25.948034
+      vertex -6.470624 10.390941 27.563398
+      vertex -7.292752 9.673538 1.000000
+    endloop
+  endfacet
+  facet normal -0.753070 0.657938 -0.001578
+    outer loop
+      vertex -8.372675 8.493528 24.378290
+      vertex -7.292752 9.673538 1.000000
+      vertex -8.708204 8.053423 1.000000
+    endloop
+  endfacet
+  facet normal -0.739348 0.673324 -0.000167
+    outer loop
+      vertex -8.372675 8.493528 24.378290
+      vertex -7.338007 9.630043 25.948034
+      vertex -7.292752 9.673538 1.000000
+    endloop
+  endfacet
+  facet normal -0.657409 0.753534 0.000122
+    outer loop
+      vertex -7.292752 9.673538 61.000000
+      vertex -6.528029 10.344987 34.559666
+      vertex -7.240622 9.723082 35.889565
+    endloop
+  endfacet
+  facet normal -0.623489 0.781830 0.001822
+    outer loop
+      vertex -7.292752 9.673538 61.000000
+      vertex -5.610764 11.014879 61.000000
+      vertex -6.528029 10.344987 34.559666
+    endloop
+  endfacet
+  facet normal -0.732509 0.680757 -0.000178
+    outer loop
+      vertex -8.299619 8.584002 37.517891
+      vertex -7.292752 9.673538 61.000000
+      vertex -7.240622 9.723082 35.889565
+    endloop
+  endfacet
+  facet normal -0.858447 0.512898 -0.002183
+    outer loop
+      vertex -9.295414 7.164775 23.126274
+      vertex -8.708204 8.053423 1.000000
+      vertex -9.811626 6.206605 1.000000
+    endloop
+  endfacet
+  facet normal -0.821844 0.569712 0.001070
+    outer loop
+      vertex -9.295414 7.164775 23.126274
+      vertex -8.372675 8.493528 24.378290
+      vertex -8.708204 8.053423 1.000000
+    endloop
+  endfacet
+  facet normal -0.817061 0.576550 -0.001190
+    outer loop
+      vertex -8.708204 8.053423 61.000000
+      vertex -8.299619 8.584002 37.517891
+      vertex -9.250660 7.238907 38.815117
+    endloop
+  endfacet
+  facet normal -0.753070 0.657938 0.001763
+    outer loop
+      vertex -8.708204 8.053423 61.000000
+      vertex -7.292752 9.673538 61.000000
+      vertex -8.299619 8.584002 37.517891
+    endloop
+  endfacet
+  facet normal -0.888137 0.459578 0.000819
+    outer loop
+      vertex -9.974246 5.854475 22.257341
+      vertex -9.295414 7.164775 23.126274
+      vertex -9.811626 6.206605 1.000000
+    endloop
+  endfacet
+  facet normal -0.936234 0.351374 -0.001628
+    outer loop
+      vertex -10.429211 4.656930 21.692644
+      vertex -9.811626 6.206605 1.000000
+      vertex -10.567554 4.192442 1.000000
+    endloop
+  endfacet
+  facet normal -0.934612 0.355666 -0.001258
+    outer loop
+      vertex -10.429211 4.656930 21.692644
+      vertex -9.974246 5.854475 22.257341
+      vertex -9.811626 6.206605 1.000000
+    endloop
+  endfacet
+  facet normal -0.883604 0.468235 -0.000555
+    outer loop
+      vertex -9.811626 6.206605 61.000000
+      vertex -9.250660 7.238907 38.815117
+      vertex -9.915038 5.986175 39.668221
+    endloop
+  endfacet
+  facet normal -0.858447 0.512898 0.002159
+    outer loop
+      vertex -9.811626 6.206605 61.000000
+      vertex -8.708204 8.053423 61.000000
+      vertex -9.250660 7.238907 38.815117
+    endloop
+  endfacet
+  facet normal -0.969932 0.243376 0.001022
+    outer loop
+      vertex -10.800443 3.179347 21.240366
+      vertex -10.429211 4.656930 21.692644
+      vertex -10.567554 4.192442 1.000000
+    endloop
+  endfacet
+  facet normal -0.983927 0.178556 -0.002384
+    outer loop
+      vertex -10.951692 2.075672 1.000000
+      vertex -10.800443 3.179347 21.240366
+      vertex -10.567554 4.192442 1.000000
+    endloop
+  endfacet
+  facet normal -0.937549 0.347852 0.000571
+    outer loop
+      vertex -10.567554 4.192442 61.000000
+      vertex -9.915038 5.986175 39.668221
+      vertex -10.527491 4.334210 40.427780
+    endloop
+  endfacet
+  facet normal -0.936235 0.351375 0.000908
+    outer loop
+      vertex -10.567554 4.192442 61.000000
+      vertex -9.811626 6.206605 61.000000
+      vertex -9.915038 5.986175 39.668221
+    endloop
+  endfacet
+  facet normal -0.975719 0.219024 -0.000391
+    outer loop
+      vertex -10.846192 2.915130 40.814899
+      vertex -10.567554 4.192442 61.000000
+      vertex -10.527491 4.334210 40.427780
+    endloop
+  endfacet
+  facet normal -0.993463 0.114145 0.001200
+    outer loop
+      vertex -10.987032 1.557723 21.015564
+      vertex -10.800443 3.179347 21.240366
+      vertex -10.951692 2.075672 1.000000
+    endloop
+  endfacet
+  facet normal -0.999999 0.000000 -0.001766
+    outer loop
+      vertex -10.951692 -0.075672 1.000000
+      vertex -10.987032 1.557723 21.015564
+      vertex -10.951692 2.075672 1.000000
+    endloop
+  endfacet
+  facet normal -0.996112 0.088087 -0.001543
+    outer loop
+      vertex -10.951692 2.075672 61.000000
+      vertex -10.846192 2.915130 40.814899
+      vertex -10.998376 1.197410 40.998051
+    endloop
+  endfacet
+  facet normal -0.983927 0.178556 0.002283
+    outer loop
+      vertex -10.951692 2.075672 61.000000
+      vertex -10.567554 4.192442 61.000000
+      vertex -10.846192 2.915130 40.814899
+    endloop
+  endfacet
+  facet normal -0.999767 -0.021564 -0.000005
+    outer loop
+      vertex -10.951837 -0.074060 21.057848
+      vertex -10.987032 1.557723 21.015564
+      vertex -10.951692 -0.075672 1.000000
+    endloop
+  endfacet
+  facet normal -0.987838 -0.155488 0.000005
+    outer loop
+      vertex -10.703868 -1.649430 21.357359
+      vertex -10.951837 -0.074060 21.057848
+      vertex -10.951692 -0.075672 1.000000
+    endloop
+  endfacet
+  facet normal -0.983928 -0.178557 -0.001826
+    outer loop
+      vertex -10.703868 -1.649430 21.357359
+      vertex -10.951692 -0.075672 1.000000
+      vertex -10.567554 -2.192442 1.000000
+    endloop
+  endfacet
+  facet normal -0.999997 0.000000 0.002334
+    outer loop
+      vertex -10.951692 -0.075672 61.000000
+      vertex -10.951692 2.075672 61.000000
+      vertex -10.998376 1.197410 40.998051
+    endloop
+  endfacet
+  facet normal -0.998488 -0.054961 -0.001168
+    outer loop
+      vertex -10.951692 -0.075672 61.000000
+      vertex -10.998376 1.197410 40.998051
+      vertex -10.903988 -0.514951 40.884579
+    endloop
+  endfacet
+  facet normal -0.984469 -0.175549 0.001499
+    outer loop
+      vertex -10.695628 -1.685570 40.632637
+      vertex -10.951692 -0.075672 61.000000
+      vertex -10.903988 -0.514951 40.884579
+    endloop
+  endfacet
+  facet normal -0.958714 -0.284370 0.001166
+    outer loop
+      vertex -10.252209 -3.169867 21.910873
+      vertex -10.703868 -1.649430 21.357359
+      vertex -10.567554 -2.192442 1.000000
+    endloop
+  endfacet
+  facet normal -0.936232 -0.351374 -0.002305
+    outer loop
+      vertex -9.811626 -4.206605 1.000000
+      vertex -10.252209 -3.169867 21.910873
+      vertex -10.567554 -2.192442 1.000000
+    endloop
+  endfacet
+  facet normal -0.983928 -0.178557 0.001743
+    outer loop
+      vertex -10.567554 -2.192442 61.000000
+      vertex -10.951692 -0.075672 61.000000
+      vertex -10.695628 -1.685570 40.632637
+    endloop
+  endfacet
+  facet normal -0.961412 -0.275111 -0.000801
+    outer loop
+      vertex -10.567554 -2.192442 61.000000
+      vertex -10.695628 -1.685570 40.632637
+      vertex -10.343766 -2.913946 40.202229
+    endloop
+  endfacet
+  facet normal -0.913724 -0.406335 0.000894
+    outer loop
+      vertex -9.627810 -4.572220 22.696363
+      vertex -10.252209 -3.169867 21.910873
+      vertex -9.811626 -4.206605 1.000000
+    endloop
+  endfacet
+  facet normal -0.858448 -0.512899 -0.001370
+    outer loop
+      vertex -8.708204 -6.053423 1.000000
+      vertex -9.627810 -4.572220 22.696363
+      vertex -9.811626 -4.206605 1.000000
+    endloop
+  endfacet
+  facet normal -0.927161 -0.374662 0.000436
+    outer loop
+      vertex -9.811626 -4.206605 61.000000
+      vertex -10.343766 -2.913946 40.202229
+      vertex -9.880333 -4.061458 39.624477
+    endloop
+  endfacet
+  facet normal -0.936233 -0.351374 0.002116
+    outer loop
+      vertex -9.811626 -4.206605 61.000000
+      vertex -10.567554 -2.192442 61.000000
+      vertex -10.343766 -2.913946 40.202229
+    endloop
+  endfacet
+  facet normal -0.879920 -0.475121 -0.000398
+    outer loop
+      vertex -9.197071 -5.326117 38.744690
+      vertex -9.811626 -4.206605 61.000000
+      vertex -9.880333 -4.061458 39.624477
+    endloop
+  endfacet
+  facet normal -0.850496 -0.525982 -0.000140
+    outer loop
+      vertex -8.734071 -6.017682 23.875946
+      vertex -9.627810 -4.572220 22.696363
+      vertex -8.708204 -6.053423 1.000000
+    endloop
+  endfacet
+  facet normal -0.772173 -0.635412 0.000120
+    outer loop
+      vertex -7.758467 -7.203003 25.280670
+      vertex -8.734071 -6.017682 23.875946
+      vertex -8.708204 -6.053423 1.000000
+    endloop
+  endfacet
+  facet normal -0.753070 -0.657938 -0.001694
+    outer loop
+      vertex -7.758467 -7.203003 25.280670
+      vertex -8.708204 -6.053423 1.000000
+      vertex -7.292752 -7.673538 1.000000
+    endloop
+  endfacet
+  facet normal -0.812957 -0.582322 -0.001173
+    outer loop
+      vertex -8.708204 -6.053423 61.000000
+      vertex -9.197071 -5.326117 38.744690
+      vertex -8.256754 -6.636262 37.456585
+    endloop
+  endfacet
+  facet normal -0.858447 -0.512898 0.002095
+    outer loop
+      vertex -8.708204 -6.053423 61.000000
+      vertex -9.811626 -4.206605 61.000000
+      vertex -9.197071 -5.326117 38.744690
+    endloop
+  endfacet
+  facet normal -0.696962 -0.717107 0.000529
+    outer loop
+      vertex -6.938873 -7.998572 26.638153
+      vertex -7.758467 -7.203003 25.280670
+      vertex -7.292752 -7.673538 1.000000
+    endloop
+  endfacet
+  facet normal -0.623489 -0.781830 -0.001709
+    outer loop
+      vertex -6.298790 -8.525107 27.954950
+      vertex -7.292752 -7.673538 1.000000
+      vertex -5.610764 -9.014879 1.000000
+    endloop
+  endfacet
+  facet normal -0.633988 -0.773343 -0.001053
+    outer loop
+      vertex -6.298790 -8.525107 27.954950
+      vertex -6.938873 -7.998572 26.638153
+      vertex -7.292752 -7.673538 1.000000
+    endloop
+  endfacet
+  facet normal -0.729775 -0.683688 -0.000241
+    outer loop
+      vertex -7.292752 -7.673538 61.000000
+      vertex -8.256754 -6.636262 37.456585
+      vertex -7.218598 -7.743835 35.852356
+    endloop
+  endfacet
+  facet normal -0.650207 -0.759757 0.000207
+    outer loop
+      vertex -7.292752 -7.673538 61.000000
+      vertex -7.218598 -7.743835 35.852356
+      vertex -6.375164 -8.466096 34.223824
+    endloop
+  endfacet
+  facet normal -0.753070 -0.657938 0.001848
+    outer loop
+      vertex -7.292752 -7.673538 61.000000
+      vertex -8.708204 -6.053423 61.000000
+      vertex -8.256754 -6.636262 37.456585
+    endloop
+  endfacet
+  facet normal -0.591715 -0.806147 -0.000456
+    outer loop
+      vertex -5.919753 -8.803929 29.029472
+      vertex -6.298790 -8.525107 27.954950
+      vertex -5.610764 -9.014879 1.000000
+    endloop
+  endfacet
+  facet normal -0.566597 -0.823995 -0.000045
+    outer loop
+      vertex -5.681127 -8.968077 30.201591
+      vertex -5.919753 -8.803929 29.029472
+      vertex -5.610764 -9.014879 1.000000
+    endloop
+  endfacet
+  facet normal -0.492774 -0.870156 -0.001384
+    outer loop
+      vertex -3.716300 -10.034333 1.000000
+      vertex -5.659541 -8.982511 31.591177
+      vertex -5.681127 -8.968077 30.201591
+    endloop
+  endfacet
+  facet normal -0.473869 -0.880595 0.000270
+    outer loop
+      vertex -3.716300 -10.034333 1.000000
+      vertex -5.681127 -8.968077 30.201591
+      vertex -5.610764 -9.014879 1.000000
+    endloop
+  endfacet
+  facet normal -0.595712 -0.803198 0.000545
+    outer loop
+      vertex -5.610764 -9.014879 61.000000
+      vertex -6.375164 -8.466096 34.223824
+      vertex -5.941191 -8.788762 33.044537
+    endloop
+  endfacet
+  facet normal -0.566640 -0.823965 0.000033
+    outer loop
+      vertex -5.610764 -9.014879 61.000000
+      vertex -5.941191 -8.788762 33.044537
+      vertex -5.659541 -8.982511 31.591177
+    endloop
+  endfacet
+  facet normal -0.623489 -0.781830 0.001775
+    outer loop
+      vertex -5.610764 -9.014879 61.000000
+      vertex -7.292752 -7.673538 61.000000
+      vertex -6.375164 -8.466096 34.223824
+    endloop
+  endfacet
+  facet normal -0.476015 -0.879437 -0.000000
+    outer loop
+      vertex -3.716300 -10.034333 61.000000
+      vertex -5.659541 -8.982511 31.591177
+      vertex -3.716300 -10.034333 1.000000
+    endloop
+  endfacet
+  facet normal -0.473869 -0.880596 -0.000183
+    outer loop
+      vertex -3.716300 -10.034333 61.000000
+      vertex -5.610764 -9.014879 61.000000
+      vertex -5.659541 -8.982511 31.591177
+    endloop
+  endfacet
+  facet normal -0.309017 -0.951057 -0.000000
+    outer loop
+      vertex -1.670251 -10.699135 61.000000
+      vertex -3.716300 -10.034333 1.000000
+      vertex -1.670251 -10.699135 1.000000
+    endloop
+  endfacet
+  facet normal -0.309017 -0.951057 0.000000
+    outer loop
+      vertex -1.670251 -10.699135 61.000000
+      vertex -3.716300 -10.034333 61.000000
+      vertex -3.716300 -10.034333 1.000000
+    endloop
+  endfacet
+  facet normal -0.134233 -0.990950 -0.000000
+    outer loop
+      vertex 0.461622 -10.987917 61.000000
+      vertex -1.670251 -10.699135 1.000000
+      vertex 0.461622 -10.987917 1.000000
+    endloop
+  endfacet
+  facet normal -0.134233 -0.990950 0.000000
+    outer loop
+      vertex 0.461622 -10.987917 61.000000
+      vertex -1.670251 -10.699135 61.000000
+      vertex -1.670251 -10.699135 1.000000
+    endloop
+  endfacet
+  facet normal 0.044865 -0.998993 0.000000
+    outer loop
+      vertex 2.610799 -10.891397 61.000000
+      vertex 0.461622 -10.987917 1.000000
+      vertex 2.610799 -10.891397 1.000000
+    endloop
+  endfacet
+  facet normal 0.044865 -0.998993 0.000000
+    outer loop
+      vertex 2.610799 -10.891397 61.000000
+      vertex 0.461622 -10.987917 61.000000
+      vertex 0.461622 -10.987917 1.000000
+    endloop
+  endfacet
+  facet normal 0.222521 -0.974928 0.000000
+    outer loop
+      vertex 4.708204 -10.412678 61.000000
+      vertex 2.610799 -10.891397 1.000000
+      vertex 4.708204 -10.412678 1.000000
+    endloop
+  endfacet
+  facet normal 0.222521 -0.974928 0.000000
+    outer loop
+      vertex 4.708204 -10.412678 61.000000
+      vertex 2.610799 -10.891397 61.000000
+      vertex 2.610799 -10.891397 1.000000
+    endloop
+  endfacet
+  facet normal 0.393025 -0.919528 0.000000
+    outer loop
+      vertex 6.686424 -9.567146 61.000000
+      vertex 4.708204 -10.412678 1.000000
+      vertex 6.686424 -9.567146 1.000000
+    endloop
+  endfacet
+  facet normal 0.393025 -0.919528 0.000000
+    outer loop
+      vertex 6.686424 -9.567146 61.000000
+      vertex 4.708204 -10.412678 61.000000
+      vertex 4.708204 -10.412678 1.000000
+    endloop
+  endfacet
+  facet normal 0.550897 -0.834573 0.000000
+    outer loop
+      vertex 8.481877 -8.381978 61.000000
+      vertex 6.686424 -9.567146 1.000000
+      vertex 8.481877 -8.381978 1.000000
+    endloop
+  endfacet
+  facet normal 0.550897 -0.834573 0.000000
+    outer loop
+      vertex 8.481877 -8.381978 61.000000
+      vertex 6.686424 -9.567146 61.000000
+      vertex 6.686424 -9.567146 1.000000
+    endloop
+  endfacet
+  facet normal 0.691063 -0.722795 -0.000345
+    outer loop
+      vertex 9.957149 -6.985579 30.519876
+      vertex 8.481877 -8.381978 1.000000
+      vertex 10.036858 -6.895265 1.000000
+    endloop
+  endfacet
+  facet normal 0.687426 -0.726254 0.000000
+    outer loop
+      vertex 9.957149 -6.985579 30.519876
+      vertex 8.481877 -8.381978 61.000000
+      vertex 8.481877 -8.381978 1.000000
+    endloop
+  endfacet
+  facet normal 0.708120 -0.706089 0.001925
+    outer loop
+      vertex 9.987243 -6.951696 31.877798
+      vertex 8.481877 -8.381978 61.000000
+      vertex 9.957149 -6.985579 30.519876
+    endloop
+  endfacet
+  facet normal 0.753489 -0.657461 0.000023
+    outer loop
+      vertex 10.123698 -6.794750 29.199480
+      vertex 9.957149 -6.985579 30.519876
+      vertex 10.036858 -6.895265 1.000000
+    endloop
+  endfacet
+  facet normal 0.773520 -0.633772 -0.000123
+    outer loop
+      vertex 10.441307 -6.406870 27.977043
+      vertex 10.123698 -6.794750 29.199480
+      vertex 10.036858 -6.895265 1.000000
+    endloop
+  endfacet
+  facet normal 0.803340 -0.595519 -0.001263
+    outer loop
+      vertex 10.859378 -5.840517 26.851828
+      vertex 10.441307 -6.406870 27.977043
+      vertex 10.036858 -6.895265 1.000000
+    endloop
+  endfacet
+  facet normal 0.809016 -0.587784 -0.001759
+    outer loop
+      vertex 10.859378 -5.840517 26.851828
+      vertex 10.036858 -6.895265 1.000000
+      vertex 11.301386 -5.154791 1.000000
+    endloop
+  endfacet
+  facet normal 0.691063 -0.722795 0.000223
+    outer loop
+      vertex 10.036858 -6.895265 61.000000
+      vertex 8.481877 -8.381978 61.000000
+      vertex 9.987243 -6.951696 31.877798
+    endloop
+  endfacet
+  facet normal 0.781345 -0.624099 0.000308
+    outer loop
+      vertex 10.036858 -6.895265 61.000000
+      vertex 10.203491 -6.700374 33.168926
+      vertex 10.553408 -6.261708 34.356724
+    endloop
+  endfacet
+  facet normal 0.758090 -0.652150 -0.000028
+    outer loop
+      vertex 10.036858 -6.895265 61.000000
+      vertex 9.987243 -6.951696 31.877798
+      vertex 10.203491 -6.700374 33.168926
+    endloop
+  endfacet
+  facet normal 0.842107 -0.539311 0.000093
+    outer loop
+      vertex 11.336069 -5.096366 25.819815
+      vertex 10.859378 -5.840517 26.851828
+      vertex 11.301386 -5.154791 1.000000
+    endloop
+  endfacet
+  facet normal 0.883041 -0.469295 -0.000129
+    outer loop
+      vertex 11.837209 -4.153146 24.880760
+      vertex 11.336069 -5.096366 25.819815
+      vertex 11.301386 -5.154791 1.000000
+    endloop
+  endfacet
+  facet normal 0.900967 -0.433883 -0.002017
+    outer loop
+      vertex 11.837209 -4.153146 24.880760
+      vertex 11.301386 -5.154791 1.000000
+      vertex 12.234818 -3.216498 1.000000
+    endloop
+  endfacet
+  facet normal 0.853562 -0.520991 -0.000339
+    outer loop
+      vertex 11.301386 -5.154791 61.000000
+      vertex 10.990158 -5.648063 35.450085
+      vertex 11.475355 -4.853796 36.452805
+    endloop
+  endfacet
+  facet normal 0.813608 -0.581412 0.001314
+    outer loop
+      vertex 11.301386 -5.154791 61.000000
+      vertex 10.553408 -6.261708 34.356724
+      vertex 10.990158 -5.648063 35.450085
+    endloop
+  endfacet
+  facet normal 0.809016 -0.587785 0.001708
+    outer loop
+      vertex 11.301386 -5.154791 61.000000
+      vertex 10.036858 -6.895265 61.000000
+      vertex 10.553408 -6.261708 34.356724
+    endloop
+  endfacet
+  facet normal 0.894453 -0.447161 0.000856
+    outer loop
+      vertex 11.975570 -3.851482 37.361065
+      vertex 11.301386 -5.154791 61.000000
+      vertex 11.475355 -4.853796 36.452805
+    endloop
+  endfacet
+  facet normal 0.920709 -0.390251 0.000023
+    outer loop
+      vertex 12.239279 -3.204594 24.194017
+      vertex 11.837209 -4.153146 24.880760
+      vertex 12.234818 -3.216498 1.000000
+    endloop
+  endfacet
+  facet normal 0.951728 -0.306942 -0.000025
+    outer loop
+      vertex 12.578117 -2.153920 23.647940
+      vertex 12.239279 -3.204594 24.194017
+      vertex 12.234818 -3.216498 1.000000
+    endloop
+  endfacet
+  facet normal 0.963961 -0.266036 -0.002130
+    outer loop
+      vertex 12.578117 -2.153920 23.647940
+      vertex 12.234818 -3.216498 1.000000
+      vertex 12.807155 -1.142683 1.000000
+    endloop
+  endfacet
+  facet normal 0.933649 -0.358189 -0.000618
+    outer loop
+      vertex 12.234818 -3.216498 61.000000
+      vertex 11.975570 -3.851482 37.361065
+      vertex 12.401385 -2.742783 38.070473
+    endloop
+  endfacet
+  facet normal 0.900968 -0.433883 0.001774
+    outer loop
+      vertex 12.234818 -3.216498 61.000000
+      vertex 11.301386 -5.154791 61.000000
+      vertex 11.975570 -3.851482 37.361065
+    endloop
+  endfacet
+  facet normal 0.962709 -0.270535 0.001404
+    outer loop
+      vertex 12.685336 -1.730003 38.519779
+      vertex 12.234818 -3.216498 61.000000
+      vertex 12.401385 -2.742783 38.070473
+    endloop
+  endfacet
+  facet normal 0.977880 -0.209164 0.000550
+    outer loop
+      vertex 12.854566 -0.862602 23.219851
+      vertex 12.578117 -2.153920 23.647940
+      vertex 12.807155 -1.142683 1.000000
+    endloop
+  endfacet
+  facet normal 0.992916 -0.118816 -0.000621
+    outer loop
+      vertex 12.959556 0.015602 23.060797
+      vertex 12.854566 -0.862602 23.219851
+      vertex 12.807155 -1.142683 1.000000
+    endloop
+  endfacet
+  facet normal 0.995972 -0.089639 -0.002174
+    outer loop
+      vertex 12.959556 0.015602 23.060797
+      vertex 12.807155 -1.142683 1.000000
+      vertex 13.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.984363 -0.176153 -0.000732
+    outer loop
+      vertex 12.807155 -1.142683 61.000000
+      vertex 12.685336 -1.730003 38.519779
+      vertex 12.906315 -0.496555 38.858772
+    endloop
+  endfacet
+  facet normal 0.963961 -0.266036 0.001727
+    outer loop
+      vertex 12.807155 -1.142683 61.000000
+      vertex 12.234818 -3.216498 61.000000
+      vertex 12.685336 -1.730003 38.519779
+    endloop
+  endfacet
+  facet normal 0.999157 -0.041051 0.000000
+    outer loop
+      vertex 13.000000 1.000000 23.000000
+      vertex 12.959556 0.015602 23.060797
+      vertex 13.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.998046 -0.062478 0.000000
+    outer loop
+      vertex 13.000000 1.000000 61.000000
+      vertex 12.906315 -0.496555 38.858772
+      vertex 13.000000 1.000000 39.000000
+    endloop
+  endfacet
+  facet normal 0.995973 -0.089639 0.001845
+    outer loop
+      vertex 13.000000 1.000000 61.000000
+      vertex 12.807155 -1.142683 61.000000
+      vertex 12.906315 -0.496555 38.858772
+    endloop
+  endfacet
+  facet normal -0.000014 -0.989717 -0.143040
+    outer loop
+      vertex 131.000000 -6.799423 29.219833
+      vertex 9.957149 -6.985579 30.519876
+      vertex 10.123698 -6.794750 29.199480
+    endloop
+  endfacet
+  facet normal 0.000014 -0.953169 -0.302437
+    outer loop
+      vertex 131.000000 -6.799423 29.219833
+      vertex 10.123698 -6.794750 29.199480
+      vertex 10.441307 -6.406870 27.977043
+    endloop
+  endfacet
+  facet normal 0.000326 -0.993712 -0.111965
+    outer loop
+      vertex 131.000000 -6.799423 29.219833
+      vertex 131.000000 -7.000000 31.000000
+      vertex 9.957149 -6.985579 30.519876
+    endloop
+  endfacet
+  facet normal 0.000000 0.995512 0.094638
+    outer loop
+      vertex 131.000000 9.000000 31.000000
+      vertex 9.944272 9.000000 31.000000
+      vertex 10.070409 8.856697 32.507420
+    endloop
+  endfacet
+  facet normal -0.000196 -0.893205 -0.449649
+    outer loop
+      vertex 131.000000 -6.207751 27.528931
+      vertex 10.441307 -6.406870 27.977043
+      vertex 10.859378 -5.840517 26.851828
+    endloop
+  endfacet
+  facet normal -0.000169 0.960980 0.276618
+    outer loop
+      vertex 131.000000 8.799423 32.780167
+      vertex 10.070409 8.856697 32.507420
+      vertex 10.402563 8.455991 33.899689
+    endloop
+  endfacet
+  facet normal 0.000331 -0.943883 -0.330279
+    outer loop
+      vertex 131.000000 -6.207751 27.528931
+      vertex 131.000000 -6.799423 29.219833
+      vertex 10.441307 -6.406870 27.977043
+    endloop
+  endfacet
+  facet normal 0.000218 0.993712 0.111965
+    outer loop
+      vertex 131.000000 8.799423 32.780167
+      vertex 131.000000 9.000000 31.000000
+      vertex 10.070409 8.856697 32.507420
+    endloop
+  endfacet
+  facet normal -0.000133 -0.811094 -0.584915
+    outer loop
+      vertex 131.000000 -5.254652 26.012081
+      vertex 10.859378 -5.840517 26.851828
+      vertex 11.336069 -5.096366 25.819815
+    endloop
+  endfacet
+  facet normal 0.000410 -0.846724 -0.532032
+    outer loop
+      vertex 131.000000 -5.254652 26.012081
+      vertex 131.000000 -6.207751 27.528931
+      vertex 10.859378 -5.840517 26.851828
+    endloop
+  endfacet
+  facet normal -0.000256 0.896312 0.443423
+    outer loop
+      vertex 131.000000 8.207751 34.471069
+      vertex 10.402563 8.455991 33.899689
+      vertex 10.866963 7.829570 35.166172
+    endloop
+  endfacet
+  facet normal 0.000378 0.943883 0.330279
+    outer loop
+      vertex 131.000000 8.207751 34.471069
+      vertex 131.000000 8.799423 32.780167
+      vertex 10.402563 8.455991 33.899689
+    endloop
+  endfacet
+  facet normal 0.000173 -0.705586 -0.708624
+    outer loop
+      vertex 131.000000 -3.987918 24.745348
+      vertex 11.336069 -5.096366 25.819815
+      vertex 11.837209 -4.153146 24.880760
+    endloop
+  endfacet
+  facet normal -0.000107 -0.586402 -0.810021
+    outer loop
+      vertex 131.000000 -3.987918 24.745348
+      vertex 11.837209 -4.153146 24.880760
+      vertex 12.239279 -3.204594 24.194017
+    endloop
+  endfacet
+  facet normal -0.000225 0.803620 0.595143
+    outer loop
+      vertex 131.000000 7.254652 35.987919
+      vertex 10.866963 7.829570 35.166172
+      vertex 11.405221 6.977572 36.316826
+    endloop
+  endfacet
+  facet normal 0.000201 -0.707107 -0.707107
+    outer loop
+      vertex 131.000000 -3.987918 24.745348
+      vertex 131.000000 -5.254652 26.012081
+      vertex 11.336069 -5.096366 25.819815
+    endloop
+  endfacet
+  facet normal 0.000413 0.846724 0.532032
+    outer loop
+      vertex 131.000000 7.254652 35.987919
+      vertex 131.000000 8.207751 34.471069
+      vertex 10.866963 7.829570 35.166172
+    endloop
+  endfacet
+  facet normal -0.000154 -0.461132 -0.887331
+    outer loop
+      vertex 131.000000 -2.471070 23.792250
+      vertex 12.239279 -3.204594 24.194017
+      vertex 12.578117 -2.153920 23.647940
+    endloop
+  endfacet
+  facet normal -0.000110 0.680839 0.732433
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 11.405221 6.977572 36.316826
+      vertex 11.968547 5.867337 37.348938
+    endloop
+  endfacet
+  facet normal 0.000422 -0.532032 -0.846724
+    outer loop
+      vertex 131.000000 -2.471070 23.792250
+      vertex 131.000000 -3.987918 24.745348
+      vertex 12.239279 -3.204594 24.194017
+    endloop
+  endfacet
+  facet normal 0.000306 0.707106 0.707107
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 131.000000 7.254652 35.987919
+      vertex 11.405221 6.977572 36.316826
+    endloop
+  endfacet
+  facet normal -0.000045 0.521109 0.853490
+    outer loop
+      vertex 131.000000 4.471070 38.207752
+      vertex 11.968547 5.867337 37.348938
+      vertex 12.501177 4.423876 38.230289
+    endloop
+  endfacet
+  facet normal 0.000043 0.341486 0.939887
+    outer loop
+      vertex 131.000000 4.471070 38.207752
+      vertex 12.501177 4.423876 38.230289
+      vertex 12.829484 3.015767 38.741879
+    endloop
+  endfacet
+  facet normal 0.000132 0.532033 0.846723
+    outer loop
+      vertex 131.000000 4.471070 38.207752
+      vertex 131.000000 5.987918 37.254650
+      vertex 11.968547 5.867337 37.348938
+    endloop
+  endfacet
+  facet normal 0.000065 -0.314685 -0.949196
+    outer loop
+      vertex 131.000000 -0.780167 23.200577
+      vertex 12.578117 -2.153920 23.647940
+      vertex 12.854566 -0.862602 23.219851
+    endloop
+  endfacet
+  facet normal -0.000036 -0.178209 -0.983993
+    outer loop
+      vertex 131.000000 -0.780167 23.200577
+      vertex 12.854566 -0.862602 23.219851
+      vertex 12.959556 0.015602 23.060797
+    endloop
+  endfacet
+  facet normal 0.000266 -0.330279 -0.943883
+    outer loop
+      vertex 131.000000 -0.780167 23.200577
+      vertex 131.000000 -2.471070 23.792250
+      vertex 12.578117 -2.153920 23.647940
+    endloop
+  endfacet
+  facet normal -0.000092 0.193413 0.981117
+    outer loop
+      vertex 131.000000 2.780168 38.799423
+      vertex 12.829484 3.015767 38.741879
+      vertex 12.951891 2.073451 38.927654
+    endloop
+  endfacet
+  facet normal 0.000199 0.330278 0.943884
+    outer loop
+      vertex 131.000000 2.780168 38.799423
+      vertex 131.000000 4.471070 38.207752
+      vertex 12.829484 3.015767 38.741879
+    endloop
+  endfacet
+  facet normal 0.000000 0.093950 -0.995577
+    outer loop
+      vertex 131.000000 1.000000 23.000000
+      vertex 13.000000 1.000000 23.000000
+      vertex 12.906315 2.496555 23.141226
+    endloop
+  endfacet
+  facet normal -0.000000 -0.061643 -0.998098
+    outer loop
+      vertex 131.000000 1.000000 23.000000
+      vertex 12.959556 0.015602 23.060797
+      vertex 13.000000 1.000000 23.000000
+    endloop
+  endfacet
+  facet normal 0.000422 -0.111965 -0.993712
+    outer loop
+      vertex 131.000000 1.000000 23.000000
+      vertex 131.000000 -0.780167 23.200577
+      vertex 12.959556 0.015602 23.060797
+    endloop
+  endfacet
+  facet normal 0.000409 0.111965 0.993712
+    outer loop
+      vertex 131.000000 1.000000 39.000000
+      vertex 131.000000 2.780168 38.799423
+      vertex 12.951891 2.073451 38.927654
+    endloop
+  endfacet
+  facet normal 0.000000 -0.093951 0.995577
+    outer loop
+      vertex 131.000000 1.000000 39.000000
+      vertex 13.000000 1.000000 39.000000
+      vertex 12.906315 -0.496555 38.858772
+    endloop
+  endfacet
+  facet normal 0.000000 0.067243 0.997737
+    outer loop
+      vertex 131.000000 1.000000 39.000000
+      vertex 12.951891 2.073451 38.927654
+      vertex 13.000000 1.000000 39.000000
+    endloop
+  endfacet
+  facet normal -0.000152 0.264984 -0.964253
+    outer loop
+      vertex 131.000000 2.780168 23.200577
+      vertex 12.906315 2.496555 23.141226
+      vertex 12.685336 3.730003 23.480221
+    endloop
+  endfacet
+  facet normal 0.000231 0.111965 -0.993712
+    outer loop
+      vertex 131.000000 2.780168 23.200577
+      vertex 131.000000 1.000000 23.000000
+      vertex 12.906315 2.496555 23.141226
+    endloop
+  endfacet
+  facet normal -0.000152 -0.264982 0.964253
+    outer loop
+      vertex 131.000000 -0.780167 38.799423
+      vertex 12.906315 -0.496555 38.858772
+      vertex 12.685336 -1.730003 38.519779
+    endloop
+  endfacet
+  facet normal -0.000129 0.405492 -0.914099
+    outer loop
+      vertex 131.000000 4.471070 23.792250
+      vertex 12.685336 3.730003 23.480221
+      vertex 12.401385 4.742783 23.929527
+    endloop
+  endfacet
+  facet normal 0.000231 -0.111965 0.993712
+    outer loop
+      vertex 131.000000 -0.780167 38.799423
+      vertex 131.000000 1.000000 39.000000
+      vertex 12.906315 -0.496555 38.858772
+    endloop
+  endfacet
+  facet normal 0.000421 0.330279 -0.943883
+    outer loop
+      vertex 131.000000 4.471070 23.792250
+      vertex 131.000000 2.780168 23.200577
+      vertex 12.685336 3.730003 23.480221
+    endloop
+  endfacet
+  facet normal -0.000129 -0.405492 0.914099
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 12.685336 -1.730003 38.519779
+      vertex 12.401385 -2.742783 38.070473
+    endloop
+  endfacet
+  facet normal 0.000421 -0.330278 0.943883
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 -0.780167 38.799423
+      vertex 12.685336 -1.730003 38.519779
+    endloop
+  endfacet
+  facet normal 0.000135 0.539006 -0.842302
+    outer loop
+      vertex 131.000000 5.987918 24.745348
+      vertex 12.401385 4.742783 23.929527
+      vertex 11.975570 5.851481 24.638937
+    endloop
+  endfacet
+  facet normal -0.000107 0.671454 -0.741046
+    outer loop
+      vertex 131.000000 5.987918 24.745348
+      vertex 11.975570 5.851481 24.638937
+      vertex 11.475355 6.853796 25.547195
+    endloop
+  endfacet
+  facet normal 0.000239 0.532032 -0.846724
+    outer loop
+      vertex 131.000000 5.987918 24.745348
+      vertex 131.000000 4.471070 23.792250
+      vertex 12.401385 4.742783 23.929527
+    endloop
+  endfacet
+  facet normal -0.000213 0.783825 -0.620981
+    outer loop
+      vertex 131.000000 7.254652 26.012081
+      vertex 11.475355 6.853796 25.547195
+      vertex 10.990158 7.648063 26.549915
+    endloop
+  endfacet
+  facet normal 0.000239 -0.532033 0.846723
+    outer loop
+      vertex 131.000000 -3.987918 37.254650
+      vertex 131.000000 -2.471070 38.207752
+      vertex 12.401385 -2.742783 38.070473
+    endloop
+  endfacet
+  facet normal 0.000135 -0.539005 0.842303
+    outer loop
+      vertex 131.000000 -3.987918 37.254650
+      vertex 12.401385 -2.742783 38.070473
+      vertex 11.975570 -3.851482 37.361065
+    endloop
+  endfacet
+  facet normal -0.000107 -0.671455 0.741046
+    outer loop
+      vertex 131.000000 -3.987918 37.254650
+      vertex 11.975570 -3.851482 37.361065
+      vertex 11.475355 -4.853796 36.452805
+    endloop
+  endfacet
+  facet normal 0.000379 0.707107 -0.707107
+    outer loop
+      vertex 131.000000 7.254652 26.012081
+      vertex 131.000000 5.987918 24.745348
+      vertex 11.475355 6.853796 25.547195
+    endloop
+  endfacet
+  facet normal -0.000213 -0.783825 0.620981
+    outer loop
+      vertex 131.000000 -5.254652 35.987919
+      vertex 11.475355 -4.853796 36.452805
+      vertex 10.990158 -5.648063 35.450085
+    endloop
+  endfacet
+  facet normal -0.000074 0.872030 -0.489453
+    outer loop
+      vertex 131.000000 8.207751 27.528931
+      vertex 10.990158 7.648063 26.549915
+      vertex 10.553408 8.261708 27.643276
+    endloop
+  endfacet
+  facet normal 0.000091 0.938081 -0.346416
+    outer loop
+      vertex 131.000000 8.207751 27.528931
+      vertex 10.553408 8.261708 27.643276
+      vertex 10.203491 8.700374 28.831072
+    endloop
+  endfacet
+  facet normal 0.000379 -0.707106 0.707107
+    outer loop
+      vertex 131.000000 -5.254652 35.987919
+      vertex 131.000000 -3.987918 37.254650
+      vertex 11.475355 -4.853796 36.452805
+    endloop
+  endfacet
+  facet normal 0.000391 0.846724 -0.532032
+    outer loop
+      vertex 131.000000 8.207751 27.528931
+      vertex 131.000000 7.254652 26.012081
+      vertex 10.990158 7.648063 26.549915
+    endloop
+  endfacet
+  facet normal -0.000074 -0.872030 0.489453
+    outer loop
+      vertex 131.000000 -6.207751 34.471069
+      vertex 10.990158 -5.648063 35.450085
+      vertex 10.553408 -6.261708 34.356724
+    endloop
+  endfacet
+  facet normal 0.000091 -0.938081 0.346416
+    outer loop
+      vertex 131.000000 -6.207751 34.471069
+      vertex 10.553408 -6.261708 34.356724
+      vertex 10.203491 -6.700374 33.168926
+    endloop
+  endfacet
+  facet normal 0.000391 -0.846724 0.532032
+    outer loop
+      vertex 131.000000 -6.207751 34.471069
+      vertex 131.000000 -5.254652 35.987919
+      vertex 10.990158 -5.648063 35.450085
+    endloop
+  endfacet
+  facet normal -0.000141 0.978655 -0.205509
+    outer loop
+      vertex 131.000000 8.799423 29.219833
+      vertex 10.203491 8.700374 28.831072
+      vertex 10.013048 8.922435 29.888680
+    endloop
+  endfacet
+  facet normal 0.000289 0.943883 -0.330279
+    outer loop
+      vertex 131.000000 8.799423 29.219833
+      vertex 131.000000 8.207751 27.528931
+      vertex 10.203491 8.700374 28.831072
+    endloop
+  endfacet
+  facet normal 0.000391 0.993712 -0.111965
+    outer loop
+      vertex 131.000000 9.000000 31.000000
+      vertex 131.000000 8.799423 29.219833
+      vertex 10.013048 8.922435 29.888680
+    endloop
+  endfacet
+  facet normal 0.000000 0.997573 -0.069626
+    outer loop
+      vertex 131.000000 9.000000 31.000000
+      vertex 10.013048 8.922435 29.888680
+      vertex 9.944272 9.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.000190 -0.981571 0.191098
+    outer loop
+      vertex 131.000000 -6.799423 32.780167
+      vertex 10.203491 -6.700374 33.168926
+      vertex 9.987243 -6.951696 31.877798
+    endloop
+  endfacet
+  facet normal 0.000289 -0.943883 0.330279
+    outer loop
+      vertex 131.000000 -6.799423 32.780167
+      vertex 131.000000 -6.207751 34.471069
+      vertex 10.203491 -6.700374 33.168926
+    endloop
+  endfacet
+  facet normal -0.000218 -0.999689 0.024950
+    outer loop
+      vertex 131.000000 -7.000000 31.000000
+      vertex 9.987243 -6.951696 31.877798
+      vertex 9.957149 -6.985579 30.519876
+    endloop
+  endfacet
+  facet normal 0.000416 -0.993712 0.111965
+    outer loop
+      vertex 131.000000 -7.000000 31.000000
+      vertex 131.000000 -6.799423 32.780167
+      vertex 9.987243 -6.951696 31.877798
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 10.036858 -6.895265 1.000000
+      vertex 8.481877 10.381978 1.000000
+      vertex 12.234818 5.216498 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 12.234818 5.216498 1.000000
+      vertex 8.481877 10.381978 1.000000
+      vertex 11.301386 7.154791 1.000000
+    endloop
+  endfacet
+  facet normal -0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 6.686424 11.567146 1.000000
+      vertex 8.481877 10.381978 1.000000
+      vertex 4.708204 12.412678 1.000000
+    endloop
+  endfacet
+  facet normal -0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 4.708204 12.412678 1.000000
+      vertex 8.481877 10.381978 1.000000
+      vertex 2.610799 12.891397 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -10.951692 -0.075672 1.000000
+      vertex 8.481877 10.381978 1.000000
+      vertex -9.811626 -4.206605 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -8.708204 -6.053423 1.000000
+      vertex -3.716300 -10.034333 1.000000
+      vertex -7.292752 -7.673538 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -9.811626 6.206605 1.000000
+      vertex 8.481877 10.381978 1.000000
+      vertex -10.951692 -0.075672 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -7.292752 -7.673538 1.000000
+      vertex -3.716300 -10.034333 1.000000
+      vertex -5.610764 -9.014879 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -9.811626 -4.206605 1.000000
+      vertex 8.481877 10.381978 1.000000
+      vertex 10.036858 -6.895265 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 2.610799 12.891397 1.000000
+      vertex 8.481877 10.381978 1.000000
+      vertex -9.811626 6.206605 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 8.481877 10.381978 1.000000
+      vertex 10.036858 8.895265 1.000000
+      vertex 11.301386 7.154791 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -10.567554 -2.192442 1.000000
+      vertex -10.951692 -0.075672 1.000000
+      vertex -9.811626 -4.206605 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -3.716300 -10.034333 1.000000
+      vertex 0.461622 -10.987917 1.000000
+      vertex -1.670251 -10.699135 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -8.708204 -6.053423 1.000000
+      vertex 0.461622 -10.987917 1.000000
+      vertex -3.716300 -10.034333 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 0.461622 -10.987917 1.000000
+      vertex 4.708204 -10.412678 1.000000
+      vertex 2.610799 -10.891397 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -10.567554 4.192442 1.000000
+      vertex -9.811626 6.206605 1.000000
+      vertex -10.951692 2.075672 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -10.951692 2.075672 1.000000
+      vertex -9.811626 6.206605 1.000000
+      vertex -10.951692 -0.075672 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -8.708204 8.053423 1.000000
+      vertex -7.292752 9.673538 1.000000
+      vertex -9.811626 6.206605 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -9.811626 -4.206605 1.000000
+      vertex 10.036858 -6.895265 1.000000
+      vertex -8.708204 -6.053423 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 4.708204 -10.412678 1.000000
+      vertex 10.036858 -6.895265 1.000000
+      vertex 6.686424 -9.567146 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 6.686424 -9.567146 1.000000
+      vertex 10.036858 -6.895265 1.000000
+      vertex 8.481877 -8.381978 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -8.708204 -6.053423 1.000000
+      vertex 10.036858 -6.895265 1.000000
+      vertex 0.461622 -10.987917 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 0.461622 -10.987917 1.000000
+      vertex 10.036858 -6.895265 1.000000
+      vertex 4.708204 -10.412678 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 10.036858 -6.895265 1.000000
+      vertex 12.234818 -3.216498 1.000000
+      vertex 11.301386 -5.154791 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -1.670251 12.699135 1.000000
+      vertex 0.461622 12.987917 1.000000
+      vertex -3.716300 12.034333 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -3.716300 12.034333 1.000000
+      vertex 0.461622 12.987917 1.000000
+      vertex -5.610764 11.014879 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -5.610764 11.014879 1.000000
+      vertex 2.610799 12.891397 1.000000
+      vertex -7.292752 9.673538 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -7.292752 9.673538 1.000000
+      vertex 2.610799 12.891397 1.000000
+      vertex -9.811626 6.206605 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 0.461622 12.987917 1.000000
+      vertex 2.610799 12.891397 1.000000
+      vertex -5.610764 11.014879 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 12.807155 -1.142683 1.000000
+      vertex 12.807155 3.142683 1.000000
+      vertex 13.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 12.234818 -3.216498 1.000000
+      vertex 12.234818 5.216498 1.000000
+      vertex 12.807155 -1.142683 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 10.036858 -6.895265 1.000000
+      vertex 12.234818 5.216498 1.000000
+      vertex 12.234818 -3.216498 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 12.807155 -1.142683 1.000000
+      vertex 12.234818 5.216498 1.000000
+      vertex 12.807155 3.142683 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.481877 10.381978 61.000000
+      vertex 12.234818 5.216498 61.000000
+      vertex 11.301386 7.154791 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.481877 10.381978 61.000000
+      vertex 6.686424 11.567146 61.000000
+      vertex 4.708204 12.412678 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.481877 10.381978 61.000000
+      vertex 4.708204 12.412678 61.000000
+      vertex 2.610799 12.891397 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.481877 10.381978 61.000000
+      vertex 2.610799 12.891397 61.000000
+      vertex -5.610764 11.014879 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.481877 10.381978 61.000000
+      vertex -5.610764 11.014879 61.000000
+      vertex 12.234818 5.216498 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -3.716300 -10.034333 61.000000
+      vertex -8.708204 -6.053423 61.000000
+      vertex -7.292752 -7.673538 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 10.036858 8.895265 61.000000
+      vertex 8.481877 10.381978 61.000000
+      vertex 11.301386 7.154791 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -3.716300 -10.034333 61.000000
+      vertex -7.292752 -7.673538 61.000000
+      vertex -5.610764 -9.014879 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -10.951692 -0.075672 61.000000
+      vertex -10.567554 -2.192442 61.000000
+      vertex -9.811626 -4.206605 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 0.461622 -10.987917 61.000000
+      vertex -3.716300 -10.034333 61.000000
+      vertex -1.670251 -10.699135 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 0.461622 -10.987917 61.000000
+      vertex -8.708204 -6.053423 61.000000
+      vertex -3.716300 -10.034333 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 4.708204 -10.412678 61.000000
+      vertex 0.461622 -10.987917 61.000000
+      vertex 2.610799 -10.891397 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -9.811626 6.206605 61.000000
+      vertex -10.567554 4.192442 61.000000
+      vertex -10.951692 2.075672 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -9.811626 6.206605 61.000000
+      vertex -10.951692 2.075672 61.000000
+      vertex -10.951692 -0.075672 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -7.292752 9.673538 61.000000
+      vertex -8.708204 8.053423 61.000000
+      vertex -9.811626 6.206605 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 10.036858 -6.895265 61.000000
+      vertex -9.811626 -4.206605 61.000000
+      vertex -8.708204 -6.053423 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 10.036858 -6.895265 61.000000
+      vertex 4.708204 -10.412678 61.000000
+      vertex 6.686424 -9.567146 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 10.036858 -6.895265 61.000000
+      vertex 6.686424 -9.567146 61.000000
+      vertex 8.481877 -8.381978 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 10.036858 -6.895265 61.000000
+      vertex -8.708204 -6.053423 61.000000
+      vertex 0.461622 -10.987917 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 10.036858 -6.895265 61.000000
+      vertex 0.461622 -10.987917 61.000000
+      vertex 4.708204 -10.412678 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 -3.216498 61.000000
+      vertex 10.036858 -6.895265 61.000000
+      vertex 11.301386 -5.154791 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 0.461622 12.987917 61.000000
+      vertex -1.670251 12.699135 61.000000
+      vertex -3.716300 12.034333 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 0.461622 12.987917 61.000000
+      vertex -3.716300 12.034333 61.000000
+      vertex -5.610764 11.014879 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 2.610799 12.891397 61.000000
+      vertex 0.461622 12.987917 61.000000
+      vertex -5.610764 11.014879 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.807155 3.142683 61.000000
+      vertex 12.807155 -1.142683 61.000000
+      vertex 13.000000 1.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 61.000000
+      vertex -5.610764 11.014879 61.000000
+      vertex -7.292752 9.673538 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 61.000000
+      vertex 12.234818 -3.216498 61.000000
+      vertex 12.807155 -1.142683 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 61.000000
+      vertex -10.951692 -0.075672 61.000000
+      vertex -9.811626 -4.206605 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 61.000000
+      vertex -7.292752 9.673538 61.000000
+      vertex -9.811626 6.206605 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 61.000000
+      vertex -9.811626 6.206605 61.000000
+      vertex -10.951692 -0.075672 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 61.000000
+      vertex -9.811626 -4.206605 61.000000
+      vertex 10.036858 -6.895265 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 61.000000
+      vertex 10.036858 -6.895265 61.000000
+      vertex 12.234818 -3.216498 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 61.000000
+      vertex 12.807155 -1.142683 61.000000
+      vertex 12.807155 3.142683 61.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 23.792250
+      vertex 131.000000 -5.254652 26.012081
+      vertex 131.000000 -3.987918 24.745348
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 1.000000 23.000000
+      vertex 131.000000 -2.471070 23.792250
+      vertex 131.000000 -0.780167 23.200577
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 2.780168 23.200577
+      vertex 131.000000 -2.471070 23.792250
+      vertex 131.000000 1.000000 23.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 24.745348
+      vertex 131.000000 2.780168 23.200577
+      vertex 131.000000 4.471070 23.792250
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 24.745348
+      vertex 131.000000 -5.254652 26.012081
+      vertex 131.000000 -2.471070 23.792250
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 24.745348
+      vertex 131.000000 -2.471070 23.792250
+      vertex 131.000000 2.780168 23.200577
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -5.254652 35.987919
+      vertex 131.000000 -6.207751 34.471069
+      vertex 131.000000 -6.799423 32.780167
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 7.254652 26.012081
+      vertex 131.000000 -6.799423 29.219833
+      vertex 131.000000 -6.207751 27.528931
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 7.254652 26.012081
+      vertex 131.000000 -6.207751 27.528931
+      vertex 131.000000 -5.254652 26.012081
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 7.254652 26.012081
+      vertex 131.000000 -5.254652 26.012081
+      vertex 131.000000 5.987918 24.745348
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 -3.987918 37.254650
+      vertex 131.000000 -5.254652 35.987919
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 -6.799423 32.780167
+      vertex 131.000000 -7.000000 31.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 -7.000000 31.000000
+      vertex 131.000000 -6.799423 29.219833
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 7.254652 26.012081
+      vertex 131.000000 8.207751 27.528931
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 -6.799423 29.219833
+      vertex 131.000000 7.254652 26.012081
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 -5.254652 35.987919
+      vertex 131.000000 -6.799423 32.780167
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 8.799423 32.780167
+      vertex 131.000000 8.207751 27.528931
+      vertex 131.000000 8.799423 29.219833
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 8.799423 32.780167
+      vertex 131.000000 8.799423 29.219833
+      vertex 131.000000 9.000000 31.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 2.780168 38.799423
+      vertex 131.000000 1.000000 39.000000
+      vertex 131.000000 -0.780167 38.799423
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 8.207751 34.471069
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 8.207751 27.528931
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 8.207751 34.471069
+      vertex 131.000000 8.207751 27.528931
+      vertex 131.000000 8.799423 32.780167
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 131.000000 8.207751 34.471069
+      vertex 131.000000 7.254652 35.987919
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 131.000000 4.471070 38.207752
+      vertex 131.000000 2.780168 38.799423
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 131.000000 -0.780167 38.799423
+      vertex 131.000000 -2.471070 38.207752
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 131.000000 2.780168 38.799423
+      vertex 131.000000 -0.780167 38.799423
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 8.207751 34.471069
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingS.stl b/apps/cpu/Multiphase/backup/FlowFocusingS.stl
new file mode 100644
index 0000000000000000000000000000000000000000..b84a5e8ff64c351fb616a33ae55c5f4477705f4a
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingS.stl differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingS2.ast b/apps/cpu/Multiphase/backup/FlowFocusingS2.ast
new file mode 100644
index 0000000000000000000000000000000000000000..1b356112100b7d690d87a99b62b13c8dc58cc6be
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/FlowFocusingS2.ast
@@ -0,0 +1,422 @@
+solid Mesh
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 1.000000 16.000000 1.000000
+      vertex 51.000000 1.000000 1.000000
+      vertex 1.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 1.000000 16.000000 1.000000
+      vertex 51.000000 16.000000 1.000000
+      vertex 51.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 1.000000 16.000000 26.000000
+      vertex 1.000000 16.000000 1.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 1.000000 1.000000 26.000000
+      vertex 1.000000 16.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 11.000000 16.000000 26.000000
+      vertex 1.000000 16.000000 1.000000
+      vertex 1.000000 16.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 16.000000 16.000000 26.000000
+      vertex 1.000000 16.000000 1.000000
+      vertex 11.000000 16.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 51.000000 16.000000 1.000000
+      vertex 1.000000 16.000000 1.000000
+      vertex 16.000000 16.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 51.000000 16.000000 26.000000
+      vertex 51.000000 16.000000 1.000000
+      vertex 16.000000 16.000000 26.000000
+    endloop
+  endfacet
+  facet normal 1.000000 -0.000000 0.000000
+    outer loop
+      vertex 51.000000 1.000000 26.000000
+      vertex 51.000000 16.000000 1.000000
+      vertex 51.000000 16.000000 26.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 51.000000 1.000000 26.000000
+      vertex 51.000000 1.000000 1.000000
+      vertex 51.000000 16.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 11.000000 1.000000 26.000000
+      vertex 1.000000 1.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 16.000000 1.000000 26.000000
+      vertex 11.000000 1.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 51.000000 1.000000 1.000000
+      vertex 16.000000 1.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 51.000000 1.000000 1.000000
+      vertex 51.000000 1.000000 26.000000
+      vertex 16.000000 1.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -24.000000 1.000000 26.000000
+      vertex 1.000000 16.000000 26.000000
+      vertex 1.000000 1.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -24.000000 16.000000 26.000000
+      vertex 1.000000 16.000000 26.000000
+      vertex -24.000000 1.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 51.000000 16.000000 26.000000
+      vertex 16.000000 16.000000 76.000000
+      vertex 51.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 51.000000 16.000000 26.000000
+      vertex 16.000000 16.000000 26.000000
+      vertex 16.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 16.000000 16.000000 26.000000
+      vertex 11.000000 16.000000 76.000000
+      vertex 16.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 16.000000 16.000000 26.000000
+      vertex 11.000000 16.000000 26.000000
+      vertex 11.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 1.000000 16.000000 26.000000
+      vertex 1.000000 16.000000 76.000000
+      vertex 11.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 11.000000 16.000000 26.000000
+      vertex 1.000000 16.000000 26.000000
+      vertex 11.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 51.000000 1.000000 26.000000
+      vertex 181.000000 16.000000 26.000000
+      vertex 181.000000 1.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 51.000000 16.000000 26.000000
+      vertex 181.000000 16.000000 26.000000
+      vertex 51.000000 1.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 16.000000 1.000000 76.000000
+      vertex 51.000000 1.000000 26.000000
+      vertex 51.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 16.000000 1.000000 26.000000
+      vertex 51.000000 1.000000 26.000000
+      vertex 16.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 11.000000 1.000000 76.000000
+      vertex 16.000000 1.000000 26.000000
+      vertex 16.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 11.000000 1.000000 26.000000
+      vertex 16.000000 1.000000 26.000000
+      vertex 11.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 76.000000
+      vertex 1.000000 1.000000 26.000000
+      vertex 11.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 26.000000
+      vertex 11.000000 1.000000 26.000000
+      vertex 11.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 1.000000 16.000000 26.000000
+      vertex -24.000000 16.000000 76.000000
+      vertex 1.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 1.000000 16.000000 26.000000
+      vertex -24.000000 16.000000 26.000000
+      vertex -24.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -24.000000 1.000000 76.000000
+      vertex 1.000000 1.000000 26.000000
+      vertex 1.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -24.000000 1.000000 26.000000
+      vertex 1.000000 1.000000 26.000000
+      vertex -24.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -24.000000 1.000000 26.000000
+      vertex -24.000000 1.000000 76.000000
+      vertex -24.000000 16.000000 26.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -24.000000 1.000000 76.000000
+      vertex -24.000000 16.000000 76.000000
+      vertex -24.000000 16.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 181.000000 16.000000 26.000000
+      vertex 51.000000 16.000000 76.000000
+      vertex 181.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 181.000000 16.000000 26.000000
+      vertex 51.000000 16.000000 26.000000
+      vertex 51.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 1.000000 16.000000 101.000000
+      vertex 11.000000 16.000000 76.000000
+      vertex 1.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 1.000000 16.000000 101.000000
+      vertex 16.000000 16.000000 76.000000
+      vertex 11.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 51.000000 16.000000 101.000000
+      vertex 51.000000 16.000000 76.000000
+      vertex 16.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 51.000000 16.000000 101.000000
+      vertex 16.000000 16.000000 76.000000
+      vertex 1.000000 16.000000 101.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 181.000000 1.000000 76.000000
+      vertex 181.000000 1.000000 26.000000
+      vertex 181.000000 16.000000 26.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 181.000000 16.000000 76.000000
+      vertex 181.000000 1.000000 76.000000
+      vertex 181.000000 16.000000 26.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 51.000000 1.000000 76.000000
+      vertex 181.000000 1.000000 26.000000
+      vertex 181.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 51.000000 1.000000 26.000000
+      vertex 181.000000 1.000000 26.000000
+      vertex 51.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 11.000000 1.000000 76.000000
+      vertex 1.000000 1.000000 101.000000
+      vertex 1.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 16.000000 1.000000 76.000000
+      vertex 1.000000 1.000000 101.000000
+      vertex 11.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 51.000000 1.000000 76.000000
+      vertex 51.000000 1.000000 101.000000
+      vertex 16.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 16.000000 1.000000 76.000000
+      vertex 51.000000 1.000000 101.000000
+      vertex 1.000000 1.000000 101.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 1.000000 16.000000 76.000000
+      vertex -24.000000 1.000000 76.000000
+      vertex 1.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 1.000000 16.000000 76.000000
+      vertex -24.000000 16.000000 76.000000
+      vertex -24.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 181.000000 16.000000 76.000000
+      vertex 51.000000 1.000000 76.000000
+      vertex 181.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 181.000000 16.000000 76.000000
+      vertex 51.000000 16.000000 76.000000
+      vertex 51.000000 1.000000 76.000000
+    endloop
+  endfacet
+  facet normal 1.000000 -0.000000 0.000000
+    outer loop
+      vertex 51.000000 1.000000 101.000000
+      vertex 51.000000 16.000000 76.000000
+      vertex 51.000000 16.000000 101.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 51.000000 1.000000 101.000000
+      vertex 51.000000 1.000000 76.000000
+      vertex 51.000000 16.000000 76.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 51.000000 1.000000 101.000000
+      vertex 1.000000 16.000000 101.000000
+      vertex 1.000000 1.000000 101.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 51.000000 16.000000 101.000000
+      vertex 1.000000 16.000000 101.000000
+      vertex 51.000000 1.000000 101.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 16.000000 76.000000
+      vertex 1.000000 1.000000 101.000000
+      vertex 1.000000 16.000000 101.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 76.000000
+      vertex 1.000000 1.000000 101.000000
+      vertex 1.000000 16.000000 76.000000
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingS2.stl b/apps/cpu/Multiphase/backup/FlowFocusingS2.stl
new file mode 100644
index 0000000000000000000000000000000000000000..f44acdfeb1595248f244f916f71c95cc1290a5b2
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingS2.stl differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingS2_Small.ast b/apps/cpu/Multiphase/backup/FlowFocusingS2_Small.ast
new file mode 100644
index 0000000000000000000000000000000000000000..0bbb5c2eae41623c5564009a4d59e434c3ff08d9
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/FlowFocusingS2_Small.ast
@@ -0,0 +1,366 @@
+solid Mesh
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 0.500000 9.500000 0.500000
+      vertex 15.500000 0.500000 0.500000
+      vertex 0.500000 0.500000 0.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 0.500000 9.500000 0.500000
+      vertex 15.500000 9.500000 0.500000
+      vertex 15.500000 0.500000 0.500000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 0.500000 0.500000
+      vertex 0.500000 9.500000 25.500000
+      vertex 0.500000 9.500000 0.500000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 0.500000 0.500000
+      vertex 0.500000 0.500000 25.500000
+      vertex 0.500000 9.500000 25.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 10.500000 9.500000 25.500000
+      vertex 0.500000 9.500000 0.500000
+      vertex 0.500000 9.500000 25.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 10.500000 9.500000 25.500000
+      vertex 15.500000 9.500000 0.500000
+      vertex 0.500000 9.500000 0.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 15.500000 9.500000 25.500000
+      vertex 15.500000 9.500000 0.500000
+      vertex 10.500000 9.500000 25.500000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 15.500000 9.500000 25.500000
+      vertex 15.500000 0.500000 0.500000
+      vertex 15.500000 9.500000 0.500000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 15.500000 0.500000 25.500000
+      vertex 15.500000 0.500000 0.500000
+      vertex 15.500000 9.500000 25.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 0.500000 0.500000 0.500000
+      vertex 10.500000 0.500000 25.500000
+      vertex 0.500000 0.500000 25.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 15.500000 0.500000 0.500000
+      vertex 10.500000 0.500000 25.500000
+      vertex 0.500000 0.500000 0.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 15.500000 0.500000 0.500000
+      vertex 15.500000 0.500000 25.500000
+      vertex 10.500000 0.500000 25.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -24.500000 0.500000 25.500000
+      vertex 0.500000 9.500000 25.500000
+      vertex 0.500000 0.500000 25.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -24.500000 9.500000 25.500000
+      vertex 0.500000 9.500000 25.500000
+      vertex -24.500000 0.500000 25.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 15.500000 9.500000 25.500000
+      vertex 10.500000 9.500000 40.500000
+      vertex 15.500000 9.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 15.500000 9.500000 25.500000
+      vertex 10.500000 9.500000 25.500000
+      vertex 10.500000 9.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 0.500000 9.500000 25.500000
+      vertex 0.500000 9.500000 40.500000
+      vertex 10.500000 9.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 10.500000 9.500000 25.500000
+      vertex 0.500000 9.500000 25.500000
+      vertex 10.500000 9.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 15.500000 0.500000 25.500000
+      vertex 180.500000 9.500000 25.500000
+      vertex 180.500000 0.500000 25.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 15.500000 9.500000 25.500000
+      vertex 180.500000 9.500000 25.500000
+      vertex 15.500000 0.500000 25.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 10.500000 0.500000 40.500000
+      vertex 15.500000 0.500000 25.500000
+      vertex 15.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 10.500000 0.500000 25.500000
+      vertex 15.500000 0.500000 25.500000
+      vertex 10.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 0.500000 0.500000 40.500000
+      vertex 0.500000 0.500000 25.500000
+      vertex 10.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 0.500000 0.500000 25.500000
+      vertex 10.500000 0.500000 25.500000
+      vertex 10.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 0.500000 9.500000 40.500000
+      vertex -24.500000 9.500000 25.500000
+      vertex -24.500000 9.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 0.500000 9.500000 25.500000
+      vertex -24.500000 9.500000 25.500000
+      vertex 0.500000 9.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -24.500000 0.500000 25.500000
+      vertex 0.500000 0.500000 40.500000
+      vertex -24.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -24.500000 0.500000 25.500000
+      vertex 0.500000 0.500000 25.500000
+      vertex 0.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -24.500000 0.500000 25.500000
+      vertex -24.500000 0.500000 40.500000
+      vertex -24.500000 9.500000 25.500000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -24.500000 0.500000 40.500000
+      vertex -24.500000 9.500000 40.500000
+      vertex -24.500000 9.500000 25.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 180.500000 9.500000 40.500000
+      vertex 15.500000 9.500000 25.500000
+      vertex 15.500000 9.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 180.500000 9.500000 25.500000
+      vertex 15.500000 9.500000 25.500000
+      vertex 180.500000 9.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 0.500000 9.500000 65.500000
+      vertex 10.500000 9.500000 40.500000
+      vertex 0.500000 9.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 15.500000 9.500000 65.500000
+      vertex 15.500000 9.500000 40.500000
+      vertex 10.500000 9.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 15.500000 9.500000 65.500000
+      vertex 10.500000 9.500000 40.500000
+      vertex 0.500000 9.500000 65.500000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.500000 0.500000 40.500000
+      vertex 180.500000 0.500000 25.500000
+      vertex 180.500000 9.500000 25.500000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.500000 9.500000 40.500000
+      vertex 180.500000 0.500000 40.500000
+      vertex 180.500000 9.500000 25.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 15.500000 0.500000 25.500000
+      vertex 180.500000 0.500000 40.500000
+      vertex 15.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 15.500000 0.500000 25.500000
+      vertex 180.500000 0.500000 25.500000
+      vertex 180.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 10.500000 0.500000 40.500000
+      vertex 0.500000 0.500000 65.500000
+      vertex 0.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 15.500000 0.500000 40.500000
+      vertex 15.500000 0.500000 65.500000
+      vertex 10.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 10.500000 0.500000 40.500000
+      vertex 15.500000 0.500000 65.500000
+      vertex 0.500000 0.500000 65.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 0.500000 9.500000 40.500000
+      vertex -24.500000 0.500000 40.500000
+      vertex 0.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 0.500000 9.500000 40.500000
+      vertex -24.500000 9.500000 40.500000
+      vertex -24.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 180.500000 9.500000 40.500000
+      vertex 15.500000 0.500000 40.500000
+      vertex 180.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 180.500000 9.500000 40.500000
+      vertex 15.500000 9.500000 40.500000
+      vertex 15.500000 0.500000 40.500000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 15.500000 0.500000 65.500000
+      vertex 15.500000 9.500000 40.500000
+      vertex 15.500000 9.500000 65.500000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 15.500000 0.500000 65.500000
+      vertex 15.500000 0.500000 40.500000
+      vertex 15.500000 9.500000 40.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 15.500000 0.500000 65.500000
+      vertex 0.500000 9.500000 65.500000
+      vertex 0.500000 0.500000 65.500000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 15.500000 9.500000 65.500000
+      vertex 0.500000 9.500000 65.500000
+      vertex 15.500000 0.500000 65.500000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 9.500000 40.500000
+      vertex 0.500000 0.500000 65.500000
+      vertex 0.500000 9.500000 65.500000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.500000 0.500000 40.500000
+      vertex 0.500000 0.500000 65.500000
+      vertex 0.500000 9.500000 40.500000
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingS2_Small.stl b/apps/cpu/Multiphase/backup/FlowFocusingS2_Small.stl
new file mode 100644
index 0000000000000000000000000000000000000000..012423f0625912bb76dcae9c5040a1dcad1d2bda
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingS2_Small.stl differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSL.ast b/apps/cpu/Multiphase/backup/FlowFocusingSL.ast
new file mode 100644
index 0000000000000000000000000000000000000000..0ee1706e4e8935e56b2b2e07f82cd308448016f8
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/FlowFocusingSL.ast
@@ -0,0 +1,3082 @@
+solid Mesh
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 10.036858 -6.895265 -29.000000
+      vertex 8.481877 10.381978 -29.000000
+      vertex 12.234818 5.216498 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 12.234818 5.216498 -29.000000
+      vertex 8.481877 10.381978 -29.000000
+      vertex 11.301386 7.154791 -29.000000
+    endloop
+  endfacet
+  facet normal -0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 6.686424 11.567146 -29.000000
+      vertex 8.481877 10.381978 -29.000000
+      vertex 4.708204 12.412678 -29.000000
+    endloop
+  endfacet
+  facet normal -0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 4.708204 12.412678 -29.000000
+      vertex 8.481877 10.381978 -29.000000
+      vertex 2.610799 12.891397 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -10.951692 -0.075672 -29.000000
+      vertex 8.481877 10.381978 -29.000000
+      vertex -9.811626 -4.206605 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -8.708204 -6.053423 -29.000000
+      vertex -3.716300 -10.034333 -29.000000
+      vertex -7.292752 -7.673538 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -9.811626 6.206605 -29.000000
+      vertex 8.481877 10.381978 -29.000000
+      vertex -10.951692 -0.075672 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -7.292752 -7.673538 -29.000000
+      vertex -3.716300 -10.034333 -29.000000
+      vertex -5.610764 -9.014879 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -9.811626 -4.206605 -29.000000
+      vertex 8.481877 10.381978 -29.000000
+      vertex 10.036858 -6.895265 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 2.610799 12.891397 -29.000000
+      vertex 8.481877 10.381978 -29.000000
+      vertex -9.811626 6.206605 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 8.481877 10.381978 -29.000000
+      vertex 10.036858 8.895265 -29.000000
+      vertex 11.301386 7.154791 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -10.567554 -2.192442 -29.000000
+      vertex -10.951692 -0.075672 -29.000000
+      vertex -9.811626 -4.206605 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -3.716300 -10.034333 -29.000000
+      vertex 0.461622 -10.987917 -29.000000
+      vertex -1.670251 -10.699135 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -8.708204 -6.053423 -29.000000
+      vertex 0.461622 -10.987917 -29.000000
+      vertex -3.716300 -10.034333 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 0.461622 -10.987917 -29.000000
+      vertex 4.708204 -10.412678 -29.000000
+      vertex 2.610799 -10.891397 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -10.567554 4.192442 -29.000000
+      vertex -9.811626 6.206605 -29.000000
+      vertex -10.951692 2.075672 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -10.951692 2.075672 -29.000000
+      vertex -9.811626 6.206605 -29.000000
+      vertex -10.951692 -0.075672 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -8.708204 8.053423 -29.000000
+      vertex -7.292752 9.673538 -29.000000
+      vertex -9.811626 6.206605 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -9.811626 -4.206605 -29.000000
+      vertex 10.036858 -6.895265 -29.000000
+      vertex -8.708204 -6.053423 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 4.708204 -10.412678 -29.000000
+      vertex 10.036858 -6.895265 -29.000000
+      vertex 6.686424 -9.567146 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 6.686424 -9.567146 -29.000000
+      vertex 10.036858 -6.895265 -29.000000
+      vertex 8.481877 -8.381978 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -8.708204 -6.053423 -29.000000
+      vertex 10.036858 -6.895265 -29.000000
+      vertex 0.461622 -10.987917 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 0.461622 -10.987917 -29.000000
+      vertex 10.036858 -6.895265 -29.000000
+      vertex 4.708204 -10.412678 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 10.036858 -6.895265 -29.000000
+      vertex 12.234818 -3.216498 -29.000000
+      vertex 11.301386 -5.154791 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -1.670251 12.699135 -29.000000
+      vertex 0.461622 12.987917 -29.000000
+      vertex -3.716300 12.034333 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -3.716300 12.034333 -29.000000
+      vertex 0.461622 12.987917 -29.000000
+      vertex -5.610764 11.014879 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -5.610764 11.014879 -29.000000
+      vertex 2.610799 12.891397 -29.000000
+      vertex -7.292752 9.673538 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -7.292752 9.673538 -29.000000
+      vertex 2.610799 12.891397 -29.000000
+      vertex -9.811626 6.206605 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 0.461622 12.987917 -29.000000
+      vertex 2.610799 12.891397 -29.000000
+      vertex -5.610764 11.014879 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 12.807155 -1.142683 -29.000000
+      vertex 12.807155 3.142683 -29.000000
+      vertex 13.000000 1.000000 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 12.234818 -3.216498 -29.000000
+      vertex 12.234818 5.216498 -29.000000
+      vertex 12.807155 -1.142683 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 10.036858 -6.895265 -29.000000
+      vertex 12.234818 5.216498 -29.000000
+      vertex 12.234818 -3.216498 -29.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 12.807155 -1.142683 -29.000000
+      vertex 12.234818 5.216498 -29.000000
+      vertex 12.807155 3.142683 -29.000000
+    endloop
+  endfacet
+  facet normal 0.995974 0.089639 -0.000783
+    outer loop
+      vertex 12.906315 2.496555 23.141226
+      vertex 13.000000 1.000000 -29.000000
+      vertex 12.807155 3.142683 -29.000000
+    endloop
+  endfacet
+  facet normal 0.998046 0.062478 0.000000
+    outer loop
+      vertex 12.906315 2.496555 23.141226
+      vertex 13.000000 1.000000 23.000000
+      vertex 13.000000 1.000000 -29.000000
+    endloop
+  endfacet
+  facet normal 0.998997 0.044772 0.000000
+    outer loop
+      vertex 13.000000 1.000000 91.000000
+      vertex 13.000000 1.000000 39.000000
+      vertex 12.951891 2.073451 38.927654
+    endloop
+  endfacet
+  facet normal 0.984343 0.176264 0.000312
+    outer loop
+      vertex 12.685336 3.730003 23.480221
+      vertex 12.906315 2.496555 23.141226
+      vertex 12.807155 3.142683 -29.000000
+    endloop
+  endfacet
+  facet normal 0.963963 0.266037 -0.000740
+    outer loop
+      vertex 12.234818 5.216498 -29.000000
+      vertex 12.685336 3.730003 23.480221
+      vertex 12.807155 3.142683 -29.000000
+    endloop
+  endfacet
+  facet normal 0.962801 0.270210 -0.000612
+    outer loop
+      vertex 12.401385 4.742783 23.929527
+      vertex 12.685336 3.730003 23.480221
+      vertex 12.234818 5.216498 -29.000000
+    endloop
+  endfacet
+  facet normal 0.995974 0.089639 0.000928
+    outer loop
+      vertex 12.807155 3.142683 91.000000
+      vertex 13.000000 1.000000 91.000000
+      vertex 12.951891 2.073451 38.927654
+    endloop
+  endfacet
+  facet normal 0.973891 0.227018 -0.000135
+    outer loop
+      vertex 12.807155 3.142683 91.000000
+      vertex 12.829484 3.015767 38.741879
+      vertex 12.501177 4.423876 38.230289
+    endloop
+  endfacet
+  facet normal 0.991665 0.128839 0.000111
+    outer loop
+      vertex 12.807155 3.142683 91.000000
+      vertex 12.951891 2.073451 38.927654
+      vertex 12.829484 3.015767 38.741879
+    endloop
+  endfacet
+  facet normal 0.933574 0.358383 0.000270
+    outer loop
+      vertex 11.975570 5.851481 24.638937
+      vertex 12.401385 4.742783 23.929527
+      vertex 12.234818 5.216498 -29.000000
+    endloop
+  endfacet
+  facet normal 0.900969 0.433883 -0.000782
+    outer loop
+      vertex 11.301386 7.154791 -29.000000
+      vertex 11.975570 5.851481 24.638937
+      vertex 12.234818 5.216498 -29.000000
+    endloop
+  endfacet
+  facet normal 0.963963 0.266037 0.000870
+    outer loop
+      vertex 12.234818 5.216498 91.000000
+      vertex 12.807155 3.142683 91.000000
+      vertex 12.501177 4.423876 38.230289
+    endloop
+  endfacet
+  facet normal 0.938259 0.345932 -0.000460
+    outer loop
+      vertex 12.234818 5.216498 91.000000
+      vertex 12.501177 4.423876 38.230289
+      vertex 11.968547 5.867337 37.348938
+    endloop
+  endfacet
+  facet normal 0.894623 0.446821 -0.000388
+    outer loop
+      vertex 11.475355 6.853796 25.547195
+      vertex 11.975570 5.851481 24.638937
+      vertex 11.301386 7.154791 -29.000000
+    endloop
+  endfacet
+  facet normal 0.853458 0.521161 0.000154
+    outer loop
+      vertex 10.990158 7.648063 26.549915
+      vertex 11.475355 6.853796 25.547195
+      vertex 11.301386 7.154791 -29.000000
+    endloop
+  endfacet
+  facet normal 0.809017 0.587785 -0.000803
+    outer loop
+      vertex 10.553408 8.261708 27.643276
+      vertex 11.301386 7.154791 -29.000000
+      vertex 10.036858 8.895265 -29.000000
+    endloop
+  endfacet
+  facet normal 0.814217 0.580561 -0.000593
+    outer loop
+      vertex 10.553408 8.261708 27.643276
+      vertex 10.990158 7.648063 26.549915
+      vertex 11.301386 7.154791 -29.000000
+    endloop
+  endfacet
+  facet normal 0.845496 0.533982 -0.000125
+    outer loop
+      vertex 11.301386 7.154791 91.000000
+      vertex 11.405221 6.977572 36.316826
+      vertex 10.866963 7.829570 35.166172
+    endloop
+  endfacet
+  facet normal 0.891689 0.452648 0.000226
+    outer loop
+      vertex 11.301386 7.154791 91.000000
+      vertex 11.968547 5.867337 37.348938
+      vertex 11.405221 6.977572 36.316826
+    endloop
+  endfacet
+  facet normal 0.900969 0.433883 0.000792
+    outer loop
+      vertex 11.301386 7.154791 91.000000
+      vertex 12.234818 5.216498 91.000000
+      vertex 11.968547 5.867337 37.348938
+    endloop
+  endfacet
+  facet normal 0.781554 0.623838 -0.000150
+    outer loop
+      vertex 10.203491 8.700374 28.831072
+      vertex 10.553408 8.261708 27.643276
+      vertex 10.036858 8.895265 -29.000000
+    endloop
+  endfacet
+  facet normal 0.759095 0.650980 0.000007
+    outer loop
+      vertex 10.013048 8.922435 29.888680
+      vertex 10.203491 8.700374 28.831072
+      vertex 10.036858 8.895265 -29.000000
+    endloop
+  endfacet
+  facet normal 0.748201 0.663472 -0.000004
+    outer loop
+      vertex 9.944272 9.000000 31.000000
+      vertex 10.013048 8.922435 29.888680
+      vertex 10.036858 8.895265 -29.000000
+    endloop
+  endfacet
+  facet normal 0.691063 0.722795 -0.000195
+    outer loop
+      vertex 8.481877 10.381978 -29.000000
+      vertex 9.944272 9.000000 31.000000
+      vertex 10.036858 8.895265 -29.000000
+    endloop
+  endfacet
+  facet normal 0.809017 0.587785 0.000809
+    outer loop
+      vertex 10.036858 8.895265 91.000000
+      vertex 11.301386 7.154791 91.000000
+      vertex 10.866963 7.829570 35.166172
+    endloop
+  endfacet
+  facet normal 0.750661 0.660687 -0.000005
+    outer loop
+      vertex 10.036858 8.895265 91.000000
+      vertex 10.070409 8.856697 32.507420
+      vertex 9.944272 9.000000 31.000000
+    endloop
+  endfacet
+  facet normal 0.769853 0.638221 0.000021
+    outer loop
+      vertex 10.036858 8.895265 91.000000
+      vertex 10.402563 8.455991 33.899689
+      vertex 10.070409 8.856697 32.507420
+    endloop
+  endfacet
+  facet normal 0.802784 0.596269 0.000554
+    outer loop
+      vertex 10.036858 8.895265 91.000000
+      vertex 10.866963 7.829570 35.166172
+      vertex 10.402563 8.455991 33.899689
+    endloop
+  endfacet
+  facet normal 0.691063 0.722795 0.000195
+    outer loop
+      vertex 8.481877 10.381978 91.000000
+      vertex 10.036858 8.895265 91.000000
+      vertex 9.944272 9.000000 31.000000
+    endloop
+  endfacet
+  facet normal 0.686841 0.726808 0.000000
+    outer loop
+      vertex 8.481877 10.381978 91.000000
+      vertex 9.944272 9.000000 31.000000
+      vertex 8.481877 10.381978 -29.000000
+    endloop
+  endfacet
+  facet normal 0.550897 0.834573 0.000000
+    outer loop
+      vertex 8.481877 10.381978 91.000000
+      vertex 8.481877 10.381978 -29.000000
+      vertex 6.686424 11.567146 -29.000000
+    endloop
+  endfacet
+  facet normal 0.550897 0.834573 0.000000
+    outer loop
+      vertex 6.686424 11.567146 91.000000
+      vertex 8.481877 10.381978 91.000000
+      vertex 6.686424 11.567146 -29.000000
+    endloop
+  endfacet
+  facet normal 0.393025 0.919528 0.000000
+    outer loop
+      vertex 6.686424 11.567146 91.000000
+      vertex 6.686424 11.567146 -29.000000
+      vertex 4.708204 12.412678 -29.000000
+    endloop
+  endfacet
+  facet normal 0.393025 0.919528 0.000000
+    outer loop
+      vertex 4.708204 12.412678 91.000000
+      vertex 6.686424 11.567146 91.000000
+      vertex 4.708204 12.412678 -29.000000
+    endloop
+  endfacet
+  facet normal 0.222521 0.974928 0.000000
+    outer loop
+      vertex 4.708204 12.412678 91.000000
+      vertex 4.708204 12.412678 -29.000000
+      vertex 2.610799 12.891397 -29.000000
+    endloop
+  endfacet
+  facet normal 0.222521 0.974928 0.000000
+    outer loop
+      vertex 2.610799 12.891397 91.000000
+      vertex 4.708204 12.412678 91.000000
+      vertex 2.610799 12.891397 -29.000000
+    endloop
+  endfacet
+  facet normal 0.044865 0.998993 0.000000
+    outer loop
+      vertex 2.610799 12.891397 91.000000
+      vertex 2.610799 12.891397 -29.000000
+      vertex 0.461622 12.987917 -29.000000
+    endloop
+  endfacet
+  facet normal -0.134233 0.990950 0.000000
+    outer loop
+      vertex 0.461622 12.987917 91.000000
+      vertex 0.461622 12.987917 -29.000000
+      vertex -1.670251 12.699135 -29.000000
+    endloop
+  endfacet
+  facet normal 0.044865 0.998993 0.000000
+    outer loop
+      vertex 0.461622 12.987917 91.000000
+      vertex 2.610799 12.891397 91.000000
+      vertex 0.461622 12.987917 -29.000000
+    endloop
+  endfacet
+  facet normal -0.309017 0.951057 0.000000
+    outer loop
+      vertex -1.670251 12.699135 91.000000
+      vertex -1.670251 12.699135 -29.000000
+      vertex -3.716300 12.034333 -29.000000
+    endloop
+  endfacet
+  facet normal -0.134233 0.990950 0.000000
+    outer loop
+      vertex -1.670251 12.699135 91.000000
+      vertex 0.461622 12.987917 91.000000
+      vertex -1.670251 12.699135 -29.000000
+    endloop
+  endfacet
+  facet normal -0.309017 0.951057 0.000000
+    outer loop
+      vertex -3.716300 12.034333 91.000000
+      vertex -1.670251 12.699135 91.000000
+      vertex -3.716300 12.034333 -29.000000
+    endloop
+  endfacet
+  facet normal -0.473869 0.880596 0.000041
+    outer loop
+      vertex -5.633250 11.000000 31.000000
+      vertex -3.716300 12.034333 -29.000000
+      vertex -5.610764 11.014879 -29.000000
+    endloop
+  endfacet
+  facet normal -0.474858 0.880063 0.000000
+    outer loop
+      vertex -5.633250 11.000000 31.000000
+      vertex -3.716300 12.034333 91.000000
+      vertex -3.716300 12.034333 -29.000000
+    endloop
+  endfacet
+  facet normal -0.557098 0.830446 -0.000003
+    outer loop
+      vertex -5.737499 10.930061 29.819370
+      vertex -5.633250 11.000000 31.000000
+      vertex -5.610764 11.014879 -29.000000
+    endloop
+  endfacet
+  facet normal -0.572844 0.819664 -0.000052
+    outer loop
+      vertex -6.012732 10.737638 28.724388
+      vertex -5.737499 10.930061 29.819370
+      vertex -5.610764 11.014879 -29.000000
+    endloop
+  endfacet
+  facet normal -0.623490 0.781831 -0.000854
+    outer loop
+      vertex -6.470624 10.390942 27.563400
+      vertex -5.610764 11.014879 -29.000000
+      vertex -7.292752 9.673538 -29.000000
+    endloop
+  endfacet
+  facet normal -0.603052 0.797702 -0.000368
+    outer loop
+      vertex -6.470624 10.390942 27.563400
+      vertex -6.012732 10.737638 28.724388
+      vertex -5.610764 11.014879 -29.000000
+    endloop
+  endfacet
+  facet normal -0.557937 0.829883 0.000003
+    outer loop
+      vertex -5.610764 11.014879 91.000000
+      vertex -5.633250 11.000000 31.000000
+      vertex -5.757563 10.916418 32.290215
+    endloop
+  endfacet
+  facet normal -0.576477 0.817113 0.000071
+    outer loop
+      vertex -5.610764 11.014879 91.000000
+      vertex -5.757563 10.916418 32.290215
+      vertex -6.080200 10.688693 33.475727
+    endloop
+  endfacet
+  facet normal -0.608142 0.793828 0.000462
+    outer loop
+      vertex -5.610764 11.014879 91.000000
+      vertex -6.080200 10.688693 33.475727
+      vertex -6.528029 10.344987 34.559666
+    endloop
+  endfacet
+  facet normal -0.473869 0.880596 -0.000041
+    outer loop
+      vertex -5.610764 11.014879 91.000000
+      vertex -3.716300 12.034333 91.000000
+      vertex -5.633250 11.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.659510 0.751695 0.000052
+    outer loop
+      vertex -7.338006 9.630043 25.948034
+      vertex -6.470624 10.390942 27.563400
+      vertex -7.292752 9.673538 -29.000000
+    endloop
+  endfacet
+  facet normal -0.753071 0.657939 -0.000691
+    outer loop
+      vertex -8.372674 8.493528 24.378292
+      vertex -7.292752 9.673538 -29.000000
+      vertex -8.708204 8.053423 -29.000000
+    endloop
+  endfacet
+  facet normal -0.739411 0.673255 -0.000076
+    outer loop
+      vertex -8.372674 8.493528 24.378292
+      vertex -7.338006 9.630043 25.948034
+      vertex -7.292752 9.673538 -29.000000
+    endloop
+  endfacet
+  facet normal -0.657479 0.753473 0.000055
+    outer loop
+      vertex -7.292752 9.673538 91.000000
+      vertex -6.528029 10.344987 34.559666
+      vertex -7.240622 9.723082 35.889565
+    endloop
+  endfacet
+  facet normal -0.623490 0.781831 0.000853
+    outer loop
+      vertex -7.292752 9.673538 91.000000
+      vertex -5.610764 11.014879 91.000000
+      vertex -6.528029 10.344987 34.559666
+    endloop
+  endfacet
+  facet normal -0.732440 0.680831 -0.000081
+    outer loop
+      vertex -8.299619 8.584002 37.517891
+      vertex -7.292752 9.673538 91.000000
+      vertex -7.240622 9.723082 35.889565
+    endloop
+  endfacet
+  facet normal -0.858449 0.512899 -0.000927
+    outer loop
+      vertex -9.295414 7.164775 23.126276
+      vertex -8.708204 8.053423 -29.000000
+      vertex -9.811626 6.206605 -29.000000
+    endloop
+  endfacet
+  facet normal -0.821576 0.570099 0.000464
+    outer loop
+      vertex -9.295414 7.164775 23.126276
+      vertex -8.372674 8.493528 24.378292
+      vertex -8.708204 8.053423 -29.000000
+    endloop
+  endfacet
+  facet normal -0.816755 0.576984 -0.000516
+    outer loop
+      vertex -8.708204 8.053423 91.000000
+      vertex -8.299619 8.584002 37.517891
+      vertex -9.250660 7.238907 38.815117
+    endloop
+  endfacet
+  facet normal -0.753071 0.657939 0.000774
+    outer loop
+      vertex -8.708204 8.053423 91.000000
+      vertex -7.292752 9.673538 91.000000
+      vertex -8.299619 8.584002 37.517891
+    endloop
+  endfacet
+  facet normal -0.888008 0.459827 0.000342
+    outer loop
+      vertex -9.974246 5.854475 22.257341
+      vertex -9.295414 7.164775 23.126276
+      vertex -9.811626 6.206605 -29.000000
+    endloop
+  endfacet
+  facet normal -0.936235 0.351375 -0.000665
+    outer loop
+      vertex -10.429211 4.656930 21.692644
+      vertex -9.811626 6.206605 -29.000000
+      vertex -10.567554 4.192442 -29.000000
+    endloop
+  endfacet
+  facet normal -0.934728 0.355364 -0.000524
+    outer loop
+      vertex -10.429211 4.656930 21.692644
+      vertex -9.974246 5.854475 22.257341
+      vertex -9.811626 6.206605 -29.000000
+    endloop
+  endfacet
+  facet normal -0.883513 0.468407 -0.000232
+    outer loop
+      vertex -9.811626 6.206605 91.000000
+      vertex -9.250660 7.238907 38.815117
+      vertex -9.915038 5.986175 39.668221
+    endloop
+  endfacet
+  facet normal -0.858448 0.512899 0.000918
+    outer loop
+      vertex -9.811626 6.206605 91.000000
+      vertex -8.708204 8.053423 91.000000
+      vertex -9.250660 7.238907 38.815117
+    endloop
+  endfacet
+  facet normal -0.983929 0.178557 -0.000960
+    outer loop
+      vertex -10.800443 3.179347 21.240366
+      vertex -10.567554 4.192442 -29.000000
+      vertex -10.951692 2.075672 -29.000000
+    endloop
+  endfacet
+  facet normal -0.969888 0.243550 0.000415
+    outer loop
+      vertex -10.800443 3.179347 21.240366
+      vertex -10.429211 4.656930 21.692644
+      vertex -10.567554 4.192442 -29.000000
+    endloop
+  endfacet
+  facet normal -0.937600 0.347714 0.000232
+    outer loop
+      vertex -10.567554 4.192442 91.000000
+      vertex -9.915038 5.986175 39.668221
+      vertex -10.527491 4.334210 40.427780
+    endloop
+  endfacet
+  facet normal -0.936235 0.351375 0.000377
+    outer loop
+      vertex -10.567554 4.192442 91.000000
+      vertex -9.811626 6.206605 91.000000
+      vertex -9.915038 5.986175 39.668221
+    endloop
+  endfacet
+  facet normal -0.975706 0.219084 -0.000159
+    outer loop
+      vertex -10.846192 2.915130 40.814899
+      vertex -10.567554 4.192442 91.000000
+      vertex -10.527491 4.334210 40.427780
+    endloop
+  endfacet
+  facet normal -0.993453 0.114243 0.000481
+    outer loop
+      vertex -10.987032 1.557722 21.015564
+      vertex -10.800443 3.179347 21.240366
+      vertex -10.951692 2.075672 -29.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000707
+    outer loop
+      vertex -10.951692 -0.075672 -29.000000
+      vertex -10.987032 1.557722 21.015564
+      vertex -10.951692 2.075672 -29.000000
+    endloop
+  endfacet
+  facet normal -0.996104 0.088185 -0.000619
+    outer loop
+      vertex -10.951692 2.075672 91.000000
+      vertex -10.846192 2.915130 40.814899
+      vertex -10.998376 1.197410 40.998051
+    endloop
+  endfacet
+  facet normal -0.983929 0.178557 0.000918
+    outer loop
+      vertex -10.951692 2.075672 91.000000
+      vertex -10.567554 4.192442 91.000000
+      vertex -10.846192 2.915130 40.814899
+    endloop
+  endfacet
+  facet normal -0.999767 -0.021564 -0.000002
+    outer loop
+      vertex -10.951837 -0.074060 21.057848
+      vertex -10.987032 1.557722 21.015564
+      vertex -10.951692 -0.075672 -29.000000
+    endloop
+  endfacet
+  facet normal -0.987838 -0.155489 0.000002
+    outer loop
+      vertex -10.703868 -1.649430 21.357359
+      vertex -10.951837 -0.074060 21.057848
+      vertex -10.951692 -0.075672 -29.000000
+    endloop
+  endfacet
+  facet normal -0.983929 -0.178557 -0.000738
+    outer loop
+      vertex -10.703868 -1.649430 21.357359
+      vertex -10.951692 -0.075672 -29.000000
+      vertex -10.567554 -2.192442 -29.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000934
+    outer loop
+      vertex -10.951692 -0.075672 91.000000
+      vertex -10.951692 2.075672 91.000000
+      vertex -10.998376 1.197410 40.998051
+    endloop
+  endfacet
+  facet normal -0.998486 -0.055007 -0.000468
+    outer loop
+      vertex -10.951692 -0.075672 91.000000
+      vertex -10.998376 1.197410 40.998051
+      vertex -10.903988 -0.514951 40.884579
+    endloop
+  endfacet
+  facet normal -0.984504 -0.175362 0.000600
+    outer loop
+      vertex -10.695628 -1.685570 40.632637
+      vertex -10.951692 -0.075672 91.000000
+      vertex -10.903988 -0.514951 40.884579
+    endloop
+  endfacet
+  facet normal -0.958646 -0.284602 0.000474
+    outer loop
+      vertex -10.252209 -3.169867 21.910873
+      vertex -10.703868 -1.649430 21.357359
+      vertex -10.567554 -2.192442 -29.000000
+    endloop
+  endfacet
+  facet normal -0.936234 -0.351375 -0.000947
+    outer loop
+      vertex -10.252209 -3.169867 21.910873
+      vertex -10.567554 -2.192442 -29.000000
+      vertex -9.811626 -4.206605 -29.000000
+    endloop
+  endfacet
+  facet normal -0.983929 -0.178557 0.000705
+    outer loop
+      vertex -10.567554 -2.192442 91.000000
+      vertex -10.951692 -0.075672 91.000000
+      vertex -10.695628 -1.685570 40.632637
+    endloop
+  endfacet
+  facet normal -0.961368 -0.275265 -0.000326
+    outer loop
+      vertex -10.567554 -2.192442 91.000000
+      vertex -10.695628 -1.685570 40.632637
+      vertex -10.343766 -2.913946 40.202229
+    endloop
+  endfacet
+  facet normal -0.913616 -0.406579 0.000373
+    outer loop
+      vertex -9.627810 -4.572220 22.696365
+      vertex -10.252209 -3.169867 21.910873
+      vertex -9.811626 -4.206605 -29.000000
+    endloop
+  endfacet
+  facet normal -0.858449 -0.512899 -0.000575
+    outer loop
+      vertex -8.708204 -6.053423 -29.000000
+      vertex -9.627810 -4.572220 22.696365
+      vertex -9.811626 -4.206605 -29.000000
+    endloop
+  endfacet
+  facet normal -0.927206 -0.374552 0.000182
+    outer loop
+      vertex -9.811626 -4.206605 91.000000
+      vertex -10.343766 -2.913946 40.202229
+      vertex -9.880333 -4.061458 39.624477
+    endloop
+  endfacet
+  facet normal -0.879853 -0.475247 -0.000166
+    outer loop
+      vertex -9.811626 -4.206605 91.000000
+      vertex -9.880333 -4.061458 39.624477
+      vertex -9.197070 -5.326117 38.744690
+    endloop
+  endfacet
+  facet normal -0.936234 -0.351375 0.000866
+    outer loop
+      vertex -9.811626 -4.206605 91.000000
+      vertex -10.567554 -2.192442 91.000000
+      vertex -10.343766 -2.913946 40.202229
+    endloop
+  endfacet
+  facet normal -0.753071 -0.657939 -0.000758
+    outer loop
+      vertex -7.758466 -7.203003 25.280670
+      vertex -8.708204 -6.053423 -29.000000
+      vertex -7.292752 -7.673538 -29.000000
+    endloop
+  endfacet
+  facet normal -0.858449 -0.512899 0.000892
+    outer loop
+      vertex -8.708204 -6.053423 91.000000
+      vertex -9.811626 -4.206605 91.000000
+      vertex -9.197070 -5.326117 38.744690
+    endloop
+  endfacet
+  facet normal -0.696717 -0.717346 0.000241
+    outer loop
+      vertex -6.938873 -7.998572 26.638153
+      vertex -7.758466 -7.203003 25.280670
+      vertex -7.292752 -7.673538 -29.000000
+    endloop
+  endfacet
+  facet normal -0.623490 -0.781831 -0.000809
+    outer loop
+      vertex -6.298790 -8.525107 27.954950
+      vertex -7.292752 -7.673538 -29.000000
+      vertex -5.610764 -9.014879 -29.000000
+    endloop
+  endfacet
+  facet normal -0.634695 -0.772762 -0.000478
+    outer loop
+      vertex -6.298790 -8.525107 27.954950
+      vertex -6.938873 -7.998572 26.638153
+      vertex -7.292752 -7.673538 -29.000000
+    endloop
+  endfacet
+  facet normal -0.650332 -0.759650 0.000094
+    outer loop
+      vertex -7.292752 -7.673538 91.000000
+      vertex -7.218597 -7.743835 35.852356
+      vertex -6.375163 -8.466096 34.223824
+    endloop
+  endfacet
+  facet normal -0.753071 -0.657939 0.000812
+    outer loop
+      vertex -7.292752 -7.673538 91.000000
+      vertex -8.708204 -6.053423 91.000000
+      vertex -8.256754 -6.636262 37.456585
+    endloop
+  endfacet
+  facet normal -0.592141 -0.805834 -0.000224
+    outer loop
+      vertex -5.919753 -8.803928 29.029472
+      vertex -6.298790 -8.525107 27.954950
+      vertex -5.610764 -9.014879 -29.000000
+    endloop
+  endfacet
+  facet normal -0.566671 -0.823944 -0.000022
+    outer loop
+      vertex -5.681127 -8.968076 30.201591
+      vertex -5.919753 -8.803928 29.029472
+      vertex -5.610764 -9.014879 -29.000000
+    endloop
+  endfacet
+  facet normal -0.555733 -0.831361 -0.000003
+    outer loop
+      vertex -5.659541 -8.982511 31.591177
+      vertex -5.681127 -8.968076 30.201591
+      vertex -5.610764 -9.014879 -29.000000
+    endloop
+  endfacet
+  facet normal -0.473869 -0.880596 0.000089
+    outer loop
+      vertex -3.716300 -10.034333 -29.000000
+      vertex -5.659541 -8.982511 31.591177
+      vertex -5.610764 -9.014879 -29.000000
+    endloop
+  endfacet
+  facet normal -0.596199 -0.802837 0.000267
+    outer loop
+      vertex -5.610764 -9.014879 91.000000
+      vertex -6.375163 -8.466096 34.223824
+      vertex -5.941191 -8.788762 33.044537
+    endloop
+  endfacet
+  facet normal -0.566698 -0.823926 0.000016
+    outer loop
+      vertex -5.610764 -9.014879 91.000000
+      vertex -5.941191 -8.788762 33.044537
+      vertex -5.659541 -8.982511 31.591177
+    endloop
+  endfacet
+  facet normal -0.623490 -0.781831 0.000837
+    outer loop
+      vertex -5.610764 -9.014879 91.000000
+      vertex -7.292752 -7.673538 91.000000
+      vertex -6.375163 -8.466096 34.223824
+    endloop
+  endfacet
+  facet normal -0.473869 -0.880596 -0.000091
+    outer loop
+      vertex -3.716300 -10.034333 91.000000
+      vertex -5.610764 -9.014879 91.000000
+      vertex -5.659541 -8.982511 31.591177
+    endloop
+  endfacet
+  facet normal -0.476015 -0.879437 -0.000000
+    outer loop
+      vertex -3.716300 -10.034333 91.000000
+      vertex -5.659541 -8.982511 31.591177
+      vertex -3.716300 -10.034333 -29.000000
+    endloop
+  endfacet
+  facet normal -0.309017 -0.951057 -0.000000
+    outer loop
+      vertex -1.670251 -10.699135 91.000000
+      vertex -3.716300 -10.034333 -29.000000
+      vertex -1.670251 -10.699135 -29.000000
+    endloop
+  endfacet
+  facet normal -0.309017 -0.951057 0.000000
+    outer loop
+      vertex -1.670251 -10.699135 91.000000
+      vertex -3.716300 -10.034333 91.000000
+      vertex -3.716300 -10.034333 -29.000000
+    endloop
+  endfacet
+  facet normal -0.134233 -0.990950 -0.000000
+    outer loop
+      vertex 0.461622 -10.987917 91.000000
+      vertex -1.670251 -10.699135 -29.000000
+      vertex 0.461622 -10.987917 -29.000000
+    endloop
+  endfacet
+  facet normal -0.134233 -0.990950 0.000000
+    outer loop
+      vertex 0.461622 -10.987917 91.000000
+      vertex -1.670251 -10.699135 91.000000
+      vertex -1.670251 -10.699135 -29.000000
+    endloop
+  endfacet
+  facet normal 0.044865 -0.998993 0.000000
+    outer loop
+      vertex 2.610799 -10.891397 91.000000
+      vertex 0.461622 -10.987917 -29.000000
+      vertex 2.610799 -10.891397 -29.000000
+    endloop
+  endfacet
+  facet normal 0.044865 -0.998993 0.000000
+    outer loop
+      vertex 2.610799 -10.891397 91.000000
+      vertex 0.461622 -10.987917 91.000000
+      vertex 0.461622 -10.987917 -29.000000
+    endloop
+  endfacet
+  facet normal 0.222521 -0.974928 0.000000
+    outer loop
+      vertex 4.708204 -10.412678 91.000000
+      vertex 2.610799 -10.891397 -29.000000
+      vertex 4.708204 -10.412678 -29.000000
+    endloop
+  endfacet
+  facet normal 0.222521 -0.974928 0.000000
+    outer loop
+      vertex 4.708204 -10.412678 91.000000
+      vertex 2.610799 -10.891397 91.000000
+      vertex 2.610799 -10.891397 -29.000000
+    endloop
+  endfacet
+  facet normal 0.393025 -0.919528 0.000000
+    outer loop
+      vertex 6.686424 -9.567146 91.000000
+      vertex 4.708204 -10.412678 -29.000000
+      vertex 6.686424 -9.567146 -29.000000
+    endloop
+  endfacet
+  facet normal 0.393025 -0.919528 0.000000
+    outer loop
+      vertex 6.686424 -9.567146 91.000000
+      vertex 4.708204 -10.412678 91.000000
+      vertex 4.708204 -10.412678 -29.000000
+    endloop
+  endfacet
+  facet normal 0.550897 -0.834573 0.000000
+    outer loop
+      vertex 8.481877 -8.381978 91.000000
+      vertex 6.686424 -9.567146 -29.000000
+      vertex 8.481877 -8.381978 -29.000000
+    endloop
+  endfacet
+  facet normal 0.550897 -0.834573 0.000000
+    outer loop
+      vertex 8.481877 -8.381978 91.000000
+      vertex 6.686424 -9.567146 91.000000
+      vertex 6.686424 -9.567146 -29.000000
+    endloop
+  endfacet
+  facet normal 0.687426 -0.726254 0.000000
+    outer loop
+      vertex 9.957150 -6.985579 30.519876
+      vertex 8.481877 -8.381978 91.000000
+      vertex 8.481877 -8.381978 -29.000000
+    endloop
+  endfacet
+  facet normal 0.691063 -0.722795 -0.000171
+    outer loop
+      vertex 9.957150 -6.985579 30.519876
+      vertex 8.481877 -8.381978 -29.000000
+      vertex 10.036858 -6.895265 -29.000000
+    endloop
+  endfacet
+  facet normal 0.753451 -0.657504 0.000011
+    outer loop
+      vertex 10.123698 -6.794750 29.199480
+      vertex 9.957150 -6.985579 30.519876
+      vertex 10.036858 -6.895265 -29.000000
+    endloop
+  endfacet
+  facet normal 0.773617 -0.633653 -0.000060
+    outer loop
+      vertex 10.441307 -6.406870 27.977041
+      vertex 10.123698 -6.794750 29.199480
+      vertex 10.036858 -6.895265 -29.000000
+    endloop
+  endfacet
+  facet normal 0.803962 -0.594680 -0.000609
+    outer loop
+      vertex 10.859378 -5.840517 26.851830
+      vertex 10.441307 -6.406870 27.977041
+      vertex 10.036858 -6.895265 -29.000000
+    endloop
+  endfacet
+  facet normal 0.809017 -0.587785 -0.000814
+    outer loop
+      vertex 10.859378 -5.840517 26.851830
+      vertex 10.036858 -6.895265 -29.000000
+      vertex 11.301386 -5.154791 -29.000000
+    endloop
+  endfacet
+  facet normal 0.691063 -0.722795 0.000169
+    outer loop
+      vertex 10.036858 -6.895265 91.000000
+      vertex 8.481877 -8.381978 91.000000
+      vertex 9.957150 -6.985579 30.519876
+    endloop
+  endfacet
+  facet normal 0.781554 -0.623838 0.000150
+    outer loop
+      vertex 10.036858 -6.895265 91.000000
+      vertex 10.203491 -6.700374 33.168926
+      vertex 10.553408 -6.261708 34.356724
+    endloop
+  endfacet
+  facet normal 0.758054 -0.652192 -0.000014
+    outer loop
+      vertex 10.036858 -6.895265 91.000000
+      vertex 9.987243 -6.951696 31.877798
+      vertex 10.203491 -6.700374 33.168926
+    endloop
+  endfacet
+  facet normal 0.747557 -0.664197 0.000007
+    outer loop
+      vertex 10.036858 -6.895265 91.000000
+      vertex 9.957150 -6.985579 30.519876
+      vertex 9.987243 -6.951696 31.877798
+    endloop
+  endfacet
+  facet normal 0.842075 -0.539361 0.000042
+    outer loop
+      vertex 11.336068 -5.096367 25.819815
+      vertex 10.859378 -5.840517 26.851830
+      vertex 11.301386 -5.154791 -29.000000
+    endloop
+  endfacet
+  facet normal 0.883071 -0.469240 -0.000059
+    outer loop
+      vertex 11.837208 -4.153147 24.880762
+      vertex 11.336068 -5.096367 25.819815
+      vertex 11.301386 -5.154791 -29.000000
+    endloop
+  endfacet
+  facet normal 0.900969 -0.433883 -0.000894
+    outer loop
+      vertex 11.837208 -4.153147 24.880762
+      vertex 11.301386 -5.154791 -29.000000
+      vertex 12.234818 -3.216498 -29.000000
+    endloop
+  endfacet
+  facet normal 0.853458 -0.521161 -0.000154
+    outer loop
+      vertex 11.301386 -5.154791 91.000000
+      vertex 10.990158 -5.648063 35.450085
+      vertex 11.475355 -4.853796 36.452805
+    endloop
+  endfacet
+  facet normal 0.814216 -0.580561 0.000593
+    outer loop
+      vertex 11.301386 -5.154791 91.000000
+      vertex 10.553408 -6.261708 34.356724
+      vertex 10.990158 -5.648063 35.450085
+    endloop
+  endfacet
+  facet normal 0.809017 -0.587785 0.000803
+    outer loop
+      vertex 11.301386 -5.154791 91.000000
+      vertex 10.036858 -6.895265 91.000000
+      vertex 10.553408 -6.261708 34.356724
+    endloop
+  endfacet
+  facet normal 0.894623 -0.446821 0.000388
+    outer loop
+      vertex 11.975570 -3.851482 37.361065
+      vertex 11.301386 -5.154791 91.000000
+      vertex 11.475355 -4.853796 36.452805
+    endloop
+  endfacet
+  facet normal 0.920705 -0.390260 0.000010
+    outer loop
+      vertex 12.239279 -3.204595 24.194019
+      vertex 11.837208 -4.153147 24.880762
+      vertex 12.234818 -3.216498 -29.000000
+    endloop
+  endfacet
+  facet normal 0.951731 -0.306935 -0.000011
+    outer loop
+      vertex 12.578116 -2.153921 23.647940
+      vertex 12.239279 -3.204595 24.194019
+      vertex 12.234818 -3.216498 -29.000000
+    endloop
+  endfacet
+  facet normal 0.963963 -0.266037 -0.000916
+    outer loop
+      vertex 12.578116 -2.153921 23.647940
+      vertex 12.234818 -3.216498 -29.000000
+      vertex 12.807155 -1.142683 -29.000000
+    endloop
+  endfacet
+  facet normal 0.933574 -0.358383 -0.000270
+    outer loop
+      vertex 12.234818 -3.216498 91.000000
+      vertex 11.975570 -3.851482 37.361065
+      vertex 12.401385 -2.742783 38.070473
+    endloop
+  endfacet
+  facet normal 0.900969 -0.433883 0.000782
+    outer loop
+      vertex 12.234818 -3.216498 91.000000
+      vertex 11.301386 -5.154791 91.000000
+      vertex 11.975570 -3.851482 37.361065
+    endloop
+  endfacet
+  facet normal 0.962801 -0.270210 0.000612
+    outer loop
+      vertex 12.685336 -1.730003 38.519779
+      vertex 12.234818 -3.216498 91.000000
+      vertex 12.401385 -2.742783 38.070473
+    endloop
+  endfacet
+  facet normal 0.977859 -0.209265 0.000235
+    outer loop
+      vertex 12.854565 -0.862604 23.219852
+      vertex 12.578116 -2.153921 23.647940
+      vertex 12.807155 -1.142683 -29.000000
+    endloop
+  endfacet
+  facet normal 0.992924 -0.118753 -0.000265
+    outer loop
+      vertex 12.959555 0.015601 23.060797
+      vertex 12.854565 -0.862604 23.219852
+      vertex 12.807155 -1.142683 -29.000000
+    endloop
+  endfacet
+  facet normal 0.995974 -0.089639 -0.000921
+    outer loop
+      vertex 12.959555 0.015601 23.060797
+      vertex 12.807155 -1.142683 -29.000000
+      vertex 13.000000 1.000000 -29.000000
+    endloop
+  endfacet
+  facet normal 0.984343 -0.176264 -0.000312
+    outer loop
+      vertex 12.807155 -1.142683 91.000000
+      vertex 12.685336 -1.730003 38.519779
+      vertex 12.906315 -0.496555 38.858772
+    endloop
+  endfacet
+  facet normal 0.963963 -0.266037 0.000740
+    outer loop
+      vertex 12.807155 -1.142683 91.000000
+      vertex 12.234818 -3.216498 91.000000
+      vertex 12.685336 -1.730003 38.519779
+    endloop
+  endfacet
+  facet normal 0.999157 -0.041052 0.000000
+    outer loop
+      vertex 13.000000 1.000000 23.000000
+      vertex 12.959555 0.015601 23.060797
+      vertex 13.000000 1.000000 -29.000000
+    endloop
+  endfacet
+  facet normal 0.998046 -0.062478 0.000000
+    outer loop
+      vertex 13.000000 1.000000 91.000000
+      vertex 12.906315 -0.496555 38.858772
+      vertex 13.000000 1.000000 39.000000
+    endloop
+  endfacet
+  facet normal 0.995974 -0.089639 0.000783
+    outer loop
+      vertex 13.000000 1.000000 91.000000
+      vertex 12.807155 -1.142683 91.000000
+      vertex 12.906315 -0.496555 38.858772
+    endloop
+  endfacet
+  facet normal -0.812649 -0.582753 -0.000508
+    outer loop
+      vertex -9.197070 -5.326117 38.744690
+      vertex -8.256754 -6.636262 37.456585
+      vertex -8.708204 -6.053423 91.000000
+    endloop
+  endfacet
+  facet normal -0.729680 -0.683789 -0.000110
+    outer loop
+      vertex -8.256754 -6.636262 37.456585
+      vertex -7.218597 -7.743835 35.852356
+      vertex -7.292752 -7.673538 91.000000
+    endloop
+  endfacet
+  facet normal -0.772134 -0.635460 0.000052
+    outer loop
+      vertex -7.758466 -7.203003 25.280670
+      vertex -8.734071 -6.017682 23.875946
+      vertex -8.708204 -6.053423 -29.000000
+    endloop
+  endfacet
+  facet normal -0.850525 -0.525935 -0.000061
+    outer loop
+      vertex -8.734071 -6.017682 23.875946
+      vertex -9.627810 -4.572220 22.696365
+      vertex -8.708204 -6.053423 -29.000000
+    endloop
+  endfacet
+  facet normal -0.000014 -0.989717 -0.143040
+    outer loop
+      vertex 131.000000 -6.799423 29.219833
+      vertex 9.957150 -6.985579 30.519876
+      vertex 10.123698 -6.794750 29.199480
+    endloop
+  endfacet
+  facet normal 0.000014 -0.953169 -0.302437
+    outer loop
+      vertex 131.000000 -6.799423 29.219833
+      vertex 10.123698 -6.794750 29.199480
+      vertex 10.441307 -6.406870 27.977041
+    endloop
+  endfacet
+  facet normal 0.000326 -0.993712 -0.111965
+    outer loop
+      vertex 131.000000 -6.799423 29.219833
+      vertex 131.000000 -7.000000 31.000000
+      vertex 9.957150 -6.985579 30.519876
+    endloop
+  endfacet
+  facet normal 0.000000 0.995512 0.094638
+    outer loop
+      vertex 131.000000 9.000000 31.000000
+      vertex 9.944272 9.000000 31.000000
+      vertex 10.070409 8.856697 32.507420
+    endloop
+  endfacet
+  facet normal -0.000196 -0.893205 -0.449650
+    outer loop
+      vertex 131.000000 -6.207751 27.528931
+      vertex 10.441307 -6.406870 27.977041
+      vertex 10.859378 -5.840517 26.851830
+    endloop
+  endfacet
+  facet normal -0.000169 0.960980 0.276618
+    outer loop
+      vertex 131.000000 8.799423 32.780167
+      vertex 10.070409 8.856697 32.507420
+      vertex 10.402563 8.455991 33.899689
+    endloop
+  endfacet
+  facet normal 0.000331 -0.943883 -0.330279
+    outer loop
+      vertex 131.000000 -6.207751 27.528931
+      vertex 131.000000 -6.799423 29.219833
+      vertex 10.441307 -6.406870 27.977041
+    endloop
+  endfacet
+  facet normal 0.000218 0.993712 0.111965
+    outer loop
+      vertex 131.000000 8.799423 32.780167
+      vertex 131.000000 9.000000 31.000000
+      vertex 10.070409 8.856697 32.507420
+    endloop
+  endfacet
+  facet normal -0.000133 -0.811095 -0.584914
+    outer loop
+      vertex 131.000000 -5.254652 26.012081
+      vertex 10.859378 -5.840517 26.851830
+      vertex 11.336068 -5.096367 25.819815
+    endloop
+  endfacet
+  facet normal 0.000410 -0.846724 -0.532032
+    outer loop
+      vertex 131.000000 -5.254652 26.012081
+      vertex 131.000000 -6.207751 27.528931
+      vertex 10.859378 -5.840517 26.851830
+    endloop
+  endfacet
+  facet normal -0.000256 0.896312 0.443423
+    outer loop
+      vertex 131.000000 8.207751 34.471069
+      vertex 10.402563 8.455991 33.899689
+      vertex 10.866963 7.829570 35.166172
+    endloop
+  endfacet
+  facet normal 0.000378 0.943883 0.330279
+    outer loop
+      vertex 131.000000 8.207751 34.471069
+      vertex 131.000000 8.799423 32.780167
+      vertex 10.402563 8.455991 33.899689
+    endloop
+  endfacet
+  facet normal 0.000173 -0.705586 -0.708625
+    outer loop
+      vertex 131.000000 -3.987918 24.745348
+      vertex 11.336068 -5.096367 25.819815
+      vertex 11.837208 -4.153147 24.880762
+    endloop
+  endfacet
+  facet normal -0.000107 -0.586402 -0.810020
+    outer loop
+      vertex 131.000000 -3.987918 24.745348
+      vertex 11.837208 -4.153147 24.880762
+      vertex 12.239279 -3.204595 24.194019
+    endloop
+  endfacet
+  facet normal -0.000225 0.803620 0.595143
+    outer loop
+      vertex 131.000000 7.254652 35.987919
+      vertex 10.866963 7.829570 35.166172
+      vertex 11.405221 6.977572 36.316826
+    endloop
+  endfacet
+  facet normal 0.000201 -0.707107 -0.707107
+    outer loop
+      vertex 131.000000 -3.987918 24.745348
+      vertex 131.000000 -5.254652 26.012081
+      vertex 11.336068 -5.096367 25.819815
+    endloop
+  endfacet
+  facet normal 0.000413 0.846724 0.532032
+    outer loop
+      vertex 131.000000 7.254652 35.987919
+      vertex 131.000000 8.207751 34.471069
+      vertex 10.866963 7.829570 35.166172
+    endloop
+  endfacet
+  facet normal -0.000154 -0.461134 -0.887331
+    outer loop
+      vertex 131.000000 -2.471070 23.792250
+      vertex 12.239279 -3.204595 24.194019
+      vertex 12.578116 -2.153921 23.647940
+    endloop
+  endfacet
+  facet normal -0.000110 0.680839 0.732433
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 11.405221 6.977572 36.316826
+      vertex 11.968547 5.867337 37.348938
+    endloop
+  endfacet
+  facet normal 0.000422 -0.532032 -0.846724
+    outer loop
+      vertex 131.000000 -2.471070 23.792250
+      vertex 131.000000 -3.987918 24.745348
+      vertex 12.239279 -3.204595 24.194019
+    endloop
+  endfacet
+  facet normal 0.000306 0.707106 0.707107
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 131.000000 7.254652 35.987919
+      vertex 11.405221 6.977572 36.316826
+    endloop
+  endfacet
+  facet normal -0.000045 0.521109 0.853490
+    outer loop
+      vertex 131.000000 4.471070 38.207752
+      vertex 11.968547 5.867337 37.348938
+      vertex 12.501177 4.423876 38.230289
+    endloop
+  endfacet
+  facet normal 0.000043 0.341486 0.939887
+    outer loop
+      vertex 131.000000 4.471070 38.207752
+      vertex 12.501177 4.423876 38.230289
+      vertex 12.829484 3.015767 38.741879
+    endloop
+  endfacet
+  facet normal 0.000132 0.532033 0.846723
+    outer loop
+      vertex 131.000000 4.471070 38.207752
+      vertex 131.000000 5.987918 37.254650
+      vertex 11.968547 5.867337 37.348938
+    endloop
+  endfacet
+  facet normal 0.000065 -0.314684 -0.949197
+    outer loop
+      vertex 131.000000 -0.780167 23.200577
+      vertex 12.578116 -2.153921 23.647940
+      vertex 12.854565 -0.862604 23.219852
+    endloop
+  endfacet
+  facet normal -0.000036 -0.178211 -0.983992
+    outer loop
+      vertex 131.000000 -0.780167 23.200577
+      vertex 12.854565 -0.862604 23.219852
+      vertex 12.959555 0.015601 23.060797
+    endloop
+  endfacet
+  facet normal 0.000266 -0.330279 -0.943883
+    outer loop
+      vertex 131.000000 -0.780167 23.200577
+      vertex 131.000000 -2.471070 23.792250
+      vertex 12.578116 -2.153921 23.647940
+    endloop
+  endfacet
+  facet normal -0.000092 0.193413 0.981117
+    outer loop
+      vertex 131.000000 2.780168 38.799423
+      vertex 12.829484 3.015767 38.741879
+      vertex 12.951891 2.073451 38.927654
+    endloop
+  endfacet
+  facet normal 0.000199 0.330278 0.943884
+    outer loop
+      vertex 131.000000 2.780168 38.799423
+      vertex 131.000000 4.471070 38.207752
+      vertex 12.829484 3.015767 38.741879
+    endloop
+  endfacet
+  facet normal 0.000000 0.093950 -0.995577
+    outer loop
+      vertex 131.000000 1.000000 23.000000
+      vertex 13.000000 1.000000 23.000000
+      vertex 12.906315 2.496555 23.141226
+    endloop
+  endfacet
+  facet normal -0.000000 -0.061643 -0.998098
+    outer loop
+      vertex 131.000000 1.000000 23.000000
+      vertex 12.959555 0.015601 23.060797
+      vertex 13.000000 1.000000 23.000000
+    endloop
+  endfacet
+  facet normal 0.000422 -0.111965 -0.993712
+    outer loop
+      vertex 131.000000 1.000000 23.000000
+      vertex 131.000000 -0.780167 23.200577
+      vertex 12.959555 0.015601 23.060797
+    endloop
+  endfacet
+  facet normal 0.000409 0.111965 0.993712
+    outer loop
+      vertex 131.000000 1.000000 39.000000
+      vertex 131.000000 2.780168 38.799423
+      vertex 12.951891 2.073451 38.927654
+    endloop
+  endfacet
+  facet normal 0.000000 -0.093951 0.995577
+    outer loop
+      vertex 131.000000 1.000000 39.000000
+      vertex 13.000000 1.000000 39.000000
+      vertex 12.906315 -0.496555 38.858772
+    endloop
+  endfacet
+  facet normal 0.000000 0.067243 0.997737
+    outer loop
+      vertex 131.000000 1.000000 39.000000
+      vertex 12.951891 2.073451 38.927654
+      vertex 13.000000 1.000000 39.000000
+    endloop
+  endfacet
+  facet normal -0.000152 0.264984 -0.964253
+    outer loop
+      vertex 131.000000 2.780168 23.200577
+      vertex 12.906315 2.496555 23.141226
+      vertex 12.685336 3.730003 23.480221
+    endloop
+  endfacet
+  facet normal 0.000231 0.111965 -0.993712
+    outer loop
+      vertex 131.000000 2.780168 23.200577
+      vertex 131.000000 1.000000 23.000000
+      vertex 12.906315 2.496555 23.141226
+    endloop
+  endfacet
+  facet normal -0.000152 -0.264982 0.964253
+    outer loop
+      vertex 131.000000 -0.780167 38.799423
+      vertex 12.906315 -0.496555 38.858772
+      vertex 12.685336 -1.730003 38.519779
+    endloop
+  endfacet
+  facet normal -0.000129 0.405492 -0.914099
+    outer loop
+      vertex 131.000000 4.471070 23.792250
+      vertex 12.685336 3.730003 23.480221
+      vertex 12.401385 4.742783 23.929527
+    endloop
+  endfacet
+  facet normal 0.000231 -0.111965 0.993712
+    outer loop
+      vertex 131.000000 -0.780167 38.799423
+      vertex 131.000000 1.000000 39.000000
+      vertex 12.906315 -0.496555 38.858772
+    endloop
+  endfacet
+  facet normal 0.000421 0.330279 -0.943883
+    outer loop
+      vertex 131.000000 4.471070 23.792250
+      vertex 131.000000 2.780168 23.200577
+      vertex 12.685336 3.730003 23.480221
+    endloop
+  endfacet
+  facet normal -0.000129 -0.405492 0.914099
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 12.685336 -1.730003 38.519779
+      vertex 12.401385 -2.742783 38.070473
+    endloop
+  endfacet
+  facet normal 0.000421 -0.330278 0.943883
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 -0.780167 38.799423
+      vertex 12.685336 -1.730003 38.519779
+    endloop
+  endfacet
+  facet normal 0.000135 0.539006 -0.842302
+    outer loop
+      vertex 131.000000 5.987918 24.745348
+      vertex 12.401385 4.742783 23.929527
+      vertex 11.975570 5.851481 24.638937
+    endloop
+  endfacet
+  facet normal -0.000107 0.671454 -0.741046
+    outer loop
+      vertex 131.000000 5.987918 24.745348
+      vertex 11.975570 5.851481 24.638937
+      vertex 11.475355 6.853796 25.547195
+    endloop
+  endfacet
+  facet normal 0.000239 0.532032 -0.846724
+    outer loop
+      vertex 131.000000 5.987918 24.745348
+      vertex 131.000000 4.471070 23.792250
+      vertex 12.401385 4.742783 23.929527
+    endloop
+  endfacet
+  facet normal -0.000213 0.783825 -0.620981
+    outer loop
+      vertex 131.000000 7.254652 26.012081
+      vertex 11.475355 6.853796 25.547195
+      vertex 10.990158 7.648063 26.549915
+    endloop
+  endfacet
+  facet normal 0.000239 -0.532033 0.846723
+    outer loop
+      vertex 131.000000 -3.987918 37.254650
+      vertex 131.000000 -2.471070 38.207752
+      vertex 12.401385 -2.742783 38.070473
+    endloop
+  endfacet
+  facet normal 0.000135 -0.539005 0.842303
+    outer loop
+      vertex 131.000000 -3.987918 37.254650
+      vertex 12.401385 -2.742783 38.070473
+      vertex 11.975570 -3.851482 37.361065
+    endloop
+  endfacet
+  facet normal -0.000107 -0.671455 0.741046
+    outer loop
+      vertex 131.000000 -3.987918 37.254650
+      vertex 11.975570 -3.851482 37.361065
+      vertex 11.475355 -4.853796 36.452805
+    endloop
+  endfacet
+  facet normal 0.000379 0.707107 -0.707107
+    outer loop
+      vertex 131.000000 7.254652 26.012081
+      vertex 131.000000 5.987918 24.745348
+      vertex 11.475355 6.853796 25.547195
+    endloop
+  endfacet
+  facet normal -0.000213 -0.783825 0.620981
+    outer loop
+      vertex 131.000000 -5.254652 35.987919
+      vertex 11.475355 -4.853796 36.452805
+      vertex 10.990158 -5.648063 35.450085
+    endloop
+  endfacet
+  facet normal -0.000074 0.872030 -0.489453
+    outer loop
+      vertex 131.000000 8.207751 27.528931
+      vertex 10.990158 7.648063 26.549915
+      vertex 10.553408 8.261708 27.643276
+    endloop
+  endfacet
+  facet normal 0.000091 0.938081 -0.346416
+    outer loop
+      vertex 131.000000 8.207751 27.528931
+      vertex 10.553408 8.261708 27.643276
+      vertex 10.203491 8.700374 28.831072
+    endloop
+  endfacet
+  facet normal 0.000379 -0.707106 0.707107
+    outer loop
+      vertex 131.000000 -5.254652 35.987919
+      vertex 131.000000 -3.987918 37.254650
+      vertex 11.475355 -4.853796 36.452805
+    endloop
+  endfacet
+  facet normal 0.000391 0.846724 -0.532032
+    outer loop
+      vertex 131.000000 8.207751 27.528931
+      vertex 131.000000 7.254652 26.012081
+      vertex 10.990158 7.648063 26.549915
+    endloop
+  endfacet
+  facet normal -0.000074 -0.872030 0.489453
+    outer loop
+      vertex 131.000000 -6.207751 34.471069
+      vertex 10.990158 -5.648063 35.450085
+      vertex 10.553408 -6.261708 34.356724
+    endloop
+  endfacet
+  facet normal 0.000091 -0.938081 0.346416
+    outer loop
+      vertex 131.000000 -6.207751 34.471069
+      vertex 10.553408 -6.261708 34.356724
+      vertex 10.203491 -6.700374 33.168926
+    endloop
+  endfacet
+  facet normal 0.000391 -0.846724 0.532032
+    outer loop
+      vertex 131.000000 -6.207751 34.471069
+      vertex 131.000000 -5.254652 35.987919
+      vertex 10.990158 -5.648063 35.450085
+    endloop
+  endfacet
+  facet normal -0.000141 0.978655 -0.205509
+    outer loop
+      vertex 131.000000 8.799423 29.219833
+      vertex 10.203491 8.700374 28.831072
+      vertex 10.013048 8.922435 29.888680
+    endloop
+  endfacet
+  facet normal 0.000289 0.943883 -0.330279
+    outer loop
+      vertex 131.000000 8.799423 29.219833
+      vertex 131.000000 8.207751 27.528931
+      vertex 10.203491 8.700374 28.831072
+    endloop
+  endfacet
+  facet normal 0.000391 0.993712 -0.111965
+    outer loop
+      vertex 131.000000 9.000000 31.000000
+      vertex 131.000000 8.799423 29.219833
+      vertex 10.013048 8.922435 29.888680
+    endloop
+  endfacet
+  facet normal 0.000000 0.997573 -0.069626
+    outer loop
+      vertex 131.000000 9.000000 31.000000
+      vertex 10.013048 8.922435 29.888680
+      vertex 9.944272 9.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.000190 -0.981571 0.191098
+    outer loop
+      vertex 131.000000 -6.799423 32.780167
+      vertex 10.203491 -6.700374 33.168926
+      vertex 9.987243 -6.951696 31.877798
+    endloop
+  endfacet
+  facet normal 0.000289 -0.943883 0.330279
+    outer loop
+      vertex 131.000000 -6.799423 32.780167
+      vertex 131.000000 -6.207751 34.471069
+      vertex 10.203491 -6.700374 33.168926
+    endloop
+  endfacet
+  facet normal -0.000218 -0.999689 0.024950
+    outer loop
+      vertex 131.000000 -7.000000 31.000000
+      vertex 9.987243 -6.951696 31.877798
+      vertex 9.957150 -6.985579 30.519876
+    endloop
+  endfacet
+  facet normal 0.000416 -0.993712 0.111965
+    outer loop
+      vertex 131.000000 -7.000000 31.000000
+      vertex 131.000000 -6.799423 32.780167
+      vertex 9.987243 -6.951696 31.877798
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.481877 10.381978 91.000000
+      vertex 12.234818 5.216498 91.000000
+      vertex 11.301386 7.154791 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.481877 10.381978 91.000000
+      vertex 6.686424 11.567146 91.000000
+      vertex 4.708204 12.412678 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.481877 10.381978 91.000000
+      vertex 4.708204 12.412678 91.000000
+      vertex 2.610799 12.891397 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.481877 10.381978 91.000000
+      vertex 2.610799 12.891397 91.000000
+      vertex -5.610764 11.014879 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.481877 10.381978 91.000000
+      vertex -5.610764 11.014879 91.000000
+      vertex 12.234818 5.216498 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -3.716300 -10.034333 91.000000
+      vertex -8.708204 -6.053423 91.000000
+      vertex -7.292752 -7.673538 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 10.036858 8.895265 91.000000
+      vertex 8.481877 10.381978 91.000000
+      vertex 11.301386 7.154791 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -3.716300 -10.034333 91.000000
+      vertex -7.292752 -7.673538 91.000000
+      vertex -5.610764 -9.014879 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -10.951692 -0.075672 91.000000
+      vertex -10.567554 -2.192442 91.000000
+      vertex -9.811626 -4.206605 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 0.461622 -10.987917 91.000000
+      vertex -3.716300 -10.034333 91.000000
+      vertex -1.670251 -10.699135 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 0.461622 -10.987917 91.000000
+      vertex -8.708204 -6.053423 91.000000
+      vertex -3.716300 -10.034333 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 4.708204 -10.412678 91.000000
+      vertex 0.461622 -10.987917 91.000000
+      vertex 2.610799 -10.891397 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -9.811626 6.206605 91.000000
+      vertex -10.567554 4.192442 91.000000
+      vertex -10.951692 2.075672 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -9.811626 6.206605 91.000000
+      vertex -10.951692 2.075672 91.000000
+      vertex -10.951692 -0.075672 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -7.292752 9.673538 91.000000
+      vertex -8.708204 8.053423 91.000000
+      vertex -9.811626 6.206605 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 10.036858 -6.895265 91.000000
+      vertex -9.811626 -4.206605 91.000000
+      vertex -8.708204 -6.053423 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 10.036858 -6.895265 91.000000
+      vertex 4.708204 -10.412678 91.000000
+      vertex 6.686424 -9.567146 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 10.036858 -6.895265 91.000000
+      vertex 6.686424 -9.567146 91.000000
+      vertex 8.481877 -8.381978 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 10.036858 -6.895265 91.000000
+      vertex -8.708204 -6.053423 91.000000
+      vertex 0.461622 -10.987917 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 10.036858 -6.895265 91.000000
+      vertex 0.461622 -10.987917 91.000000
+      vertex 4.708204 -10.412678 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 -3.216498 91.000000
+      vertex 10.036858 -6.895265 91.000000
+      vertex 11.301386 -5.154791 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 0.461622 12.987917 91.000000
+      vertex -1.670251 12.699135 91.000000
+      vertex -3.716300 12.034333 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 0.461622 12.987917 91.000000
+      vertex -3.716300 12.034333 91.000000
+      vertex -5.610764 11.014879 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 2.610799 12.891397 91.000000
+      vertex 0.461622 12.987917 91.000000
+      vertex -5.610764 11.014879 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.807155 3.142683 91.000000
+      vertex 12.807155 -1.142683 91.000000
+      vertex 13.000000 1.000000 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 91.000000
+      vertex -5.610764 11.014879 91.000000
+      vertex -7.292752 9.673538 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 91.000000
+      vertex 12.234818 -3.216498 91.000000
+      vertex 12.807155 -1.142683 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 91.000000
+      vertex -10.951692 -0.075672 91.000000
+      vertex -9.811626 -4.206605 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 91.000000
+      vertex -7.292752 9.673538 91.000000
+      vertex -9.811626 6.206605 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 91.000000
+      vertex -9.811626 6.206605 91.000000
+      vertex -10.951692 -0.075672 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 91.000000
+      vertex -9.811626 -4.206605 91.000000
+      vertex 10.036858 -6.895265 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 91.000000
+      vertex 10.036858 -6.895265 91.000000
+      vertex 12.234818 -3.216498 91.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.234818 5.216498 91.000000
+      vertex 12.807155 -1.142683 91.000000
+      vertex 12.807155 3.142683 91.000000
+    endloop
+  endfacet
+  facet normal -0.000919 0.936949 -0.349464
+    outer loop
+      vertex -6.470624 10.390942 27.563400
+      vertex -34.000000 10.096320 26.845850
+      vertex -34.000000 10.594930 28.182674
+    endloop
+  endfacet
+  facet normal -0.000773 -0.936950 0.349464
+    outer loop
+      vertex -6.375163 -8.466096 34.223824
+      vertex -34.000000 -8.096320 35.154152
+      vertex -34.000000 -8.594930 33.817326
+    endloop
+  endfacet
+  facet normal 0.001442 -0.913852 0.406044
+    outer loop
+      vertex -6.375163 -8.466096 34.223824
+      vertex -7.218597 -7.743835 35.852356
+      vertex -34.000000 -8.096320 35.154152
+    endloop
+  endfacet
+  facet normal 0.000658 0.958118 -0.286374
+    outer loop
+      vertex -6.012732 10.737638 28.724388
+      vertex -6.470624 10.390942 27.563400
+      vertex -34.000000 10.594930 28.182674
+    endloop
+  endfacet
+  facet normal -0.000868 0.977146 -0.212565
+    outer loop
+      vertex -6.012732 10.737638 28.724388
+      vertex -34.000000 10.594930 28.182674
+      vertex -34.000000 10.898214 29.576851
+    endloop
+  endfacet
+  facet normal -0.000896 -0.977146 0.212565
+    outer loop
+      vertex -5.941191 -8.788762 33.044537
+      vertex -34.000000 -8.594930 33.817326
+      vertex -34.000000 -8.898214 32.423149
+    endloop
+  endfacet
+  facet normal 0.000612 -0.964490 0.264120
+    outer loop
+      vertex -5.941191 -8.788762 33.044537
+      vertex -6.375163 -8.466096 34.223824
+      vertex -34.000000 -8.594930 33.817326
+    endloop
+  endfacet
+  facet normal 0.000376 0.984892 -0.173172
+    outer loop
+      vertex -5.737499 10.930061 29.819370
+      vertex -6.012732 10.737638 28.724388
+      vertex -34.000000 10.898214 29.576851
+    endloop
+  endfacet
+  facet normal -0.000512 0.997452 -0.071339
+    outer loop
+      vertex -5.737499 10.930061 29.819370
+      vertex -34.000000 10.898214 29.576851
+      vertex -34.000000 11.000000 31.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.998250 -0.059135
+    outer loop
+      vertex -5.633250 11.000000 31.000000
+      vertex -5.737499 10.930061 29.819370
+      vertex -34.000000 11.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.000873 -0.997452 0.071339
+    outer loop
+      vertex -5.659541 -8.982511 31.591177
+      vertex -34.000000 -8.898214 32.423149
+      vertex -34.000000 -9.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.000307 0.997452 0.071339
+    outer loop
+      vertex -5.757563 10.916418 32.290215
+      vertex -34.000000 11.000000 31.000000
+      vertex -34.000000 10.898214 32.423149
+    endloop
+  endfacet
+  facet normal 0.000936 -0.991207 0.132320
+    outer loop
+      vertex -5.659541 -8.982511 31.591177
+      vertex -5.941191 -8.788762 33.044537
+      vertex -34.000000 -8.898214 32.423149
+    endloop
+  endfacet
+  facet normal 0.000000 0.997908 0.064646
+    outer loop
+      vertex -5.757563 10.916418 32.290215
+      vertex -5.633250 11.000000 31.000000
+      vertex -34.000000 11.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.000887 -0.997452 -0.071339
+    outer loop
+      vertex -5.681127 -8.968076 30.201591
+      vertex -34.000000 -9.000000 31.000000
+      vertex -34.000000 -8.898214 29.576851
+    endloop
+  endfacet
+  facet normal 0.000834 -0.999946 -0.010400
+    outer loop
+      vertex -5.681127 -8.968076 30.201591
+      vertex -5.659541 -8.982511 31.591177
+      vertex -34.000000 -9.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.000681 0.977147 0.212565
+    outer loop
+      vertex -6.080200 10.688693 33.475727
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 10.594930 33.817326
+    endloop
+  endfacet
+  facet normal 0.000255 0.982033 0.188708
+    outer loop
+      vertex -6.080200 10.688693 33.475727
+      vertex -5.757563 10.916418 32.290215
+      vertex -34.000000 10.898214 32.423149
+    endloop
+  endfacet
+  facet normal -0.000863 -0.977147 -0.212565
+    outer loop
+      vertex -5.919753 -8.803928 29.029472
+      vertex -34.000000 -8.898214 29.576851
+      vertex -34.000000 -8.594930 28.182674
+    endloop
+  endfacet
+  facet normal 0.000619 -0.990318 -0.138813
+    outer loop
+      vertex -5.919753 -8.803928 29.029472
+      vertex -5.681127 -8.968076 30.201591
+      vertex -34.000000 -8.898214 29.576851
+    endloop
+  endfacet
+  facet normal 0.000499 0.953166 0.302446
+    outer loop
+      vertex -6.528029 10.344987 34.559666
+      vertex -6.080200 10.688693 33.475727
+      vertex -34.000000 10.594930 33.817326
+    endloop
+  endfacet
+  facet normal -0.000919 0.936949 0.349463
+    outer loop
+      vertex -6.528029 10.344987 34.559666
+      vertex -34.000000 10.594930 33.817326
+      vertex -34.000000 10.096320 35.154152
+    endloop
+  endfacet
+  facet normal -0.000511 -0.936950 -0.349464
+    outer loop
+      vertex -6.298790 -8.525107 27.954950
+      vertex -34.000000 -8.594930 28.182674
+      vertex -34.000000 -8.096320 26.845850
+    endloop
+  endfacet
+  facet normal 0.000374 -0.967912 -0.251289
+    outer loop
+      vertex -6.298790 -8.525107 27.954950
+      vertex -5.919753 -8.803928 29.029472
+      vertex -34.000000 -8.594930 28.182674
+    endloop
+  endfacet
+  facet normal 0.000978 0.905646 0.424035
+    outer loop
+      vertex -7.240622 9.723082 35.889565
+      vertex -6.528029 10.344987 34.559666
+      vertex -34.000000 10.096320 35.154152
+    endloop
+  endfacet
+  facet normal -0.000929 0.877678 0.479250
+    outer loop
+      vertex -7.240622 9.723082 35.889565
+      vertex -34.000000 10.096320 35.154152
+      vertex -34.000000 9.412536 36.406406
+    endloop
+  endfacet
+  facet normal -0.000508 -0.877679 -0.479249
+    outer loop
+      vertex -6.938873 -7.998572 26.638153
+      vertex -34.000000 -8.096320 26.845850
+      vertex -34.000000 -7.412535 25.593592
+    endloop
+  endfacet
+  facet normal 0.000502 -0.928437 -0.371490
+    outer loop
+      vertex -6.938873 -7.998572 26.638153
+      vertex -6.298790 -8.525107 27.954950
+      vertex -34.000000 -8.096320 26.845850
+    endloop
+  endfacet
+  facet normal 0.001581 0.818925 0.573899
+    outer loop
+      vertex -8.299619 8.584002 37.517891
+      vertex -7.240622 9.723082 35.889565
+      vertex -34.000000 9.412536 36.406406
+    endloop
+  endfacet
+  facet normal -0.000109 0.800542 0.599277
+    outer loop
+      vertex -8.299619 8.584002 37.517891
+      vertex -34.000000 9.412536 36.406406
+      vertex -34.000000 8.557496 37.548607
+    endloop
+  endfacet
+  facet normal 0.000116 0.707107 0.707107
+    outer loop
+      vertex -8.299619 8.584002 37.517891
+      vertex -34.000000 8.557496 37.548607
+      vertex -34.000000 7.548607 38.557495
+    endloop
+  endfacet
+  facet normal -0.000754 -0.800541 -0.599278
+    outer loop
+      vertex -7.758466 -7.203003 25.280670
+      vertex -34.000000 -7.412535 25.593592
+      vertex -34.000000 -6.557496 24.451393
+    endloop
+  endfacet
+  facet normal 0.000853 -0.862528 -0.506009
+    outer loop
+      vertex -7.758466 -7.203003 25.280670
+      vertex -6.938873 -7.998572 26.638153
+      vertex -34.000000 -7.412535 25.593592
+    endloop
+  endfacet
+  facet normal -0.000997 -0.707106 -0.707106
+    outer loop
+      vertex -8.734071 -6.017682 23.875946
+      vertex -34.000000 -6.557496 24.451393
+      vertex -34.000000 -5.548607 23.442505
+    endloop
+  endfacet
+  facet normal 0.001184 0.693748 0.720217
+    outer loop
+      vertex -9.250660 7.238907 38.815117
+      vertex -8.299619 8.584002 37.517891
+      vertex -34.000000 7.548607 38.557495
+    endloop
+  endfacet
+  facet normal 0.001614 -0.763715 -0.645552
+    outer loop
+      vertex -8.734071 -6.017682 23.875946
+      vertex -7.758466 -7.203003 25.280670
+      vertex -34.000000 -6.557496 24.451393
+    endloop
+  endfacet
+  facet normal -0.000834 0.599278 0.800540
+    outer loop
+      vertex -9.250660 7.238907 38.815117
+      vertex -34.000000 7.548607 38.557495
+      vertex -34.000000 6.406408 39.412537
+    endloop
+  endfacet
+  facet normal 0.001572 -0.631667 -0.775238
+    outer loop
+      vertex -9.627810 -4.572220 22.696365
+      vertex -8.734071 -6.017682 23.875946
+      vertex -34.000000 -5.548607 23.442505
+    endloop
+  endfacet
+  facet normal -0.000500 -0.599278 -0.800541
+    outer loop
+      vertex -9.627810 -4.572220 22.696365
+      vertex -34.000000 -5.548607 23.442505
+      vertex -34.000000 -4.406408 22.587465
+    endloop
+  endfacet
+  facet normal 0.001037 0.562496 0.826800
+    outer loop
+      vertex -9.915038 5.986175 39.668221
+      vertex -9.250660 7.238907 38.815117
+      vertex -34.000000 6.406408 39.412537
+    endloop
+  endfacet
+  facet normal -0.000955 0.479249 0.877679
+    outer loop
+      vertex -9.915038 5.986175 39.668221
+      vertex -34.000000 6.406408 39.412537
+      vertex -34.000000 5.154150 40.096321
+    endloop
+  endfacet
+  facet normal 0.000575 -0.488491 -0.872569
+    outer loop
+      vertex -10.252209 -3.169867 21.910873
+      vertex -9.627810 -4.572220 22.696365
+      vertex -34.000000 -4.406408 22.587465
+    endloop
+  endfacet
+  facet normal -0.000051 -0.479249 -0.877679
+    outer loop
+      vertex -10.252209 -3.169867 21.910873
+      vertex -34.000000 -4.406408 22.587465
+      vertex -34.000000 -3.154150 21.903681
+    endloop
+  endfacet
+  facet normal 0.001741 0.417216 0.908806
+    outer loop
+      vertex -10.527491 4.334210 40.427780
+      vertex -9.915038 5.986175 39.668221
+      vertex -34.000000 5.154150 40.096321
+    endloop
+  endfacet
+  facet normal 0.000052 -0.349465 -0.936949
+    outer loop
+      vertex -10.252209 -3.169867 21.910873
+      vertex -34.000000 -3.154150 21.903681
+      vertex -34.000000 -1.817326 21.405069
+    endloop
+  endfacet
+  facet normal -0.001023 0.349463 0.936950
+    outer loop
+      vertex -10.527491 4.334210 40.427780
+      vertex -34.000000 5.154150 40.096321
+      vertex -34.000000 3.817326 40.594929
+    endloop
+  endfacet
+  facet normal -0.000469 -0.212565 -0.977147
+    outer loop
+      vertex -10.703868 -1.649430 21.357359
+      vertex -34.000000 -1.817326 21.405069
+      vertex -34.000000 -0.423148 21.101786
+    endloop
+  endfacet
+  facet normal 0.001080 0.262953 0.964808
+    outer loop
+      vertex -10.846192 2.915130 40.814899
+      vertex -10.527491 4.334210 40.427780
+      vertex -34.000000 3.817326 40.594929
+    endloop
+  endfacet
+  facet normal 0.000540 -0.341944 -0.939720
+    outer loop
+      vertex -10.703868 -1.649430 21.357359
+      vertex -10.252209 -3.169867 21.910873
+      vertex -34.000000 -1.817326 21.405069
+    endloop
+  endfacet
+  facet normal -0.001001 0.212567 0.977146
+    outer loop
+      vertex -10.846192 2.915130 40.814899
+      vertex -34.000000 3.817326 40.594929
+      vertex -34.000000 2.423148 40.898216
+    endloop
+  endfacet
+  facet normal 0.000954 -0.186630 -0.982430
+    outer loop
+      vertex -10.951837 -0.074060 21.057848
+      vertex -10.703868 -1.649430 21.357359
+      vertex -34.000000 -0.423148 21.101786
+    endloop
+  endfacet
+  facet normal -0.000821 -0.071339 -0.997452
+    outer loop
+      vertex -10.951837 -0.074060 21.057848
+      vertex -34.000000 -0.423148 21.101786
+      vertex -34.000000 1.000000 21.000000
+    endloop
+  endfacet
+  facet normal 0.001328 0.105907 0.994375
+    outer loop
+      vertex -10.998376 1.197410 40.998051
+      vertex -10.846192 2.915130 40.814899
+      vertex -34.000000 2.423148 40.898216
+    endloop
+  endfacet
+  facet normal -0.000528 0.071338 0.997452
+    outer loop
+      vertex -10.998376 1.197410 40.998051
+      vertex -34.000000 2.423148 40.898216
+      vertex -34.000000 1.000000 41.000000
+    endloop
+  endfacet
+  facet normal 0.001303 -0.025876 -0.999664
+    outer loop
+      vertex -10.987032 1.557722 21.015564
+      vertex -10.951837 -0.074060 21.057848
+      vertex -34.000000 1.000000 21.000000
+    endloop
+  endfacet
+  facet normal -0.001054 0.071339 -0.997451
+    outer loop
+      vertex -10.987032 1.557722 21.015564
+      vertex -34.000000 1.000000 21.000000
+      vertex -34.000000 2.423148 21.101786
+    endloop
+  endfacet
+  facet normal 0.000652 -0.066086 0.997814
+    outer loop
+      vertex -10.903988 -0.514951 40.884579
+      vertex -10.998376 1.197410 40.998051
+      vertex -34.000000 1.000000 41.000000
+    endloop
+  endfacet
+  facet normal 0.000305 -0.071338 0.997452
+    outer loop
+      vertex -10.903988 -0.514951 40.884579
+      vertex -34.000000 1.000000 41.000000
+      vertex -34.000000 -0.423148 40.898216
+    endloop
+  endfacet
+  facet normal 0.001446 0.137151 -0.990549
+    outer loop
+      vertex -10.800443 3.179347 21.240366
+      vertex -10.987032 1.557722 21.015564
+      vertex -34.000000 2.423148 21.101786
+    endloop
+  endfacet
+  facet normal -0.001092 0.212565 -0.977146
+    outer loop
+      vertex -10.800443 3.179347 21.240366
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 3.817326 21.405069
+    endloop
+  endfacet
+  facet normal -0.000259 -0.210447 0.977605
+    outer loop
+      vertex -10.695628 -1.685570 40.632637
+      vertex -10.903988 -0.514951 40.884579
+      vertex -34.000000 -0.423148 40.898216
+    endloop
+  endfacet
+  facet normal -0.000379 -0.212567 0.977146
+    outer loop
+      vertex -10.695628 -1.685570 40.632637
+      vertex -34.000000 -0.423148 40.898216
+      vertex -34.000000 -1.817326 40.594929
+    endloop
+  endfacet
+  facet normal 0.001252 0.292401 -0.956295
+    outer loop
+      vertex -10.429211 4.656930 21.692644
+      vertex -10.800443 3.179347 21.240366
+      vertex -34.000000 3.817326 21.405069
+    endloop
+  endfacet
+  facet normal -0.001017 0.349465 -0.936949
+    outer loop
+      vertex -10.429211 4.656930 21.692644
+      vertex -34.000000 3.817326 21.405069
+      vertex -34.000000 5.154150 21.903681
+    endloop
+  endfacet
+  facet normal 0.000342 -0.330589 0.943775
+    outer loop
+      vertex -10.343766 -2.913946 40.202229
+      vertex -10.695628 -1.685570 40.632637
+      vertex -34.000000 -1.817326 40.594929
+    endloop
+  endfacet
+  facet normal -0.000646 -0.349463 0.936950
+    outer loop
+      vertex -10.343766 -2.913946 40.202229
+      vertex -34.000000 -1.817326 40.594929
+      vertex -34.000000 -3.154150 40.096321
+    endloop
+  endfacet
+  facet normal 0.000892 0.426229 -0.904615
+    outer loop
+      vertex -9.974246 5.854475 22.257341
+      vertex -10.429211 4.656930 21.692644
+      vertex -34.000000 5.154150 21.903681
+    endloop
+  endfacet
+  facet normal -0.001050 0.479249 -0.877679
+    outer loop
+      vertex -9.974246 5.854475 22.257341
+      vertex -34.000000 5.154150 21.903681
+      vertex -34.000000 6.406408 22.587465
+    endloop
+  endfacet
+  facet normal 0.000565 -0.449518 0.893271
+    outer loop
+      vertex -9.880333 -4.061458 39.624477
+      vertex -10.343766 -2.913946 40.202229
+      vertex -34.000000 -3.154150 40.096321
+    endloop
+  endfacet
+  facet normal -0.000858 -0.479249 0.877679
+    outer loop
+      vertex -9.880333 -4.061458 39.624477
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 -4.406408 39.412537
+    endloop
+  endfacet
+  facet normal 0.001231 0.552230 -0.833691
+    outer loop
+      vertex -9.295414 7.164775 23.126276
+      vertex -9.974246 5.854475 22.257341
+      vertex -34.000000 6.406408 22.587465
+    endloop
+  endfacet
+  facet normal -0.000936 0.599277 -0.800541
+    outer loop
+      vertex -9.295414 7.164775 23.126276
+      vertex -34.000000 6.406408 22.587465
+      vertex -34.000000 7.548607 23.442505
+    endloop
+  endfacet
+  facet normal 0.000947 -0.570730 0.821137
+    outer loop
+      vertex -9.197070 -5.326117 38.744690
+      vertex -9.880333 -4.061458 39.624477
+      vertex -34.000000 -4.406408 39.412537
+    endloop
+  endfacet
+  facet normal -0.000666 -0.599279 0.800540
+    outer loop
+      vertex -9.197070 -5.326117 38.744690
+      vertex -34.000000 -4.406408 39.412537
+      vertex -34.000000 -5.548607 38.557495
+    endloop
+  endfacet
+  facet normal 0.001325 0.685290 -0.728269
+    outer loop
+      vertex -8.372674 8.493528 24.378292
+      vertex -9.295414 7.164775 23.126276
+      vertex -34.000000 7.548607 23.442505
+    endloop
+  endfacet
+  facet normal 0.000902 -0.700754 0.713403
+    outer loop
+      vertex -8.256754 -6.636262 37.456585
+      vertex -9.197070 -5.326117 38.744690
+      vertex -34.000000 -5.548607 38.557495
+    endloop
+  endfacet
+  facet normal -0.000252 0.707107 -0.707107
+    outer loop
+      vertex -8.372674 8.493528 24.378292
+      vertex -34.000000 7.548607 23.442505
+      vertex -34.000000 8.557496 24.451393
+    endloop
+  endfacet
+  facet normal 0.000364 -0.707107 0.707107
+    outer loop
+      vertex -8.256754 -6.636262 37.456585
+      vertex -34.000000 -5.548607 38.557495
+      vertex -34.000000 -6.557496 37.548607
+    endloop
+  endfacet
+  facet normal 0.000289 0.800541 -0.599278
+    outer loop
+      vertex -8.372674 8.493528 24.378292
+      vertex -34.000000 8.557496 24.451393
+      vertex -34.000000 9.412536 25.593592
+    endloop
+  endfacet
+  facet normal -0.000307 -0.800542 0.599277
+    outer loop
+      vertex -8.256754 -6.636262 37.456585
+      vertex -34.000000 -6.557496 37.548607
+      vertex -34.000000 -7.412535 36.406406
+    endloop
+  endfacet
+  facet normal 0.001198 0.809614 -0.586961
+    outer loop
+      vertex -7.338006 9.630043 25.948034
+      vertex -8.372674 8.493528 24.378292
+      vertex -34.000000 9.412536 25.593592
+    endloop
+  endfacet
+  facet normal -0.000789 0.877679 -0.479249
+    outer loop
+      vertex -7.338006 9.630043 25.948034
+      vertex -34.000000 9.412536 25.593592
+      vertex -34.000000 10.096320 26.845850
+    endloop
+  endfacet
+  facet normal -0.000943 -0.877678 0.479250
+    outer loop
+      vertex -7.218597 -7.743835 35.852356
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 -8.096320 35.154152
+    endloop
+  endfacet
+  facet normal 0.001594 -0.822439 0.568851
+    outer loop
+      vertex -7.218597 -7.743835 35.852356
+      vertex -8.256754 -6.636262 37.456585
+      vertex -34.000000 -7.412535 36.406406
+    endloop
+  endfacet
+  facet normal 0.001445 0.904362 -0.426764
+    outer loop
+      vertex -6.470624 10.390942 27.563400
+      vertex -7.338006 9.630043 25.948034
+      vertex -34.000000 10.096320 26.845850
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 23.792250
+      vertex 131.000000 -5.254652 26.012081
+      vertex 131.000000 -3.987918 24.745348
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 1.000000 23.000000
+      vertex 131.000000 -2.471070 23.792250
+      vertex 131.000000 -0.780167 23.200577
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 2.780168 23.200577
+      vertex 131.000000 -2.471070 23.792250
+      vertex 131.000000 1.000000 23.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 24.745348
+      vertex 131.000000 2.780168 23.200577
+      vertex 131.000000 4.471070 23.792250
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 24.745348
+      vertex 131.000000 -5.254652 26.012081
+      vertex 131.000000 -2.471070 23.792250
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 24.745348
+      vertex 131.000000 -2.471070 23.792250
+      vertex 131.000000 2.780168 23.200577
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -5.254652 35.987919
+      vertex 131.000000 -6.207751 34.471069
+      vertex 131.000000 -6.799423 32.780167
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 7.254652 26.012081
+      vertex 131.000000 -6.799423 29.219833
+      vertex 131.000000 -6.207751 27.528931
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 7.254652 26.012081
+      vertex 131.000000 -6.207751 27.528931
+      vertex 131.000000 -5.254652 26.012081
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 7.254652 26.012081
+      vertex 131.000000 -5.254652 26.012081
+      vertex 131.000000 5.987918 24.745348
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 -3.987918 37.254650
+      vertex 131.000000 -5.254652 35.987919
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 -6.799423 32.780167
+      vertex 131.000000 -7.000000 31.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 -7.000000 31.000000
+      vertex 131.000000 -6.799423 29.219833
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 7.254652 26.012081
+      vertex 131.000000 8.207751 27.528931
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 -6.799423 29.219833
+      vertex 131.000000 7.254652 26.012081
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 -5.254652 35.987919
+      vertex 131.000000 -6.799423 32.780167
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 8.799423 32.780167
+      vertex 131.000000 8.207751 27.528931
+      vertex 131.000000 8.799423 29.219833
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 8.799423 32.780167
+      vertex 131.000000 8.799423 29.219833
+      vertex 131.000000 9.000000 31.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 2.780168 38.799423
+      vertex 131.000000 1.000000 39.000000
+      vertex 131.000000 -0.780167 38.799423
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 8.207751 34.471069
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 8.207751 27.528931
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 8.207751 34.471069
+      vertex 131.000000 8.207751 27.528931
+      vertex 131.000000 8.799423 32.780167
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 131.000000 8.207751 34.471069
+      vertex 131.000000 7.254652 35.987919
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 131.000000 4.471070 38.207752
+      vertex 131.000000 2.780168 38.799423
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 131.000000 -0.780167 38.799423
+      vertex 131.000000 -2.471070 38.207752
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 131.000000 2.780168 38.799423
+      vertex 131.000000 -0.780167 38.799423
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.987918 37.254650
+      vertex 131.000000 -2.471070 38.207752
+      vertex 131.000000 8.207751 34.471069
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 10.594930 28.182674
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 10.898214 29.576851
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 10.898214 29.576851
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 11.000000 31.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 7.548607 23.442505
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 7.548607 23.442505
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 9.412536 25.593592
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 9.412536 25.593592
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 10.594930 28.182674
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -0.423148 40.898216
+      vertex -34.000000 2.423148 40.898216
+      vertex -34.000000 -3.154150 40.096321
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 1.000000 41.000000
+      vertex -34.000000 2.423148 40.898216
+      vertex -34.000000 -0.423148 40.898216
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 2.423148 40.898216
+      vertex -34.000000 10.898214 32.423149
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -6.557496 24.451393
+      vertex -34.000000 -7.412535 25.593592
+      vertex -34.000000 -5.548607 23.442505
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 10.096320 35.154152
+      vertex -34.000000 10.594930 33.817326
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex -34.000000 3.817326 40.594929
+      vertex -34.000000 5.154150 40.096321
+      vertex -34.000000 2.423148 40.898216
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -8.096320 26.845850
+      vertex -34.000000 -8.594930 28.182674
+      vertex -34.000000 -7.412535 25.593592
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -7.412535 25.593592
+      vertex -34.000000 -8.594930 28.182674
+      vertex -34.000000 -5.548607 23.442505
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 10.096320 35.154152
+      vertex -34.000000 8.557496 37.548607
+      vertex -34.000000 9.412536 36.406406
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -3.154150 21.903681
+      vertex -34.000000 -0.423148 21.101786
+      vertex -34.000000 -1.817326 21.405069
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex -34.000000 6.406408 39.412537
+      vertex -34.000000 7.548607 38.557495
+      vertex -34.000000 5.154150 40.096321
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 2.423148 40.898216
+      vertex -34.000000 7.548607 38.557495
+      vertex -34.000000 10.898214 32.423149
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex -34.000000 5.154150 40.096321
+      vertex -34.000000 7.548607 38.557495
+      vertex -34.000000 2.423148 40.898216
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 10.898214 32.423149
+      vertex -34.000000 7.548607 38.557495
+      vertex -34.000000 10.096320 35.154152
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 10.096320 35.154152
+      vertex -34.000000 7.548607 38.557495
+      vertex -34.000000 8.557496 37.548607
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -8.898214 29.576851
+      vertex -34.000000 -9.000000 31.000000
+      vertex -34.000000 -8.594930 28.182674
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -5.548607 23.442505
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 -4.406408 22.587465
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -4.406408 22.587465
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 -3.154150 21.903681
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -0.423148 21.101786
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 1.000000 21.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -3.154150 21.903681
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 -0.423148 21.101786
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -8.898214 32.423149
+      vertex -34.000000 -8.594930 33.817326
+      vertex -34.000000 -9.000000 31.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -9.000000 31.000000
+      vertex -34.000000 -8.594930 33.817326
+      vertex -34.000000 -8.594930 28.182674
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 6.406408 22.587465
+      vertex -34.000000 3.817326 21.405069
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 3.817326 21.405069
+      vertex -34.000000 6.406408 22.587465
+      vertex -34.000000 5.154150 21.903681
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -8.096320 35.154152
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 -8.594930 33.817326
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -8.594930 28.182674
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 -5.548607 23.442505
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -5.548607 23.442505
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 2.423148 21.101786
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -8.594930 33.817326
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 -8.594930 28.182674
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 2.423148 21.101786
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 6.406408 22.587465
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -6.557496 37.548607
+      vertex -34.000000 -5.548607 38.557495
+      vertex -34.000000 -7.412535 36.406406
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 7.548607 23.442505
+      vertex -34.000000 9.412536 25.593592
+      vertex -34.000000 8.557496 24.451393
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -4.406408 39.412537
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 -5.548607 38.557495
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 6.406408 22.587465
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 7.548607 23.442505
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -7.412535 36.406406
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 6.406408 22.587465
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -5.548607 38.557495
+      vertex -34.000000 -3.154150 40.096321
+      vertex -34.000000 -7.412535 36.406406
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 9.412536 25.593592
+      vertex -34.000000 10.594930 28.182674
+      vertex -34.000000 10.096320 26.845850
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -1.817326 40.594929
+      vertex -34.000000 -0.423148 40.898216
+      vertex -34.000000 -3.154150 40.096321
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSL.stl b/apps/cpu/Multiphase/backup/FlowFocusingSL.stl
new file mode 100644
index 0000000000000000000000000000000000000000..c7285063b119d316bc79153c093d3564d1245d41
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingSL.stl differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSS.ast b/apps/cpu/Multiphase/backup/FlowFocusingSS.ast
new file mode 100644
index 0000000000000000000000000000000000000000..83ef2d561accb5a3f994547945604c3674df82dd
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/FlowFocusingSS.ast
@@ -0,0 +1,3096 @@
+solid Mesh
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -4.825651 32.435894
+      vertex 131.000000 -5.000000 31.000000
+      vertex 131.000000 -4.825651 29.564106
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -4.825651 32.435894
+      vertex 131.000000 -4.825651 29.564106
+      vertex 131.000000 -4.312736 28.211660
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -4.825651 32.435894
+      vertex 131.000000 -4.312736 28.211660
+      vertex 131.000000 -3.491065 27.021263
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -4.825651 32.435894
+      vertex 131.000000 -3.491065 27.021263
+      vertex 131.000000 -2.408388 26.062098
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -4.825651 32.435894
+      vertex 131.000000 -2.408388 26.062098
+      vertex 131.000000 -1.127629 25.389902
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 4.408389 26.062098
+      vertex 131.000000 1.723220 25.043747
+      vertex 131.000000 3.127629 25.389902
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -1.127629 36.610096
+      vertex 131.000000 -2.408388 35.937904
+      vertex 131.000000 -3.491065 34.978737
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -1.127629 36.610096
+      vertex 131.000000 -3.491065 34.978737
+      vertex 131.000000 -4.312736 33.788338
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 -1.127629 36.610096
+      vertex 131.000000 -4.312736 33.788338
+      vertex 131.000000 -4.825651 32.435894
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 6.825651 29.564106
+      vertex 131.000000 4.408389 26.062098
+      vertex 131.000000 5.491065 27.021263
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 6.825651 29.564106
+      vertex 131.000000 5.491065 27.021263
+      vertex 131.000000 6.312736 28.211660
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 6.825651 32.435894
+      vertex 131.000000 6.825651 29.564106
+      vertex 131.000000 7.000000 31.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 3.127629 36.610096
+      vertex 131.000000 1.723220 36.956253
+      vertex 131.000000 0.276780 36.956253
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 3.127629 36.610096
+      vertex 131.000000 0.276780 36.956253
+      vertex 131.000000 -1.127629 36.610096
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 3.127629 36.610096
+      vertex 131.000000 -1.127629 25.389902
+      vertex 131.000000 0.276780 25.043747
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 3.127629 36.610096
+      vertex 131.000000 0.276780 25.043747
+      vertex 131.000000 1.723220 25.043747
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 3.127629 36.610096
+      vertex 131.000000 1.723220 25.043747
+      vertex 131.000000 4.408389 26.062098
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 3.127629 36.610096
+      vertex 131.000000 -4.825651 32.435894
+      vertex 131.000000 -1.127629 25.389902
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 3.127629 36.610096
+      vertex 131.000000 4.408389 26.062098
+      vertex 131.000000 6.825651 29.564106
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 3.127629 36.610096
+      vertex 131.000000 -1.127629 36.610096
+      vertex 131.000000 -4.825651 32.435894
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 3.127629 36.610096
+      vertex 131.000000 6.825651 29.564106
+      vertex 131.000000 6.825651 32.435894
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.491065 34.978737
+      vertex 131.000000 6.825651 32.435894
+      vertex 131.000000 6.312736 33.788338
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.491065 34.978737
+      vertex 131.000000 4.408389 35.937904
+      vertex 131.000000 3.127629 36.610096
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 131.000000 5.491065 34.978737
+      vertex 131.000000 3.127629 36.610096
+      vertex 131.000000 6.825651 32.435894
+    endloop
+  endfacet
+  facet normal -0.000144 -0.728741 -0.684789
+    outer loop
+      vertex 131.000000 -3.491065 27.021263
+      vertex 12.045211 -3.690770 27.258787
+      vertex 12.304571 -3.025752 26.551031
+    endloop
+  endfacet
+  facet normal 0.000247 -0.822984 -0.568065
+    outer loop
+      vertex 131.000000 -3.491065 27.021263
+      vertex 131.000000 -4.312736 28.211660
+      vertex 12.045211 -3.690770 27.258787
+    endloop
+  endfacet
+  facet normal 0.000000 0.994252 0.107061
+    outer loop
+      vertex 131.000000 7.000000 31.000000
+      vertex 11.392304 7.000000 31.000000
+      vertex 11.470512 6.862455 32.277348
+    endloop
+  endfacet
+  facet normal -0.000139 -0.604250 -0.796794
+    outer loop
+      vertex 131.000000 -2.408388 26.062098
+      vertex 12.304571 -3.025752 26.551031
+      vertex 12.565912 -2.198387 25.923552
+    endloop
+  endfacet
+  facet normal 0.000366 -0.663122 -0.748511
+    outer loop
+      vertex 131.000000 -2.408388 26.062098
+      vertex 131.000000 -3.491065 27.021263
+      vertex 12.304571 -3.025752 26.551031
+    endloop
+  endfacet
+  facet normal 0.000037 -0.449324 -0.893369
+    outer loop
+      vertex 131.000000 -1.127629 25.389902
+      vertex 12.565912 -2.198387 25.923552
+      vertex 12.802445 -1.168476 25.405563
+    endloop
+  endfacet
+  facet normal -0.000126 0.949009 0.315249
+    outer loop
+      vertex 131.000000 6.825651 32.435894
+      vertex 11.470512 6.862455 32.277348
+      vertex 11.685072 6.461616 33.484100
+    endloop
+  endfacet
+  facet normal -0.000030 -0.280319 -0.959907
+    outer loop
+      vertex 131.000000 -1.127629 25.389902
+      vertex 12.802445 -1.168476 25.405563
+      vertex 12.941537 -0.183087 25.117798
+    endloop
+  endfacet
+  facet normal 0.000212 -0.464724 -0.885456
+    outer loop
+      vertex 131.000000 -1.127629 25.389902
+      vertex 131.000000 -2.408388 26.062098
+      vertex 12.565912 -2.198387 25.923552
+    endloop
+  endfacet
+  facet normal 0.000146 0.992709 0.120537
+    outer loop
+      vertex 131.000000 6.825651 32.435894
+      vertex 131.000000 7.000000 31.000000
+      vertex 11.470512 6.862455 32.277348
+    endloop
+  endfacet
+  facet normal -0.000134 0.876441 0.481510
+    outer loop
+      vertex 131.000000 6.312736 33.788338
+      vertex 11.685072 6.461616 33.484100
+      vertex 11.896806 6.025896 34.277252
+    endloop
+  endfacet
+  facet normal 0.000263 0.935016 0.354605
+    outer loop
+      vertex 131.000000 6.312736 33.788338
+      vertex 131.000000 6.825651 32.435894
+      vertex 11.685072 6.461616 33.484100
+    endloop
+  endfacet
+  facet normal -0.000238 -0.099067 -0.995081
+    outer loop
+      vertex 131.000000 0.276780 25.043747
+      vertex 12.941537 -0.183087 25.117798
+      vertex 13.000000 1.000000 25.000000
+    endloop
+  endfacet
+  facet normal 0.000323 -0.239315 -0.970942
+    outer loop
+      vertex 131.000000 0.276780 25.043747
+      vertex 131.000000 -1.127629 25.389902
+      vertex 12.941537 -0.183087 25.117798
+    endloop
+  endfacet
+  facet normal -0.000060 0.790299 0.612722
+    outer loop
+      vertex 131.000000 5.491065 34.978737
+      vertex 11.896806 6.025896 34.277252
+      vertex 12.153856 5.426228 35.050739
+    endloop
+  endfacet
+  facet normal 0.000077 0.676962 0.736018
+    outer loop
+      vertex 131.000000 5.491065 34.978737
+      vertex 12.153856 5.426228 35.050739
+      vertex 12.425965 4.667058 35.748966
+    endloop
+  endfacet
+  facet normal 0.000350 0.822984 0.568064
+    outer loop
+      vertex 131.000000 5.491065 34.978737
+      vertex 131.000000 6.312736 33.788338
+      vertex 11.896806 6.025896 34.277252
+    endloop
+  endfacet
+  facet normal -0.000320 0.112279 -0.993677
+    outer loop
+      vertex 131.000000 1.723220 25.043747
+      vertex 13.000000 1.000000 25.000000
+      vertex 12.925056 2.339040 25.151327
+    endloop
+  endfacet
+  facet normal 0.000371 0.000000 -1.000000
+    outer loop
+      vertex 131.000000 1.723220 25.043747
+      vertex 131.000000 0.276780 25.043747
+      vertex 13.000000 1.000000 25.000000
+    endloop
+  endfacet
+  facet normal -0.000189 0.315324 -0.948984
+    outer loop
+      vertex 131.000000 3.127629 25.389902
+      vertex 12.925056 2.339040 25.151327
+      vertex 12.751836 3.427831 25.513140
+    endloop
+  endfacet
+  facet normal -0.000181 0.534250 0.845326
+    outer loop
+      vertex 131.000000 4.408389 35.937904
+      vertex 12.425965 4.667058 35.748966
+      vertex 12.688570 3.716124 36.350018
+    endloop
+  endfacet
+  facet normal 0.000364 0.239315 -0.970942
+    outer loop
+      vertex 131.000000 3.127629 25.389902
+      vertex 131.000000 1.723220 25.043747
+      vertex 12.925056 2.339040 25.151327
+    endloop
+  endfacet
+  facet normal 0.000254 0.663123 0.748511
+    outer loop
+      vertex 131.000000 4.408389 35.937904
+      vertex 131.000000 5.491065 34.978737
+      vertex 12.425965 4.667058 35.748966
+    endloop
+  endfacet
+  facet normal -0.000294 0.354136 0.935194
+    outer loop
+      vertex 131.000000 3.127629 36.610096
+      vertex 12.688570 3.716124 36.350018
+      vertex 12.904691 2.509416 36.807037
+    endloop
+  endfacet
+  facet normal 0.000097 0.479567 -0.877505
+    outer loop
+      vertex 131.000000 4.408389 26.062098
+      vertex 12.751836 3.427831 25.513140
+      vertex 12.535419 4.306674 25.993414
+    endloop
+  endfacet
+  facet normal 0.000365 0.464722 0.885457
+    outer loop
+      vertex 131.000000 3.127629 36.610096
+      vertex 131.000000 4.408389 35.937904
+      vertex 12.688570 3.716124 36.350018
+    endloop
+  endfacet
+  facet normal -0.000068 0.613054 -0.790041
+    outer loop
+      vertex 131.000000 4.408389 26.062098
+      vertex 12.535419 4.306674 25.993414
+      vertex 12.303495 5.028771 26.553764
+    endloop
+  endfacet
+  facet normal 0.000257 0.464724 -0.885456
+    outer loop
+      vertex 131.000000 4.408389 26.062098
+      vertex 131.000000 3.127629 25.389902
+      vertex 12.751836 3.427831 25.513140
+    endloop
+  endfacet
+  facet normal -0.000094 0.722932 -0.690919
+    outer loop
+      vertex 131.000000 5.491065 27.021263
+      vertex 12.303495 5.028771 26.553764
+      vertex 12.073238 5.624218 27.176832
+    endloop
+  endfacet
+  facet normal 0.000365 0.663122 -0.748511
+    outer loop
+      vertex 131.000000 5.491065 27.021263
+      vertex 131.000000 4.408389 26.062098
+      vertex 12.303495 5.028771 26.553764
+    endloop
+  endfacet
+  facet normal 0.000041 0.192387 0.981319
+    outer loop
+      vertex 131.000000 1.723220 36.956253
+      vertex 12.904691 2.509416 36.807037
+      vertex 12.973638 1.794989 36.947098
+    endloop
+  endfacet
+  facet normal -0.000037 0.066396 0.997793
+    outer loop
+      vertex 131.000000 1.723220 36.956253
+      vertex 12.973638 1.794989 36.947098
+      vertex 13.000000 1.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000366 0.239317 0.970942
+    outer loop
+      vertex 131.000000 1.723220 36.956253
+      vertex 131.000000 3.127629 36.610096
+      vertex 12.904691 2.509416 36.807037
+    endloop
+  endfacet
+  facet normal 0.000123 0.825977 -0.563703
+    outer loop
+      vertex 131.000000 6.312736 28.211660
+      vertex 12.073238 5.624218 27.176832
+      vertex 11.792848 6.245421 28.087002
+    endloop
+  endfacet
+  facet normal -0.000107 0.919104 -0.394015
+    outer loop
+      vertex 131.000000 6.312736 28.211660
+      vertex 11.792848 6.245421 28.087002
+      vertex 11.545403 6.726647 29.209606
+    endloop
+  endfacet
+  facet normal -0.000320 -0.112281 0.993676
+    outer loop
+      vertex 131.000000 0.276780 36.956253
+      vertex 13.000000 1.000000 37.000000
+      vertex 12.925056 -0.339040 36.848671
+    endloop
+  endfacet
+  facet normal 0.000178 0.822984 -0.568065
+    outer loop
+      vertex 131.000000 6.312736 28.211660
+      vertex 131.000000 5.491065 27.021263
+      vertex 12.073238 5.624218 27.176832
+    endloop
+  endfacet
+  facet normal 0.000371 -0.000000 1.000000
+    outer loop
+      vertex 131.000000 0.276780 36.956253
+      vertex 131.000000 1.723220 36.956253
+      vertex 13.000000 1.000000 37.000000
+    endloop
+  endfacet
+  facet normal -0.000138 0.974208 -0.225651
+    outer loop
+      vertex 131.000000 6.825651 29.564106
+      vertex 11.545403 6.726647 29.209606
+      vertex 11.432029 6.930664 30.090483
+    endloop
+  endfacet
+  facet normal 0.000277 0.935016 -0.354605
+    outer loop
+      vertex 131.000000 6.825651 29.564106
+      vertex 131.000000 6.312736 28.211660
+      vertex 11.545403 6.726647 29.209606
+    endloop
+  endfacet
+  facet normal 0.000363 -0.239317 0.970942
+    outer loop
+      vertex 131.000000 -1.127629 36.610096
+      vertex 131.000000 0.276780 36.956253
+      vertex 12.925056 -0.339040 36.848671
+    endloop
+  endfacet
+  facet normal -0.000188 -0.315321 0.948985
+    outer loop
+      vertex 131.000000 -1.127629 36.610096
+      vertex 12.925056 -0.339040 36.848671
+      vertex 12.751836 -1.427831 36.486862
+    endloop
+  endfacet
+  facet normal 0.000000 0.997107 -0.076013
+    outer loop
+      vertex 131.000000 7.000000 31.000000
+      vertex 11.432029 6.930664 30.090483
+      vertex 11.392304 7.000000 31.000000
+    endloop
+  endfacet
+  facet normal 0.000341 0.992709 -0.120537
+    outer loop
+      vertex 131.000000 7.000000 31.000000
+      vertex 131.000000 6.825651 29.564106
+      vertex 11.432029 6.930664 30.090483
+    endloop
+  endfacet
+  facet normal 0.000257 -0.464722 0.885457
+    outer loop
+      vertex 131.000000 -2.408388 35.937904
+      vertex 131.000000 -1.127629 36.610096
+      vertex 12.751836 -1.427831 36.486862
+    endloop
+  endfacet
+  facet normal 0.000097 -0.479567 0.877505
+    outer loop
+      vertex 131.000000 -2.408388 35.937904
+      vertex 12.751836 -1.427831 36.486862
+      vertex 12.535419 -2.306674 36.006588
+    endloop
+  endfacet
+  facet normal -0.000068 -0.613055 0.790040
+    outer loop
+      vertex 131.000000 -2.408388 35.937904
+      vertex 12.535419 -2.306674 36.006588
+      vertex 12.303495 -3.028771 35.446236
+    endloop
+  endfacet
+  facet normal -0.000094 -0.722931 0.690920
+    outer loop
+      vertex 131.000000 -3.491065 34.978737
+      vertex 12.303495 -3.028771 35.446236
+      vertex 12.073238 -3.624218 34.823170
+    endloop
+  endfacet
+  facet normal 0.000365 -0.663123 0.748511
+    outer loop
+      vertex 131.000000 -3.491065 34.978737
+      vertex 131.000000 -2.408388 35.937904
+      vertex 12.303495 -3.028771 35.446236
+    endloop
+  endfacet
+  facet normal 0.000123 -0.825978 0.563703
+    outer loop
+      vertex 131.000000 -4.312736 33.788338
+      vertex 12.073238 -3.624218 34.823170
+      vertex 11.792848 -4.245421 33.912998
+    endloop
+  endfacet
+  facet normal -0.000107 -0.919104 0.394015
+    outer loop
+      vertex 131.000000 -4.312736 33.788338
+      vertex 11.792848 -4.245421 33.912998
+      vertex 11.545403 -4.726647 32.790394
+    endloop
+  endfacet
+  facet normal 0.000178 -0.822984 0.568064
+    outer loop
+      vertex 131.000000 -4.312736 33.788338
+      vertex 131.000000 -3.491065 34.978737
+      vertex 12.073238 -3.624218 34.823170
+    endloop
+  endfacet
+  facet normal -0.000222 -0.979996 0.199016
+    outer loop
+      vertex 131.000000 -4.825651 32.435894
+      vertex 11.545403 -4.726647 32.790394
+      vertex 11.408753 -4.971420 31.584927
+    endloop
+  endfacet
+  facet normal 0.000277 -0.935016 0.354605
+    outer loop
+      vertex 131.000000 -4.825651 32.435894
+      vertex 131.000000 -4.312736 33.788338
+      vertex 11.545403 -4.726647 32.790394
+    endloop
+  endfacet
+  facet normal -0.000136 -0.999777 0.021114
+    outer loop
+      vertex 131.000000 -5.000000 31.000000
+      vertex 11.408753 -4.971420 31.584927
+      vertex 11.397617 -4.990790 30.667681
+    endloop
+  endfacet
+  facet normal 0.000352 -0.992709 0.120537
+    outer loop
+      vertex 131.000000 -5.000000 31.000000
+      vertex 131.000000 -4.825651 32.435894
+      vertex 11.408753 -4.971420 31.584927
+    endloop
+  endfacet
+  facet normal 0.000145 -0.991166 -0.132629
+    outer loop
+      vertex 131.000000 -4.825651 29.564106
+      vertex 11.397617 -4.990790 30.667681
+      vertex 11.467756 -4.867373 29.745436
+    endloop
+  endfacet
+  facet normal -0.000095 -0.958956 -0.283556
+    outer loop
+      vertex 131.000000 -4.825651 29.564106
+      vertex 11.467756 -4.867373 29.745436
+      vertex 11.609928 -4.606196 28.862112
+    endloop
+  endfacet
+  facet normal 0.000258 -0.992709 -0.120537
+    outer loop
+      vertex 131.000000 -4.825651 29.564106
+      vertex 131.000000 -5.000000 31.000000
+      vertex 11.397617 -4.990790 30.667681
+    endloop
+  endfacet
+  facet normal -0.000103 -0.904303 -0.426892
+    outer loop
+      vertex 131.000000 -4.312736 28.211660
+      vertex 11.609928 -4.606196 28.862112
+      vertex 11.808237 -4.213636 28.030489
+    endloop
+  endfacet
+  facet normal 0.000164 -0.827892 -0.560887
+    outer loop
+      vertex 131.000000 -4.312736 28.211660
+      vertex 11.808237 -4.213636 28.030489
+      vertex 12.045211 -3.690770 27.258787
+    endloop
+  endfacet
+  facet normal 0.000366 -0.935016 -0.354605
+    outer loop
+      vertex 131.000000 -4.312736 28.211660
+      vertex 131.000000 -4.825651 29.564106
+      vertex 11.609928 -4.606196 28.862112
+    endloop
+  endfacet
+  facet normal 0.997065 0.076549 -0.001150
+    outer loop
+      vertex 12.925056 2.339040 25.151327
+      vertex 13.000000 1.000000 1.000000
+      vertex 12.859365 2.831791 1.000000
+    endloop
+  endfacet
+  facet normal 0.998437 0.055881 0.000000
+    outer loop
+      vertex 12.925056 2.339040 25.151327
+      vertex 13.000000 1.000000 25.000000
+      vertex 13.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.999451 0.033143 0.000000
+    outer loop
+      vertex 13.000000 1.000000 61.000000
+      vertex 13.000000 1.000000 37.000000
+      vertex 12.973638 1.794989 36.947098
+    endloop
+  endfacet
+  facet normal 0.973695 0.227853 -0.001269
+    outer loop
+      vertex 12.751836 3.427831 25.513140
+      vertex 12.859365 2.831791 1.000000
+      vertex 12.440757 4.620647 1.000000
+    endloop
+  endfacet
+  facet normal 0.987606 0.156951 0.000516
+    outer loop
+      vertex 12.751836 3.427831 25.513140
+      vertex 12.925056 2.339040 25.151327
+      vertex 12.859365 2.831791 1.000000
+    endloop
+  endfacet
+  facet normal 0.970908 0.239453 -0.000669
+    outer loop
+      vertex 12.535419 4.306674 25.993414
+      vertex 12.751836 3.427831 25.513140
+      vertex 12.440757 4.620647 1.000000
+    endloop
+  endfacet
+  facet normal 0.997065 0.076549 0.001437
+    outer loop
+      vertex 12.859365 2.831791 61.000000
+      vertex 13.000000 1.000000 61.000000
+      vertex 12.973638 1.794989 36.947098
+    endloop
+  endfacet
+  facet normal 0.984370 0.176110 -0.000502
+    outer loop
+      vertex 12.859365 2.831791 61.000000
+      vertex 12.904691 2.509416 36.807037
+      vertex 12.688570 3.716124 36.350018
+    endloop
+  endfacet
+  facet normal 0.995364 0.096174 0.000583
+    outer loop
+      vertex 12.859365 2.831791 61.000000
+      vertex 12.973638 1.794989 36.947098
+      vertex 12.904691 2.509416 36.807037
+    endloop
+  endfacet
+  facet normal 0.952150 0.305632 0.000233
+    outer loop
+      vertex 12.303495 5.028771 26.553764
+      vertex 12.535419 4.306674 25.993414
+      vertex 12.440757 4.620647 1.000000
+    endloop
+  endfacet
+  facet normal 0.927502 0.373817 -0.001309
+    outer loop
+      vertex 12.073238 5.624218 27.176832
+      vertex 12.440757 4.620647 1.000000
+      vertex 11.753986 6.324638 1.000000
+    endloop
+  endfacet
+  facet normal 0.932425 0.361364 -0.000763
+    outer loop
+      vertex 12.073238 5.624218 27.176832
+      vertex 12.303495 5.028771 26.553764
+      vertex 12.440757 4.620647 1.000000
+    endloop
+  endfacet
+  facet normal 0.941337 0.337467 0.000069
+    outer loop
+      vertex 12.440757 4.620647 61.000000
+      vertex 12.425965 4.667058 35.748966
+      vertex 12.153856 5.426228 35.050739
+    endloop
+  endfacet
+  facet normal 0.963933 0.266146 -0.000075
+    outer loop
+      vertex 12.440757 4.620647 61.000000
+      vertex 12.688570 3.716124 36.350018
+      vertex 12.425965 4.667058 35.748966
+    endloop
+  endfacet
+  facet normal 0.973694 0.227853 0.001428
+    outer loop
+      vertex 12.440757 4.620647 61.000000
+      vertex 12.859365 2.831791 61.000000
+      vertex 12.688570 3.716124 36.350018
+    endloop
+  endfacet
+  facet normal 0.911398 0.411527 -0.000104
+    outer loop
+      vertex 11.792848 6.245421 28.087002
+      vertex 12.073238 5.624218 27.176832
+      vertex 11.753986 6.324638 1.000000
+    endloop
+  endfacet
+  facet normal 0.889378 0.457173 0.000061
+    outer loop
+      vertex 11.545403 6.726647 29.209606
+      vertex 11.792848 6.245421 28.087002
+      vertex 11.753986 6.324638 1.000000
+    endloop
+  endfacet
+  facet normal 0.873203 0.487356 -0.000489
+    outer loop
+      vertex 11.432029 6.930664 30.090483
+      vertex 11.545403 6.726647 29.209606
+      vertex 11.753986 6.324638 1.000000
+    endloop
+  endfacet
+  facet normal 0.859569 0.511018 -0.001133
+    outer loop
+      vertex 11.432029 6.930664 30.090483
+      vertex 11.753986 6.324638 1.000000
+      vertex 10.815152 7.903824 1.000000
+    endloop
+  endfacet
+  facet normal 0.860696 0.509118 -0.001220
+    outer loop
+      vertex 11.392304 7.000000 31.000000
+      vertex 11.432029 6.930664 30.090483
+      vertex 10.815152 7.903824 1.000000
+    endloop
+  endfacet
+  facet normal 0.881462 0.472256 0.000143
+    outer loop
+      vertex 11.753986 6.324638 61.000000
+      vertex 11.685072 6.461616 33.484100
+      vertex 11.470512 6.862455 32.277348
+    endloop
+  endfacet
+  facet normal 0.899484 0.436954 -0.000078
+    outer loop
+      vertex 11.753986 6.324638 61.000000
+      vertex 11.896806 6.025896 34.277252
+      vertex 11.685072 6.461616 33.484100
+    endloop
+  endfacet
+  facet normal 0.918883 0.394529 0.000500
+    outer loop
+      vertex 11.753986 6.324638 61.000000
+      vertex 12.153856 5.426228 35.050739
+      vertex 11.896806 6.025896 34.277252
+    endloop
+  endfacet
+  facet normal 0.927501 0.373817 0.001350
+    outer loop
+      vertex 11.753986 6.324638 61.000000
+      vertex 12.440757 4.620647 61.000000
+      vertex 12.153856 5.426228 35.050739
+    endloop
+  endfacet
+  facet normal 0.842819 0.538197 0.000000
+    outer loop
+      vertex 10.815152 7.903824 61.000000
+      vertex 11.392304 7.000000 31.000000
+      vertex 10.815152 7.903824 1.000000
+    endloop
+  endfacet
+  facet normal 0.863566 0.504234 0.001422
+    outer loop
+      vertex 10.815152 7.903824 61.000000
+      vertex 11.470512 6.862455 32.277348
+      vertex 11.392304 7.000000 31.000000
+    endloop
+  endfacet
+  facet normal 0.859569 0.511018 0.001085
+    outer loop
+      vertex 10.815152 7.903824 61.000000
+      vertex 11.753986 6.324638 61.000000
+      vertex 11.470512 6.862455 32.277348
+    endloop
+  endfacet
+  facet normal 0.771489 0.636242 0.000000
+    outer loop
+      vertex 9.646259 9.321190 61.000000
+      vertex 10.815152 7.903824 61.000000
+      vertex 10.815152 7.903824 1.000000
+    endloop
+  endfacet
+  facet normal 0.771489 0.636242 0.000000
+    outer loop
+      vertex 9.646259 9.321190 61.000000
+      vertex 10.815152 7.903824 1.000000
+      vertex 9.646259 9.321190 1.000000
+    endloop
+  endfacet
+  facet normal 0.665326 0.746553 0.000000
+    outer loop
+      vertex 8.274705 10.543514 61.000000
+      vertex 9.646259 9.321190 1.000000
+      vertex 8.274705 10.543514 1.000000
+    endloop
+  endfacet
+  facet normal 0.665326 0.746553 0.000000
+    outer loop
+      vertex 8.274705 10.543514 61.000000
+      vertex 9.646259 9.321190 61.000000
+      vertex 9.646259 9.321190 1.000000
+    endloop
+  endfacet
+  facet normal 0.543567 0.839365 0.000000
+    outer loop
+      vertex 8.274705 10.543514 61.000000
+      vertex 8.274705 10.543514 1.000000
+      vertex 6.732638 11.542147 1.000000
+    endloop
+  endfacet
+  facet normal 0.543567 0.839365 0.000000
+    outer loop
+      vertex 6.732638 11.542147 61.000000
+      vertex 8.274705 10.543514 61.000000
+      vertex 6.732638 11.542147 1.000000
+    endloop
+  endfacet
+  facet normal 0.409069 0.912504 0.000000
+    outer loop
+      vertex 5.056202 12.293680 61.000000
+      vertex 6.732638 11.542147 1.000000
+      vertex 5.056202 12.293680 1.000000
+    endloop
+  endfacet
+  facet normal 0.409069 0.912504 0.000000
+    outer loop
+      vertex 5.056202 12.293680 61.000000
+      vertex 6.732638 11.542147 61.000000
+      vertex 6.732638 11.542147 1.000000
+    endloop
+  endfacet
+  facet normal 0.264982 0.964253 0.000000
+    outer loop
+      vertex 3.284693 12.780499 61.000000
+      vertex 5.056202 12.293680 1.000000
+      vertex 3.284693 12.780499 1.000000
+    endloop
+  endfacet
+  facet normal 0.264982 0.964253 0.000000
+    outer loop
+      vertex 3.284693 12.780499 61.000000
+      vertex 5.056202 12.293680 61.000000
+      vertex 5.056202 12.293680 1.000000
+    endloop
+  endfacet
+  facet normal 0.114683 0.993402 0.000000
+    outer loop
+      vertex 1.459633 12.991194 61.000000
+      vertex 3.284693 12.780499 1.000000
+      vertex 1.459633 12.991194 1.000000
+    endloop
+  endfacet
+  facet normal 0.114683 0.993402 0.000000
+    outer loop
+      vertex 1.459633 12.991194 61.000000
+      vertex 3.284693 12.780499 61.000000
+      vertex 3.284693 12.780499 1.000000
+    endloop
+  endfacet
+  facet normal -0.038303 0.999266 0.000000
+    outer loop
+      vertex -0.376201 12.920825 61.000000
+      vertex 1.459633 12.991194 1.000000
+      vertex -0.376201 12.920825 1.000000
+    endloop
+  endfacet
+  facet normal -0.038303 0.999266 0.000000
+    outer loop
+      vertex -0.376201 12.920825 61.000000
+      vertex 1.459633 12.991194 61.000000
+      vertex 1.459633 12.991194 1.000000
+    endloop
+  endfacet
+  facet normal -0.190391 0.981708 0.000000
+    outer loop
+      vertex -2.179778 12.571042 61.000000
+      vertex -0.376201 12.920825 1.000000
+      vertex -2.179778 12.571042 1.000000
+    endloop
+  endfacet
+  facet normal -0.190391 0.981708 0.000000
+    outer loop
+      vertex -2.179778 12.571042 61.000000
+      vertex -0.376201 12.920825 61.000000
+      vertex -0.376201 12.920825 1.000000
+    endloop
+  endfacet
+  facet normal -0.338017 0.941140 0.000000
+    outer loop
+      vertex -3.908824 11.950044 61.000000
+      vertex -2.179778 12.571042 1.000000
+      vertex -3.908824 11.950044 1.000000
+    endloop
+  endfacet
+  facet normal -0.338017 0.941140 0.000000
+    outer loop
+      vertex -3.908824 11.950044 61.000000
+      vertex -2.179778 12.571042 61.000000
+      vertex -2.179778 12.571042 1.000000
+    endloop
+  endfacet
+  facet normal -0.477720 0.878512 0.000000
+    outer loop
+      vertex -5.522810 11.072385 61.000000
+      vertex -3.908824 11.950044 1.000000
+      vertex -5.522810 11.072385 1.000000
+    endloop
+  endfacet
+  facet normal -0.477720 0.878512 0.000000
+    outer loop
+      vertex -5.522810 11.072385 61.000000
+      vertex -3.908824 11.950044 61.000000
+      vertex -3.908824 11.950044 1.000000
+    endloop
+  endfacet
+  facet normal -0.720521 0.693432 -0.000907
+    outer loop
+      vertex -7.944272 9.000000 31.000000
+      vertex -6.983908 9.958638 1.000000
+      vertex -8.257870 8.634910 1.000000
+    endloop
+  endfacet
+  facet normal -0.746770 0.665082 -0.000288
+    outer loop
+      vertex -8.023660 8.910345 29.805666
+      vertex -7.944272 9.000000 31.000000
+      vertex -8.257870 8.634910 1.000000
+    endloop
+  endfacet
+  facet normal -0.606225 0.795293 0.000000
+    outer loop
+      vertex -6.983908 9.958638 61.000000
+      vertex -5.522810 11.072385 1.000000
+      vertex -6.983908 9.958638 1.000000
+    endloop
+  endfacet
+  facet normal -0.606225 0.795293 0.000000
+    outer loop
+      vertex -6.983908 9.958638 61.000000
+      vertex -5.522810 11.072385 61.000000
+      vertex -5.522810 11.072385 1.000000
+    endloop
+  endfacet
+  facet normal -0.706471 0.707742 0.000000
+    outer loop
+      vertex -6.983908 9.958638 61.000000
+      vertex -6.983908 9.958638 1.000000
+      vertex -7.944272 9.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.761081 0.648657 -0.000014
+    outer loop
+      vertex -8.241260 8.655006 28.676022
+      vertex -8.023660 8.910345 29.805666
+      vertex -8.257870 8.634910 1.000000
+    endloop
+  endfacet
+  facet normal -0.784851 0.619684 0.000021
+    outer loop
+      vertex -8.589377 8.214142 27.542231
+      vertex -8.241260 8.655006 28.676022
+      vertex -8.257870 8.634910 1.000000
+    endloop
+  endfacet
+  facet normal -0.817929 0.575318 -0.001176
+    outer loop
+      vertex -9.014555 7.611255 26.495411
+      vertex -8.257870 8.634910 1.000000
+      vertex -9.314836 7.132224 1.000000
+    endloop
+  endfacet
+  facet normal -0.816364 0.577536 -0.001041
+    outer loop
+      vertex -9.014555 7.611255 26.495411
+      vertex -8.589377 8.214142 27.542231
+      vertex -8.257870 8.634910 1.000000
+    endloop
+  endfacet
+  facet normal -0.749474 0.662033 0.000222
+    outer loop
+      vertex -8.257870 8.634910 61.000000
+      vertex -7.944272 9.000000 31.000000
+      vertex -8.070408 8.856698 32.507416
+    endloop
+  endfacet
+  facet normal -0.770060 0.637972 -0.000100
+    outer loop
+      vertex -8.257870 8.634910 61.000000
+      vertex -8.070408 8.856698 32.507416
+      vertex -8.402561 8.455994 33.899681
+    endloop
+  endfacet
+  facet normal -0.802980 0.596006 0.000352
+    outer loop
+      vertex -8.257870 8.634910 61.000000
+      vertex -8.402561 8.455994 33.899681
+      vertex -8.866960 7.829576 35.166161
+    endloop
+  endfacet
+  facet normal -0.720521 0.693432 0.000907
+    outer loop
+      vertex -8.257870 8.634910 61.000000
+      vertex -6.983908 9.958638 61.000000
+      vertex -7.944272 9.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.854805 0.518950 0.000317
+    outer loop
+      vertex -9.482093 6.841722 25.534264
+      vertex -9.014555 7.611255 26.495411
+      vertex -9.314836 7.132224 1.000000
+    endloop
+  endfacet
+  facet normal -0.896165 0.443720 -0.001060
+    outer loop
+      vertex -9.963696 5.878253 24.659445
+      vertex -9.314836 7.132224 1.000000
+      vertex -10.130030 5.485805 1.000000
+    endloop
+  endfacet
+  facet normal -0.894187 0.447693 -0.000795
+    outer loop
+      vertex -9.963696 5.878253 24.659445
+      vertex -9.482093 6.841722 25.534264
+      vertex -9.314836 7.132224 1.000000
+    endloop
+  endfacet
+  facet normal -0.845571 0.533863 -0.000249
+    outer loop
+      vertex -9.314836 7.132224 61.000000
+      vertex -8.866960 7.829576 35.166161
+      vertex -9.405215 6.977583 36.316814
+    endloop
+  endfacet
+  facet normal -0.817928 0.575318 0.001350
+    outer loop
+      vertex -9.314836 7.132224 61.000000
+      vertex -8.257870 8.634910 61.000000
+      vertex -8.866960 7.829576 35.166161
+    endloop
+  endfacet
+  facet normal -0.891613 0.452798 0.000428
+    outer loop
+      vertex -9.968540 5.867354 37.348927
+      vertex -9.314836 7.132224 61.000000
+      vertex -9.405215 6.977583 36.316814
+    endloop
+  endfacet
+  facet normal -0.953395 0.301720 -0.001450
+    outer loop
+      vertex -10.374597 4.823421 23.972807
+      vertex -10.130030 5.485805 1.000000
+      vertex -10.684345 3.734242 1.000000
+    endloop
+  endfacet
+  facet normal -0.931917 0.362671 0.000536
+    outer loop
+      vertex -10.374597 4.823421 23.972807
+      vertex -9.963696 5.878253 24.659445
+      vertex -10.130030 5.485805 1.000000
+    endloop
+  endfacet
+  facet normal -0.960186 0.279362 -0.000299
+    outer loop
+      vertex -10.651127 3.872498 23.533491
+      vertex -10.374597 4.823421 23.972807
+      vertex -10.684345 3.734242 1.000000
+    endloop
+  endfacet
+  facet normal -0.938332 0.345735 -0.000829
+    outer loop
+      vertex -10.130030 5.485805 61.000000
+      vertex -9.968540 5.867354 37.348927
+      vertex -10.501171 4.423895 38.230278
+    endloop
+  endfacet
+  facet normal -0.896165 0.443720 0.001039
+    outer loop
+      vertex -10.130030 5.485805 61.000000
+      vertex -9.314836 7.132224 61.000000
+      vertex -9.968540 5.867354 37.348927
+    endloop
+  endfacet
+  facet normal -0.988279 0.152649 -0.001582
+    outer loop
+      vertex -10.853421 2.869869 23.221594
+      vertex -10.684345 3.734242 1.000000
+      vertex -10.964789 1.918591 1.000000
+    endloop
+  endfacet
+  facet normal -0.980261 0.197709 0.000232
+    outer loop
+      vertex -10.853421 2.869869 23.221594
+      vertex -10.651127 3.872498 23.533491
+      vertex -10.684345 3.734242 1.000000
+    endloop
+  endfacet
+  facet normal -0.993789 0.111277 0.000217
+    outer loop
+      vertex -10.973373 1.798958 23.039995
+      vertex -10.853421 2.869869 23.221594
+      vertex -10.964789 1.918591 1.000000
+    endloop
+  endfacet
+  facet normal -0.953395 0.301720 0.001469
+    outer loop
+      vertex -10.684345 3.734242 61.000000
+      vertex -10.130030 5.485805 61.000000
+      vertex -10.501171 4.423895 38.230278
+    endloop
+  endfacet
+  facet normal -0.973957 0.226732 -0.000968
+    outer loop
+      vertex -10.684345 3.734242 61.000000
+      vertex -10.501171 4.423895 38.230278
+      vertex -10.829480 3.015787 38.741875
+    endloop
+  endfacet
+  facet normal -0.999961 0.008863 -0.000341
+    outer loop
+      vertex -10.985648 0.413291 23.021544
+      vertex -10.973373 1.798958 23.039995
+      vertex -10.964789 1.918591 1.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000947
+    outer loop
+      vertex -10.985648 0.413291 23.021544
+      vertex -10.964789 1.918591 1.000000
+      vertex -10.964789 0.081409 1.000000
+    endloop
+  endfacet
+  facet normal -0.988279 0.152649 0.001517
+    outer loop
+      vertex -10.964789 1.918591 61.000000
+      vertex -10.684345 3.734242 61.000000
+      vertex -10.829480 3.015787 38.741875
+    endloop
+  endfacet
+  facet normal -0.994316 0.106462 -0.000797
+    outer loop
+      vertex -10.964789 1.918591 61.000000
+      vertex -10.829480 3.015787 38.741875
+      vertex -10.987958 1.537464 38.981926
+    endloop
+  endfacet
+  facet normal -0.994792 -0.101926 0.000594
+    outer loop
+      vertex -10.855250 -0.858236 23.218807
+      vertex -10.985648 0.413291 23.021544
+      vertex -10.964789 0.081409 1.000000
+    endloop
+  endfacet
+  facet normal -0.988279 -0.152649 -0.001583
+    outer loop
+      vertex -10.855250 -0.858236 23.218807
+      vertex -10.964789 0.081409 1.000000
+      vertex -10.684345 -1.734242 1.000000
+    endloop
+  endfacet
+  facet normal -0.999999 0.000000 0.001052
+    outer loop
+      vertex -10.964789 0.081409 61.000000
+      vertex -10.964789 1.918591 61.000000
+      vertex -10.987958 1.537464 38.981926
+    endloop
+  endfacet
+  facet normal -0.999972 -0.007519 0.000555
+    outer loop
+      vertex -10.964789 0.081409 61.000000
+      vertex -10.987958 1.537464 38.981926
+      vertex -10.978530 0.282484 38.967758
+    endloop
+  endfacet
+  facet normal -0.994802 -0.101828 -0.000309
+    outer loop
+      vertex -10.964789 0.081409 61.000000
+      vertex -10.978530 0.282484 38.967758
+      vertex -10.875323 -0.725314 38.811741
+    endloop
+  endfacet
+  facet normal -0.977250 -0.212090 0.000845
+    outer loop
+      vertex -10.557199 -2.229729 23.680925
+      vertex -10.855250 -0.858236 23.218807
+      vertex -10.684345 -1.734242 1.000000
+    endloop
+  endfacet
+  facet normal -0.953396 -0.301720 -0.001247
+    outer loop
+      vertex -10.130030 -3.485805 1.000000
+      vertex -10.557199 -2.229729 23.680925
+      vertex -10.684345 -1.734242 1.000000
+    endloop
+  endfacet
+  facet normal -0.948898 -0.315582 -0.000394
+    outer loop
+      vertex -10.191252 -3.330807 24.273626
+      vertex -10.557199 -2.229729 23.680925
+      vertex -10.130030 -3.485805 1.000000
+    endloop
+  endfacet
+  facet normal -0.981512 -0.191401 -0.000255
+    outer loop
+      vertex -10.684345 -1.734242 61.000000
+      vertex -10.875323 -0.725314 38.811741
+      vertex -10.653047 -1.864698 38.469505
+    endloop
+  endfacet
+  facet normal -0.988279 -0.152649 0.001565
+    outer loop
+      vertex -10.684345 -1.734242 61.000000
+      vertex -10.964789 0.081409 61.000000
+      vertex -10.875323 -0.725314 38.811741
+    endloop
+  endfacet
+  facet normal -0.959093 -0.283090 0.000307
+    outer loop
+      vertex -10.341965 -2.919164 37.974251
+      vertex -10.684345 -1.734242 61.000000
+      vertex -10.653047 -1.864698 38.469505
+    endloop
+  endfacet
+  facet normal -0.916637 -0.399720 0.000251
+    outer loop
+      vertex -9.786845 -4.257754 24.970406
+      vertex -10.191252 -3.330807 24.273626
+      vertex -10.130030 -3.485805 1.000000
+    endloop
+  endfacet
+  facet normal -0.896165 -0.443719 -0.001459
+    outer loop
+      vertex -9.786845 -4.257754 24.970406
+      vertex -10.130030 -3.485805 1.000000
+      vertex -9.314836 -5.132224 1.000000
+    endloop
+  endfacet
+  facet normal -0.927306 -0.374303 -0.000676
+    outer loop
+      vertex -10.130030 -3.485805 61.000000
+      vertex -10.341965 -2.919164 37.974251
+      vertex -9.880194 -4.061757 37.195049
+    endloop
+  endfacet
+  facet normal -0.953396 -0.301720 0.001350
+    outer loop
+      vertex -10.130030 -3.485805 61.000000
+      vertex -10.684345 -1.734242 61.000000
+      vertex -10.341965 -2.919164 37.974251
+    endloop
+  endfacet
+  facet normal -0.877659 -0.479286 0.000203
+    outer loop
+      vertex -9.252076 -5.236581 25.989506
+      vertex -9.786845 -4.257754 24.970406
+      vertex -9.314836 -5.132224 1.000000
+    endloop
+  endfacet
+  facet normal -0.817928 -0.575318 -0.001329
+    outer loop
+      vertex -8.751478 -5.993474 27.115244
+      vertex -9.314836 -5.132224 1.000000
+      vertex -8.257870 -6.634909 1.000000
+    endloop
+  endfacet
+  facet normal -0.833934 -0.551865 -0.000210
+    outer loop
+      vertex -8.751478 -5.993474 27.115244
+      vertex -9.252076 -5.236581 25.989506
+      vertex -9.314836 -5.132224 1.000000
+    endloop
+  endfacet
+  facet normal -0.885356 -0.464913 0.000121
+    outer loop
+      vertex -9.314836 -5.132224 61.000000
+      vertex -9.880194 -4.061757 37.195049
+      vertex -9.345053 -5.081109 36.198086
+    endloop
+  endfacet
+  facet normal -0.841635 -0.540048 -0.000088
+    outer loop
+      vertex -9.314836 -5.132224 61.000000
+      vertex -9.345053 -5.081109 36.198086
+      vertex -8.837354 -5.872151 35.095551
+    endloop
+  endfacet
+  facet normal -0.896165 -0.443719 0.001330
+    outer loop
+      vertex -9.314836 -5.132224 61.000000
+      vertex -10.130030 -3.485805 61.000000
+      vertex -9.880194 -4.061757 37.195049
+    endloop
+  endfacet
+  facet normal -0.795211 -0.606333 -0.000138
+    outer loop
+      vertex -8.329084 -6.547727 28.348244
+      vertex -8.751478 -5.993474 27.115244
+      vertex -8.257870 -6.634909 1.000000
+    endloop
+  endfacet
+  facet normal -0.765583 -0.643337 0.000057
+    outer loop
+      vertex -8.039007 -6.892804 29.694763
+      vertex -8.329084 -6.547727 28.348244
+      vertex -8.257870 -6.634909 1.000000
+    endloop
+  endfacet
+  facet normal -0.720521 -0.693432 -0.000901
+    outer loop
+      vertex -7.945369 -6.998773 31.140100
+      vertex -8.257870 -6.634909 1.000000
+      vertex -6.983908 -7.958639 1.000000
+    endloop
+  endfacet
+  facet normal -0.747545 -0.664211 -0.000268
+    outer loop
+      vertex -7.945369 -6.998773 31.140100
+      vertex -8.039007 -6.892804 29.694763
+      vertex -8.257870 -6.634909 1.000000
+    endloop
+  endfacet
+  facet normal -0.801571 -0.597900 0.000326
+    outer loop
+      vertex -8.257870 -6.634909 61.000000
+      vertex -8.837354 -5.872151 35.095551
+      vertex -8.399053 -6.460416 33.888287
+    endloop
+  endfacet
+  facet normal -0.770308 -0.637672 -0.000093
+    outer loop
+      vertex -8.257870 -6.634909 61.000000
+      vertex -8.399053 -6.460416 33.888287
+      vertex -8.080567 -6.844954 32.567387
+    endloop
+  endfacet
+  facet normal -0.750153 -0.661264 0.000207
+    outer loop
+      vertex -8.257870 -6.634909 61.000000
+      vertex -8.080567 -6.844954 32.567387
+      vertex -7.945369 -6.998773 31.140100
+    endloop
+  endfacet
+  facet normal -0.817928 -0.575318 0.001357
+    outer loop
+      vertex -8.257870 -6.634909 61.000000
+      vertex -9.314836 -5.132224 61.000000
+      vertex -8.837354 -5.872151 35.095551
+    endloop
+  endfacet
+  facet normal -0.720521 -0.693432 0.000909
+    outer loop
+      vertex -6.983908 -7.958639 61.000000
+      vertex -8.257870 -6.634909 61.000000
+      vertex -7.945369 -6.998773 31.140100
+    endloop
+  endfacet
+  facet normal -0.706519 -0.707694 -0.000000
+    outer loop
+      vertex -6.983908 -7.958639 61.000000
+      vertex -7.945369 -6.998773 31.140100
+      vertex -6.983908 -7.958639 1.000000
+    endloop
+  endfacet
+  facet normal -0.606225 -0.795293 -0.000000
+    outer loop
+      vertex -5.522810 -9.072385 61.000000
+      vertex -6.983908 -7.958639 1.000000
+      vertex -5.522810 -9.072385 1.000000
+    endloop
+  endfacet
+  facet normal -0.606225 -0.795293 0.000000
+    outer loop
+      vertex -5.522810 -9.072385 61.000000
+      vertex -6.983908 -7.958639 61.000000
+      vertex -6.983908 -7.958639 1.000000
+    endloop
+  endfacet
+  facet normal -0.477720 -0.878512 -0.000000
+    outer loop
+      vertex -3.908824 -9.950044 61.000000
+      vertex -5.522810 -9.072385 1.000000
+      vertex -3.908824 -9.950044 1.000000
+    endloop
+  endfacet
+  facet normal -0.477720 -0.878512 0.000000
+    outer loop
+      vertex -3.908824 -9.950044 61.000000
+      vertex -5.522810 -9.072385 61.000000
+      vertex -5.522810 -9.072385 1.000000
+    endloop
+  endfacet
+  facet normal -0.338017 -0.941140 -0.000000
+    outer loop
+      vertex -2.179778 -10.571042 61.000000
+      vertex -3.908824 -9.950044 1.000000
+      vertex -2.179778 -10.571042 1.000000
+    endloop
+  endfacet
+  facet normal -0.338017 -0.941140 0.000000
+    outer loop
+      vertex -2.179778 -10.571042 61.000000
+      vertex -3.908824 -9.950044 61.000000
+      vertex -3.908824 -9.950044 1.000000
+    endloop
+  endfacet
+  facet normal -0.190391 -0.981708 -0.000000
+    outer loop
+      vertex -0.376201 -10.920825 61.000000
+      vertex -2.179778 -10.571042 1.000000
+      vertex -0.376201 -10.920825 1.000000
+    endloop
+  endfacet
+  facet normal -0.190391 -0.981708 0.000000
+    outer loop
+      vertex -0.376201 -10.920825 61.000000
+      vertex -2.179778 -10.571042 61.000000
+      vertex -2.179778 -10.571042 1.000000
+    endloop
+  endfacet
+  facet normal -0.038303 -0.999266 -0.000000
+    outer loop
+      vertex 1.459633 -10.991194 61.000000
+      vertex -0.376201 -10.920825 1.000000
+      vertex 1.459633 -10.991194 1.000000
+    endloop
+  endfacet
+  facet normal -0.038303 -0.999266 0.000000
+    outer loop
+      vertex 1.459633 -10.991194 61.000000
+      vertex -0.376201 -10.920825 61.000000
+      vertex -0.376201 -10.920825 1.000000
+    endloop
+  endfacet
+  facet normal 0.114683 -0.993402 0.000000
+    outer loop
+      vertex 3.284693 -10.780499 61.000000
+      vertex 1.459633 -10.991194 61.000000
+      vertex 1.459633 -10.991194 1.000000
+    endloop
+  endfacet
+  facet normal 0.114683 -0.993402 0.000000
+    outer loop
+      vertex 3.284693 -10.780499 61.000000
+      vertex 1.459633 -10.991194 1.000000
+      vertex 3.284693 -10.780499 1.000000
+    endloop
+  endfacet
+  facet normal 0.264982 -0.964253 0.000000
+    outer loop
+      vertex 5.056202 -10.293680 61.000000
+      vertex 3.284693 -10.780499 61.000000
+      vertex 3.284693 -10.780499 1.000000
+    endloop
+  endfacet
+  facet normal 0.264982 -0.964253 0.000000
+    outer loop
+      vertex 5.056202 -10.293680 61.000000
+      vertex 3.284693 -10.780499 1.000000
+      vertex 5.056202 -10.293680 1.000000
+    endloop
+  endfacet
+  facet normal 0.409069 -0.912504 0.000000
+    outer loop
+      vertex 6.732638 -9.542147 61.000000
+      vertex 5.056202 -10.293680 61.000000
+      vertex 5.056202 -10.293680 1.000000
+    endloop
+  endfacet
+  facet normal 0.409069 -0.912504 0.000000
+    outer loop
+      vertex 6.732638 -9.542147 61.000000
+      vertex 5.056202 -10.293680 1.000000
+      vertex 6.732638 -9.542147 1.000000
+    endloop
+  endfacet
+  facet normal 0.543567 -0.839365 0.000000
+    outer loop
+      vertex 8.274705 -8.543514 61.000000
+      vertex 6.732638 -9.542147 61.000000
+      vertex 6.732638 -9.542147 1.000000
+    endloop
+  endfacet
+  facet normal 0.543567 -0.839365 0.000000
+    outer loop
+      vertex 8.274705 -8.543514 61.000000
+      vertex 6.732638 -9.542147 1.000000
+      vertex 8.274705 -8.543514 1.000000
+    endloop
+  endfacet
+  facet normal 0.665326 -0.746553 0.000000
+    outer loop
+      vertex 9.646259 -7.321190 61.000000
+      vertex 8.274705 -8.543514 61.000000
+      vertex 8.274705 -8.543514 1.000000
+    endloop
+  endfacet
+  facet normal 0.665326 -0.746553 0.000000
+    outer loop
+      vertex 9.646259 -7.321190 61.000000
+      vertex 8.274705 -8.543514 1.000000
+      vertex 9.646259 -7.321190 1.000000
+    endloop
+  endfacet
+  facet normal 0.864531 -0.502578 -0.001506
+    outer loop
+      vertex 11.467756 -4.867373 29.745436
+      vertex 11.397617 -4.990790 30.667681
+      vertex 10.815152 -5.903824 1.000000
+    endloop
+  endfacet
+  facet normal 0.859569 -0.511018 -0.001089
+    outer loop
+      vertex 11.467756 -4.867373 29.745436
+      vertex 10.815152 -5.903824 1.000000
+      vertex 11.753986 -4.324638 1.000000
+    endloop
+  endfacet
+  facet normal 0.877876 -0.478887 -0.000300
+    outer loop
+      vertex 11.609928 -4.606196 28.862112
+      vertex 11.467756 -4.867373 29.745436
+      vertex 11.753986 -4.324638 1.000000
+    endloop
+  endfacet
+  facet normal 0.852959 -0.521978 0.000667
+    outer loop
+      vertex 10.815152 -5.903824 61.000000
+      vertex 11.397617 -4.990790 30.667681
+      vertex 11.408753 -4.971420 31.584927
+    endloop
+  endfacet
+  facet normal 0.771489 -0.636242 0.000000
+    outer loop
+      vertex 10.815152 -5.903824 61.000000
+      vertex 9.646259 -7.321190 61.000000
+      vertex 9.646259 -7.321190 1.000000
+    endloop
+  endfacet
+  facet normal 0.843057 -0.537824 0.000000
+    outer loop
+      vertex 10.815152 -5.903824 61.000000
+      vertex 10.815152 -5.903824 1.000000
+      vertex 11.397617 -4.990790 30.667681
+    endloop
+  endfacet
+  facet normal 0.771489 -0.636242 0.000000
+    outer loop
+      vertex 10.815152 -5.903824 61.000000
+      vertex 9.646259 -7.321190 1.000000
+      vertex 10.815152 -5.903824 1.000000
+    endloop
+  endfacet
+  facet normal 0.892625 -0.450800 0.000060
+    outer loop
+      vertex 11.808237 -4.213636 28.030489
+      vertex 11.609928 -4.606196 28.862112
+      vertex 11.753986 -4.324638 1.000000
+    endloop
+  endfacet
+  facet normal 0.910747 -0.412964 -0.000132
+    outer loop
+      vertex 12.045211 -3.690770 27.258787
+      vertex 11.808237 -4.213636 28.030489
+      vertex 11.753986 -4.324638 1.000000
+    endloop
+  endfacet
+  facet normal 0.927502 -0.373817 -0.001263
+    outer loop
+      vertex 12.045211 -3.690770 27.258787
+      vertex 11.753986 -4.324638 1.000000
+      vertex 12.440757 -2.620647 1.000000
+    endloop
+  endfacet
+  facet normal 0.931361 -0.364096 -0.000809
+    outer loop
+      vertex 12.304571 -3.025752 26.551031
+      vertex 12.045211 -3.690770 27.258787
+      vertex 12.440757 -2.620647 1.000000
+    endloop
+  endfacet
+  facet normal 0.911398 -0.411527 0.000104
+    outer loop
+      vertex 11.753986 -4.324638 61.000000
+      vertex 11.792848 -4.245421 33.912998
+      vertex 12.073238 -3.624218 34.823170
+    endloop
+  endfacet
+  facet normal 0.889378 -0.457173 -0.000061
+    outer loop
+      vertex 11.753986 -4.324638 61.000000
+      vertex 11.545403 -4.726647 32.790394
+      vertex 11.792848 -4.245421 33.912998
+    endloop
+  endfacet
+  facet normal 0.872043 -0.489429 0.000527
+    outer loop
+      vertex 11.753986 -4.324638 61.000000
+      vertex 11.408753 -4.971420 31.584927
+      vertex 11.545403 -4.726647 32.790394
+    endloop
+  endfacet
+  facet normal 0.859569 -0.511018 0.001148
+    outer loop
+      vertex 11.753986 -4.324638 61.000000
+      vertex 10.815152 -5.903824 61.000000
+      vertex 11.408753 -4.971420 31.584927
+    endloop
+  endfacet
+  facet normal 0.953628 -0.300988 0.000311
+    outer loop
+      vertex 12.565912 -2.198387 25.923552
+      vertex 12.304571 -3.025752 26.551031
+      vertex 12.440757 -2.620647 1.000000
+    endloop
+  endfacet
+  facet normal 0.973695 -0.227854 -0.001029
+    outer loop
+      vertex 12.859365 -0.831791 1.000000
+      vertex 12.565912 -2.198387 25.923552
+      vertex 12.440757 -2.620647 1.000000
+    endloop
+  endfacet
+  facet normal 0.974536 -0.224228 -0.000820
+    outer loop
+      vertex 12.802445 -1.168476 25.405563
+      vertex 12.565912 -2.198387 25.923552
+      vertex 12.859365 -0.831791 1.000000
+    endloop
+  endfacet
+  facet normal 0.970908 -0.239453 0.000669
+    outer loop
+      vertex 12.440757 -2.620647 61.000000
+      vertex 12.535419 -2.306674 36.006588
+      vertex 12.751836 -1.427831 36.486862
+    endloop
+  endfacet
+  facet normal 0.952150 -0.305632 -0.000233
+    outer loop
+      vertex 12.440757 -2.620647 61.000000
+      vertex 12.303495 -3.028771 35.446236
+      vertex 12.535419 -2.306674 36.006588
+    endloop
+  endfacet
+  facet normal 0.932425 -0.361363 0.000763
+    outer loop
+      vertex 12.440757 -2.620647 61.000000
+      vertex 12.073238 -3.624218 34.823170
+      vertex 12.303495 -3.028771 35.446236
+    endloop
+  endfacet
+  facet normal 0.927502 -0.373817 0.001309
+    outer loop
+      vertex 12.440757 -2.620647 61.000000
+      vertex 11.753986 -4.324638 61.000000
+      vertex 12.073238 -3.624218 34.823170
+    endloop
+  endfacet
+  facet normal 0.997065 -0.076549 -0.001338
+    outer loop
+      vertex 12.941537 -0.183087 25.117798
+      vertex 12.859365 -0.831791 1.000000
+      vertex 13.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.990200 -0.139659 0.000383
+    outer loop
+      vertex 12.941537 -0.183087 25.117798
+      vertex 12.802445 -1.168476 25.405563
+      vertex 12.859365 -0.831791 1.000000
+    endloop
+  endfacet
+  facet normal 0.998781 -0.049356 0.000000
+    outer loop
+      vertex 13.000000 1.000000 25.000000
+      vertex 12.941537 -0.183087 25.117798
+      vertex 13.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.987606 -0.156951 -0.000516
+    outer loop
+      vertex 12.859365 -0.831791 61.000000
+      vertex 12.751836 -1.427831 36.486862
+      vertex 12.925056 -0.339040 36.848671
+    endloop
+  endfacet
+  facet normal 0.973695 -0.227853 0.001269
+    outer loop
+      vertex 12.859365 -0.831791 61.000000
+      vertex 12.440757 -2.620647 61.000000
+      vertex 12.751836 -1.427831 36.486862
+    endloop
+  endfacet
+  facet normal 0.998437 -0.055881 0.000000
+    outer loop
+      vertex 13.000000 1.000000 61.000000
+      vertex 12.925056 -0.339040 36.848671
+      vertex 13.000000 1.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.997065 -0.076549 0.001150
+    outer loop
+      vertex 13.000000 1.000000 61.000000
+      vertex 12.859365 -0.831791 61.000000
+      vertex 12.925056 -0.339040 36.848671
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 12.859365 2.831791 1.000000
+      vertex 11.753986 6.324638 1.000000
+      vertex 12.440757 4.620647 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -8.257870 -6.634909 1.000000
+      vertex -5.522810 -9.072385 1.000000
+      vertex -6.983908 -7.958639 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -9.314836 -5.132224 1.000000
+      vertex -10.130030 -3.485805 1.000000
+      vertex -8.257870 -6.634909 1.000000
+    endloop
+  endfacet
+  facet normal -0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 6.732638 11.542147 1.000000
+      vertex 8.274705 10.543514 1.000000
+      vertex 5.056202 12.293680 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 3.284693 12.780499 1.000000
+      vertex 8.274705 10.543514 1.000000
+      vertex -3.908824 11.950044 1.000000
+    endloop
+  endfacet
+  facet normal -0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 5.056202 12.293680 1.000000
+      vertex 8.274705 10.543514 1.000000
+      vertex 3.284693 12.780499 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -5.522810 -9.072385 1.000000
+      vertex -2.179778 -10.571042 1.000000
+      vertex -3.908824 -9.950044 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -2.179778 -10.571042 1.000000
+      vertex 8.274705 10.543514 1.000000
+      vertex 8.274705 -8.543514 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -8.257870 -6.634909 1.000000
+      vertex -2.179778 -10.571042 1.000000
+      vertex -5.522810 -9.072385 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -3.908824 11.950044 1.000000
+      vertex 8.274705 10.543514 1.000000
+      vertex -2.179778 -10.571042 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -10.130030 -3.485805 1.000000
+      vertex -2.179778 -10.571042 1.000000
+      vertex -8.257870 -6.634909 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 8.274705 -8.543514 1.000000
+      vertex 8.274705 10.543514 1.000000
+      vertex 11.753986 -4.324638 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 11.753986 -4.324638 1.000000
+      vertex 8.274705 10.543514 1.000000
+      vertex 12.859365 -0.831791 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 11.753986 6.324638 1.000000
+      vertex 9.646259 9.321190 1.000000
+      vertex 10.815152 7.903824 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 12.859365 -0.831791 1.000000
+      vertex 9.646259 9.321190 1.000000
+      vertex 12.859365 2.831791 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 12.859365 2.831791 1.000000
+      vertex 9.646259 9.321190 1.000000
+      vertex 11.753986 6.324638 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 8.274705 10.543514 1.000000
+      vertex 9.646259 9.321190 1.000000
+      vertex 12.859365 -0.831791 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -10.684345 -1.734242 1.000000
+      vertex -10.964789 0.081409 1.000000
+      vertex -10.130030 -3.485805 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -2.179778 -10.571042 1.000000
+      vertex 1.459633 -10.991194 1.000000
+      vertex -0.376201 -10.920825 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 1.459633 -10.991194 1.000000
+      vertex 5.056202 -10.293680 1.000000
+      vertex 3.284693 -10.780499 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -2.179778 -10.571042 1.000000
+      vertex 5.056202 -10.293680 1.000000
+      vertex 1.459633 -10.991194 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -10.684345 3.734242 1.000000
+      vertex -10.130030 5.485805 1.000000
+      vertex -10.964789 1.918591 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -10.964789 1.918591 1.000000
+      vertex -10.130030 5.485805 1.000000
+      vertex -10.964789 0.081409 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -10.964789 0.081409 1.000000
+      vertex -10.130030 5.485805 1.000000
+      vertex -10.130030 -3.485805 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 5.056202 -10.293680 1.000000
+      vertex 8.274705 -8.543514 1.000000
+      vertex 6.732638 -9.542147 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -2.179778 -10.571042 1.000000
+      vertex 8.274705 -8.543514 1.000000
+      vertex 5.056202 -10.293680 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -8.257870 8.634910 1.000000
+      vertex -6.983908 9.958638 1.000000
+      vertex -9.314836 7.132224 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -9.314836 7.132224 1.000000
+      vertex -6.983908 9.958638 1.000000
+      vertex -10.130030 5.485805 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -10.130030 5.485805 1.000000
+      vertex -6.983908 9.958638 1.000000
+      vertex -10.130030 -3.485805 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 8.274705 -8.543514 1.000000
+      vertex 10.815152 -5.903824 1.000000
+      vertex 9.646259 -7.321190 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 8.274705 -8.543514 1.000000
+      vertex 11.753986 -4.324638 1.000000
+      vertex 10.815152 -5.903824 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -5.522810 11.072385 1.000000
+      vertex -3.908824 11.950044 1.000000
+      vertex -6.983908 9.958638 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -10.130030 -3.485805 1.000000
+      vertex -3.908824 11.950044 1.000000
+      vertex -2.179778 -10.571042 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -6.983908 9.958638 1.000000
+      vertex -3.908824 11.950044 1.000000
+      vertex -10.130030 -3.485805 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 11.753986 -4.324638 1.000000
+      vertex 12.859365 -0.831791 1.000000
+      vertex 12.440757 -2.620647 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -2.179778 12.571042 1.000000
+      vertex -0.376201 12.920825 1.000000
+      vertex -3.908824 11.950044 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex -0.376201 12.920825 1.000000
+      vertex 1.459633 12.991194 1.000000
+      vertex -3.908824 11.950044 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 12.859365 -0.831791 1.000000
+      vertex 12.859365 2.831791 1.000000
+      vertex 13.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 -1.000000
+    outer loop
+      vertex 1.459633 12.991194 1.000000
+      vertex 3.284693 12.780499 1.000000
+      vertex -3.908824 11.950044 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 11.753986 6.324638 61.000000
+      vertex 12.859365 2.831791 61.000000
+      vertex 12.440757 4.620647 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -5.522810 -9.072385 61.000000
+      vertex -8.257870 -6.634909 61.000000
+      vertex -6.983908 -7.958639 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -10.130030 -3.485805 61.000000
+      vertex -9.314836 -5.132224 61.000000
+      vertex -8.257870 -6.634909 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.274705 10.543514 61.000000
+      vertex 6.732638 11.542147 61.000000
+      vertex 5.056202 12.293680 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.274705 10.543514 61.000000
+      vertex 3.284693 12.780499 61.000000
+      vertex -3.908824 11.950044 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.274705 10.543514 61.000000
+      vertex 5.056202 12.293680 61.000000
+      vertex 3.284693 12.780499 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -2.179778 -10.571042 61.000000
+      vertex -5.522810 -9.072385 61.000000
+      vertex -3.908824 -9.950044 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.274705 10.543514 61.000000
+      vertex -2.179778 -10.571042 61.000000
+      vertex 8.274705 -8.543514 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -2.179778 -10.571042 61.000000
+      vertex -8.257870 -6.634909 61.000000
+      vertex -5.522810 -9.072385 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.274705 10.543514 61.000000
+      vertex -3.908824 11.950044 61.000000
+      vertex -2.179778 -10.571042 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -2.179778 -10.571042 61.000000
+      vertex -10.130030 -3.485805 61.000000
+      vertex -8.257870 -6.634909 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.274705 10.543514 61.000000
+      vertex 8.274705 -8.543514 61.000000
+      vertex 11.753986 -4.324638 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.274705 10.543514 61.000000
+      vertex 11.753986 -4.324638 61.000000
+      vertex 12.859365 -0.831791 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 9.646259 9.321190 61.000000
+      vertex 11.753986 6.324638 61.000000
+      vertex 10.815152 7.903824 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 9.646259 9.321190 61.000000
+      vertex 12.859365 -0.831791 61.000000
+      vertex 12.859365 2.831791 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 9.646259 9.321190 61.000000
+      vertex 12.859365 2.831791 61.000000
+      vertex 11.753986 6.324638 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 9.646259 9.321190 61.000000
+      vertex 8.274705 10.543514 61.000000
+      vertex 12.859365 -0.831791 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -10.964789 0.081409 61.000000
+      vertex -10.684345 -1.734242 61.000000
+      vertex -10.130030 -3.485805 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 1.459633 -10.991194 61.000000
+      vertex -2.179778 -10.571042 61.000000
+      vertex -0.376201 -10.920825 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 5.056202 -10.293680 61.000000
+      vertex 1.459633 -10.991194 61.000000
+      vertex 3.284693 -10.780499 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 5.056202 -10.293680 61.000000
+      vertex -2.179778 -10.571042 61.000000
+      vertex 1.459633 -10.991194 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -10.130030 5.485805 61.000000
+      vertex -10.684345 3.734242 61.000000
+      vertex -10.964789 1.918591 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -10.130030 5.485805 61.000000
+      vertex -10.964789 1.918591 61.000000
+      vertex -10.964789 0.081409 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -10.130030 5.485805 61.000000
+      vertex -10.964789 0.081409 61.000000
+      vertex -10.130030 -3.485805 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.274705 -8.543514 61.000000
+      vertex 5.056202 -10.293680 61.000000
+      vertex 6.732638 -9.542147 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 8.274705 -8.543514 61.000000
+      vertex -2.179778 -10.571042 61.000000
+      vertex 5.056202 -10.293680 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -6.983908 9.958638 61.000000
+      vertex -8.257870 8.634910 61.000000
+      vertex -9.314836 7.132224 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -6.983908 9.958638 61.000000
+      vertex -9.314836 7.132224 61.000000
+      vertex -10.130030 5.485805 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -6.983908 9.958638 61.000000
+      vertex -10.130030 5.485805 61.000000
+      vertex -10.130030 -3.485805 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 10.815152 -5.903824 61.000000
+      vertex 8.274705 -8.543514 61.000000
+      vertex 9.646259 -7.321190 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 11.753986 -4.324638 61.000000
+      vertex 8.274705 -8.543514 61.000000
+      vertex 10.815152 -5.903824 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -3.908824 11.950044 61.000000
+      vertex -5.522810 11.072385 61.000000
+      vertex -6.983908 9.958638 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -3.908824 11.950044 61.000000
+      vertex -10.130030 -3.485805 61.000000
+      vertex -2.179778 -10.571042 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -3.908824 11.950044 61.000000
+      vertex -6.983908 9.958638 61.000000
+      vertex -10.130030 -3.485805 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.859365 -0.831791 61.000000
+      vertex 11.753986 -4.324638 61.000000
+      vertex 12.440757 -2.620647 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex -0.376201 12.920825 61.000000
+      vertex -2.179778 12.571042 61.000000
+      vertex -3.908824 11.950044 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 1.459633 12.991194 61.000000
+      vertex -0.376201 12.920825 61.000000
+      vertex -3.908824 11.950044 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 12.859365 2.831791 61.000000
+      vertex 12.859365 -0.831791 61.000000
+      vertex 13.000000 1.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 3.284693 12.780499 61.000000
+      vertex 1.459633 12.991194 61.000000
+      vertex -3.908824 11.950044 61.000000
+    endloop
+  endfacet
+  facet normal -0.000854 -1.000000 0.000000
+    outer loop
+      vertex -7.945369 -6.998773 31.140100
+      vertex -34.000000 -6.976526 31.612394
+      vertex -34.000000 -6.976526 30.387606
+    endloop
+  endfacet
+  facet normal 0.001095 -0.994231 0.107252
+    outer loop
+      vertex -7.945369 -6.998773 31.140100
+      vertex -8.080567 -6.844954 32.567387
+      vertex -34.000000 -6.976526 31.612394
+    endloop
+  endfacet
+  facet normal -0.000887 -0.988280 -0.152649
+    outer loop
+      vertex -8.039007 -6.892804 29.694763
+      vertex -34.000000 -6.976526 30.387606
+      vertex -34.000000 -6.789563 29.177172
+    endloop
+  endfacet
+  facet normal 0.000000 0.997066 0.076549
+    outer loop
+      vertex -7.944272 9.000000 31.000000
+      vertex -34.000000 9.000000 31.000000
+      vertex -34.000000 8.906243 32.221195
+    endloop
+  endfacet
+  facet normal 0.001263 -0.997316 -0.073203
+    outer loop
+      vertex -8.039007 -6.892804 29.694763
+      vertex -7.945369 -6.998773 31.140100
+      vertex -34.000000 -6.976526 30.387606
+    endloop
+  endfacet
+  facet normal -0.000761 -0.953396 -0.301721
+    outer loop
+      vertex -8.329084 -6.547727 28.348244
+      vertex -34.000000 -6.789563 29.177172
+      vertex -34.000000 -6.420020 28.009464
+    endloop
+  endfacet
+  facet normal -0.000655 0.973695 0.227853
+    outer loop
+      vertex -8.070408 8.856698 32.507416
+      vertex -34.000000 8.906243 32.221195
+      vertex -34.000000 8.627172 33.413765
+    endloop
+  endfacet
+  facet normal 0.001102 -0.968638 -0.248473
+    outer loop
+      vertex -8.329084 -6.547727 28.348244
+      vertex -8.039007 -6.892804 29.694763
+      vertex -34.000000 -6.789563 29.177172
+    endloop
+  endfacet
+  facet normal 0.000857 0.995505 0.094709
+    outer loop
+      vertex -8.070408 8.856698 32.507416
+      vertex -7.944272 9.000000 31.000000
+      vertex -34.000000 8.906243 32.221195
+    endloop
+  endfacet
+  facet normal -0.000575 -0.896166 -0.443719
+    outer loop
+      vertex -8.751478 -5.993474 27.115244
+      vertex -34.000000 -6.420020 28.009464
+      vertex -34.000000 -5.876557 26.911850
+    endloop
+  endfacet
+  facet normal -0.000894 0.927502 0.373817
+    outer loop
+      vertex -8.402561 8.455994 33.899681
+      vertex -34.000000 8.627172 33.413765
+      vertex -34.000000 8.169325 34.549759
+    endloop
+  endfacet
+  facet normal 0.000877 -0.911974 -0.410248
+    outer loop
+      vertex -8.751478 -5.993474 27.115244
+      vertex -8.329084 -6.547727 28.348244
+      vertex -34.000000 -6.420020 28.009464
+    endloop
+  endfacet
+  facet normal 0.001171 0.960916 0.276838
+    outer loop
+      vertex -8.402561 8.455994 33.899681
+      vertex -8.070408 8.856698 32.507416
+      vertex -34.000000 8.627172 33.413765
+    endloop
+  endfacet
+  facet normal -0.000290 -0.817929 -0.575319
+    outer loop
+      vertex -9.252076 -5.236581 25.989506
+      vertex -34.000000 -5.876557 26.911850
+      vertex -34.000000 -5.171914 25.910061
+    endloop
+  endfacet
+  facet normal 0.000654 -0.829731 -0.558163
+    outer loop
+      vertex -9.252076 -5.236581 25.989506
+      vertex -8.751478 -5.993474 27.115244
+      vertex -34.000000 -5.876557 26.911850
+    endloop
+  endfacet
+  facet normal -0.000913 0.859569 0.511018
+    outer loop
+      vertex -8.866960 7.829576 35.166161
+      vertex -34.000000 8.169325 34.549759
+      vertex -34.000000 7.543435 35.602551
+    endloop
+  endfacet
+  facet normal 0.001232 0.896170 0.443709
+    outer loop
+      vertex -8.866960 7.829576 35.166161
+      vertex -8.402561 8.455994 33.899681
+      vertex -34.000000 8.169325 34.549759
+    endloop
+  endfacet
+  facet normal 0.000293 -0.720522 -0.693433
+    outer loop
+      vertex -9.786845 -4.257754 24.970406
+      vertex -34.000000 -5.171914 25.910061
+      vertex -34.000000 -4.322606 25.027575
+    endloop
+  endfacet
+  facet normal -0.000254 -0.606226 -0.795293
+    outer loop
+      vertex -9.786845 -4.257754 24.970406
+      vertex -34.000000 -4.322606 25.027575
+      vertex -34.000000 -3.348540 24.285076
+    endloop
+  endfacet
+  facet normal 0.001192 0.803405 0.595432
+    outer loop
+      vertex -9.405215 6.977583 36.316814
+      vertex -8.866960 7.829576 35.166161
+      vertex -34.000000 7.543435 35.602551
+    endloop
+  endfacet
+  facet normal 0.000340 -0.721125 -0.692805
+    outer loop
+      vertex -9.786845 -4.257754 24.970406
+      vertex -9.252076 -5.236581 25.989506
+      vertex -34.000000 -5.171914 25.910061
+    endloop
+  endfacet
+  facet normal -0.000728 0.771488 0.636243
+    outer loop
+      vertex -9.405215 6.977583 36.316814
+      vertex -34.000000 7.543435 35.602551
+      vertex -34.000000 6.764173 36.547459
+    endloop
+  endfacet
+  facet normal -0.000067 -0.477720 -0.878512
+    outer loop
+      vertex -10.191252 -3.330807 24.273626
+      vertex -34.000000 -3.348540 24.285076
+      vertex -34.000000 -2.272549 23.699970
+    endloop
+  endfacet
+  facet normal 0.000063 -0.600848 -0.799363
+    outer loop
+      vertex -10.191252 -3.330807 24.273626
+      vertex -9.786845 -4.257754 24.970406
+      vertex -34.000000 -3.348540 24.285076
+    endloop
+  endfacet
+  facet normal 0.000965 0.680608 0.732647
+    outer loop
+      vertex -9.968540 5.867354 37.348927
+      vertex -9.405215 6.977583 36.316814
+      vertex -34.000000 6.764173 36.547459
+    endloop
+  endfacet
+  facet normal -0.000069 0.665326 0.746553
+    outer loop
+      vertex -9.968540 5.867354 37.348927
+      vertex -34.000000 6.764173 36.547459
+      vertex -34.000000 5.849803 37.362343
+    endloop
+  endfacet
+  facet normal 0.000072 0.543568 0.839365
+    outer loop
+      vertex -9.968540 5.867354 37.348927
+      vertex -34.000000 5.849803 37.362343
+      vertex -34.000000 4.821759 38.028099
+    endloop
+  endfacet
+  facet normal -0.000147 -0.338016 -0.941140
+    outer loop
+      vertex -10.557199 -2.229729 23.680925
+      vertex -34.000000 -2.272549 23.699970
+      vertex -34.000000 -1.119852 23.285973
+    endloop
+  endfacet
+  facet normal 0.000150 -0.473945 -0.880554
+    outer loop
+      vertex -10.557199 -2.229729 23.680925
+      vertex -10.191252 -3.330807 24.273626
+      vertex -34.000000 -2.272549 23.699970
+    endloop
+  endfacet
+  facet normal 0.001471 0.520726 0.853723
+    outer loop
+      vertex -10.501171 4.423895 38.230278
+      vertex -9.968540 5.867354 37.348927
+      vertex -34.000000 4.821759 38.028099
+    endloop
+  endfacet
+  facet normal -0.000925 0.409068 0.912503
+    outer loop
+      vertex -10.501171 4.423895 38.230278
+      vertex -34.000000 4.821759 38.028099
+      vertex -34.000000 3.704135 38.529121
+    endloop
+  endfacet
+  facet normal -0.000697 -0.190391 -0.981708
+    outer loop
+      vertex -10.855250 -0.858236 23.218807
+      vertex -34.000000 -1.119852 23.285973
+      vertex -34.000000 0.082533 23.052784
+    endloop
+  endfacet
+  facet normal 0.000857 -0.319139 -0.947707
+    outer loop
+      vertex -10.855250 -0.858236 23.218807
+      vertex -10.557199 -2.229729 23.680925
+      vertex -34.000000 -1.119852 23.285973
+    endloop
+  endfacet
+  facet normal 0.001504 0.341172 0.940000
+    outer loop
+      vertex -10.829480 3.015787 38.741875
+      vertex -10.501171 4.423895 38.230278
+      vertex -34.000000 3.704135 38.529121
+    endloop
+  endfacet
+  facet normal -0.000982 0.264982 0.964253
+    outer loop
+      vertex -10.829480 3.015787 38.741875
+      vertex -34.000000 3.704135 38.529121
+      vertex -34.000000 2.523129 38.853668
+    endloop
+  endfacet
+  facet normal -0.000806 -0.038303 -0.999266
+    outer loop
+      vertex -10.985648 0.413291 23.021544
+      vertex -34.000000 0.082533 23.052784
+      vertex -34.000000 1.306422 23.005871
+    endloop
+  endfacet
+  facet normal 0.000861 -0.153219 -0.988192
+    outer loop
+      vertex -10.985648 0.413291 23.021544
+      vertex -10.855250 -0.858236 23.218807
+      vertex -34.000000 0.082533 23.052784
+    endloop
+  endfacet
+  facet normal 0.001358 0.160139 0.987093
+    outer loop
+      vertex -10.987958 1.537464 38.981926
+      vertex -10.829480 3.015787 38.741875
+      vertex -34.000000 2.523129 38.853668
+    endloop
+  endfacet
+  facet normal -0.000625 0.114682 0.993402
+    outer loop
+      vertex -10.987958 1.537464 38.981926
+      vertex -34.000000 2.523129 38.853668
+      vertex -34.000000 1.306422 38.994129
+    endloop
+  endfacet
+  facet normal 0.001197 0.013304 -0.999911
+    outer loop
+      vertex -10.973373 1.798958 23.039995
+      vertex -10.985648 0.413291 23.021544
+      vertex -34.000000 1.306422 23.005871
+    endloop
+  endfacet
+  facet normal -0.000981 0.114683 -0.993402
+    outer loop
+      vertex -10.973373 1.798958 23.039995
+      vertex -34.000000 1.306422 23.005871
+      vertex -34.000000 2.523129 23.146334
+    endloop
+  endfacet
+  facet normal 0.000644 -0.011284 0.999936
+    outer loop
+      vertex -10.978530 0.282484 38.967758
+      vertex -10.987958 1.537464 38.981926
+      vertex -34.000000 1.306422 38.994129
+    endloop
+  endfacet
+  facet normal -0.000559 -0.038303 0.999266
+    outer loop
+      vertex -10.978530 0.282484 38.967758
+      vertex -34.000000 1.306422 38.994129
+      vertex -34.000000 0.082533 38.947216
+    endloop
+  endfacet
+  facet normal 0.000702 0.167111 -0.985938
+    outer loop
+      vertex -10.853421 2.869869 23.221594
+      vertex -10.973373 1.798958 23.039995
+      vertex -34.000000 2.523129 23.146334
+    endloop
+  endfacet
+  facet normal -0.000834 0.264982 -0.964253
+    outer loop
+      vertex -10.853421 2.869869 23.221594
+      vertex -34.000000 2.523129 23.146334
+      vertex -34.000000 3.704135 23.470881
+    endloop
+  endfacet
+  facet normal 0.000447 -0.152943 0.988235
+    outer loop
+      vertex -10.875323 -0.725314 38.811741
+      vertex -10.978530 0.282484 38.967758
+      vertex -34.000000 0.082533 38.947216
+    endloop
+  endfacet
+  facet normal -0.000900 -0.190391 0.981708
+    outer loop
+      vertex -10.875323 -0.725314 38.811741
+      vertex -34.000000 0.082533 38.947216
+      vertex -34.000000 -1.119852 38.714027
+    endloop
+  endfacet
+  facet normal 0.000419 0.296962 -0.954889
+    outer loop
+      vertex -10.651127 3.872498 23.533491
+      vertex -10.853421 2.869869 23.221594
+      vertex -34.000000 3.704135 23.470881
+    endloop
+  endfacet
+  facet normal -0.000503 0.409068 -0.912504
+    outer loop
+      vertex -10.651127 3.872498 23.533491
+      vertex -34.000000 3.704135 23.470881
+      vertex -34.000000 4.821759 23.971903
+    endloop
+  endfacet
+  facet normal 0.000005 0.419394 -0.907804
+    outer loop
+      vertex -10.374597 4.823421 23.972807
+      vertex -10.651127 3.872498 23.533491
+      vertex -34.000000 4.821759 23.971903
+    endloop
+  endfacet
+  facet normal 0.000858 -0.287518 0.957775
+    outer loop
+      vertex -10.653047 -1.864698 38.469505
+      vertex -10.875323 -0.725314 38.811741
+      vertex -34.000000 -1.119852 38.714027
+    endloop
+  endfacet
+  facet normal -0.000006 0.543567 -0.839366
+    outer loop
+      vertex -10.374597 4.823421 23.972807
+      vertex -34.000000 4.821759 23.971903
+      vertex -34.000000 5.849803 24.637657
+    endloop
+  endfacet
+  facet normal -0.000927 -0.338016 0.941140
+    outer loop
+      vertex -10.653047 -1.864698 38.469505
+      vertex -34.000000 -1.119852 38.714027
+      vertex -34.000000 -2.272549 38.300030
+    endloop
+  endfacet
+  facet normal 0.000114 0.545514 -0.838102
+    outer loop
+      vertex -9.963696 5.878253 24.659445
+      vertex -10.374597 4.823421 23.972807
+      vertex -34.000000 5.849803 24.637657
+    endloop
+  endfacet
+  facet normal -0.000111 0.665326 -0.746553
+    outer loop
+      vertex -9.963696 5.878253 24.659445
+      vertex -34.000000 5.849803 24.637657
+      vertex -34.000000 6.764173 25.452539
+    endloop
+  endfacet
+  facet normal 0.000852 -0.424913 0.905234
+    outer loop
+      vertex -10.341965 -2.919164 37.974251
+      vertex -10.653047 -1.864698 38.469505
+      vertex -34.000000 -2.272549 38.300030
+    endloop
+  endfacet
+  facet normal -0.000960 -0.477720 0.878512
+    outer loop
+      vertex -10.341965 -2.919164 37.974251
+      vertex -34.000000 -2.272549 38.300030
+      vertex -34.000000 -3.348540 37.714924
+    endloop
+  endfacet
+  facet normal 0.000342 0.672132 -0.740431
+    outer loop
+      vertex -9.482093 6.841722 25.534264
+      vertex -9.963696 5.878253 24.659445
+      vertex -34.000000 6.764173 25.452539
+    endloop
+  endfacet
+  facet normal 0.001161 -0.563095 0.826391
+    outer loop
+      vertex -9.880194 -4.061757 37.195049
+      vertex -10.341965 -2.919164 37.974251
+      vertex -34.000000 -3.348540 37.714924
+    endloop
+  endfacet
+  facet normal -0.000319 0.771489 -0.636242
+    outer loop
+      vertex -9.482093 6.841722 25.534264
+      vertex -34.000000 6.764173 25.452539
+      vertex -34.000000 7.543435 26.397451
+    endloop
+  endfacet
+  facet normal -0.000784 -0.606225 0.795293
+    outer loop
+      vertex -9.880194 -4.061757 37.195049
+      vertex -34.000000 -3.348540 37.714924
+      vertex -34.000000 -4.322606 36.972427
+    endloop
+  endfacet
+  facet normal 0.000332 0.780546 -0.625098
+    outer loop
+      vertex -9.014555 7.611255 26.495411
+      vertex -9.482093 6.841722 25.534264
+      vertex -34.000000 7.543435 26.397451
+    endloop
+  endfacet
+  facet normal 0.000958 -0.698955 0.715165
+    outer loop
+      vertex -9.345053 -5.081109 36.198086
+      vertex -9.880194 -4.061757 37.195049
+      vertex -34.000000 -4.322606 36.972427
+    endloop
+  endfacet
+  facet normal -0.000330 0.859569 -0.511019
+    outer loop
+      vertex -9.014555 7.611255 26.495411
+      vertex -34.000000 7.543435 26.397451
+      vertex -34.000000 8.169325 27.450241
+    endloop
+  endfacet
+  facet normal -0.000388 -0.720522 0.693432
+    outer loop
+      vertex -9.345053 -5.081109 36.198086
+      vertex -34.000000 -4.322606 36.972427
+      vertex -34.000000 -5.171914 36.089939
+    endloop
+  endfacet
+  facet normal 0.000279 0.866512 -0.499157
+    outer loop
+      vertex -8.589377 8.214142 27.542231
+      vertex -9.014555 7.611255 26.495411
+      vertex -34.000000 8.169325 27.450241
+    endloop
+  endfacet
+  facet normal 0.000434 -0.812411 0.583085
+    outer loop
+      vertex -8.837354 -5.872151 35.095551
+      vertex -9.345053 -5.081109 36.198086
+      vertex -34.000000 -5.171914 36.089939
+    endloop
+  endfacet
+  facet normal -0.000283 0.927502 -0.373817
+    outer loop
+      vertex -8.589377 8.214142 27.542231
+      vertex -34.000000 8.169325 27.450241
+      vertex -34.000000 8.627172 28.586235
+    endloop
+  endfacet
+  facet normal -0.000026 -0.817929 0.575319
+    outer loop
+      vertex -8.837354 -5.872151 35.095551
+      vertex -34.000000 -5.171914 36.089939
+      vertex -34.000000 -5.876557 35.088150
+    endloop
+  endfacet
+  facet normal 0.000026 -0.896166 0.443719
+    outer loop
+      vertex -8.837354 -5.872151 35.095551
+      vertex -34.000000 -5.876557 35.088150
+      vertex -34.000000 -6.420020 33.990536
+    endloop
+  endfacet
+  facet normal 0.000256 0.931993 -0.362476
+    outer loop
+      vertex -8.241260 8.655006 28.676022
+      vertex -8.589377 8.214142 27.542231
+      vertex -34.000000 8.627172 28.586235
+    endloop
+  endfacet
+  facet normal -0.000258 0.973695 -0.227853
+    outer loop
+      vertex -8.241260 8.655006 28.676022
+      vertex -34.000000 8.627172 28.586235
+      vertex -34.000000 8.906243 29.778805
+    endloop
+  endfacet
+  facet normal 0.000074 0.975390 -0.220486
+    outer loop
+      vertex -8.023660 8.910345 29.805666
+      vertex -8.241260 8.655006 28.676022
+      vertex -34.000000 8.906243 29.778805
+    endloop
+  endfacet
+  facet normal 0.000331 -0.898910 0.438133
+    outer loop
+      vertex -8.399053 -6.460416 33.888287
+      vertex -8.837354 -5.872151 35.095551
+      vertex -34.000000 -6.420020 33.990536
+    endloop
+  endfacet
+  facet normal -0.000078 0.997066 -0.076549
+    outer loop
+      vertex -8.023660 8.910345 29.805666
+      vertex -34.000000 8.906243 29.778805
+      vertex -34.000000 9.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.000299 -0.953396 0.301720
+    outer loop
+      vertex -8.399053 -6.460416 33.888287
+      vertex -34.000000 -6.420020 33.990536
+      vertex -34.000000 -6.789563 32.822826
+    endloop
+  endfacet
+  facet normal 0.000000 0.997194 -0.074856
+    outer loop
+      vertex -7.944272 9.000000 31.000000
+      vertex -8.023660 8.910345 29.805666
+      vertex -34.000000 9.000000 31.000000
+    endloop
+  endfacet
+  facet normal -0.000608 -0.988280 0.152650
+    outer loop
+      vertex -8.080567 -6.844954 32.567387
+      vertex -34.000000 -6.789563 32.822826
+      vertex -34.000000 -6.976526 31.612394
+    endloop
+  endfacet
+  facet normal 0.000704 -0.960096 0.279671
+    outer loop
+      vertex -8.080567 -6.844954 32.567387
+      vertex -8.399053 -6.460416 33.888287
+      vertex -34.000000 -6.789563 32.822826
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 8.906243 32.221195
+      vertex -34.000000 8.169325 34.549759
+      vertex -34.000000 8.627172 33.413765
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 8.906243 29.778805
+      vertex -34.000000 4.821759 38.028099
+      vertex -34.000000 8.906243 32.221195
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 1.306422 38.994129
+      vertex -34.000000 4.821759 38.028099
+      vertex -34.000000 -4.322606 36.972427
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex -34.000000 3.704135 38.529121
+      vertex -34.000000 4.821759 38.028099
+      vertex -34.000000 2.523129 38.853668
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -5.171914 25.910061
+      vertex -34.000000 -3.348540 24.285076
+      vertex -34.000000 -4.322606 25.027575
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex -34.000000 2.523129 38.853668
+      vertex -34.000000 4.821759 38.028099
+      vertex -34.000000 1.306422 38.994129
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 1.306422 23.005871
+      vertex -34.000000 4.821759 38.028099
+      vertex -34.000000 5.849803 24.637657
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -4.322606 36.972427
+      vertex -34.000000 4.821759 38.028099
+      vertex -34.000000 1.306422 23.005871
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 5.849803 24.637657
+      vertex -34.000000 4.821759 38.028099
+      vertex -34.000000 8.169325 27.450241
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 8.169325 27.450241
+      vertex -34.000000 4.821759 38.028099
+      vertex -34.000000 8.906243 29.778805
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 4.821759 38.028099
+      vertex -34.000000 7.543435 35.602551
+      vertex -34.000000 8.906243 32.221195
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 8.906243 32.221195
+      vertex -34.000000 7.543435 35.602551
+      vertex -34.000000 8.169325 34.549759
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -5.171914 25.910061
+      vertex -34.000000 -2.272549 23.699970
+      vertex -34.000000 -3.348540 24.285076
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -5.876557 26.911850
+      vertex -34.000000 -6.420020 28.009464
+      vertex -34.000000 -5.171914 25.910061
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex -34.000000 5.849803 37.362343
+      vertex -34.000000 6.764173 36.547459
+      vertex -34.000000 4.821759 38.028099
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 4.821759 38.028099
+      vertex -34.000000 6.764173 36.547459
+      vertex -34.000000 7.543435 35.602551
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -2.272549 23.699970
+      vertex -34.000000 0.082533 23.052784
+      vertex -34.000000 -1.119852 23.285973
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -5.171914 25.910061
+      vertex -34.000000 0.082533 23.052784
+      vertex -34.000000 -2.272549 23.699970
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -6.789563 29.177172
+      vertex -34.000000 -6.976526 30.387606
+      vertex -34.000000 -6.420020 28.009464
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -6.420020 28.009464
+      vertex -34.000000 -6.976526 30.387606
+      vertex -34.000000 -5.171914 25.910061
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 0.082533 23.052784
+      vertex -34.000000 -6.976526 31.612394
+      vertex -34.000000 1.306422 23.005871
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -5.171914 25.910061
+      vertex -34.000000 -6.976526 31.612394
+      vertex -34.000000 0.082533 23.052784
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -6.976526 30.387606
+      vertex -34.000000 -6.976526 31.612394
+      vertex -34.000000 -5.171914 25.910061
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -6.789563 32.822826
+      vertex -34.000000 -6.420020 33.990536
+      vertex -34.000000 -6.976526 31.612394
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -6.976526 31.612394
+      vertex -34.000000 -6.420020 33.990536
+      vertex -34.000000 1.306422 23.005871
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 1.306422 23.005871
+      vertex -34.000000 4.821759 23.971903
+      vertex -34.000000 2.523129 23.146334
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 2.523129 23.146334
+      vertex -34.000000 4.821759 23.971903
+      vertex -34.000000 3.704135 23.470881
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 1.306422 23.005871
+      vertex -34.000000 5.849803 24.637657
+      vertex -34.000000 4.821759 23.971903
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -5.876557 35.088150
+      vertex -34.000000 -5.171914 36.089939
+      vertex -34.000000 -6.420020 33.990536
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 -6.420020 33.990536
+      vertex -34.000000 -4.322606 36.972427
+      vertex -34.000000 1.306422 23.005871
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -5.171914 36.089939
+      vertex -34.000000 -4.322606 36.972427
+      vertex -34.000000 -6.420020 33.990536
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 5.849803 24.637657
+      vertex -34.000000 8.169325 27.450241
+      vertex -34.000000 6.764173 25.452539
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 6.764173 25.452539
+      vertex -34.000000 8.169325 27.450241
+      vertex -34.000000 7.543435 26.397451
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -3.348540 37.714924
+      vertex -34.000000 -2.272549 38.300030
+      vertex -34.000000 -4.322606 36.972427
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -2.272549 38.300030
+      vertex -34.000000 -1.119852 38.714027
+      vertex -34.000000 -4.322606 36.972427
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 8.169325 27.450241
+      vertex -34.000000 8.906243 29.778805
+      vertex -34.000000 8.627172 28.586235
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 0.082533 38.947216
+      vertex -34.000000 1.306422 38.994129
+      vertex -34.000000 -1.119852 38.714027
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -34.000000 -1.119852 38.714027
+      vertex -34.000000 1.306422 38.994129
+      vertex -34.000000 -4.322606 36.972427
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -34.000000 8.906243 29.778805
+      vertex -34.000000 8.906243 32.221195
+      vertex -34.000000 9.000000 31.000000
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSS.stl b/apps/cpu/Multiphase/backup/FlowFocusingSS.stl
new file mode 100644
index 0000000000000000000000000000000000000000..fcf2ac4f64f6ac56f8aba0db2a8718f99f5958c2
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingSS.stl differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq.FCStd b/apps/cpu/Multiphase/backup/FlowFocusingSq.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..dbd1808d2a5dac239a7f1b2f22e3621b3059bd79
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingSq.FCStd differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq.FCStd1 b/apps/cpu/Multiphase/backup/FlowFocusingSq.FCStd1
new file mode 100644
index 0000000000000000000000000000000000000000..55f6c7b1690b72985f26a13836e7518c2704c71c
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingSq.FCStd1 differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq.ast b/apps/cpu/Multiphase/backup/FlowFocusingSq.ast
new file mode 100644
index 0000000000000000000000000000000000000000..97ed8f7759e6b733e0ddb09c136075c9920c1e9e
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/FlowFocusingSq.ast
@@ -0,0 +1,310 @@
+solid Mesh
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 1.000000
+      vertex 25.000000 1.000000 61.000000
+      vertex 1.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 25.000000 1.000000 61.000000
+      vertex 1.000000 1.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 1.000000 25.000000 1.000000
+      vertex 25.000000 25.000000 1.000000
+      vertex 1.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 25.000000 25.000000 1.000000
+      vertex 25.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 19.000000 25.000000
+      vertex 25.000000 1.000000 1.000000
+      vertex 25.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal 1.000000 -0.000000 0.000000
+    outer loop
+      vertex 25.000000 7.000000 25.000000
+      vertex 25.000000 1.000000 1.000000
+      vertex 25.000000 19.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 25.000000 19.000000 37.000000
+      vertex 25.000000 19.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 25.000000 19.000000 25.000000
+      vertex 25.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 61.000000
+      vertex 25.000000 7.000000 37.000000
+      vertex 25.000000 19.000000 37.000000
+    endloop
+  endfacet
+  facet normal 1.000000 -0.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 61.000000
+      vertex 25.000000 19.000000 37.000000
+      vertex 25.000000 25.000000 61.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 61.000000
+      vertex 25.000000 1.000000 1.000000
+      vertex 25.000000 7.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 61.000000
+      vertex 25.000000 7.000000 25.000000
+      vertex 25.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 1.000000 25.000000 61.000000
+      vertex 1.000000 1.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 25.000000 1.000000 61.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 1.000000 21.000000 23.000000
+      vertex 1.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 1.000000 5.000000 23.000000
+      vertex 1.000000 21.000000 23.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 21.000000 23.000000
+      vertex 1.000000 21.000000 39.000000
+      vertex 1.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 21.000000 39.000000
+      vertex 1.000000 25.000000 61.000000
+      vertex 1.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 5.000000 39.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 1.000000 21.000000 39.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 21.000000 39.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 1.000000 25.000000 61.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 1.000000 5.000000 23.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 5.000000 23.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 1.000000 5.000000 39.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 25.000000 25.000000 1.000000
+      vertex 1.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 1.000000 25.000000 1.000000
+      vertex 1.000000 25.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 25.000000 7.000000 25.000000
+      vertex 81.000000 19.000000 25.000000
+      vertex 81.000000 7.000000 25.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 25.000000 19.000000 25.000000
+      vertex 81.000000 19.000000 25.000000
+      vertex 25.000000 7.000000 25.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 81.000000 19.000000 25.000000
+      vertex 25.000000 19.000000 37.000000
+      vertex 81.000000 19.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 81.000000 19.000000 25.000000
+      vertex 25.000000 19.000000 25.000000
+      vertex 25.000000 19.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 81.000000 19.000000 37.000000
+      vertex 25.000000 7.000000 37.000000
+      vertex 81.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 81.000000 19.000000 37.000000
+      vertex 25.000000 19.000000 37.000000
+      vertex 25.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 25.000000 7.000000 37.000000
+      vertex 81.000000 7.000000 25.000000
+      vertex 81.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 25.000000 7.000000 25.000000
+      vertex 81.000000 7.000000 25.000000
+      vertex 25.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -24.000000 5.000000 23.000000
+      vertex 1.000000 21.000000 23.000000
+      vertex 1.000000 5.000000 23.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -24.000000 21.000000 23.000000
+      vertex 1.000000 21.000000 23.000000
+      vertex -24.000000 5.000000 23.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 1.000000 21.000000 23.000000
+      vertex -24.000000 21.000000 39.000000
+      vertex 1.000000 21.000000 39.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 1.000000 21.000000 23.000000
+      vertex -24.000000 21.000000 23.000000
+      vertex -24.000000 21.000000 39.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 1.000000 21.000000 39.000000
+      vertex -24.000000 5.000000 39.000000
+      vertex 1.000000 5.000000 39.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 1.000000 21.000000 39.000000
+      vertex -24.000000 21.000000 39.000000
+      vertex -24.000000 5.000000 39.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -24.000000 5.000000 39.000000
+      vertex 1.000000 5.000000 23.000000
+      vertex 1.000000 5.000000 39.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -24.000000 5.000000 23.000000
+      vertex 1.000000 5.000000 23.000000
+      vertex -24.000000 5.000000 39.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 81.000000 19.000000 37.000000
+      vertex 81.000000 7.000000 37.000000
+      vertex 81.000000 7.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 81.000000 19.000000 37.000000
+      vertex 81.000000 7.000000 25.000000
+      vertex 81.000000 19.000000 25.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -24.000000 5.000000 39.000000
+      vertex -24.000000 21.000000 39.000000
+      vertex -24.000000 5.000000 23.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -24.000000 5.000000 23.000000
+      vertex -24.000000 21.000000 39.000000
+      vertex -24.000000 21.000000 23.000000
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq.stl b/apps/cpu/Multiphase/backup/FlowFocusingSq.stl
new file mode 100644
index 0000000000000000000000000000000000000000..b91794e7e1cd1f01ff3fa373910b5a31e3381a70
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingSq.stl differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq1.FCStd b/apps/cpu/Multiphase/backup/FlowFocusingSq1.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..57b06dc9f17ca420e2bfdda80b16ee9ad21056e3
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingSq1.FCStd differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq1.FCStd1 b/apps/cpu/Multiphase/backup/FlowFocusingSq1.FCStd1
new file mode 100644
index 0000000000000000000000000000000000000000..fa315bacf26389f34692d3eb1c2947d3cb8d06ba
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingSq1.FCStd1 differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq1.ast b/apps/cpu/Multiphase/backup/FlowFocusingSq1.ast
new file mode 100644
index 0000000000000000000000000000000000000000..7acee410835ddb702a2ed2ca798e663db3812f8f
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/FlowFocusingSq1.ast
@@ -0,0 +1,310 @@
+solid Mesh
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 1.000000
+      vertex 25.000000 1.000000 61.000000
+      vertex 1.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 25.000000 1.000000 61.000000
+      vertex 1.000000 1.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 1.000000 25.000000 1.000000
+      vertex 25.000000 25.000000 1.000000
+      vertex 1.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 25.000000 25.000000 1.000000
+      vertex 25.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 19.000000 25.000000
+      vertex 25.000000 1.000000 1.000000
+      vertex 25.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal 1.000000 -0.000000 0.000000
+    outer loop
+      vertex 25.000000 7.000000 25.000000
+      vertex 25.000000 1.000000 1.000000
+      vertex 25.000000 19.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 25.000000 19.000000 37.000000
+      vertex 25.000000 19.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 25.000000 19.000000 25.000000
+      vertex 25.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 61.000000
+      vertex 25.000000 7.000000 37.000000
+      vertex 25.000000 19.000000 37.000000
+    endloop
+  endfacet
+  facet normal 1.000000 -0.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 61.000000
+      vertex 25.000000 19.000000 37.000000
+      vertex 25.000000 25.000000 61.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 61.000000
+      vertex 25.000000 1.000000 1.000000
+      vertex 25.000000 7.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 61.000000
+      vertex 25.000000 7.000000 25.000000
+      vertex 25.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 1.000000 25.000000 61.000000
+      vertex 1.000000 1.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 25.000000 1.000000 61.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 1.000000 18.000000 18.000000
+      vertex 1.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 1.000000 8.000000 18.000000
+      vertex 1.000000 18.000000 18.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 18.000000 18.000000
+      vertex 1.000000 18.000000 44.000000
+      vertex 1.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 18.000000 44.000000
+      vertex 1.000000 25.000000 61.000000
+      vertex 1.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 8.000000 44.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 1.000000 18.000000 44.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 18.000000 44.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 1.000000 25.000000 61.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 1.000000 8.000000 18.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 8.000000 18.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 1.000000 8.000000 44.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 25.000000 25.000000 1.000000
+      vertex 1.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 1.000000 25.000000 1.000000
+      vertex 1.000000 25.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 25.000000 19.000000 25.000000
+      vertex 81.000000 19.000000 25.000000
+      vertex 25.000000 7.000000 25.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 25.000000 7.000000 25.000000
+      vertex 81.000000 19.000000 25.000000
+      vertex 81.000000 7.000000 25.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 81.000000 19.000000 25.000000
+      vertex 25.000000 19.000000 37.000000
+      vertex 81.000000 19.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 81.000000 19.000000 25.000000
+      vertex 25.000000 19.000000 25.000000
+      vertex 25.000000 19.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 81.000000 19.000000 37.000000
+      vertex 25.000000 19.000000 37.000000
+      vertex 25.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 81.000000 19.000000 37.000000
+      vertex 25.000000 7.000000 37.000000
+      vertex 81.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 25.000000 7.000000 37.000000
+      vertex 81.000000 7.000000 25.000000
+      vertex 81.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 25.000000 7.000000 25.000000
+      vertex 81.000000 7.000000 25.000000
+      vertex 25.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -24.000000 8.000000 18.000000
+      vertex 1.000000 18.000000 18.000000
+      vertex 1.000000 8.000000 18.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -24.000000 18.000000 18.000000
+      vertex 1.000000 18.000000 18.000000
+      vertex -24.000000 8.000000 18.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex -24.000000 18.000000 18.000000
+      vertex -24.000000 18.000000 44.000000
+      vertex 1.000000 18.000000 44.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 1.000000 18.000000 18.000000
+      vertex -24.000000 18.000000 18.000000
+      vertex 1.000000 18.000000 44.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 1.000000 18.000000 44.000000
+      vertex -24.000000 8.000000 44.000000
+      vertex 1.000000 8.000000 44.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 1.000000 18.000000 44.000000
+      vertex -24.000000 18.000000 44.000000
+      vertex -24.000000 8.000000 44.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -24.000000 8.000000 44.000000
+      vertex -24.000000 8.000000 18.000000
+      vertex 1.000000 8.000000 44.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -24.000000 8.000000 18.000000
+      vertex 1.000000 8.000000 18.000000
+      vertex 1.000000 8.000000 44.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 81.000000 19.000000 37.000000
+      vertex 81.000000 7.000000 37.000000
+      vertex 81.000000 7.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 81.000000 19.000000 37.000000
+      vertex 81.000000 7.000000 25.000000
+      vertex 81.000000 19.000000 25.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -24.000000 8.000000 44.000000
+      vertex -24.000000 18.000000 44.000000
+      vertex -24.000000 8.000000 18.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -24.000000 8.000000 18.000000
+      vertex -24.000000 18.000000 44.000000
+      vertex -24.000000 18.000000 18.000000
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq1.stl b/apps/cpu/Multiphase/backup/FlowFocusingSq1.stl
new file mode 100644
index 0000000000000000000000000000000000000000..9f6355c80a4d30dbdcadba4615fa89895a660360
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingSq1.stl differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq2.FCStd b/apps/cpu/Multiphase/backup/FlowFocusingSq2.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..64b20eb26d1d8445571b632f562e563b44467582
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingSq2.FCStd differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq2.FCStd1 b/apps/cpu/Multiphase/backup/FlowFocusingSq2.FCStd1
new file mode 100644
index 0000000000000000000000000000000000000000..c64353de25ddbfcff53ad1ea2865621ef459f537
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingSq2.FCStd1 differ
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq2.ast b/apps/cpu/Multiphase/backup/FlowFocusingSq2.ast
new file mode 100644
index 0000000000000000000000000000000000000000..1aa258836f82ff338e79aebc4d275a6a134f6eb9
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/FlowFocusingSq2.ast
@@ -0,0 +1,310 @@
+solid Mesh
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 1.000000
+      vertex 25.000000 1.000000 61.000000
+      vertex 1.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 25.000000 1.000000 61.000000
+      vertex 1.000000 1.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 1.000000 25.000000 1.000000
+      vertex 25.000000 25.000000 1.000000
+      vertex 1.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 25.000000 25.000000 1.000000
+      vertex 25.000000 1.000000 1.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 19.000000 25.000000
+      vertex 25.000000 1.000000 1.000000
+      vertex 25.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal 1.000000 -0.000000 0.000000
+    outer loop
+      vertex 25.000000 7.000000 25.000000
+      vertex 25.000000 1.000000 1.000000
+      vertex 25.000000 19.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 25.000000 19.000000 37.000000
+      vertex 25.000000 19.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 25.000000 19.000000 25.000000
+      vertex 25.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 61.000000
+      vertex 25.000000 7.000000 37.000000
+      vertex 25.000000 19.000000 37.000000
+    endloop
+  endfacet
+  facet normal 1.000000 -0.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 61.000000
+      vertex 25.000000 19.000000 37.000000
+      vertex 25.000000 25.000000 61.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 61.000000
+      vertex 25.000000 1.000000 1.000000
+      vertex 25.000000 7.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 25.000000 1.000000 61.000000
+      vertex 25.000000 7.000000 25.000000
+      vertex 25.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 1.000000 25.000000 61.000000
+      vertex 1.000000 1.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 25.000000 1.000000 61.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 1.000000 18.000000 18.000000
+      vertex 1.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 1.000000 8.000000 18.000000
+      vertex 1.000000 18.000000 18.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 18.000000 18.000000
+      vertex 1.000000 18.000000 44.000000
+      vertex 1.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 18.000000 44.000000
+      vertex 1.000000 25.000000 61.000000
+      vertex 1.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 8.000000 44.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 1.000000 18.000000 44.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 18.000000 44.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 1.000000 25.000000 61.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 1.000000 1.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 1.000000 8.000000 18.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 1.000000 8.000000 18.000000
+      vertex 1.000000 1.000000 61.000000
+      vertex 1.000000 8.000000 44.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 25.000000 25.000000 1.000000
+      vertex 1.000000 25.000000 1.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 25.000000 25.000000 61.000000
+      vertex 1.000000 25.000000 1.000000
+      vertex 1.000000 25.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 25.000000 19.000000 25.000000
+      vertex 181.000000 19.000000 25.000000
+      vertex 25.000000 7.000000 25.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 25.000000 7.000000 25.000000
+      vertex 181.000000 19.000000 25.000000
+      vertex 181.000000 7.000000 25.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 181.000000 19.000000 25.000000
+      vertex 25.000000 19.000000 37.000000
+      vertex 181.000000 19.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 181.000000 19.000000 25.000000
+      vertex 25.000000 19.000000 25.000000
+      vertex 25.000000 19.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 181.000000 19.000000 37.000000
+      vertex 25.000000 19.000000 37.000000
+      vertex 25.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 181.000000 19.000000 37.000000
+      vertex 25.000000 7.000000 37.000000
+      vertex 181.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 25.000000 7.000000 37.000000
+      vertex 181.000000 7.000000 25.000000
+      vertex 181.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 25.000000 7.000000 25.000000
+      vertex 181.000000 7.000000 25.000000
+      vertex 25.000000 7.000000 37.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -24.000000 8.000000 18.000000
+      vertex 1.000000 18.000000 18.000000
+      vertex 1.000000 8.000000 18.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -24.000000 18.000000 18.000000
+      vertex 1.000000 18.000000 18.000000
+      vertex -24.000000 8.000000 18.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex -24.000000 18.000000 18.000000
+      vertex -24.000000 18.000000 44.000000
+      vertex 1.000000 18.000000 44.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 1.000000 18.000000 18.000000
+      vertex -24.000000 18.000000 18.000000
+      vertex 1.000000 18.000000 44.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 1.000000 18.000000 44.000000
+      vertex -24.000000 8.000000 44.000000
+      vertex 1.000000 8.000000 44.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 1.000000 18.000000 44.000000
+      vertex -24.000000 18.000000 44.000000
+      vertex -24.000000 8.000000 44.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -24.000000 8.000000 44.000000
+      vertex -24.000000 8.000000 18.000000
+      vertex 1.000000 8.000000 44.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -24.000000 8.000000 18.000000
+      vertex 1.000000 8.000000 18.000000
+      vertex 1.000000 8.000000 44.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 181.000000 19.000000 37.000000
+      vertex 181.000000 7.000000 37.000000
+      vertex 181.000000 7.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 181.000000 19.000000 37.000000
+      vertex 181.000000 7.000000 25.000000
+      vertex 181.000000 19.000000 25.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -24.000000 8.000000 44.000000
+      vertex -24.000000 18.000000 44.000000
+      vertex -24.000000 8.000000 18.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -24.000000 8.000000 18.000000
+      vertex -24.000000 18.000000 44.000000
+      vertex -24.000000 18.000000 18.000000
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq2.stl b/apps/cpu/Multiphase/backup/FlowFocusingSq2.stl
new file mode 100644
index 0000000000000000000000000000000000000000..2c31bb9bd4cf4af9246fc008ba606a3a9a0ba223
Binary files /dev/null and b/apps/cpu/Multiphase/backup/FlowFocusingSq2.stl differ
diff --git a/apps/cpu/Multiphase/backup/JetBreakup.ASCII.stl b/apps/cpu/Multiphase/backup/JetBreakup.ASCII.stl
new file mode 100644
index 0000000000000000000000000000000000000000..eff2679cd636ddd653825627f56256c425c5629d
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/JetBreakup.ASCII.stl
@@ -0,0 +1,1318 @@
+solid Mesh
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 600.000000 0.000000
+      vertex 0.000000 0.000000 120.000000
+      vertex 0.000000 600.000000 120.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 0.000000 0.000000
+      vertex 0.000000 0.000000 120.000000
+      vertex 0.000000 600.000000 0.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 120.000000 0.000000 0.000000
+      vertex 120.000000 0.000000 120.000000
+      vertex 0.000000 0.000000 0.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 0.000000 0.000000 0.000000
+      vertex 120.000000 0.000000 120.000000
+      vertex 0.000000 0.000000 120.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 0.000000 600.000000 120.000000
+      vertex 0.000000 0.000000 120.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 0.000000 0.000000 120.000000
+      vertex 120.000000 0.000000 120.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 57.887005 600.000000 67.196198
+      vertex 56.884388 600.000000 66.822243
+      vertex 0.000000 600.000000 120.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 67.423660 600.000000 58.932640
+      vertex 120.000000 600.000000 0.000000
+      vertex 67.196198 600.000000 57.887005
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 55.088543 600.000000 54.331879
+      vertex 0.000000 600.000000 0.000000
+      vertex 54.331879 600.000000 55.088543
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 58.932640 600.000000 67.423660
+      vertex 57.887005 600.000000 67.196198
+      vertex 0.000000 600.000000 120.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 55.945194 600.000000 53.690598
+      vertex 0.000000 600.000000 0.000000
+      vertex 55.088543 600.000000 54.331879
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 53.690598 600.000000 55.945194
+      vertex 54.331879 600.000000 55.088543
+      vertex 0.000000 600.000000 0.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 60.000000 600.000000 67.500000
+      vertex 58.932640 600.000000 67.423660
+      vertex 0.000000 600.000000 120.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 56.884388 600.000000 53.177761
+      vertex 0.000000 600.000000 0.000000
+      vertex 55.945194 600.000000 53.690598
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 67.500000 600.000000 60.000000
+      vertex 120.000000 600.000000 0.000000
+      vertex 67.423660 600.000000 58.932640
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 53.177761 600.000000 56.884388
+      vertex 53.690598 600.000000 55.945194
+      vertex 0.000000 600.000000 0.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 57.887005 600.000000 52.803802
+      vertex 0.000000 600.000000 0.000000
+      vertex 56.884388 600.000000 53.177761
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 52.803802 600.000000 57.887005
+      vertex 53.177761 600.000000 56.884388
+      vertex 0.000000 600.000000 0.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 58.932640 600.000000 52.576340
+      vertex 0.000000 600.000000 0.000000
+      vertex 57.887005 600.000000 52.803802
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 52.576340 600.000000 58.932640
+      vertex 52.803802 600.000000 57.887005
+      vertex 0.000000 600.000000 0.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 60.000000 600.000000 52.500000
+      vertex 0.000000 600.000000 0.000000
+      vertex 58.932640 600.000000 52.576340
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 52.500000 600.000000 60.000000
+      vertex 52.576340 600.000000 58.932640
+      vertex 0.000000 600.000000 0.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 67.500000 600.000000 60.000000
+      vertex 67.423660 600.000000 61.067360
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 67.423660 600.000000 61.067360
+      vertex 67.196198 600.000000 62.112995
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 67.196198 600.000000 62.112995
+      vertex 66.822243 600.000000 63.115612
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 66.822243 600.000000 63.115612
+      vertex 66.309402 600.000000 64.054810
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 66.309402 600.000000 64.054810
+      vertex 65.668121 600.000000 64.911453
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 65.668121 600.000000 64.911453
+      vertex 64.911453 600.000000 65.668121
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 64.911453 600.000000 65.668121
+      vertex 64.054810 600.000000 66.309402
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 64.054810 600.000000 66.309402
+      vertex 63.115612 600.000000 66.822243
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 120.000000 600.000000 0.000000
+      vertex 67.500000 600.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 63.115612 600.000000 66.822243
+      vertex 62.112995 600.000000 67.196198
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 62.112995 600.000000 67.196198
+      vertex 61.067360 600.000000 67.423660
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 61.067360 600.000000 67.423660
+      vertex 60.000000 600.000000 67.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 120.000000
+      vertex 60.000000 600.000000 67.500000
+      vertex 0.000000 600.000000 120.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 0.000000 600.000000 120.000000
+      vertex 54.331879 600.000000 64.911453
+      vertex 53.690598 600.000000 64.054810
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 0.000000 600.000000 120.000000
+      vertex 53.690598 600.000000 64.054810
+      vertex 53.177761 600.000000 63.115612
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 0.000000 600.000000 120.000000
+      vertex 53.177761 600.000000 63.115612
+      vertex 52.803802 600.000000 62.112995
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 0.000000 600.000000 120.000000
+      vertex 52.803802 600.000000 62.112995
+      vertex 52.576340 600.000000 61.067360
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 0.000000 600.000000 120.000000
+      vertex 52.576340 600.000000 61.067360
+      vertex 52.500000 600.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 0.000000 600.000000 120.000000
+      vertex 52.500000 600.000000 60.000000
+      vertex 0.000000 600.000000 0.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 0.000000
+      vertex 60.000000 600.000000 52.500000
+      vertex 61.067360 600.000000 52.576340
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 0.000000
+      vertex 61.067360 600.000000 52.576340
+      vertex 62.112995 600.000000 52.803802
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 0.000000
+      vertex 62.112995 600.000000 52.803802
+      vertex 63.115612 600.000000 53.177761
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 0.000000
+      vertex 63.115612 600.000000 53.177761
+      vertex 64.054810 600.000000 53.690598
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 0.000000
+      vertex 64.054810 600.000000 53.690598
+      vertex 64.911453 600.000000 54.331879
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 600.000000 0.000000
+      vertex 0.000000 600.000000 0.000000
+      vertex 60.000000 600.000000 52.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 65.668121 600.000000 55.088543
+      vertex 120.000000 600.000000 0.000000
+      vertex 64.911453 600.000000 54.331879
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 55.088543 600.000000 65.668121
+      vertex 54.331879 600.000000 64.911453
+      vertex 0.000000 600.000000 120.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 66.309402 600.000000 55.945194
+      vertex 120.000000 600.000000 0.000000
+      vertex 65.668121 600.000000 55.088543
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 55.945194 600.000000 66.309402
+      vertex 55.088543 600.000000 65.668121
+      vertex 0.000000 600.000000 120.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 66.822243 600.000000 56.884388
+      vertex 120.000000 600.000000 0.000000
+      vertex 66.309402 600.000000 55.945194
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 56.884388 600.000000 66.822243
+      vertex 55.945194 600.000000 66.309402
+      vertex 0.000000 600.000000 120.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 67.196198 600.000000 57.887005
+      vertex 120.000000 600.000000 0.000000
+      vertex 66.822243 600.000000 56.884388
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 0.000000 600.000000 0.000000
+      vertex 120.000000 600.000000 0.000000
+      vertex 0.000000 0.000000 0.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 0.000000 0.000000 0.000000
+      vertex 120.000000 600.000000 0.000000
+      vertex 120.000000 0.000000 0.000000
+    endloop
+  endfacet
+  facet normal 1.000000 -0.000000 0.000000
+    outer loop
+      vertex 120.000000 0.000000 120.000000
+      vertex 120.000000 600.000000 0.000000
+      vertex 120.000000 600.000000 120.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 120.000000 0.000000 120.000000
+      vertex 120.000000 0.000000 0.000000
+      vertex 120.000000 600.000000 0.000000
+    endloop
+  endfacet
+  facet normal 0.349466 0.000000 -0.936949
+    outer loop
+      vertex 62.112995 630.000000 52.803802
+      vertex 63.115612 630.000000 53.177761
+      vertex 62.112995 600.000000 52.803802
+    endloop
+  endfacet
+  facet normal -0.707109 0.000000 0.707105
+    outer loop
+      vertex 55.088543 600.000000 65.668121
+      vertex 54.331879 630.000000 64.911453
+      vertex 54.331879 600.000000 64.911453
+    endloop
+  endfacet
+  facet normal 0.349466 0.000000 -0.936949
+    outer loop
+      vertex 62.112995 600.000000 52.803802
+      vertex 63.115612 630.000000 53.177761
+      vertex 63.115612 600.000000 53.177761
+    endloop
+  endfacet
+  facet normal -0.707109 0.000000 0.707105
+    outer loop
+      vertex 55.088543 630.000000 65.668121
+      vertex 54.331879 630.000000 64.911453
+      vertex 55.088543 600.000000 65.668121
+    endloop
+  endfacet
+  facet normal 0.479246 0.000000 -0.877681
+    outer loop
+      vertex 63.115612 630.000000 53.177761
+      vertex 64.054810 630.000000 53.690598
+      vertex 63.115612 600.000000 53.177761
+    endloop
+  endfacet
+  facet normal -0.800539 0.000000 0.599281
+    outer loop
+      vertex 54.331879 600.000000 64.911453
+      vertex 53.690598 630.000000 64.054810
+      vertex 53.690598 600.000000 64.054810
+    endloop
+  endfacet
+  facet normal 0.479246 0.000000 -0.877681
+    outer loop
+      vertex 63.115612 600.000000 53.177761
+      vertex 64.054810 630.000000 53.690598
+      vertex 64.054810 600.000000 53.690598
+    endloop
+  endfacet
+  facet normal -0.800539 0.000000 0.599281
+    outer loop
+      vertex 54.331879 630.000000 64.911453
+      vertex 53.690598 630.000000 64.054810
+      vertex 54.331879 600.000000 64.911453
+    endloop
+  endfacet
+  facet normal 0.599281 0.000000 -0.800539
+    outer loop
+      vertex 64.054810 630.000000 53.690598
+      vertex 64.911453 630.000000 54.331879
+      vertex 64.054810 600.000000 53.690598
+    endloop
+  endfacet
+  facet normal -0.877681 0.000000 0.479246
+    outer loop
+      vertex 53.690598 600.000000 64.054810
+      vertex 53.177761 630.000000 63.115612
+      vertex 53.177761 600.000000 63.115612
+    endloop
+  endfacet
+  facet normal 0.599281 0.000000 -0.800539
+    outer loop
+      vertex 64.054810 600.000000 53.690598
+      vertex 64.911453 630.000000 54.331879
+      vertex 64.911453 600.000000 54.331879
+    endloop
+  endfacet
+  facet normal 0.997452 0.000000 0.071340
+    outer loop
+      vertex 67.500000 600.000000 60.000000
+      vertex 67.423660 630.000000 61.067360
+      vertex 67.423660 600.000000 61.067360
+    endloop
+  endfacet
+  facet normal -0.877681 0.000000 0.479246
+    outer loop
+      vertex 53.690598 630.000000 64.054810
+      vertex 53.177761 630.000000 63.115612
+      vertex 53.690598 600.000000 64.054810
+    endloop
+  endfacet
+  facet normal 0.997452 0.000000 0.071340
+    outer loop
+      vertex 67.500000 630.000000 60.000000
+      vertex 67.423660 630.000000 61.067360
+      vertex 67.500000 600.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.707105 0.000000 -0.707109
+    outer loop
+      vertex 64.911453 630.000000 54.331879
+      vertex 65.668121 630.000000 55.088543
+      vertex 64.911453 600.000000 54.331879
+    endloop
+  endfacet
+  facet normal -0.936949 0.000000 0.349466
+    outer loop
+      vertex 53.177761 600.000000 63.115612
+      vertex 52.803802 630.000000 62.112995
+      vertex 52.803802 600.000000 62.112995
+    endloop
+  endfacet
+  facet normal 0.707105 0.000000 -0.707109
+    outer loop
+      vertex 64.911453 600.000000 54.331879
+      vertex 65.668121 630.000000 55.088543
+      vertex 65.668121 600.000000 55.088543
+    endloop
+  endfacet
+  facet normal 0.977147 0.000000 0.212564
+    outer loop
+      vertex 67.423660 600.000000 61.067360
+      vertex 67.196198 630.000000 62.112995
+      vertex 67.196198 600.000000 62.112995
+    endloop
+  endfacet
+  facet normal -0.936949 0.000000 0.349466
+    outer loop
+      vertex 53.177761 630.000000 63.115612
+      vertex 52.803802 630.000000 62.112995
+      vertex 53.177761 600.000000 63.115612
+    endloop
+  endfacet
+  facet normal 0.977147 0.000000 0.212564
+    outer loop
+      vertex 67.423660 630.000000 61.067360
+      vertex 67.196198 630.000000 62.112995
+      vertex 67.423660 600.000000 61.067360
+    endloop
+  endfacet
+  facet normal 0.800541 0.000000 -0.599278
+    outer loop
+      vertex 65.668121 630.000000 55.088543
+      vertex 66.309402 630.000000 55.945194
+      vertex 65.668121 600.000000 55.088543
+    endloop
+  endfacet
+  facet normal -0.977147 0.000000 0.212564
+    outer loop
+      vertex 52.803802 600.000000 62.112995
+      vertex 52.576340 630.000000 61.067360
+      vertex 52.576340 600.000000 61.067360
+    endloop
+  endfacet
+  facet normal 0.800541 0.000000 -0.599278
+    outer loop
+      vertex 65.668121 600.000000 55.088543
+      vertex 66.309402 630.000000 55.945194
+      vertex 66.309402 600.000000 55.945194
+    endloop
+  endfacet
+  facet normal -0.977147 0.000000 0.212564
+    outer loop
+      vertex 52.803802 630.000000 62.112995
+      vertex 52.576340 630.000000 61.067360
+      vertex 52.803802 600.000000 62.112995
+    endloop
+  endfacet
+  facet normal 0.936950 0.000000 0.349463
+    outer loop
+      vertex 67.196198 630.000000 62.112995
+      vertex 66.822243 630.000000 63.115612
+      vertex 67.196198 600.000000 62.112995
+    endloop
+  endfacet
+  facet normal 0.936950 0.000000 0.349463
+    outer loop
+      vertex 67.196198 600.000000 62.112995
+      vertex 66.822243 630.000000 63.115612
+      vertex 66.822243 600.000000 63.115612
+    endloop
+  endfacet
+  facet normal 0.877678 0.000000 -0.479250
+    outer loop
+      vertex 66.309402 630.000000 55.945194
+      vertex 66.822243 630.000000 56.884388
+      vertex 66.309402 600.000000 55.945194
+    endloop
+  endfacet
+  facet normal -0.997452 0.000000 0.071340
+    outer loop
+      vertex 52.576340 600.000000 61.067360
+      vertex 52.500000 630.000000 60.000000
+      vertex 52.500000 600.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.877678 0.000000 -0.479250
+    outer loop
+      vertex 66.309402 600.000000 55.945194
+      vertex 66.822243 630.000000 56.884388
+      vertex 66.822243 600.000000 56.884388
+    endloop
+  endfacet
+  facet normal -0.997452 0.000000 0.071340
+    outer loop
+      vertex 52.576340 630.000000 61.067360
+      vertex 52.500000 630.000000 60.000000
+      vertex 52.576340 600.000000 61.067360
+    endloop
+  endfacet
+  facet normal 0.877679 0.000000 0.479249
+    outer loop
+      vertex 66.822243 630.000000 63.115612
+      vertex 66.309402 630.000000 64.054810
+      vertex 66.822243 600.000000 63.115612
+    endloop
+  endfacet
+  facet normal 0.877679 0.000000 0.479249
+    outer loop
+      vertex 66.822243 600.000000 63.115612
+      vertex 66.309402 630.000000 64.054810
+      vertex 66.309402 600.000000 64.054810
+    endloop
+  endfacet
+  facet normal 0.936950 0.000000 -0.349463
+    outer loop
+      vertex 66.822243 630.000000 56.884388
+      vertex 67.196198 630.000000 57.887005
+      vertex 66.822243 600.000000 56.884388
+    endloop
+  endfacet
+  facet normal -0.997452 0.000000 -0.071340
+    outer loop
+      vertex 52.500000 600.000000 60.000000
+      vertex 52.576340 630.000000 58.932640
+      vertex 52.576340 600.000000 58.932640
+    endloop
+  endfacet
+  facet normal 0.936950 0.000000 -0.349463
+    outer loop
+      vertex 66.822243 600.000000 56.884388
+      vertex 67.196198 630.000000 57.887005
+      vertex 67.196198 600.000000 57.887005
+    endloop
+  endfacet
+  facet normal -0.997452 -0.000000 -0.071340
+    outer loop
+      vertex 52.500000 630.000000 60.000000
+      vertex 52.576340 630.000000 58.932640
+      vertex 52.500000 600.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.800539 0.000000 0.599281
+    outer loop
+      vertex 66.309402 630.000000 64.054810
+      vertex 65.668121 630.000000 64.911453
+      vertex 66.309402 600.000000 64.054810
+    endloop
+  endfacet
+  facet normal 0.977147 0.000000 -0.212564
+    outer loop
+      vertex 67.196198 630.000000 57.887005
+      vertex 67.423660 630.000000 58.932640
+      vertex 67.196198 600.000000 57.887005
+    endloop
+  endfacet
+  facet normal 0.800539 0.000000 0.599281
+    outer loop
+      vertex 66.309402 600.000000 64.054810
+      vertex 65.668121 630.000000 64.911453
+      vertex 65.668121 600.000000 64.911453
+    endloop
+  endfacet
+  facet normal 0.977147 0.000000 -0.212564
+    outer loop
+      vertex 67.196198 600.000000 57.887005
+      vertex 67.423660 630.000000 58.932640
+      vertex 67.423660 600.000000 58.932640
+    endloop
+  endfacet
+  facet normal -0.977147 0.000000 -0.212564
+    outer loop
+      vertex 52.576340 600.000000 58.932640
+      vertex 52.803802 630.000000 57.887005
+      vertex 52.803802 600.000000 57.887005
+    endloop
+  endfacet
+  facet normal -0.977147 -0.000000 -0.212564
+    outer loop
+      vertex 52.576340 630.000000 58.932640
+      vertex 52.803802 630.000000 57.887005
+      vertex 52.576340 600.000000 58.932640
+    endloop
+  endfacet
+  facet normal 0.997452 0.000000 -0.071340
+    outer loop
+      vertex 67.423660 630.000000 58.932640
+      vertex 67.500000 630.000000 60.000000
+      vertex 67.423660 600.000000 58.932640
+    endloop
+  endfacet
+  facet normal 0.997452 0.000000 -0.071340
+    outer loop
+      vertex 67.423660 600.000000 58.932640
+      vertex 67.500000 630.000000 60.000000
+      vertex 67.500000 600.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.707107 0.000000 0.707107
+    outer loop
+      vertex 65.668121 630.000000 64.911453
+      vertex 64.911453 630.000000 65.668121
+      vertex 65.668121 600.000000 64.911453
+    endloop
+  endfacet
+  facet normal 0.707107 0.000000 0.707107
+    outer loop
+      vertex 65.668121 600.000000 64.911453
+      vertex 64.911453 630.000000 65.668121
+      vertex 64.911453 600.000000 65.668121
+    endloop
+  endfacet
+  facet normal -0.936949 0.000000 -0.349466
+    outer loop
+      vertex 52.803802 600.000000 57.887005
+      vertex 53.177761 630.000000 56.884388
+      vertex 53.177761 600.000000 56.884388
+    endloop
+  endfacet
+  facet normal -0.936949 -0.000000 -0.349466
+    outer loop
+      vertex 52.803802 630.000000 57.887005
+      vertex 53.177761 630.000000 56.884388
+      vertex 52.803802 600.000000 57.887005
+    endloop
+  endfacet
+  facet normal 0.599281 0.000000 0.800539
+    outer loop
+      vertex 64.911453 630.000000 65.668121
+      vertex 64.054810 630.000000 66.309402
+      vertex 64.911453 600.000000 65.668121
+    endloop
+  endfacet
+  facet normal 0.599281 0.000000 0.800539
+    outer loop
+      vertex 64.911453 600.000000 65.668121
+      vertex 64.054810 630.000000 66.309402
+      vertex 64.054810 600.000000 66.309402
+    endloop
+  endfacet
+  facet normal -0.877680 0.000000 -0.479247
+    outer loop
+      vertex 53.177761 600.000000 56.884388
+      vertex 53.690598 630.000000 55.945194
+      vertex 53.690598 600.000000 55.945194
+    endloop
+  endfacet
+  facet normal -0.877680 -0.000000 -0.479247
+    outer loop
+      vertex 53.177761 630.000000 56.884388
+      vertex 53.690598 630.000000 55.945194
+      vertex 53.177761 600.000000 56.884388
+    endloop
+  endfacet
+  facet normal 0.479249 0.000000 0.877679
+    outer loop
+      vertex 64.054810 630.000000 66.309402
+      vertex 63.115612 630.000000 66.822243
+      vertex 64.054810 600.000000 66.309402
+    endloop
+  endfacet
+  facet normal -0.800541 0.000000 -0.599278
+    outer loop
+      vertex 53.690598 600.000000 55.945194
+      vertex 54.331879 630.000000 55.088543
+      vertex 54.331879 600.000000 55.088543
+    endloop
+  endfacet
+  facet normal 0.479249 0.000000 0.877679
+    outer loop
+      vertex 64.054810 600.000000 66.309402
+      vertex 63.115612 630.000000 66.822243
+      vertex 63.115612 600.000000 66.822243
+    endloop
+  endfacet
+  facet normal -0.800541 -0.000000 -0.599278
+    outer loop
+      vertex 53.690598 630.000000 55.945194
+      vertex 54.331879 630.000000 55.088543
+      vertex 53.690598 600.000000 55.945194
+    endloop
+  endfacet
+  facet normal -0.707107 -0.000000 -0.707107
+    outer loop
+      vertex 54.331879 630.000000 55.088543
+      vertex 55.088543 630.000000 54.331879
+      vertex 54.331879 600.000000 55.088543
+    endloop
+  endfacet
+  facet normal 0.349463 0.000000 0.936950
+    outer loop
+      vertex 63.115612 630.000000 66.822243
+      vertex 62.112995 630.000000 67.196198
+      vertex 63.115612 600.000000 66.822243
+    endloop
+  endfacet
+  facet normal -0.707107 0.000000 -0.707107
+    outer loop
+      vertex 54.331879 600.000000 55.088543
+      vertex 55.088543 630.000000 54.331879
+      vertex 55.088543 600.000000 54.331879
+    endloop
+  endfacet
+  facet normal 0.349463 0.000000 0.936950
+    outer loop
+      vertex 63.115612 600.000000 66.822243
+      vertex 62.112995 630.000000 67.196198
+      vertex 62.112995 600.000000 67.196198
+    endloop
+  endfacet
+  facet normal -0.599278 -0.000000 -0.800541
+    outer loop
+      vertex 55.088543 630.000000 54.331879
+      vertex 55.945194 630.000000 53.690598
+      vertex 55.088543 600.000000 54.331879
+    endloop
+  endfacet
+  facet normal 0.212564 0.000000 0.977147
+    outer loop
+      vertex 62.112995 630.000000 67.196198
+      vertex 61.067360 630.000000 67.423660
+      vertex 62.112995 600.000000 67.196198
+    endloop
+  endfacet
+  facet normal -0.599278 0.000000 -0.800541
+    outer loop
+      vertex 55.088543 600.000000 54.331879
+      vertex 55.945194 630.000000 53.690598
+      vertex 55.945194 600.000000 53.690598
+    endloop
+  endfacet
+  facet normal 0.212564 0.000000 0.977147
+    outer loop
+      vertex 62.112995 600.000000 67.196198
+      vertex 61.067360 630.000000 67.423660
+      vertex 61.067360 600.000000 67.423660
+    endloop
+  endfacet
+  facet normal -0.479247 -0.000000 -0.877680
+    outer loop
+      vertex 55.945194 630.000000 53.690598
+      vertex 56.884388 630.000000 53.177761
+      vertex 55.945194 600.000000 53.690598
+    endloop
+  endfacet
+  facet normal 0.071340 0.000000 0.997452
+    outer loop
+      vertex 61.067360 630.000000 67.423660
+      vertex 60.000000 630.000000 67.500000
+      vertex 61.067360 600.000000 67.423660
+    endloop
+  endfacet
+  facet normal -0.479247 0.000000 -0.877680
+    outer loop
+      vertex 55.945194 600.000000 53.690598
+      vertex 56.884388 630.000000 53.177761
+      vertex 56.884388 600.000000 53.177761
+    endloop
+  endfacet
+  facet normal 0.071340 0.000000 0.997452
+    outer loop
+      vertex 61.067360 600.000000 67.423660
+      vertex 60.000000 630.000000 67.500000
+      vertex 60.000000 600.000000 67.500000
+    endloop
+  endfacet
+  facet normal -0.349466 -0.000000 -0.936949
+    outer loop
+      vertex 56.884388 630.000000 53.177761
+      vertex 57.887005 630.000000 52.803802
+      vertex 56.884388 600.000000 53.177761
+    endloop
+  endfacet
+  facet normal -0.071340 0.000000 0.997452
+    outer loop
+      vertex 60.000000 630.000000 67.500000
+      vertex 58.932640 630.000000 67.423660
+      vertex 60.000000 600.000000 67.500000
+    endloop
+  endfacet
+  facet normal -0.349466 0.000000 -0.936949
+    outer loop
+      vertex 56.884388 600.000000 53.177761
+      vertex 57.887005 630.000000 52.803802
+      vertex 57.887005 600.000000 52.803802
+    endloop
+  endfacet
+  facet normal -0.071340 0.000000 0.997452
+    outer loop
+      vertex 60.000000 600.000000 67.500000
+      vertex 58.932640 630.000000 67.423660
+      vertex 58.932640 600.000000 67.423660
+    endloop
+  endfacet
+  facet normal -0.212564 -0.000000 -0.977147
+    outer loop
+      vertex 57.887005 630.000000 52.803802
+      vertex 58.932640 630.000000 52.576340
+      vertex 57.887005 600.000000 52.803802
+    endloop
+  endfacet
+  facet normal -0.212564 0.000000 0.977147
+    outer loop
+      vertex 58.932640 630.000000 67.423660
+      vertex 57.887005 630.000000 67.196198
+      vertex 58.932640 600.000000 67.423660
+    endloop
+  endfacet
+  facet normal -0.212564 0.000000 -0.977147
+    outer loop
+      vertex 57.887005 600.000000 52.803802
+      vertex 58.932640 630.000000 52.576340
+      vertex 58.932640 600.000000 52.576340
+    endloop
+  endfacet
+  facet normal -0.212564 0.000000 0.977147
+    outer loop
+      vertex 58.932640 600.000000 67.423660
+      vertex 57.887005 630.000000 67.196198
+      vertex 57.887005 600.000000 67.196198
+    endloop
+  endfacet
+  facet normal -0.071340 -0.000000 -0.997452
+    outer loop
+      vertex 58.932640 630.000000 52.576340
+      vertex 60.000000 630.000000 52.500000
+      vertex 58.932640 600.000000 52.576340
+    endloop
+  endfacet
+  facet normal -0.349463 0.000000 0.936950
+    outer loop
+      vertex 57.887005 630.000000 67.196198
+      vertex 56.884388 630.000000 66.822243
+      vertex 57.887005 600.000000 67.196198
+    endloop
+  endfacet
+  facet normal -0.071340 0.000000 -0.997452
+    outer loop
+      vertex 58.932640 600.000000 52.576340
+      vertex 60.000000 630.000000 52.500000
+      vertex 60.000000 600.000000 52.500000
+    endloop
+  endfacet
+  facet normal -0.349463 0.000000 0.936950
+    outer loop
+      vertex 57.887005 600.000000 67.196198
+      vertex 56.884388 630.000000 66.822243
+      vertex 56.884388 600.000000 66.822243
+    endloop
+  endfacet
+  facet normal 0.071340 0.000000 -0.997452
+    outer loop
+      vertex 60.000000 630.000000 52.500000
+      vertex 61.067360 630.000000 52.576340
+      vertex 60.000000 600.000000 52.500000
+    endloop
+  endfacet
+  facet normal -0.479250 0.000000 0.877678
+    outer loop
+      vertex 56.884388 630.000000 66.822243
+      vertex 55.945194 630.000000 66.309402
+      vertex 56.884388 600.000000 66.822243
+    endloop
+  endfacet
+  facet normal 0.071340 0.000000 -0.997452
+    outer loop
+      vertex 60.000000 600.000000 52.500000
+      vertex 61.067360 630.000000 52.576340
+      vertex 61.067360 600.000000 52.576340
+    endloop
+  endfacet
+  facet normal -0.479250 0.000000 0.877678
+    outer loop
+      vertex 56.884388 600.000000 66.822243
+      vertex 55.945194 630.000000 66.309402
+      vertex 55.945194 600.000000 66.309402
+    endloop
+  endfacet
+  facet normal 0.212564 0.000000 -0.977147
+    outer loop
+      vertex 61.067360 630.000000 52.576340
+      vertex 62.112995 630.000000 52.803802
+      vertex 61.067360 600.000000 52.576340
+    endloop
+  endfacet
+  facet normal -0.599278 0.000000 0.800541
+    outer loop
+      vertex 55.945194 630.000000 66.309402
+      vertex 55.088543 630.000000 65.668121
+      vertex 55.945194 600.000000 66.309402
+    endloop
+  endfacet
+  facet normal 0.212564 0.000000 -0.977147
+    outer loop
+      vertex 61.067360 600.000000 52.576340
+      vertex 62.112995 630.000000 52.803802
+      vertex 62.112995 600.000000 52.803802
+    endloop
+  endfacet
+  facet normal -0.599278 0.000000 0.800541
+    outer loop
+      vertex 55.945194 600.000000 66.309402
+      vertex 55.088543 630.000000 65.668121
+      vertex 55.088543 600.000000 65.668121
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 67.423660 630.000000 61.067360
+      vertex 67.423660 630.000000 58.932640
+      vertex 65.668121 630.000000 64.911453
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 67.500000 630.000000 60.000000
+      vertex 67.423660 630.000000 58.932640
+      vertex 67.423660 630.000000 61.067360
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 65.668121 630.000000 64.911453
+      vertex 67.423660 630.000000 58.932640
+      vertex 64.911453 630.000000 65.668121
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 0.000000
+    outer loop
+      vertex 55.945194 630.000000 66.309402
+      vertex 56.884388 630.000000 66.822243
+      vertex 55.088543 630.000000 65.668121
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 67.423660 630.000000 58.932640
+      vertex 66.822243 630.000000 56.884388
+      vertex 64.911453 630.000000 65.668121
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 54.331879 630.000000 64.911453
+      vertex 52.803802 630.000000 62.112995
+      vertex 53.690598 630.000000 64.054810
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 53.690598 630.000000 64.054810
+      vertex 52.803802 630.000000 62.112995
+      vertex 53.177761 630.000000 63.115612
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 67.196198 630.000000 57.887005
+      vertex 66.822243 630.000000 56.884388
+      vertex 67.423660 630.000000 58.932640
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 0.000000
+    outer loop
+      vertex 53.690598 630.000000 55.945194
+      vertex 66.822243 630.000000 56.884388
+      vertex 55.088543 630.000000 54.331879
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 64.911453 630.000000 65.668121
+      vertex 66.822243 630.000000 56.884388
+      vertex 53.690598 630.000000 55.945194
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 0.000000
+    outer loop
+      vertex 55.088543 630.000000 54.331879
+      vertex 66.822243 630.000000 56.884388
+      vertex 56.884388 630.000000 53.177761
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 0.000000
+    outer loop
+      vertex 57.887005 630.000000 67.196198
+      vertex 58.932640 630.000000 67.423660
+      vertex 56.884388 630.000000 66.822243
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 0.000000
+    outer loop
+      vertex 56.884388 630.000000 53.177761
+      vertex 64.911453 630.000000 54.331879
+      vertex 58.932640 630.000000 52.576340
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 66.822243 630.000000 56.884388
+      vertex 64.911453 630.000000 54.331879
+      vertex 56.884388 630.000000 53.177761
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 0.000000
+    outer loop
+      vertex 58.932640 630.000000 52.576340
+      vertex 64.911453 630.000000 54.331879
+      vertex 60.000000 630.000000 52.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 60.000000 630.000000 52.500000
+      vertex 64.911453 630.000000 54.331879
+      vertex 61.067360 630.000000 52.576340
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 61.067360 630.000000 52.576340
+      vertex 64.911453 630.000000 54.331879
+      vertex 62.112995 630.000000 52.803802
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 62.112995 630.000000 52.803802
+      vertex 64.911453 630.000000 54.331879
+      vertex 63.115612 630.000000 53.177761
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 63.115612 630.000000 53.177761
+      vertex 64.911453 630.000000 54.331879
+      vertex 64.054810 630.000000 53.690598
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 66.822243 630.000000 56.884388
+      vertex 65.668121 630.000000 55.088543
+      vertex 64.911453 630.000000 54.331879
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 66.309402 630.000000 55.945194
+      vertex 65.668121 630.000000 55.088543
+      vertex 66.822243 630.000000 56.884388
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 55.088543 630.000000 65.668121
+      vertex 52.576340 630.000000 58.932640
+      vertex 54.331879 630.000000 64.911453
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 52.803802 630.000000 62.112995
+      vertex 52.576340 630.000000 58.932640
+      vertex 52.576340 630.000000 61.067360
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 52.576340 630.000000 61.067360
+      vertex 52.576340 630.000000 58.932640
+      vertex 52.500000 630.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 56.884388 630.000000 66.822243
+      vertex 52.576340 630.000000 58.932640
+      vertex 55.088543 630.000000 65.668121
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 54.331879 630.000000 64.911453
+      vertex 52.576340 630.000000 58.932640
+      vertex 52.803802 630.000000 62.112995
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 61.067360 630.000000 67.423660
+      vertex 62.112995 630.000000 67.196198
+      vertex 60.000000 630.000000 67.500000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 60.000000 630.000000 67.500000
+      vertex 62.112995 630.000000 67.196198
+      vertex 58.932640 630.000000 67.423660
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 0.000000
+    outer loop
+      vertex 52.576340 630.000000 58.932640
+      vertex 62.112995 630.000000 67.196198
+      vertex 52.803802 630.000000 57.887005
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 58.932640 630.000000 67.423660
+      vertex 62.112995 630.000000 67.196198
+      vertex 56.884388 630.000000 66.822243
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 0.000000
+    outer loop
+      vertex 56.884388 630.000000 66.822243
+      vertex 62.112995 630.000000 67.196198
+      vertex 52.576340 630.000000 58.932640
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 62.112995 630.000000 67.196198
+      vertex 53.177761 630.000000 56.884388
+      vertex 52.803802 630.000000 57.887005
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 63.115612 630.000000 66.822243
+      vertex 64.054810 630.000000 66.309402
+      vertex 62.112995 630.000000 67.196198
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 0.000000
+    outer loop
+      vertex 53.177761 630.000000 56.884388
+      vertex 64.911453 630.000000 65.668121
+      vertex 53.690598 630.000000 55.945194
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 62.112995 630.000000 67.196198
+      vertex 64.911453 630.000000 65.668121
+      vertex 53.177761 630.000000 56.884388
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 64.054810 630.000000 66.309402
+      vertex 64.911453 630.000000 65.668121
+      vertex 62.112995 630.000000 67.196198
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 53.690598 630.000000 55.945194
+      vertex 55.088543 630.000000 54.331879
+      vertex 54.331879 630.000000 55.088543
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 55.088543 630.000000 54.331879
+      vertex 56.884388 630.000000 53.177761
+      vertex 55.945194 630.000000 53.690598
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 56.884388 630.000000 53.177761
+      vertex 58.932640 630.000000 52.576340
+      vertex 57.887005 630.000000 52.803802
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 67.196198 630.000000 62.112995
+      vertex 67.423660 630.000000 61.067360
+      vertex 66.822243 630.000000 63.115612
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 66.822243 630.000000 63.115612
+      vertex 67.423660 630.000000 61.067360
+      vertex 66.309402 630.000000 64.054810
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 66.309402 630.000000 64.054810
+      vertex 67.423660 630.000000 61.067360
+      vertex 65.668121 630.000000 64.911453
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/JetBreakup.FCStd b/apps/cpu/Multiphase/backup/JetBreakup.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..00f4eb43bb96542b5dc11c9ec84bd8b5a348a6fc
Binary files /dev/null and b/apps/cpu/Multiphase/backup/JetBreakup.FCStd differ
diff --git a/apps/cpu/Multiphase/backup/JetBreakup.stl b/apps/cpu/Multiphase/backup/JetBreakup.stl
new file mode 100644
index 0000000000000000000000000000000000000000..a82398ec6fc375e407ebe8ac42b811318e2fa788
Binary files /dev/null and b/apps/cpu/Multiphase/backup/JetBreakup.stl differ
diff --git a/apps/cpu/Multiphase/backup/JetBreakup2.ASCII.stl b/apps/cpu/Multiphase/backup/JetBreakup2.ASCII.stl
new file mode 100644
index 0000000000000000000000000000000000000000..d42dbd278b8e81c2c30a813f685d394ad351423a
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/JetBreakup2.ASCII.stl
@@ -0,0 +1,1584 @@
+solid Mesh
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -61.000000 -610.000000 -61.000000
+      vertex -60.000000 -610.000000 60.000000
+      vertex -61.000000 -610.000000 61.000000
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex -60.000000 -610.000000 -60.000000
+      vertex -60.000000 -610.000000 60.000000
+      vertex -61.000000 -610.000000 -61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -61.000000 -610.000000 -61.000000
+      vertex 61.000000 -610.000000 -61.000000
+      vertex -60.000000 -610.000000 -60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 61.000000 -610.000000 -61.000000
+      vertex 60.000000 -610.000000 -60.000000
+      vertex -60.000000 -610.000000 -60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 60.000000 -610.000000 60.000000
+      vertex 61.000000 -610.000000 61.000000
+      vertex -60.000000 -610.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -60.000000 -610.000000 60.000000
+      vertex 61.000000 -610.000000 61.000000
+      vertex -61.000000 -610.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 61.000000 -610.000000 -61.000000
+      vertex 61.000000 -610.000000 61.000000
+      vertex 60.000000 -610.000000 -60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 60.000000 -610.000000 -60.000000
+      vertex 61.000000 -610.000000 61.000000
+      vertex 60.000000 -610.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 61.000000 -3.000000 61.000000
+      vertex -61.000000 -610.000000 61.000000
+      vertex 61.000000 -610.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 61.000000 -3.000000 61.000000
+      vertex -61.000000 -3.000000 61.000000
+      vertex -61.000000 -610.000000 61.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 61.000000 -3.000000 -61.000000
+      vertex 61.000000 -610.000000 61.000000
+      vertex 61.000000 -610.000000 -61.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 -0.000000
+    outer loop
+      vertex 61.000000 -3.000000 -61.000000
+      vertex 61.000000 -3.000000 61.000000
+      vertex 61.000000 -610.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -61.000000 -3.000000 -61.000000
+      vertex 61.000000 -610.000000 -61.000000
+      vertex -61.000000 -610.000000 -61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -61.000000 -3.000000 -61.000000
+      vertex 61.000000 -3.000000 -61.000000
+      vertex 61.000000 -610.000000 -61.000000
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 0.000000
+    outer loop
+      vertex -61.000000 -3.000000 61.000000
+      vertex -61.000000 -610.000000 -61.000000
+      vertex -61.000000 -610.000000 61.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -61.000000 -3.000000 61.000000
+      vertex -61.000000 -3.000000 -61.000000
+      vertex -61.000000 -610.000000 -61.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex -60.000000 -610.000000 -60.000000
+      vertex -60.000000 -3.000000 -60.000000
+      vertex -60.000000 -610.000000 60.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 -0.000000
+    outer loop
+      vertex -60.000000 -3.000000 -60.000000
+      vertex -60.000000 -3.000000 60.000000
+      vertex -60.000000 -610.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -0.000000 1.000000
+    outer loop
+      vertex 60.000000 -610.000000 -60.000000
+      vertex 60.000000 -3.000000 -60.000000
+      vertex -60.000000 -610.000000 -60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 60.000000 -3.000000 -60.000000
+      vertex -60.000000 -3.000000 -60.000000
+      vertex -60.000000 -610.000000 -60.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 60.000000 -610.000000 60.000000
+      vertex 60.000000 -3.000000 -60.000000
+      vertex 60.000000 -610.000000 -60.000000
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex 60.000000 -3.000000 60.000000
+      vertex 60.000000 -3.000000 -60.000000
+      vertex 60.000000 -610.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -60.000000 -610.000000 60.000000
+      vertex -60.000000 -3.000000 60.000000
+      vertex 60.000000 -610.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -60.000000 -3.000000 60.000000
+      vertex 60.000000 -3.000000 60.000000
+      vertex 60.000000 -610.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 61.000000 -3.000000 61.000000
+      vertex -61.000000 -1.000000 61.000000
+      vertex -61.000000 -3.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 61.000000 -1.000000 61.000000
+      vertex -61.000000 -1.000000 61.000000
+      vertex 61.000000 -3.000000 61.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 61.000000 -1.000000 -61.000000
+      vertex 61.000000 -3.000000 61.000000
+      vertex 61.000000 -3.000000 -61.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 -0.000000
+    outer loop
+      vertex 61.000000 -1.000000 -61.000000
+      vertex 61.000000 -1.000000 61.000000
+      vertex 61.000000 -3.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -61.000000 -1.000000 -61.000000
+      vertex 61.000000 -3.000000 -61.000000
+      vertex -61.000000 -3.000000 -61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -61.000000 -1.000000 -61.000000
+      vertex 61.000000 -1.000000 -61.000000
+      vertex 61.000000 -3.000000 -61.000000
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 0.000000
+    outer loop
+      vertex -61.000000 -1.000000 61.000000
+      vertex -61.000000 -3.000000 -61.000000
+      vertex -61.000000 -3.000000 61.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex -61.000000 -1.000000 61.000000
+      vertex -61.000000 -1.000000 -61.000000
+      vertex -61.000000 -3.000000 -61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -60.000000 -3.000000 -60.000000
+      vertex -4.489497 -3.000000 -6.621512
+      vertex -5.807964 -3.000000 -5.501595
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex -5.807964 -3.000000 -5.501595
+      vertex -6.854857 -3.000000 -4.124431
+      vertex -60.000000 -3.000000 -60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -60.000000 -3.000000 -60.000000
+      vertex -2.961105 -3.000000 -7.431814
+      vertex -4.489497 -3.000000 -6.621512
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex -6.854857 -3.000000 -4.124431
+      vertex -7.581225 -3.000000 -2.554412
+      vertex -60.000000 -3.000000 -60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -60.000000 -3.000000 -60.000000
+      vertex -1.294256 -3.000000 -7.894612
+      vertex -2.961105 -3.000000 -7.431814
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex -7.581225 -3.000000 -2.554412
+      vertex -7.953104 -3.000000 -0.864952
+      vertex -60.000000 -3.000000 -60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -60.000000 -3.000000 -60.000000
+      vertex 0.433111 -3.000000 -7.988267
+      vertex -1.294256 -3.000000 -7.894612
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex -7.953104 -3.000000 -0.864952
+      vertex -7.953104 -3.000000 0.864952
+      vertex -60.000000 -3.000000 -60.000000
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex -5.807964 -3.000000 5.501595
+      vertex -60.000000 -3.000000 60.000000
+      vertex -6.854857 -3.000000 4.124431
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex -6.854857 -3.000000 4.124431
+      vertex -60.000000 -3.000000 60.000000
+      vertex -7.581225 -3.000000 2.554412
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex -7.581225 -3.000000 2.554412
+      vertex -60.000000 -3.000000 60.000000
+      vertex -7.953104 -3.000000 0.864952
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex -7.953104 -3.000000 0.864952
+      vertex -60.000000 -3.000000 60.000000
+      vertex -60.000000 -3.000000 -60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 0.433111 -3.000000 -7.988267
+      vertex 60.000000 -3.000000 -60.000000
+      vertex 2.140227 -3.000000 -7.708400
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 2.140227 -3.000000 -7.708400
+      vertex 60.000000 -3.000000 -60.000000
+      vertex 3.747267 -3.000000 -7.068096
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 3.747267 -3.000000 -7.068096
+      vertex 60.000000 -3.000000 -60.000000
+      vertex 5.179090 -3.000000 -6.097296
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -60.000000 -3.000000 -60.000000
+      vertex 60.000000 -3.000000 -60.000000
+      vertex 0.433111 -3.000000 -7.988267
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 60.000000 -3.000000 -60.000000
+      vertex 6.368744 -3.000000 -4.841394
+      vertex 5.179090 -3.000000 -6.097296
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -5.807964 -3.000000 5.501595
+      vertex -4.489497 -3.000000 6.621512
+      vertex -60.000000 -3.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 60.000000 -3.000000 -60.000000
+      vertex 7.260603 -3.000000 -3.359113
+      vertex 6.368744 -3.000000 -4.841394
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -4.489497 -3.000000 6.621512
+      vertex -2.961105 -3.000000 7.431814
+      vertex -60.000000 -3.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 60.000000 -3.000000 -60.000000
+      vertex 7.812964 -3.000000 -1.719764
+      vertex 7.260603 -3.000000 -3.359113
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -2.961105 -3.000000 7.431814
+      vertex -1.294256 -3.000000 7.894612
+      vertex -60.000000 -3.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 60.000000 -3.000000 -60.000000
+      vertex 8.000000 -3.000000 0.000000
+      vertex 7.812964 -3.000000 -1.719764
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -1.294256 -3.000000 7.894612
+      vertex 0.433111 -3.000000 7.988267
+      vertex -60.000000 -3.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 8.000000 -3.000000 0.000000
+      vertex 60.000000 -3.000000 60.000000
+      vertex 7.812964 -3.000000 1.719764
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 7.812964 -3.000000 1.719764
+      vertex 60.000000 -3.000000 60.000000
+      vertex 7.260603 -3.000000 3.359113
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 7.260603 -3.000000 3.359113
+      vertex 60.000000 -3.000000 60.000000
+      vertex 6.368744 -3.000000 4.841394
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 6.368744 -3.000000 4.841394
+      vertex 60.000000 -3.000000 60.000000
+      vertex 5.179090 -3.000000 6.097296
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 5.179090 -3.000000 6.097296
+      vertex 60.000000 -3.000000 60.000000
+      vertex 3.747267 -3.000000 7.068096
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 3.747267 -3.000000 7.068096
+      vertex 60.000000 -3.000000 60.000000
+      vertex 2.140227 -3.000000 7.708400
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 2.140227 -3.000000 7.708400
+      vertex 60.000000 -3.000000 60.000000
+      vertex 0.433111 -3.000000 7.988267
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 60.000000 -3.000000 -60.000000
+      vertex 60.000000 -3.000000 60.000000
+      vertex 8.000000 -3.000000 0.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 0.433111 -3.000000 7.988267
+      vertex 60.000000 -3.000000 60.000000
+      vertex -60.000000 -3.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 61.000000 -1.000000 61.000000
+      vertex -61.000000 0.000000 61.000000
+      vertex -61.000000 -1.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 61.000000 0.000000 61.000000
+      vertex -61.000000 0.000000 61.000000
+      vertex 61.000000 -1.000000 61.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 61.000000 -1.000000 -61.000000
+      vertex 61.000000 0.000000 61.000000
+      vertex 61.000000 -1.000000 61.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 -0.000000
+    outer loop
+      vertex 61.000000 -0.000000 -61.000000
+      vertex 61.000000 0.000000 61.000000
+      vertex 61.000000 -1.000000 -61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -61.000000 -1.000000 -61.000000
+      vertex 61.000000 -0.000000 -61.000000
+      vertex 61.000000 -1.000000 -61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex -61.000000 -0.000000 -61.000000
+      vertex 61.000000 -0.000000 -61.000000
+      vertex -61.000000 -1.000000 -61.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex -61.000000 -1.000000 61.000000
+      vertex -61.000000 -0.000000 -61.000000
+      vertex -61.000000 -1.000000 -61.000000
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 0.000000
+    outer loop
+      vertex -61.000000 0.000000 61.000000
+      vertex -61.000000 -0.000000 -61.000000
+      vertex -61.000000 -1.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.647386 0.000000 0.762162
+    outer loop
+      vertex -4.489497 -1.000000 -6.621512
+      vertex -5.807964 -1.000000 -5.501595
+      vertex -5.807964 -3.000000 -5.501595
+    endloop
+  endfacet
+  facet normal 0.647386 0.000000 0.762162
+    outer loop
+      vertex -4.489497 -1.000000 -6.621512
+      vertex -5.807964 -3.000000 -5.501595
+      vertex -4.489497 -3.000000 -6.621512
+    endloop
+  endfacet
+  facet normal 0.468408 0.000000 0.883512
+    outer loop
+      vertex -2.961105 -1.000000 -7.431814
+      vertex -4.489497 -1.000000 -6.621512
+      vertex -4.489497 -3.000000 -6.621512
+    endloop
+  endfacet
+  facet normal 0.468408 0.000000 0.883512
+    outer loop
+      vertex -2.961105 -1.000000 -7.431814
+      vertex -4.489497 -3.000000 -6.621512
+      vertex -2.961105 -3.000000 -7.431814
+    endloop
+  endfacet
+  facet normal 0.267528 0.000000 0.963550
+    outer loop
+      vertex -1.294256 -1.000000 -7.894612
+      vertex -2.961105 -1.000000 -7.431814
+      vertex -2.961105 -3.000000 -7.431814
+    endloop
+  endfacet
+  facet normal -0.994138 -0.000000 -0.108119
+    outer loop
+      vertex 7.812964 -1.000000 1.719764
+      vertex 8.000000 -3.000000 0.000000
+      vertex 7.812964 -3.000000 1.719764
+    endloop
+  endfacet
+  facet normal 0.267528 0.000000 0.963550
+    outer loop
+      vertex -1.294256 -1.000000 -7.894612
+      vertex -2.961105 -3.000000 -7.431814
+      vertex -1.294256 -3.000000 -7.894612
+    endloop
+  endfacet
+  facet normal -0.994138 0.000000 -0.108119
+    outer loop
+      vertex 7.812964 -1.000000 1.719764
+      vertex 8.000000 -1.000000 0.000000
+      vertex 8.000000 -3.000000 0.000000
+    endloop
+  endfacet
+  facet normal 0.054139 0.000000 0.998533
+    outer loop
+      vertex 0.433111 -1.000000 -7.988267
+      vertex -1.294256 -1.000000 -7.894612
+      vertex -1.294256 -3.000000 -7.894612
+    endloop
+  endfacet
+  facet normal -0.947653 -0.000000 -0.319302
+    outer loop
+      vertex 7.260603 -1.000000 3.359113
+      vertex 7.812964 -3.000000 1.719764
+      vertex 7.260603 -3.000000 3.359113
+    endloop
+  endfacet
+  facet normal 0.054139 0.000000 0.998533
+    outer loop
+      vertex 0.433111 -1.000000 -7.988267
+      vertex -1.294256 -3.000000 -7.894612
+      vertex 0.433111 -3.000000 -7.988267
+    endloop
+  endfacet
+  facet normal -0.947653 0.000000 -0.319302
+    outer loop
+      vertex 7.260603 -1.000000 3.359113
+      vertex 7.812964 -1.000000 1.719764
+      vertex 7.812964 -3.000000 1.719764
+    endloop
+  endfacet
+  facet normal -0.161782 0.000000 0.986826
+    outer loop
+      vertex 2.140227 -1.000000 -7.708400
+      vertex 0.433111 -1.000000 -7.988267
+      vertex 0.433111 -3.000000 -7.988267
+    endloop
+  endfacet
+  facet normal -0.161782 0.000000 0.986826
+    outer loop
+      vertex 2.140227 -1.000000 -7.708400
+      vertex 0.433111 -3.000000 -7.988267
+      vertex 2.140227 -3.000000 -7.708400
+    endloop
+  endfacet
+  facet normal -0.856857 -0.000000 -0.515554
+    outer loop
+      vertex 6.368744 -1.000000 4.841394
+      vertex 7.260603 -3.000000 3.359113
+      vertex 6.368744 -3.000000 4.841394
+    endloop
+  endfacet
+  facet normal -0.856857 0.000000 -0.515554
+    outer loop
+      vertex 6.368744 -1.000000 4.841394
+      vertex 7.260603 -1.000000 3.359113
+      vertex 7.260603 -3.000000 3.359113
+    endloop
+  endfacet
+  facet normal -0.370138 0.000000 0.928977
+    outer loop
+      vertex 3.747267 -1.000000 -7.068096
+      vertex 2.140227 -3.000000 -7.708400
+      vertex 3.747267 -3.000000 -7.068096
+    endloop
+  endfacet
+  facet normal -0.725995 -0.000000 -0.687699
+    outer loop
+      vertex 5.179090 -1.000000 6.097296
+      vertex 6.368744 -3.000000 4.841394
+      vertex 5.179090 -3.000000 6.097296
+    endloop
+  endfacet
+  facet normal -0.370138 0.000000 0.928977
+    outer loop
+      vertex 3.747267 -1.000000 -7.068096
+      vertex 2.140227 -1.000000 -7.708400
+      vertex 2.140227 -3.000000 -7.708400
+    endloop
+  endfacet
+  facet normal -0.725995 0.000000 -0.687699
+    outer loop
+      vertex 5.179090 -1.000000 6.097296
+      vertex 6.368744 -1.000000 4.841394
+      vertex 6.368744 -3.000000 4.841394
+    endloop
+  endfacet
+  facet normal -0.561187 0.000000 0.827689
+    outer loop
+      vertex 5.179090 -1.000000 -6.097296
+      vertex 3.747267 -3.000000 -7.068096
+      vertex 5.179090 -3.000000 -6.097296
+    endloop
+  endfacet
+  facet normal -0.561187 -0.000000 -0.827689
+    outer loop
+      vertex 3.747267 -1.000000 7.068096
+      vertex 5.179090 -3.000000 6.097296
+      vertex 3.747267 -3.000000 7.068096
+    endloop
+  endfacet
+  facet normal -0.561187 0.000000 0.827689
+    outer loop
+      vertex 5.179090 -1.000000 -6.097296
+      vertex 3.747267 -1.000000 -7.068096
+      vertex 3.747267 -3.000000 -7.068096
+    endloop
+  endfacet
+  facet normal -0.561187 0.000000 -0.827689
+    outer loop
+      vertex 3.747267 -1.000000 7.068096
+      vertex 5.179090 -1.000000 6.097296
+      vertex 5.179090 -3.000000 6.097296
+    endloop
+  endfacet
+  facet normal -0.725995 0.000000 0.687699
+    outer loop
+      vertex 6.368744 -1.000000 -4.841394
+      vertex 5.179090 -3.000000 -6.097296
+      vertex 6.368744 -3.000000 -4.841394
+    endloop
+  endfacet
+  facet normal -0.370138 -0.000000 -0.928977
+    outer loop
+      vertex 2.140227 -1.000000 7.708400
+      vertex 3.747267 -3.000000 7.068096
+      vertex 2.140227 -3.000000 7.708400
+    endloop
+  endfacet
+  facet normal -0.725995 0.000000 0.687699
+    outer loop
+      vertex 6.368744 -1.000000 -4.841394
+      vertex 5.179090 -1.000000 -6.097296
+      vertex 5.179090 -3.000000 -6.097296
+    endloop
+  endfacet
+  facet normal -0.370138 0.000000 -0.928977
+    outer loop
+      vertex 2.140227 -1.000000 7.708400
+      vertex 3.747267 -1.000000 7.068096
+      vertex 3.747267 -3.000000 7.068096
+    endloop
+  endfacet
+  facet normal -0.856857 0.000000 0.515554
+    outer loop
+      vertex 7.260603 -1.000000 -3.359113
+      vertex 6.368744 -3.000000 -4.841394
+      vertex 7.260603 -3.000000 -3.359113
+    endloop
+  endfacet
+  facet normal -0.161782 -0.000000 -0.986826
+    outer loop
+      vertex 0.433111 -1.000000 7.988267
+      vertex 2.140227 -3.000000 7.708400
+      vertex 0.433111 -3.000000 7.988267
+    endloop
+  endfacet
+  facet normal -0.856857 0.000000 0.515554
+    outer loop
+      vertex 7.260603 -1.000000 -3.359113
+      vertex 6.368744 -1.000000 -4.841394
+      vertex 6.368744 -3.000000 -4.841394
+    endloop
+  endfacet
+  facet normal -0.161782 0.000000 -0.986826
+    outer loop
+      vertex 0.433111 -1.000000 7.988267
+      vertex 2.140227 -1.000000 7.708400
+      vertex 2.140227 -3.000000 7.708400
+    endloop
+  endfacet
+  facet normal -0.947653 0.000000 0.319302
+    outer loop
+      vertex 7.812964 -1.000000 -1.719764
+      vertex 7.260603 -3.000000 -3.359113
+      vertex 7.812964 -3.000000 -1.719764
+    endloop
+  endfacet
+  facet normal -0.947653 0.000000 0.319302
+    outer loop
+      vertex 7.812964 -1.000000 -1.719764
+      vertex 7.260603 -1.000000 -3.359113
+      vertex 7.260603 -3.000000 -3.359113
+    endloop
+  endfacet
+  facet normal 0.054139 0.000000 -0.998533
+    outer loop
+      vertex -1.294256 -1.000000 7.894612
+      vertex 0.433111 -3.000000 7.988267
+      vertex -1.294256 -3.000000 7.894612
+    endloop
+  endfacet
+  facet normal 0.054139 0.000000 -0.998533
+    outer loop
+      vertex -1.294256 -1.000000 7.894612
+      vertex 0.433111 -1.000000 7.988267
+      vertex 0.433111 -3.000000 7.988267
+    endloop
+  endfacet
+  facet normal -0.994138 0.000000 0.108119
+    outer loop
+      vertex 8.000000 -1.000000 0.000000
+      vertex 7.812964 -3.000000 -1.719764
+      vertex 8.000000 -3.000000 0.000000
+    endloop
+  endfacet
+  facet normal -0.994138 0.000000 0.108119
+    outer loop
+      vertex 8.000000 -1.000000 0.000000
+      vertex 7.812964 -1.000000 -1.719764
+      vertex 7.812964 -3.000000 -1.719764
+    endloop
+  endfacet
+  facet normal 0.267528 0.000000 -0.963550
+    outer loop
+      vertex -2.961105 -1.000000 7.431814
+      vertex -1.294256 -3.000000 7.894612
+      vertex -2.961105 -3.000000 7.431814
+    endloop
+  endfacet
+  facet normal 0.267528 0.000000 -0.963550
+    outer loop
+      vertex -2.961105 -1.000000 7.431814
+      vertex -1.294256 -1.000000 7.894612
+      vertex -1.294256 -3.000000 7.894612
+    endloop
+  endfacet
+  facet normal 0.468408 0.000000 -0.883512
+    outer loop
+      vertex -4.489497 -1.000000 6.621512
+      vertex -2.961105 -1.000000 7.431814
+      vertex -2.961105 -3.000000 7.431814
+    endloop
+  endfacet
+  facet normal 0.468408 0.000000 -0.883512
+    outer loop
+      vertex -4.489497 -1.000000 6.621512
+      vertex -2.961105 -3.000000 7.431814
+      vertex -4.489497 -3.000000 6.621512
+    endloop
+  endfacet
+  facet normal 0.647386 0.000000 -0.762162
+    outer loop
+      vertex -5.807964 -1.000000 5.501595
+      vertex -4.489497 -1.000000 6.621512
+      vertex -4.489497 -3.000000 6.621512
+    endloop
+  endfacet
+  facet normal 0.647386 0.000000 -0.762162
+    outer loop
+      vertex -5.807964 -1.000000 5.501595
+      vertex -4.489497 -3.000000 6.621512
+      vertex -5.807964 -3.000000 5.501595
+    endloop
+  endfacet
+  facet normal 0.796093 0.000000 -0.605174
+    outer loop
+      vertex -6.854857 -1.000000 4.124431
+      vertex -5.807964 -1.000000 5.501595
+      vertex -5.807964 -3.000000 5.501595
+    endloop
+  endfacet
+  facet normal 0.796093 0.000000 -0.605174
+    outer loop
+      vertex -6.854857 -1.000000 4.124431
+      vertex -5.807964 -3.000000 5.501595
+      vertex -6.854857 -3.000000 4.124431
+    endloop
+  endfacet
+  facet normal 0.907575 0.000000 -0.419889
+    outer loop
+      vertex -7.581225 -1.000000 2.554412
+      vertex -6.854857 -1.000000 4.124431
+      vertex -6.854857 -3.000000 4.124431
+    endloop
+  endfacet
+  facet normal 0.907575 0.000000 -0.419889
+    outer loop
+      vertex -7.581225 -1.000000 2.554412
+      vertex -6.854857 -3.000000 4.124431
+      vertex -7.581225 -3.000000 2.554412
+    endloop
+  endfacet
+  facet normal 0.976621 0.000000 -0.214970
+    outer loop
+      vertex -7.953104 -1.000000 0.864952
+      vertex -7.581225 -1.000000 2.554412
+      vertex -7.581225 -3.000000 2.554412
+    endloop
+  endfacet
+  facet normal 0.976621 0.000000 -0.214970
+    outer loop
+      vertex -7.953104 -1.000000 0.864952
+      vertex -7.581225 -3.000000 2.554412
+      vertex -7.953104 -3.000000 0.864952
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 -0.000000
+    outer loop
+      vertex -7.953104 -1.000000 -0.864952
+      vertex -7.953104 -1.000000 0.864952
+      vertex -7.953104 -3.000000 0.864952
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex -7.953104 -1.000000 -0.864952
+      vertex -7.953104 -3.000000 0.864952
+      vertex -7.953104 -3.000000 -0.864952
+    endloop
+  endfacet
+  facet normal 0.976621 0.000000 0.214970
+    outer loop
+      vertex -7.581225 -1.000000 -2.554412
+      vertex -7.953104 -1.000000 -0.864952
+      vertex -7.953104 -3.000000 -0.864952
+    endloop
+  endfacet
+  facet normal 0.976621 0.000000 0.214970
+    outer loop
+      vertex -7.581225 -1.000000 -2.554412
+      vertex -7.953104 -3.000000 -0.864952
+      vertex -7.581225 -3.000000 -2.554412
+    endloop
+  endfacet
+  facet normal 0.907575 0.000000 0.419889
+    outer loop
+      vertex -6.854857 -1.000000 -4.124431
+      vertex -7.581225 -1.000000 -2.554412
+      vertex -7.581225 -3.000000 -2.554412
+    endloop
+  endfacet
+  facet normal 0.907575 0.000000 0.419889
+    outer loop
+      vertex -6.854857 -1.000000 -4.124431
+      vertex -7.581225 -3.000000 -2.554412
+      vertex -6.854857 -3.000000 -4.124431
+    endloop
+  endfacet
+  facet normal 0.796093 0.000000 0.605174
+    outer loop
+      vertex -5.807964 -1.000000 -5.501595
+      vertex -6.854857 -1.000000 -4.124431
+      vertex -6.854857 -3.000000 -4.124431
+    endloop
+  endfacet
+  facet normal 0.796093 0.000000 0.605174
+    outer loop
+      vertex -5.807964 -1.000000 -5.501595
+      vertex -6.854857 -3.000000 -4.124431
+      vertex -5.807964 -3.000000 -5.501595
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 61.000000 -0.000000 -61.000000
+      vertex -61.000000 -0.000000 -61.000000
+      vertex -60.000000 -0.000000 -60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 60.000000 -0.000000 -60.000000
+      vertex 61.000000 -0.000000 -61.000000
+      vertex -60.000000 -0.000000 -60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -61.000000 0.000000 61.000000
+      vertex -60.000000 -0.000000 -60.000000
+      vertex -61.000000 -0.000000 -61.000000
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex -60.000000 0.000000 60.000000
+      vertex -60.000000 -0.000000 -60.000000
+      vertex -61.000000 0.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 60.000000 0.000000 60.000000
+      vertex -60.000000 0.000000 60.000000
+      vertex -61.000000 0.000000 61.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 61.000000 0.000000 61.000000
+      vertex 60.000000 0.000000 60.000000
+      vertex -61.000000 0.000000 61.000000
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 61.000000 0.000000 61.000000
+      vertex 61.000000 -0.000000 -61.000000
+      vertex 60.000000 -0.000000 -60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 61.000000 0.000000 61.000000
+      vertex 60.000000 -0.000000 -60.000000
+      vertex 60.000000 0.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -4.489497 -1.000000 -6.621512
+      vertex -6.854857 -1.000000 -4.124431
+      vertex -5.807964 -1.000000 -5.501595
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -2.961105 -1.000000 -7.431814
+      vertex -1.294256 -1.000000 -7.894612
+      vertex -4.489497 -1.000000 -6.621512
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -1.294256 -1.000000 -7.894612
+      vertex 0.433111 -1.000000 -7.988267
+      vertex -4.489497 -1.000000 -6.621512
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -7.581225 -1.000000 -2.554412
+      vertex -7.953104 -1.000000 0.864952
+      vertex -7.953104 -1.000000 -0.864952
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex 2.140227 -1.000000 -7.708400
+      vertex 3.747267 -1.000000 -7.068096
+      vertex 0.433111 -1.000000 -7.988267
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -7.953104 -1.000000 0.864952
+      vertex -6.854857 -1.000000 4.124431
+      vertex -7.581225 -1.000000 2.554412
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -7.581225 -1.000000 -2.554412
+      vertex -6.854857 -1.000000 4.124431
+      vertex -7.953104 -1.000000 0.864952
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex 3.747267 -1.000000 -7.068096
+      vertex 5.179090 -1.000000 -6.097296
+      vertex 0.433111 -1.000000 -7.988267
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -6.854857 -1.000000 -4.124431
+      vertex -4.489497 -1.000000 6.621512
+      vertex -7.581225 -1.000000 -2.554412
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -6.854857 -1.000000 4.124431
+      vertex -4.489497 -1.000000 6.621512
+      vertex -5.807964 -1.000000 5.501595
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -4.489497 -1.000000 -6.621512
+      vertex -4.489497 -1.000000 6.621512
+      vertex -6.854857 -1.000000 -4.124431
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -7.581225 -1.000000 -2.554412
+      vertex -4.489497 -1.000000 6.621512
+      vertex -6.854857 -1.000000 4.124431
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex 6.368744 -1.000000 -4.841394
+      vertex 7.260603 -1.000000 -3.359113
+      vertex 5.179090 -1.000000 -6.097296
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex 5.179090 -1.000000 -6.097296
+      vertex 7.260603 -1.000000 -3.359113
+      vertex 0.433111 -1.000000 -7.988267
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -4.489497 -1.000000 6.621512
+      vertex -1.294256 -1.000000 7.894612
+      vertex -2.961105 -1.000000 7.431814
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 0.433111 -1.000000 -7.988267
+      vertex -1.294256 -1.000000 7.894612
+      vertex -4.489497 -1.000000 -6.621512
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -4.489497 -1.000000 -6.621512
+      vertex -1.294256 -1.000000 7.894612
+      vertex -4.489497 -1.000000 6.621512
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex 8.000000 -1.000000 0.000000
+      vertex 7.812964 -1.000000 1.719764
+      vertex 7.812964 -1.000000 -1.719764
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex 7.812964 -1.000000 -1.719764
+      vertex 7.812964 -1.000000 1.719764
+      vertex 7.260603 -1.000000 -3.359113
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -1.294256 -1.000000 7.894612
+      vertex 2.140227 -1.000000 7.708400
+      vertex 0.433111 -1.000000 7.988267
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -1.294256 -1.000000 7.894612
+      vertex 3.747267 -1.000000 7.068096
+      vertex 2.140227 -1.000000 7.708400
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 -0.000000
+    outer loop
+      vertex 7.260603 -1.000000 3.359113
+      vertex 6.368744 -1.000000 4.841394
+      vertex 7.812964 -1.000000 1.719764
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex 7.260603 -1.000000 -3.359113
+      vertex 6.368744 -1.000000 4.841394
+      vertex 0.433111 -1.000000 -7.988267
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex 7.812964 -1.000000 1.719764
+      vertex 6.368744 -1.000000 4.841394
+      vertex 7.260603 -1.000000 -3.359113
+    endloop
+  endfacet
+  facet normal -0.000000 -1.000000 0.000000
+    outer loop
+      vertex 6.368744 -1.000000 4.841394
+      vertex 5.179090 -1.000000 6.097296
+      vertex 0.433111 -1.000000 -7.988267
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 0.433111 -1.000000 -7.988267
+      vertex 5.179090 -1.000000 6.097296
+      vertex -1.294256 -1.000000 7.894612
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex -1.294256 -1.000000 7.894612
+      vertex 5.179090 -1.000000 6.097296
+      vertex 3.747267 -1.000000 7.068096
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex -4.489497 -0.000000 -6.621512
+      vertex -60.000000 -0.000000 -60.000000
+      vertex -5.807964 -0.000000 -5.501595
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex -6.854857 -0.000000 -4.124431
+      vertex -5.807964 -0.000000 -5.501595
+      vertex -60.000000 -0.000000 -60.000000
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex -2.961105 -0.000000 -7.431814
+      vertex -60.000000 -0.000000 -60.000000
+      vertex -4.489497 -0.000000 -6.621512
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex -7.581225 -0.000000 -2.554412
+      vertex -6.854857 -0.000000 -4.124431
+      vertex -60.000000 -0.000000 -60.000000
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex -1.294256 -0.000000 -7.894612
+      vertex -60.000000 -0.000000 -60.000000
+      vertex -2.961105 -0.000000 -7.431814
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex -7.953104 -0.000000 -0.864952
+      vertex -7.581225 -0.000000 -2.554412
+      vertex -60.000000 -0.000000 -60.000000
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 0.433111 -0.000000 -7.988267
+      vertex -60.000000 -0.000000 -60.000000
+      vertex -1.294256 -0.000000 -7.894612
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex -7.953104 0.000000 0.864952
+      vertex -7.953104 -0.000000 -0.864952
+      vertex -60.000000 -0.000000 -60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -60.000000 0.000000 60.000000
+      vertex -5.807964 0.000000 5.501595
+      vertex -6.854857 0.000000 4.124431
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -60.000000 0.000000 60.000000
+      vertex -6.854857 0.000000 4.124431
+      vertex -7.581225 0.000000 2.554412
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -60.000000 0.000000 60.000000
+      vertex -7.581225 0.000000 2.554412
+      vertex -7.953104 0.000000 0.864952
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -60.000000 0.000000 60.000000
+      vertex -7.953104 0.000000 0.864952
+      vertex -60.000000 -0.000000 -60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 60.000000 -0.000000 -60.000000
+      vertex 0.433111 -0.000000 -7.988267
+      vertex 2.140227 -0.000000 -7.708400
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 60.000000 -0.000000 -60.000000
+      vertex 2.140227 -0.000000 -7.708400
+      vertex 3.747267 -0.000000 -7.068096
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 60.000000 -0.000000 -60.000000
+      vertex 3.747267 -0.000000 -7.068096
+      vertex 5.179090 -0.000000 -6.097296
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 60.000000 -0.000000 -60.000000
+      vertex -60.000000 -0.000000 -60.000000
+      vertex 0.433111 -0.000000 -7.988267
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 6.368744 -0.000000 -4.841394
+      vertex 60.000000 -0.000000 -60.000000
+      vertex 5.179090 -0.000000 -6.097296
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -4.489497 0.000000 6.621512
+      vertex -5.807964 0.000000 5.501595
+      vertex -60.000000 0.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 7.260603 -0.000000 -3.359113
+      vertex 60.000000 -0.000000 -60.000000
+      vertex 6.368744 -0.000000 -4.841394
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -2.961105 0.000000 7.431814
+      vertex -4.489497 0.000000 6.621512
+      vertex -60.000000 0.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 7.812964 -0.000000 -1.719764
+      vertex 60.000000 -0.000000 -60.000000
+      vertex 7.260603 -0.000000 -3.359113
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -1.294256 0.000000 7.894612
+      vertex -2.961105 0.000000 7.431814
+      vertex -60.000000 0.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 8.000000 0.000000 0.000000
+      vertex 60.000000 -0.000000 -60.000000
+      vertex 7.812964 -0.000000 -1.719764
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 0.433111 0.000000 7.988267
+      vertex -1.294256 0.000000 7.894612
+      vertex -60.000000 0.000000 60.000000
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 60.000000 0.000000 60.000000
+      vertex 8.000000 0.000000 0.000000
+      vertex 7.812964 0.000000 1.719764
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 60.000000 0.000000 60.000000
+      vertex 7.812964 0.000000 1.719764
+      vertex 7.260603 0.000000 3.359113
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 60.000000 0.000000 60.000000
+      vertex 7.260603 0.000000 3.359113
+      vertex 6.368744 0.000000 4.841394
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 60.000000 0.000000 60.000000
+      vertex 6.368744 0.000000 4.841394
+      vertex 5.179090 0.000000 6.097296
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 60.000000 0.000000 60.000000
+      vertex 5.179090 0.000000 6.097296
+      vertex 3.747267 0.000000 7.068096
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 60.000000 0.000000 60.000000
+      vertex 3.747267 0.000000 7.068096
+      vertex 2.140227 0.000000 7.708400
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 60.000000 0.000000 60.000000
+      vertex 2.140227 0.000000 7.708400
+      vertex 0.433111 0.000000 7.988267
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 60.000000 0.000000 60.000000
+      vertex 0.433111 0.000000 7.988267
+      vertex -60.000000 0.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 60.000000 0.000000 60.000000
+      vertex 60.000000 -0.000000 -60.000000
+      vertex 8.000000 0.000000 0.000000
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex -6.854857 -0.000000 -4.124431
+      vertex -4.489497 -0.000000 -6.621512
+      vertex -5.807964 -0.000000 -5.501595
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -7.581225 0.000000 2.554412
+      vertex -7.953104 -0.000000 -0.864952
+      vertex -7.953104 0.000000 0.864952
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 3.747267 -0.000000 -7.068096
+      vertex -1.294256 -0.000000 -7.894612
+      vertex -2.961105 -0.000000 -7.431814
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 3.747267 -0.000000 -7.068096
+      vertex 0.433111 -0.000000 -7.988267
+      vertex -1.294256 -0.000000 -7.894612
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 3.747267 -0.000000 -7.068096
+      vertex 2.140227 -0.000000 -7.708400
+      vertex 0.433111 -0.000000 -7.988267
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -6.854857 0.000000 4.124431
+      vertex -7.953104 -0.000000 -0.864952
+      vertex -7.581225 0.000000 2.554412
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -5.807964 0.000000 5.501595
+      vertex -7.581225 -0.000000 -2.554412
+      vertex -7.953104 -0.000000 -0.864952
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -5.807964 0.000000 5.501595
+      vertex -6.854857 -0.000000 -4.124431
+      vertex -7.581225 -0.000000 -2.554412
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -5.807964 0.000000 5.501595
+      vertex -7.953104 -0.000000 -0.864952
+      vertex -6.854857 0.000000 4.124431
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 6.368744 -0.000000 -4.841394
+      vertex 5.179090 -0.000000 -6.097296
+      vertex 3.747267 -0.000000 -7.068096
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex -2.961105 0.000000 7.431814
+      vertex -5.807964 0.000000 5.501595
+      vertex -4.489497 0.000000 6.621512
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -2.961105 0.000000 7.431814
+      vertex -2.961105 -0.000000 -7.431814
+      vertex -4.489497 -0.000000 -6.621512
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -2.961105 0.000000 7.431814
+      vertex 7.260603 -0.000000 -3.359113
+      vertex 6.368744 -0.000000 -4.841394
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex -2.961105 0.000000 7.431814
+      vertex -4.489497 -0.000000 -6.621512
+      vertex -6.854857 -0.000000 -4.124431
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -2.961105 0.000000 7.431814
+      vertex 3.747267 -0.000000 -7.068096
+      vertex -2.961105 -0.000000 -7.431814
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -2.961105 0.000000 7.431814
+      vertex 6.368744 -0.000000 -4.841394
+      vertex 3.747267 -0.000000 -7.068096
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex -2.961105 0.000000 7.431814
+      vertex -6.854857 -0.000000 -4.124431
+      vertex -5.807964 0.000000 5.501595
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 7.812964 0.000000 1.719764
+      vertex -2.961105 0.000000 7.431814
+      vertex -1.294256 0.000000 7.894612
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 7.812964 0.000000 1.719764
+      vertex 7.812964 -0.000000 -1.719764
+      vertex 7.260603 -0.000000 -3.359113
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 7.812964 0.000000 1.719764
+      vertex 8.000000 0.000000 0.000000
+      vertex 7.812964 -0.000000 -1.719764
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 7.812964 0.000000 1.719764
+      vertex 7.260603 -0.000000 -3.359113
+      vertex -2.961105 0.000000 7.431814
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 2.140227 0.000000 7.708400
+      vertex -1.294256 0.000000 7.894612
+      vertex 0.433111 0.000000 7.988267
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 2.140227 0.000000 7.708400
+      vertex 7.812964 0.000000 1.719764
+      vertex -1.294256 0.000000 7.894612
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 6.368744 0.000000 4.841394
+      vertex 7.260603 0.000000 3.359113
+      vertex 7.812964 0.000000 1.719764
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 5.179090 0.000000 6.097296
+      vertex 2.140227 0.000000 7.708400
+      vertex 3.747267 0.000000 7.068096
+    endloop
+  endfacet
+  facet normal -0.000000 1.000000 -0.000000
+    outer loop
+      vertex 5.179090 0.000000 6.097296
+      vertex 7.812964 0.000000 1.719764
+      vertex 2.140227 0.000000 7.708400
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 -0.000000
+    outer loop
+      vertex 5.179090 0.000000 6.097296
+      vertex 6.368744 0.000000 4.841394
+      vertex 7.812964 0.000000 1.719764
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/JetBreakup2.FCStd b/apps/cpu/Multiphase/backup/JetBreakup2.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..8e6ed64fa6eeb4fb3c310c7513463635b0f6ee19
Binary files /dev/null and b/apps/cpu/Multiphase/backup/JetBreakup2.FCStd differ
diff --git a/apps/cpu/Multiphase/backup/JetBreakup2.FCStd1 b/apps/cpu/Multiphase/backup/JetBreakup2.FCStd1
new file mode 100644
index 0000000000000000000000000000000000000000..6d0a48be9fed1a6a9398d9e8a620f5480d5fcd8d
Binary files /dev/null and b/apps/cpu/Multiphase/backup/JetBreakup2.FCStd1 differ
diff --git a/apps/cpu/Multiphase/backup/JetBreakup2.stl b/apps/cpu/Multiphase/backup/JetBreakup2.stl
new file mode 100644
index 0000000000000000000000000000000000000000..3c36f67113ef3741bbe0f8526dfe5efaf635f1ec
Binary files /dev/null and b/apps/cpu/Multiphase/backup/JetBreakup2.stl differ
diff --git a/apps/cpu/Multiphase/backup/JetBreakup3.FCStd b/apps/cpu/Multiphase/backup/JetBreakup3.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..beaf8c0e46fe33f5d006d98e3a96214ba09f2bbb
Binary files /dev/null and b/apps/cpu/Multiphase/backup/JetBreakup3.FCStd differ
diff --git a/apps/cpu/Multiphase/backup/JetBreakup3.stl b/apps/cpu/Multiphase/backup/JetBreakup3.stl
new file mode 100644
index 0000000000000000000000000000000000000000..a7f77cbf00ea06646ff3b8e6cfddec6be7eea3b4
Binary files /dev/null and b/apps/cpu/Multiphase/backup/JetBreakup3.stl differ
diff --git a/apps/cpu/Multiphase/backup/Multiphase (Droplet Test).cpp b/apps/cpu/Multiphase/backup/Multiphase (Droplet Test).cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b5a8a9eac55d2150f08e00a8ba6f215228bf135a
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/Multiphase (Droplet Test).cpp	
@@ -0,0 +1,482 @@
+#include <iostream>
+#include <string>
+
+#include "VirtualFluids.h"
+
+using namespace std;
+
+
+void run(string configname)
+{
+   try
+   {
+      ConfigurationFile   config;
+      config.load(configname);
+
+      string          pathname = config.getString("pathname");
+	  string		  pathGeo = config.getString("pathGeo");
+	  string		  geoFile = config.getString("geoFile");
+      int             numOfThreads = config.getInt("numOfThreads");
+      vector<int>     blocknx = config.getVector<int>("blocknx");
+	  vector<double>  boundingBox = config.getVector<double>("boundingBox");
+      //vector<double>  length = config.getVector<double>("length");
+	  double          uLB = config.getDouble("uLB");
+	  double          uF2 = config.getDouble("uF2");
+	  double		  nuL = config.getDouble("nuL");
+	  double		  nuG = config.getDouble("nuG");
+	  double		  densityRatio = config.getDouble("densityRatio");
+	  double		  sigma = config.getDouble("sigma");
+	  int		      interfaceThickness = config.getInt("interfaceThickness");
+	  double		  radius = config.getDouble("radius");
+	  double		  theta = config.getDouble("contactAngle");
+	  double		  gr = config.getDouble("gravity");
+	  double		  phiL = config.getDouble("phi_L");
+	  double		  phiH = config.getDouble("phi_H");
+	  double		  tauH = config.getDouble("Phase-field Relaxation");
+	  double		  mob = config.getDouble("Mobility");
+
+
+      double          endTime = config.getDouble("endTime");
+      double          outTime = config.getDouble("outTime");
+      double          availMem = config.getDouble("availMem");
+      int             refineLevel = config.getInt("refineLevel");
+      double          Re = config.getDouble("Re");
+      double          dx = config.getDouble("dx");
+      bool            logToFile = config.getBool("logToFile");
+      double          restartStep = config.getDouble("restartStep");
+      double          cpStart = config.getValue<double>("cpStart");
+      double          cpStep = config.getValue<double>("cpStep");
+      bool            newStart = config.getValue<bool>("newStart");
+
+      double beta  = 12*sigma/interfaceThickness;
+	  double kappa = 1.5*interfaceThickness*sigma;
+	  
+	  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);
+
+      LBMReal dLB; // = length[1] / dx;
+      LBMReal rhoLB = 0.0;
+      LBMReal nuLB = nuL; //(uLB*dLB) / Re;
+
+      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
+
+      const int baseLevel = 0;
+
+ 
+      
+      Grid3DPtr grid(new Grid3D(comm));
+      //grid->setPeriodicX1(true);
+	  //grid->setPeriodicX2(true);
+	  //grid->setPeriodicX3(true);
+      //////////////////////////////////////////////////////////////////////////
+      //restart
+      UbSchedulerPtr rSch(new UbScheduler(cpStep, cpStart));
+      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
+      MPIIORestart1CoProcessor rcp(grid, rSch, pathname, comm);
+      //////////////////////////////////////////////////////////////////////////
+	  
+	  
+
+	  if (newStart)
+      {
+
+         //bounding box
+         /*double g_minX1 = 0.0;
+         double g_minX2 = -length[1] / 2.0;
+         double g_minX3 = -length[2] / 2.0;
+
+         double g_maxX1 = length[0];
+         double g_maxX2 = length[1] / 2.0;
+         double g_maxX3 = length[2] / 2.0;*/
+
+		 double g_minX1 = boundingBox[0];
+		 double g_minX2 = boundingBox[2];
+		 double g_minX3 = boundingBox[4];
+
+		 double g_maxX1 = boundingBox[1];
+		 double g_maxX2 = boundingBox[3];
+		 double g_maxX3 = boundingBox[5];
+
+         //geometry
+
+		 GbObject3DPtr cylinder(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, 20.0));
+		 GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
+		 
+		 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());
+
+
+         double blockLength = blocknx[0] * dx;
+
+
+
+         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, "Preprocess - start");
+         }
+
+         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);
+
+
+		 //inflow
+		 //GbCuboid3DPtr geoInflowF1(new GbCuboid3D(g_minX1-blockLength, g_minX2-blockLength, g_minX3-blockLength, g_minX1, g_maxX2+blockLength, g_maxX3+blockLength));
+		 //GbCuboid3DPtr geoInflowF1(new GbCuboid3D(-34.0, -20.0, 1.0, -31.5, 16.0, 46.0));
+		 //GbCuboid3DPtr geoInflowF1(new GbCuboid3D(-24.0, 3, 20.0, -22.0, 24.0, 42.0));
+		 //if (myid==0) GbSystem3D::writeGeoObject(geoInflowF1.get(), pathname+"/geo/geoInflowF1", WbWriterVtkXmlASCII::getInstance());
+
+		 /*GbCuboid3DPtr geoInflowF2_1(new GbCuboid3D(-24.0, -24.0, 0.0, 26.0, 26.0, 3.5));
+		 if (myid==0) GbSystem3D::writeGeoObject(geoInflowF2_1.get(), pathname+"/geo/geoInflowF2_1", WbWriterVtkXmlASCII::getInstance());
+		 
+		 GbCuboid3DPtr geoInflowF2_2(new GbCuboid3D(-24.0, -24.0, 56.5, 26.0, 26.0, 59.9));
+		 if (myid==0) GbSystem3D::writeGeoObject(geoInflowF2_2.get(), pathname+"/geo/geoInflowF2_2", WbWriterVtkXmlASCII::getInstance());*/
+		 
+		 //outflow
+		 //GbCuboid3DPtr geoOutflow(new GbCuboid3D(126.0-50, -20.0, 1.0, 130.0-50, 16.0, 46.0));
+		 //GbCuboid3DPtr geoOutflow(new GbCuboid3D(126.0, -20.0, 1.0, 130.0, 16.0, 46.0));
+		 //GbCuboid3DPtr geoOutflow(new GbCuboid3D(78.0, 3, 20.0, 81.0, 24.0, 42.0));
+		 //if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
+
+		 //BC Adapter
+		 //////////////////////////////////////////////////////////////////////////////
+		 //BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+		 //noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+
+
+		//BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+		//denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+		
+		double r = 5.0; //boost::dynamic_pointer_cast<GbCylinder3D>(cylinder)->getRadius();
+		double cx1 = g_minX1;
+		double cx2 = 0.0; //cylinder->getX2Centroid();
+		double cx3 = 0.0; //cylinder->getX3Centroid();
+
+		mu::Parser fctF1;
+		fctF1.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+		//fctF1.SetExpr("vx1");
+		fctF1.DefineConst("R", 10.0);
+		//fctF1.DefineConst("R", 8.0); // FlowFocusingSS
+		fctF1.DefineConst("vx1", uLB);
+		fctF1.DefineConst("y0", 1.0);
+		fctF1.DefineConst("z0", 31.0);
+		
+		mu::Parser fctF2_1;
+		fctF2_1.SetExpr("vx3*(1-((x1-x0)^2+(x2-y0)^2)/(R^2))");
+		//fctF2_1.SetExpr("vx3");
+		fctF2_1.DefineConst("R", 12.0);
+		fctF2_1.DefineConst("vx3", uF2);
+		fctF2_1.DefineConst("x0", 1.0);
+		fctF2_1.DefineConst("y0", 1.0);
+
+		mu::Parser fctF2_2;
+		fctF2_2.SetExpr("vx3*(1-((x1-x0)^2+(x2-y0)^2)/(R^2))");
+		//fctF2_2.SetExpr("vx3");
+		fctF2_2.DefineConst("R", 12.0);
+		fctF2_2.DefineConst("vx3", -uF2);
+		fctF2_2.DefineConst("x0", 1.0);
+		fctF2_2.DefineConst("y0", 1.0);
+		
+		mu::Parser fctPhi_F1;
+		fctPhi_F1.SetExpr("phiH");
+		fctPhi_F1.DefineConst("phiH", phiH);
+
+		mu::Parser fctPhi_F2;
+		fctPhi_F2.SetExpr("phiL");
+		fctPhi_F2.DefineConst("phiL", phiL);
+		
+		mu::Parser fctvel_F2_init;
+		fctvel_F2_init.SetExpr("U");
+		fctvel_F2_init.DefineConst("U", 0);
+
+		//fct.SetExpr("U");
+		//fct.DefineConst("U", uLB);
+		//BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		//BCAdapterPtr velBCAdapterF1(new VelocityBCAdapterMultiphase(true, false, false, fctF1, phiH, 0.0, endTime));
+		
+		//BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_1, phiL, 0.0, endTime));
+		//BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_2, phiL, 0.0, endTime));
+
+		//BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		//BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		
+		//velBCAdapterF1->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		//velBCAdapterF2_1_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		//velBCAdapterF2_2_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		 
+		 
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+		 //mu::Parser fct;
+		 //fct.SetExpr("U");
+		 //fct.DefineConst("U", uLB);
+		 //BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingVelocityBCAlgorithm()));
+
+
+		 //////////////////////////////////////////////////////////////////////////////////
+		 //BC visitor
+		 BoundaryConditionsBlockVisitorMultiphase bcVisitor;
+		 /*bcVisitor.addBC(noSlipBCAdapter);
+		 bcVisitor.addBC(denBCAdapter);
+		 bcVisitor.addBC(velBCAdapterF1);
+		 bcVisitor.addBC(velBCAdapterF2_1_init);
+		 bcVisitor.addBC(velBCAdapterF2_2_init);*/
+
+
+
+         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
+
+         ppblocks->process(0);
+
+         //Interactor3DPtr tubes(new D3Q27TriFaceMeshInteractor(cylinder, grid, noSlipBCAdapter, Interactor3D::INVERSESOLID));
+		 
+
+
+         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
+         InteractorsHelper intHelper(grid, metisVisitor);
+		 //intHelper.addInteractor(tubes);
+
+         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");
+         }
+
+         LBMKernelPtr kernel;
+
+         kernel = LBMKernelPtr(new MultiphaseCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], MultiphaseCumulantLBMKernel::NORMAL));
+
+         kernel->setWithForcing(false);
+		 kernel->setForcingX1(gr);
+		 kernel->setForcingX2(0.0);
+		 kernel->setForcingX3(0.0);
+
+		 kernel->setPhiL(phiL);
+		 kernel->setPhiH(phiH);
+		 kernel->setPhaseFieldRelaxation(tauH);
+		 kernel->setMobility(mob);
+
+         BCProcessorPtr bcProc(new BCProcessor());
+         //BCProcessorPtr bcProc(new ThinWallBCProcessor());
+
+         kernel->setBCProcessor(bcProc);
+
+         SetKernelBlockVisitorMultiphase kernelVisitor(kernel, nuL, nuG, densityRatio, beta, kappa, theta, availMem, needMem);
+         
+		 grid->accept(kernelVisitor);
+
+         if (refineLevel > 0)
+         {
+            SetUndefinedNodesBlockVisitor undefNodesVisitor;
+            grid->accept(undefNodesVisitor);
+         }
+
+
+
+         //intHelper.setBC();
+         //grid->accept(bcVisitor);
+
+         //initialization of distributions
+		 //initialization of distributions
+		 LBMReal x1c = (g_maxX1 - g_minX1-1)/2;
+		 LBMReal x2c = (g_maxX2 - g_minX2-1)/2;
+		 LBMReal x3c = (g_maxX3 - g_minX3-1)/2;
+		 mu::Parser fct1;
+		 fct1.SetExpr("0.5-0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct1.DefineConst("x1c", x1c);
+		 fct1.DefineConst("x2c", x2c);
+		 fct1.DefineConst("x3c", x3c);
+		 fct1.DefineConst("radius", radius);
+		 fct1.DefineConst("interfaceThickness", interfaceThickness);
+		 
+		 mu::Parser fct2;
+		 //fct2.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+		 //fct2.SetExpr("0.5*uLB-uLB*0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 //fct2.SetExpr("vx1");
+		 /*fct2.DefineConst("R", 10.0);
+		 fct2.DefineConst("vx1", uLB);
+		 fct2.DefineConst("y0", 1.0);
+		 fct2.DefineConst("z0", 31.0);*/
+		 fct2.SetExpr("0.5*uLB-uLB*0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct2.DefineConst("uLB", uLB);
+		 fct2.DefineConst("x1c", x1c);
+		 fct2.DefineConst("x2c", x2c);
+		 fct2.DefineConst("x3c", x3c);
+		 fct2.DefineConst("radius", radius);
+		 fct2.DefineConst("interfaceThickness", interfaceThickness);
+
+
+		 InitDistributionsBlockVisitorMultiphase initVisitor(densityRatio, interfaceThickness, radius);
+         initVisitor.setPhi(fct1);
+         //initVisitor.setVx1(fct2);
+         grid->accept(initVisitor);
+
+         //set connectors
+         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         //ConnectorFactoryPtr factory(new Block3DConnectorFactory());
+         //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
+         grid->accept(setConnsVisitor);
+
+         //domain decomposition for threads
+         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
+         grid->accept(pqPartVisitor);
+
+
+
+
+         //boundary conditions grid
+         {
+            UbSchedulerPtr geoSch(new UbScheduler(1));
+            WriteBoundaryConditionsCoProcessorPtr ppgeo(
+               new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
+            ppgeo->process(0);
+            ppgeo.reset();
+         }
+
+         if (myid == 0) UBLOG(logINFO, "Preprocess - end");
+      }
+      else
+      {
+         if (myid == 0)
+         {
+            UBLOG(logINFO, "Parameters:");
+            UBLOG(logINFO, "uLb = " << uLB);
+            UBLOG(logINFO, "rho = " << rhoLB);
+            UBLOG(logINFO, "nuLb = " << nuLB);
+            UBLOG(logINFO, "Re = " << Re);
+            UBLOG(logINFO, "dx = " << dx);
+            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
+            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
+            UBLOG(logINFO, "path = " << pathname);
+         }
+
+         rcp.restart((int)restartStep);
+         grid->setTimeStep(restartStep);
+
+         //BCAdapterPtr velBCAdapter(new VelocityBCAdapter());
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithm()));
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+         //bcVisitor.addBC(velBCAdapter);
+         //grid->accept(bcVisitor);
+
+         //set connectors
+         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         grid->accept(setConnsVisitor);
+
+         if (myid == 0) UBLOG(logINFO, "Restart - end");
+      }
+      UbSchedulerPtr visSch(new UbScheduler(outTime));
+      WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm);
+
+      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
+      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
+
+	  
+	  
+	  
+
+	  
+	  UbSchedulerPtr bcSch(new UbScheduler(1, 12000, 12000));
+	  TimeDependentBCCoProcessorPtr inflowF2 (new TimeDependentBCCoProcessor(grid,bcSch));
+	  //inflowF2->addInteractor(inflowF2_1Int);
+	  //inflowF2->addInteractor(inflowF2_2Int);
+
+      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch,CalculationManager::MPI));
+      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[])
+{
+   //Sleep(30000);
+	if (argv != NULL)
+   {
+      if (argv[1] != NULL)
+      {
+         run(string(argv[1]));
+      }
+      else
+      {
+         cout << "Configuration file is missing!" << endl;
+      }
+   }
+
+}
+
diff --git a/apps/cpu/Multiphase/backup/Multiphase (Final before automation).cpp b/apps/cpu/Multiphase/backup/Multiphase (Final before automation).cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b4a6b34782a4bc8df00168d9d0a9130d19630755
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/Multiphase (Final before automation).cpp	
@@ -0,0 +1,586 @@
+#include <iostream>
+#include <string>
+
+#include "VirtualFluids.h"
+
+using namespace std;
+
+
+void run(string configname)
+{
+   try
+   {
+      ConfigurationFile   config;
+      config.load(configname);
+
+      string          pathname = config.getString("pathname");
+	  string		  pathGeo = config.getString("pathGeo");
+	  string		  geoFile = config.getString("geoFile");
+      int             numOfThreads = config.getInt("numOfThreads");
+      vector<int>     blocknx = config.getVector<int>("blocknx");
+	  vector<double>  boundingBox = config.getVector<double>("boundingBox");
+      //vector<double>  length = config.getVector<double>("length");
+	  double          uLB = config.getDouble("uLB");
+	  double          uF2 = config.getDouble("uF2");
+	  double		  nuL = config.getDouble("nuL");
+	  double		  nuG = config.getDouble("nuG");
+	  double		  densityRatio = config.getDouble("densityRatio");
+	  double		  sigma = config.getDouble("sigma");
+	  int		      interfaceThickness = config.getInt("interfaceThickness");
+	  double		  radius = config.getDouble("radius");
+	  double		  theta = config.getDouble("contactAngle");
+	  double		  gr = config.getDouble("gravity");
+	  double		  phiL = config.getDouble("phi_L");
+	  double		  phiH = config.getDouble("phi_H");
+	  double		  tauH = config.getDouble("Phase-field Relaxation");
+	  double		  mob = config.getDouble("Mobility");
+
+
+      double          endTime = config.getDouble("endTime");
+      double          outTime = config.getDouble("outTime");
+      double          availMem = config.getDouble("availMem");
+      int             refineLevel = config.getInt("refineLevel");
+      double          Re = config.getDouble("Re");
+      double          dx = config.getDouble("dx");
+      bool            logToFile = config.getBool("logToFile");
+      double          restartStep = config.getDouble("restartStep");
+      double          cpStart = config.getValue<double>("cpStart");
+      double          cpStep = config.getValue<double>("cpStep");
+      bool            newStart = config.getValue<bool>("newStart");
+
+
+	  bool            eastBoundary   = config.getValue<bool>("eastBoundary");
+	  bool            westBoundary   = config.getValue<bool>("westBoundary");
+	  bool            northBoundary  = config.getValue<bool>("northBoundary");
+	  bool            southBoundary  = config.getValue<bool>("southBoundary");
+	  bool            topBoundary    = config.getValue<bool>("topBoundary");
+	  bool            bottomBoundary = config.getValue<bool>("bottomBoundary");
+	  
+	  int             eastBoundaryType   = config.getInt("eastBoundaryType");
+	  int             westBoundaryType   = config.getInt("westBoundaryType");
+	  int             northBoundaryType  = config.getInt("northBoundaryType");
+	  int             southBoundaryType  = config.getInt("southBoundaryType");
+	  int             topBoundaryType    = config.getInt("topBoundaryType");
+	  int             bottomBoundaryType = config.getInt("bottomBoundaryType");
+
+
+      double beta  = 12*sigma/interfaceThickness;
+	  double kappa = 1.5*interfaceThickness*sigma;
+	  
+	  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);
+
+      LBMReal dLB; // = length[1] / dx;
+      LBMReal rhoLB = 0.0;
+      LBMReal nuLB = nuL; //(uLB*dLB) / Re;
+
+      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
+
+      const int baseLevel = 0;
+
+ 
+      
+      Grid3DPtr grid(new Grid3D(comm));
+      //grid->setPeriodicX1(true);
+	  //grid->setPeriodicX2(true);
+	  //grid->setPeriodicX3(true);
+      //////////////////////////////////////////////////////////////////////////
+      //restart
+      UbSchedulerPtr rSch(new UbScheduler(cpStep, cpStart));
+      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
+      MPIIORestart1CoProcessor rcp(grid, rSch, pathname, comm);
+      //////////////////////////////////////////////////////////////////////////
+	  
+
+	  
+      
+	  
+	  mu::Parser fctF1;
+	  //fctF1.SetExpr("vy1*(1-((x1-x0)^2+(x3-z0)^2)/(R^2))");
+	  fctF1.SetExpr("vy1");
+	  fctF1.DefineConst("vy1", -uLB);
+	  fctF1.DefineConst("R", 7.5);
+	  fctF1.DefineConst("x0", 60.0);
+	  fctF1.DefineConst("z0", 60.0);
+	  
+
+	  if (newStart)
+      {
+
+         //bounding box
+         /*double g_minX1 = 0.0;
+         double g_minX2 = -length[1] / 2.0;
+         double g_minX3 = -length[2] / 2.0;
+
+         double g_maxX1 = length[0];
+         double g_maxX2 = length[1] / 2.0;
+         double g_maxX3 = length[2] / 2.0;*/
+
+		 double g_minX1 = boundingBox[0];
+		 double g_minX2 = boundingBox[2];
+		 double g_minX3 = boundingBox[4];
+
+		 double g_maxX1 = boundingBox[1];
+		 double g_maxX2 = boundingBox[3];
+		 double g_maxX3 = boundingBox[5];
+
+         //geometry
+
+         //GbObject3DPtr innerCube(new GbCuboid3D(g_minX1+2, g_minX2+2, g_minX3+2, g_maxX1-2, g_maxX2-2, g_maxX3-2));
+
+		 //GbObject3DPtr cylinder1(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, radius));
+		 //GbObject3DPtr cylinder2(new GbCylinder3D(g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+		 
+		 //GbObject3DPtr cylinder(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+		 //GbObject3DPtr cylinders(new GbObject3DManager());
+		 //GbObject3DPtr cylinders1(new GbObjectGroup3D());
+		 
+
+		 
+		 
+		 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());
+
+		 //GbTriFaceMesh3DPtr cylinder;
+		 //if (myid==0) UBLOG(logINFO, "Read geoFile:start");
+		 //cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT));
+		 //GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/Stlgeo", WbWriterVtkXmlBinary::getInstance());
+		 
+		 /*GbObject3DPtr cylinder(new GbCuboid3D(g_minX1 + 2.0, g_minX2 + 2.0, g_minX3 + 2.0, g_maxX1 - 2.0, g_maxX2 - 2.0, g_maxX3 -2.0));
+		 if (myid == 0) GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/solidWall", WbWriterVtkXmlBinary::getInstance());*/
+
+		 
+		 
+		 bool isDefined_SlipBC   = false;
+		 bool isDefined_noSlipBC = false;
+		 bool isDefined_Outflow  = false;
+
+		 if (eastBoundary)
+		 {
+			 switch (eastBoundaryType)
+			 {
+			 case 0:
+
+			 	break;
+			 case 1:
+				 break;
+			 case 2:
+				 break;
+			 case 3:
+				 break;
+			 }
+		 }
+
+		 /*GbObject3DPtr geoWallEast(new GbCuboid3D(g_maxX1 + 2.0, g_maxX2 + 2.0, g_maxX3 + 2.0, g_maxX1 - 2.0, g_minX2 - 2.0, g_minX3 -2.0));
+		 if (myid == 0) GbSystem3D::writeGeoObject(geoWallEast.get(), pathname + "/geo/geoWallEast", WbWriterVtkXmlBinary::getInstance());
+
+		 GbObject3DPtr geoWallWest(new GbCuboid3D(g_minX1 + 2.0, g_maxX2 + 2.0, g_maxX3 + 2.0, g_minX1 - 2.0, g_minX2 - 2.0, g_minX3 -2.0));
+		 if (myid == 0) GbSystem3D::writeGeoObject(geoWallWest.get(), pathname + "/geo/geoWallWest", WbWriterVtkXmlBinary::getInstance());
+
+		 GbObject3DPtr geoWallTop(new GbCuboid3D(g_maxX1 + 2.0, g_maxX2 + 2.0, g_maxX3 + 2.0, g_minX1 - 2.0, g_maxX2 - 2.0, g_minX3 -2.0));
+		 if (myid == 0) GbSystem3D::writeGeoObject(geoWallTop.get(), pathname + "/geo/geoWallTop", WbWriterVtkXmlBinary::getInstance());
+
+		 GbObject3DPtr geoWallBottom(new GbCuboid3D(g_maxX1 + 2.0, g_minX2 + 2.0, g_maxX3 + 2.0, g_minX1 - 2.0, g_minX2 - 2.0, g_minX3 -2.0));
+		 if (myid == 0) GbSystem3D::writeGeoObject(geoWallBottom.get(), pathname + "/geo/geoWallBottom", WbWriterVtkXmlBinary::getInstance());
+
+		 GbObject3DPtr geoWallNorth(new GbCuboid3D(g_maxX1 + 2.0, g_maxX2 + 2.0, g_minX3 + 2.0, g_minX1 - 2.0, g_minX2 - 2.0, g_minX3 -2.0));
+		 if (myid == 0) GbSystem3D::writeGeoObject(geoWallNorth.get(), pathname + "/geo/geoWallNorth", WbWriterVtkXmlBinary::getInstance());
+
+		 GbObject3DPtr geoWallSouth(new GbCuboid3D(g_maxX1 + 2.0, g_maxX2 + 2.0, g_maxX3 + 2.0, g_minX1 - 2.0, g_minX2 - 2.0, g_maxX3 -2.0));
+		 if (myid == 0) GbSystem3D::writeGeoObject(geoWallSouth.get(), pathname + "/geo/geoWallSouth", WbWriterVtkXmlBinary::getInstance());*/
+		 
+		 
+		 //inflow
+		 //GbCuboid3DPtr geoInflowF1(new GbCuboid3D(40.0, 628.0, 40.0, 80, 631.0, 80.0));  // Original
+		 GbCuboid3DPtr geoInflowF1(new GbCuboid3D(g_minX1, g_minX2-0.5*dx, g_minX3, g_maxX1, g_minX2 - 1.0*dx, g_maxX3));
+		 if (myid==0) GbSystem3D::writeGeoObject(geoInflowF1.get(), pathname+"/geo/geoInflowF1", WbWriterVtkXmlASCII::getInstance());
+
+
+
+		 //outflow
+		 //GbCuboid3DPtr geoOutflow(new GbCuboid3D(-1.0, 499+80, -1.0, 121.0, 501.0+80, 121.0)); // Original
+		 GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_minX1, g_maxX2-1*dx, g_minX3, g_maxX1, g_maxX2, g_maxX3));
+		 if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
+		 
+		 
+		 double blockLength = blocknx[0] * dx;
+
+
+
+
+         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, "Preprocess - start");
+         }
+
+         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);
+
+
+
+
+		 //BC Adapter
+		 //////////////////////////////////////////////////////////////////////////////
+		 BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+		 noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+
+
+		BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+		denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+		
+		double r = 5.0; //boost::dynamic_pointer_cast<GbCylinder3D>(cylinder)->getRadius();
+		double cx1 = g_minX1;
+		double cx2 = 0.0; //cylinder->getX2Centroid();
+		double cx3 = 0.0; //cylinder->getX3Centroid();
+
+
+		
+		mu::Parser fctPhi_F1;
+		fctPhi_F1.SetExpr("phiH");
+		fctPhi_F1.DefineConst("phiH", phiH);
+
+		mu::Parser fctPhi_F2;
+		fctPhi_F2.SetExpr("phiL");
+		fctPhi_F2.DefineConst("phiL", phiL);
+		
+		mu::Parser fctvel_F2_init;
+		fctvel_F2_init.SetExpr("U");
+		fctvel_F2_init.DefineConst("U", 0);
+
+		//fct.SetExpr("U");
+		//fct.DefineConst("U", uLB);
+		//BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		
+		BCAdapterPtr velBCAdapterF1       (new VelocityBCAdapterMultiphase(false, true, false, fctF1  , phiH, 0.0, endTime));
+		
+		//BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_1, phiH, 0.0, endTime));
+		//BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_2, phiH, 0.0, endTime));
+
+		//BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		//BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		
+		velBCAdapterF1->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		//velBCAdapterF2_1_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		//velBCAdapterF2_2_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		 
+		 
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+		 //mu::Parser fct;
+		 //fct.SetExpr("U");
+		 //fct.DefineConst("U", uLB);
+		 //BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingVelocityBCAlgorithm()));
+
+
+		 //////////////////////////////////////////////////////////////////////////////////
+		 //BC visitor
+		 BoundaryConditionsBlockVisitorMultiphase bcVisitor;
+		 bcVisitor.addBC(noSlipBCAdapter);
+		 bcVisitor.addBC(denBCAdapter);
+		 bcVisitor.addBC(velBCAdapterF1);
+		 //bcVisitor.addBC(velBCAdapterF2_1_init);
+		 //bcVisitor.addBC(velBCAdapterF2_2_init);
+
+
+
+         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
+
+         ppblocks->process(0);
+
+         //Interactor3DPtr tubes(new D3Q27TriFaceMeshInteractor(cylinder, grid, noSlipBCAdapter, Interactor3D::SOLID));
+		 //D3Q27InteractorPtr tubes = D3Q27InteractorPtr(new D3Q27Interactor(cylinder, grid, noSlipBCAdapter, Interactor3D::INVERSESOLID));
+
+	     
+		 
+		 /*D3Q27InteractorPtr wallEast   = D3Q27InteractorPtr(new D3Q27Interactor(geoWallEast, grid, noSlipBCAdapter, Interactor3D::SOLID));
+		 D3Q27InteractorPtr wallWest   = D3Q27InteractorPtr(new D3Q27Interactor(geoWallWest, grid, noSlipBCAdapter, Interactor3D::SOLID));
+		 D3Q27InteractorPtr wallTop    = D3Q27InteractorPtr(new D3Q27Interactor(geoWallTop, grid, noSlipBCAdapter, Interactor3D::SOLID));
+		 D3Q27InteractorPtr wallBottom = D3Q27InteractorPtr(new D3Q27Interactor(geoWallBottom, grid, noSlipBCAdapter, Interactor3D::SOLID));
+		 D3Q27InteractorPtr wallNorth  = D3Q27InteractorPtr(new D3Q27Interactor(geoWallNorth, grid, noSlipBCAdapter, Interactor3D::SOLID));
+		 D3Q27InteractorPtr wallSouth  = D3Q27InteractorPtr(new D3Q27Interactor(geoWallSouth, grid, noSlipBCAdapter, Interactor3D::SOLID));*/
+		 
+		 D3Q27InteractorPtr inflowF1Int = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF1, grid, velBCAdapterF1, Interactor3D::SOLID));
+
+         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
+
+		 //SetSolidBlockVisitor visitor1(inflowF2_1Int, SetSolidBlockVisitor::BC);
+		 //grid->accept(visitor1);
+		 //SetSolidBlockVisitor visitor2(inflowF2_2Int, SetSolidBlockVisitor::BC);
+		 //grid->accept(visitor2);
+
+
+         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW));
+         InteractorsHelper intHelper(grid, metisVisitor);
+		 //intHelper.addInteractor(tubes);
+		 //intHelper.addInteractor(inflowF1Int);
+		 //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");
+         }
+
+         LBMKernelPtr kernel;
+
+         kernel = LBMKernelPtr(new MultiphaseCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], MultiphaseCumulantLBMKernel::NORMAL));
+
+         kernel->setWithForcing(true);
+		 kernel->setForcingX1(0.0);
+		 kernel->setForcingX2(gr);
+		 kernel->setForcingX3(0.0);
+
+		 kernel->setPhiL(phiL);
+		 kernel->setPhiH(phiH);
+		 kernel->setPhaseFieldRelaxation(tauH);
+		 kernel->setMobility(mob);
+
+         BCProcessorPtr bcProc(new BCProcessor());
+         //BCProcessorPtr bcProc(new ThinWallBCProcessor());
+
+         kernel->setBCProcessor(bcProc);
+
+         SetKernelBlockVisitorMultiphase kernelVisitor(kernel, nuL, nuG, densityRatio, beta, kappa, theta, availMem, needMem);
+         
+		 grid->accept(kernelVisitor);
+
+         if (refineLevel > 0)
+         {
+            SetUndefinedNodesBlockVisitor undefNodesVisitor;
+            grid->accept(undefNodesVisitor);
+         }
+
+		 //inflowF2_1Int->initInteractor();
+		 //inflowF2_2Int->initInteractor();
+
+         intHelper.setBC();
+		 
+        
+         grid->accept(bcVisitor);
+
+         //initialization of distributions
+		 LBMReal x1c =  (g_maxX1+g_minX1)/2; //radius; //g_minX1; //radius; //19; //(g_maxX1+g_minX1)/2;
+		 LBMReal x2c = (g_maxX2+g_minX2)/2; //g_minX2 + 2;
+		 LBMReal x3c = (g_maxX3+g_minX3)/2;
+		 mu::Parser fct1;
+		 
+		 //fct1.SetExpr("0.5-0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 //fct1.SetExpr("phiM-phiM*tanh((sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/(interfaceThickness*phiM))");
+		 
+		 fct1.SetExpr("0.5*(phiH + phiL) - 0.5*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 
+		 
+		 //fct1.SetExpr("0.5*(phiH + phiL) + 0.5*(phiH - phiL)*tanh(2*((x2-radius))/interfaceThickness)");
+		 //fct1.SetExpr("phiL");
+		 fct1.DefineConst("x1c", x1c);
+		 fct1.DefineConst("x2c", x2c);
+		 fct1.DefineConst("x3c", x3c);
+		 fct1.DefineConst("phiL", phiL);
+		 fct1.DefineConst("phiH", phiH);
+		 fct1.DefineConst("radius", radius);
+		 fct1.DefineConst("interfaceThickness", interfaceThickness);
+		 
+		 mu::Parser fct2;
+		 //fct2.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+		 /*fct2.SetExpr("vx1");
+		 fct2.DefineConst("R", 10.0);
+		 fct2.DefineConst("vx1", uLB);
+		 fct2.DefineConst("y0", 1.0);
+		 fct2.DefineConst("z0", 31.0);*/
+		 fct2.SetExpr("0.5*uLB*(phiH + phiL) - 0.5*uLB*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct2.DefineConst("uLB", uLB);
+		 fct2.DefineConst("x1c", x1c);
+		 fct2.DefineConst("x2c", x2c);
+		 fct2.DefineConst("x3c", x3c);
+		 fct2.DefineConst("phiL", phiL);
+		 fct2.DefineConst("phiH", phiH);
+		 fct2.DefineConst("radius", radius);
+		 fct2.DefineConst("interfaceThickness", interfaceThickness);
+
+
+		 mu::Parser fct3;
+		 fct3.SetExpr("0.5*sigma*(phiH + phiL)/radius - 0.5*sigma/radius*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct3.DefineConst("sigma", sigma);
+		 fct3.DefineConst("x1c", x1c);
+		 fct3.DefineConst("x2c", x2c);
+		 fct3.DefineConst("x3c", x3c);
+		 fct3.DefineConst("phiL", phiL);
+		 fct3.DefineConst("phiH", phiH);
+		 fct3.DefineConst("radius", radius);
+		 fct3.DefineConst("interfaceThickness", interfaceThickness);
+
+		 InitDistributionsBlockVisitorMultiphase initVisitor(densityRatio, interfaceThickness, radius);
+         initVisitor.setPhi(fct1);
+         //initVisitor.setVx1(fct2);
+		 //initVisitor.setRho(fct3);
+         grid->accept(initVisitor);
+
+         //set connectors
+         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         //ConnectorFactoryPtr factory(new Block3DConnectorFactory());
+         //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
+         grid->accept(setConnsVisitor);
+
+         //domain decomposition for threads
+         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
+         grid->accept(pqPartVisitor);
+
+
+
+
+         //boundary conditions grid
+         {
+            UbSchedulerPtr geoSch(new UbScheduler(1));
+            WriteBoundaryConditionsCoProcessorPtr ppgeo(
+               new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
+            ppgeo->process(0);
+            ppgeo.reset();
+         }
+
+         if (myid == 0) UBLOG(logINFO, "Preprocess - end");
+      }
+      else
+      {
+         if (myid == 0)
+         {
+            UBLOG(logINFO, "Parameters:");
+            UBLOG(logINFO, "uLb = " << uLB);
+            UBLOG(logINFO, "rho = " << rhoLB);
+            UBLOG(logINFO, "nuLb = " << nuLB);
+            UBLOG(logINFO, "Re = " << Re);
+            UBLOG(logINFO, "dx = " << dx);
+            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
+            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
+            UBLOG(logINFO, "path = " << pathname);
+         }
+
+         rcp.restart((int)restartStep);
+         grid->setTimeStep(restartStep);
+
+         //BCAdapterPtr velBCAdapter(new VelocityBCAdapter());
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithm()));
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+         //bcVisitor.addBC(velBCAdapter);
+         //grid->accept(bcVisitor);
+
+         //set connectors
+         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         grid->accept(setConnsVisitor);
+
+         if (myid == 0) UBLOG(logINFO, "Restart - end");
+      }
+      UbSchedulerPtr visSch(new UbScheduler(outTime));
+      WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm);
+
+      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
+      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
+
+	  
+	  
+	  
+
+	  
+	  //UbSchedulerPtr bcSch(new UbScheduler(1, 12000, 12000));
+	  //TimeDependentBCCoProcessorPtr inflowF2 (new TimeDependentBCCoProcessor(grid,bcSch));
+	  //inflowF2->addInteractor(inflowF2_1Int);
+	  //inflowF2->addInteractor(inflowF2_2Int);
+
+      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch,CalculationManager::MPI));
+      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[])
+{
+   //Sleep(30000);
+	if (argv != NULL)
+   {
+      if (argv[1] != NULL)
+      {
+         run(string(argv[1]));
+      }
+      else
+      {
+         cout << "Configuration file is missing!" << endl;
+      }
+   }
+
+}
+
diff --git a/apps/cpu/Multiphase/backup/Multiphase (Flow Focusing).cpp b/apps/cpu/Multiphase/backup/Multiphase (Flow Focusing).cpp
new file mode 100644
index 0000000000000000000000000000000000000000..33333fc0dba8d082574e766e39c9573adbdde450
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/Multiphase (Flow Focusing).cpp	
@@ -0,0 +1,560 @@
+#include <iostream>
+#include <string>
+
+#include "VirtualFluids.h"
+
+using namespace std;
+
+
+void run(string configname)
+{
+   try
+   {
+      ConfigurationFile   config;
+      config.load(configname);
+
+      string          pathname = config.getString("pathname");
+	  string		  pathGeo = config.getString("pathGeo");
+	  string		  geoFile = config.getString("geoFile");
+      int             numOfThreads = config.getInt("numOfThreads");
+      vector<int>     blocknx = config.getVector<int>("blocknx");
+	  vector<double>  boundingBox = config.getVector<double>("boundingBox");
+      //vector<double>  length = config.getVector<double>("length");
+	  double          uLB = config.getDouble("uLB");
+	  double          uF2 = config.getDouble("uF2");
+	  double		  nuL = config.getDouble("nuL");
+	  double		  nuG = config.getDouble("nuG");
+	  double		  densityRatio = config.getDouble("densityRatio");
+	  double		  sigma = config.getDouble("sigma");
+	  int		      interfaceThickness = config.getInt("interfaceThickness");
+	  double		  radius = config.getDouble("radius");
+	  double		  theta = config.getDouble("contactAngle");
+	  double		  gr = config.getDouble("gravity");
+	  double		  phiL = config.getDouble("phi_L");
+	  double		  phiH = config.getDouble("phi_H");
+	  double		  tauH = config.getDouble("Phase-field Relaxation");
+	  double		  mob = config.getDouble("Mobility");
+
+
+      double          endTime = config.getDouble("endTime");
+      double          outTime = config.getDouble("outTime");
+      double          availMem = config.getDouble("availMem");
+      int             refineLevel = config.getInt("refineLevel");
+      double          Re = config.getDouble("Re");
+      double          dx = config.getDouble("dx");
+      bool            logToFile = config.getBool("logToFile");
+      double          restartStep = config.getDouble("restartStep");
+      double          cpStart = config.getValue<double>("cpStart");
+      double          cpStep = config.getValue<double>("cpStep");
+      bool            newStart = config.getValue<bool>("newStart");
+
+      double beta  = 12*sigma/interfaceThickness;
+	  double kappa = 1.5*interfaceThickness*sigma;
+	  
+	  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);
+
+      LBMReal dLB; // = length[1] / dx;
+      LBMReal rhoLB = 0.0;
+      LBMReal nuLB = nuL; //(uLB*dLB) / Re;
+
+      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
+
+      const int baseLevel = 0;
+
+ 
+      
+      Grid3DPtr grid(new Grid3D(comm));
+      //grid->setPeriodicX1(true);
+	  //grid->setPeriodicX2(true);
+	  //grid->setPeriodicX3(true);
+      //////////////////////////////////////////////////////////////////////////
+      //restart
+      UbSchedulerPtr rSch(new UbScheduler(cpStep, cpStart));
+      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
+      MPIIORestart1CoProcessor rcp(grid, rSch, pathname, comm);
+      //////////////////////////////////////////////////////////////////////////
+	  
+
+	  //inflow
+	  GbCuboid3DPtr geoInflowF1(new GbCuboid3D(-26.5, -1, 24.0, -22.5, 18.0, 78.0));  // For FlowFocusingS2
+	  if (myid==0) GbSystem3D::writeGeoObject(geoInflowF1.get(), pathname+"/geo/geoInflowF1", WbWriterVtkXmlASCII::getInstance());
+
+
+	  GbCuboid3DPtr geoInflowF2_1(new GbCuboid3D(-1.0, -1.0, 0.5, 53.0, 18.0, 2.5)); // For FlowFocusingS2
+	  if (myid==0) GbSystem3D::writeGeoObject(geoInflowF2_1.get(), pathname+"/geo/geoInflowF2_1", WbWriterVtkXmlASCII::getInstance());
+
+
+	  GbCuboid3DPtr geoInflowF2_2(new GbCuboid3D(-1.0, -1.0, 63.5, 53.0, 18.0, 66.5)); // For FlowFocusingS2
+	  if (myid==0) GbSystem3D::writeGeoObject(geoInflowF2_2.get(), pathname+"/geo/geoInflowF2_2", WbWriterVtkXmlASCII::getInstance());
+
+	  //outflow
+	  GbCuboid3DPtr geoOutflow(new GbCuboid3D(178.5, -1, 24.0, 181.5, 18.0, 78.0)); // For FlowFocusingS2
+	  if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
+      
+	  
+	  mu::Parser fctF1;
+	  //fctF1.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+	  fctF1.SetExpr("vx1");
+	  fctF1.DefineConst("vx1", uLB);
+	  /*fctF1.DefineConst("R", 8.0);
+	  fctF1.DefineConst("y0", 0.0);
+	  fctF1.DefineConst("z0", 0.0);*/
+	  
+	  fctF1.DefineConst("R", 10.0); // FlowFocusingSS , FlowFocusingS
+	  fctF1.DefineConst("y0", 1.0); // FlowFocusingSS , FlowFocusingS
+	  fctF1.DefineConst("z0", 31.0); // FlowFocusingSS , FlowFocusingS
+
+	  mu::Parser fctF2_1;
+	  //fctF2_1.SetExpr("vx3*(1-((x1-x0)^2+(x2-y0)^2)/(R^2))");
+	  fctF2_1.SetExpr("vx3");
+	  fctF2_1.DefineConst("vx3", uF2);
+	  /*fctF2_1.DefineConst("R", 16.0);
+	  fctF2_1.DefineConst("x0", 35.0);
+	  fctF2_1.DefineConst("y0", 0.0);*/
+
+	  fctF2_1.DefineConst("R", 12.0);   // FlowFocusingSS , FlowFocusingS
+	  fctF2_1.DefineConst("x0", 1.0);	// FlowFocusingSS , FlowFocusingS
+	  fctF2_1.DefineConst("y0", 1.0);	// FlowFocusingSS , FlowFocusingS
+
+
+	  mu::Parser fctF2_2;
+	  //fctF2_2.SetExpr("vx3*(1-((x1-x0)^2+(x2-y0)^2)/(R^2))");
+	  fctF2_2.SetExpr("vx3");
+	  fctF2_2.DefineConst("vx3", -uF2);
+	  /*fctF2_2.DefineConst("R", 16.0);
+	  fctF2_2.DefineConst("x0", 35.0);
+	  fctF2_2.DefineConst("y0", 0.0);*/
+
+	  fctF2_2.DefineConst("R", 12.0);  // FlowFocusingSS , FlowFocusingS
+	  fctF2_2.DefineConst("x0", 1.0); // FlowFocusingSS , FlowFocusingS
+	  fctF2_2.DefineConst("y0", 1.0);  // FlowFocusingSS , FlowFocusingS
+	  
+	  
+	  /*mu::Parser fctF2_1;
+	  fctF2_1.SetExpr("vx3*(1-((x1-x0)^2+(x2-y0)^2)/(R^2))");
+	  fctF2_1.DefineConst("R", 12.0);
+	  fctF2_1.DefineConst("vx3", uF2);
+	  fctF2_1.DefineConst("x0", 1.0);
+	  fctF2_1.DefineConst("y0", 1.0);
+
+	  mu::Parser fctF2_2;
+	  fctF2_2.SetExpr("vx3*(1-((x1-x0)^2+(x2-y0)^2)/(R^2))");
+	  fctF2_2.DefineConst("R", 12.0);
+	  fctF2_2.DefineConst("vx3", -uF2);
+	  fctF2_2.DefineConst("x0", 1.0);
+	  fctF2_2.DefineConst("y0", 1.0);
+
+	  BCAdapterPtr velBCAdapterF2_1(new VelocityBCAdapterMultiphase(false, false, true, fctF2_1, phiL, 0.0, endTime));
+	  BCAdapterPtr velBCAdapterF2_2(new VelocityBCAdapterMultiphase(false, false, true, fctF2_2, phiL, 0.0, endTime));
+
+	  D3Q27InteractorPtr inflowF2_1Int = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_1, grid, velBCAdapterF2_1, Interactor3D::SOLID));
+	  D3Q27InteractorPtr inflowF2_2Int = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_2, grid, velBCAdapterF2_2, Interactor3D::SOLID));*/
+
+
+
+	  if (newStart)
+      {
+
+         //bounding box
+         /*double g_minX1 = 0.0;
+         double g_minX2 = -length[1] / 2.0;
+         double g_minX3 = -length[2] / 2.0;
+
+         double g_maxX1 = length[0];
+         double g_maxX2 = length[1] / 2.0;
+         double g_maxX3 = length[2] / 2.0;*/
+
+		 double g_minX1 = boundingBox[0];
+		 double g_minX2 = boundingBox[2];
+		 double g_minX3 = boundingBox[4];
+
+		 double g_maxX1 = boundingBox[1];
+		 double g_maxX2 = boundingBox[3];
+		 double g_maxX3 = boundingBox[5];
+
+         //geometry
+
+         //GbObject3DPtr innerCube(new GbCuboid3D(g_minX1+2, g_minX2+2, g_minX3+2, g_maxX1-2, g_maxX2-2, g_maxX3-2));
+
+		 //GbObject3DPtr cylinder1(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, radius));
+		 //GbObject3DPtr cylinder2(new GbCylinder3D(g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+		 
+		 //GbObject3DPtr cylinder(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+		 //GbObject3DPtr cylinders(new GbObject3DManager());
+		 //GbObject3DPtr cylinders1(new GbObjectGroup3D());
+		 
+
+		 
+		 
+		 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());
+
+		 GbTriFaceMesh3DPtr cylinder;
+		 if (myid==0) UBLOG(logINFO, "Read geoFile:start");
+		 //cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
+		 cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT));
+		 GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/Stlgeo", WbWriterVtkXmlBinary::getInstance());
+
+         double blockLength = blocknx[0] * dx;
+
+
+
+         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, "Preprocess - start");
+         }
+
+         grid->setDeltaX(dx);
+         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
+
+		 grid->setPeriodicX1(false);
+		 grid->setPeriodicX2(false);
+		 grid->setPeriodicX3(false);
+
+         
+
+         GenBlocksGridVisitor genBlocks(gridCube);
+         grid->accept(genBlocks);
+
+
+
+
+		 //BC Adapter
+		 //////////////////////////////////////////////////////////////////////////////
+		 BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+		 noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+
+
+		BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+		denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+		
+		double r = 5.0; //boost::dynamic_pointer_cast<GbCylinder3D>(cylinder)->getRadius();
+		double cx1 = g_minX1;
+		double cx2 = 0.0; //cylinder->getX2Centroid();
+		double cx3 = 0.0; //cylinder->getX3Centroid();
+
+
+		
+		mu::Parser fctPhi_F1;
+		fctPhi_F1.SetExpr("phiH");
+		fctPhi_F1.DefineConst("phiH", phiH);
+
+		mu::Parser fctPhi_F2;
+		fctPhi_F2.SetExpr("phiL");
+		fctPhi_F2.DefineConst("phiL", phiL);
+		
+		mu::Parser fctvel_F2_init;
+		fctvel_F2_init.SetExpr("U");
+		fctvel_F2_init.DefineConst("U", 0);
+
+		//fct.SetExpr("U");
+		//fct.DefineConst("U", uLB);
+		//BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		
+		BCAdapterPtr velBCAdapterF1       (new VelocityBCAdapterMultiphase(true, false, false, fctF1  , phiH, 0.0, endTime));
+		
+		BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_1, phiH, 0.0, endTime));
+		BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_2, phiH, 0.0, endTime));
+
+		//BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		//BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		
+		velBCAdapterF1->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		velBCAdapterF2_1_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		velBCAdapterF2_2_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		 
+		 
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+		 //mu::Parser fct;
+		 //fct.SetExpr("U");
+		 //fct.DefineConst("U", uLB);
+		 //BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingVelocityBCAlgorithm()));
+
+
+		 //////////////////////////////////////////////////////////////////////////////////
+		 //BC visitor
+		 BoundaryConditionsBlockVisitorMultiphase bcVisitor;
+		 bcVisitor.addBC(noSlipBCAdapter);
+		 bcVisitor.addBC(denBCAdapter);
+		 bcVisitor.addBC(velBCAdapterF1);
+		 bcVisitor.addBC(velBCAdapterF2_1_init);
+		 bcVisitor.addBC(velBCAdapterF2_2_init);
+
+
+
+         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
+
+         ppblocks->process(0);
+
+         Interactor3DPtr tubes(new D3Q27TriFaceMeshInteractor(cylinder, grid, noSlipBCAdapter, Interactor3D::INVERSESOLID));
+		 
+	     D3Q27InteractorPtr inflowF1Int = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF1, grid, velBCAdapterF1, Interactor3D::SOLID));
+
+		 D3Q27InteractorPtr inflowF2_1Int_init = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_1, grid, velBCAdapterF2_1_init, Interactor3D::SOLID));
+
+		 D3Q27InteractorPtr inflowF2_2Int_init = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_2, grid, velBCAdapterF2_2_init, Interactor3D::SOLID));
+
+         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
+
+		 //SetSolidBlockVisitor visitor1(inflowF2_1Int, SetSolidBlockVisitor::BC);
+		 //grid->accept(visitor1);
+		 //SetSolidBlockVisitor visitor2(inflowF2_2Int, SetSolidBlockVisitor::BC);
+		 //grid->accept(visitor2);
+
+
+         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
+         InteractorsHelper intHelper(grid, metisVisitor);
+		 intHelper.addInteractor(tubes);
+         intHelper.addInteractor(inflowF1Int);
+		 intHelper.addInteractor(inflowF2_1Int_init);
+		 intHelper.addInteractor(inflowF2_2Int_init);
+         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");
+         }
+
+         LBMKernelPtr kernel;
+
+         kernel = LBMKernelPtr(new MultiphaseCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], MultiphaseCumulantLBMKernel::NORMAL));
+
+         kernel->setWithForcing(false);
+		 kernel->setForcingX1(gr);
+		 kernel->setForcingX2(0.0);
+		 kernel->setForcingX3(0.0);
+
+		 kernel->setPhiL(phiL);
+		 kernel->setPhiH(phiH);
+		 kernel->setPhaseFieldRelaxation(tauH);
+		 kernel->setMobility(mob);
+
+         BCProcessorPtr bcProc(new BCProcessor());
+         //BCProcessorPtr bcProc(new ThinWallBCProcessor());
+
+         kernel->setBCProcessor(bcProc);
+
+         SetKernelBlockVisitorMultiphase kernelVisitor(kernel, nuL, nuG, densityRatio, beta, kappa, theta, availMem, needMem);
+         
+		 grid->accept(kernelVisitor);
+
+         if (refineLevel > 0)
+         {
+            SetUndefinedNodesBlockVisitor undefNodesVisitor;
+            grid->accept(undefNodesVisitor);
+         }
+
+		 //inflowF2_1Int->initInteractor();
+		 //inflowF2_2Int->initInteractor();
+
+         intHelper.setBC();
+		 
+        
+         grid->accept(bcVisitor);
+
+         //initialization of distributions
+		 LBMReal x1c =  radius; //g_minX1; //radius; //19; //(g_maxX1+g_minX1)/2;
+		 LBMReal x2c = (g_maxX2+g_minX2)/2; //g_minX2 + 2;
+		 LBMReal x3c = (g_maxX3+g_minX3)/2;
+		 mu::Parser fct1;
+		 
+		 //fct1.SetExpr("0.5-0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 //fct1.SetExpr("phiM-phiM*tanh((sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/(interfaceThickness*phiM))");
+		 
+		 //fct1.SetExpr("0.5*(phiH + phiL)-0.5*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 
+		 
+		 //fct1.SetExpr("0.5*(phiH + phiL) + 0.5*(phiH - phiL)*tanh(2*((x1-x1c))/interfaceThickness)");
+		 fct1.SetExpr("phiH");
+		 fct1.DefineConst("x1c", x1c);
+		 fct1.DefineConst("x2c", x2c);
+		 fct1.DefineConst("x3c", x3c);
+		 fct1.DefineConst("phiL", phiL);
+		 fct1.DefineConst("phiH", phiH);
+		 fct1.DefineConst("radius", radius);
+		 fct1.DefineConst("interfaceThickness", interfaceThickness);
+		 
+		 mu::Parser fct2;
+		 //fct2.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+		 fct2.SetExpr("vx1");
+		 fct2.DefineConst("R", 10.0);
+		 fct2.DefineConst("vx1", uLB);
+		 fct2.DefineConst("y0", 1.0);
+		 fct2.DefineConst("z0", 31.0);
+		 /*fct2.SetExpr("0.5*uLB-uLB*0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct2.DefineConst("uLB", uLB);
+		 fct2.DefineConst("x1c", x1c);
+		 fct2.DefineConst("x2c", x2c);
+		 fct2.DefineConst("x3c", x3c);
+		 fct2.DefineConst("radius", radius);
+		 fct2.DefineConst("interfaceThickness", interfaceThickness);*/
+
+
+		 InitDistributionsBlockVisitorMultiphase initVisitor(densityRatio, interfaceThickness, radius);
+         initVisitor.setPhi(fct1);
+         //initVisitor.setVx1(fct2);
+         grid->accept(initVisitor);
+
+         //set connectors
+         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         //ConnectorFactoryPtr factory(new Block3DConnectorFactory());
+         //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
+         grid->accept(setConnsVisitor);
+
+         //domain decomposition for threads
+         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
+         grid->accept(pqPartVisitor);
+
+
+
+
+         //boundary conditions grid
+         {
+            UbSchedulerPtr geoSch(new UbScheduler(1));
+            WriteBoundaryConditionsCoProcessorPtr ppgeo(
+               new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
+            ppgeo->process(0);
+            ppgeo.reset();
+         }
+
+         if (myid == 0) UBLOG(logINFO, "Preprocess - end");
+      }
+      else
+      {
+         if (myid == 0)
+         {
+            UBLOG(logINFO, "Parameters:");
+            UBLOG(logINFO, "uLb = " << uLB);
+            UBLOG(logINFO, "rho = " << rhoLB);
+            UBLOG(logINFO, "nuLb = " << nuLB);
+            UBLOG(logINFO, "Re = " << Re);
+            UBLOG(logINFO, "dx = " << dx);
+            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
+            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
+            UBLOG(logINFO, "path = " << pathname);
+         }
+
+         rcp.restart((int)restartStep);
+         grid->setTimeStep(restartStep);
+
+         //BCAdapterPtr velBCAdapter(new VelocityBCAdapter());
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithm()));
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+         //bcVisitor.addBC(velBCAdapter);
+         //grid->accept(bcVisitor);
+
+         //set connectors
+         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         grid->accept(setConnsVisitor);
+
+         if (myid == 0) UBLOG(logINFO, "Restart - end");
+      }
+      UbSchedulerPtr visSch(new UbScheduler(outTime));
+      WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm);
+
+      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
+      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
+
+	  
+	  
+	  
+
+	  
+	  UbSchedulerPtr bcSch(new UbScheduler(1, 12000, 12000));
+	  TimeDependentBCCoProcessorPtr inflowF2 (new TimeDependentBCCoProcessor(grid,bcSch));
+	  //inflowF2->addInteractor(inflowF2_1Int);
+	  //inflowF2->addInteractor(inflowF2_2Int);
+
+      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch,CalculationManager::MPI));
+      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[])
+{
+   //Sleep(30000);
+	if (argv != NULL)
+   {
+      if (argv[1] != NULL)
+      {
+         run(string(argv[1]));
+      }
+      else
+      {
+         cout << "Configuration file is missing!" << endl;
+      }
+   }
+
+}
+
diff --git a/apps/cpu/Multiphase/backup/Multiphase (Jet breakup on Phoenix).cpp b/apps/cpu/Multiphase/backup/Multiphase (Jet breakup on Phoenix).cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9f28008987968254edb46a1b7750155aad4f5ced
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/Multiphase (Jet breakup on Phoenix).cpp	
@@ -0,0 +1,508 @@
+#include <iostream>
+#include <string>
+
+#include "VirtualFluids.h"
+
+using namespace std;
+
+
+void run(string configname)
+{
+   try
+   {
+      ConfigurationFile   config;
+      config.load(configname);
+
+      string          pathname = config.getString("pathname");
+	  string		  pathGeo = config.getString("pathGeo");
+	  string		  geoFile = config.getString("geoFile");
+      int             numOfThreads = config.getInt("numOfThreads");
+      vector<int>     blocknx = config.getVector<int>("blocknx");
+	  vector<double>  boundingBox = config.getVector<double>("boundingBox");
+      //vector<double>  length = config.getVector<double>("length");
+	  double          uLB = config.getDouble("uLB");
+	  double          uF2 = config.getDouble("uF2");
+	  double		  nuL = config.getDouble("nuL");
+	  double		  nuG = config.getDouble("nuG");
+	  double		  densityRatio = config.getDouble("densityRatio");
+	  double		  sigma = config.getDouble("sigma");
+	  int		      interfaceThickness = config.getInt("interfaceThickness");
+	  double		  radius = config.getDouble("radius");
+	  double		  theta = config.getDouble("contactAngle");
+	  double		  gr = config.getDouble("gravity");
+	  double		  phiL = config.getDouble("phi_L");
+	  double		  phiH = config.getDouble("phi_H");
+	  double		  tauH = config.getDouble("Phase-field Relaxation");
+	  double		  mob = config.getDouble("Mobility");
+
+
+      double          endTime = config.getDouble("endTime");
+      double          outTime = config.getDouble("outTime");
+      double          availMem = config.getDouble("availMem");
+      int             refineLevel = config.getInt("refineLevel");
+      double          Re = config.getDouble("Re");
+      double          dx = config.getDouble("dx");
+      bool            logToFile = config.getBool("logToFile");
+      double          restartStep = config.getDouble("restartStep");
+      double          cpStart = config.getValue<double>("cpStart");
+      double          cpStep = config.getValue<double>("cpStep");
+      bool            newStart = config.getValue<bool>("newStart");
+
+      double beta  = 12*sigma/interfaceThickness;
+	  double kappa = 1.5*interfaceThickness*sigma;
+	  
+	  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);
+
+      LBMReal dLB; // = length[1] / dx;
+      LBMReal rhoLB = 0.0;
+      LBMReal nuLB = nuL; //(uLB*dLB) / Re;
+
+      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
+
+      const int baseLevel = 0;
+
+ 
+      
+      Grid3DPtr grid(new Grid3D(comm));
+      //grid->setPeriodicX1(true);
+	  //grid->setPeriodicX2(true);
+	  //grid->setPeriodicX3(true);
+      //////////////////////////////////////////////////////////////////////////
+      //restart
+      UbSchedulerPtr rSch(new UbScheduler(cpStep, cpStart));
+      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
+      MPIIORestart1CoProcessor rcp(grid, rSch, pathname, comm);
+      //////////////////////////////////////////////////////////////////////////
+	  
+
+
+      
+	  
+	  mu::Parser fctF1;
+	  //fctF1.SetExpr("vy1*(1-((x1-x0)^2+(x3-z0)^2)/(R^2))");
+	  //fctF1.SetExpr("vy1*(1-(sqrt((x1-x0)^2+(x3-z0)^2)/R))^0.1");
+	  fctF1.SetExpr("vy1");
+	  fctF1.DefineConst("vy1", -uLB);
+	  fctF1.DefineConst("R", 8.0);
+	  fctF1.DefineConst("x0", 0.0);
+	  fctF1.DefineConst("z0", 0.0);
+	  
+
+	  if (newStart)
+      {
+
+         //bounding box
+         /*double g_minX1 = 0.0;
+         double g_minX2 = -length[1] / 2.0;
+         double g_minX3 = -length[2] / 2.0;
+
+         double g_maxX1 = length[0];
+         double g_maxX2 = length[1] / 2.0;
+         double g_maxX3 = length[2] / 2.0;*/
+
+		 double g_minX1 = boundingBox[0];
+		 double g_minX2 = boundingBox[2];
+		 double g_minX3 = boundingBox[4];
+
+		 double g_maxX1 = boundingBox[1];
+		 double g_maxX2 = boundingBox[3];
+		 double g_maxX3 = boundingBox[5];
+
+         //geometry
+
+         //GbObject3DPtr innerCube(new GbCuboid3D(g_minX1+2, g_minX2+2, g_minX3+2, g_maxX1-2, g_maxX2-2, g_maxX3-2));
+
+		 //GbObject3DPtr cylinder1(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, radius));
+		 //GbObject3DPtr cylinder2(new GbCylinder3D(g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+		 
+		 //GbObject3DPtr cylinder(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+		 //GbObject3DPtr cylinders(new GbObject3DManager());
+		 //GbObject3DPtr cylinders1(new GbObjectGroup3D());
+		 
+
+		 
+		 
+		 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());
+
+		 GbTriFaceMesh3DPtr cylinder;
+		 if (myid==0) UBLOG(logINFO, "Read geoFile:start");
+		 //cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
+		 cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT));
+		 GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/Stlgeo", WbWriterVtkXmlBinary::getInstance());
+
+         
+         
+         //inflow
+		//GbCuboid3DPtr geoInflowF1(new GbCuboid3D(40.0, 628.0, 40.0, 80, 631.0, 80.0));  // For JetBreakup (Original)
+		GbCuboid3DPtr geoInflowF1(new GbCuboid3D(g_minX1, g_minX2-0.5*dx, g_minX3, g_maxX1, g_minX2 - 1.0*dx, g_maxX3));
+		if (myid==0) GbSystem3D::writeGeoObject(geoInflowF1.get(), pathname+"/geo/geoInflowF1", WbWriterVtkXmlASCII::getInstance());
+
+
+		//outflow
+		//GbCuboid3DPtr geoOutflow(new GbCuboid3D(-1.0, -1, -1.0, 121.0, 1.0, 121.0)); // For JetBreakup (Original)
+		GbCuboid3DPtr geoOutflow(new GbCuboid3D(g_minX1, g_maxX2-1*dx, g_minX3, g_maxX1, g_maxX2, g_maxX3));
+		if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
+         
+         
+         double blockLength = blocknx[0] * dx;
+
+
+
+         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, "Preprocess - start");
+         }
+
+         grid->setDeltaX(dx);
+         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
+
+		 grid->setPeriodicX1(false);
+		 grid->setPeriodicX2(false);
+		 grid->setPeriodicX3(false);
+
+         
+
+         GenBlocksGridVisitor genBlocks(gridCube);
+         grid->accept(genBlocks);
+
+
+
+
+		 //BC Adapter
+		 //////////////////////////////////////////////////////////////////////////////
+		 BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+		 noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+
+
+		BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+		denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+		
+		double r = 5.0; //boost::dynamic_pointer_cast<GbCylinder3D>(cylinder)->getRadius();
+		double cx1 = g_minX1;
+		double cx2 = 0.0; //cylinder->getX2Centroid();
+		double cx3 = 0.0; //cylinder->getX3Centroid();
+
+
+		
+		mu::Parser fctPhi_F1;
+		fctPhi_F1.SetExpr("phiH");
+		fctPhi_F1.DefineConst("phiH", phiH);
+
+		mu::Parser fctPhi_F2;
+		fctPhi_F2.SetExpr("phiL");
+		fctPhi_F2.DefineConst("phiL", phiL);
+		
+		mu::Parser fctvel_F2_init;
+		fctvel_F2_init.SetExpr("U");
+		fctvel_F2_init.DefineConst("U", 0);
+
+		//fct.SetExpr("U");
+		//fct.DefineConst("U", uLB);
+		//BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		
+		BCAdapterPtr velBCAdapterF1       (new VelocityBCAdapterMultiphase(false, true, false, fctF1  , phiH, 0.0, endTime));
+		
+		//BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_1, phiH, 0.0, endTime));
+		//BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctF2_2, phiH, 0.0, endTime));
+
+		//BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		//BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		
+		velBCAdapterF1->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		//velBCAdapterF2_1_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		//velBCAdapterF2_2_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		 
+		 
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+		 //mu::Parser fct;
+		 //fct.SetExpr("U");
+		 //fct.DefineConst("U", uLB);
+		 //BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingVelocityBCAlgorithm()));
+
+
+		 //////////////////////////////////////////////////////////////////////////////////
+		 //BC visitor
+		 BoundaryConditionsBlockVisitorMultiphase bcVisitor;
+		 bcVisitor.addBC(noSlipBCAdapter);
+		 bcVisitor.addBC(denBCAdapter);
+		 bcVisitor.addBC(velBCAdapterF1);
+		 //bcVisitor.addBC(velBCAdapterF2_1_init);
+		 //bcVisitor.addBC(velBCAdapterF2_2_init);
+
+
+
+         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
+
+         ppblocks->process(0);
+
+         Interactor3DPtr tubes(new D3Q27TriFaceMeshInteractor(cylinder, grid, noSlipBCAdapter, Interactor3D::SOLID));
+		 
+	     D3Q27InteractorPtr inflowF1Int = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF1, grid, velBCAdapterF1, Interactor3D::SOLID));
+
+		 //D3Q27InteractorPtr inflowF2_1Int_init = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_1, grid, velBCAdapterF2_1_init, Interactor3D::SOLID));
+
+		 //D3Q27InteractorPtr inflowF2_2Int_init = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_2, grid, velBCAdapterF2_2_init, Interactor3D::SOLID));
+
+         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
+
+		 //SetSolidBlockVisitor visitor1(inflowF2_1Int, SetSolidBlockVisitor::BC);
+		 //grid->accept(visitor1);
+		 //SetSolidBlockVisitor visitor2(inflowF2_2Int, SetSolidBlockVisitor::BC);
+		 //grid->accept(visitor2);
+
+
+         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW));
+         InteractorsHelper intHelper(grid, metisVisitor);
+		 intHelper.addInteractor(tubes);
+         intHelper.addInteractor(inflowF1Int);
+         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");
+         }
+
+         LBMKernelPtr kernel;
+
+         kernel = LBMKernelPtr(new MultiphaseCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], MultiphaseCumulantLBMKernel::NORMAL));
+
+         kernel->setWithForcing(true);
+		 kernel->setForcingX1(0.0);
+		 kernel->setForcingX2(gr);
+		 kernel->setForcingX3(0.0);
+
+		 kernel->setPhiL(phiL);
+		 kernel->setPhiH(phiH);
+		 kernel->setPhaseFieldRelaxation(tauH);
+		 kernel->setMobility(mob);
+
+         BCProcessorPtr bcProc(new BCProcessor());
+         //BCProcessorPtr bcProc(new ThinWallBCProcessor());
+
+         kernel->setBCProcessor(bcProc);
+
+         SetKernelBlockVisitorMultiphase kernelVisitor(kernel, nuL, nuG, densityRatio, beta, kappa, theta, availMem, needMem);
+         
+		 grid->accept(kernelVisitor);
+
+         if (refineLevel > 0)
+         {
+            SetUndefinedNodesBlockVisitor undefNodesVisitor;
+            grid->accept(undefNodesVisitor);
+         }
+
+		 //inflowF2_1Int->initInteractor();
+		 //inflowF2_2Int->initInteractor();
+
+         intHelper.setBC();
+		 
+        
+         grid->accept(bcVisitor);
+
+         //initialization of distributions
+		 LBMReal x1c =  radius; //g_minX1; //radius; //19; //(g_maxX1+g_minX1)/2;
+		 LBMReal x2c = (g_maxX2+g_minX2)/2; //g_minX2 + 2;
+		 LBMReal x3c = (g_maxX3+g_minX3)/2;
+		 mu::Parser fct1;
+		 
+		 //fct1.SetExpr("0.5-0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 //fct1.SetExpr("phiM-phiM*tanh((sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/(interfaceThickness*phiM))");
+		 
+		 //fct1.SetExpr("0.5*(phiH + phiL)-0.5*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 
+		 
+		 //fct1.SetExpr("0.5*(phiH + phiL) + 0.5*(phiH - phiL)*tanh(2*((x2-radius))/interfaceThickness)");
+		 fct1.SetExpr("phiL");
+		 fct1.DefineConst("x1c", x1c);
+		 fct1.DefineConst("x2c", x2c);
+		 fct1.DefineConst("x3c", x3c);
+		 fct1.DefineConst("phiL", phiL);
+		 fct1.DefineConst("phiH", phiH);
+		 fct1.DefineConst("radius", radius);
+		 fct1.DefineConst("interfaceThickness", interfaceThickness);
+		 
+		 mu::Parser fct2;
+		 //fct2.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+		 fct2.SetExpr("vx1");
+		 fct2.DefineConst("R", 10.0);
+		 fct2.DefineConst("vx1", uLB);
+		 fct2.DefineConst("y0", 1.0);
+		 fct2.DefineConst("z0", 31.0);
+		 /*fct2.SetExpr("0.5*uLB-uLB*0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct2.DefineConst("uLB", uLB);
+		 fct2.DefineConst("x1c", x1c);
+		 fct2.DefineConst("x2c", x2c);
+		 fct2.DefineConst("x3c", x3c);
+		 fct2.DefineConst("radius", radius);
+		 fct2.DefineConst("interfaceThickness", interfaceThickness);*/
+
+
+		 InitDistributionsBlockVisitorMultiphase initVisitor(densityRatio, interfaceThickness, radius);
+         initVisitor.setPhi(fct1);
+         //initVisitor.setVx1(fct2);
+         grid->accept(initVisitor);
+
+         //set connectors
+         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         //ConnectorFactoryPtr factory(new Block3DConnectorFactory());
+         //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
+         grid->accept(setConnsVisitor);
+
+         //domain decomposition for threads
+         //PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
+         //grid->accept(pqPartVisitor);
+
+
+
+
+         //boundary conditions grid
+         {
+            UbSchedulerPtr geoSch(new UbScheduler(1));
+            WriteBoundaryConditionsCoProcessorPtr ppgeo(
+               new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
+            ppgeo->process(0);
+            ppgeo.reset();
+         }
+
+         if (myid == 0) UBLOG(logINFO, "Preprocess - end");
+      }
+      else
+      {
+         if (myid == 0)
+         {
+            UBLOG(logINFO, "Parameters:");
+            UBLOG(logINFO, "uLb = " << uLB);
+            UBLOG(logINFO, "rho = " << rhoLB);
+            UBLOG(logINFO, "nuLb = " << nuLB);
+            UBLOG(logINFO, "Re = " << Re);
+            UBLOG(logINFO, "dx = " << dx);
+            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
+            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
+            UBLOG(logINFO, "path = " << pathname);
+         }
+
+         rcp.restart((int)restartStep);
+         grid->setTimeStep(restartStep);
+
+         //BCAdapterPtr velBCAdapter(new VelocityBCAdapter());
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithm()));
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+         //bcVisitor.addBC(velBCAdapter);
+         //grid->accept(bcVisitor);
+
+         //set connectors
+         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         grid->accept(setConnsVisitor);
+
+         if (myid == 0) UBLOG(logINFO, "Restart - end");
+      }
+      UbSchedulerPtr visSch(new UbScheduler(outTime));
+      WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm);
+
+      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
+      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
+
+	  
+	  
+	  
+
+	  
+	  //UbSchedulerPtr bcSch(new UbScheduler(1, 12000, 12000));
+	  //TimeDependentBCCoProcessorPtr inflowF2 (new TimeDependentBCCoProcessor(grid,bcSch));
+	  //inflowF2->addInteractor(inflowF2_1Int);
+	  //inflowF2->addInteractor(inflowF2_2Int);
+
+      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch,CalculationManager::MPI));
+      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[])
+{
+   //Sleep(30000);
+	if (argv != NULL)
+   {
+      if (argv[1] != NULL)
+      {
+         run(string(argv[1]));
+      }
+      else
+      {
+         cout << "Configuration file is missing!" << endl;
+      }
+   }
+
+}
+
diff --git a/apps/cpu/Multiphase/backup/Multiphase (T-Junction).cpp b/apps/cpu/Multiphase/backup/Multiphase (T-Junction).cpp
new file mode 100644
index 0000000000000000000000000000000000000000..18651e4a5584a7eda7bd3aea4dc8789eb03e1d15
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/Multiphase (T-Junction).cpp	
@@ -0,0 +1,488 @@
+#include <iostream>
+#include <string>
+
+#include "VirtualFluids.h"
+
+using namespace std;
+
+
+void run(string configname)
+{
+   try
+   {
+      ConfigurationFile   config;
+      config.load(configname);
+
+      string          pathname = config.getString("pathname");
+	  string		  pathGeo = config.getString("pathGeo");
+	  string		  geoFile = config.getString("geoFile");
+      int             numOfThreads = config.getInt("numOfThreads");
+      vector<int>     blocknx = config.getVector<int>("blocknx");
+	  vector<double>  boundingBox = config.getVector<double>("boundingBox");
+      //vector<double>  length = config.getVector<double>("length");
+	  double          uLB = config.getDouble("uLB");
+	  double          uF2 = config.getDouble("uF2");
+	  double		  nuL = config.getDouble("nuL");
+	  double		  nuG = config.getDouble("nuG");
+	  double		  densityRatio = config.getDouble("densityRatio");
+	  double		  sigma = config.getDouble("sigma");
+	  int		      interfaceThickness = config.getInt("interfaceThickness");
+	  double		  radius = config.getDouble("radius");
+	  double		  theta = config.getDouble("contactAngle");
+	  double		  gr = config.getDouble("gravity");
+	  double		  phiL = config.getDouble("phi_L");
+	  double		  phiH = config.getDouble("phi_H");
+	  double		  tauH = config.getDouble("Phase-field Relaxation");
+	  double		  mob = config.getDouble("Mobility");
+
+
+      double          endTime = config.getDouble("endTime");
+      double          outTime = config.getDouble("outTime");
+      double          availMem = config.getDouble("availMem");
+      int             refineLevel = config.getInt("refineLevel");
+      double          Re = config.getDouble("Re");
+      double          dx = config.getDouble("dx");
+      bool            logToFile = config.getBool("logToFile");
+      double          restartStep = config.getDouble("restartStep");
+      double          cpStart = config.getValue<double>("cpStart");
+      double          cpStep = config.getValue<double>("cpStep");
+      bool            newStart = config.getValue<bool>("newStart");
+
+      double beta  = 12*sigma/interfaceThickness;
+	  double kappa = 1.5*interfaceThickness*sigma;
+	  
+	  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);
+
+      LBMReal dLB; // = length[1] / dx;
+      LBMReal rhoLB = 0.0;
+      LBMReal nuLB = nuL; //(uLB*dLB) / Re;
+
+      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
+
+      const int baseLevel = 0;
+
+ 
+      
+      Grid3DPtr grid(new Grid3D(comm));
+      //grid->setPeriodicX1(true);
+	  //grid->setPeriodicX2(true);
+	  //grid->setPeriodicX3(true);
+      //////////////////////////////////////////////////////////////////////////
+      //restart
+      UbSchedulerPtr rSch(new UbScheduler(cpStep, cpStart));
+      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
+      MPIIORestart1CoProcessor rcp(grid, rSch, pathname, comm);
+      //////////////////////////////////////////////////////////////////////////
+	  
+	  //inflow
+	  GbCuboid3DPtr geoInflowF1(new GbCuboid3D(-2.0, -25.0, -25.0, 0.5, 25.0, 25.0));
+	  if (myid==0) GbSystem3D::writeGeoObject(geoInflowF1.get(), pathname+"/geo/geoInflowF1", WbWriterVtkXmlASCII::getInstance());	  
+	  
+	  GbCuboid3DPtr geoInflowF2_1(new GbCuboid3D(35.0, -15.0, 62.0, 65.0, 15.0, 59.5));
+	  if (myid==0) GbSystem3D::writeGeoObject(geoInflowF2_1.get(), pathname+"/geo/geoInflowF2_1", WbWriterVtkXmlASCII::getInstance());
+
+	  
+	  //outflow
+	  GbCuboid3DPtr geoOutflow(new GbCuboid3D(179.5, -25.0, -25.0, 182.0, 25.0, 25.0));
+	  if (myid==0) GbSystem3D::writeGeoObject(geoOutflow.get(), pathname+"/geo/geoOutflow", WbWriterVtkXmlASCII::getInstance());
+
+	  
+	  mu::Parser fctF1;
+	  fctF1.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+	  fctF1.DefineConst("R", 12.0);
+	  fctF1.DefineConst("vx1", uLB);
+	  fctF1.DefineConst("y0", 0.0);
+	  fctF1.DefineConst("z0", 0.0);
+
+
+	  mu::Parser fctF2_1;
+	  fctF2_1.SetExpr("vx3*(1-((x1-x0)^2+(x2-y0)^2)/(R^2))");
+	  fctF2_1.DefineConst("R", 10.0);
+	  fctF2_1.DefineConst("vx3", -uF2);
+	  fctF2_1.DefineConst("x0", 50.0);
+	  fctF2_1.DefineConst("y0", 0.0);
+
+	  
+	  BCAdapterPtr velBCAdapterF1(new VelocityBCAdapterMultiphase(true, false, false, fctF1, phiL, 0.0, endTime));	
+	  BCAdapterPtr velBCAdapterF2_1(new VelocityBCAdapterMultiphase(false, false, true, fctF2_1, phiH, 0.0, endTime));
+	  
+
+
+	  
+
+
+
+	  if (newStart)
+      {
+
+         //bounding box
+         /*double g_minX1 = 0.0;
+         double g_minX2 = -length[1] / 2.0;
+         double g_minX3 = -length[2] / 2.0;
+
+         double g_maxX1 = length[0];
+         double g_maxX2 = length[1] / 2.0;
+         double g_maxX3 = length[2] / 2.0;*/
+
+		 double g_minX1 = boundingBox[0];
+		 double g_minX2 = boundingBox[2];
+		 double g_minX3 = boundingBox[4];
+
+		 double g_maxX1 = boundingBox[1];
+		 double g_maxX2 = boundingBox[3];
+		 double g_maxX3 = boundingBox[5];
+
+         //geometry
+
+		 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());
+
+		 GbTriFaceMesh3DPtr cylinder;
+		 if (myid==0) UBLOG(logINFO, "Read geoFile:start");
+		 //cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
+		 cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT));
+		 GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/Stlgeo", WbWriterVtkXmlBinary::getInstance());
+
+         double blockLength = blocknx[0] * dx;
+
+
+
+         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, "Preprocess - start");
+         }
+
+         grid->setDeltaX(dx);
+         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
+
+		 grid->setPeriodicX1(false);
+		 grid->setPeriodicX2(false);
+		 grid->setPeriodicX3(false);
+
+         
+
+         GenBlocksGridVisitor genBlocks(gridCube);
+         grid->accept(genBlocks);
+
+
+
+		 //BC Adapter
+		 //////////////////////////////////////////////////////////////////////////////
+		 BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+		 noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+
+
+		BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+		denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+		
+		double r = 5.0; //boost::dynamic_pointer_cast<GbCylinder3D>(cylinder)->getRadius();
+		double cx1 = g_minX1;
+		double cx2 = 0.0; //cylinder->getX2Centroid();
+		double cx3 = 0.0; //cylinder->getX3Centroid();
+
+
+
+		//fct.SetExpr("U");
+		//fct.DefineConst("U", uLB);
+		//BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		
+		
+
+
+		
+		velBCAdapterF1->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		velBCAdapterF2_1->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+
+		//velBCAdapterF2_2_init->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		 
+		 
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+		 //mu::Parser fct;
+		 //fct.SetExpr("U");
+		 //fct.DefineConst("U", uLB);
+		 //BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingVelocityBCAlgorithm()));
+
+
+		 //////////////////////////////////////////////////////////////////////////////////
+		 //BC visitor
+		 BoundaryConditionsBlockVisitorMultiphase bcVisitor;
+		 bcVisitor.addBC(noSlipBCAdapter);
+		 bcVisitor.addBC(denBCAdapter);
+		 bcVisitor.addBC(velBCAdapterF1);
+		 bcVisitor.addBC(velBCAdapterF2_1);
+
+
+
+
+         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
+
+         ppblocks->process(0);
+
+         Interactor3DPtr tubes(new D3Q27TriFaceMeshInteractor(cylinder, grid, noSlipBCAdapter, Interactor3D::INVERSESOLID));
+		 
+	     D3Q27InteractorPtr inflowF1Int = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF1, grid, velBCAdapterF1, Interactor3D::SOLID));
+
+		 D3Q27InteractorPtr inflowF2_1Int = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_1, grid, velBCAdapterF2_1, Interactor3D::SOLID));
+
+         D3Q27InteractorPtr outflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoOutflow, grid, denBCAdapter, Interactor3D::SOLID));
+
+		 //SetSolidBlockVisitor visitor1(inflowF2_1Int, SetSolidBlockVisitor::BC);
+		 //grid->accept(visitor1);
+		 //SetSolidBlockVisitor visitor2(inflowF2_2Int, SetSolidBlockVisitor::BC);
+		 //grid->accept(visitor2);
+
+
+         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
+         InteractorsHelper intHelper(grid, metisVisitor);
+		 intHelper.addInteractor(tubes);
+         intHelper.addInteractor(inflowF1Int);
+		 intHelper.addInteractor(inflowF2_1Int);
+         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");
+         }
+
+         LBMKernelPtr kernel;
+
+         kernel = LBMKernelPtr(new MultiphaseCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], MultiphaseCumulantLBMKernel::NORMAL));
+
+         kernel->setWithForcing(false);
+		 kernel->setForcingX1(gr);
+		 kernel->setForcingX2(0.0);
+		 kernel->setForcingX3(0.0);
+
+		 kernel->setPhiL(phiL);
+		 kernel->setPhiH(phiH);
+		 kernel->setPhaseFieldRelaxation(tauH);
+		 kernel->setMobility(mob);
+
+         BCProcessorPtr bcProc(new BCProcessor());
+         //BCProcessorPtr bcProc(new ThinWallBCProcessor());
+
+         kernel->setBCProcessor(bcProc);
+
+         SetKernelBlockVisitorMultiphase kernelVisitor(kernel, nuL, nuG, densityRatio, beta, kappa, theta, availMem, needMem);
+         
+		 grid->accept(kernelVisitor);
+
+         if (refineLevel > 0)
+         {
+            SetUndefinedNodesBlockVisitor undefNodesVisitor;
+            grid->accept(undefNodesVisitor);
+         }
+
+		 //inflowF2_1Int->initInteractor();
+		 //inflowF2_2Int->initInteractor();
+
+         intHelper.setBC();
+		 
+        
+         grid->accept(bcVisitor);
+
+         //initialization of distributions
+		 LBMReal x1c =  radius; //g_minX1; //radius; //19; //(g_maxX1+g_minX1)/2;
+		 LBMReal x2c = (g_maxX2+g_minX2)/2; //g_minX2 + 2;
+		 LBMReal x3c = (g_maxX3+g_minX3)/2;
+		 mu::Parser fct1;
+		 
+		 //fct1.SetExpr("0.5-0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 //fct1.SetExpr("phiM-phiM*tanh((sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/(interfaceThickness*phiM))");
+		 
+		 //fct1.SetExpr("0.5*(phiH + phiL)-0.5*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct1.SetExpr("0.5*(phiH + phiL) + 0.5*(phiH - phiL)*tanh(2*((x3-x1c))/interfaceThickness)");
+		 
+		 //fct1.SetExpr("phiH");
+		 fct1.DefineConst("x1c", x1c);
+		 fct1.DefineConst("x2c", x2c);
+		 fct1.DefineConst("x3c", x3c);
+		 fct1.DefineConst("phiL", phiL);
+		 fct1.DefineConst("phiH", phiH);
+		 fct1.DefineConst("radius", radius);
+		 fct1.DefineConst("interfaceThickness", interfaceThickness);
+		 
+		 mu::Parser fct2;
+		 //fct2.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+		 fct2.SetExpr("vx1");
+		 fct2.DefineConst("R", 10.0);
+		 fct2.DefineConst("vx1", uLB);
+		 fct2.DefineConst("y0", 1.0);
+		 fct2.DefineConst("z0", 31.0);
+		 /*fct2.SetExpr("0.5*uLB-uLB*0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct2.DefineConst("uLB", uLB);
+		 fct2.DefineConst("x1c", x1c);
+		 fct2.DefineConst("x2c", x2c);
+		 fct2.DefineConst("x3c", x3c);
+		 fct2.DefineConst("radius", radius);
+		 fct2.DefineConst("interfaceThickness", interfaceThickness);*/
+
+
+		 InitDistributionsBlockVisitorMultiphase initVisitor(densityRatio, interfaceThickness, radius);
+         initVisitor.setPhi(fct1);
+         //initVisitor.setVx1(fct2);
+         grid->accept(initVisitor);
+
+         //set connectors
+         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         //ConnectorFactoryPtr factory(new Block3DConnectorFactory());
+         //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
+         grid->accept(setConnsVisitor);
+
+         //domain decomposition for threads
+         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
+         grid->accept(pqPartVisitor);
+
+
+
+
+         //boundary conditions grid
+         {
+            UbSchedulerPtr geoSch(new UbScheduler(1));
+            WriteBoundaryConditionsCoProcessorPtr ppgeo(
+               new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
+            ppgeo->process(0);
+            ppgeo.reset();
+         }
+
+         if (myid == 0) UBLOG(logINFO, "Preprocess - end");
+      }
+      else
+      {
+         if (myid == 0)
+         {
+            UBLOG(logINFO, "Parameters:");
+            UBLOG(logINFO, "uLb = " << uLB);
+            UBLOG(logINFO, "rho = " << rhoLB);
+            UBLOG(logINFO, "nuLb = " << nuLB);
+            UBLOG(logINFO, "Re = " << Re);
+            UBLOG(logINFO, "dx = " << dx);
+            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
+            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
+            UBLOG(logINFO, "path = " << pathname);
+         }
+
+         rcp.restart((int)restartStep);
+         grid->setTimeStep(restartStep);
+
+         //BCAdapterPtr velBCAdapter(new VelocityBCAdapter());
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithm()));
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+         //bcVisitor.addBC(velBCAdapter);
+         //grid->accept(bcVisitor);
+
+         //set connectors
+         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         grid->accept(setConnsVisitor);
+
+         if (myid == 0) UBLOG(logINFO, "Restart - end");
+      }
+      UbSchedulerPtr visSch(new UbScheduler(outTime));
+      WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm);
+
+      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
+      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
+
+	  
+	  
+	  
+
+	  
+	  UbSchedulerPtr bcSch(new UbScheduler(1, 12000, 12000));
+	  TimeDependentBCCoProcessorPtr inflowF2 (new TimeDependentBCCoProcessor(grid,bcSch));
+	  //inflowF2->addInteractor(inflowF2_1Int);
+	  //inflowF2->addInteractor(inflowF2_2Int);
+
+      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch,CalculationManager::MPI));
+      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[])
+{
+   //Sleep(30000);
+	if (argv != NULL)
+   {
+      if (argv[1] != NULL)
+      {
+         run(string(argv[1]));
+      }
+      else
+      {
+         cout << "Configuration file is missing!" << endl;
+      }
+   }
+
+}
+
diff --git a/apps/cpu/Multiphase/backup/Multiphase (Thermal).cpp b/apps/cpu/Multiphase/backup/Multiphase (Thermal).cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a5d20b94a4a74331f55954088545df8f735faf71
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/Multiphase (Thermal).cpp	
@@ -0,0 +1,529 @@
+#include <iostream>
+#include <string>
+
+#include "VirtualFluids.h"
+
+using namespace std;
+
+
+void run(string configname)
+{
+   try
+   {
+      ConfigurationFile   config;
+      config.load(configname);
+
+      string          pathname = config.getString("pathname");
+	  string		  pathGeo = config.getString("pathGeo");
+	  string		  geoFile = config.getString("geoFile");
+      int             numOfThreads = config.getInt("numOfThreads");
+      vector<int>     blocknx = config.getVector<int>("blocknx");
+	  vector<double>  boundingBox = config.getVector<double>("boundingBox");
+      //vector<double>  length = config.getVector<double>("length");
+	  double          uLB = config.getDouble("uLB");
+	  double          uF2 = config.getDouble("uF2");
+	  double		  nuL = config.getDouble("nuL");
+	  double		  nuG = config.getDouble("nuG");
+	  double		  densityRatio = config.getDouble("densityRatio");
+	  double		  sigma = config.getDouble("sigma");
+	  int		      interfaceThickness = config.getInt("interfaceThickness");
+	  double		  radius = config.getDouble("radius");
+	  double		  theta = config.getDouble("contactAngle");
+	  double		  gr = config.getDouble("gravity");
+	  double		  phiL = config.getDouble("phi_L");
+	  double		  phiH = config.getDouble("phi_H");
+	  double		  tauH = config.getDouble("Phase-field Relaxation");
+	  double		  mob = config.getDouble("Mobility");
+
+
+      double          endTime = config.getDouble("endTime");
+      double          outTime = config.getDouble("outTime");
+      double          availMem = config.getDouble("availMem");
+      int             refineLevel = config.getInt("refineLevel");
+      double          Re = config.getDouble("Re");
+      double          dx = config.getDouble("dx");
+      bool            logToFile = config.getBool("logToFile");
+      double          restartStep = config.getDouble("restartStep");
+      double          cpStart = config.getValue<double>("cpStart");
+      double          cpStep = config.getValue<double>("cpStep");
+      bool            newStart = config.getValue<bool>("newStart");
+
+      double beta  = 12*sigma/interfaceThickness;
+	  double kappa = 1.5*interfaceThickness*sigma;
+	  
+	  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);
+
+      LBMReal dLB; // = length[1] / dx;
+      LBMReal rhoLB = 0.0;
+      LBMReal nuLB = nuL; //(uLB*dLB) / Re;
+
+      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
+
+      const int baseLevel = 0;
+
+ 
+      
+      Grid3DPtr grid(new Grid3D(comm));
+      //grid->setPeriodicX1(true);
+	  //grid->setPeriodicX2(true);
+	  //grid->setPeriodicX3(true);
+      //////////////////////////////////////////////////////////////////////////
+      //restart
+      UbSchedulerPtr rSch(new UbScheduler(cpStep, cpStart));
+      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
+      MPIIORestart1CoProcessor rcp(grid, rSch, pathname, comm);
+      //////////////////////////////////////////////////////////////////////////
+	  
+
+
+
+
+      
+	  
+	  mu::Parser fctF1;
+	  //fctF1.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+	  fctF1.SetExpr("vx1");
+	  fctF1.DefineConst("vx1", 0.0);
+	  /*fctF1.DefineConst("R", 8.0);
+	  fctF1.DefineConst("y0", 0.0);
+	  fctF1.DefineConst("z0", 0.0);*/
+	  
+	  fctF1.DefineConst("R", 10.0); // FlowFocusingSS , FlowFocusingS
+	  fctF1.DefineConst("y0", 1.0); // FlowFocusingSS , FlowFocusingS
+	  fctF1.DefineConst("z0", 31.0); // FlowFocusingSS , FlowFocusingS
+
+
+	  
+	  
+	  /*mu::Parser fctF2_1;
+	  fctF2_1.SetExpr("vx3*(1-((x1-x0)^2+(x2-y0)^2)/(R^2))");
+	  fctF2_1.DefineConst("R", 12.0);
+	  fctF2_1.DefineConst("vx3", uF2);
+	  fctF2_1.DefineConst("x0", 1.0);
+	  fctF2_1.DefineConst("y0", 1.0);
+
+	  mu::Parser fctF2_2;
+	  fctF2_2.SetExpr("vx3*(1-((x1-x0)^2+(x2-y0)^2)/(R^2))");
+	  fctF2_2.DefineConst("R", 12.0);
+	  fctF2_2.DefineConst("vx3", -uF2);
+	  fctF2_2.DefineConst("x0", 1.0);
+	  fctF2_2.DefineConst("y0", 1.0);
+
+	  BCAdapterPtr velBCAdapterF2_1(new VelocityBCAdapterMultiphase(false, false, true, fctF2_1, phiL, 0.0, endTime));
+	  BCAdapterPtr velBCAdapterF2_2(new VelocityBCAdapterMultiphase(false, false, true, fctF2_2, phiL, 0.0, endTime));
+
+	  D3Q27InteractorPtr inflowF2_1Int = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_1, grid, velBCAdapterF2_1, Interactor3D::SOLID));
+	  D3Q27InteractorPtr inflowF2_2Int = D3Q27InteractorPtr(new D3Q27Interactor(geoInflowF2_2, grid, velBCAdapterF2_2, Interactor3D::SOLID));*/
+
+
+
+	  if (newStart)
+      {
+
+         //bounding box
+         /*double g_minX1 = 0.0;
+         double g_minX2 = -length[1] / 2.0;
+         double g_minX3 = -length[2] / 2.0;
+
+         double g_maxX1 = length[0];
+         double g_maxX2 = length[1] / 2.0;
+         double g_maxX3 = length[2] / 2.0;*/
+
+		 double g_minX1 = boundingBox[0];
+		 double g_minX2 = boundingBox[2];
+		 double g_minX3 = boundingBox[4];
+
+		 double g_maxX1 = boundingBox[1];
+		 double g_maxX2 = boundingBox[3];
+		 double g_maxX3 = boundingBox[5];
+
+         //geometry
+
+         //GbObject3DPtr innerCube(new GbCuboid3D(g_minX1+2, g_minX2+2, g_minX3+2, g_maxX1-2, g_maxX2-2, g_maxX3-2));
+
+		 //GbObject3DPtr cylinder1(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, radius));
+		 //GbObject3DPtr cylinder2(new GbCylinder3D(g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+		 
+		 //GbObject3DPtr cylinder(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+		 //GbObject3DPtr cylinders(new GbObject3DManager());
+		 //GbObject3DPtr cylinders1(new GbObjectGroup3D());
+		 
+
+		 
+		 
+		 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());
+
+		 GbTriFaceMesh3DPtr cylinder;
+		 if (myid==0) UBLOG(logINFO, "Read geoFile:start");
+		 //cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile2(pathGeo+"/"+geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT, false));
+		 cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT));
+		 GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/Stlgeo", WbWriterVtkXmlBinary::getInstance());
+
+         double blockLength = blocknx[0] * dx;
+
+
+
+
+         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, "Preprocess - start");
+         }
+
+         grid->setDeltaX(dx);
+         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
+
+		 grid->setPeriodicX1(true);
+		 grid->setPeriodicX2(false);
+		 grid->setPeriodicX3(true);
+
+         
+
+         GenBlocksGridVisitor genBlocks(gridCube);
+         grid->accept(genBlocks);
+
+
+
+
+		 //BC Adapter
+		 //////////////////////////////////////////////////////////////////////////////
+		 BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+		 noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+
+
+		BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+		denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+		
+		double r = 5.0; //boost::dynamic_pointer_cast<GbCylinder3D>(cylinder)->getRadius();
+		double cx1 = g_minX1;
+		double cx2 = 0.0; //cylinder->getX2Centroid();
+		double cx3 = 0.0; //cylinder->getX3Centroid();
+
+		GbCuboid3DPtr geoBottomWall(new GbCuboid3D(g_minX1-2, g_minX2-1, g_minX3-2, g_maxX1+2, g_minX2+1, g_maxX3+2)); // For FlowFocusingS2
+		if (myid==0) GbSystem3D::writeGeoObject(geoBottomWall.get(), pathname+"/geo/geoBottomWall", WbWriterVtkXmlASCII::getInstance());
+
+		GbCuboid3DPtr geoTopWall(new GbCuboid3D(g_minX1-2, g_maxX2-1, g_minX3-2, g_maxX1+2, g_maxX2+1, g_maxX3+2));  // For FlowFocusingS2
+		if (myid==0) GbSystem3D::writeGeoObject(geoTopWall.get(), pathname+"/geo/geoTopWall", WbWriterVtkXmlASCII::getInstance());
+
+
+
+		mu::Parser fctPhi_F1;
+		fctPhi_F1.SetExpr("phiH");
+		fctPhi_F1.DefineConst("phiH", phiH);
+
+		mu::Parser fctPhi_F2;
+		fctPhi_F2.SetExpr("phiL");
+		fctPhi_F2.DefineConst("phiL", phiL);
+		
+		mu::Parser fctvel_F2_init;
+		fctvel_F2_init.SetExpr("U");
+		fctvel_F2_init.DefineConst("U", 0);
+
+		//fct.SetExpr("U");
+		//fct.DefineConst("U", uLB);
+		//BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		
+		BCAdapterPtr velBCAdapterBottom(new VelocityBCAdapterMultiphase(false, false, true, fctF1, phiH, 0.0, endTime));
+		BCAdapterPtr velBCAdapterTop   (new VelocityBCAdapterMultiphase(true, false, false, fctF1  , phiL, 0.0, endTime));
+
+		
+
+		//BCAdapterPtr velBCAdapterF2_1_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		//BCAdapterPtr velBCAdapterF2_2_init(new VelocityBCAdapterMultiphase(false, false, true, fctvel_F2_init, phiL, 0.0, endTime));
+		
+		velBCAdapterBottom->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmThermal()));
+		velBCAdapterTop->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmThermal()));
+
+		 
+		 
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+		 //mu::Parser fct;
+		 //fct.SetExpr("U");
+		 //fct.DefineConst("U", uLB);
+		 //BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingVelocityBCAlgorithm()));
+
+
+		 //////////////////////////////////////////////////////////////////////////////////
+		 //BC visitor
+		 BoundaryConditionsBlockVisitorMultiphase bcVisitor;
+		 //bcVisitor.addBC(noSlipBCAdapter);
+		 //bcVisitor.addBC(denBCAdapter);
+		 bcVisitor.addBC(velBCAdapterBottom);
+		 bcVisitor.addBC(velBCAdapterTop);
+
+
+
+
+         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
+
+         ppblocks->process(0);
+
+         //Interactor3DPtr tubes(new D3Q27TriFaceMeshInteractor(cylinder, grid, noSlipBCAdapter, Interactor3D::INVERSESOLID));
+		 
+	     D3Q27InteractorPtr bottomWallInt = D3Q27InteractorPtr(new D3Q27Interactor(geoBottomWall, grid, velBCAdapterBottom, Interactor3D::SOLID));
+
+		 D3Q27InteractorPtr topWallInt = D3Q27InteractorPtr(new D3Q27Interactor(geoTopWall, grid, velBCAdapterTop, Interactor3D::SOLID));
+
+
+		 //SetSolidBlockVisitor visitor1(inflowF2_1Int, SetSolidBlockVisitor::BC);
+		 //grid->accept(visitor1);
+		 //SetSolidBlockVisitor visitor2(inflowF2_2Int, SetSolidBlockVisitor::BC);
+		 //grid->accept(visitor2);
+
+
+         Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::B));
+         InteractorsHelper intHelper(grid, metisVisitor);
+		 //intHelper.addInteractor(tubes);
+         intHelper.addInteractor(bottomWallInt);
+		 intHelper.addInteractor(topWallInt);
+		 //intHelper.addInteractor(inflowF2_2Int_init);
+         //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");
+         }
+
+         LBMKernelPtr kernel;
+
+         kernel = LBMKernelPtr(new ThermalCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], ThermalCumulantLBMKernel::NORMAL));
+
+         kernel->setWithForcing(true);
+		 kernel->setForcingX1(0.0);
+		 kernel->setForcingX2(gr);
+		 kernel->setForcingX3(0.0);
+
+		 kernel->setPhiL(phiL);
+		 kernel->setPhiH(phiH);
+		 kernel->setPhaseFieldRelaxation(tauH);
+		 kernel->setMobility(mob);
+
+         BCProcessorPtr bcProc(new BCProcessor());
+         //BCProcessorPtr bcProc(new ThinWallBCProcessor());
+
+         kernel->setBCProcessor(bcProc);
+
+         SetKernelBlockVisitorMultiphase kernelVisitor(kernel, nuL, nuG, densityRatio, beta, kappa, theta, availMem, needMem);
+         
+		 grid->accept(kernelVisitor);
+
+         if (refineLevel > 0)
+         {
+            SetUndefinedNodesBlockVisitor undefNodesVisitor;
+            grid->accept(undefNodesVisitor);
+         }
+
+		 //inflowF2_1Int->initInteractor();
+		 //inflowF2_2Int->initInteractor();
+
+         intHelper.setBC();
+		 
+        
+         grid->accept(bcVisitor);
+
+         //initialization of distributions
+		 LBMReal x1c =  radius; //g_minX1; //radius; //19; //(g_maxX1+g_minX1)/2;
+		 LBMReal x2c = (g_maxX2+g_minX2)/2; //g_minX2 + 2;
+		 LBMReal x3c = (g_maxX3+g_minX3)/2;
+		 mu::Parser fct1;
+		 
+		 //fct1.SetExpr("0.5-0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 //fct1.SetExpr("phiM-phiM*tanh((sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/(interfaceThickness*phiM))");
+		 
+		 //fct1.SetExpr("0.5*(phiH + phiL)-0.5*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 //fct1.SetExpr("0.5*(phiH + phiL) + 0.5*(phiH - phiL)*tanh(2*((x1-x1c))/interfaceThickness)");
+		 
+		 fct1.SetExpr("0.5*(phiH + phiL)");
+		 //fct1.SetExpr("phiL");
+		 fct1.DefineConst("x1c", x1c);
+		 fct1.DefineConst("x2c", x2c);
+		 fct1.DefineConst("x3c", x3c);
+		 fct1.DefineConst("phiL", phiL);
+		 fct1.DefineConst("phiH", phiH);
+		 fct1.DefineConst("radius", radius);
+		 fct1.DefineConst("interfaceThickness", interfaceThickness);
+		 
+		 mu::Parser fct2;
+		 //fct2.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+		 fct2.SetExpr("0.005*cos(2*3.14159265*x1/50.0)");
+		 /*fct2.DefineConst("R", 10.0);
+		 fct2.DefineConst("vx1", uLB);
+		 fct2.DefineConst("y0", 1.0);
+		 fct2.DefineConst("z0", 31.0);*/
+		 /*fct2.SetExpr("0.5*uLB-uLB*0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct2.DefineConst("uLB", uLB);
+		 fct2.DefineConst("x1c", x1c);
+		 fct2.DefineConst("x2c", x2c);
+		 fct2.DefineConst("x3c", x3c);
+		 fct2.DefineConst("radius", radius);
+		 fct2.DefineConst("interfaceThickness", interfaceThickness);*/
+
+
+		 InitDistributionsBlockVisitorThermal initVisitor(densityRatio, interfaceThickness, radius);
+         initVisitor.setPhi(fct1);
+         initVisitor.setRho(fct2);
+         grid->accept(initVisitor);
+
+         //set connectors
+         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         //ConnectorFactoryPtr factory(new Block3DConnectorFactory());
+         //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
+         grid->accept(setConnsVisitor);
+
+         //domain decomposition for threads
+         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
+         grid->accept(pqPartVisitor);
+
+
+
+
+         //boundary conditions grid
+         {
+            UbSchedulerPtr geoSch(new UbScheduler(1));
+            WriteBoundaryConditionsCoProcessorPtr ppgeo(
+               new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
+            ppgeo->process(0);
+            ppgeo.reset();
+         }
+
+         if (myid == 0) UBLOG(logINFO, "Preprocess - end");
+      }
+      else
+      {
+         if (myid == 0)
+         {
+            UBLOG(logINFO, "Parameters:");
+            UBLOG(logINFO, "uLb = " << uLB);
+            UBLOG(logINFO, "rho = " << rhoLB);
+            UBLOG(logINFO, "nuLb = " << nuLB);
+            UBLOG(logINFO, "Re = " << Re);
+            UBLOG(logINFO, "dx = " << dx);
+            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
+            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
+            UBLOG(logINFO, "path = " << pathname);
+         }
+
+         rcp.restart((int)restartStep);
+         grid->setTimeStep(restartStep);
+
+         //BCAdapterPtr velBCAdapter(new VelocityBCAdapter());
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithm()));
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+         //bcVisitor.addBC(velBCAdapter);
+         //grid->accept(bcVisitor);
+
+         //set connectors
+         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         grid->accept(setConnsVisitor);
+
+         if (myid == 0) UBLOG(logINFO, "Restart - end");
+      }
+      UbSchedulerPtr visSch(new UbScheduler(outTime));
+      WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm);
+
+      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
+      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
+
+	  
+	  
+	  
+
+	  
+	  UbSchedulerPtr bcSch(new UbScheduler(1, 12000, 12000));
+	  TimeDependentBCCoProcessorPtr inflowF2 (new TimeDependentBCCoProcessor(grid,bcSch));
+	  //inflowF2->addInteractor(inflowF2_1Int);
+	  //inflowF2->addInteractor(inflowF2_2Int);
+
+      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch,CalculationManager::MPI));
+      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[])
+{
+   //Sleep(30000);
+	if (argv != NULL)
+   {
+      if (argv[1] != NULL)
+      {
+         run(string(argv[1]));
+      }
+      else
+      {
+         cout << "Configuration file is missing!" << endl;
+      }
+   }
+
+}
+
diff --git a/apps/cpu/Multiphase/backup/Multiphase (Tube).cpp b/apps/cpu/Multiphase/backup/Multiphase (Tube).cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5795ec61054dfa359fd4038ce7f8f1f263b6ee71
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/Multiphase (Tube).cpp	
@@ -0,0 +1,404 @@
+#include <iostream>
+#include <string>
+
+#include "VirtualFluids.h"
+
+using namespace std;
+
+
+void run(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");
+      double          uLB = config.getDouble("uLB");
+	  double		  nuL = config.getDouble("nuL");
+	  double		  nuG = config.getDouble("nuG");
+	  double		  densityRatio = config.getDouble("densityRatio");
+	  double		  sigma = config.getDouble("sigma");
+	  int		      interfaceThickness = config.getInt("interfaceThickness");
+	  double		  radius = config.getDouble("radius");
+	  double		  theta = config.getDouble("contactAngle");
+
+
+      double          endTime = config.getDouble("endTime");
+      double          outTime = config.getDouble("outTime");
+      double          availMem = config.getDouble("availMem");
+      int             refineLevel = config.getInt("refineLevel");
+      double          Re = config.getDouble("Re");
+      double          dx = config.getDouble("dx");
+      vector<double>  length = config.getVector<double>("length");
+      bool            logToFile = config.getBool("logToFile");
+      double          restartStep = config.getDouble("restartStep");
+      double          cpStart = config.getValue<double>("cpStart");
+      double          cpStep = config.getValue<double>("cpStep");
+      bool            newStart = config.getValue<bool>("newStart");
+
+      double beta  = 12*sigma/interfaceThickness;
+	  double kappa = 1.5*interfaceThickness*sigma;
+	  
+	  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);
+
+      LBMReal dLB = length[1] / dx;
+      LBMReal rhoLB = 0.0;
+      LBMReal nuLB = (uLB*dLB) / Re;
+
+      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
+
+      const int baseLevel = 0;
+
+ 
+      
+      Grid3DPtr grid(new Grid3D(comm));
+      //grid->setPeriodicX1(true);
+	  //grid->setPeriodicX2(true);
+	  //grid->setPeriodicX3(true);
+      //////////////////////////////////////////////////////////////////////////
+      //restart
+      UbSchedulerPtr rSch(new UbScheduler(cpStep, cpStart));
+      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
+      MPIIORestart1CoProcessor rcp(grid, rSch, pathname, comm);
+      //////////////////////////////////////////////////////////////////////////
+
+      if (newStart)
+      {
+
+         //bounding box
+         /*double g_minX1 = 0.0;
+         double g_minX2 = -length[1] / 2.0;
+         double g_minX3 = -length[2] / 2.0;
+
+         double g_maxX1 = length[0];
+         double g_maxX2 = length[1] / 2.0;
+         double g_maxX3 = length[2] / 2.0;*/
+
+		 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
+
+         GbObject3DPtr cylinder(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+         GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/cylinder", WbWriterVtkXmlBinary::getInstance());
+
+         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());
+
+
+         double blockLength = blocknx[0] * dx;
+
+
+
+         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, "Preprocess - start");
+         }
+
+         grid->setDeltaX(dx);
+         grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
+
+		 grid->setPeriodicX1(false);
+		 grid->setPeriodicX2(false);
+		 grid->setPeriodicX3(false);
+
+         
+
+         GenBlocksGridVisitor genBlocks(gridCube);
+         grid->accept(genBlocks);
+
+         //inflow
+         GbCuboid3DPtr geoInflow(new GbCuboid3D(g_minX1 - 1.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());
+
+
+		 //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());
+
+		 //BC Adapter
+		 //////////////////////////////////////////////////////////////////////////////
+		 BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+		 noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+
+
+		BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+		denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+		
+		 double r = boost::dynamic_pointer_cast<GbCylinder3D>(cylinder)->getRadius();
+		 double cx1 = g_minX1;
+		 double cx2 = cylinder->getX2Centroid();
+		 double cx3 = cylinder->getX3Centroid();
+
+		 mu::Parser fct;
+		 fct.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+		 fct.DefineConst("x2Vmax", 0.0); //x2-Pos fuer vmax
+		 fct.DefineConst("x3Vmax", 0.0); //x3-Pos fuer vmax
+		 fct.DefineConst("R", r);
+		 fct.DefineConst("vx1", uLB);
+		 fct.DefineConst("x0", cx1);
+		 fct.DefineConst("y0", cx2);
+		 fct.DefineConst("z0", cx3);
+		 //fct.DefineConst("nue", nuLB);
+		 //fct.SetExpr("U");
+		 //fct.DefineConst("U", uLB);
+		 //BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		 BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, endTime));
+		 velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+		 
+		 
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+		 //mu::Parser fct;
+		 //fct.SetExpr("U");
+		 //fct.DefineConst("U", uLB);
+		 //BCAdapterPtr velBCAdapter(new VelocityBCAdapter(true, false, false, fct, 0, BCFunction::INFCONST));
+		 //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingVelocityBCAlgorithm()));
+
+
+		 //////////////////////////////////////////////////////////////////////////////////
+		 //BS visitor
+		 BoundaryConditionsBlockVisitorMultiphase bcVisitor;
+		 bcVisitor.addBC(noSlipBCAdapter);
+		 bcVisitor.addBC(denBCAdapter);
+		 bcVisitor.addBC(velBCAdapter);
+
+
+
+         WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
+
+         ppblocks->process(0);
+
+         D3Q27InteractorPtr cylinderInt(new D3Q27Interactor(cylinder, grid, noSlipBCAdapter, Interactor3D::INVERSESOLID));
+
+	     D3Q27InteractorPtr inflowInt = D3Q27InteractorPtr(new D3Q27Interactor(geoInflow, grid, velBCAdapter, Interactor3D::SOLID));
+
+         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(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");
+         }
+
+         LBMKernelPtr kernel;
+
+         kernel = LBMKernelPtr(new MultiphaseCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], MultiphaseCumulantLBMKernel::NORMAL));
+
+         
+         BCProcessorPtr bcProc(new BCProcessor());
+         //BCProcessorPtr bcProc(new ThinWallBCProcessor());
+
+         kernel->setBCProcessor(bcProc);
+
+         SetKernelBlockVisitorMultiphase kernelVisitor(kernel, nuL, nuG, densityRatio, beta, kappa, theta, availMem, needMem);
+         grid->accept(kernelVisitor);
+
+         if (refineLevel > 0)
+         {
+            SetUndefinedNodesBlockVisitor undefNodesVisitor;
+            grid->accept(undefNodesVisitor);
+         }
+
+         intHelper.setBC();
+
+         
+         grid->accept(bcVisitor);
+
+         //initialization of distributions
+		 LBMReal x1c = (length[0]-1)/2;
+		 LBMReal x2c = (length[1]-1)/2;
+		 LBMReal x3c = (length[2]-1)/2;
+		 mu::Parser fct1;
+		 fct1.SetExpr("0.5-0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct1.DefineConst("x1c", x1c);
+		 fct1.DefineConst("x2c", x2c);
+		 fct1.DefineConst("x3c", x3c);
+		 fct1.DefineConst("radius", radius);
+		 fct1.DefineConst("interfaceThickness", interfaceThickness);
+		 
+		 mu::Parser fct2;
+		 fct2.SetExpr("0.5*uLB-uLB*0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct2.DefineConst("uLB", uLB);
+		 fct2.DefineConst("x1c", x1c);
+		 fct2.DefineConst("x2c", x2c);
+		 fct2.DefineConst("x3c", x3c);
+		 fct2.DefineConst("radius", radius);
+		 fct2.DefineConst("interfaceThickness", interfaceThickness);
+
+
+		 InitDistributionsBlockVisitorMultiphase initVisitor(densityRatio, interfaceThickness, radius);
+         initVisitor.setPhi(fct1);
+         //initVisitor.setVx1(fct2);
+         grid->accept(initVisitor);
+
+         //set connectors
+         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         //ConnectorFactoryPtr factory(new Block3DConnectorFactory());
+         //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
+         grid->accept(setConnsVisitor);
+
+         //domain decomposition for threads
+         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
+         grid->accept(pqPartVisitor);
+
+         //boundary conditions grid
+         {
+            UbSchedulerPtr geoSch(new UbScheduler(1));
+            WriteBoundaryConditionsCoProcessorPtr ppgeo(
+               new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
+            ppgeo->process(0);
+            ppgeo.reset();
+         }
+
+         if (myid == 0) UBLOG(logINFO, "Preprocess - end");
+      }
+      else
+      {
+         if (myid == 0)
+         {
+            UBLOG(logINFO, "Parameters:");
+            UBLOG(logINFO, "uLb = " << uLB);
+            UBLOG(logINFO, "rho = " << rhoLB);
+            UBLOG(logINFO, "nuLb = " << nuLB);
+            UBLOG(logINFO, "Re = " << Re);
+            UBLOG(logINFO, "dx = " << dx);
+            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
+            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
+            UBLOG(logINFO, "path = " << pathname);
+         }
+
+         rcp.restart((int)restartStep);
+         grid->setTimeStep(restartStep);
+
+         //BCAdapterPtr velBCAdapter(new VelocityBCAdapter());
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithm()));
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+         //bcVisitor.addBC(velBCAdapter);
+         //grid->accept(bcVisitor);
+
+         //set connectors
+         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         grid->accept(setConnsVisitor);
+
+         if (myid == 0) UBLOG(logINFO, "Restart - end");
+      }
+      UbSchedulerPtr visSch(new UbScheduler(outTime));
+      WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm);
+
+      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
+      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
+
+      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch,CalculationManager::MPI));
+      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[])
+{
+   //Sleep(30000);
+	if (argv != NULL)
+   {
+      if (argv[1] != NULL)
+      {
+         run(string(argv[1]));
+      }
+      else
+      {
+         cout << "Configuration file is missing!" << endl;
+      }
+   }
+
+}
+
diff --git a/apps/cpu/Multiphase/backup/Multiphase - Cfg_file (The last).txt b/apps/cpu/Multiphase/backup/Multiphase - Cfg_file (The last).txt
new file mode 100644
index 0000000000000000000000000000000000000000..f0d6104808996b53dbd9ab63d9f761ba1ec70df4
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/Multiphase - Cfg_file (The last).txt	
@@ -0,0 +1,72 @@
+pathname = d:/temp/Multiphase
+pathGeo = d:/Hesam/VirtualFluids/source/Applications/Multiphase
+geoFile = FlowFocusingS2_Small.ast
+#geoFile = T-Junction.ast
+numOfThreads = 4
+availMem = 10e9
+
+#Grid
+#length = 50 50 50
+#length = 21 6 13
+#boundingBox = x1min x1max x2min x2max x3min x3max [mm]
+#boundingBox = 0.5 219.5 -30 30 -30 30
+#boundingBox = -1 121 -30 30 -30 30
+#boundingBox = -32 128 -12 14 3 58   (FlowFocusingSS , FlowFocusingS) (X1 extendable until 128)
+#blocknx = 10 13 11
+#boundingBox = 0.5 165.5 -17.5 17.5 -29.5 30.5   (FlowFocusing)
+#blocknx = 11 7 10
+#boundingBox = -32 128 -12 14 -27 88 (FlowFocusingSL)
+#blocknx = 10 13 5
+#boundingBox = 1 179 -21 21 -21 59 (T-Junction)
+#blocknx = 8 7 8
+#boundingBox = -23 79 0 26 3 59 (FlowFocusingSq0-1)
+#blocknx = 6 13 7
+#boundingBox = -23 179 0 26 3 59 (FlowFocusingSq2)
+#blocknx = 6 13 7
+#boundingBox = -24 181 0 18 1 101 (FlowFocusingS2)
+#blocknx = 5 9 10
+
+boundingBox = -24.5 180.5 2.5 4.5 1.5 64.5 (FlowFocusingS2_Small)
+blocknx = 5 2 9
+
+#boundingBox = 0.5 50.5 0.5 50.5 0.5 50.5 (Droplet test)
+#blocknx = 10 10 10
+dx = 1.0
+refineLevel = 0
+
+#Simulation
+uLB = 0.001
+uF2 = 0.001
+Re = 10
+#nuL = 3.3e-3
+nuL = 1.0e-2
+nuG = 1.36e-2
+#nuL = 0.16666
+#nuG = 0.16666
+densityRatio = 1.0495
+#densityRatio = 10.0
+sigma = 7.4e-4
+interfaceThickness = 3
+#radius = 10.0  (Droplet test)
+#radius = -20.0   (FlowFocusingSS , FlowFocusingS)
+radius = -5.0   (FlowFocusingSq)
+#radius = 10.0   (FlowFocusing)
+#radius = 20.0   (T-Junction)
+contactAngle = 120.0
+gravity = 1.34e-5
+phi_L = 1.0
+phi_H = 0.0
+Phase-field Relaxation = 1.0
+Mobility = 0.05
+
+
+logToFile = false
+
+newStart = true
+restartStep = 100000
+
+cpStart = 100000
+cpStep = 100000
+
+outTime = 200
+endTime = 20000000
\ No newline at end of file
diff --git a/apps/cpu/Multiphase/backup/Multiphase.cfg b/apps/cpu/Multiphase/backup/Multiphase.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..3f19b6657a380c706a534577eab5cecdbe4fe637
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/Multiphase.cfg
@@ -0,0 +1,115 @@
+pathname = d:/temp/Multiphase
+pathGeo = d:/Hesam/VirtualFluids/source/Applications/Multiphase
+geoFile = JetBreakup2.ast
+#geoFile = T-Junction.ast
+numOfThreads = 4
+availMem = 10e9
+
+#Grid
+#length = 50 50 50
+#length = 21 6 13
+#boundingBox = x1min x1max x2min x2max x3min x3max [mm]
+#boundingBox = 0.5 219.5 -30 30 -30 30
+#boundingBox = -1 121 -30 30 -30 30
+#boundingBox = -32 128 -12 14 3 58   (FlowFocusingSS , FlowFocusingS) (X1 extendable until 128)
+#blocknx = 10 13 11
+#boundingBox = 0.5 165.5 -17.5 17.5 -29.5 30.5   (FlowFocusing)
+#blocknx = 11 7 10
+#boundingBox = -32 128 -12 14 -27 88 (FlowFocusingSL)
+#blocknx = 10 13 5
+#boundingBox = 1 179 -21 21 -21 59 (T-Junction)
+#blocknx = 8 7 8
+#boundingBox = -23 79 0 26 3 59 (FlowFocusingSq0-1)
+#blocknx = 6 13 7
+#boundingBox = -23 179 0 26 3 59 (FlowFocusingSq2)
+#blocknx = 6 13 7
+#boundingBox = -24 181 0 18 1 101 (FlowFocusingS2)
+#blocknx = 5 9 10
+
+#boundingBox = -24.5 180.5 2.5 4.5 1.5 64.5 (FlowFocusingS2_Small) (Periodic X2)
+#blocknx = 5 2 9
+
+
+#boundingBox = -24.5 180.5 -1.5 11.5 1.5 64.5 (FlowFocusingS2_Small) (Original was 180.5)
+#blocknx = 5 6 9
+
+#boundingBox = -1.0 121.0 580.0 629.0 -1.0 121.0 (Jet Breakup) (Original)
+#boundingBox = -50.0 50.0 -10.0 -60.0 -25.0 25.0 (Jet Breakup2) (Original)
+
+
+
+#boundingBox = 0.5 50.5 0.5 50.5 0.5 50.5 (Droplet test)
+#blocknx = 10 10 10
+
+
+
+# Grid
+
+boundingBox = 0.5 50.5 0.5 50.5 0.5 50.5 (Jet Breakup2) (Original)
+#blocknx = 50 50 50
+blocknx = 10 10 10
+dx = 1.0
+refineLevel = 0
+
+# Boundary Condition
+# Boundary type tags:  1: no-slip    2:velocity    3:outflow     4: slip        
+
+isEastBoundary = false
+isWestBoundary = false
+isNorthBoundary = false
+isSouthBoundary = false
+isTopBoundary = false
+isBottomBoundary = false
+
+eastBoundaryType = 4
+westBoundaryType = 4
+northBoundaryType = 4
+southBoundaryType = 4
+topBoundaryType = 0
+bottomBoundaryType = 0
+
+isPeriodicX1 = true
+isPeriodicX2 = true
+isPeriodicX3 = true
+
+
+
+
+# Initial profiles
+isInitialVelocity = false
+phaseFieldProfile = 0.5*(phiH + phiL) + 0.5*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)
+velocityProfile = 0.5*uLB*(phiH + phiL) - 0.5*uLB*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)
+
+
+#Simulation
+uLB = 0.05
+uF2 = 0.0025
+Re = 10
+#nuL = 1.0e-1
+#nuG = 1.04e-1
+nuL = 1.160e-2
+nuG = 1.16e-1
+densityRatio = 813
+sigma = 1.56e-1
+interfaceThickness = 5
+radius = 10.0  (Droplet test)
+#radius = -5.0   (FlowFocusing2D)
+#radius = 615.0   (Jet Breakup)
+contactAngle = 120.0
+gravity = 0.0
+phi_L = 0.0
+phi_H = 1.0
+Phase-field Relaxation = 0.55
+Mobility = 0.02
+
+
+logToFile = false
+
+newStart = true
+restartStep = 100000
+
+cpStart = 100000
+cpStep = 100000
+
+outTime = 100
+endTime = 200000
\ No newline at end of file
diff --git a/apps/cpu/Multiphase/backup/Multiphase.cpp b/apps/cpu/Multiphase/backup/Multiphase.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..eae4ab93de060157422f29ae9984078e298194d4
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/Multiphase.cpp
@@ -0,0 +1,755 @@
+#include <iostream>
+#include <string>
+
+#include "VirtualFluids.h"
+
+using namespace std;
+
+
+void run(string configname)
+{
+   try
+   {
+      ConfigurationFile   config;
+      config.load(configname);
+
+      string          pathname = config.getString("pathname");
+	  string		  pathGeo = config.getString("pathGeo");
+	  string		  geoFile = config.getString("geoFile");
+      int             numOfThreads = config.getInt("numOfThreads");
+      vector<int>     blocknx = config.getVector<int>("blocknx");
+	  vector<double>  boundingBox = config.getVector<double>("boundingBox");
+      //vector<double>  length = config.getVector<double>("length");
+	  double          uLB = config.getDouble("uLB");
+	  double          uF2 = config.getDouble("uF2");
+	  double		  nuL = config.getDouble("nuL");
+	  double		  nuG = config.getDouble("nuG");
+	  double		  densityRatio = config.getDouble("densityRatio");
+	  double		  sigma = config.getDouble("sigma");
+	  int		      interfaceThickness = config.getInt("interfaceThickness");
+	  double		  radius = config.getDouble("radius");
+	  double		  theta = config.getDouble("contactAngle");
+	  double		  gr = config.getDouble("gravity");
+	  double		  phiL = config.getDouble("phi_L");
+	  double		  phiH = config.getDouble("phi_H");
+	  double		  tauH = config.getDouble("Phase-field Relaxation");
+	  double		  mob = config.getDouble("Mobility");
+
+
+      double          endTime = config.getDouble("endTime");
+      double          outTime = config.getDouble("outTime");
+      double          availMem = config.getDouble("availMem");
+      int             refineLevel = config.getInt("refineLevel");
+      double          Re = config.getDouble("Re");
+      double          dx = config.getDouble("dx");
+      bool            logToFile = config.getBool("logToFile");
+      double          restartStep = config.getDouble("restartStep");
+      double          cpStart = config.getValue<double>("cpStart");
+      double          cpStep = config.getValue<double>("cpStep");
+      bool            newStart = config.getValue<bool>("newStart");
+
+
+	  bool            isEastBoundary   = config.getValue<bool>("isEastBoundary");
+	  bool            isWestBoundary   = config.getValue<bool>("isWestBoundary");
+	  bool            isNorthBoundary  = config.getValue<bool>("isNorthBoundary");
+	  bool            isSouthBoundary  = config.getValue<bool>("isSouthBoundary");
+	  bool            isTopBoundary    = config.getValue<bool>("isTopBoundary");
+	  bool            isBottomBoundary = config.getValue<bool>("isBottomBoundary");
+	  bool            isPeriodicX1     = config.getValue<bool>("isPeriodicX1");
+	  bool            isPeriodicX2     = config.getValue<bool>("isPeriodicX2");
+	  bool            isPeriodicX3     = config.getValue<bool>("isPeriodicX3");
+	  
+	  int             eastBoundaryType   = config.getInt("eastBoundaryType");
+	  int             westBoundaryType   = config.getInt("westBoundaryType");
+	  int             northBoundaryType  = config.getInt("northBoundaryType");
+	  int             southBoundaryType  = config.getInt("southBoundaryType");
+	  int             topBoundaryType    = config.getInt("topBoundaryType");
+	  int             bottomBoundaryType = config.getInt("bottomBoundaryType");
+
+	  bool            isInitialVelocity     = config.getValue<bool>("isInitialVelocity");
+	  string          phaseFieldProfile = config.getString("phaseFieldProfile");
+	  string          velocityProfile = config.getString("velocityProfile");
+
+	  double          p_in = config.getDouble("p_in");
+	  double          p_out = config.getDouble("p_out");
+
+
+
+      double beta  = 12*sigma/interfaceThickness;
+	  double kappa = 1.5*interfaceThickness*sigma;
+	  
+	  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);
+
+      LBMReal dLB; // = length[1] / dx;
+      LBMReal rhoLB = 0.0;
+      LBMReal nuLB = nuL; //(uLB*dLB) / Re;
+
+      LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
+
+      const int baseLevel = 0;
+
+ 
+      
+      Grid3DPtr grid(new Grid3D(comm));
+      //grid->setPeriodicX1(true);
+	  //grid->setPeriodicX2(true);
+	  //grid->setPeriodicX3(true);
+      //////////////////////////////////////////////////////////////////////////
+      //restart
+      UbSchedulerPtr rSch(new UbScheduler(cpStep, cpStart));
+      //RestartCoProcessor rp(grid, rSch, comm, pathname, RestartCoProcessor::TXT);
+      MPIIORestart1CoProcessor rcp(grid, rSch, pathname, comm);
+      //////////////////////////////////////////////////////////////////////////
+	  
+
+	  
+      
+	  
+	  mu::Parser fctF1;
+	  //fctF1.SetExpr("vy1*(1-((x1-x0)^2+(x3-z0)^2)/(R^2))");
+	  fctF1.SetExpr("vy1");
+	  fctF1.DefineConst("vy1", -uLB);
+	  fctF1.DefineConst("R", 7.5);
+	  fctF1.DefineConst("x0", 60.0);
+	  fctF1.DefineConst("z0", 60.0);
+	  
+
+	  if (newStart)
+      {
+
+         //bounding box
+         /*double g_minX1 = 0.0;
+         double g_minX2 = -length[1] / 2.0;
+         double g_minX3 = -length[2] / 2.0;
+
+         double g_maxX1 = length[0];
+         double g_maxX2 = length[1] / 2.0;
+         double g_maxX3 = length[2] / 2.0;*/
+
+		 double g_minX1 = boundingBox[0];
+		 double g_minX2 = boundingBox[2];
+		 double g_minX3 = boundingBox[4];
+
+		 double g_maxX1 = boundingBox[1];
+		 double g_maxX2 = boundingBox[3];
+		 double g_maxX3 = boundingBox[5];
+
+         //geometry
+
+         //GbObject3DPtr innerCube(new GbCuboid3D(g_minX1+2, g_minX2+2, g_minX3+2, g_maxX1-2, g_maxX2-2, g_maxX3-2));
+
+		 //GbObject3DPtr cylinder1(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, radius));
+		 //GbObject3DPtr cylinder2(new GbCylinder3D(g_minX1 + 12.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+		 
+		 //GbObject3DPtr cylinder(new GbCylinder3D(g_minX1 - 2.0*dx, g_maxX2/2, g_maxX3/2, g_maxX1 + 2.0*dx, g_maxX2/2, g_maxX3/2, dLB / 2.0));
+		 //GbObject3DPtr cylinders(new GbObject3DManager());
+		 //GbObject3DPtr cylinders1(new GbObjectGroup3D());
+		 
+
+		 
+		 
+		 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());
+
+		 //GbTriFaceMesh3DPtr cylinder;
+		 //if (myid==0) UBLOG(logINFO, "Read geoFile:start");
+		 //cylinder = GbTriFaceMesh3DPtr(GbTriFaceMesh3DCreator::getInstance()->readMeshFromSTLFile(pathGeo+"/"+geoFile, "geoCylinders", GbTriFaceMesh3D::KDTREE_SAHPLIT));
+		 //GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/Stlgeo", WbWriterVtkXmlBinary::getInstance());
+		 
+		 /*GbObject3DPtr cylinder(new GbCuboid3D(g_minX1 + 2.0, g_minX2 + 2.0, g_minX3 + 2.0, g_maxX1 - 2.0, g_maxX2 - 2.0, g_maxX3 -2.0));
+		 if (myid == 0) GbSystem3D::writeGeoObject(cylinder.get(), pathname + "/geo/solidWall", WbWriterVtkXmlBinary::getInstance());*/
+
+		 
+		 double blockLength = blocknx[0] * dx;
+
+
+
+
+		 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, "Preprocess - start");
+		 }
+
+		 grid->setDeltaX(dx);
+		 grid->setBlockNX(blocknx[0], blocknx[1], blocknx[2]);
+
+		 grid->setPeriodicX1(isPeriodicX1);
+		 grid->setPeriodicX2(isPeriodicX2);
+		 grid->setPeriodicX3(isPeriodicX3);
+
+
+
+		 GenBlocksGridVisitor genBlocks(gridCube);
+		 grid->accept(genBlocks);
+
+		 WriteBlocksCoProcessorPtr ppblocks(new WriteBlocksCoProcessor(grid, UbSchedulerPtr(new UbScheduler(1)), pathname, WbWriterVtkXmlBinary::getInstance(), comm));
+
+		 ppblocks->process(0);
+
+		 BoundaryConditionsBlockVisitorMultiphase bcVisitor;
+		 
+		 Grid3DVisitorPtr metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW));
+		 InteractorsHelper intHelper(grid, metisVisitor);
+
+
+		 
+		 		 
+		 
+		 if (isEastBoundary)
+		 {
+			 GbCuboid3DPtr geoEastBoundary(new GbCuboid3D(g_maxX1 + 1.0*dx, g_minX2 - 1.0*dx, g_minX3 - 1.0*dx, g_maxX1 - 1.0*dx, g_maxX2 + 1.0*dx, g_maxX3 + 1.0*dx));
+			 if (myid==0) GbSystem3D::writeGeoObject(geoEastBoundary.get(), pathname+"/geo/geoEastBoundary", WbWriterVtkXmlASCII::getInstance());
+			 
+			 if (eastBoundaryType == 1)
+			 {
+				 BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+				 noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(noSlipBCAdapter);
+				 D3Q27InteractorPtr eastBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoEastBoundary, grid, noSlipBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(eastBoundaryInt);
+
+			 }
+
+			 if (eastBoundaryType == 4)
+			 {
+				 BCAdapterPtr slipBCAdapter(new SlipBCAdapter());
+				 slipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new SlipBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(slipBCAdapter);
+				 D3Q27InteractorPtr eastBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoEastBoundary, grid, slipBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(eastBoundaryInt);
+			 }
+
+			 if (eastBoundaryType == 2)
+			 {
+				 BCAdapterPtr velBCAdapter (new VelocityBCAdapterMultiphase(true, false, false, fctF1  , phiH, 0.0, endTime));
+				 velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(velBCAdapter);
+				 D3Q27InteractorPtr eastBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoEastBoundary, grid, velBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(eastBoundaryInt);
+			 }
+
+			 if (eastBoundaryType == 3)
+			 {
+				 BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+				 denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(denBCAdapter);
+				 D3Q27InteractorPtr eastBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoEastBoundary, grid, denBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(eastBoundaryInt);
+			 }
+			 if (eastBoundaryType == 5)
+			 {
+				 BCAdapterPtr denBCAdapter(new DensityBCAdapter(p_out));
+				 denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new EqDensityBCAlgorithm()));
+				 bcVisitor.addBC(denBCAdapter);
+				 D3Q27InteractorPtr eastBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoEastBoundary, grid, denBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(eastBoundaryInt);
+			 }
+			
+		 }
+
+		 
+		 if (isWestBoundary)
+		 {
+			 GbCuboid3DPtr geoWestBoundary(new GbCuboid3D(g_minX1 + 1.0*dx, g_minX2 - 1.0*dx, g_minX3 - 1.0*dx, g_minX1 - 1.0*dx, g_maxX2 + 1.0*dx, g_maxX3 + 1.0*dx));
+			 if (myid==0) GbSystem3D::writeGeoObject(geoWestBoundary.get(), pathname+"/geo/geoWestBoundary", WbWriterVtkXmlASCII::getInstance());
+
+			 if (westBoundaryType == 1)
+			 {
+				 BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+				 noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(noSlipBCAdapter);
+				 D3Q27InteractorPtr westBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoWestBoundary, grid, noSlipBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(westBoundaryInt);
+
+			 }
+
+			 if (westBoundaryType == 4)
+			 {
+				 BCAdapterPtr slipBCAdapter(new SlipBCAdapter());
+				 slipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new SlipBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(slipBCAdapter);
+				 D3Q27InteractorPtr westBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoWestBoundary, grid, slipBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(westBoundaryInt);
+			 }
+
+			 if (westBoundaryType == 2)
+			 {
+				 BCAdapterPtr velBCAdapter (new VelocityBCAdapterMultiphase(true, false, false, fctF1  , phiH, 0.0, endTime));
+				 velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(velBCAdapter);
+				 D3Q27InteractorPtr westBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoWestBoundary, grid, velBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(westBoundaryInt);
+			 }
+
+			 if (westBoundaryType == 3)
+			 {
+				 BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+				 denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(denBCAdapter);
+				 D3Q27InteractorPtr westBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoWestBoundary, grid, denBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(westBoundaryInt);
+			 }
+			 if (westBoundaryType == 5)
+			 {
+				 BCAdapterPtr denBCAdapter(new DensityBCAdapter(p_in));
+				 denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new EqDensityBCAlgorithm()));
+				 bcVisitor.addBC(denBCAdapter);
+				 D3Q27InteractorPtr westBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoWestBoundary, grid, denBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(westBoundaryInt);
+			 }
+
+		 }		 
+
+		 
+		 if (isNorthBoundary)
+		 {
+			 GbCuboid3DPtr geoNorthBoundary(new GbCuboid3D(g_minX1 - 1.0*dx, g_maxX2 + 1.0*dx, g_minX3 + 1.0*dx, g_maxX1 + 1.0*dx, g_minX2 - 1.0*dx, g_minX3 - 1.0*dx));
+			 if (myid==0) GbSystem3D::writeGeoObject(geoNorthBoundary.get(), pathname+"/geo/geoNorthBoundary", WbWriterVtkXmlASCII::getInstance());
+
+			 if (northBoundaryType == 1)
+			 {
+				 BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+				 noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(noSlipBCAdapter);
+				 D3Q27InteractorPtr northBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoNorthBoundary, grid, noSlipBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(northBoundaryInt);
+
+			 }
+
+			 if (northBoundaryType == 4)
+			 {
+				 BCAdapterPtr slipBCAdapter(new SlipBCAdapter());
+				 slipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new SlipBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(slipBCAdapter);
+				 D3Q27InteractorPtr northBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoNorthBoundary, grid, slipBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(northBoundaryInt);
+			 }
+
+			 if (northBoundaryType == 2)
+			 {
+				 BCAdapterPtr velBCAdapter (new VelocityBCAdapterMultiphase(true, false, false, fctF1  , phiH, 0.0, endTime));
+				 velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(velBCAdapter);
+				 D3Q27InteractorPtr northBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoNorthBoundary, grid, velBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(northBoundaryInt);
+			 }
+
+			 if (northBoundaryType == 3)
+			 {
+				 BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+				 denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(denBCAdapter);
+				 D3Q27InteractorPtr northBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoNorthBoundary, grid, denBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(northBoundaryInt);
+			 }
+
+		 }			 
+		 
+		 
+		 if (isSouthBoundary)
+		 {
+			 GbCuboid3DPtr geoSouthBoundary(new GbCuboid3D(g_minX1 - 1.0*dx, g_maxX2 + 1.0*dx, g_maxX3 + 1.0*dx, g_maxX1 + 1.0*dx, g_minX2 - 1.0*dx, g_maxX3 - 1.0*dx));
+			 if (myid==0) GbSystem3D::writeGeoObject(geoSouthBoundary.get(), pathname+"/geo/geoSouthBoundary", WbWriterVtkXmlASCII::getInstance());
+
+			 if (southBoundaryType == 1)
+			 {
+				 BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+				 noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(noSlipBCAdapter);
+				 D3Q27InteractorPtr southBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoSouthBoundary, grid, noSlipBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(southBoundaryInt);
+
+			 }
+
+			 if (southBoundaryType == 4)
+			 {
+				 BCAdapterPtr slipBCAdapter(new SlipBCAdapter());
+				 slipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new SlipBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(slipBCAdapter);
+				 D3Q27InteractorPtr southBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoSouthBoundary, grid, slipBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(southBoundaryInt);
+			 }
+
+			 if (southBoundaryType == 2)
+			 {
+				 BCAdapterPtr velBCAdapter (new VelocityBCAdapterMultiphase(true, false, false, fctF1  , phiH, 0.0, endTime));
+				 velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(velBCAdapter);
+				 D3Q27InteractorPtr southBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoSouthBoundary, grid, velBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(southBoundaryInt);
+			 }
+
+			 if (southBoundaryType == 3)
+			 {
+				 BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+				 denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(denBCAdapter);
+				 D3Q27InteractorPtr southBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoSouthBoundary, grid, denBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(southBoundaryInt);
+			 }
+
+		 }
+
+
+
+
+		 if (isTopBoundary)
+		 {
+			 GbCuboid3DPtr geoTopBoundary(new GbCuboid3D(g_minX1 - 1.0*dx, g_maxX2 + 1.0*dx, g_minX3 - 1.0*dx, g_maxX1 + 1.0*dx, g_maxX2 - 1.0*dx, g_maxX3 + 1.0*dx));
+			 if (myid==0) GbSystem3D::writeGeoObject(geoTopBoundary.get(), pathname+"/geo/geoTopBoundary", WbWriterVtkXmlASCII::getInstance());
+
+			 if (topBoundaryType == 1)
+			 {
+				 BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+				 noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(noSlipBCAdapter);
+				 D3Q27InteractorPtr topBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoTopBoundary, grid, noSlipBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(topBoundaryInt);
+
+			 }
+
+			 if (topBoundaryType == 4)
+			 {
+				 BCAdapterPtr slipBCAdapter(new SlipBCAdapter());
+				 slipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new SlipBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(slipBCAdapter);
+				 D3Q27InteractorPtr topBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoTopBoundary, grid, slipBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(topBoundaryInt);
+			 }
+
+			 if (topBoundaryType == 2)
+			 {
+				 BCAdapterPtr velBCAdapter (new VelocityBCAdapterMultiphase(true, false, false, fctF1  , phiH, 0.0, endTime));
+				 velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(velBCAdapter);
+				 D3Q27InteractorPtr topBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoTopBoundary, grid, velBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(topBoundaryInt);
+			 }
+
+			 if (topBoundaryType == 3)
+			 {
+				 BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+				 denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(denBCAdapter);
+				 D3Q27InteractorPtr topBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoTopBoundary, grid, denBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(topBoundaryInt);
+			 }
+
+		 }			 
+
+
+		 if (isBottomBoundary)
+		 {
+			 GbCuboid3DPtr geoBottomBoundary(new GbCuboid3D(g_minX1 - 1.0*dx, g_minX2 + 1.0*dx, g_minX3 - 1.0*dx, g_maxX1 + 1.0*dx, g_minX2 - 1.0*dx, g_maxX3 + 1.0*dx));
+			 if (myid==0) GbSystem3D::writeGeoObject(geoBottomBoundary.get(), pathname+"/geo/geoBottomBoundary", WbWriterVtkXmlASCII::getInstance());
+
+			 if (bottomBoundaryType == 1)
+			 {
+				 BCAdapterPtr noSlipBCAdapter(new NoSlipBCAdapter());
+				 noSlipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NoSlipBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(noSlipBCAdapter);
+				 D3Q27InteractorPtr bottomBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoBottomBoundary, grid, noSlipBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(bottomBoundaryInt);
+
+			 }
+
+			 if (bottomBoundaryType == 4)
+			 {
+				 BCAdapterPtr slipBCAdapter(new SlipBCAdapter());
+				 slipBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new SlipBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(slipBCAdapter);
+				 D3Q27InteractorPtr bottomBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoBottomBoundary, grid, slipBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(bottomBoundaryInt);
+			 }
+
+			 if (bottomBoundaryType == 2)
+			 {
+				 BCAdapterPtr velBCAdapter (new VelocityBCAdapterMultiphase(true, false, false, fctF1  , phiH, 0.0, endTime));
+				 velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(velBCAdapter);
+				 D3Q27InteractorPtr bottomBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoBottomBoundary, grid, velBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(bottomBoundaryInt);
+			 }
+
+			 if (bottomBoundaryType == 3)
+			 {
+				 BCAdapterPtr denBCAdapter(new DensityBCAdapter(rhoLB));
+				 denBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new NonReflectingOutflowBCAlgorithmMultiphase()));
+				 bcVisitor.addBC(denBCAdapter);
+				 D3Q27InteractorPtr bottomBoundaryInt = D3Q27InteractorPtr(new D3Q27Interactor(geoBottomBoundary, grid, denBCAdapter, Interactor3D::SOLID));
+				 intHelper.addInteractor(bottomBoundaryInt);
+			 }
+
+		 }
+
+
+
+
+
+         
+
+
+
+         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");
+         }
+
+         LBMKernelPtr kernel;
+
+         kernel = LBMKernelPtr(new MultiphaseCumulantLBMKernel(blocknx[0], blocknx[1], blocknx[2], MultiphaseCumulantLBMKernel::NORMAL));
+
+         kernel->setWithForcing(true);
+		 kernel->setForcingX1(0.0);
+		 kernel->setForcingX2(gr);
+		 kernel->setForcingX3(0.0);
+
+		 kernel->setPhiL(phiL);
+		 kernel->setPhiH(phiH);
+		 kernel->setPhaseFieldRelaxation(tauH);
+		 kernel->setMobility(mob);
+
+         BCProcessorPtr bcProc(new BCProcessor());
+         //BCProcessorPtr bcProc(new ThinWallBCProcessor());
+
+         kernel->setBCProcessor(bcProc);
+
+         SetKernelBlockVisitorMultiphase kernelVisitor(kernel, nuL, nuG, densityRatio, beta, kappa, theta, availMem, needMem);
+         
+		 grid->accept(kernelVisitor);
+
+         if (refineLevel > 0)
+         {
+            SetUndefinedNodesBlockVisitor undefNodesVisitor;
+            grid->accept(undefNodesVisitor);
+         }
+
+		 //inflowF2_1Int->initInteractor();
+		 //inflowF2_2Int->initInteractor();
+
+         intHelper.setBC();
+		 
+        
+         grid->accept(bcVisitor);
+
+         //initialization of distributions
+		 LBMReal x1c =  (g_maxX1+g_minX1)/2; //radius; //g_minX1; //radius; //19; //(g_maxX1+g_minX1)/2;
+		 LBMReal x2c = (g_maxX2+g_minX2)/2; //g_minX2 + 2;
+		 LBMReal x3c = (g_maxX3+g_minX3)/2;
+		 mu::Parser fct1;
+		 
+		 //fct1.SetExpr("0.5-0.5*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 //fct1.SetExpr("phiM-phiM*tanh((sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/(interfaceThickness*phiM))");
+		 
+		 //fct1.SetExpr("0.5*(phiH + phiL) - 0.5*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct1.SetExpr(phaseFieldProfile);
+		 
+		 //fct1.SetExpr("0.5*(phiH + phiL) + 0.5*(phiH - phiL)*tanh(2*((x2-radius))/interfaceThickness)");
+		 //fct1.SetExpr("phiL");
+		 fct1.DefineConst("x1c", x1c);
+		 fct1.DefineConst("x2c", x2c);
+		 fct1.DefineConst("x3c", x3c);
+		 fct1.DefineConst("phiL", phiL);
+		 fct1.DefineConst("phiH", phiH);
+		 fct1.DefineConst("radius", radius);
+		 fct1.DefineConst("interfaceThickness", interfaceThickness);
+		 
+		 mu::Parser fct2;
+		 //fct2.SetExpr("vx1*(1-((x2-y0)^2+(x3-z0)^2)/(R^2))");
+		 /*fct2.SetExpr("vx1");
+		 fct2.DefineConst("R", 10.0);
+		 fct2.DefineConst("vx1", uLB);
+		 fct2.DefineConst("y0", 1.0);
+		 fct2.DefineConst("z0", 31.0);*/
+		 //fct2.SetExpr("0.5*uLB*(phiH + phiL) - 0.5*uLB*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct2.SetExpr(velocityProfile);
+		 fct2.DefineConst("uLB", uLB);
+		 fct2.DefineConst("x1c", x1c);
+		 fct2.DefineConst("x2c", x2c);
+		 fct2.DefineConst("x3c", x3c);
+		 fct2.DefineConst("phiL", phiL);
+		 fct2.DefineConst("phiH", phiH);
+		 fct2.DefineConst("radius", radius);
+		 fct2.DefineConst("interfaceThickness", interfaceThickness);
+
+
+		 mu::Parser fct3;
+		 fct3.SetExpr("0.5*sigma*(phiH + phiL)/radius - 0.5*sigma/radius*(phiH - phiL)*tanh(2*(sqrt((x1-x1c)^2+(x2-x2c)^2+(x3-x3c)^2)-radius)/interfaceThickness)");
+		 fct3.DefineConst("sigma", sigma);
+		 fct3.DefineConst("x1c", x1c);
+		 fct3.DefineConst("x2c", x2c);
+		 fct3.DefineConst("x3c", x3c);
+		 fct3.DefineConst("phiL", phiL);
+		 fct3.DefineConst("phiH", phiH);
+		 fct3.DefineConst("radius", radius);
+		 fct3.DefineConst("interfaceThickness", interfaceThickness);
+
+		 InitDistributionsBlockVisitorMultiphase initVisitor(densityRatio, interfaceThickness, radius);
+         initVisitor.setPhi(fct1);
+		 if (isInitialVelocity) initVisitor.setVx1(fct2);
+		 //initVisitor.setRho(fct3);
+         grid->accept(initVisitor);
+
+         //set connectors
+         InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         //InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         //ConnectorFactoryPtr factory(new Block3DConnectorFactory());
+         //ConnectorBlockVisitor setConnsVisitor(comm, nuLB, iProcessor, factory);
+         grid->accept(setConnsVisitor);
+
+         //domain decomposition for threads
+         PQueuePartitioningGridVisitor pqPartVisitor(numOfThreads);
+         grid->accept(pqPartVisitor);
+
+
+
+
+         //boundary conditions grid
+         {
+            UbSchedulerPtr geoSch(new UbScheduler(1));
+            WriteBoundaryConditionsCoProcessorPtr ppgeo(
+               new WriteBoundaryConditionsCoProcessor(grid, geoSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm));
+            ppgeo->process(0);
+            ppgeo.reset();
+         }
+
+         if (myid == 0) UBLOG(logINFO, "Preprocess - end");
+      }
+      else
+      {
+         if (myid == 0)
+         {
+            UBLOG(logINFO, "Parameters:");
+            UBLOG(logINFO, "uLb = " << uLB);
+            UBLOG(logINFO, "rho = " << rhoLB);
+            UBLOG(logINFO, "nuLb = " << nuLB);
+            UBLOG(logINFO, "Re = " << Re);
+            UBLOG(logINFO, "dx = " << dx);
+            UBLOG(logINFO, "number of levels = " << refineLevel + 1);
+            UBLOG(logINFO, "numOfThreads = " << numOfThreads);
+            UBLOG(logINFO, "path = " << pathname);
+         }
+
+         rcp.restart((int)restartStep);
+         grid->setTimeStep(restartStep);
+
+         //BCAdapterPtr velBCAdapter(new VelocityBCAdapter());
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityBCAlgorithm()));
+         //velBCAdapter->setBcAlgorithm(BCAlgorithmPtr(new VelocityWithDensityBCAlgorithm()));
+         //bcVisitor.addBC(velBCAdapter);
+         //grid->accept(bcVisitor);
+
+         //set connectors
+         //InterpolationProcessorPtr iProcessor(new IncompressibleOffsetInterpolationProcessor());
+         InterpolationProcessorPtr iProcessor(new CompressibleOffsetInterpolationProcessor());
+         SetConnectorsBlockVisitor setConnsVisitor(comm, true, D3Q27System::ENDDIR, nuLB, iProcessor);
+         grid->accept(setConnsVisitor);
+
+         if (myid == 0) UBLOG(logINFO, "Restart - end");
+      }
+      UbSchedulerPtr visSch(new UbScheduler(outTime));
+      WriteMacroscopicQuantitiesCoProcessor pp(grid, visSch, pathname, WbWriterVtkXmlASCII::getInstance(), conv, comm);
+
+      UbSchedulerPtr nupsSch(new UbScheduler(10, 30, 100));
+      NUPSCounterCoProcessor npr(grid, nupsSch, numOfThreads, comm);
+
+	  
+	  
+	  
+
+	  
+	  //UbSchedulerPtr bcSch(new UbScheduler(1, 12000, 12000));
+	  //TimeDependentBCCoProcessorPtr inflowF2 (new TimeDependentBCCoProcessor(grid,bcSch));
+	  //inflowF2->addInteractor(inflowF2_1Int);
+	  //inflowF2->addInteractor(inflowF2_2Int);
+
+      //CalculationManagerPtr calculation(new CalculationManager(grid, numOfThreads, endTime, visSch,CalculationManager::MPI));
+      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[])
+{
+   //Sleep(30000);
+	if (argv != NULL)
+   {
+      if (argv[1] != NULL)
+      {
+         run(string(argv[1]));
+      }
+      else
+      {
+         cout << "Configuration file is missing!" << endl;
+      }
+   }
+
+}
+
diff --git a/apps/cpu/Multiphase/backup/MultiphaseCumulantLBMKernel (New VBased).cpp b/apps/cpu/Multiphase/backup/MultiphaseCumulantLBMKernel (New VBased).cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1cdf5905cbac12297fc3ab9c759cda726673c508
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/MultiphaseCumulantLBMKernel (New VBased).cpp	
@@ -0,0 +1,1258 @@
+#include "MultiphaseCumulantLBMKernel.h"
+#include "D3Q27System.h"
+#include "InterpolationProcessor.h"
+#include "D3Q27EsoTwist3DSplittedVector.h"
+#include <math.h>
+#include <omp.h>
+
+#define PROOF_CORRECTNESS
+
+//////////////////////////////////////////////////////////////////////////
+MultiphaseCumulantLBMKernel::MultiphaseCumulantLBMKernel()
+{
+   this->nx1 = 0;
+   this->nx2 = 0;
+   this->nx3 = 0;
+   this->parameter = NORMAL;
+   this->OxyyMxzz = 1.0;
+   this->compressible = false;
+}
+//////////////////////////////////////////////////////////////////////////
+MultiphaseCumulantLBMKernel::MultiphaseCumulantLBMKernel(int nx1, int nx2, int nx3, Parameter p) 
+{
+   this->nx1 = nx1;
+   this->nx2 = nx2;
+   this->nx3 = nx3;
+   parameter = p;
+   this->compressible = false;
+}
+//////////////////////////////////////////////////////////////////////////
+MultiphaseCumulantLBMKernel::~MultiphaseCumulantLBMKernel(void)
+{
+
+}
+//////////////////////////////////////////////////////////////////////////
+void MultiphaseCumulantLBMKernel::init()
+{
+   //DistributionArray3DPtr d(new D3Q27EsoTwist3DSplittedVector(nx1+ghostLayerWitdh*2, nx2+ghostLayerWitdh*2, nx3+ghostLayerWitdh*2, -999.0));
+   DistributionArray3DPtr f(new D3Q27EsoTwist3DSplittedVector(nx1+2, nx2+2, nx3+2, -999.0));
+   DistributionArray3DPtr h(new D3Q27EsoTwist3DSplittedVector(nx1+2, nx2+2, nx3+2, -999.0)); // For phase-field
+   PhaseFieldArray3DPtr divU(new CbArray3D<LBMReal,IndexerX3X2X1>(nx1+2, nx2+2, nx3+2, 0.0));
+   dataSet->setFdistributions(f);
+   dataSet->setHdistributions(h); // For phase-field
+   dataSet->setPhaseField(divU);
+}
+//////////////////////////////////////////////////////////////////////////
+LBMKernelPtr MultiphaseCumulantLBMKernel::clone()
+{
+   LBMKernelPtr kernel(new MultiphaseCumulantLBMKernel(nx1, nx2, nx3, parameter));
+   boost::dynamic_pointer_cast<MultiphaseCumulantLBMKernel>(kernel)->init();
+   
+   kernel->setCollisionFactorMultiphase(this->collFactorL, this->collFactorG);
+   kernel->setDensityRatio(this->densityRatio);
+   kernel->setMultiphaseModelParameters(this->beta, this->kappa);
+   kernel->setContactAngle(this->contactAngle);
+   kernel->setPhiL(this->phiL);
+   kernel->setPhiH(this->phiH);
+   kernel->setPhaseFieldRelaxation(this->tauH);
+   kernel->setMobility(this->mob);
+
+   kernel->setBCProcessor(bcProcessor->clone(kernel));
+   kernel->setWithForcing(withForcing);
+   kernel->setForcingX1(muForcingX1);
+   kernel->setForcingX2(muForcingX2);
+   kernel->setForcingX3(muForcingX3);
+   kernel->setIndex(ix1, ix2, ix3);
+   kernel->setDeltaT(deltaT);
+   switch (parameter)
+   {
+   case NORMAL:
+      boost::dynamic_pointer_cast<MultiphaseCumulantLBMKernel>(kernel)->OxyyMxzz = 1.0;
+   	break;
+   case MAGIC:
+      boost::dynamic_pointer_cast<MultiphaseCumulantLBMKernel>(kernel)->OxyyMxzz = 2.0 +(-collFactor);
+      break;
+   }
+   return kernel;
+}
+//////////////////////////////////////////////////////////////////////////
+void MultiphaseCumulantLBMKernel::calculate()
+{
+   timer.resetAndStart();
+   collideAll();
+   timer.stop();
+}
+//////////////////////////////////////////////////////////////////////////
+void MultiphaseCumulantLBMKernel::collideAll()
+{
+   using namespace D3Q27System;
+
+   //initializing of forcing stuff 
+   /*if (withForcing)
+   {
+   muForcingX1.DefineVar("x1",&muX1); muForcingX1.DefineVar("x2",&muX2); muForcingX1.DefineVar("x3",&muX3);
+   muForcingX2.DefineVar("x1",&muX1); muForcingX2.DefineVar("x2",&muX2); muForcingX2.DefineVar("x3",&muX3);
+   muForcingX3.DefineVar("x1",&muX1); muForcingX3.DefineVar("x2",&muX2); muForcingX3.DefineVar("x3",&muX3);
+
+   muDeltaT = deltaT;
+
+   muForcingX1.DefineVar("dt",&muDeltaT);
+   muForcingX2.DefineVar("dt",&muDeltaT);
+   muForcingX3.DefineVar("dt",&muDeltaT);
+
+   muNu = (1.0/3.0)*(1.0/collFactor - 1.0/2.0);
+
+   muForcingX1.DefineVar("nu",&muNu);
+   muForcingX2.DefineVar("nu",&muNu);
+   muForcingX3.DefineVar("nu",&muNu);
+
+   LBMReal forcingX1 = 0;
+   LBMReal forcingX2 = 0;
+   LBMReal forcingX3 = 0;
+   }*/
+   forcingX1 = 0.0;
+   forcingX2 = 0.0;
+   forcingX3 = 0.0;
+   /////////////////////////////////////
+
+   localDistributionsF = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions();
+   nonLocalDistributionsF = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions();
+   zeroDistributionsF = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions();
+
+   localDistributionsH = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getHdistributions())->getLocalDistributions();
+   nonLocalDistributionsH = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getHdistributions())->getNonLocalDistributions();
+   zeroDistributionsH = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getHdistributions())->getZeroDistributions();
+
+   
+
+   //phaseField = dataSet->getPhaseField();
+
+   BCArray3DPtr bcArray = this->getBCProcessor()->getBCArray();
+
+   
+
+   const int bcArrayMaxX1 = (int)bcArray->getNX1();
+   const int bcArrayMaxX2 = (int)bcArray->getNX2();
+   const int bcArrayMaxX3 = (int)bcArray->getNX3();
+
+   int minX1 = ghostLayerWidth;
+   int minX2 = ghostLayerWidth;
+   int minX3 = ghostLayerWidth;
+   int maxX1 = bcArrayMaxX1-ghostLayerWidth;
+   int maxX2 = bcArrayMaxX2-ghostLayerWidth;
+   int maxX3 = bcArrayMaxX3-ghostLayerWidth;
+
+
+//#pragma omp parallel num_threads(8)
+   {
+   //   int i = omp_get_thread_num();
+   //   printf_s("Hello from thread %d\n", i);
+   //}
+//#pragma omp for 
+
+   
+   CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr phaseField(new CbArray3D<LBMReal,IndexerX3X2X1>(bcArrayMaxX1, bcArrayMaxX2, bcArrayMaxX3, -999.0));
+   CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr p1Field(new CbArray3D<LBMReal,IndexerX3X2X1>(bcArrayMaxX1, bcArrayMaxX2, bcArrayMaxX3, -999.0));
+   CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr p1Field_filtered(new CbArray3D<LBMReal,IndexerX3X2X1>(bcArrayMaxX1, bcArrayMaxX2, bcArrayMaxX3, -999.0));
+   CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr divU(new CbArray3D<LBMReal,IndexerX3X2X1>(bcArrayMaxX1, bcArrayMaxX2, bcArrayMaxX3, 0.0));
+   
+   //CbArray3D<LBMReal> phaseField(bcArrayMaxX1, bcArrayMaxX2, bcArrayMaxX3,-999);
+   
+
+   for(int x3 = 0; x3 <= maxX3; x3++)
+   {
+      for(int x2 = 0; x2 <= maxX2; x2++)
+      {
+         for(int x1 = 0; x1 <= maxX1; x1++)
+         {
+            if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3))
+            {
+				int x1p = x1 + 1;
+				int x2p = x2 + 1;
+				int x3p = x3 + 1;
+
+				LBMReal mfcbb = (*this->localDistributionsH)(D3Q27System::ET_E, x1,x2,x3);
+				LBMReal mfbcb = (*this->localDistributionsH)(D3Q27System::ET_N,x1,x2,x3); 
+				LBMReal mfbbc = (*this->localDistributionsH)(D3Q27System::ET_T,x1,x2,x3);
+				LBMReal mfccb = (*this->localDistributionsH)(D3Q27System::ET_NE,x1,x2,x3);
+				LBMReal mfacb = (*this->localDistributionsH)(D3Q27System::ET_NW,x1p,x2,x3);
+				LBMReal mfcbc = (*this->localDistributionsH)(D3Q27System::ET_TE,x1,x2,x3);
+				LBMReal mfabc = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p,x2,x3);
+				LBMReal mfbcc = (*this->localDistributionsH)(D3Q27System::ET_TN,x1,x2,x3);
+				LBMReal mfbac = (*this->localDistributionsH)(D3Q27System::ET_TS,x1,x2p,x3);
+				LBMReal mfccc = (*this->localDistributionsH)(D3Q27System::ET_TNE,x1,x2,x3);
+				LBMReal mfacc = (*this->localDistributionsH)(D3Q27System::ET_TNW,x1p,x2,x3);
+				LBMReal mfcac = (*this->localDistributionsH)(D3Q27System::ET_TSE,x1,x2p,x3);
+				LBMReal mfaac = (*this->localDistributionsH)(D3Q27System::ET_TSW,x1p,x2p,x3);
+				LBMReal mfabb = (*this->nonLocalDistributionsH)(D3Q27System::ET_W,x1p,x2,x3  );
+				LBMReal mfbab = (*this->nonLocalDistributionsH)(D3Q27System::ET_S,x1,x2p,x3  );
+				LBMReal mfbba = (*this->nonLocalDistributionsH)(D3Q27System::ET_B,x1,x2,x3p  );
+				LBMReal mfaab = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW,x1p,x2p,x3 );
+				LBMReal mfcab = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE,x1,x2p,x3 );
+				LBMReal mfaba = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW,x1p,x2,x3p );
+				LBMReal mfcba = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE,x1,x2,x3p );
+				LBMReal mfbaa = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS,x1,x2p,x3p );
+				LBMReal mfbca = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN,x1,x2,x3p );
+				LBMReal mfaaa = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+				LBMReal mfcaa = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE,x1,x2p,x3p);
+				LBMReal mfaca = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW,x1p,x2,x3p);
+				LBMReal mfcca = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE,x1,x2,x3p);
+				LBMReal mfbbb = (*this->zeroDistributionsH)(x1,x2,x3);
+				//LBMReal phase = h[ZERO] + h[E] + h[W] + h[N] + h[S] + h[T] + h[B] + h[NE] + h[SW] + h[SE] + h[NW] + h[TE] + h[BW] + 
+				//	h[BE] + h[TW] + h[TN] + h[BS] + h[BN] + h[TS] + h[TNE] + h[TNW] + h[TSE] + h[TSW] + h[BNE] + h[BNW] + h[BSE] + h[BSW];
+				//if (phase > 1.0) phase = 1.0e0;
+				//(*phaseField)(x1,x2,x3) = phase;
+				(*phaseField)(x1,x2,x3) = (mfaaa+mfaac+mfaca+mfcaa+mfacc+mfcac+mfccc+mfcca)
+					+(mfaab+mfacb+mfcab+mfccb)+(mfaba+mfabc+mfcba+mfcbc)+(mfbaa+mfbac+mfbca+mfbcc)
+					+(mfabb+mfcbb)+(mfbab+mfbcb)+(mfbba+mfbbc)+mfbbb;
+				if ((*phaseField)(x1,x2,x3) > 1.0) (*phaseField)(x1,x2,x3)=1.0;
+
+				mfcbb = (*this->localDistributionsF)(D3Q27System::ET_E, x1,x2,x3);
+				mfbcb = (*this->localDistributionsF)(D3Q27System::ET_N,x1,x2,x3); 
+				mfbbc = (*this->localDistributionsF)(D3Q27System::ET_T,x1,x2,x3);
+				mfccb = (*this->localDistributionsF)(D3Q27System::ET_NE,x1,x2,x3);
+				mfacb = (*this->localDistributionsF)(D3Q27System::ET_NW,x1p,x2,x3);
+				mfcbc = (*this->localDistributionsF)(D3Q27System::ET_TE,x1,x2,x3);
+				mfabc = (*this->localDistributionsF)(D3Q27System::ET_TW, x1p,x2,x3);
+				mfbcc = (*this->localDistributionsF)(D3Q27System::ET_TN,x1,x2,x3);
+				mfbac = (*this->localDistributionsF)(D3Q27System::ET_TS,x1,x2p,x3);
+				mfccc = (*this->localDistributionsF)(D3Q27System::ET_TNE,x1,x2,x3);
+				mfacc = (*this->localDistributionsF)(D3Q27System::ET_TNW,x1p,x2,x3);
+				mfcac = (*this->localDistributionsF)(D3Q27System::ET_TSE,x1,x2p,x3);
+				mfaac = (*this->localDistributionsF)(D3Q27System::ET_TSW,x1p,x2p,x3);
+				mfabb = (*this->nonLocalDistributionsF)(D3Q27System::ET_W,x1p,x2,x3  );
+				mfbab = (*this->nonLocalDistributionsF)(D3Q27System::ET_S,x1,x2p,x3  );
+				mfbba = (*this->nonLocalDistributionsF)(D3Q27System::ET_B,x1,x2,x3p  );
+				mfaab = (*this->nonLocalDistributionsF)(D3Q27System::ET_SW,x1p,x2p,x3 );
+				mfcab = (*this->nonLocalDistributionsF)(D3Q27System::ET_SE,x1,x2p,x3 );
+				mfaba = (*this->nonLocalDistributionsF)(D3Q27System::ET_BW,x1p,x2,x3p );
+				mfcba = (*this->nonLocalDistributionsF)(D3Q27System::ET_BE,x1,x2,x3p );
+				mfbaa = (*this->nonLocalDistributionsF)(D3Q27System::ET_BS,x1,x2p,x3p );
+				mfbca = (*this->nonLocalDistributionsF)(D3Q27System::ET_BN,x1,x2,x3p );
+				mfaaa = (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+				mfcaa = (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE,x1,x2p,x3p);
+				mfaca = (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW,x1p,x2,x3p);
+				mfcca = (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE,x1,x2,x3p);
+				mfbbb = (*this->zeroDistributionsF)(x1,x2,x3);
+				
+				(*p1Field)(x1,x2,x3) = ((mfaaa+mfaac+mfaca+mfcaa+mfacc+mfcac+mfccc+mfcca)
+					+(mfaab+mfacb+mfcab+mfccb)+(mfaba+mfabc+mfcba+mfcbc)+(mfbaa+mfbac+mfbca+mfbcc)
+					+(mfabb+mfcbb)+(mfbab+mfbcb)+(mfbba+mfbbc)+mfbbb);
+				(*p1Field_filtered)(x1,x2,x3) = (*p1Field)(x1,x2,x3);
+			}
+		 }
+	  }
+   }
+   
+   LBMReal sum1, AA;
+   for(int x3 = minX3; x3 < maxX3; x3++)
+   {
+	   for(int x2 = minX2; x2 < maxX2; x2++)
+	   {
+		   for(int x1 = minX1; x1 < maxX1; x1++)
+		   {
+			   if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3))
+			   {
+				   int cnum = 0;
+				   sum1 = 0.0;
+				   for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+				   //for (int k = FSTARTDIR ; k <= 5 ; k++)
+				   {
+					   if(!bcArray->isSolid(x1 + DX1[k], x2 + DX2[k], x3 + DX3[k]))
+					   {
+						   //cnum++;
+						   sum1 += (*p1Field)(x1 + DX1[k], x2 + DX2[k], x3 + DX3[k])*WEIGTH[k];
+
+					   }
+					   else
+					   {
+						   //cnum++;
+						   //sum1 += (*p1Field)(x1 + DX1[INVDIR[k]], x2 + DX2[INVDIR[k]], x3 + DX3[INVDIR[k]])*WEIGTH[k];
+						   //std::cout << x1 << '  ' << x2  << '  ' << x3 << '  '<< k << std::endl;
+						   sum1 += ((*p1Field)(x1, x2, x3))*WEIGTH[k];
+					   }
+				   }
+				   //LBMReal av = (sum1+(*p1Field)(x1, x2, x3))/7.0;
+				   //(*p1Field_filtered)(x1, x2, x3) = av;
+				   
+				   /*LBMReal d0 = 2.0/9.0;
+				   LBMReal d1 = -1.0/9.6;
+				   LBMReal wf = 0.25;
+				   AA = 3*d0*(*p1Field)(x1, x2, x3) + d1*((*p1Field)(x1+1, x2, x3)+(*p1Field)(x1-1, x2, x3)) 
+					   + d1*((*p1Field)(x1, x2+1, x3)+(*p1Field)(x1, x2-1, x3)) + d1*((*p1Field)(x1, x2, x3+1)+(*p1Field)(x1, x2, x3-1));
+				   (*p1Field_filtered)(x1, x2, x3) = (*p1Field)(x1, x2, x3) - AA*wf;*/
+				   
+				   (*p1Field_filtered)(x1, x2, x3) = ((*p1Field)(x1, x2, x3))*WEIGTH[ZERO] + sum1;
+				   //(*p1Field)(x1, x2, x3) = ((*p1Field)(x1, x2, x3))*WEIGTH[ZERO] + sum1;
+
+			   }
+		   }
+	   }
+   }
+
+   LBMReal collFactorM;
+   LBMReal forcingTerm[D3Q27System::ENDF+1];
+   LBMReal m000, m100, m010, m001, m110, m101, m011, m200, m020, m002, m120, m102, m210, m012, m201, m021, m111, m220, m202, m022, m211, m121, m112, m221, m212, m122, m222;
+   LBMReal k000, k100, k010, k001, k110, k101, k011, k200, k020, k002, k120, k102, k210, k012, k201, k021, k111, k220, k202, k022, k211, k121, k112, k221, k212, k122, k222;
+   LBMReal c000, c100, c010, c001, c110, c101, c011, c200, c020, c002, c120, c102, c210, c012, c201, c021, c111, c220, c202, c022, c211, c121, c112, c221, c212, c122, c222;
+
+   LBMReal k200_pl_k020_pl_k002, k200_mi_k020, k200_mi_k002, k210_pl_k012, k210_mi_k012, k201_pl_k021, k201_mi_k021, k120_pl_k102, k120_mi_k102, k220_pl_k202_pl_k022, 
+	   k220_mi2_k202_pl_k022, k220_pl_k202_mi2_k022;
+
+   LBMReal c200_pl_c020_pl_c002, c200_mi_c020, c200_mi_c002, c210_pl_c012, c210_mi_c012, c201_pl_c021, c201_mi_c021, c120_pl_c102, c120_mi_c102, c220_pl_c202_pl_c022, 
+	   c220_mi2_c202_pl_c022, c220_pl_c202_mi2_c022;
+
+   LBMReal w1, w2, w3, w4, w5, w6, w7, w8, w9, w10;
+   
+   w2  = 1.0;
+   w3  = 1.0;
+   w4  = 1.0;
+   w5  = 1.0;
+   w6  = 1.0;
+   w7  = 1.0;
+   w8  = 1.0;
+   w9  = 1.0;
+   w10 = 1.0;
+
+   for(int x3 = minX3; x3 < maxX3; x3++)
+   {
+      for(int x2 = minX2; x2 < maxX2; x2++)
+      {
+         for(int x1 = minX1; x1 < maxX1; x1++)
+         {
+            if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3))
+            {
+               int x1p = x1 + 1;
+               int x2p = x2 + 1;
+               int x3p = x3 + 1;
+
+
+               //////////////////////////////////////////////////////////////////////////
+               //Read distributions and phase field
+               ////////////////////////////////////////////////////////////////////////////
+               //////////////////////////////////////////////////////////////////////////
+
+               //E   N  T
+               //c   c  c
+               //////////
+               //W   S  B
+               //a   a  a
+
+               //Rest ist b
+
+               //mfxyz
+               //a - negative
+               //b - null
+               //c - positive
+               
+               // a b c
+               //-1 0 1
+			   
+			   /*
+			   phi[ZERO] = (phaseField)(x1,x2,x3);
+			   phi[E  ] = (phaseField)(x1 + DX1[E  ], x2 + DX2[E  ], x3 + DX3[E  ]);
+			   phi[N  ] = (phaseField)(x1 + DX1[N  ], x2 + DX2[N  ], x3 + DX3[N  ]);
+			   phi[T  ] = (phaseField)(x1 + DX1[T  ], x2 + DX2[T  ], x3 + DX3[T  ]);
+			   phi[W  ] = (phaseField)(x1 + DX1[W  ], x2 + DX2[W  ], x3 + DX3[W  ]);
+			   phi[S  ] = (phaseField)(x1 + DX1[S  ], x2 + DX2[S  ], x3 + DX3[S  ]);
+			   phi[B  ] = (phaseField)(x1 + DX1[B  ], x2 + DX2[B  ], x3 + DX3[B  ]);
+			   phi[NE ] = (phaseField)(x1 + DX1[NE ], x2 + DX2[NE ], x3 + DX3[NE ]);
+			   phi[NW ] = (phaseField)(x1 + DX1[NW ], x2 + DX2[NW ], x3 + DX3[NW ]);
+			   phi[TE ] = (phaseField)(x1 + DX1[TE ], x2 + DX2[TE ], x3 + DX3[TE ]);
+			   phi[TW ] = (phaseField)(x1 + DX1[TW ], x2 + DX2[TW ], x3 + DX3[TW ]);
+			   phi[TN ] = (phaseField)(x1 + DX1[TN ], x2 + DX2[TN ], x3 + DX3[TN ]);
+			   phi[TS ] = (phaseField)(x1 + DX1[TS ], x2 + DX2[TS ], x3 + DX3[TS ]);
+			   phi[SW ] = (phaseField)(x1 + DX1[SW ], x2 + DX2[SW ], x3 + DX3[SW ]);
+			   phi[SE ] = (phaseField)(x1 + DX1[SE ], x2 + DX2[SE ], x3 + DX3[SE ]);
+			   phi[BW ] = (phaseField)(x1 + DX1[BW ], x2 + DX2[BW ], x3 + DX3[BW ]);
+			   phi[BE ] = (phaseField)(x1 + DX1[BE ], x2 + DX2[BE ], x3 + DX3[BE ]);
+			   phi[BS ] = (phaseField)(x1 + DX1[BS ], x2 + DX2[BS ], x3 + DX3[BS ]);
+			   phi[BN ] = (phaseField)(x1 + DX1[BN ], x2 + DX2[BN ], x3 + DX3[BN ]);
+			   phi[BSW] = (phaseField)(x1 + DX1[BSW], x2 + DX2[BSW], x3 + DX3[BSW]);
+			   phi[BSE] = (phaseField)(x1 + DX1[BSE], x2 + DX2[BSE], x3 + DX3[BSE]);
+			   phi[BNW] = (phaseField)(x1 + DX1[BNW], x2 + DX2[BNW], x3 + DX3[BNW]);
+			   phi[BNE] = (phaseField)(x1 + DX1[BNE], x2 + DX2[BNE], x3 + DX3[BNE]);
+			   phi[TNE] = (phaseField)(x1 + DX1[TNE], x2 + DX2[TNE], x3 + DX3[TNE]);
+			   phi[TNW] = (phaseField)(x1 + DX1[TNW], x2 + DX2[TNW], x3 + DX3[TNW]);
+			   phi[TSE] = (phaseField)(x1 + DX1[TSE], x2 + DX2[TSE], x3 + DX3[TSE]);
+			   phi[TSW] = (phaseField)(x1 + DX1[TSW], x2 + DX2[TSW], x3 + DX3[TSW]);
+			   */
+			   findNeighbors(phaseField, p1Field_filtered, x1, x2, x3);
+			   //findNeighbors(phaseField, p1Field, x1, x2, x3);
+
+			   LBMReal mfcbb = (*this->localDistributionsF)(D3Q27System::ET_E, x1,x2,x3);
+			   LBMReal mfbcb = (*this->localDistributionsF)(D3Q27System::ET_N,x1,x2,x3); 
+			   LBMReal mfbbc = (*this->localDistributionsF)(D3Q27System::ET_T,x1,x2,x3);
+			   LBMReal mfccb = (*this->localDistributionsF)(D3Q27System::ET_NE,x1,x2,x3);
+			   LBMReal mfacb = (*this->localDistributionsF)(D3Q27System::ET_NW,x1p,x2,x3);
+			   LBMReal mfcbc = (*this->localDistributionsF)(D3Q27System::ET_TE,x1,x2,x3);
+			   LBMReal mfabc = (*this->localDistributionsF)(D3Q27System::ET_TW, x1p,x2,x3);
+			   LBMReal mfbcc = (*this->localDistributionsF)(D3Q27System::ET_TN,x1,x2,x3);
+			   LBMReal mfbac = (*this->localDistributionsF)(D3Q27System::ET_TS,x1,x2p,x3);
+			   LBMReal mfccc = (*this->localDistributionsF)(D3Q27System::ET_TNE,x1,x2,x3);
+			   LBMReal mfacc = (*this->localDistributionsF)(D3Q27System::ET_TNW,x1p,x2,x3);
+			   LBMReal mfcac = (*this->localDistributionsF)(D3Q27System::ET_TSE,x1,x2p,x3);
+			   LBMReal mfaac = (*this->localDistributionsF)(D3Q27System::ET_TSW,x1p,x2p,x3);
+			   LBMReal mfabb = (*this->nonLocalDistributionsF)(D3Q27System::ET_W,x1p,x2,x3  );
+			   LBMReal mfbab = (*this->nonLocalDistributionsF)(D3Q27System::ET_S,x1,x2p,x3  );
+			   LBMReal mfbba = (*this->nonLocalDistributionsF)(D3Q27System::ET_B,x1,x2,x3p  );
+			   LBMReal mfaab = (*this->nonLocalDistributionsF)(D3Q27System::ET_SW,x1p,x2p,x3 );
+			   LBMReal mfcab = (*this->nonLocalDistributionsF)(D3Q27System::ET_SE,x1,x2p,x3 );
+			   LBMReal mfaba = (*this->nonLocalDistributionsF)(D3Q27System::ET_BW,x1p,x2,x3p );
+			   LBMReal mfcba = (*this->nonLocalDistributionsF)(D3Q27System::ET_BE,x1,x2,x3p );
+			   LBMReal mfbaa = (*this->nonLocalDistributionsF)(D3Q27System::ET_BS,x1,x2p,x3p );
+			   LBMReal mfbca = (*this->nonLocalDistributionsF)(D3Q27System::ET_BN,x1,x2,x3p );
+			   LBMReal mfaaa = (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+			   LBMReal mfcaa = (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE,x1,x2p,x3p);
+			   LBMReal mfaca = (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW,x1p,x2,x3p);
+			   LBMReal mfcca = (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE,x1,x2,x3p);
+
+			   LBMReal mfbbb = (*this->zeroDistributionsF)(x1,x2,x3);
+
+			   g[E  ]  = mfcbb;
+			   g[N  ]  = mfbcb;
+			   g[T  ]  = mfbbc;
+			   g[NE ]  = mfccb;
+			   g[NW ]  = mfacb;
+			   g[TE ]  = mfcbc;
+			   g[TW ]  = mfabc;
+			   g[TN ]  = mfbcc;
+			   g[TS ]  = mfbac;
+			   g[TNE]  = mfccc;
+			   g[TNW]  = mfacc;
+			   g[TSE]  = mfcac;
+			   g[TSW]  = mfaac;
+			   g[W  ]  = mfabb;
+			   g[S  ]  = mfbab;
+			   g[B  ]  = mfbba;
+			   g[SW ]  = mfaab;
+			   g[SE ]  = mfcab;
+			   g[BW ]  = mfaba;
+			   g[BE ]  = mfcba;
+			   g[BS ]  = mfbaa;
+			   g[BN ]  = mfbca;
+			   g[BSW]  = mfaaa;
+			   g[BSE]  = mfcaa;
+			   g[BNW]  = mfaca;
+			   g[BNE]  = mfcca;
+			   g[ZERO] = mfbbb;
+
+			   LBMReal rhoH = 997.0;
+			   LBMReal rhoL = rhoH/densityRatio;
+
+			   //LBMReal rhoToPhi = (1.0 - 1.0/densityRatio);
+			   LBMReal rhoToPhi = (rhoH - rhoL)/(phiH - phiL);
+
+			   //collFactorM = phi[ZERO]*collFactorL + (1-phi[ZERO])*collFactorG;
+			   //collFactorM = phi[ZERO]*collFactorG + (1-phi[ZERO])*collFactorL;
+			   
+			   //LBMReal tauH = 1.0;
+			   LBMReal di = sqrt(8*kappa/beta);
+			   
+			   LBMReal dX1_phi = gradX1_phi();
+			   LBMReal dX2_phi = gradX2_phi();
+			   LBMReal dX3_phi = gradX3_phi();
+
+			   LBMReal dX1_pr1 = gradX1_pr1();
+			   LBMReal dX2_pr1 = gradX2_pr1();
+			   LBMReal dX3_pr1 = gradX3_pr1();
+			   
+			   LBMReal denom = sqrt(dX1_phi*dX1_phi + dX2_phi*dX2_phi + dX3_phi*dX3_phi) + 1e-9;
+			   LBMReal normX1 = dX1_phi/denom;
+			   LBMReal normX2 = dX2_phi/denom;
+			   LBMReal normX3 = dX3_phi/denom;
+
+			   collFactorM = collFactorL + (collFactorL - collFactorG)*(phi[ZERO] - phiH)/(phiH - phiL);
+			   
+			   /*if ((phi[ZERO] > 0.1)||(phi[ZERO] < 0.9))
+			   {
+				   collFactorM*=(1.0-denom);
+			   }*/
+
+			   w1 = collFactorM;
+			   
+			   /*dX1_phi = -normX1*((phi[ZERO]>phiH || phi[ZERO]<phiL) ? 0.0 : 4*(phi[ZERO] - phiL)*(phi[ZERO] - phiH)/di);
+			   dX2_phi = -normX2*((phi[ZERO]>phiH || phi[ZERO]<phiL) ? 0.0 : 4*(phi[ZERO] - phiL)*(phi[ZERO] - phiH)/di);
+			   dX3_phi = -normX3*((phi[ZERO]>phiH || phi[ZERO]<phiL) ? 0.0 : 4*(phi[ZERO] - phiL)*(phi[ZERO] - phiH)/di);*/
+
+			   //UbTupleDouble3 coords = grid->getNodeCoordinates(block, x1, x2, x3);
+			   /*Block3D bl = this->block();
+			   
+			   int wX1 = bl->getX1()  + x1;
+			   int wX2 = bl->getX2()  + x2;
+			   int wX3 = bl->getX3()  + x3;*/
+			   
+			   /*if (wX3 >= 30.0)
+			   {
+			   dX1_phi = 0.0;
+			   dX2_phi = 0.0;
+			   dX3_phi = 0.0;
+			   }*/
+
+
+			   LBMReal mu = 2*beta*phi[ZERO]*(phi[ZERO]-1)*(2*phi[ZERO]-1) - kappa*nabla2_phi();
+			   //mu = mu*10;
+			   
+			   //LBMReal rhoToPhi = (1.0/densityRatio - 1.0);
+			   
+			   			   
+
+			   //----------- Calculating Macroscopic Values -------------
+
+			   //LBMReal rho = phi[ZERO] + (1.0 - phi[ZERO])*1.0/densityRatio;
+			   LBMReal rho = rhoH + rhoToPhi*(phi[ZERO] - phiH);
+			   if (phi[ZERO] > 1.0) rho = rhoH;
+			   //LBMReal rho = phi[ZERO]*1.0/densityRatio + (1.0 - phi[ZERO]);
+
+			   if (withForcing)
+			   {
+				   //muX1 = static_cast<double>(x1-1+ix1*maxX1);
+				   //muX2 = static_cast<double>(x2-1+ix2*maxX2);
+				   //muX3 = static_cast<double>(x3-1+ix3*maxX3);
+
+				   forcingX1 = muForcingX1.Eval();
+				   forcingX2 = muForcingX2.Eval();
+				   forcingX3 = muForcingX3.Eval();
+
+				   //LBMReal rho_m = 1.0/densityRatio;
+				   //LBMReal rho_m = (rhoL + rhoH)/2.0;
+				   LBMReal rho_m = rhoH;
+				   forcingX1 = forcingX1*(rho-rho_m);
+				   forcingX2 = forcingX2*(rho-rho_m);
+				   forcingX3 = forcingX3*(rho-rho_m);
+
+				   //ux += forcingX1*deltaT*0.5; // X
+				   //uy += forcingX2*deltaT*0.5; // Y
+				   //uz += forcingX3*deltaT*0.5; // Z
+			   }
+
+			   /*LBMReal p1 = (mfaaa+mfaac+mfaca+mfcaa+mfacc+mfcac+mfccc+mfcca)
+				   +(mfaab+mfacb+mfcab+mfccb)+(mfaba+mfabc+mfcba+mfcbc)+(mfbaa+mfbac+mfbca+mfbcc)
+				   +(mfabb+mfcbb)+(mfbab+mfbcb)+(mfbba+mfbbc)+mfbbb;
+			   
+			   p1 = p1*rho*c1o3;*/
+			   
+			   LBMReal rho2 = rho*rho;
+
+			   /*LBMReal Sx = rhoToPhi*dX1_phi*p1/rho2;
+			   LBMReal Sy = rhoToPhi*dX2_phi*p1/rho2;
+			   LBMReal Sz = rhoToPhi*dX3_phi*p1/rho2;*/
+			   
+			   LBMReal Sx = -1.0*dX1_pr1/rho;
+			   LBMReal Sy = -1.0*dX2_pr1/rho;
+			   LBMReal Sz = -1.0*dX3_pr1/rho;
+
+			   
+			   /*if ((phi[ZERO] < 0.1)||(phi[ZERO] > 0.9))
+			   {
+			   Sx = 0.0;
+			   Sy = 0.0;
+			   Sz = 0.0;
+			   }*/
+
+			   LBMReal ux = ((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) +
+				   (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
+				   (mfcbb-mfabb))  + (mu*dX1_phi + forcingX1)/(2*rho) + 0.5*Sx;
+
+			   LBMReal uy = ((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) +
+				   (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
+				   (mfbcb-mfbab))  + (mu*dX2_phi + forcingX2)/(2*rho) + 0.5*Sy;
+
+			   LBMReal uz = ((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) +
+				   (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
+				   (mfbbc-mfbba))  + (mu*dX3_phi + forcingX3)/(2*rho) + 0.5*Sz;
+
+			   
+			   //+ (ux*rhoToPhi*dX1_phi*c1o3 + uy*rhoToPhi*dX2_phi*c1o3 + uz*rhoToPhi*dX3_phi*c1o3)/2.0;
+			   
+			   //vvx = 0.0; vvy = 0.0; vvz = 0.0;
+			   //--------------------------------------------------------
+			   
+
+
+
+			   LBMReal ux2 = ux*ux;
+			   LBMReal uy2 = uy*uy;
+			   LBMReal uz2 = uz*uz;
+			   LBMReal ux_uy = ux*uy;
+			   LBMReal ux_uz = ux*uz;
+			   LBMReal uy_uz = uy*uz;
+			   LBMReal ux_uy_uz = ux*uy*uz;
+
+
+/*
+			   //----------- Calculating Forcing Terms -------------
+			   LBMReal forcingTerm1 = (ux*mu*dX1_phi + uy*mu*dX2_phi + uz*mu*dX3_phi);
+			   for (int dir = STARTF; dir < (ENDF+1); dir++)
+			   {
+				   if (dir != ZERO)
+				   {
+					   LBMReal dirGrad_phi = (phi[dir] - phi[INVDIR[dir]])/2.0;
+					   forcingTerm[dir] = (c1o3*rhoToPhi*dirGrad_phi + mu*dirGrad_phi)*(DX1[dir]*ux + DX2[dir]*uy + DX3[dir]*uz)*WEIGTH[dir]/c1o3 + mu*dirGrad_phi*WEIGTH[dir] - 
+						   (forcingTerm1)*WEIGTH[dir];
+				   } 
+				   else
+				   {
+					   forcingTerm[ZERO] =  -(forcingTerm1)*WEIGTH[ZERO];
+				   }
+			   }
+			  //--------------------------------------------------------
+*/
+
+			   //----------- Calculating Forcing Terms * -------------
+			   //LBMReal forcingTerm1 = (ux*mu*dX1_phi + uy*mu*dX2_phi + uz*mu*dX3_phi);
+			   for (int dir = STARTF; dir <= (FENDDIR); dir++)
+			   {
+				   LBMReal velProd = DX1[dir]*ux + DX2[dir]*uy + DX3[dir]*uz;
+				   LBMReal velSq1 = velProd*velProd;
+				   //LBMReal gamma = WEIGTH[dir]*(1.0 + 3*velProd + 4.5*velSq1 - 1.5*(ux2+uy2+uz2));
+				   LBMReal gamma = WEIGTH[dir]*(3*velProd + 4.5*velSq1 - 1.5*(ux2+uy2+uz2));
+				   
+				   //forcingTerm[dir] = (DX1[dir] - ux)*((gamma - WEIGTH[dir])*c1o3*rhoToPhi*dX1_phi + gamma*mu*dX1_phi) + 
+					//   (DX2[dir] - uy)*((gamma - WEIGTH[dir])*c1o3*rhoToPhi*dX2_phi + gamma*mu*dX2_phi) + 
+					//   (DX3[dir] - uz)*((gamma - WEIGTH[dir])*c1o3*rhoToPhi*dX3_phi + gamma*mu*dX3_phi);
+				   
+				   LBMReal fac1 = (gamma - WEIGTH[dir])*c1o3*rhoToPhi;
+				   LBMReal dirGrad_phi = (phi[dir] - phi[INVDIR[dir]])/2.0;
+				   //LBMReal dirGrad_phi = DX1[dir]*dX1_phi + DX2[dir]*dX2_phi + DX3[dir]*dX3_phi;
+				   
+				   /*forcingTerm[dir] =  (- (ux)*(fac1*dX1_phi + gamma*mu*dX1_phi) - 
+				   (uy)*(fac1*dX2_phi + gamma*mu*dX2_phi) - 
+				   (uz)*(fac1*dX3_phi + gamma*mu*dX3_phi)) + (fac1*dirGrad_phi + gamma*mu*dirGrad_phi + DX1[dir]*forcingX1 + DX2[dir]*forcingX2 + DX3[dir]*forcingX3);*/
+				   
+				   
+				   forcingTerm[dir] =  (-ux)*     (gamma*(mu*dX1_phi/rho + forcingX1/rho + Sx)) +
+					   				   (-uy)*     (gamma*(mu*dX2_phi/rho + forcingX2/rho + Sy)) +
+					   				   (-uz)*     (gamma*(mu*dX3_phi/rho + forcingX3/rho + Sz)) +
+									   (DX1[dir])*(gamma*(mu*dX1_phi/rho + forcingX1/rho + Sx)) +
+									   (DX2[dir])*(gamma*(mu*dX2_phi/rho + forcingX2/rho + Sy)) +
+									   (DX3[dir])*(gamma*(mu*dX3_phi/rho + forcingX3/rho + Sz));
+
+			   }
+
+			   LBMReal gamma = WEIGTH[ZERO]*(-1.5*(ux2+uy2+uz2));
+			   /*forcingTerm[ZERO] = -(ux)*((gamma - WEIGTH[ZERO])*c1o3*rhoToPhi*dX1_phi + gamma*mu*dX1_phi) - 
+			   (uy)*((gamma - WEIGTH[ZERO])*c1o3*rhoToPhi*dX2_phi + gamma*mu*dX2_phi) - 
+			   (uz)*((gamma - WEIGTH[ZERO])*c1o3*rhoToPhi*dX3_phi + gamma*mu*dX3_phi);*/
+			   LBMReal fac1 = (gamma - WEIGTH[ZERO])*c1o3*rhoToPhi;
+			   forcingTerm[ZERO] = (-ux)*(gamma*(mu*dX1_phi/rho + forcingX1/rho + Sx)) +
+								   (-uy)*(gamma*(mu*dX2_phi/rho + forcingX2/rho + Sy)) +
+								   (-uz)*(gamma*(mu*dX3_phi/rho + forcingX3/rho + Sz));
+
+			   //--------------------------------------------------------
+
+			   g[E  ]  += 0.5*forcingTerm[E  ] ;
+			   g[N  ]  += 0.5*forcingTerm[N  ] ;
+			   g[T  ]  += 0.5*forcingTerm[T  ] ;
+			   g[NE ]  += 0.5*forcingTerm[NE ] ;
+			   g[NW ]  += 0.5*forcingTerm[NW ] ;
+			   g[TE ]  += 0.5*forcingTerm[TE ] ;
+			   g[TW ]  += 0.5*forcingTerm[TW ] ;
+			   g[TN ]  += 0.5*forcingTerm[TN ] ;
+			   g[TS ]  += 0.5*forcingTerm[TS ] ;
+			   g[TNE]  += 0.5*forcingTerm[TNE] ;
+			   g[TNW]  += 0.5*forcingTerm[TNW] ;
+			   g[TSE]  += 0.5*forcingTerm[TSE] ;
+			   g[TSW]  += 0.5*forcingTerm[TSW] ;
+			   g[W  ]  += 0.5*forcingTerm[W  ] ;
+			   g[S  ]  += 0.5*forcingTerm[S  ] ;
+			   g[B  ]  += 0.5*forcingTerm[B  ] ;
+			   g[SW ]  += 0.5*forcingTerm[SW ] ;
+			   g[SE ]  += 0.5*forcingTerm[SE ] ;
+			   g[BW ]  += 0.5*forcingTerm[BW ] ;
+			   g[BE ]  += 0.5*forcingTerm[BE ] ;
+			   g[BS ]  += 0.5*forcingTerm[BS ] ;
+			   g[BN ]  += 0.5*forcingTerm[BN ] ;
+			   g[BSW]  += 0.5*forcingTerm[BSW] ;
+			   g[BSE]  += 0.5*forcingTerm[BSE] ;
+			   g[BNW]  += 0.5*forcingTerm[BNW] ;
+			   g[BNE]  += 0.5*forcingTerm[BNE] ;
+			   g[ZERO] += 0.5*forcingTerm[ZERO];
+			   
+			   for (int dir = STARTF; dir < (ENDF+1); dir++)
+			   {
+				   LBMReal velProd = DX1[dir]*ux + DX2[dir]*uy + DX3[dir]*uz;
+				   LBMReal velSq1 = velProd*velProd;
+				   LBMReal gamma = WEIGTH[dir]*(3*velProd + 4.5*velSq1 - 1.5*(ux2+uy2+uz2));
+				   LBMReal hEq, gEq;
+
+				   if (dir != ZERO)
+				   {
+
+					   //gEq = p1*WEIGTH[dir]/(rho*c1o3) + gamma;
+					   gEq = gamma;
+
+					   g[dir] = g[dir] - collFactorM*(g[dir]-gEq) + 0.5*forcingTerm[dir];
+
+				   } 
+				   else
+				   {
+					   //gEq = p1*WEIGTH[dir]/(rho*c1o3) + gamma;
+					   gEq = pr1[ZERO]*WEIGTH1[dir] + gamma;
+
+					   g[dir] = g[dir] - collFactorM*(g[dir]-gEq) + 0.5*forcingTerm[dir];
+				   }
+			   }
+
+
+
+			   (*this->localDistributionsF)(D3Q27System::ET_E,   x1,  x2,  x3) = g[D3Q27System::INV_E];
+			   (*this->localDistributionsF)(D3Q27System::ET_N,   x1,  x2,  x3) = g[D3Q27System::INV_N];
+			   (*this->localDistributionsF)(D3Q27System::ET_T,   x1,  x2,  x3) = g[D3Q27System::INV_T];
+			   (*this->localDistributionsF)(D3Q27System::ET_NE,  x1,  x2,  x3) = g[D3Q27System::INV_NE];
+			   (*this->localDistributionsF)(D3Q27System::ET_NW,  x1p, x2,  x3) = g[D3Q27System::INV_NW];
+			   (*this->localDistributionsF)(D3Q27System::ET_TE,  x1,  x2,  x3) = g[D3Q27System::INV_TE];
+			   (*this->localDistributionsF)(D3Q27System::ET_TW,  x1p, x2,  x3) = g[D3Q27System::INV_TW];
+			   (*this->localDistributionsF)(D3Q27System::ET_TN,  x1,  x2,  x3) = g[D3Q27System::INV_TN];
+			   (*this->localDistributionsF)(D3Q27System::ET_TS,  x1,  x2p, x3) = g[D3Q27System::INV_TS];
+			   (*this->localDistributionsF)(D3Q27System::ET_TNE, x1,  x2,  x3) = g[D3Q27System::INV_TNE];
+			   (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p, x2,  x3) = g[D3Q27System::INV_TNW];
+			   (*this->localDistributionsF)(D3Q27System::ET_TSE, x1,  x2p, x3) = g[D3Q27System::INV_TSE];
+			   (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p, x2p, x3) = g[D3Q27System::INV_TSW];
+
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_W,   x1p, x2,  x3 ) = g[D3Q27System::INV_W ];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_S,   x1,  x2p, x3 ) = g[D3Q27System::INV_S ];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_B,   x1,  x2,  x3p) = g[D3Q27System::INV_B ];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_SW,  x1p, x2p, x3 ) = g[D3Q27System::INV_SW];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_SE,  x1,  x2p, x3 ) = g[D3Q27System::INV_SE];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BW,  x1p, x2,  x3p) = g[D3Q27System::INV_BW];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BE,  x1,  x2,  x3p) = g[D3Q27System::INV_BE];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BS,  x1,  x2p, x3p) = g[D3Q27System::INV_BS];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BN,  x1,  x2,  x3p) = g[D3Q27System::INV_BN];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p, x2p, x3p) = g[D3Q27System::INV_BSW];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1,  x2p, x3p) = g[D3Q27System::INV_BSE];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p, x2,  x3p) = g[D3Q27System::INV_BNW];
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1,  x2,  x3p) = g[D3Q27System::INV_BNE];
+
+			   (*this->zeroDistributionsF)(x1,x2,x3) = g[D3Q27System::ZERO];
+
+			   
+
+
+
+
+
+
+
+			   
+/////////////////////  P H A S E - F I E L D   S O L V E R /////////////////////////////////////////			   
+
+			   
+			   
+/////////////////////   PHASE-FIELD BGK SOLVER ///////////////////////////////
+
+			   h[E  ] = (*this->localDistributionsH)(D3Q27System::ET_E, x1,x2,x3);
+			   h[N  ] = (*this->localDistributionsH)(D3Q27System::ET_N,x1,x2,x3); 
+			   h[T  ] = (*this->localDistributionsH)(D3Q27System::ET_T,x1,x2,x3);
+			   h[NE ] = (*this->localDistributionsH)(D3Q27System::ET_NE,x1,x2,x3);
+			   h[NW ] = (*this->localDistributionsH)(D3Q27System::ET_NW,x1p,x2,x3);
+			   h[TE ] = (*this->localDistributionsH)(D3Q27System::ET_TE,x1,x2,x3);
+			   h[TW ] = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p,x2,x3);
+			   h[TN ] = (*this->localDistributionsH)(D3Q27System::ET_TN,x1,x2,x3);
+			   h[TS ] = (*this->localDistributionsH)(D3Q27System::ET_TS,x1,x2p,x3);
+			   h[TNE] = (*this->localDistributionsH)(D3Q27System::ET_TNE,x1,x2,x3);
+			   h[TNW] = (*this->localDistributionsH)(D3Q27System::ET_TNW,x1p,x2,x3);
+			   h[TSE] = (*this->localDistributionsH)(D3Q27System::ET_TSE,x1,x2p,x3);
+			   h[TSW] = (*this->localDistributionsH)(D3Q27System::ET_TSW,x1p,x2p,x3);
+
+			   h[W  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_W,x1p,x2,x3  );
+			   h[S  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_S,x1,x2p,x3  );
+			   h[B  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_B,x1,x2,x3p  );
+			   h[SW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW,x1p,x2p,x3 );
+			   h[SE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE,x1,x2p,x3 );
+			   h[BW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW,x1p,x2,x3p );
+			   h[BE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE,x1,x2,x3p );
+			   h[BS ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS,x1,x2p,x3p );
+			   h[BN ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN,x1,x2,x3p );
+			   h[BSW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+			   h[BSE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE,x1,x2p,x3p);
+			   h[BNW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW,x1p,x2,x3p);
+			   h[BNE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE,x1,x2,x3p);
+
+			   h[ZERO] = (*this->zeroDistributionsH)(x1,x2,x3);
+			   
+			   
+			   //LBMReal denom = sqrt(dX1_phi*dX1_phi + dX2_phi*dX2_phi + dX3_phi*dX3_phi) + 1e-15;
+			   //LBMReal di = sqrt(8*kappa/beta);
+			   LBMReal tauH1 = 3.0*mob + 0.5;
+			   for (int dir = STARTF; dir < (ENDF+1); dir++)
+			   {
+				   LBMReal velProd = DX1[dir]*ux + DX2[dir]*uy + DX3[dir]*uz;
+				   LBMReal velSq1 = velProd*velProd;
+				   LBMReal hEq, gEq;
+				   
+				   if (dir != ZERO)
+				   {
+					   //LBMReal dirGrad_phi = DX1[dir]*dX1_phi+DX2[dir]*dX2_phi+DX3[dir]*dX3_phi;
+					   LBMReal dirGrad_phi = (phi[dir] - phi[INVDIR[dir]])/2.0;
+					   //LBMReal hSource = (tauH - 0.5)*(1.0 - phi[ZERO])*(phi[ZERO])*(dirGrad_phi)/denom; // + phi[ZERO]*(dxux + dyuy + dzuz);
+						   
+					   //LBMReal hSource =((phi[ZERO]>phiH || phi[ZERO]<phiL) ? 0.1 : 1.0) * 3.0*mob*(-4.0)/di*(phi[ZERO] - phiL)*(phi[ZERO] - phiH)*(dirGrad_phi)/denom;
+					   LBMReal hSource = 3.0*mob*(-4.0)/di*(phi[ZERO] - phiL)*(phi[ZERO] - phiH)*(dirGrad_phi)/denom;
+					   hEq = phi[ZERO]*WEIGTH[dir]*(1.0 + 3.0*velProd + 4.5*velSq1 - 1.5*(ux2+uy2+uz2)) + hSource*WEIGTH[dir];
+					   //gEq = rho*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(vx2+vy2+vz2))*c1o3 + (p1-rho*c1o3)*WEIGTH[dir];
+					   //h[dir] = hEq; //h[dir] - (h[dir] - hEq)/(tauH + 0.5));  /// This corresponds with the collision factor of 1.0 which equals (tauH + 0.5). 
+					   h[dir] = h[dir] - (h[dir] - hEq)/(tauH1); // + WEIGTH[dir]*phi[ZERO]*(dxux + dyuy + dzuz);
+					   //h[dir] = h[dir] - (h[dir] - hEq)/(tauH1);
+					   //g[dir] = g[dir] - collFactorM*(g[dir]-gEq) + 0.5*forcingTerm[dir];
+
+				   } 
+				   else
+				   {
+					   hEq = phi[ZERO]*WEIGTH[ZERO]*(1.0 - 1.5*(ux2+uy2+uz2));
+					   //gEq = rho*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(vx2+vy2+vz2))*c1o3 + (p1-rho*c1o3)*WEIGTH[dir];
+					   //h[dir] = hEq;
+					   h[ZERO] = h[ZERO] - (h[ZERO] - hEq)/(tauH1); // + WEIGTH[ZERO]*phi[ZERO]*(dxux + dyuy + dzuz);
+					   //g[dir] = g[dir] - collFactorM*(g[dir]-gEq) + 0.5*forcingTerm[dir];
+				   }
+			   }
+			   
+			   
+			   (*this->localDistributionsH)(D3Q27System::ET_E,   x1,  x2,  x3) = h[D3Q27System::INV_E];
+			   (*this->localDistributionsH)(D3Q27System::ET_N,   x1,  x2,  x3) = h[D3Q27System::INV_N];
+			   (*this->localDistributionsH)(D3Q27System::ET_T,   x1,  x2,  x3) = h[D3Q27System::INV_T];
+			   (*this->localDistributionsH)(D3Q27System::ET_NE,  x1,  x2,  x3) = h[D3Q27System::INV_NE];
+			   (*this->localDistributionsH)(D3Q27System::ET_NW,  x1p, x2,  x3) = h[D3Q27System::INV_NW];
+			   (*this->localDistributionsH)(D3Q27System::ET_TE,  x1,  x2,  x3) = h[D3Q27System::INV_TE];
+			   (*this->localDistributionsH)(D3Q27System::ET_TW,  x1p, x2,  x3) = h[D3Q27System::INV_TW];
+			   (*this->localDistributionsH)(D3Q27System::ET_TN,  x1,  x2,  x3) = h[D3Q27System::INV_TN];
+			   (*this->localDistributionsH)(D3Q27System::ET_TS,  x1,  x2p, x3) = h[D3Q27System::INV_TS];
+			   (*this->localDistributionsH)(D3Q27System::ET_TNE, x1,  x2,  x3) = h[D3Q27System::INV_TNE];
+			   (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2,  x3) = h[D3Q27System::INV_TNW];
+			   (*this->localDistributionsH)(D3Q27System::ET_TSE, x1,  x2p, x3) = h[D3Q27System::INV_TSE];
+			   (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3) = h[D3Q27System::INV_TSW];
+			   
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_W,   x1p, x2,  x3 ) = h[D3Q27System::INV_W ];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_S,   x1,  x2p, x3 ) = h[D3Q27System::INV_S ];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_B,   x1,  x2,  x3p) = h[D3Q27System::INV_B ];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_SW,  x1p, x2p, x3 ) = h[D3Q27System::INV_SW];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_SE,  x1,  x2p, x3 ) = h[D3Q27System::INV_SE];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BW,  x1p, x2,  x3p) = h[D3Q27System::INV_BW];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BE,  x1,  x2,  x3p) = h[D3Q27System::INV_BE];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BS,  x1,  x2p, x3p) = h[D3Q27System::INV_BS];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BN,  x1,  x2,  x3p) = h[D3Q27System::INV_BN];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p) = h[D3Q27System::INV_BSW];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1,  x2p, x3p) = h[D3Q27System::INV_BSE];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2,  x3p) = h[D3Q27System::INV_BNW];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1,  x2,  x3p) = h[D3Q27System::INV_BNE];
+			   
+			   (*this->zeroDistributionsH)(x1,x2,x3) = h[D3Q27System::ZERO];			   
+			   
+			   
+/////////////////////   END OF OLD BGK SOLVER ///////////////////////////////
+			   
+
+
+
+
+
+               //////////////////////////////////////////////////////////////////////////
+
+            }
+         }
+      }
+   }
+   dataSet->setPhaseField(divU);
+   
+   }
+}
+//////////////////////////////////////////////////////////////////////////
+double MultiphaseCumulantLBMKernel::getCallculationTime()
+{
+   //return timer.getDuration();
+   return timer.getTotalTime();
+}
+//////////////////////////////////////////////////////////////////////////
+
+LBMReal MultiphaseCumulantLBMKernel::gradX1_phi()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*DX1[k]*phi[k];
+	}
+	return 3.0*sum;
+}
+
+LBMReal MultiphaseCumulantLBMKernel::gradX2_phi()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*DX2[k]*phi[k];
+	}
+	return 3.0*sum;
+}
+
+LBMReal MultiphaseCumulantLBMKernel::gradX3_phi()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*DX3[k]*phi[k];
+	}
+	return 3.0*sum;
+}
+
+
+
+LBMReal MultiphaseCumulantLBMKernel::gradX1_pr1()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*DX1[k]*pr1[k];
+	}
+	return 3.0*sum;
+	//return 0.5*(pr1[E] - pr1[W]);
+}
+
+LBMReal MultiphaseCumulantLBMKernel::gradX2_pr1()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*DX2[k]*pr1[k];
+	}
+	return 3.0*sum;
+	//return 0.5*(pr1[N] - pr1[S]);
+}
+
+LBMReal MultiphaseCumulantLBMKernel::gradX3_pr1()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*DX3[k]*pr1[k];
+	}
+	return 3.0*sum;
+	//return 0.5*(pr1[T] - pr1[B]);
+}
+
+
+
+LBMReal MultiphaseCumulantLBMKernel::nabla2_phi()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*(phi[k] - phi[ZERO]);
+	}
+	return 6.0*sum;
+}
+///// Commnets neeeded ////////
+
+void MultiphaseCumulantLBMKernel::computePhasefield()
+{
+	using namespace D3Q27System;
+	DistributionArray3DPtr distributionsH = dataSet->getHdistributions();
+
+	//const int bcArrayMaxX1 = (int)distributionsH->getNX1();
+	//const int bcArrayMaxX2 = (int)distributionsH->getNX2();
+	//const int bcArrayMaxX3 = (int)distributionsH->getNX3();
+
+	int minX1 = ghostLayerWidth;
+	int minX2 = ghostLayerWidth;
+	int minX3 = ghostLayerWidth;
+	int maxX1 = (int)distributionsH->getNX1() - ghostLayerWidth;
+	int maxX2 = (int)distributionsH->getNX2() - ghostLayerWidth;
+	int maxX3 = (int)distributionsH->getNX3() - ghostLayerWidth;
+
+	//------------- Computing the phase-field ------------------
+	for(int x3 = minX3; x3 < maxX3; x3++)
+	{
+		for(int x2 = minX2; x2 < maxX2; x2++)
+		{
+			for(int x1 = minX1; x1 < maxX1; x1++)
+			{
+				//if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3))
+				{
+					int x1p = x1 + 1;
+					int x2p = x2 + 1;
+					int x3p = x3 + 1;
+
+					h[E  ] = (*this->localDistributionsH)(D3Q27System::ET_E, x1,x2,x3);
+					h[N  ] = (*this->localDistributionsH)(D3Q27System::ET_N,x1,x2,x3); 
+					h[T  ] = (*this->localDistributionsH)(D3Q27System::ET_T,x1,x2,x3);
+					h[NE ] = (*this->localDistributionsH)(D3Q27System::ET_NE,x1,x2,x3);
+					h[NW ] = (*this->localDistributionsH)(D3Q27System::ET_NW,x1p,x2,x3);
+					h[TE ] = (*this->localDistributionsH)(D3Q27System::ET_TE,x1,x2,x3);
+					h[TW ] = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p,x2,x3);
+					h[TN ] = (*this->localDistributionsH)(D3Q27System::ET_TN,x1,x2,x3);
+					h[TS ] = (*this->localDistributionsH)(D3Q27System::ET_TS,x1,x2p,x3);
+					h[TNE] = (*this->localDistributionsH)(D3Q27System::ET_TNE,x1,x2,x3);
+					h[TNW] = (*this->localDistributionsH)(D3Q27System::ET_TNW,x1p,x2,x3);
+					h[TSE] = (*this->localDistributionsH)(D3Q27System::ET_TSE,x1,x2p,x3);
+					h[TSW] = (*this->localDistributionsH)(D3Q27System::ET_TSW,x1p,x2p,x3);
+
+					h[W  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_W,x1p,x2,x3  );
+					h[S  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_S,x1,x2p,x3  );
+					h[B  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_B,x1,x2,x3p  );
+					h[SW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW,x1p,x2p,x3 );
+					h[SE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE,x1,x2p,x3 );
+					h[BW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW,x1p,x2,x3p );
+					h[BE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE,x1,x2,x3p );
+					h[BS ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS,x1,x2p,x3p );
+					h[BN ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN,x1,x2,x3p );
+					h[BSW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+					h[BSE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE,x1,x2p,x3p);
+					h[BNW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW,x1p,x2,x3p);
+					h[BNE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE,x1,x2,x3p);
+
+					h[ZERO] = (*this->zeroDistributionsH)(x1,x2,x3);
+
+					/*(*this->phaseField)(x1,x2,x3) = h[ZERO] + h[E] + h[W] + h[N] + h[S] + h[T] + h[B] + h[NE] + h[SW] + h[SE] + h[NW] + h[TE] + h[BW] + 
+						h[BE] + h[TW] + h[TN] + h[BS] + h[BN] + h[TS] + h[TNE] + h[TNW] + h[TSE] + h[TSW] + h[BNE] + h[BNW] + h[BSE] + h[BSW];*/
+
+				}
+			}
+		}
+	}
+	//----------------------------------------------------------
+	
+/*
+	/////// Filling ghost nodes for FD computations //////////
+	for(int x1 = minX1; x1 < maxX1; x1++)
+	{
+		for(int x2 = minX2; x2 < maxX2; x2++)
+		{
+			int x3 = 0;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, x2, maxX3-1);
+			x3 = maxX3;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, x2, minX3);
+		}
+	}
+	for(int x2 = minX2; x2 < maxX2; x2++)
+	{
+		for(int x3 = minX3; x3 < maxX3; x3++)
+		{
+			int x1 = 0;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(maxX1-1, x2, x3);
+			x1 = maxX1;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(minX1, x2, x3);
+		}
+	}
+	for(int x1 = minX1; x1 < maxX1; x1++)
+	{
+		for(int x3 = minX3; x3 < maxX3; x3++)
+		{
+			int x2 = 0;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, maxX2-1, x3);
+			x2 = maxX2;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, minX2, x3);
+		}
+	}
+	(*phaseField)(0, 0,     0    ) = (*phaseField)(maxX1-1, maxX2-1, maxX3-1);
+	(*phaseField)(0, 0,     maxX3) = (*phaseField)(maxX1-1, maxX2-1, minX3  );
+	(*phaseField)(0, maxX2, 0    ) = (*phaseField)(maxX1-1, minX2, maxX3-1  );
+	(*phaseField)(0, maxX2, maxX3) = (*phaseField)(maxX1-1, minX2, minX3    );
+
+	(*phaseField)(maxX1, 0,     0    ) = (*phaseField)(minX1, maxX2-1, maxX3-1);
+	(*phaseField)(maxX1, 0,     maxX3) = (*phaseField)(minX1, maxX2-1, minX3  );
+	(*phaseField)(maxX1, maxX2, 0    ) = (*phaseField)(minX1, minX2, maxX3-1  );
+	(*phaseField)(maxX1, maxX2, maxX3) = (*phaseField)(minX1, minX2, minX3    );
+
+	///////////////////////////////////////////////////////// 
+*/
+}
+
+void MultiphaseCumulantLBMKernel::findNeighbors(CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr ph, CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr pf, int x1, int x2, int x3)
+{
+	using namespace D3Q27System;
+	
+	BCArray3DPtr bcArray = this->getBCProcessor()->getBCArray();
+
+	phi[ZERO] = (*ph)(x1,x2,x3);
+	pr1[ZERO] = (*pf)(x1,x2,x3);
+
+	LBMReal a = -0.5*sqrt(2*beta/kappa)*cos(contactAngle*PI/180);
+	LBMReal a1 = 1 + a;
+	
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		
+		if (!bcArray->isSolid(x1 + DX1[k], x2 + DX2[k], x3 + DX3[k]))
+		{
+			phi[k] = (*ph)(x1 + DX1[k], x2 + DX2[k], x3 + DX3[k]);
+			pr1[k] = (*pf)(x1 + DX1[k], x2 + DX2[k], x3 + DX3[k]);
+		} 
+		else
+		{
+			/*
+			if (phi[ZERO] < 1e-2)
+			{
+				phi[k] = (*ph)(x1 + DX1[INVDIR[k]], x2 + DX2[INVDIR[k]], x3 + DX3[INVDIR[k]]);
+			}
+			else
+			{
+				LBMReal phi_f = (*ph)(x1 + DX1[k], x2, x3 + DX3[k]);
+				phi[k] = (a1 - sqrt(a1*a1 - 4*a*phi_f) )/a - phi_f;
+			}
+			*/
+			
+			phi[k] = (*ph)(x1, x2, x3);
+			pr1[k] = (*pf)(x1, x2, x3);
+
+			//if (bcArray->isSolid(x1 + DX1[k], x2, x3))
+			//{
+			//	phi[k] = (*ph)(x1, x2, x3);
+			//	//if (!bcArray->isSolid(x1 , x2 + DX2[k], x3 + DX3[k]))
+			//	//{
+			//	//	//phi[k] = (*ph)(x1 , x2 + DX2[k], x3 + DX3[k]);
+			//	//	LBMReal phi_f = (*ph)(x1 , x2 + DX2[k], x3 + DX3[k]);
+			//	//	phi[k] = (a1 - sqrt(a1*a1 - 4*a*phi_f) )/a - phi_f;
+			//	//} 
+			//	//else
+			//	//{
+			//	//	phi[k] = (*ph)(x1, x2, x3);
+			//	//}
+			//}
+			//
+			//if (bcArray->isSolid(x1 , x2 + DX2[k], x3))
+			//{
+			//	phi[k] = (*ph)(x1, x2, x3);
+			//	//if (!bcArray->isSolid(x1 + DX1[k], x2 , x3 + DX3[k]))
+			//	//{
+			//	//	//phi[k] = (*ph)(x1 + DX1[k], x2 , x3 + DX3[k]);
+			//	//	LBMReal phi_f = (*ph)(x1 + DX1[k], x2 , x3 + DX3[k]);
+			//	//	phi[k] = (a1 - sqrt(a1*a1 - 4*a*phi_f) )/a - phi_f;
+			//	//} 
+			//	//else
+			//	//{
+			//	//	phi[k] = (*ph)(x1, x2, x3);
+			//	//}
+			//}
+
+
+			//if (bcArray->isSolid(x1 , x2, x3+ DX3[k]))
+			//{
+			//	if (!bcArray->isSolid(x1 + DX1[k], x2 + DX2[k], x3))
+			//	{
+			//		//phi[k] = (*ph)(x1 + DX1[k], x2 + DX2[k], x3);
+			//		LBMReal phi_f = (*ph)(x1 + DX1[k], x2 + DX2[k], x3);
+			//		phi[k] = (a1 - sqrt(a1*a1 - 4*a*phi_f) )/a - phi_f;
+			//	} 
+			//	else
+			//	{
+			//		phi[k] = (*ph)(x1, x2, x3);
+			//	}
+			//}
+
+
+			/*if (bcArray->isSolid(x1 + DX1[k], x2, x3)) phi[k] = (*ph)(x1 , x2 + DX2[k], x3 + DX3[k]);
+			if (bcArray->isSolid(x1 , x2 + DX2[k], x3)) phi[k] = (*ph)(x1 + DX1[k], x2 , x3 + DX3[k]);
+			if (bcArray->isSolid(x1 , x2, x3+ DX3[k])) phi[k] = (*ph)(x1 + DX1[k], x2 + DX2[k], x3 );*/
+
+			/*if (phi[ZERO] < 0.00001)
+			{
+			phi[k] = 0.0;
+			} 
+			else
+			{
+			phi[k] = 0.5;
+			}*/
+			
+			//phi[k] = 0.5;
+			//phi[k] = (*ph)(x1, x2, x3);
+			//phi[k] = (*ph)(x1 + DX1[INVDIR[k]], x2 + DX2[INVDIR[k]], x3 + DX3[INVDIR[k]]);
+			
+			
+		}
+	}
+
+	/*
+	phi[E  ] = (*ph)(x1 + DX1[E  ], x2 + DX2[E  ], x3 + DX3[E  ]);
+	phi[N  ] = (*ph)(x1 + DX1[N  ], x2 + DX2[N  ], x3 + DX3[N  ]);
+	phi[T  ] = (*ph)(x1 + DX1[T  ], x2 + DX2[T  ], x3 + DX3[T  ]);
+	phi[W  ] = (*ph)(x1 + DX1[W  ], x2 + DX2[W  ], x3 + DX3[W  ]);
+	phi[S  ] = (*ph)(x1 + DX1[S  ], x2 + DX2[S  ], x3 + DX3[S  ]);
+	phi[B  ] = (*ph)(x1 + DX1[B  ], x2 + DX2[B  ], x3 + DX3[B  ]);
+	phi[NE ] = (*ph)(x1 + DX1[NE ], x2 + DX2[NE ], x3 + DX3[NE ]);
+	phi[NW ] = (*ph)(x1 + DX1[NW ], x2 + DX2[NW ], x3 + DX3[NW ]);
+	phi[TE ] = (*ph)(x1 + DX1[TE ], x2 + DX2[TE ], x3 + DX3[TE ]);
+	phi[TW ] = (*ph)(x1 + DX1[TW ], x2 + DX2[TW ], x3 + DX3[TW ]);
+	phi[TN ] = (*ph)(x1 + DX1[TN ], x2 + DX2[TN ], x3 + DX3[TN ]);
+	phi[TS ] = (*ph)(x1 + DX1[TS ], x2 + DX2[TS ], x3 + DX3[TS ]);
+	phi[SW ] = (*ph)(x1 + DX1[SW ], x2 + DX2[SW ], x3 + DX3[SW ]);
+	phi[SE ] = (*ph)(x1 + DX1[SE ], x2 + DX2[SE ], x3 + DX3[SE ]);
+	phi[BW ] = (*ph)(x1 + DX1[BW ], x2 + DX2[BW ], x3 + DX3[BW ]);
+	phi[BE ] = (*ph)(x1 + DX1[BE ], x2 + DX2[BE ], x3 + DX3[BE ]);
+	phi[BS ] = (*ph)(x1 + DX1[BS ], x2 + DX2[BS ], x3 + DX3[BS ]);
+	phi[BN ] = (*ph)(x1 + DX1[BN ], x2 + DX2[BN ], x3 + DX3[BN ]);
+	phi[BSW] = (*ph)(x1 + DX1[BSW], x2 + DX2[BSW], x3 + DX3[BSW]);
+	phi[BSE] = (*ph)(x1 + DX1[BSE], x2 + DX2[BSE], x3 + DX3[BSE]);
+	phi[BNW] = (*ph)(x1 + DX1[BNW], x2 + DX2[BNW], x3 + DX3[BNW]);
+	phi[BNE] = (*ph)(x1 + DX1[BNE], x2 + DX2[BNE], x3 + DX3[BNE]);
+	phi[TNE] = (*ph)(x1 + DX1[TNE], x2 + DX2[TNE], x3 + DX3[TNE]);
+	phi[TNW] = (*ph)(x1 + DX1[TNW], x2 + DX2[TNW], x3 + DX3[TNW]);
+	phi[TSE] = (*ph)(x1 + DX1[TSE], x2 + DX2[TSE], x3 + DX3[TSE]);
+	phi[TSW] = (*ph)(x1 + DX1[TSW], x2 + DX2[TSW], x3 + DX3[TSW]);
+	*/
+}
+
+void MultiphaseCumulantLBMKernel::pressureFiltering(CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr pf /*Pressure-Field*/, CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr pf_filtered /*Pressure-Field*/)
+{
+	using namespace D3Q27System;
+	
+	BCArray3DPtr bcArray = this->getBCProcessor()->getBCArray();
+
+
+
+	const int bcArrayMaxX1 = (int)bcArray->getNX1();
+	const int bcArrayMaxX2 = (int)bcArray->getNX2();
+	const int bcArrayMaxX3 = (int)bcArray->getNX3();
+
+	int minX1 = ghostLayerWidth;
+	int minX2 = ghostLayerWidth;
+	int minX3 = ghostLayerWidth;
+	int maxX1 = bcArrayMaxX1-ghostLayerWidth;
+	int maxX2 = bcArrayMaxX2-ghostLayerWidth;
+	int maxX3 = bcArrayMaxX3-ghostLayerWidth;
+
+	for(int x3 = 0; x3 <= maxX3; x3++)
+	{
+		for(int x2 = 0; x2 <= maxX2; x2++)
+		{
+			for(int x1 = 0; x1 <= maxX1; x1++)
+			{
+				if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3))
+				{
+					int cnum = 0;
+					LBMReal sum = 0.0;
+					for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+					{
+						//if (!bcArray->isSolid(x1 + DX1[k], x2 + DX2[k], x3 + DX3[k]))
+						{
+							cnum++;
+							sum += (*pf)(x1 + DX1[k], x2 + DX2[k], x3 + DX3[k])*WEIGTH[k];
+							 
+						}
+					}
+					LBMReal av = sum/cnum;
+					(*pf_filtered)(x1, x2, x3) = ((*pf)(x1, x2, x3))*WEIGTH[ZERO] + sum;
+
+				}
+			}
+		}
+	}
+
+
+	
+	
+}
+
+
+
+void MultiphaseCumulantLBMKernel::swapDistributions()
+{
+   dataSet->getFdistributions()->swap();
+   dataSet->getHdistributions()->swap();
+   //computePhasefield();
+}
\ No newline at end of file
diff --git a/apps/cpu/Multiphase/backup/MultiphaseCumulantLBMKernel (Original Final from Phoenix).cpp b/apps/cpu/Multiphase/backup/MultiphaseCumulantLBMKernel (Original Final from Phoenix).cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/apps/cpu/Multiphase/backup/MultiphaseCumulantLBMKernel (Original Final).cpp b/apps/cpu/Multiphase/backup/MultiphaseCumulantLBMKernel (Original Final).cpp
new file mode 100644
index 0000000000000000000000000000000000000000..498d91ff8fb8e0a7ae19000225d82a2d7e757387
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/MultiphaseCumulantLBMKernel (Original Final).cpp	
@@ -0,0 +1,2700 @@
+#include "MultiphaseCumulantLBMKernel.h"
+#include "D3Q27System.h"
+#include "InterpolationProcessor.h"
+#include "D3Q27EsoTwist3DSplittedVector.h"
+#include <math.h>
+#include <omp.h>
+
+#define PROOF_CORRECTNESS
+
+//////////////////////////////////////////////////////////////////////////
+MultiphaseCumulantLBMKernel::MultiphaseCumulantLBMKernel()
+{
+   this->nx1 = 0;
+   this->nx2 = 0;
+   this->nx3 = 0;
+   this->parameter = NORMAL;
+   this->OxyyMxzz = 1.0;
+   this->compressible = false;
+}
+//////////////////////////////////////////////////////////////////////////
+MultiphaseCumulantLBMKernel::MultiphaseCumulantLBMKernel(int nx1, int nx2, int nx3, Parameter p) 
+{
+   this->nx1 = nx1;
+   this->nx2 = nx2;
+   this->nx3 = nx3;
+   parameter = p;
+   this->compressible = false;
+}
+//////////////////////////////////////////////////////////////////////////
+MultiphaseCumulantLBMKernel::~MultiphaseCumulantLBMKernel(void)
+{
+
+}
+//////////////////////////////////////////////////////////////////////////
+void MultiphaseCumulantLBMKernel::init()
+{
+   //DistributionArray3DPtr d(new D3Q27EsoTwist3DSplittedVector(nx1+ghostLayerWitdh*2, nx2+ghostLayerWitdh*2, nx3+ghostLayerWitdh*2, -999.0));
+   DistributionArray3DPtr f(new D3Q27EsoTwist3DSplittedVector(nx1+2, nx2+2, nx3+2, -999.0));
+   DistributionArray3DPtr h(new D3Q27EsoTwist3DSplittedVector(nx1+2, nx2+2, nx3+2, -999.0)); // For phase-field
+   PhaseFieldArray3DPtr divU(new CbArray3D<LBMReal,IndexerX3X2X1>(nx1+2, nx2+2, nx3+2, 0.0));
+   dataSet->setFdistributions(f);
+   dataSet->setHdistributions(h); // For phase-field
+   dataSet->setPhaseField(divU);
+}
+//////////////////////////////////////////////////////////////////////////
+LBMKernelPtr MultiphaseCumulantLBMKernel::clone()
+{
+   LBMKernelPtr kernel(new MultiphaseCumulantLBMKernel(nx1, nx2, nx3, parameter));
+   boost::dynamic_pointer_cast<MultiphaseCumulantLBMKernel>(kernel)->init();
+   
+   kernel->setCollisionFactorMultiphase(this->collFactorL, this->collFactorG);
+   kernel->setDensityRatio(this->densityRatio);
+   kernel->setMultiphaseModelParameters(this->beta, this->kappa);
+   kernel->setContactAngle(this->contactAngle);
+   kernel->setPhiL(this->phiL);
+   kernel->setPhiH(this->phiH);
+   kernel->setPhaseFieldRelaxation(this->tauH);
+   kernel->setMobility(this->mob);
+
+   kernel->setBCProcessor(bcProcessor->clone(kernel));
+   kernel->setWithForcing(withForcing);
+   kernel->setForcingX1(muForcingX1);
+   kernel->setForcingX2(muForcingX2);
+   kernel->setForcingX3(muForcingX3);
+   kernel->setIndex(ix1, ix2, ix3);
+   kernel->setDeltaT(deltaT);
+   switch (parameter)
+   {
+   case NORMAL:
+      boost::dynamic_pointer_cast<MultiphaseCumulantLBMKernel>(kernel)->OxyyMxzz = 1.0;
+   	break;
+   case MAGIC:
+      boost::dynamic_pointer_cast<MultiphaseCumulantLBMKernel>(kernel)->OxyyMxzz = 2.0 +(-collFactor);
+      break;
+   }
+   return kernel;
+}
+//////////////////////////////////////////////////////////////////////////
+void MultiphaseCumulantLBMKernel::calculate()
+{
+   timer.resetAndStart();
+   collideAll();
+   timer.stop();
+}
+//////////////////////////////////////////////////////////////////////////
+void MultiphaseCumulantLBMKernel::collideAll()
+{
+   using namespace D3Q27System;
+
+   //initializing of forcing stuff 
+   /*if (withForcing)
+   {
+   muForcingX1.DefineVar("x1",&muX1); muForcingX1.DefineVar("x2",&muX2); muForcingX1.DefineVar("x3",&muX3);
+   muForcingX2.DefineVar("x1",&muX1); muForcingX2.DefineVar("x2",&muX2); muForcingX2.DefineVar("x3",&muX3);
+   muForcingX3.DefineVar("x1",&muX1); muForcingX3.DefineVar("x2",&muX2); muForcingX3.DefineVar("x3",&muX3);
+
+   muDeltaT = deltaT;
+
+   muForcingX1.DefineVar("dt",&muDeltaT);
+   muForcingX2.DefineVar("dt",&muDeltaT);
+   muForcingX3.DefineVar("dt",&muDeltaT);
+
+   muNu = (1.0/3.0)*(1.0/collFactor - 1.0/2.0);
+
+   muForcingX1.DefineVar("nu",&muNu);
+   muForcingX2.DefineVar("nu",&muNu);
+   muForcingX3.DefineVar("nu",&muNu);
+
+   LBMReal forcingX1 = 0;
+   LBMReal forcingX2 = 0;
+   LBMReal forcingX3 = 0;
+   }*/
+   forcingX1 = 0.0;
+   forcingX2 = 0.0;
+   forcingX3 = 0.0;
+   /////////////////////////////////////
+
+   localDistributionsF = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions();
+   nonLocalDistributionsF = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions();
+   zeroDistributionsF = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions();
+
+   localDistributionsH = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getHdistributions())->getLocalDistributions();
+   nonLocalDistributionsH = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getHdistributions())->getNonLocalDistributions();
+   zeroDistributionsH = boost::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getHdistributions())->getZeroDistributions();
+
+   
+
+   //phaseField = dataSet->getPhaseField();
+
+   BCArray3DPtr bcArray = this->getBCProcessor()->getBCArray();
+
+   
+
+   const int bcArrayMaxX1 = (int)bcArray->getNX1();
+   const int bcArrayMaxX2 = (int)bcArray->getNX2();
+   const int bcArrayMaxX3 = (int)bcArray->getNX3();
+
+   int minX1 = ghostLayerWidth;
+   int minX2 = ghostLayerWidth;
+   int minX3 = ghostLayerWidth;
+   int maxX1 = bcArrayMaxX1-ghostLayerWidth;
+   int maxX2 = bcArrayMaxX2-ghostLayerWidth;
+   int maxX3 = bcArrayMaxX3-ghostLayerWidth;
+
+
+//#pragma omp parallel num_threads(8)
+   {
+   //   int i = omp_get_thread_num();
+   //   printf_s("Hello from thread %d\n", i);
+   //}
+//#pragma omp for 
+
+   
+   CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr phaseField(new CbArray3D<LBMReal,IndexerX3X2X1>(bcArrayMaxX1, bcArrayMaxX2, bcArrayMaxX3, -999.0));
+   CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr divU(new CbArray3D<LBMReal,IndexerX3X2X1>(bcArrayMaxX1, bcArrayMaxX2, bcArrayMaxX3, 0.0));
+   
+   //CbArray3D<LBMReal> phaseField(bcArrayMaxX1, bcArrayMaxX2, bcArrayMaxX3,-999);
+   
+
+   for(int x3 = 0; x3 <= maxX3; x3++)
+   {
+      for(int x2 = 0; x2 <= maxX2; x2++)
+      {
+         for(int x1 = 0; x1 <= maxX1; x1++)
+         {
+            if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3))
+            {
+				int x1p = x1 + 1;
+				int x2p = x2 + 1;
+				int x3p = x3 + 1;
+
+				LBMReal mfcbb = (*this->localDistributionsH)(D3Q27System::ET_E, x1,x2,x3);
+				LBMReal mfbcb = (*this->localDistributionsH)(D3Q27System::ET_N,x1,x2,x3); 
+				LBMReal mfbbc = (*this->localDistributionsH)(D3Q27System::ET_T,x1,x2,x3);
+				LBMReal mfccb = (*this->localDistributionsH)(D3Q27System::ET_NE,x1,x2,x3);
+				LBMReal mfacb = (*this->localDistributionsH)(D3Q27System::ET_NW,x1p,x2,x3);
+				LBMReal mfcbc = (*this->localDistributionsH)(D3Q27System::ET_TE,x1,x2,x3);
+				LBMReal mfabc = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p,x2,x3);
+				LBMReal mfbcc = (*this->localDistributionsH)(D3Q27System::ET_TN,x1,x2,x3);
+				LBMReal mfbac = (*this->localDistributionsH)(D3Q27System::ET_TS,x1,x2p,x3);
+				LBMReal mfccc = (*this->localDistributionsH)(D3Q27System::ET_TNE,x1,x2,x3);
+				LBMReal mfacc = (*this->localDistributionsH)(D3Q27System::ET_TNW,x1p,x2,x3);
+				LBMReal mfcac = (*this->localDistributionsH)(D3Q27System::ET_TSE,x1,x2p,x3);
+				LBMReal mfaac = (*this->localDistributionsH)(D3Q27System::ET_TSW,x1p,x2p,x3);
+				LBMReal mfabb = (*this->nonLocalDistributionsH)(D3Q27System::ET_W,x1p,x2,x3  );
+				LBMReal mfbab = (*this->nonLocalDistributionsH)(D3Q27System::ET_S,x1,x2p,x3  );
+				LBMReal mfbba = (*this->nonLocalDistributionsH)(D3Q27System::ET_B,x1,x2,x3p  );
+				LBMReal mfaab = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW,x1p,x2p,x3 );
+				LBMReal mfcab = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE,x1,x2p,x3 );
+				LBMReal mfaba = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW,x1p,x2,x3p );
+				LBMReal mfcba = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE,x1,x2,x3p );
+				LBMReal mfbaa = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS,x1,x2p,x3p );
+				LBMReal mfbca = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN,x1,x2,x3p );
+				LBMReal mfaaa = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+				LBMReal mfcaa = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE,x1,x2p,x3p);
+				LBMReal mfaca = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW,x1p,x2,x3p);
+				LBMReal mfcca = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE,x1,x2,x3p);
+
+				LBMReal mfbbb = (*this->zeroDistributionsH)(x1,x2,x3);
+				//LBMReal phase = h[ZERO] + h[E] + h[W] + h[N] + h[S] + h[T] + h[B] + h[NE] + h[SW] + h[SE] + h[NW] + h[TE] + h[BW] + 
+				//	h[BE] + h[TW] + h[TN] + h[BS] + h[BN] + h[TS] + h[TNE] + h[TNW] + h[TSE] + h[TSW] + h[BNE] + h[BNW] + h[BSE] + h[BSW];
+				//if (phase > 1.0) phase = 1.0e0;
+				//(*phaseField)(x1,x2,x3) = phase;
+				(*phaseField)(x1,x2,x3) = (mfaaa+mfaac+mfaca+mfcaa+mfacc+mfcac+mfccc+mfcca)
+					+(mfaab+mfacb+mfcab+mfccb)+(mfaba+mfabc+mfcba+mfcbc)+(mfbaa+mfbac+mfbca+mfbcc)
+					+(mfabb+mfcbb)+(mfbab+mfbcb)+(mfbba+mfbbc)+mfbbb;
+			}
+		 }
+	  }
+   }
+   
+   
+   LBMReal collFactorM;
+   LBMReal forcingTerm[D3Q27System::ENDF+1];
+   LBMReal m000, m100, m010, m001, m110, m101, m011, m200, m020, m002, m120, m102, m210, m012, m201, m021, m111, m220, m202, m022, m211, m121, m112, m221, m212, m122, m222;
+   LBMReal k000, k100, k010, k001, k110, k101, k011, k200, k020, k002, k120, k102, k210, k012, k201, k021, k111, k220, k202, k022, k211, k121, k112, k221, k212, k122, k222;
+   LBMReal c000, c100, c010, c001, c110, c101, c011, c200, c020, c002, c120, c102, c210, c012, c201, c021, c111, c220, c202, c022, c211, c121, c112, c221, c212, c122, c222;
+
+   LBMReal k200_pl_k020_pl_k002, k200_mi_k020, k200_mi_k002, k210_pl_k012, k210_mi_k012, k201_pl_k021, k201_mi_k021, k120_pl_k102, k120_mi_k102, k220_pl_k202_pl_k022, 
+	   k220_mi2_k202_pl_k022, k220_pl_k202_mi2_k022;
+
+   LBMReal c200_pl_c020_pl_c002, c200_mi_c020, c200_mi_c002, c210_pl_c012, c210_mi_c012, c201_pl_c021, c201_mi_c021, c120_pl_c102, c120_mi_c102, c220_pl_c202_pl_c022, 
+	   c220_mi2_c202_pl_c022, c220_pl_c202_mi2_c022;
+
+   LBMReal w1, w2, w3, w4, w5, w6, w7, w8, w9, w10;
+   
+   w2  = 1.0;
+   w3  = 1.0;
+   w4  = 1.0;
+   w5  = 1.0;
+   w6  = 1.0;
+   w7  = 1.0;
+   w8  = 1.0;
+   w9  = 1.0;
+   w10 = 1.0;
+
+   for(int x3 = minX3; x3 < maxX3; x3++)
+   {
+      for(int x2 = minX2; x2 < maxX2; x2++)
+      {
+         for(int x1 = minX1; x1 < maxX1; x1++)
+         {
+            if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3))
+            {
+               int x1p = x1 + 1;
+               int x2p = x2 + 1;
+               int x3p = x3 + 1;
+
+
+               //////////////////////////////////////////////////////////////////////////
+               //Read distributions and phase field
+               ////////////////////////////////////////////////////////////////////////////
+               //////////////////////////////////////////////////////////////////////////
+
+               //E   N  T
+               //c   c  c
+               //////////
+               //W   S  B
+               //a   a  a
+
+               //Rest ist b
+
+               //mfxyz
+               //a - negative
+               //b - null
+               //c - positive
+               
+               // a b c
+               //-1 0 1
+			   
+			   /*
+			   phi[ZERO] = (phaseField)(x1,x2,x3);
+			   phi[E  ] = (phaseField)(x1 + DX1[E  ], x2 + DX2[E  ], x3 + DX3[E  ]);
+			   phi[N  ] = (phaseField)(x1 + DX1[N  ], x2 + DX2[N  ], x3 + DX3[N  ]);
+			   phi[T  ] = (phaseField)(x1 + DX1[T  ], x2 + DX2[T  ], x3 + DX3[T  ]);
+			   phi[W  ] = (phaseField)(x1 + DX1[W  ], x2 + DX2[W  ], x3 + DX3[W  ]);
+			   phi[S  ] = (phaseField)(x1 + DX1[S  ], x2 + DX2[S  ], x3 + DX3[S  ]);
+			   phi[B  ] = (phaseField)(x1 + DX1[B  ], x2 + DX2[B  ], x3 + DX3[B  ]);
+			   phi[NE ] = (phaseField)(x1 + DX1[NE ], x2 + DX2[NE ], x3 + DX3[NE ]);
+			   phi[NW ] = (phaseField)(x1 + DX1[NW ], x2 + DX2[NW ], x3 + DX3[NW ]);
+			   phi[TE ] = (phaseField)(x1 + DX1[TE ], x2 + DX2[TE ], x3 + DX3[TE ]);
+			   phi[TW ] = (phaseField)(x1 + DX1[TW ], x2 + DX2[TW ], x3 + DX3[TW ]);
+			   phi[TN ] = (phaseField)(x1 + DX1[TN ], x2 + DX2[TN ], x3 + DX3[TN ]);
+			   phi[TS ] = (phaseField)(x1 + DX1[TS ], x2 + DX2[TS ], x3 + DX3[TS ]);
+			   phi[SW ] = (phaseField)(x1 + DX1[SW ], x2 + DX2[SW ], x3 + DX3[SW ]);
+			   phi[SE ] = (phaseField)(x1 + DX1[SE ], x2 + DX2[SE ], x3 + DX3[SE ]);
+			   phi[BW ] = (phaseField)(x1 + DX1[BW ], x2 + DX2[BW ], x3 + DX3[BW ]);
+			   phi[BE ] = (phaseField)(x1 + DX1[BE ], x2 + DX2[BE ], x3 + DX3[BE ]);
+			   phi[BS ] = (phaseField)(x1 + DX1[BS ], x2 + DX2[BS ], x3 + DX3[BS ]);
+			   phi[BN ] = (phaseField)(x1 + DX1[BN ], x2 + DX2[BN ], x3 + DX3[BN ]);
+			   phi[BSW] = (phaseField)(x1 + DX1[BSW], x2 + DX2[BSW], x3 + DX3[BSW]);
+			   phi[BSE] = (phaseField)(x1 + DX1[BSE], x2 + DX2[BSE], x3 + DX3[BSE]);
+			   phi[BNW] = (phaseField)(x1 + DX1[BNW], x2 + DX2[BNW], x3 + DX3[BNW]);
+			   phi[BNE] = (phaseField)(x1 + DX1[BNE], x2 + DX2[BNE], x3 + DX3[BNE]);
+			   phi[TNE] = (phaseField)(x1 + DX1[TNE], x2 + DX2[TNE], x3 + DX3[TNE]);
+			   phi[TNW] = (phaseField)(x1 + DX1[TNW], x2 + DX2[TNW], x3 + DX3[TNW]);
+			   phi[TSE] = (phaseField)(x1 + DX1[TSE], x2 + DX2[TSE], x3 + DX3[TSE]);
+			   phi[TSW] = (phaseField)(x1 + DX1[TSW], x2 + DX2[TSW], x3 + DX3[TSW]);
+			   */
+			   findNeighbors(phaseField, x1, x2, x3);
+
+			   LBMReal mfcbb = (*this->localDistributionsF)(D3Q27System::ET_E, x1,x2,x3);
+			   LBMReal mfbcb = (*this->localDistributionsF)(D3Q27System::ET_N,x1,x2,x3); 
+			   LBMReal mfbbc = (*this->localDistributionsF)(D3Q27System::ET_T,x1,x2,x3);
+			   LBMReal mfccb = (*this->localDistributionsF)(D3Q27System::ET_NE,x1,x2,x3);
+			   LBMReal mfacb = (*this->localDistributionsF)(D3Q27System::ET_NW,x1p,x2,x3);
+			   LBMReal mfcbc = (*this->localDistributionsF)(D3Q27System::ET_TE,x1,x2,x3);
+			   LBMReal mfabc = (*this->localDistributionsF)(D3Q27System::ET_TW, x1p,x2,x3);
+			   LBMReal mfbcc = (*this->localDistributionsF)(D3Q27System::ET_TN,x1,x2,x3);
+			   LBMReal mfbac = (*this->localDistributionsF)(D3Q27System::ET_TS,x1,x2p,x3);
+			   LBMReal mfccc = (*this->localDistributionsF)(D3Q27System::ET_TNE,x1,x2,x3);
+			   LBMReal mfacc = (*this->localDistributionsF)(D3Q27System::ET_TNW,x1p,x2,x3);
+			   LBMReal mfcac = (*this->localDistributionsF)(D3Q27System::ET_TSE,x1,x2p,x3);
+			   LBMReal mfaac = (*this->localDistributionsF)(D3Q27System::ET_TSW,x1p,x2p,x3);
+			   LBMReal mfabb = (*this->nonLocalDistributionsF)(D3Q27System::ET_W,x1p,x2,x3  );
+			   LBMReal mfbab = (*this->nonLocalDistributionsF)(D3Q27System::ET_S,x1,x2p,x3  );
+			   LBMReal mfbba = (*this->nonLocalDistributionsF)(D3Q27System::ET_B,x1,x2,x3p  );
+			   LBMReal mfaab = (*this->nonLocalDistributionsF)(D3Q27System::ET_SW,x1p,x2p,x3 );
+			   LBMReal mfcab = (*this->nonLocalDistributionsF)(D3Q27System::ET_SE,x1,x2p,x3 );
+			   LBMReal mfaba = (*this->nonLocalDistributionsF)(D3Q27System::ET_BW,x1p,x2,x3p );
+			   LBMReal mfcba = (*this->nonLocalDistributionsF)(D3Q27System::ET_BE,x1,x2,x3p );
+			   LBMReal mfbaa = (*this->nonLocalDistributionsF)(D3Q27System::ET_BS,x1,x2p,x3p );
+			   LBMReal mfbca = (*this->nonLocalDistributionsF)(D3Q27System::ET_BN,x1,x2,x3p );
+			   LBMReal mfaaa = (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+			   LBMReal mfcaa = (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE,x1,x2p,x3p);
+			   LBMReal mfaca = (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW,x1p,x2,x3p);
+			   LBMReal mfcca = (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE,x1,x2,x3p);
+
+			   LBMReal mfbbb = (*this->zeroDistributionsF)(x1,x2,x3);
+
+			   
+
+			   LBMReal rhoH = 1.0;
+			   LBMReal rhoL = 1.0/densityRatio;
+
+			   //LBMReal rhoToPhi = (1.0 - 1.0/densityRatio);
+			   LBMReal rhoToPhi = (rhoH - rhoL)/(phiH - phiL);
+
+			   //collFactorM = phi[ZERO]*collFactorL + (1-phi[ZERO])*collFactorG;
+			   //collFactorM = phi[ZERO]*collFactorG + (1-phi[ZERO])*collFactorL;
+			   
+			   //LBMReal tauH = 1.0;
+			   LBMReal di = sqrt(8*kappa/beta);
+			   
+			   LBMReal dX1_phi = gradX1_phi();
+			   LBMReal dX2_phi = gradX2_phi();
+			   LBMReal dX3_phi = gradX3_phi();
+			   
+			   LBMReal denom = sqrt(dX1_phi*dX1_phi + dX2_phi*dX2_phi + dX3_phi*dX3_phi) + 1e-9;
+			   LBMReal normX1 = dX1_phi/denom;
+			   LBMReal normX2 = dX2_phi/denom;
+			   LBMReal normX3 = dX3_phi/denom;
+
+			   collFactorM = collFactorL + (collFactorL - collFactorG)*(phi[ZERO] - phiH)/(phiH - phiL);
+			   
+			   /*if ((phi[ZERO] > 0.1)||(phi[ZERO] < 0.9))
+			   {
+				   collFactorM*=(1.0-denom);
+			   }*/
+
+			   w1 = collFactorM;
+			   
+			   /*dX1_phi = -normX1*((phi[ZERO]>phiH || phi[ZERO]<phiL) ? 0.0 : 4*(phi[ZERO] - phiL)*(phi[ZERO] - phiH)/di);
+			   dX2_phi = -normX2*((phi[ZERO]>phiH || phi[ZERO]<phiL) ? 0.0 : 4*(phi[ZERO] - phiL)*(phi[ZERO] - phiH)/di);
+			   dX3_phi = -normX3*((phi[ZERO]>phiH || phi[ZERO]<phiL) ? 0.0 : 4*(phi[ZERO] - phiL)*(phi[ZERO] - phiH)/di);*/
+
+			   //UbTupleDouble3 coords = grid->getNodeCoordinates(block, x1, x2, x3);
+			   /*Block3D bl = this->block();
+			   
+			   int wX1 = bl->getX1()  + x1;
+			   int wX2 = bl->getX2()  + x2;
+			   int wX3 = bl->getX3()  + x3;*/
+			   
+			   /*if (wX3 >= 30.0)
+			   {
+			   dX1_phi = 0.0;
+			   dX2_phi = 0.0;
+			   dX3_phi = 0.0;
+			   }*/
+
+
+			   LBMReal mu = 2*beta*phi[ZERO]*(phi[ZERO]-1)*(2*phi[ZERO]-1) - kappa*nabla2_phi();
+			   
+			   //LBMReal rhoToPhi = (1.0/densityRatio - 1.0);
+			   
+			   			   
+
+			   //----------- Calculating Macroscopic Values -------------
+
+			   //LBMReal rho = phi[ZERO] + (1.0 - phi[ZERO])*1.0/densityRatio;
+			   LBMReal rho = rhoH + rhoToPhi*(phi[ZERO] - phiH);
+			   //LBMReal rho = phi[ZERO]*1.0/densityRatio + (1.0 - phi[ZERO]);
+
+			   if (withForcing)
+			   {
+				   //muX1 = static_cast<double>(x1-1+ix1*maxX1);
+				   //muX2 = static_cast<double>(x2-1+ix2*maxX2);
+				   //muX3 = static_cast<double>(x3-1+ix3*maxX3);
+
+				   forcingX1 = muForcingX1.Eval();
+				   forcingX2 = muForcingX2.Eval();
+				   forcingX3 = muForcingX3.Eval();
+
+				   LBMReal rho_m = 1.0/densityRatio;
+				   forcingX1 = forcingX1*(rho-rho_m);
+				   forcingX2 = forcingX2*(rho-rho_m);
+				   forcingX3 = forcingX3*(rho-rho_m);
+
+				   //ux += forcingX1*deltaT*0.5; // X
+				   //uy += forcingX2*deltaT*0.5; // Y
+				   //uz += forcingX3*deltaT*0.5; // Z
+			   }
+
+			   LBMReal ux = ((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) +
+				   (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
+				   (mfcbb-mfabb)) / (rho*c1o3) + (mu*dX1_phi + forcingX1)/(2*rho);
+
+			   LBMReal uy = ((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) +
+				   (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
+				   (mfbcb-mfbab)) / (rho*c1o3) + (mu*dX2_phi + forcingX2)/(2*rho);
+
+			   LBMReal uz = ((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) +
+				   (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
+				   (mfbbc-mfbba)) / (rho*c1o3) + (mu*dX3_phi + forcingX3)/(2*rho);
+
+			   LBMReal p1 = (mfaaa+mfaac+mfaca+mfcaa+mfacc+mfcac+mfccc+mfcca)
+				   +(mfaab+mfacb+mfcab+mfccb)+(mfaba+mfabc+mfcba+mfcbc)+(mfbaa+mfbac+mfbca+mfbcc)
+				   +(mfabb+mfcbb)+(mfbab+mfbcb)+(mfbba+mfbbc)+mfbbb +
+			   (ux*rhoToPhi*dX1_phi*c1o3 + uy*rhoToPhi*dX2_phi*c1o3 + uz*rhoToPhi*dX3_phi*c1o3)/2.0;
+			   
+			   //vvx = 0.0; vvy = 0.0; vvz = 0.0;
+			   //--------------------------------------------------------
+			   
+
+
+
+			   LBMReal ux2 = ux*ux;
+			   LBMReal uy2 = uy*uy;
+			   LBMReal uz2 = uz*uz;
+			   LBMReal ux_uy = ux*uy;
+			   LBMReal ux_uz = ux*uz;
+			   LBMReal uy_uz = uy*uz;
+			   LBMReal ux_uy_uz = ux*uy*uz;
+
+
+/*
+			   //----------- Calculating Forcing Terms -------------
+			   LBMReal forcingTerm1 = (ux*mu*dX1_phi + uy*mu*dX2_phi + uz*mu*dX3_phi);
+			   for (int dir = STARTF; dir < (ENDF+1); dir++)
+			   {
+				   if (dir != ZERO)
+				   {
+					   LBMReal dirGrad_phi = (phi[dir] - phi[INVDIR[dir]])/2.0;
+					   forcingTerm[dir] = (c1o3*rhoToPhi*dirGrad_phi + mu*dirGrad_phi)*(DX1[dir]*ux + DX2[dir]*uy + DX3[dir]*uz)*WEIGTH[dir]/c1o3 + mu*dirGrad_phi*WEIGTH[dir] - 
+						   (forcingTerm1)*WEIGTH[dir];
+				   } 
+				   else
+				   {
+					   forcingTerm[ZERO] =  -(forcingTerm1)*WEIGTH[ZERO];
+				   }
+			   }
+			  //--------------------------------------------------------
+*/
+
+			   //----------- Calculating Forcing Terms * -------------
+			   //LBMReal forcingTerm1 = (ux*mu*dX1_phi + uy*mu*dX2_phi + uz*mu*dX3_phi);
+			   for (int dir = STARTF; dir <= (FENDDIR); dir++)
+			   {
+				   LBMReal velProd = DX1[dir]*ux + DX2[dir]*uy + DX3[dir]*uz;
+				   LBMReal velSq1 = velProd*velProd;
+				   LBMReal gamma = WEIGTH[dir]*(1.0 + 3*velProd + 4.5*velSq1 - 1.5*(ux2+uy2+uz2));
+				   
+				   //forcingTerm[dir] = (DX1[dir] - ux)*((gamma - WEIGTH[dir])*c1o3*rhoToPhi*dX1_phi + gamma*mu*dX1_phi) + 
+					//   (DX2[dir] - uy)*((gamma - WEIGTH[dir])*c1o3*rhoToPhi*dX2_phi + gamma*mu*dX2_phi) + 
+					//   (DX3[dir] - uz)*((gamma - WEIGTH[dir])*c1o3*rhoToPhi*dX3_phi + gamma*mu*dX3_phi);
+				   
+				   LBMReal fac1 = (gamma - WEIGTH[dir])*c1o3*rhoToPhi;
+				   LBMReal dirGrad_phi = (phi[dir] - phi[INVDIR[dir]])/2.0;
+				   //LBMReal dirGrad_phi = DX1[dir]*dX1_phi + DX2[dir]*dX2_phi + DX3[dir]*dX3_phi;
+				   
+				   /*forcingTerm[dir] =  (- (ux)*(fac1*dX1_phi + gamma*mu*dX1_phi) - 
+				   (uy)*(fac1*dX2_phi + gamma*mu*dX2_phi) - 
+				   (uz)*(fac1*dX3_phi + gamma*mu*dX3_phi)) + (fac1*dirGrad_phi + gamma*mu*dirGrad_phi + DX1[dir]*forcingX1 + DX2[dir]*forcingX2 + DX3[dir]*forcingX3);*/
+				   
+				   
+				   forcingTerm[dir] = ((-ux)*(fac1*dX1_phi + gamma*(mu*dX1_phi + forcingX1)) +
+					   				  (-uy)*(fac1*dX2_phi + gamma*(mu*dX2_phi + forcingX2)) +
+					   				  (-uz)*(fac1*dX3_phi + gamma*(mu*dX3_phi + forcingX3))) +
+									  (DX1[dir])*(fac1*dX1_phi + gamma*(mu*dX1_phi + forcingX1)) +
+									  (DX2[dir])*(fac1*dX2_phi + gamma*(mu*dX2_phi + forcingX2)) +
+									  (DX3[dir])*(fac1*dX3_phi + gamma*(mu*dX3_phi + forcingX3));
+
+			   }
+
+			   LBMReal gamma = WEIGTH[ZERO]*(1.0 - 1.5*(ux2+uy2+uz2));
+			   /*forcingTerm[ZERO] = -(ux)*((gamma - WEIGTH[ZERO])*c1o3*rhoToPhi*dX1_phi + gamma*mu*dX1_phi) - 
+			   (uy)*((gamma - WEIGTH[ZERO])*c1o3*rhoToPhi*dX2_phi + gamma*mu*dX2_phi) - 
+			   (uz)*((gamma - WEIGTH[ZERO])*c1o3*rhoToPhi*dX3_phi + gamma*mu*dX3_phi);*/
+			   LBMReal fac1 = (gamma - WEIGTH[ZERO])*c1o3*rhoToPhi;
+			   forcingTerm[ZERO] = (-ux)*(fac1*dX1_phi + gamma*(mu*dX1_phi + forcingX1)) +
+				   (-uy)*(fac1*dX2_phi + gamma*(mu*dX2_phi + forcingX2)) +
+				   (-uz)*(fac1*dX3_phi + gamma*(mu*dX3_phi + forcingX3));
+
+			   //--------------------------------------------------------
+
+/*			   
+			   f1[E  ] = (g[E  ] + 0.5*forcingTerm[E  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[E  ]/c1o3;
+			   f1[N  ] = (g[N  ] + 0.5*forcingTerm[N  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[N  ]/c1o3;
+			   f1[T  ] = (g[T  ] + 0.5*forcingTerm[T  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[T  ]/c1o3;
+			   f1[NE ] = (g[NE ] + 0.5*forcingTerm[NE ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[NE ]/c1o3;
+			   f1[NW ] = (g[NW ] + 0.5*forcingTerm[NW ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[NW ]/c1o3;
+			   f1[TE ] = (g[TE ] + 0.5*forcingTerm[TE ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TE ]/c1o3;
+			   f1[TW ] = (g[TW ] + 0.5*forcingTerm[TW ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TW ]/c1o3;
+			   f1[TN ] = (g[TN ] + 0.5*forcingTerm[TN ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TN ]/c1o3;
+			   f1[TS ] = (g[TS ] + 0.5*forcingTerm[TS ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TS ]/c1o3;
+			   f1[TNE] = (g[TNE] + 0.5*forcingTerm[TNE])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TNE]/c1o3;
+			   f1[TNW] = (g[TNW] + 0.5*forcingTerm[TNW])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TNW]/c1o3;
+			   f1[TSE] = (g[TSE] + 0.5*forcingTerm[TSE])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TSE]/c1o3;
+			   f1[TSW] = (g[TSW] + 0.5*forcingTerm[TSW])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TSW]/c1o3;
+			   f1[W  ] = (g[W  ] + 0.5*forcingTerm[W  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[W  ]/c1o3;
+			   f1[S  ] = (g[S  ] + 0.5*forcingTerm[S  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[S  ]/c1o3;
+			   f1[B  ] = (g[B  ] + 0.5*forcingTerm[B  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[B  ]/c1o3;
+			   f1[SW ] = (g[SW ] + 0.5*forcingTerm[SW ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[SW ]/c1o3;
+			   f1[SE ] = (g[SE ] + 0.5*forcingTerm[SE ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[SE ]/c1o3;
+			   f1[BW ] = (g[BW ] + 0.5*forcingTerm[BW ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BW ]/c1o3;
+			   f1[BE ] = (g[BE ] + 0.5*forcingTerm[BE ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BE ]/c1o3;
+			   f1[BS ] = (g[BS ] + 0.5*forcingTerm[BS ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BS ]/c1o3;
+			   f1[BN ] = (g[BN ] + 0.5*forcingTerm[BN ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BN ]/c1o3;
+			   f1[BSW] = (g[BSW] + 0.5*forcingTerm[BSW])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BSW]/c1o3;
+			   f1[BSE] = (g[BSE] + 0.5*forcingTerm[BSE])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BSE]/c1o3;
+			   f1[BNW] = (g[BNW] + 0.5*forcingTerm[BNW])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BNW]/c1o3;
+			   f1[BNE] = (g[BNE] + 0.5*forcingTerm[BNE])/c1o3 - (p1 - rho*c1o3)*WEIGTH[BNE]/c1o3;
+			   f1[ZERO] = (g[ZERO] + 0.5*forcingTerm[ZERO])/c1o3 - (p1 - rho*c1o3)*WEIGTH[ZERO]/c1o3;
+*/
+			   
+			   mfcbb = 3.0*(mfcbb + 0.5*forcingTerm[E  ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[E  ];
+			   mfbcb = 3.0*(mfbcb + 0.5*forcingTerm[N  ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[N  ];
+			   mfbbc = 3.0*(mfbbc + 0.5*forcingTerm[T  ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[T  ];
+			   mfccb = 3.0*(mfccb + 0.5*forcingTerm[NE ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[NE ];
+			   mfacb = 3.0*(mfacb + 0.5*forcingTerm[NW ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[NW ];
+			   mfcbc = 3.0*(mfcbc + 0.5*forcingTerm[TE ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[TE ];
+			   mfabc = 3.0*(mfabc + 0.5*forcingTerm[TW ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[TW ];
+			   mfbcc = 3.0*(mfbcc + 0.5*forcingTerm[TN ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[TN ];
+			   mfbac = 3.0*(mfbac + 0.5*forcingTerm[TS ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[TS ];
+			   mfccc = 3.0*(mfccc + 0.5*forcingTerm[TNE] )/rho ;//-(3.0*p1 - rho)*WEIGTH[TNE];
+			   mfacc = 3.0*(mfacc + 0.5*forcingTerm[TNW] )/rho ;//-(3.0*p1 - rho)*WEIGTH[TNW];
+			   mfcac = 3.0*(mfcac + 0.5*forcingTerm[TSE] )/rho ;//-(3.0*p1 - rho)*WEIGTH[TSE];
+			   mfaac = 3.0*(mfaac + 0.5*forcingTerm[TSW] )/rho ;//-(3.0*p1 - rho)*WEIGTH[TSW];
+			   mfabb = 3.0*(mfabb + 0.5*forcingTerm[W  ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[W  ];
+			   mfbab = 3.0*(mfbab + 0.5*forcingTerm[S  ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[S  ];
+			   mfbba = 3.0*(mfbba + 0.5*forcingTerm[B  ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[B  ];
+			   mfaab = 3.0*(mfaab + 0.5*forcingTerm[SW ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[SW ];
+			   mfcab = 3.0*(mfcab + 0.5*forcingTerm[SE ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[SE ];
+			   mfaba = 3.0*(mfaba + 0.5*forcingTerm[BW ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[BW ];
+			   mfcba = 3.0*(mfcba + 0.5*forcingTerm[BE ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[BE ];
+			   mfbaa = 3.0*(mfbaa + 0.5*forcingTerm[BS ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[BS ];
+			   mfbca = 3.0*(mfbca + 0.5*forcingTerm[BN ] )/rho ;//-(3.0*p1 - rho)*WEIGTH[BN ];
+			   mfaaa = 3.0*(mfaaa + 0.5*forcingTerm[BSW] )/rho ;//-(3.0*p1 - rho)*WEIGTH[BSW];
+			   mfcaa = 3.0*(mfcaa + 0.5*forcingTerm[BSE] )/rho ;//-(3.0*p1 - rho)*WEIGTH[BSE];
+			   mfaca = 3.0*(mfaca + 0.5*forcingTerm[BNW] )/rho ;//-(3.0*p1 - rho)*WEIGTH[BNW];
+			   mfcca = 3.0*(mfcca + 0.5*forcingTerm[BNE] )/rho ;//-(3.0*p1 - rho)*WEIGTH[BNE];
+			   mfbbb = 3.0*(mfbbb + 0.5*forcingTerm[ZERO])/rho ;//- (3.0*p1 - rho)*WEIGTH[ZERO];
+			   
+			   LBMReal rho1 = (mfaaa+mfaac+mfaca+mfcaa+mfacc+mfcac+mfccc+mfcca)
+				   +(mfaab+mfacb+mfcab+mfccb)+(mfaba+mfabc+mfcba+mfcbc)+(mfbaa+mfbac+mfbca+mfbcc)
+				   +(mfabb+mfcbb)+(mfbab+mfbcb)+(mfbba+mfbbc)+mfbbb;
+
+
+			   /*
+               //forcing 
+               ///////////////////////////////////////////////////////////////////////////////////////////
+               if (withForcing)
+               {
+                  muX1 = static_cast<double>(x1-1+ix1*maxX1);
+                  muX2 = static_cast<double>(x2-1+ix2*maxX2);
+                  muX3 = static_cast<double>(x3-1+ix3*maxX3);
+
+                  forcingX1 = muForcingX1.Eval();
+                  forcingX2 = muForcingX2.Eval();
+                  forcingX3 = muForcingX3.Eval();
+
+                  vvx += forcingX1*deltaT*0.5; // X
+                  vvy += forcingX2*deltaT*0.5; // Y
+                  vvz += forcingX3*deltaT*0.5; // Z
+               }
+               /////////////////////////////////////////////////////////////////////////////////////////// 
+			   */
+              
+			   LBMReal oMdrho, m0, m1, m2;
+               
+			   oMdrho=mfccc+mfaaa;
+               m0=mfaca+mfcac;
+               m1=mfacc+mfcaa;
+               m2=mfaac+mfcca;
+               oMdrho+=m0;
+               m1+=m2;
+               oMdrho+=m1;
+               m0=mfbac+mfbca;
+               m1=mfbaa+mfbcc;
+               m0+=m1;
+               m1=mfabc+mfcba;
+               m2=mfaba+mfcbc;
+               m1+=m2;
+               m0+=m1;
+               m1=mfacb+mfcab;
+               m2=mfaab+mfccb;
+               m1+=m2;
+               m0+=m1;
+               oMdrho+=m0;
+               m0=mfabb+mfcbb;
+               m1=mfbab+mfbcb;
+               m2=mfbba+mfbbc;
+               m0+=m1+m2;
+               m0+=mfbbb; //hat gefehlt
+               oMdrho = 1. - (oMdrho + m0);
+			   //oMdrho = rho - (oMdrho + m0);
+
+
+               ////////////////////////////////////////////////////////////////////////////////////
+               LBMReal wadjust;
+               LBMReal qudricLimit = 0.01;
+               ////////////////////////////////////////////////////////////////////////////////////
+               //Hin
+               ////////////////////////////////////////////////////////////////////////////////////
+               // mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36  Konditionieren
+               ////////////////////////////////////////////////////////////////////////////////////
+               // Z - Dir
+               m2    = mfaaa + mfaac;
+               m1    = mfaac - mfaaa;
+               m0    = m2          + mfaab;
+               mfaaa = m0;
+               m0   += c1o36 * oMdrho;   
+               mfaab = m1 -        m0 * uz;
+               mfaac = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaba  + mfabc;
+               m1    = mfabc  - mfaba;
+               m0    = m2          + mfabb;
+               mfaba = m0;
+               m0   += c1o9 * oMdrho;
+               mfabb = m1 -        m0 * uz;
+               mfabc = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaca  + mfacc;
+               m1    = mfacc  - mfaca;
+               m0    = m2          + mfacb;
+               mfaca = m0;
+               m0   += c1o36 * oMdrho;
+               mfacb = m1 -        m0 * uz;
+               mfacc = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfbaa + mfbac;
+               m1    = mfbac - mfbaa;
+               m0    = m2          + mfbab;
+               mfbaa = m0;
+               m0   += c1o9 * oMdrho;
+               mfbab = m1 -        m0 * uz;
+               mfbac = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfbba  + mfbbc;
+               m1    = mfbbc  - mfbba;
+               m0    = m2          + mfbbb;
+               mfbba = m0;
+               m0   += c4o9 * oMdrho;
+               mfbbb = m1 -        m0 * uz;
+               mfbbc = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfbca  + mfbcc;
+               m1    = mfbcc  - mfbca;
+               m0    = m2          + mfbcb;
+               mfbca = m0;
+               m0   += c1o9 * oMdrho;
+               mfbcb = m1 -        m0 * uz;
+               mfbcc = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfcaa + mfcac;
+               m1    = mfcac - mfcaa;
+               m0    = m2          + mfcab;
+               mfcaa = m0;
+               m0   += c1o36 * oMdrho;
+               mfcab = m1 -        m0 * uz;
+               mfcac = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfcba  + mfcbc;
+               m1    = mfcbc  - mfcba;
+               m0    = m2          + mfcbb;
+               mfcba = m0;
+               m0   += c1o9 * oMdrho;
+               mfcbb = m1 -        m0 * uz;
+               mfcbc = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfcca  + mfccc;
+               m1    = mfccc  - mfcca;
+               m0    = m2          + mfccb;
+               mfcca = m0;
+               m0   += c1o36 * oMdrho;
+               mfccb = m1 -        m0 * uz;
+               mfccc = m2 - 2. *   m1 * uz + uz2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               // mit  1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren
+               ////////////////////////////////////////////////////////////////////////////////////
+               // Y - Dir
+               m2    = mfaaa + mfaca;
+               m1    = mfaca - mfaaa;
+               m0    = m2          + mfaba;
+               mfaaa = m0;
+               m0   += c1o6 * oMdrho;
+               mfaba = m1 -        m0 * uy;
+               mfaca = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaab  + mfacb;
+               m1    = mfacb  - mfaab;
+               m0    = m2          + mfabb;
+               mfaab = m0;
+               mfabb = m1 -        m0 * uy;
+               mfacb = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaac  + mfacc;
+               m1    = mfacc  - mfaac;
+               m0    = m2          + mfabc;
+               mfaac = m0;
+               m0   += c1o18 * oMdrho;
+               mfabc = m1 -        m0 * uy;
+               mfacc = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfbaa + mfbca;
+               m1    = mfbca - mfbaa;
+               m0    = m2          + mfbba;
+               mfbaa = m0;
+               m0   += c2o3 * oMdrho;
+               mfbba = m1 -        m0 * uy;
+               mfbca = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfbab  + mfbcb;
+               m1    = mfbcb  - mfbab;
+               m0    = m2          + mfbbb;
+               mfbab = m0;
+               mfbbb = m1 -        m0 * uy;
+               mfbcb = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfbac  + mfbcc;
+               m1    = mfbcc  - mfbac;
+               m0    = m2          + mfbbc;
+               mfbac = m0;
+               m0   += c2o9 * oMdrho;
+               mfbbc = m1 -        m0 * uy;
+               mfbcc = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfcaa + mfcca;
+               m1    = mfcca - mfcaa;
+               m0    = m2          + mfcba;
+               mfcaa = m0;
+               m0   += c1o6 * oMdrho;
+               mfcba = m1 -        m0 * uy;
+               mfcca = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfcab  + mfccb;
+               m1    = mfccb  - mfcab;
+               m0    = m2          + mfcbb;
+               mfcab = m0;
+               mfcbb = m1 -        m0 * uy;
+               mfccb = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfcac  + mfccc;
+               m1    = mfccc  - mfcac;
+               m0    = m2          + mfcbc;
+               mfcac = m0;
+               m0   += c1o18 * oMdrho;
+               mfcbc = m1 -        m0 * uy;
+               mfccc = m2 - 2. *   m1 * uy + uy2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               // mit     1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9            Konditionieren
+               ////////////////////////////////////////////////////////////////////////////////////
+               // X - Dir
+               m2    = mfaaa + mfcaa;
+               m1    = mfcaa - mfaaa;
+               m0    = m2          + mfbaa;
+               mfaaa = m0;
+               m0   += 1. * oMdrho;
+               mfbaa = m1 -        m0 * ux;
+               mfcaa = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaba  + mfcba;
+               m1    = mfcba  - mfaba;
+               m0    = m2          + mfbba;
+               mfaba = m0;
+               mfbba = m1 -        m0 * ux;
+               mfcba = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaca  + mfcca;
+               m1    = mfcca  - mfaca;
+               m0    = m2          + mfbca;
+               mfaca = m0;
+               m0   += c1o3 * oMdrho;
+               mfbca = m1 -        m0 * ux;
+               mfcca = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaab + mfcab;
+               m1    = mfcab - mfaab;
+               m0    = m2          + mfbab;
+               mfaab = m0;
+               mfbab = m1 -        m0 * ux;
+               mfcab = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfabb  + mfcbb;
+               m1    = mfcbb  - mfabb;
+               m0    = m2          + mfbbb;
+               mfabb = m0;
+               mfbbb = m1 -        m0 * ux;
+               mfcbb = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfacb  + mfccb;
+               m1    = mfccb  - mfacb;
+               m0    = m2          + mfbcb;
+               mfacb = m0;
+               mfbcb = m1 -        m0 * ux;
+               mfccb = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfaac + mfcac;
+               m1    = mfcac - mfaac;
+               m0    = m2          + mfbac;
+               mfaac = m0;
+               m0   += c1o3 * oMdrho;
+               mfbac = m1 -        m0 * ux;
+               mfcac = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfabc  + mfcbc;
+               m1    = mfcbc  - mfabc;
+               m0    = m2          + mfbbc;
+               mfabc = m0;
+               mfbbc = m1 -        m0 * ux;
+               mfcbc = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m2    = mfacc  + mfccc;
+               m1    = mfccc  - mfacc;
+               m0    = m2          + mfbcc;
+               mfacc = m0;
+               m0   += c1o9 * oMdrho;
+               mfbcc = m1 -        m0 * ux;
+               mfccc = m2 - 2. *   m1 * ux + ux2 * m0;
+               ////////////////////////////////////////////////////////////////////////////////////
+               // Cumulants
+               ////////////////////////////////////////////////////////////////////////////////////
+               LBMReal OxxPyyPzz = 1.; //omega2 or bulk viscosity
+               LBMReal OxyyPxzz  = 1.;//-s9;//2+s9;//
+               //LBMReal OxyyMxzz  = 1.;//2+s9;//
+               LBMReal O4        = 1.;
+               LBMReal O5        = 1.;
+               LBMReal O6        = 1.;
+
+               //Cum 4.
+               //LBMReal CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + 2. * mfbba * mfbab); // till 18.05.2015
+               //LBMReal CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + 2. * mfbba * mfabb); // till 18.05.2015
+               //LBMReal CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + 2. * mfbab * mfabb); // till 18.05.2015
+
+               LBMReal CUMcbb = mfcbb - ((mfcaa + c1o3 ) * mfabb + 2. * mfbba * mfbab);
+               LBMReal CUMbcb = mfbcb - ((mfaca + c1o3 ) * mfbab + 2. * mfbba * mfabb);
+               LBMReal CUMbbc = mfbbc - ((mfaac + c1o3 ) * mfbba + 2. * mfbab * mfabb);
+
+			   LBMReal CUMcca = mfcca - ((mfcaa * mfaca + 2. * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-1)*oMdrho);
+			   LBMReal CUMcac = mfcac - ((mfcaa * mfaac + 2. * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-1)*oMdrho);
+			   LBMReal CUMacc = mfacc - ((mfaac * mfaca + 2. * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-1)*oMdrho);
+
+			   //LBMReal CUMcca = mfcca - ((mfcaa * mfaca + 2. * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(-p1/c1o3)*oMdrho);
+			   //LBMReal CUMcac = mfcac - ((mfcaa * mfaac + 2. * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(-p1/c1o3)*oMdrho);
+			   //LBMReal CUMacc = mfacc - ((mfaac * mfaca + 2. * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(-p1/c1o3)*oMdrho);
+
+               //Cum 5.
+               LBMReal CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + 4. * mfabb * mfbbb + 2. * (mfbab * mfacb + mfbba * mfabc)) - c1o3 * (mfbca + mfbac) * oMdrho;
+               LBMReal CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + 4. * mfbab * mfbbb + 2. * (mfabb * mfcab + mfbba * mfbac)) - c1o3 * (mfcba + mfabc) * oMdrho;
+               LBMReal CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + 4. * mfbba * mfbbb + 2. * (mfbab * mfbca + mfabb * mfcba)) - c1o3 * (mfacb + mfcab) * oMdrho;
+
+               //Cum 6.
+               LBMReal CUMccc = mfccc  +((-4. *  mfbbb * mfbbb 
+                  -       (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+                  -  4. * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
+                  -  2. * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb))
+                  +( 4. * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+                  +  2. * (mfcaa * mfaca * mfaac)
+                  + 16. *  mfbba * mfbab * mfabb)
+                  - c1o3* (mfacc + mfcac + mfcca) * oMdrho  -c1o9*oMdrho*oMdrho
+                  - c1o9* (mfcaa + mfaca + mfaac) * oMdrho*(1.-2.* oMdrho)- c1o27* oMdrho * oMdrho*(-2.* oMdrho)
+                  +( 2. * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+                  +       (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa)) * c2o3*oMdrho) +c1o27*oMdrho;
+
+               //2.
+               // linear combinations
+               LBMReal mxxPyyPzz = mfcaa + mfaca + mfaac;
+               LBMReal mxxMyy    = mfcaa - mfaca;
+               LBMReal mxxMzz         = mfcaa - mfaac;
+
+               LBMReal dxux = -c1o2 * collFactorM *(mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz*(mfaaa - mxxPyyPzz);
+               LBMReal dyuy = dxux + collFactorM * c3o2 * mxxMyy;
+               LBMReal dzuz = dxux + collFactorM * c3o2 * mxxMzz;
+
+			   /*LBMReal Dxy =-three*collFactorM*mfbba;
+			   LBMReal Dxz =-three*collFactorM*mfbab;
+			   LBMReal Dyz =-three*collFactorM*mfabb;
+
+			   LBMReal strainMag = sqrt(2*(dxux*dxux + dyuy*dyuy + dzuz*dzuz) + Dxy*Dxy + Dxz*Dxz + Dyz*Dyz);
+			   LBMReal intVis = 3*abs(denom - 1e-9)*strainMag;
+			   LBMReal fluidVis = (1.0/collFactorM - 0.5)/3.0;
+			   collFactorM = 1.0/((fluidVis + intVis)*3.0 + 0.5);*/
+			   (*divU)(x1,x2,x3) = dxux + dyuy + dzuz;
+			   
+			   
+			   //relax
+               mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- 3. * (1. - c1o2 * OxxPyyPzz) * (ux2 * dxux + uy2 * dyuy + uz2 * dzuz);
+               mxxMyy    += collFactorM * (-mxxMyy) - 3. * (1. - c1o2 * collFactorM) * (ux2 * dxux - uy2 * dyuy);
+               mxxMzz    += collFactorM * (-mxxMzz) - 3. * (1. - c1o2 * collFactorM) * (ux2 * dxux - uz2 * dzuz);
+
+               mfabb     += collFactorM * (-mfabb);
+               mfbab     += collFactorM * (-mfbab);
+               mfbba     += collFactorM * (-mfbba);
+
+               // linear combinations back
+               mfcaa = c1o3 * (       mxxMyy +      mxxMzz + mxxPyyPzz);
+               mfaca = c1o3 * (-2. *  mxxMyy +      mxxMzz + mxxPyyPzz);
+               mfaac = c1o3 * (       mxxMyy - 2. * mxxMzz + mxxPyyPzz);
+
+               //3.
+               // linear combinations
+               LBMReal mxxyPyzz = mfcba + mfabc;
+               LBMReal mxxyMyzz = mfcba - mfabc;
+
+               LBMReal mxxzPyyz = mfcab + mfacb;
+               LBMReal mxxzMyyz = mfcab - mfacb;
+
+               LBMReal mxyyPxzz = mfbca + mfbac;
+               LBMReal mxyyMxzz = mfbca - mfbac;
+
+               //relax
+               wadjust    = OxyyMxzz+(1.-OxyyMxzz)*fabs(mfbbb)/(fabs(mfbbb)+qudricLimit);
+               mfbbb     += wadjust * (-mfbbb);
+               wadjust    = OxyyPxzz+(1.-OxyyPxzz)*fabs(mxxyPyzz)/(fabs(mxxyPyzz)+qudricLimit);
+               mxxyPyzz  += wadjust * (-mxxyPyzz);
+               wadjust    = OxyyMxzz+(1.-OxyyMxzz)*fabs(mxxyMyzz)/(fabs(mxxyMyzz)+qudricLimit);
+               mxxyMyzz  += wadjust * (-mxxyMyzz);
+               wadjust    = OxyyPxzz+(1.-OxyyPxzz)*fabs(mxxzPyyz)/(fabs(mxxzPyyz)+qudricLimit);
+               mxxzPyyz  += wadjust * (-mxxzPyyz);
+               wadjust    = OxyyMxzz+(1.-OxyyMxzz)*fabs(mxxzMyyz)/(fabs(mxxzMyyz)+qudricLimit);
+               mxxzMyyz  += wadjust * (-mxxzMyyz);
+               wadjust    = OxyyPxzz+(1.-OxyyPxzz)*fabs(mxyyPxzz)/(fabs(mxyyPxzz)+qudricLimit);
+               mxyyPxzz  += wadjust * (-mxyyPxzz);
+               wadjust    = OxyyMxzz+(1.-OxyyMxzz)*fabs(mxyyMxzz)/(fabs(mxyyMxzz)+qudricLimit);
+               mxyyMxzz  += wadjust * (-mxyyMxzz);
+
+               // linear combinations back
+               mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2;
+               mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2;
+               mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2;
+               mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2;
+               mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2;
+               mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2;
+
+               //4.
+               CUMacc += O4 * (-CUMacc);
+               CUMcac += O4 * (-CUMcac);
+               CUMcca += O4 * (-CUMcca);
+
+               CUMbbc += O4 * (-CUMbbc);
+               CUMbcb += O4 * (-CUMbcb);
+               CUMcbb += O4 * (-CUMcbb);
+
+               //5.
+               CUMbcc += O5 * (-CUMbcc);
+               CUMcbc += O5 * (-CUMcbc);
+               CUMccb += O5 * (-CUMccb);
+
+               //6.
+               CUMccc += O6 * (-CUMccc);
+
+               //back cumulants to central moments
+               //4.
+               //mfcbb = CUMcbb + ((mfcaa + c1o3 * oMdrho) * mfabb + 2. * mfbba * mfbab); // till 18.05.2015
+               //mfbcb = CUMbcb + ((mfaca + c1o3 * oMdrho) * mfbab + 2. * mfbba * mfabb); // till 18.05.2015
+               //mfbbc = CUMbbc + ((mfaac + c1o3 * oMdrho) * mfbba + 2. * mfbab * mfabb); // till 18.05.2015
+
+               mfcbb = CUMcbb + ((mfcaa + c1o3 ) * mfabb + 2. * mfbba * mfbab);
+               mfbcb = CUMbcb + ((mfaca + c1o3 ) * mfbab + 2. * mfbba * mfabb);
+               mfbbc = CUMbbc + ((mfaac + c1o3 ) * mfbba + 2. * mfbab * mfabb);
+
+               mfcca = CUMcca + (mfcaa * mfaca + 2. * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-1)*oMdrho;
+               mfcac = CUMcac + (mfcaa * mfaac + 2. * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-1)*oMdrho;
+               mfacc = CUMacc + (mfaac * mfaca + 2. * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-1)*oMdrho;
+
+			   //mfcca = CUMcca + (mfcaa * mfaca + 2. * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(-p1/c1o3)*oMdrho;
+			   //mfcac = CUMcac + (mfcaa * mfaac + 2. * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(-p1/c1o3)*oMdrho;
+			   //mfacc = CUMacc + (mfaac * mfaca + 2. * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(-p1/c1o3)*oMdrho;
+
+               //5.
+               mfbcc = CUMbcc + (mfaac * mfbca + mfaca * mfbac + 4. * mfabb * mfbbb + 2. * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) * oMdrho;
+               mfcbc = CUMcbc + (mfaac * mfcba + mfcaa * mfabc + 4. * mfbab * mfbbb + 2. * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) * oMdrho;
+               mfccb = CUMccb + (mfcaa * mfacb + mfaca * mfcab + 4. * mfbba * mfbbb + 2. * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) * oMdrho;
+
+               //6.
+               mfccc = CUMccc  -((-4. *  mfbbb * mfbbb 
+                  -       (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+                  -  4. * (mfabb * mfcbb + mfbac * mfbca + mfbba * mfbbc)
+                  -  2. * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb))
+                  +( 4. * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+                  +  2. * (mfcaa * mfaca * mfaac)
+                  + 16. *  mfbba * mfbab * mfabb)
+                  - c1o3* (mfacc + mfcac + mfcca) * oMdrho  -c1o9*oMdrho*oMdrho
+                  - c1o9* (mfcaa + mfaca + mfaac) * oMdrho*(1.-2.* oMdrho)- c1o27* oMdrho * oMdrho*(-2.* oMdrho)
+                  +( 2. * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+                  +       (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa)) * c2o3*oMdrho) -c1o27*oMdrho;
+
+               ////////////////////////////////////////////////////////////////////////////////////
+               //forcing
+               mfbaa=-mfbaa;
+               mfaba=-mfaba;
+               mfaab=-mfaab;
+               //////////////////////////////////////////////////////////////////////////////////////
+
+               ////////////////////////////////////////////////////////////////////////////////////
+               //back
+               ////////////////////////////////////////////////////////////////////////////////////
+               //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9   Konditionieren
+               ////////////////////////////////////////////////////////////////////////////////////
+               // Z - Dir
+               m0 =  mfaac * c1o2 +      mfaab * (uz - c1o2) + (mfaaa + 1. * oMdrho) * (     uz2 - uz) * c1o2;
+               m1 = -mfaac        - 2. * mfaab *  uz         +  mfaaa                * (1. - uz2)              - 1. * oMdrho * uz2;
+               m2 =  mfaac * c1o2 +      mfaab * (uz + c1o2) + (mfaaa + 1. * oMdrho) * (     uz2 + uz) * c1o2;
+               mfaaa = m0;
+               mfaab = m1;
+               mfaac = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfabc * c1o2 +      mfabb * (uz - c1o2) + mfaba * (     uz2 - uz) * c1o2;
+               m1 = -mfabc        - 2. * mfabb *  uz         + mfaba * (1. - uz2);
+               m2 =  mfabc * c1o2 +      mfabb * (uz + c1o2) + mfaba * (     uz2 + uz) * c1o2;
+               mfaba = m0;
+               mfabb = m1;
+               mfabc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfacc * c1o2 +      mfacb * (uz - c1o2) + (mfaca + c1o3 * oMdrho) * (     uz2 - uz) * c1o2;
+               m1 = -mfacc        - 2. * mfacb *  uz         +  mfaca                  * (1. - uz2)              - c1o3 * oMdrho * uz2;
+               m2 =  mfacc * c1o2 +      mfacb * (uz + c1o2) + (mfaca + c1o3 * oMdrho) * (     uz2 + uz) * c1o2;
+               mfaca = m0;
+               mfacb = m1;
+               mfacc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfbac * c1o2 +      mfbab * (uz - c1o2) + mfbaa * (     uz2 - uz) * c1o2;
+               m1 = -mfbac        - 2. * mfbab *  uz         + mfbaa * (1. - uz2);
+               m2 =  mfbac * c1o2 +      mfbab * (uz + c1o2) + mfbaa * (     uz2 + uz) * c1o2;
+               mfbaa = m0;
+               mfbab = m1;
+               mfbac = m2;
+               /////////b//////////////////////////////////////////////////////////////////////////
+               m0 =  mfbbc * c1o2 +      mfbbb * (uz - c1o2) + mfbba * (     uz2 - uz) * c1o2;
+               m1 = -mfbbc        - 2. * mfbbb *  uz         + mfbba * (1. - uz2);
+               m2 =  mfbbc * c1o2 +      mfbbb * (uz + c1o2) + mfbba * (     uz2 + uz) * c1o2;
+               mfbba = m0;
+               mfbbb = m1;
+               mfbbc = m2;
+               /////////b//////////////////////////////////////////////////////////////////////////
+               m0 =  mfbcc * c1o2 +      mfbcb * (uz - c1o2) + mfbca * (     uz2 - uz) * c1o2;
+               m1 = -mfbcc        - 2. * mfbcb *  uz         + mfbca * (1. - uz2);
+               m2 =  mfbcc * c1o2 +      mfbcb * (uz + c1o2) + mfbca * (     uz2 + uz) * c1o2;
+               mfbca = m0;
+               mfbcb = m1;
+               mfbcc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfcac * c1o2 +      mfcab * (uz - c1o2) + (mfcaa + c1o3 * oMdrho) * (     uz2 - uz) * c1o2;
+               m1 = -mfcac        - 2. * mfcab *  uz         +  mfcaa                  * (1. - uz2)              - c1o3 * oMdrho * uz2;
+               m2 =  mfcac * c1o2 +      mfcab * (uz + c1o2) + (mfcaa + c1o3 * oMdrho) * (     uz2 + uz) * c1o2;
+               mfcaa = m0;
+               mfcab = m1;
+               mfcac = m2;
+               /////////c//////////////////////////////////////////////////////////////////////////
+               m0 =  mfcbc * c1o2 +      mfcbb * (uz - c1o2) + mfcba * (     uz2 - uz) * c1o2;
+               m1 = -mfcbc        - 2. * mfcbb *  uz         + mfcba * (1. - uz2);
+               m2 =  mfcbc * c1o2 +      mfcbb * (uz + c1o2) + mfcba * (     uz2 + uz) * c1o2;
+               mfcba = m0;
+               mfcbb = m1;
+               mfcbc = m2;
+               /////////c//////////////////////////////////////////////////////////////////////////
+               m0 =  mfccc * c1o2 +      mfccb * (uz - c1o2) + (mfcca + c1o9 * oMdrho) * (     uz2 - uz) * c1o2;
+               m1 = -mfccc        - 2. * mfccb *  uz         +  mfcca                  * (1. - uz2)              - c1o9 * oMdrho * uz2;
+               m2 =  mfccc * c1o2 +      mfccb * (uz + c1o2) + (mfcca + c1o9 * oMdrho) * (     uz2 + uz) * c1o2;
+               mfcca = m0;
+               mfccb = m1;
+               mfccc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18   Konditionieren
+               ////////////////////////////////////////////////////////////////////////////////////
+               // Y - Dir
+               m0 =  mfaca * c1o2 +      mfaba * (uy - c1o2) + (mfaaa + c1o6 * oMdrho) * (     uy2 - uy) * c1o2;
+               m1 = -mfaca        - 2. * mfaba *  uy         +  mfaaa                  * (1. - uy2)              - c1o6 * oMdrho * uy2;
+               m2 =  mfaca * c1o2 +      mfaba * (uy + c1o2) + (mfaaa + c1o6 * oMdrho) * (     uy2 + uy) * c1o2;
+               mfaaa = m0;
+               mfaba = m1;
+               mfaca = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfacb * c1o2 +      mfabb * (uy - c1o2) + (mfaab + c2o3 * oMdrho) * (     uy2 - uy) * c1o2;
+               m1 = -mfacb        - 2. * mfabb *  uy         +  mfaab                  * (1. - uy2)              - c2o3 * oMdrho * uy2;
+               m2 =  mfacb * c1o2 +      mfabb * (uy + c1o2) + (mfaab + c2o3 * oMdrho) * (     uy2 + uy) * c1o2;
+               mfaab = m0;
+               mfabb = m1;
+               mfacb = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfacc * c1o2 +      mfabc * (uy - c1o2) + (mfaac + c1o6 * oMdrho) * (     uy2 - uy) * c1o2;
+               m1 = -mfacc        - 2. * mfabc *  uy         +  mfaac                  * (1. - uy2)              - c1o6 * oMdrho * uy2;
+               m2 =  mfacc * c1o2 +      mfabc * (uy + c1o2) + (mfaac + c1o6 * oMdrho) * (     uy2 + uy) * c1o2;
+               mfaac = m0;
+               mfabc = m1;
+               mfacc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfbca * c1o2 +      mfbba * (uy - c1o2) + mfbaa * (     uy2 - uy) * c1o2;
+               m1 = -mfbca        - 2. * mfbba *  uy         + mfbaa * (1. - uy2);
+               m2 =  mfbca * c1o2 +      mfbba * (uy + c1o2) + mfbaa * (     uy2 + uy) * c1o2;
+               mfbaa = m0;
+               mfbba = m1;
+               mfbca = m2;
+               /////////b//////////////////////////////////////////////////////////////////////////
+               m0 =  mfbcb * c1o2 +      mfbbb * (uy - c1o2) + mfbab * (     uy2 - uy) * c1o2;
+               m1 = -mfbcb        - 2. * mfbbb *  uy         + mfbab * (1. - uy2);
+               m2 =  mfbcb * c1o2 +      mfbbb * (uy + c1o2) + mfbab * (     uy2 + uy) * c1o2;
+               mfbab = m0;
+               mfbbb = m1;
+               mfbcb = m2;
+               /////////b//////////////////////////////////////////////////////////////////////////
+               m0 =  mfbcc * c1o2 +      mfbbc * (uy - c1o2) + mfbac * (     uy2 - uy) * c1o2;
+               m1 = -mfbcc        - 2. * mfbbc *  uy         + mfbac * (1. - uy2);
+               m2 =  mfbcc * c1o2 +      mfbbc * (uy + c1o2) + mfbac * (     uy2 + uy) * c1o2;
+               mfbac = m0;
+               mfbbc = m1;
+               mfbcc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfcca * c1o2 +      mfcba * (uy - c1o2) + (mfcaa + c1o18 * oMdrho) * (     uy2 - uy) * c1o2;
+               m1 = -mfcca        - 2. * mfcba *  uy         +  mfcaa                   * (1. - uy2)              - c1o18 * oMdrho * uy2;
+               m2 =  mfcca * c1o2 +      mfcba * (uy + c1o2) + (mfcaa + c1o18 * oMdrho) * (     uy2 + uy) * c1o2;
+               mfcaa = m0;
+               mfcba = m1;
+               mfcca = m2;
+               /////////c//////////////////////////////////////////////////////////////////////////
+               m0 =  mfccb * c1o2 +      mfcbb * (uy - c1o2) + (mfcab + c2o9 * oMdrho) * (     uy2 - uy) * c1o2;
+               m1 = -mfccb        - 2. * mfcbb *  uy         +  mfcab                  * (1. - uy2)              - c2o9 * oMdrho * uy2;
+               m2 =  mfccb * c1o2 +      mfcbb * (uy + c1o2) + (mfcab + c2o9 * oMdrho) * (     uy2 + uy) * c1o2;
+               mfcab = m0;
+               mfcbb = m1;
+               mfccb = m2;
+               /////////c//////////////////////////////////////////////////////////////////////////
+               m0 =  mfccc * c1o2 +      mfcbc * (uy - c1o2) + (mfcac + c1o18 * oMdrho) * (     uy2 - uy) * c1o2;
+               m1 = -mfccc        - 2. * mfcbc *  uy         +  mfcac                   * (1. - uy2)              - c1o18 * oMdrho * uy2;
+               m2 =  mfccc * c1o2 +      mfcbc * (uy + c1o2) + (mfcac + c1o18 * oMdrho) * (     uy2 + uy) * c1o2;
+               mfcac = m0;
+               mfcbc = m1;
+               mfccc = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren
+               ////////////////////////////////////////////////////////////////////////////////////
+               // X - Dir
+               m0 =  mfcaa * c1o2 +      mfbaa * (ux - c1o2) + (mfaaa + c1o36 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcaa        - 2. * mfbaa *  ux         +  mfaaa                   * (1. - ux2)              - c1o36 * oMdrho * ux2;
+               m2 =  mfcaa * c1o2 +      mfbaa * (ux + c1o2) + (mfaaa + c1o36 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfaaa = m0;
+               mfbaa = m1;
+               mfcaa = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfcba * c1o2 +      mfbba * (ux - c1o2) + (mfaba + c1o9 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcba        - 2. * mfbba *  ux         +  mfaba                  * (1. - ux2)              - c1o9 * oMdrho * ux2;
+               m2 =  mfcba * c1o2 +      mfbba * (ux + c1o2) + (mfaba + c1o9 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfaba = m0;
+               mfbba = m1;
+               mfcba = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfcca * c1o2 +      mfbca * (ux - c1o2) + (mfaca + c1o36 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcca        - 2. * mfbca *  ux         +  mfaca                   * (1. - ux2)              - c1o36 * oMdrho * ux2;
+               m2 =  mfcca * c1o2 +      mfbca * (ux + c1o2) + (mfaca + c1o36 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfaca = m0;
+               mfbca = m1;
+               mfcca = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfcab * c1o2 +      mfbab * (ux - c1o2) + (mfaab + c1o9 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcab        - 2. * mfbab *  ux         +  mfaab                  * (1. - ux2)              - c1o9 * oMdrho * ux2;
+               m2 =  mfcab * c1o2 +      mfbab * (ux + c1o2) + (mfaab + c1o9 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfaab = m0;
+               mfbab = m1;
+               mfcab = m2;
+               ///////////b////////////////////////////////////////////////////////////////////////
+               m0 =  mfcbb * c1o2 +      mfbbb * (ux - c1o2) + (mfabb + c4o9 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcbb        - 2. * mfbbb *  ux         +  mfabb                  * (1. - ux2)              - c4o9 * oMdrho * ux2;
+               m2 =  mfcbb * c1o2 +      mfbbb * (ux + c1o2) + (mfabb + c4o9 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfabb = m0;
+               mfbbb = m1;
+               mfcbb = m2;
+               ///////////b////////////////////////////////////////////////////////////////////////
+               m0 =  mfccb * c1o2 +      mfbcb * (ux - c1o2) + (mfacb + c1o9 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfccb        - 2. * mfbcb *  ux         +  mfacb                  * (1. - ux2)              - c1o9 * oMdrho * ux2;
+               m2 =  mfccb * c1o2 +      mfbcb * (ux + c1o2) + (mfacb + c1o9 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfacb = m0;
+               mfbcb = m1;
+               mfccb = m2;
+               ////////////////////////////////////////////////////////////////////////////////////
+               ////////////////////////////////////////////////////////////////////////////////////
+               m0 =  mfcac * c1o2 +      mfbac * (ux - c1o2) + (mfaac + c1o36 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcac        - 2. * mfbac *  ux         +  mfaac                   * (1. - ux2)              - c1o36 * oMdrho * ux2;
+               m2 =  mfcac * c1o2 +      mfbac * (ux + c1o2) + (mfaac + c1o36 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfaac = m0;
+               mfbac = m1;
+               mfcac = m2;
+               ///////////c////////////////////////////////////////////////////////////////////////
+               m0 =  mfcbc * c1o2 +      mfbbc * (ux - c1o2) + (mfabc + c1o9 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfcbc        - 2. * mfbbc *  ux         +  mfabc                  * (1. - ux2)              - c1o9 * oMdrho * ux2;
+               m2 =  mfcbc * c1o2 +      mfbbc * (ux + c1o2) + (mfabc + c1o9 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfabc = m0;
+               mfbbc = m1;
+               mfcbc = m2;
+               ///////////c////////////////////////////////////////////////////////////////////////
+               m0 =  mfccc * c1o2 +      mfbcc * (ux - c1o2) + (mfacc + c1o36 * oMdrho) * (     ux2 - ux) * c1o2;
+               m1 = -mfccc        - 2. * mfbcc *  ux         +  mfacc                   * (1. - ux2)              - c1o36 * oMdrho * ux2;
+               m2 =  mfccc * c1o2 +      mfbcc * (ux + c1o2) + (mfacc + c1o36 * oMdrho) * (     ux2 + ux) * c1o2;
+               mfacc = m0;
+               mfbcc = m1;
+               mfccc = m2;
+
+
+
+///////////////////////////////////////////////////////////////////////////
+
+/*
+			    m000 = f1[ZERO] + f1[E] + f1[W] + f1[N] + f1[S] + f1[T] + f1[B] + f1[NE] + f1[SW] + f1[SE] + f1[NW] + f1[TE] + f1[BW] + f1[BE] + f1[TW] + f1[TN] + f1[BS] + f1[BN] + 
+					   f1[TS] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW] + f1[BNE] + f1[BNW] + f1[BSE] + f1[BSW];
+				
+				m100 = f1[BE] + f1[BNE] - f1[BNW] + f1[BSE] - f1[BSW] - f1[BW] + f1[E] + f1[NE] - f1[NW] + f1[SE] - f1[SW] + f1[TE] + f1[TNE] - f1[TNW] + f1[TSE] - f1[TSW] - f1[TW] - f1[W];
+				m010 = f1[BN] + f1[BNE] + f1[BNW] - f1[BS] - f1[BSE] - f1[BSW] + f1[N] + f1[NE] + f1[NW] - f1[S] - f1[SE] - f1[SW] + f1[TN] + f1[TNE] + f1[TNW] - f1[TS] - f1[TSE] - f1[TSW];
+				m001 = f1[T] + f1[TE] + f1[TN] + f1[TNE] + f1[TNW] + f1[TS] + f1[TSE] + f1[TSW] + f1[TW] - f1[B] - f1[BE] - f1[BN] - f1[BNE] - f1[BNW] - f1[BS] - f1[BSE] - f1[BSW] - f1[BW];
+
+				m110 =  f1[BNE] - f1[BNW] - f1[BSE] + f1[BSW] + f1[NE] - f1[NW] - f1[SE] + f1[SW] + f1[TNE] - f1[TNW] - f1[TSE] + f1[TSW];
+				m101 = -f1[BE] - f1[BNE] + f1[BNW] - f1[BSE] + f1[BSW] + f1[BW] + f1[TE] + f1[TNE] - f1[TNW] + f1[TSE] - f1[TSW] - f1[TW];
+				m011 = -f1[BN] - f1[BNE] - f1[BNW] + f1[BS] + f1[BSE] + f1[BSW] + f1[TN] + f1[TNE] + f1[TNW] - f1[TS] - f1[TSE] - f1[TSW];
+				m200 =  f1[BE] + f1[BNE] + f1[BNW] + f1[BSE] + f1[BSW] + f1[BW] + f1[E] + f1[NE] + f1[NW] + f1[SE] + f1[SW] + f1[TE] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW] + f1[TW] + f1[W];
+				m020 =  f1[BN] + f1[BNE] + f1[BNW] + f1[BS] + f1[BSE] + f1[BSW] + f1[N] + f1[NE] + f1[NW] + f1[S] + f1[SE] + f1[SW] + f1[TN] + f1[TNE] + f1[TNW] + f1[TS] + f1[TSE] + f1[TSW];
+				m002 =  f1[B] + f1[BE] + f1[BN] + f1[BNE] + f1[BNW] + f1[BS] + f1[BSE] + f1[BSW] + f1[BW] + f1[T] + f1[TE] + f1[TN] + f1[TNE] + f1[TNW] + f1[TS] + f1[TSE] + f1[TSW] + f1[TW];
+				m120 =  f1[BNE] - f1[BNW] + f1[BSE] - f1[BSW] + f1[NE] - f1[NW] + f1[SE] - f1[SW] + f1[TNE] - f1[TNW] + f1[TSE] - f1[TSW];
+				m102 =  f1[BE] + f1[BNE] - f1[BNW] + f1[BSE] - f1[BSW] - f1[BW] + f1[TE] + f1[TNE] - f1[TNW] + f1[TSE] - f1[TSW] - f1[TW];
+				m210 =  f1[BNE] + f1[BNW] - f1[BSE] - f1[BSW] + f1[NE] + f1[NW] - f1[SE] - f1[SW] + f1[TNE] + f1[TNW] - f1[TSE] - f1[TSW];
+				m012 =  f1[BN] + f1[BNE] + f1[BNW] - f1[BS] - f1[BSE] - f1[BSW] + f1[TN] + f1[TNE] + f1[TNW] - f1[TS] - f1[TSE] - f1[TSW];
+				m201 = -f1[BE] - f1[BNE] - f1[BNW] - f1[BSE] - f1[BSW] - f1[BW] + f1[TE] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW] + f1[TW];
+				m021 = -f1[BN] - f1[BNE] - f1[BNW] - f1[BS] - f1[BSE] - f1[BSW] + f1[TN] + f1[TNE] + f1[TNW] + f1[TS] + f1[TSE] + f1[TSW];
+				m111 = -f1[BNE] + f1[BNW] + f1[BSE] - f1[BSW] + f1[TNE] - f1[TNW] - f1[TSE] + f1[TSW];
+				m220 =  f1[BNE] + f1[BNW] + f1[BSE] + f1[BSW] + f1[NE] + f1[NW] + f1[SE] + f1[SW] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW];
+				m202 =  f1[BE] + f1[BNE] + f1[BNW] + f1[BSE] + f1[BSW] + f1[BW] + f1[TE] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW] + f1[TW];
+				m022 =  f1[BN] + f1[BNE] + f1[BNW] + f1[BS] + f1[BSE] + f1[BSW] + f1[TN] + f1[TNE] + f1[TNW] + f1[TS] + f1[TSE] + f1[TSW];
+				m211 = -f1[BNE] - f1[BNW] + f1[BSE] + f1[BSW] + f1[TNE] + f1[TNW] - f1[TSE] - f1[TSW];
+				m121 = -f1[BNE] + f1[BNW] - f1[BSE] + f1[BSW] + f1[TNE] - f1[TNW] + f1[TSE] - f1[TSW];
+				m112 =  f1[BNE] - f1[BNW] - f1[BSE] + f1[BSW] + f1[TNE] - f1[TNW] - f1[TSE] + f1[TSW];
+				m221 = -f1[BNE] - f1[BNW] - f1[BSE] - f1[BSW] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW];
+				m212 =  f1[BNE] + f1[BNW] - f1[BSE] - f1[BSW] + f1[TNE] + f1[TNW] - f1[TSE] - f1[TSW];
+				m122 =  f1[BNE] - f1[BNW] + f1[BSE] - f1[BSW] + f1[TNE] - f1[TNW] + f1[TSE] - f1[TSW];
+				m222 =  f1[BNE] + f1[BNW] + f1[BSE] + f1[BSW] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW];
+
+				k200 = m200 - m000*ux2;
+				k020 = m020 - m000*uy2;
+				k002 = m002 - m000*uz2; 
+				k110 = m110 - m000*ux_uy;          
+				k101 = m101 - m000*ux_uz;
+				k011 = m011 - m000*uy_uz;
+
+				k021 = m021 - (m020*uz + 2.0*uy*k011);          
+				k012 = m012 - (uy*m002 + 2.0*uz*k011);
+				k102 = m102 - (ux*m002 + 2.0*uz*k101);
+				k201 = m201 - (m200*uz + 2.0*ux*k101 );
+				k210 = m210 - (m200*uy + 2.0*ux*k110 );
+				k120 = m120 - (ux*m020 + 2.0*uy*k110);
+				k111 = m111 - (ux_uy_uz + ux*k011 + uy*k101 + uz*k110);
+
+				k121 = m121 - (uz*m120+ 2.0*ux_uy*k011+ux*k021+uy2*k101+2.0*uy*k111); 
+				k112 = m112 - (uy*m102+ 2.0*ux_uz*k011+ux*k012+uz2*k110+2.0*uz*k111);
+				k211 = m211 - (uz*m210+ 2.0*ux_uy*k101+uy*k201+ux2*k011+2.0*ux*k111); 
+
+
+				k220 = m220 - ( ux2*m020+ 4.0*ux_uy*k110 + 2.0*ux*k120 + uy2*k200 + 2.0*uy*k210); 
+				k022 = m022 - ( uy2*m002+ 4.0*uy_uz*k011 + 2.0*uy*k012 + uz2*k020 + 2.0*uz*k021);
+				k202 = m202 - ( ux2*m002+ 4.0*ux_uz*k101 + 2.0*ux*k102 + uz2*k200 + 2.0*uz*k201); 
+
+				k221 = m221 - (uz*m220+
+					2.0*ux2*uy*k011  + ux2*k021 + 2.0*ux*uy2*k101  +4.0*ux_uy*k111 + 
+					2.0*ux*k121 + uy2*k201 + 2.0*uy*k211);
+				k122 = m122 - (ux*m022 
+					+ 2.0*uy2*uz*k101 + uy2*k102 + 2.0*uy*uz2*k110 + 4.0*uy_uz*k111 +
+					2.0*uy*k112 + uz2*k120 + 2.0*uz*k121);
+				k212 = m212 - (uy*m202
+					+ 2.0*ux2*uz*k011 +ux2*k012  + 2.0*ux*uz2*k110 + 4.0*ux_uz*k111 +
+					2.0*ux*k112 + uz2*k210 + 2.0*uz*k211);
+
+				k222 = m222 - (ux2*m022 
+					+ 4.0* ux*uy2*uz*k101   + 
+					2.0* ux*uy2*k102 + 4.0* ux_uy*uz2*k110+ 
+					8.0* ux_uy_uz*k111 + 4.0* ux_uy*k112 + 
+					2.0* ux*uz2*k120 + 4.0* ux_uz*k121 + 2.0*ux*k122 + 
+					uy2*uz2*k200 + 2.0* uy2*uz*k201  + 
+					uy2*k202     + 2.0* uy*uz2*k210  + 4.0*uy_uz*k211 + 
+					2.0* uy*k212 + uz2*k220 +2.0* uz*k221);
+
+				//////////////// Central moments to Cumulants \\\\\\\\\\\\\\\\\\\\\\\\\
+
+				c200 = k200;
+				c020 = k020;
+				c002 = k002;
+				c110 = k110;
+				c101 = k101;
+				c011 = k011;
+
+				c021 = k021;
+				c012 = k012;
+				c102 = k102;
+				c201 = k201;
+				c210 = k210;
+				c120 = k120;
+				c111 = k111;
+
+				c121 = k121 - (k020*k101 + 2*k011*k110)/m000;
+				c211 = k211 - (k200*k011 + 2*k110*k101)/m000;
+				c112 = k112 - (k002*k110 + 2*k011*k101)/m000;
+
+				c220 = k220 - (k200*k020 + 2*k110*k110)/m000;
+				c202 = k202 - (k200*k002 + 2*k101*k101)/m000;
+				c022 = k022 - (k020*k002 + 2*k011*k011)/m000;
+
+				c122 = k122 - (k002*k120 + k020*k102 + 4*k011*k111 + 2*(k101*k021 + k110*k012))/m000;
+				c212 = k212 - (k200*k012 + k002*k210 + 4*k101*k111 + 2*(k110*k102 + k011*k201))/m000;
+				c221 = k221 - (k200*k021 + k020*k201 + 4*k110*k111 + 2*(k101*k120 + k011*k210))/m000;
+
+				c222 = k222 - (4*k111*k111 + k200*k022 + k020*k202 + k002*k220 + 4*(k011*k211 + k101*k121 + k110*k112)
+					+ 2*(k120*k102 + k210*k012 + k201*k021))/m000
+					+ (16*k110*k101*k011 + 4*(k101*k101*k020 + k011*k011*k200 + k110*k110*k002) + 2*k200*k020*k002)/(m000*m000);
+
+				c200_pl_c020_pl_c002 = c200 + c020 + c002;
+				c200_mi_c020 = c200 - c020;
+				c200_mi_c002 = c200 - c002;
+
+				c210_pl_c012  =  c210+c012;
+				c210_mi_c012  =  c210-c012;
+				c201_pl_c021  =  c201+c021;
+				c201_mi_c021  =  c201-c021;
+				c120_pl_c102  =  c120+c102;
+				c120_mi_c102  =  c120-c102;
+
+				c220_pl_c202_pl_c022  = c220 + c202 + c022;
+				c220_mi2_c202_pl_c022 = c220 - 2.0*c202 + c022;
+				c220_pl_c202_mi2_c022 = c220 + c202 - 2.0*c022;
+
+				/////////////////////////// Relaxation \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
+
+				c110 = c110*(1-w1);
+				c101 = c101*(1-w1);
+				c011 = c011*(1-w1);
+
+				c200_mi_c020 = c200_mi_c020*(1-w1); 
+				c200_mi_c002 = c200_mi_c002*(1-w1); 
+
+				c200_pl_c020_pl_c002 = c200_pl_c020_pl_c002*(1-w2) + m000*w2;
+
+				c120_pl_c102 = c120_pl_c102*(1-w3);
+				c210_pl_c012 = c210_pl_c012*(1-w3);
+				c201_pl_c021 = c201_pl_c021*(1-w3); 
+
+
+				c120_mi_c102 = c120_mi_c102*(1-w4); 
+				c210_mi_c012 = c210_mi_c012*(1-w4);
+				c201_mi_c021 = c201_mi_c021*(1-w4);
+
+				c111 = c111*(1-w5);
+
+				c220_mi2_c202_pl_c022 = c220_mi2_c202_pl_c022*(1-w6);
+				c220_pl_c202_mi2_c022 = c220_pl_c202_mi2_c022*(1-w6);
+
+				c220_pl_c202_pl_c022 =  c220_pl_c202_pl_c022*(1-w7);
+
+				c211 = c211*(1-w8);
+				c121 = c121*(1-w8);
+				c112 = c112*(1-w8);
+
+
+				c221 = c221*(1-w9);
+				c212 = c212*(1-w9);
+				c122 = c122*(1-w9);
+
+				c222 = c222*(1-w10);
+
+
+				c200 = c1o3 *c200_mi_c020 + c1o3 *c200_mi_c002 +  c1o3* c200_pl_c020_pl_c002; 
+				c020 = -2*c1o3* c200_mi_c020+ c1o3* c200_mi_c002 +  c1o3* c200_pl_c020_pl_c002; 
+				c002 = c1o3   * c200_mi_c020 -2*c1o3 *c200_mi_c002 +  c1o3* c200_pl_c020_pl_c002; 
+
+				c210 = (c210_mi_c012 + c210_pl_c012)*0.5; 
+				c012 = 0.5*(-c210_mi_c012 + c210_pl_c012); 
+				c120 =(c120_mi_c102 + c120_pl_c102)*0.5; 
+				c102 = 0.5*(-c120_mi_c102 + c120_pl_c102); 
+				c201 = (c201_mi_c021 + c201_pl_c021)*0.5; 
+				c021 = 0.5*(-c201_mi_c021 + c201_pl_c021);
+
+				c220 =  c1o3* c220_mi2_c202_pl_c022 + c1o3* c220_pl_c202_mi2_c022 +  c1o3*c220_pl_c202_pl_c022; 
+				c202 = -c1o3* c220_mi2_c202_pl_c022 + c1o3* c220_pl_c202_pl_c022; 
+				c022 = -c1o3* c220_pl_c202_mi2_c022 + c1o3* c220_pl_c202_pl_c022;
+
+
+				////////////////////// Cumulants to Central moments   \\\\\\\\\\\\\\\\\\\\\\\\\
+
+				k200 = c200;
+				k020 = c020;
+				k002 = c002;
+				k110 = c110;
+				k101 = c101;
+				k011 = c011;
+
+				k021 = c021;
+				k012 = c012;
+				k102 = c102;
+				k201 = c201;
+				k210 = c210;
+				k120 = c120;
+				k111 = c111;
+
+				k121 = c121 + (k020*k101 + 2*k011*k110)/m000;
+				k211 = c211 + (k200*k011 + 2*k110*k101)/m000;
+				k112 = c112 + (k002*k110 + 2*k011*k101)/m000;
+
+				k220 = c220 + (k200*k020 + 2*k110*k110)/m000;
+				k202 = c202 + (k200*k002 + 2*k101*k101)/m000;
+				k022 = c022 + (k020*k002 + 2*k011*k011)/m000;
+
+				k122 = c122 + (k002*k120 + k020*k102 + 4*k011*k111 + 2*(k101*k021 + k110*k012))/m000;
+				k212 = c212 + (k200*k012 + k002*k210 + 4*k101*k111 + 2*(k110*k102 + k011*k201))/m000;
+				k221 = c221 + (k200*k021 + k020*k201 + 4*k110*k111 + 2*(k101*k120 + k011*k210))/m000;
+
+				k222 = c222 + (4*k111*k111 + k200*k022 + k020*k202 + k002*k220 + 4*(k011*k211 + k101*k121 + k110*k112)
+					+ 2*(k120*k102 + k210*k012 + k201*k021))/m000
+					- (16*k110*k101*k011 + 4*(k101*k101*k020 + k011*k011*k200 + k110*k110*k002) + 2*k200*k020*k002)/(m000*m000);
+
+				///////////////////////////////////////////////////////////////////////////////
+
+
+				m200 = k200 + m000*ux2;
+				m020 = k020 + m000*uy2;
+				m002 = k002 + m000*uz2; 
+				m110 = k110 + m000*ux_uy;          
+				m101 = k101 + m000*ux_uz;
+				m011 = k011 + m000*uy_uz;
+
+				m021 = m020*uz + 2.0*uy*k011  + k021;          
+				m012 = uy*m002 + 2.0*uz*k011 + k012;
+				m102 = ux*m002 + 2.0*uz*k101 + k102;
+				m112 = uy*m102 + 2.0*ux_uz*k011+ux*k012+uz2*k110+2.0*uz*k111+k112;
+
+				m201 = m200*uz + 2.0*ux*k101  + k201;
+				m210 = m200*uy + 2.0*ux*k110  + k210;
+				m211 = uz*m210 + 2.0*ux_uy*k101+uy*k201+ux2*k011+2.0*ux*k111+k211; 
+
+				m120 = ux*m020 + 2.0*uy*k110 + k120;
+				m121 = uz*m120 + 2.0*ux_uy*k011+ux*k021+uy2*k101+2.0*uy*k111+ k121; 
+
+				m111 = ux_uy_uz + ux*k011 + uy*k101 + uz*k110+k111;
+
+				m220 = ux2*m020 + 4.0*ux_uy*k110 + 2.0*ux*k120  + uy2*k200 + 2.0*uy*k210 +  k220; 
+
+				m221 = uz*m220 + 2.0*ux2*uy*k011  + ux2*k021 + 2.0*ux*uy2*k101  +4.0*ux_uy*k111+ 
+					2.0*ux*k121  +    uy2*k201  + 2.0*uy*k211  + k221;
+
+				m022 = uy2*m002 + 4.0*uy_uz*k011  +2.0*uy*k012+ uz2*k020+ 2.0*uz*k021 +  k022;
+
+				m122 = ux*m022 + 2.0*uy2*uz*k101 + uy2*k102 + 
+					2.0*uy*uz2*k110 + 4.0*uy_uz*k111 + 2.0*uy*k112 +uz2*k120 + 2.0*uz*k121 + k122;
+
+				m202 = ux2*m002 + 4.0*ux_uz*k101+ 2.0*ux*k102 + uz2*k200+ 2.0*uz*k201 + k202; 
+
+				m212 = uy*m202 + 2.0*ux2*uz*k011 +ux2*k012  + 2.0*ux*uz2*k110 + 4.0*ux_uz*k111 
+					+ 2.0*ux*k112  + uz2*k210 +  2.0*uz*k211 + k212;
+
+				m222 = ux2*m022 
+					+ 4.0* ux*uy2*uz*k101   + 
+					2.0* ux*uy2*k102 + 4.0* ux_uy*uz2*k110+ 
+					8.0* ux_uy_uz*k111 + 4.0* ux_uy*k112 + 
+					2.0* ux*uz2*k120 + 4.0* ux_uz*k121 + 2.0*ux*k122 + 
+					uy2*uz2*k200 + 2.0* uy2*uz*k201  + 
+					uy2*k202     + 2.0* uy*uz2*k210  + 4.0*uy_uz*k211 + 
+					2.0* uy*k212 + uz2*k220 +2.0* uz*k221 + k222;
+
+				f1[ZERO] = (-m200 + m220 - m222 + m202 - m020 + m022 - m002 + m000);
+				f1[E] = 0.5* (m200 -  m220 + m222 - m202 - m120 + m122 - m102 +m100);
+				f1[W] = 0.5* (m200 - m220 + m222 - m202 + m120 - m122 + m102 -m100);
+				f1[N] = 0.5* (-m210 - m220 + m222 + m212 + m020 - m022 - m012 +m010);
+				f1[S] = 0.5* (m210 -  m220 + m222 - m212 + m020 - m022 + m012 -m010);
+				f1[T] = 0.5* (m221 +  m222 - m201 - m202 - m021 - m022 + m002 +m001);
+				f1[B] = 0.5* (-m221 + m222 + m201  - m202 + m021 - m022 + m002-m001);
+
+				f1[NE] = 0.25*( m210  + m220- m222 - m212 + m110+ m120- m122 -m112); 
+				f1[SW] = 0.25*(-m210 + m220- m222 + m212 + m110- m120+ m122 -m112); 
+				f1[SE] = 0.25*(-m210 + m220- m222 + m212 - m110+ m120- m122 +m112); 
+				f1[NW] = 0.25*( m210  + m220- m222 - m212 - m110- m120+ m122 + m112); 
+				f1[TE] = 0.25*(-m221 - m222 + m201 + m202 - m121 - m122 + m101 + m102); 
+				f1[BW] = 0.25*( m221  -m222 - m201 + m202 - m121 + m122 + m101 - m102);
+				f1[BE] = 0.25*(m221 - m222 - m201 + m202 + m121 - m122 - m101 +m102);
+				f1[TW] = 0.25*(-m221 - m222 + m201 + m202 + m121 + m122 - m101 -m102); 
+				f1[TN] = 0.25*(-m221 - m222 - m211 - m212 + m021 + m022 + m011+m012);
+				f1[BS] = 0.25*( m221 - m222 - m211 + m212 - m021 + m022 + m011 - m012);
+				f1[BN] = 0.25*( m221 - m222 + m211 - m212 - m021 + m022 - m011 + m012);
+				f1[TS] = 0.25*(-m221 - m222 + m211 + m212 + m021 + m022 - m011 -m012); 
+
+				f1[TNE]=0.125*( m221 + m222 + m211 + m212 + m121 + m122 + m111 + m112); 
+				f1[BNE]=0.125*(-m221 + m222 -m211 + m212 -m121 + m122 -m111 + m112);
+				f1[TSE]=0.125*( m221 + m222 - m211 - m212 + m121 + m122 - m111 - m112); 
+				f1[BSE]=0.125*(-m221 + m222 +m211 - m212 -m121 + m122 +m111 - m112); 
+				f1[TNW]=0.125*( m221 + m222 + m211 + m212 - m121 - m122 - m111 - m112); 
+				f1[BNW]=0.125*(-m221 + m222 -m211 + m212 +m121 - m122 +m111 - m112); 
+				f1[TSW]=0.125*( m221 + m222 - m211 - m212 - m121 - m122 + m111 + m112); 
+				f1[BSW]=0.125*(-m221 + m222+m211 - m212+m121 - m122-m111 + m112);
+			   
+*/
+			   //////////////////////////////////////////////////////////////////////////
+               //proof correctness
+               //////////////////////////////////////////////////////////////////////////
+#ifdef  PROOF_CORRECTNESS
+			   LBMReal rho_post = (mfaaa+mfaac+mfaca+mfcaa+mfacc+mfcac+mfccc+mfcca)
+			   +(mfaab+mfacb+mfcab+mfccb)+(mfaba+mfabc+mfcba+mfcbc)+(mfbaa+mfbac+mfbca+mfbcc)
+			   +(mfabb+mfcbb)+(mfbab+mfbcb)+(mfbba+mfbbc)+mfbbb;
+				
+				/*LBMReal rho_post = f1[ZERO] + f1[E] + f1[W] + f1[N] + f1[S] + f1[T] + f1[B] + f1[NE] + f1[SW] + f1[SE] + f1[NW] + f1[TE] + f1[BW] + 
+					f1[BE] + f1[TW] + f1[TN] + f1[BS] + f1[BN] + f1[TS] + f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW] + f1[BNE] + f1[BNW] + f1[BSE] + f1[BSW]; */
+               //LBMReal dif = fabs(rho - rho_post);
+               LBMReal dif = rho1 - rho_post;
+#ifdef SINGLEPRECISION
+               if(dif > 10.0E-7 || dif < -10.0E-7)
+#else
+               if(dif > 10.0E-15 || dif < -10.0E-15)
+#endif
+               {
+				   UB_THROW(UbException(UB_EXARGS,"rho="+UbSystem::toString(rho)+", rho_post="+UbSystem::toString(rho_post)
+                     +" dif="+UbSystem::toString(dif)
+                     +" rho is not correct for node "+UbSystem::toString(x1)+","+UbSystem::toString(x2)+","+UbSystem::toString(x3)));
+                  //UBLOG(logERROR,"LBMKernelETD3Q27CCLB::collideAll(): rho is not correct for node "+UbSystem::toString(x1)+","+UbSystem::toString(x2)+","+UbSystem::toString(x3));
+                  //exit(EXIT_FAILURE);
+               }
+#endif
+               			   
+			   
+			   mfcbb = rho*c1o3*(mfcbb ) + 0.5*forcingTerm[E  ] ;
+			   mfbcb = rho*c1o3*(mfbcb ) + 0.5*forcingTerm[N  ] ;
+			   mfbbc = rho*c1o3*(mfbbc ) + 0.5*forcingTerm[T  ] ;
+			   mfccb = rho*c1o3*(mfccb ) + 0.5*forcingTerm[NE ] ;
+			   mfacb = rho*c1o3*(mfacb ) + 0.5*forcingTerm[NW ] ;
+			   mfcbc = rho*c1o3*(mfcbc ) + 0.5*forcingTerm[TE ] ;
+			   mfabc = rho*c1o3*(mfabc ) + 0.5*forcingTerm[TW ] ;
+			   mfbcc = rho*c1o3*(mfbcc ) + 0.5*forcingTerm[TN ] ;
+			   mfbac = rho*c1o3*(mfbac ) + 0.5*forcingTerm[TS ] ;
+			   mfccc = rho*c1o3*(mfccc ) + 0.5*forcingTerm[TNE] ;
+			   mfacc = rho*c1o3*(mfacc ) + 0.5*forcingTerm[TNW] ;
+			   mfcac = rho*c1o3*(mfcac ) + 0.5*forcingTerm[TSE] ;
+			   mfaac = rho*c1o3*(mfaac ) + 0.5*forcingTerm[TSW] ;
+			   mfabb = rho*c1o3*(mfabb ) + 0.5*forcingTerm[W  ] ;
+			   mfbab = rho*c1o3*(mfbab ) + 0.5*forcingTerm[S  ] ;
+			   mfbba = rho*c1o3*(mfbba ) + 0.5*forcingTerm[B  ] ;
+			   mfaab = rho*c1o3*(mfaab ) + 0.5*forcingTerm[SW ] ;
+			   mfcab = rho*c1o3*(mfcab ) + 0.5*forcingTerm[SE ] ;
+			   mfaba = rho*c1o3*(mfaba ) + 0.5*forcingTerm[BW ] ;
+			   mfcba = rho*c1o3*(mfcba ) + 0.5*forcingTerm[BE ] ;
+			   mfbaa = rho*c1o3*(mfbaa ) + 0.5*forcingTerm[BS ] ;
+			   mfbca = rho*c1o3*(mfbca ) + 0.5*forcingTerm[BN ] ;
+			   mfaaa = rho*c1o3*(mfaaa ) + 0.5*forcingTerm[BSW] ;
+			   mfcaa = rho*c1o3*(mfcaa ) + 0.5*forcingTerm[BSE] ;
+			   mfaca = rho*c1o3*(mfaca ) + 0.5*forcingTerm[BNW] ;
+			   mfcca = rho*c1o3*(mfcca ) + 0.5*forcingTerm[BNE] ;
+			   mfbbb = rho*c1o3*(mfbbb ) + 0.5*forcingTerm[ZERO];
+			   
+			   //////////////////////////////////////////////////////////////////////////
+			   //write distribution for F
+			   //////////////////////////////////////////////////////////////////////////
+
+			   (*this->localDistributionsF)(D3Q27System::ET_E,   x1,  x2,  x3) = mfabb;
+			   (*this->localDistributionsF)(D3Q27System::ET_N,   x1,  x2,  x3) = mfbab;
+			   (*this->localDistributionsF)(D3Q27System::ET_T,   x1,  x2,  x3) = mfbba;
+			   (*this->localDistributionsF)(D3Q27System::ET_NE,  x1,  x2,  x3) = mfaab;
+			   (*this->localDistributionsF)(D3Q27System::ET_NW,  x1p, x2,  x3) = mfcab;
+			   (*this->localDistributionsF)(D3Q27System::ET_TE,  x1,  x2,  x3) = mfaba;
+			   (*this->localDistributionsF)(D3Q27System::ET_TW,  x1p, x2,  x3) = mfcba;
+			   (*this->localDistributionsF)(D3Q27System::ET_TN,  x1,  x2,  x3) = mfbaa;
+			   (*this->localDistributionsF)(D3Q27System::ET_TS,  x1,  x2p, x3) = mfbca;
+			   (*this->localDistributionsF)(D3Q27System::ET_TNE, x1,  x2,  x3) = mfaaa;
+			   (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p, x2,  x3) = mfcaa;
+			   (*this->localDistributionsF)(D3Q27System::ET_TSE, x1,  x2p, x3) = mfaca;
+			   (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p, x2p, x3) = mfcca;
+
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_W,   x1p, x2,  x3 ) = mfcbb;
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_S,   x1,  x2p, x3 ) = mfbcb;
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_B,   x1,  x2,  x3p) = mfbbc;
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_SW,  x1p, x2p, x3 ) = mfccb;
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_SE,  x1,  x2p, x3 ) = mfacb;
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BW,  x1p, x2,  x3p) = mfcbc;
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BE,  x1,  x2,  x3p) = mfabc;
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BS,  x1,  x2p, x3p) = mfbcc;
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BN,  x1,  x2,  x3p) = mfbac;
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p, x2p, x3p) = mfccc;
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1,  x2p, x3p) = mfacc;
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p, x2,  x3p) = mfcac;
+			   (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1,  x2,  x3p) = mfaac;
+
+			   (*this->zeroDistributionsF)(x1,x2,x3) = mfbbb;
+
+
+			   
+/////////////////////  P H A S E - F I E L D   S O L V E R /////////////////////////////////////////			   
+/*			   
+			   
+			   mfcbb = (*this->localDistributionsH)(D3Q27System::ET_E, x1,x2,x3);
+			   mfbcb = (*this->localDistributionsH)(D3Q27System::ET_N,x1,x2,x3); 
+			   mfbbc = (*this->localDistributionsH)(D3Q27System::ET_T,x1,x2,x3);
+			   mfccb = (*this->localDistributionsH)(D3Q27System::ET_NE,x1,x2,x3);
+			   mfacb = (*this->localDistributionsH)(D3Q27System::ET_NW,x1p,x2,x3);
+			   mfcbc = (*this->localDistributionsH)(D3Q27System::ET_TE,x1,x2,x3);
+			   mfabc = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p,x2,x3);
+			   mfbcc = (*this->localDistributionsH)(D3Q27System::ET_TN,x1,x2,x3);
+			   mfbac = (*this->localDistributionsH)(D3Q27System::ET_TS,x1,x2p,x3);
+			   mfccc = (*this->localDistributionsH)(D3Q27System::ET_TNE,x1,x2,x3);
+			   mfacc = (*this->localDistributionsH)(D3Q27System::ET_TNW,x1p,x2,x3);
+			   mfcac = (*this->localDistributionsH)(D3Q27System::ET_TSE,x1,x2p,x3);
+			   mfaac = (*this->localDistributionsH)(D3Q27System::ET_TSW,x1p,x2p,x3);
+			   mfabb = (*this->nonLocalDistributionsH)(D3Q27System::ET_W,x1p,x2,x3  );
+			   mfbab = (*this->nonLocalDistributionsH)(D3Q27System::ET_S,x1,x2p,x3  );
+			   mfbba = (*this->nonLocalDistributionsH)(D3Q27System::ET_B,x1,x2,x3p  );
+			   mfaab = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW,x1p,x2p,x3 );
+			   mfcab = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE,x1,x2p,x3 );
+			   mfaba = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW,x1p,x2,x3p );
+			   mfcba = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE,x1,x2,x3p );
+			   mfbaa = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS,x1,x2p,x3p );
+			   mfbca = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN,x1,x2,x3p );
+			   mfaaa = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+			   mfcaa = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE,x1,x2p,x3p);
+			   mfaca = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW,x1p,x2,x3p);
+			   mfcca = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE,x1,x2,x3p);
+			   mfbbb = (*this->zeroDistributionsH)(x1,x2,x3);
+
+			   
+			   LBMReal hSource = ( (tauH - 0.5)*(1.0 - phi[ZERO])*(phi[ZERO])/denom ); // + phi[ZERO]*(dxux + dyuy + dzuz);
+
+
+			   LBMReal drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) +
+				   (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) +
+				   ((mfabb + mfcbb) + (mfbab + mfbcb)) + (mfbba + mfbbc)) + mfbbb;
+
+			   
+			   LBMReal collFactorPhi = 1.0 / tauH;
+			   oMdrho = one; // comp special
+			   ////////////////////////////////////////////////////////////////////////////////////
+
+			   // 						LBMReal wadjust;
+			   // 						LBMReal qudricLimitP = 0.01f;// * 0.0001f;
+			   // 						LBMReal qudricLimitM = 0.01f;// * 0.0001f;
+			   // 						LBMReal qudricLimitD = 0.01f;// * 0.001f;
+			   //LBMReal s9 = minusomega;
+			   //test
+			   //s9 = 0.;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   //Hin
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   // mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36  Konditionieren
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   // Z - Dir
+			   m2 = mfaaa + mfaac; // 2nd raw moment
+			   m1 = mfaac - mfaaa; // 1st raw moment
+			   m0 = m2 + mfaab;    // zeroth raw moment
+			   mfaaa = m0;
+			   m0 += c1o36 * oMdrho;
+			   mfaab = m1 - m0 * uz;                   // this corresponds to a (central moment of order 1 = first raw moment  - velocity * zeroth moment) 
+			   mfaac = m2 - two*	m1 * uz + uz2 * m0; // this corresponds to a (central moment of order 2 = second raw moment - 2* velocity * 1st raw moment + velocity^2 * zeroth moment)
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfaba + mfabc;
+			   m1 = mfabc - mfaba;
+			   m0 = m2 + mfabb;
+			   mfaba = m0;
+			   m0 += c1o9 * oMdrho;
+			   mfabb = m1 - m0 * uz;
+			   mfabc = m2 - two*	m1 * uz + uz2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfaca + mfacc;
+			   m1 = mfacc - mfaca;
+			   m0 = m2 + mfacb;
+			   mfaca = m0;
+			   m0 += c1o36 * oMdrho;
+			   mfacb = m1 - m0 * uz;
+			   mfacc = m2 - two*	m1 * uz + uz2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfbaa + mfbac;
+			   m1 = mfbac - mfbaa;
+			   m0 = m2 + mfbab;
+			   mfbaa = m0;
+			   m0 += c1o9 * oMdrho;
+			   mfbab = m1 - m0 * uz;
+			   mfbac = m2 - two*	m1 * uz + uz2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfbba + mfbbc;
+			   m1 = mfbbc - mfbba;
+			   m0 = m2 + mfbbb;
+			   mfbba = m0;
+			   m0 += c4o9 * oMdrho;
+			   mfbbb = m1 - m0 * uz;
+			   mfbbc = m2 - two*	m1 * uz + uz2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfbca + mfbcc;
+			   m1 = mfbcc - mfbca;
+			   m0 = m2 + mfbcb;
+			   mfbca = m0;
+			   m0 += c1o9 * oMdrho;
+			   mfbcb = m1 - m0 * uz;
+			   mfbcc = m2 - two*	m1 * uz + uz2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfcaa + mfcac;
+			   m1 = mfcac - mfcaa;
+			   m0 = m2 + mfcab;
+			   mfcaa = m0;
+			   m0 += c1o36 * oMdrho;
+			   mfcab = m1 - m0 * uz;
+			   mfcac = m2 - two*	m1 * uz + uz2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfcba + mfcbc;
+			   m1 = mfcbc - mfcba;
+			   m0 = m2 + mfcbb;
+			   mfcba = m0;
+			   m0 += c1o9 * oMdrho;
+			   mfcbb = m1 - m0 * uz;
+			   mfcbc = m2 - two*	m1 * uz + uz2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfcca + mfccc;
+			   m1 = mfccc - mfcca;
+			   m0 = m2 + mfccb;
+			   mfcca = m0;
+			   m0 += c1o36 * oMdrho;
+			   mfccb = m1 - m0 * uz;
+			   mfccc = m2 - two*	m1 * uz + uz2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   // mit  1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   // Y - Dir
+			   m2 = mfaaa + mfaca;
+			   m1 = mfaca - mfaaa;
+			   m0 = m2 + mfaba;
+			   mfaaa = m0;
+			   m0 += c1o6 * oMdrho;
+			   mfaba = m1 - m0 * uy;
+			   mfaca = m2 - two*	m1 * uy + uy2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfaab + mfacb;
+			   m1 = mfacb - mfaab;
+			   m0 = m2 + mfabb;
+			   mfaab = m0;
+			   mfabb = m1 - m0 * uy;
+			   mfacb = m2 - two*	m1 * uy + uy2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfaac + mfacc;
+			   m1 = mfacc - mfaac;
+			   m0 = m2 + mfabc;
+			   mfaac = m0;
+			   m0 += c1o18 * oMdrho;
+			   mfabc = m1 - m0 * uy;
+			   mfacc = m2 - two*	m1 * uy + uy2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfbaa + mfbca;
+			   m1 = mfbca - mfbaa;
+			   m0 = m2 + mfbba;
+			   mfbaa = m0;
+			   m0 += c2o3 * oMdrho;
+			   mfbba = m1 - m0 * uy;
+			   mfbca = m2 - two*	m1 * uy + uy2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfbab + mfbcb;
+			   m1 = mfbcb - mfbab;
+			   m0 = m2 + mfbbb;
+			   mfbab = m0;
+			   mfbbb = m1 - m0 * uy;
+			   mfbcb = m2 - two*	m1 * uy + uy2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfbac + mfbcc;
+			   m1 = mfbcc - mfbac;
+			   m0 = m2 + mfbbc;
+			   mfbac = m0;
+			   m0 += c2o9 * oMdrho;
+			   mfbbc = m1 - m0 * uy;
+			   mfbcc = m2 - two*	m1 * uy + uy2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfcaa + mfcca;
+			   m1 = mfcca - mfcaa;
+			   m0 = m2 + mfcba;
+			   mfcaa = m0;
+			   m0 += c1o6 * oMdrho;
+			   mfcba = m1 - m0 * uy;
+			   mfcca = m2 - two*	m1 * uy + uy2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfcab + mfccb;
+			   m1 = mfccb - mfcab;
+			   m0 = m2 + mfcbb;
+			   mfcab = m0;
+			   mfcbb = m1 - m0 * uy;
+			   mfccb = m2 - two*	m1 * uy + uy2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfcac + mfccc;
+			   m1 = mfccc - mfcac;
+			   m0 = m2 + mfcbc;
+			   mfcac = m0;
+			   m0 += c1o18 * oMdrho;
+			   mfcbc = m1 - m0 * uy;
+			   mfccc = m2 - two*	m1 * uy + uy2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   // mit     1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9		Konditionieren
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   // X - Dir
+			   m2 = mfaaa + mfcaa;
+			   m1 = mfcaa - mfaaa;
+			   m0 = m2 + mfbaa;
+			   mfaaa = m0;
+			   m0 += one* oMdrho;
+			   mfbaa = m1 - m0 * ux;
+			   mfcaa = m2 - two*	m1 * ux + ux2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfaba + mfcba;
+			   m1 = mfcba - mfaba;
+			   m0 = m2 + mfbba;
+			   mfaba = m0;
+			   mfbba = m1 - m0 * ux;
+			   mfcba = m2 - two*	m1 * ux + ux2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfaca + mfcca;
+			   m1 = mfcca - mfaca;
+			   m0 = m2 + mfbca;
+			   mfaca = m0;
+			   m0 += c1o3 * oMdrho;
+			   mfbca = m1 - m0 * ux;
+			   mfcca = m2 - two*	m1 * ux + ux2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfaab + mfcab;
+			   m1 = mfcab - mfaab;
+			   m0 = m2 + mfbab;
+			   mfaab = m0;
+			   mfbab = m1 - m0 * ux;
+			   mfcab = m2 - two*	m1 * ux + ux2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfabb + mfcbb;
+			   m1 = mfcbb - mfabb;
+			   m0 = m2 + mfbbb;
+			   mfabb = m0;
+			   mfbbb = m1 - m0 * ux;
+			   mfcbb = m2 - two*	m1 * ux + ux2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfacb + mfccb;
+			   m1 = mfccb - mfacb;
+			   m0 = m2 + mfbcb;
+			   mfacb = m0;
+			   mfbcb = m1 - m0 * ux;
+			   mfccb = m2 - two*	m1 * ux + ux2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfaac + mfcac;
+			   m1 = mfcac - mfaac;
+			   m0 = m2 + mfbac;
+			   mfaac = m0;
+			   m0 += c1o3 * oMdrho;
+			   mfbac = m1 - m0 * ux;
+			   mfcac = m2 - two*	m1 * ux + ux2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfabc + mfcbc;
+			   m1 = mfcbc - mfabc;
+			   m0 = m2 + mfbbc;
+			   mfabc = m0;
+			   mfbbc = m1 - m0 * ux;
+			   mfcbc = m2 - two*	m1 * ux + ux2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m2 = mfacc + mfccc;
+			   m1 = mfccc - mfacc;
+			   m0 = m2 + mfbcc;
+			   mfacc = m0;
+			   m0 += c1o9 * oMdrho;
+			   mfbcc = m1 - m0 * ux;
+			   mfccc = m2 - two*	m1 * ux + ux2 * m0;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+
+
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   // Collision
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   LBMReal m000 = mfaaa;
+			   LBMReal m100 = mfbaa;
+			   LBMReal m010 = mfaba;
+			   LBMReal m001 = mfaab;
+			   LBMReal m110 = mfbba;
+			   LBMReal m101 = mfbab;
+			   LBMReal m011 = mfabb;
+			   LBMReal m111 = mfbbb;
+			   LBMReal m200 = mfcaa - m000 / 3.0;
+			   LBMReal m020 = mfaca - m000 / 3.0;
+			   LBMReal m002 = mfaac - m000 / 3.0;
+			   LBMReal m210 = mfcba - m010 / 3.0;
+			   LBMReal m012 = mfabc - m010 / 3.0;
+			   LBMReal m201 = mfcab - m001 / 3.0;
+			   LBMReal m021 = mfacb - m001 / 3.0;
+			   LBMReal m120 = mfbca - m100 / 3.0;
+			   LBMReal m102 = mfbac - m100 / 3.0;
+			   LBMReal m220 = mfcca - m000 / 9.0;
+			   LBMReal m202 = mfcac - m000 / 9.0;
+			   LBMReal m022 = mfacc - m000 / 9.0;
+			   LBMReal m221 = mfccb - m001 / 9.0;
+			   LBMReal m212 = mfcbc - m010 / 9.0;
+			   LBMReal m122 = mfbcc - m100 / 9.0;
+			   LBMReal m211 = mfcbb - m011 / 3.0;
+			   LBMReal m121 = mfbcb - m101 / 3.0;
+			   LBMReal m112 = mfbbc - m110 / 3.0;
+			   LBMReal m222 = mfccc - m000 / 27.0;
+
+
+			   m100 = (1.0 - collFactorPhi)*m100 + hSource*dX1_phi*collFactorPhi / 3.0;
+			   m010 = (1.0 - collFactorPhi)*m010 + hSource*dX2_phi*collFactorPhi / 3.0;
+			   m001 = (1.0 - collFactorPhi)*m001 + hSource*dX3_phi*collFactorPhi / 3.0;
+
+			   m110 = 0.0;
+			   m101 = 0.0;
+			   m011 = 0.0;
+
+			   m111 = 0.0;
+
+			   //(200)//
+			   m200 = m000 / 3.0;
+			   m020 = m000 / 3.0;
+			   m002 = m000 / 3.0;
+			   ////
+
+			   //(210)//
+			   m210 = m010 / 3.0;
+			   m201 = m001 / 3.0;
+			   m120 = m100 / 3.0;
+
+
+			   m102 = m100 / 3.0;
+			   m021 = m001 / 3.0;
+			   m012 = m010 / 3.0;
+			   ////
+
+
+			   //(220)//
+			   m220 = m000 / 9.0;
+			   m202 = m000 / 9.0;
+			   m022 = m000 / 9.0;
+			   ////
+
+			   //(221)//
+			   m221 = m001 / 9.0;
+			   m212 = m010 / 9.0;
+			   m122 = m100 / 9.0;
+			   ////
+
+			   //(211)//
+			   m211 = m011 / 3.0;
+			   m121 = m101 / 3.0;
+			   m112 = m110 / 3.0;
+			   ////
+
+			   //(222)//
+			   m222 = m000 / 27.0;
+			   ////
+			   mfaaa = m000 ;
+			   mfbaa = m100;
+			   mfaba = m010;
+			   mfaab = m001;
+			   mfbba = m110;
+			   mfbab = m101;
+			   mfabb = m011;
+			   mfbbb = m111;
+			   mfcaa = m200;
+			   mfaca = m020;
+			   mfaac = m002;
+			   mfcba = m210;
+			   mfabc = m012;
+			   mfcab = m201;
+			   mfacb = m021;
+			   mfbca = m120;
+			   mfbac = m102;
+			   mfcca = m220;
+			   mfcac = m202;
+			   mfacc = m022;
+			   mfccb = m221;
+			   mfcbc = m212;
+			   mfbcc = m122;
+			   mfcbb = m211;
+			   mfbcb = m121;
+			   mfbbc = m112;
+			   mfccc = m222;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   //back
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9   Konditionieren
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   // Z - Dir
+			   m0 = mfaac * c1o2 + mfaab * (uz - c1o2) + (mfaaa + one* oMdrho) * (uz2 - uz) * c1o2;
+			   m1 = -mfaac - two* mfaab *  uz + mfaaa                * (one - uz2) - one* oMdrho * uz2;
+			   m2 = mfaac * c1o2 + mfaab * (uz + c1o2) + (mfaaa + one* oMdrho) * (uz2 + uz) * c1o2;
+			   mfaaa = m0;
+			   mfaab = m1;
+			   mfaac = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m0 = mfabc * c1o2 + mfabb * (uz - c1o2) + mfaba * (uz2 - uz) * c1o2;
+			   m1 = -mfabc - two* mfabb *  uz + mfaba * (one - uz2);
+			   m2 = mfabc * c1o2 + mfabb * (uz + c1o2) + mfaba * (uz2 + uz) * c1o2;
+			   mfaba = m0;
+			   mfabb = m1;
+			   mfabc = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m0 = mfacc * c1o2 + mfacb * (uz - c1o2) + (mfaca + c1o3 * oMdrho) * (uz2 - uz) * c1o2;
+			   m1 = -mfacc - two* mfacb *  uz + mfaca                  * (one - uz2) - c1o3 * oMdrho * uz2;
+			   m2 = mfacc * c1o2 + mfacb * (uz + c1o2) + (mfaca + c1o3 * oMdrho) * (uz2 + uz) * c1o2;
+			   mfaca = m0;
+			   mfacb = m1;
+			   mfacc = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m0 = mfbac * c1o2 + mfbab * (uz - c1o2) + mfbaa * (uz2 - uz) * c1o2;
+			   m1 = -mfbac - two* mfbab *  uz + mfbaa * (one - uz2);
+			   m2 = mfbac * c1o2 + mfbab * (uz + c1o2) + mfbaa * (uz2 + uz) * c1o2;
+			   mfbaa = m0;
+			   mfbab = m1;
+			   mfbac = m2;
+			   /////////b//////////////////////////////////////////////////////////////////////////
+			   m0 = mfbbc * c1o2 + mfbbb * (uz - c1o2) + mfbba * (uz2 - uz) * c1o2;
+			   m1 = -mfbbc - two* mfbbb *  uz + mfbba * (one - uz2);
+			   m2 = mfbbc * c1o2 + mfbbb * (uz + c1o2) + mfbba * (uz2 + uz) * c1o2;
+			   mfbba = m0;
+			   mfbbb = m1;
+			   mfbbc = m2;
+			   /////////b//////////////////////////////////////////////////////////////////////////
+			   m0 = mfbcc * c1o2 + mfbcb * (uz - c1o2) + mfbca * (uz2 - uz) * c1o2;
+			   m1 = -mfbcc - two* mfbcb *  uz + mfbca * (one - uz2);
+			   m2 = mfbcc * c1o2 + mfbcb * (uz + c1o2) + mfbca * (uz2 + uz) * c1o2;
+			   mfbca = m0;
+			   mfbcb = m1;
+			   mfbcc = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m0 = mfcac * c1o2 + mfcab * (uz - c1o2) + (mfcaa + c1o3 * oMdrho) * (uz2 - uz) * c1o2;
+			   m1 = -mfcac - two* mfcab *  uz + mfcaa                  * (one - uz2) - c1o3 * oMdrho * uz2;
+			   m2 = mfcac * c1o2 + mfcab * (uz + c1o2) + (mfcaa + c1o3 * oMdrho) * (uz2 + uz) * c1o2;
+			   mfcaa = m0;
+			   mfcab = m1;
+			   mfcac = m2;
+			   /////////c//////////////////////////////////////////////////////////////////////////
+			   m0 = mfcbc * c1o2 + mfcbb * (uz - c1o2) + mfcba * (uz2 - uz) * c1o2;
+			   m1 = -mfcbc - two* mfcbb *  uz + mfcba * (one - uz2);
+			   m2 = mfcbc * c1o2 + mfcbb * (uz + c1o2) + mfcba * (uz2 + uz) * c1o2;
+			   mfcba = m0;
+			   mfcbb = m1;
+			   mfcbc = m2;
+			   /////////c//////////////////////////////////////////////////////////////////////////
+			   m0 = mfccc * c1o2 + mfccb * (uz - c1o2) + (mfcca + c1o9 * oMdrho) * (uz2 - uz) * c1o2;
+			   m1 = -mfccc - two* mfccb *  uz + mfcca                  * (one - uz2) - c1o9 * oMdrho * uz2;
+			   m2 = mfccc * c1o2 + mfccb * (uz + c1o2) + (mfcca + c1o9 * oMdrho) * (uz2 + uz) * c1o2;
+			   mfcca = m0;
+			   mfccb = m1;
+			   mfccc = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18   Konditionieren
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   // Y - Dir
+			   m0 = mfaca * c1o2 + mfaba * (uy - c1o2) + (mfaaa + c1o6 * oMdrho) * (uy2 - uy) * c1o2;
+			   m1 = -mfaca - two* mfaba *  uy + mfaaa                  * (one - uy2) - c1o6 * oMdrho * uy2;
+			   m2 = mfaca * c1o2 + mfaba * (uy + c1o2) + (mfaaa + c1o6 * oMdrho) * (uy2 + uy) * c1o2;
+			   mfaaa = m0;
+			   mfaba = m1;
+			   mfaca = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m0 = mfacb * c1o2 + mfabb * (uy - c1o2) + (mfaab + c2o3 * oMdrho) * (uy2 - uy) * c1o2;
+			   m1 = -mfacb - two* mfabb *  uy + mfaab                  * (one - uy2) - c2o3 * oMdrho * uy2;
+			   m2 = mfacb * c1o2 + mfabb * (uy + c1o2) + (mfaab + c2o3 * oMdrho) * (uy2 + uy) * c1o2;
+			   mfaab = m0;
+			   mfabb = m1;
+			   mfacb = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m0 = mfacc * c1o2 + mfabc * (uy - c1o2) + (mfaac + c1o6 * oMdrho) * (uy2 - uy) * c1o2;
+			   m1 = -mfacc - two* mfabc *  uy + mfaac                  * (one - uy2) - c1o6 * oMdrho * uy2;
+			   m2 = mfacc * c1o2 + mfabc * (uy + c1o2) + (mfaac + c1o6 * oMdrho) * (uy2 + uy) * c1o2;
+			   mfaac = m0;
+			   mfabc = m1;
+			   mfacc = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m0 = mfbca * c1o2 + mfbba * (uy - c1o2) + mfbaa * (uy2 - uy) * c1o2;
+			   m1 = -mfbca - two* mfbba *  uy + mfbaa * (one - uy2);
+			   m2 = mfbca * c1o2 + mfbba * (uy + c1o2) + mfbaa * (uy2 + uy) * c1o2;
+			   mfbaa = m0;
+			   mfbba = m1;
+			   mfbca = m2;
+			   /////////b//////////////////////////////////////////////////////////////////////////
+			   m0 = mfbcb * c1o2 + mfbbb * (uy - c1o2) + mfbab * (uy2 - uy) * c1o2;
+			   m1 = -mfbcb - two* mfbbb *  uy + mfbab * (one - uy2);
+			   m2 = mfbcb * c1o2 + mfbbb * (uy + c1o2) + mfbab * (uy2 + uy) * c1o2;
+			   mfbab = m0;
+			   mfbbb = m1;
+			   mfbcb = m2;
+			   /////////b//////////////////////////////////////////////////////////////////////////
+			   m0 = mfbcc * c1o2 + mfbbc * (uy - c1o2) + mfbac * (uy2 - uy) * c1o2;
+			   m1 = -mfbcc - two* mfbbc *  uy + mfbac * (one - uy2);
+			   m2 = mfbcc * c1o2 + mfbbc * (uy + c1o2) + mfbac * (uy2 + uy) * c1o2;
+			   mfbac = m0;
+			   mfbbc = m1;
+			   mfbcc = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m0 = mfcca * c1o2 + mfcba * (uy - c1o2) + (mfcaa + c1o18 * oMdrho) * (uy2 - uy) * c1o2;
+			   m1 = -mfcca - two* mfcba *  uy + mfcaa                   * (one - uy2) - c1o18 * oMdrho * uy2;
+			   m2 = mfcca * c1o2 + mfcba * (uy + c1o2) + (mfcaa + c1o18 * oMdrho) * (uy2 + uy) * c1o2;
+			   mfcaa = m0;
+			   mfcba = m1;
+			   mfcca = m2;
+			   /////////c//////////////////////////////////////////////////////////////////////////
+			   m0 = mfccb * c1o2 + mfcbb * (uy - c1o2) + (mfcab + c2o9 * oMdrho) * (uy2 - uy) * c1o2;
+			   m1 = -mfccb - two* mfcbb *  uy + mfcab                  * (one - uy2) - c2o9 * oMdrho * uy2;
+			   m2 = mfccb * c1o2 + mfcbb * (uy + c1o2) + (mfcab + c2o9 * oMdrho) * (uy2 + uy) * c1o2;
+			   mfcab = m0;
+			   mfcbb = m1;
+			   mfccb = m2;
+			   /////////c//////////////////////////////////////////////////////////////////////////
+			   m0 = mfccc * c1o2 + mfcbc * (uy - c1o2) + (mfcac + c1o18 * oMdrho) * (uy2 - uy) * c1o2;
+			   m1 = -mfccc - two* mfcbc *  uy + mfcac                   * (one - uy2) - c1o18 * oMdrho * uy2;
+			   m2 = mfccc * c1o2 + mfcbc * (uy + c1o2) + (mfcac + c1o18 * oMdrho) * (uy2 + uy) * c1o2;
+			   mfcac = m0;
+			   mfcbc = m1;
+			   mfccc = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   // X - Dir
+			   m0 = mfcaa * c1o2 + mfbaa * (ux - c1o2) + (mfaaa + c1o36 * oMdrho) * (ux2 - ux) * c1o2;
+			   m1 = -mfcaa - two* mfbaa *  ux + mfaaa                   * (one - ux2) - c1o36 * oMdrho * ux2;
+			   m2 = mfcaa * c1o2 + mfbaa * (ux + c1o2) + (mfaaa + c1o36 * oMdrho) * (ux2 + ux) * c1o2;
+			   mfaaa = m0;
+			   mfbaa = m1;
+			   mfcaa = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m0 = mfcba * c1o2 + mfbba * (ux - c1o2) + (mfaba + c1o9 * oMdrho) * (ux2 - ux) * c1o2;
+			   m1 = -mfcba - two* mfbba *  ux + mfaba                  * (one - ux2) - c1o9 * oMdrho * ux2;
+			   m2 = mfcba * c1o2 + mfbba * (ux + c1o2) + (mfaba + c1o9 * oMdrho) * (ux2 + ux) * c1o2;
+			   mfaba = m0;
+			   mfbba = m1;
+			   mfcba = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m0 = mfcca * c1o2 + mfbca * (ux - c1o2) + (mfaca + c1o36 * oMdrho) * (ux2 - ux) * c1o2;
+			   m1 = -mfcca - two* mfbca *  ux + mfaca                   * (one - ux2) - c1o36 * oMdrho * ux2;
+			   m2 = mfcca * c1o2 + mfbca * (ux + c1o2) + (mfaca + c1o36 * oMdrho) * (ux2 + ux) * c1o2;
+			   mfaca = m0;
+			   mfbca = m1;
+			   mfcca = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m0 = mfcab * c1o2 + mfbab * (ux - c1o2) + (mfaab + c1o9 * oMdrho) * (ux2 - ux) * c1o2;
+			   m1 = -mfcab - two* mfbab *  ux + mfaab                  * (one - ux2) - c1o9 * oMdrho * ux2;
+			   m2 = mfcab * c1o2 + mfbab * (ux + c1o2) + (mfaab + c1o9 * oMdrho) * (ux2 + ux) * c1o2;
+			   mfaab = m0;
+			   mfbab = m1;
+			   mfcab = m2;
+			   ///////////b////////////////////////////////////////////////////////////////////////
+			   m0 = mfcbb * c1o2 + mfbbb * (ux - c1o2) + (mfabb + c4o9 * oMdrho) * (ux2 - ux) * c1o2;
+			   m1 = -mfcbb - two* mfbbb *  ux + mfabb                  * (one - ux2) - c4o9 * oMdrho * ux2;
+			   m2 = mfcbb * c1o2 + mfbbb * (ux + c1o2) + (mfabb + c4o9 * oMdrho) * (ux2 + ux) * c1o2;
+			   mfabb = m0;
+			   mfbbb = m1;
+			   mfcbb = m2;
+			   ///////////b////////////////////////////////////////////////////////////////////////
+			   m0 = mfccb * c1o2 + mfbcb * (ux - c1o2) + (mfacb + c1o9 * oMdrho) * (ux2 - ux) * c1o2;
+			   m1 = -mfccb - two* mfbcb *  ux + mfacb                  * (one - ux2) - c1o9 * oMdrho * ux2;
+			   m2 = mfccb * c1o2 + mfbcb * (ux + c1o2) + (mfacb + c1o9 * oMdrho) * (ux2 + ux) * c1o2;
+			   mfacb = m0;
+			   mfbcb = m1;
+			   mfccb = m2;
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   ////////////////////////////////////////////////////////////////////////////////////
+			   m0 = mfcac * c1o2 + mfbac * (ux - c1o2) + (mfaac + c1o36 * oMdrho) * (ux2 - ux) * c1o2;
+			   m1 = -mfcac - two* mfbac *  ux + mfaac                   * (one - ux2) - c1o36 * oMdrho * ux2;
+			   m2 = mfcac * c1o2 + mfbac * (ux + c1o2) + (mfaac + c1o36 * oMdrho) * (ux2 + ux) * c1o2;
+			   mfaac = m0;
+			   mfbac = m1;
+			   mfcac = m2;
+			   ///////////c////////////////////////////////////////////////////////////////////////
+			   m0 = mfcbc * c1o2 + mfbbc * (ux - c1o2) + (mfabc + c1o9 * oMdrho) * (ux2 - ux) * c1o2;
+			   m1 = -mfcbc - two* mfbbc *  ux + mfabc                  * (one - ux2) - c1o9 * oMdrho * ux2;
+			   m2 = mfcbc * c1o2 + mfbbc * (ux + c1o2) + (mfabc + c1o9 * oMdrho) * (ux2 + ux) * c1o2;
+			   mfabc = m0;
+			   mfbbc = m1;
+			   mfcbc = m2;
+			   ///////////c////////////////////////////////////////////////////////////////////////
+			   m0 = mfccc * c1o2 + mfbcc * (ux - c1o2) + (mfacc + c1o36 * oMdrho) * (ux2 - ux) * c1o2;
+			   m1 = -mfccc - two* mfbcc *  ux + mfacc                   * (one - ux2) - c1o36 * oMdrho * ux2;
+			   m2 = mfccc * c1o2 + mfbcc * (ux + c1o2) + (mfacc + c1o36 * oMdrho) * (ux2 + ux) * c1o2;
+			   mfacc = m0;
+			   mfbcc = m1;
+			   mfccc = m2;
+
+			   ////////////////////////////////////////////////////////////////////////////////////
+
+			   //////////////////////////////////////////////////////////////////////////
+			   //proof correctness
+			   //////////////////////////////////////////////////////////////////////////
+#ifdef  PROOF_CORRECTNESS
+			   LBMReal drho_post = (mfaaa + mfaac + mfaca + mfcaa + mfacc + mfcac + mfccc + mfcca)
+				   + (mfaab + mfacb + mfcab + mfccb) + (mfaba + mfabc + mfcba + mfcbc) + (mfbaa + mfbac + mfbca + mfbcc)
+				   + (mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc) + mfbbb;
+			   //LBMReal dif = fabs(rho - rho_post);
+			   dif = drho - drho_post;
+#ifdef SINGLEPRECISION
+			   if (dif > 10.0E-7 || dif < -10.0E-7)
+#else
+			   if (dif > 10.0E-15 || dif < -10.0E-15)
+#endif
+			   {
+				   UB_THROW(UbException(UB_EXARGS, "rho=" + UbSystem::toString(drho) + ", rho_post=" + UbSystem::toString(drho_post)
+					   + " dif=" + UbSystem::toString(dif)
+					   + " rho is not correct for node " + UbSystem::toString(x1) + "," + UbSystem::toString(x2) + "," + UbSystem::toString(x3)));
+				   //UBLOG(logERROR,"LBMKernelETD3Q27CCLB::collideAll(): rho is not correct for node "+UbSystem::toString(x1)+","+UbSystem::toString(x2)+","+UbSystem::toString(x3));
+				   //exit(EXIT_FAILURE);
+			   }
+#endif			   
+			   
+			   
+			   //////////////////////////////////////////////////////////////////////////
+			   //write distribution for H
+			   //////////////////////////////////////////////////////////////////////////
+
+			   //(*this->localDistributionsH)(D3Q27System::ET_E,   x1,  x2,  x3) = mfabb;
+			   //(*this->localDistributionsH)(D3Q27System::ET_N,   x1,  x2,  x3) = mfbab;
+			   //(*this->localDistributionsH)(D3Q27System::ET_T,   x1,  x2,  x3) = mfbba;
+			   //(*this->localDistributionsH)(D3Q27System::ET_NE,  x1,  x2,  x3) = mfaab;
+			   //(*this->localDistributionsH)(D3Q27System::ET_NW,  x1p, x2,  x3) = mfcab;
+			   //(*this->localDistributionsH)(D3Q27System::ET_TE,  x1,  x2,  x3) = mfaba;
+			   //(*this->localDistributionsH)(D3Q27System::ET_TW,  x1p, x2,  x3) = mfcba;
+			   //(*this->localDistributionsH)(D3Q27System::ET_TN,  x1,  x2,  x3) = mfbaa;
+			   //(*this->localDistributionsH)(D3Q27System::ET_TS,  x1,  x2p, x3) = mfbca;
+			   //(*this->localDistributionsH)(D3Q27System::ET_TNE, x1,  x2,  x3) = mfaaa;
+			   //(*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2,  x3) = mfcaa;
+			   //(*this->localDistributionsH)(D3Q27System::ET_TSE, x1,  x2p, x3) = mfaca;
+			   //(*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3) = mfcca;
+
+			   //(*this->nonLocalDistributionsH)(D3Q27System::ET_W,   x1p, x2,  x3 ) = mfcbb;
+			   //(*this->nonLocalDistributionsH)(D3Q27System::ET_S,   x1,  x2p, x3 ) = mfbcb;
+			   //(*this->nonLocalDistributionsH)(D3Q27System::ET_B,   x1,  x2,  x3p) = mfbbc;
+			   //(*this->nonLocalDistributionsH)(D3Q27System::ET_SW,  x1p, x2p, x3 ) = mfccb;
+			   //(*this->nonLocalDistributionsH)(D3Q27System::ET_SE,  x1,  x2p, x3 ) = mfacb;
+			   //(*this->nonLocalDistributionsH)(D3Q27System::ET_BW,  x1p, x2,  x3p) = mfcbc;
+			   //(*this->nonLocalDistributionsH)(D3Q27System::ET_BE,  x1,  x2,  x3p) = mfabc;
+			   //(*this->nonLocalDistributionsH)(D3Q27System::ET_BS,  x1,  x2p, x3p) = mfbcc;
+			   //(*this->nonLocalDistributionsH)(D3Q27System::ET_BN,  x1,  x2,  x3p) = mfbac;
+			   //(*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p) = mfccc;
+			   //(*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1,  x2p, x3p) = mfacc;
+			   //(*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2,  x3p) = mfcac;
+			   //(*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1,  x2,  x3p) = mfaac;
+
+			   //(*this->zeroDistributionsH)(x1,x2,x3) = mfbbb;
+			   
+*/
+			   
+			   
+/////////////////////   PHASE-FIELD BGK SOLVER ///////////////////////////////
+
+			   h[E  ] = (*this->localDistributionsH)(D3Q27System::ET_E, x1,x2,x3);
+			   h[N  ] = (*this->localDistributionsH)(D3Q27System::ET_N,x1,x2,x3); 
+			   h[T  ] = (*this->localDistributionsH)(D3Q27System::ET_T,x1,x2,x3);
+			   h[NE ] = (*this->localDistributionsH)(D3Q27System::ET_NE,x1,x2,x3);
+			   h[NW ] = (*this->localDistributionsH)(D3Q27System::ET_NW,x1p,x2,x3);
+			   h[TE ] = (*this->localDistributionsH)(D3Q27System::ET_TE,x1,x2,x3);
+			   h[TW ] = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p,x2,x3);
+			   h[TN ] = (*this->localDistributionsH)(D3Q27System::ET_TN,x1,x2,x3);
+			   h[TS ] = (*this->localDistributionsH)(D3Q27System::ET_TS,x1,x2p,x3);
+			   h[TNE] = (*this->localDistributionsH)(D3Q27System::ET_TNE,x1,x2,x3);
+			   h[TNW] = (*this->localDistributionsH)(D3Q27System::ET_TNW,x1p,x2,x3);
+			   h[TSE] = (*this->localDistributionsH)(D3Q27System::ET_TSE,x1,x2p,x3);
+			   h[TSW] = (*this->localDistributionsH)(D3Q27System::ET_TSW,x1p,x2p,x3);
+
+			   h[W  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_W,x1p,x2,x3  );
+			   h[S  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_S,x1,x2p,x3  );
+			   h[B  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_B,x1,x2,x3p  );
+			   h[SW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW,x1p,x2p,x3 );
+			   h[SE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE,x1,x2p,x3 );
+			   h[BW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW,x1p,x2,x3p );
+			   h[BE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE,x1,x2,x3p );
+			   h[BS ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS,x1,x2p,x3p );
+			   h[BN ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN,x1,x2,x3p );
+			   h[BSW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+			   h[BSE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE,x1,x2p,x3p);
+			   h[BNW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW,x1p,x2,x3p);
+			   h[BNE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE,x1,x2,x3p);
+
+			   h[ZERO] = (*this->zeroDistributionsH)(x1,x2,x3);
+			   
+			   
+			   //LBMReal denom = sqrt(dX1_phi*dX1_phi + dX2_phi*dX2_phi + dX3_phi*dX3_phi) + 1e-15;
+			   //LBMReal di = sqrt(8*kappa/beta);
+			   LBMReal tauH1 = 3.0*mob + 0.5;
+			   for (int dir = STARTF; dir < (ENDF+1); dir++)
+			   {
+				   LBMReal velProd = DX1[dir]*ux + DX2[dir]*uy + DX3[dir]*uz;
+				   LBMReal velSq1 = velProd*velProd;
+				   LBMReal hEq, gEq;
+				   
+				   if (dir != ZERO)
+				   {
+					   //LBMReal dirGrad_phi = DX1[dir]*dX1_phi+DX2[dir]*dX2_phi+DX3[dir]*dX3_phi;
+					   LBMReal dirGrad_phi = (phi[dir] - phi[INVDIR[dir]])/2.0;
+					   LBMReal hSource = (tauH - 0.5)*(1.0 - phi[ZERO])*(phi[ZERO])*(dirGrad_phi)/denom; // + phi[ZERO]*(dxux + dyuy + dzuz);
+						   
+					   //LBMReal hSource =((phi[ZERO]>phiH || phi[ZERO]<phiL) ? 0.1 : 1.0) * 3.0*mob*(-4.0)/di*(phi[ZERO] - phiL)*(phi[ZERO] - phiH)*(dirGrad_phi)/denom;
+					   //LBMReal hSource = 3.0*mob*(-4.0)/di*(phi[ZERO] - phiL)*(phi[ZERO] - phiH)*(dirGrad_phi)/denom;
+					   hEq = phi[ZERO]*WEIGTH[dir]*(1.0 + 3.0*velProd + 4.5*velSq1 - 1.5*(ux2+uy2+uz2)) + hSource*WEIGTH[dir];
+					   //gEq = rho*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(vx2+vy2+vz2))*c1o3 + (p1-rho*c1o3)*WEIGTH[dir];
+					   //h[dir] = hEq; //h[dir] - (h[dir] - hEq)/(tauH + 0.5));  /// This corresponds with the collision factor of 1.0 which equals (tauH + 0.5). 
+					   h[dir] = h[dir] - (h[dir] - hEq)/(tauH); // + WEIGTH[dir]*phi[ZERO]*(dxux + dyuy + dzuz);
+					   //h[dir] = h[dir] - (h[dir] - hEq)/(tauH1);
+					   //g[dir] = g[dir] - collFactorM*(g[dir]-gEq) + 0.5*forcingTerm[dir];
+
+				   } 
+				   else
+				   {
+					   hEq = phi[ZERO]*WEIGTH[ZERO]*(1.0 - 1.5*(ux2+uy2+uz2));
+					   //gEq = rho*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(vx2+vy2+vz2))*c1o3 + (p1-rho*c1o3)*WEIGTH[dir];
+					   //h[dir] = hEq;
+					   h[ZERO] = h[ZERO] - (h[ZERO] - hEq)/(tauH); // + WEIGTH[ZERO]*phi[ZERO]*(dxux + dyuy + dzuz);
+					   //g[dir] = g[dir] - collFactorM*(g[dir]-gEq) + 0.5*forcingTerm[dir];
+				   }
+			   }
+			   
+			   
+			   (*this->localDistributionsH)(D3Q27System::ET_E,   x1,  x2,  x3) = h[D3Q27System::INV_E];
+			   (*this->localDistributionsH)(D3Q27System::ET_N,   x1,  x2,  x3) = h[D3Q27System::INV_N];
+			   (*this->localDistributionsH)(D3Q27System::ET_T,   x1,  x2,  x3) = h[D3Q27System::INV_T];
+			   (*this->localDistributionsH)(D3Q27System::ET_NE,  x1,  x2,  x3) = h[D3Q27System::INV_NE];
+			   (*this->localDistributionsH)(D3Q27System::ET_NW,  x1p, x2,  x3) = h[D3Q27System::INV_NW];
+			   (*this->localDistributionsH)(D3Q27System::ET_TE,  x1,  x2,  x3) = h[D3Q27System::INV_TE];
+			   (*this->localDistributionsH)(D3Q27System::ET_TW,  x1p, x2,  x3) = h[D3Q27System::INV_TW];
+			   (*this->localDistributionsH)(D3Q27System::ET_TN,  x1,  x2,  x3) = h[D3Q27System::INV_TN];
+			   (*this->localDistributionsH)(D3Q27System::ET_TS,  x1,  x2p, x3) = h[D3Q27System::INV_TS];
+			   (*this->localDistributionsH)(D3Q27System::ET_TNE, x1,  x2,  x3) = h[D3Q27System::INV_TNE];
+			   (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2,  x3) = h[D3Q27System::INV_TNW];
+			   (*this->localDistributionsH)(D3Q27System::ET_TSE, x1,  x2p, x3) = h[D3Q27System::INV_TSE];
+			   (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3) = h[D3Q27System::INV_TSW];
+			   
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_W,   x1p, x2,  x3 ) = h[D3Q27System::INV_W ];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_S,   x1,  x2p, x3 ) = h[D3Q27System::INV_S ];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_B,   x1,  x2,  x3p) = h[D3Q27System::INV_B ];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_SW,  x1p, x2p, x3 ) = h[D3Q27System::INV_SW];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_SE,  x1,  x2p, x3 ) = h[D3Q27System::INV_SE];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BW,  x1p, x2,  x3p) = h[D3Q27System::INV_BW];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BE,  x1,  x2,  x3p) = h[D3Q27System::INV_BE];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BS,  x1,  x2p, x3p) = h[D3Q27System::INV_BS];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BN,  x1,  x2,  x3p) = h[D3Q27System::INV_BN];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p) = h[D3Q27System::INV_BSW];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1,  x2p, x3p) = h[D3Q27System::INV_BSE];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2,  x3p) = h[D3Q27System::INV_BNW];
+			   (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1,  x2,  x3p) = h[D3Q27System::INV_BNE];
+			   
+			   (*this->zeroDistributionsH)(x1,x2,x3) = h[D3Q27System::ZERO];			   
+			   
+			   
+/////////////////////   END OF OLD BGK SOLVER ///////////////////////////////
+			   
+
+
+
+
+
+               //////////////////////////////////////////////////////////////////////////
+
+            }
+         }
+      }
+   }
+   dataSet->setPhaseField(divU);
+   
+   }
+}
+//////////////////////////////////////////////////////////////////////////
+double MultiphaseCumulantLBMKernel::getCallculationTime()
+{
+   //return timer.getDuration();
+   return timer.getTotalTime();
+}
+//////////////////////////////////////////////////////////////////////////
+
+LBMReal MultiphaseCumulantLBMKernel::gradX1_phi()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*DX1[k]*phi[k];
+	}
+	return 3.0*sum;
+}
+
+LBMReal MultiphaseCumulantLBMKernel::gradX2_phi()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*DX2[k]*phi[k];
+	}
+	return 3.0*sum;
+}
+
+LBMReal MultiphaseCumulantLBMKernel::gradX3_phi()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*DX3[k]*phi[k];
+	}
+	return 3.0*sum;
+}
+
+LBMReal MultiphaseCumulantLBMKernel::nabla2_phi()
+{
+	using namespace D3Q27System;
+	LBMReal sum = 0.0;
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		sum += WEIGTH[k]*(phi[k] - phi[ZERO]);
+	}
+	return 6.0*sum;
+}
+///// Commnets neeeded ////////
+
+void MultiphaseCumulantLBMKernel::computePhasefield()
+{
+	using namespace D3Q27System;
+	DistributionArray3DPtr distributionsH = dataSet->getHdistributions();
+
+	//const int bcArrayMaxX1 = (int)distributionsH->getNX1();
+	//const int bcArrayMaxX2 = (int)distributionsH->getNX2();
+	//const int bcArrayMaxX3 = (int)distributionsH->getNX3();
+
+	int minX1 = ghostLayerWidth;
+	int minX2 = ghostLayerWidth;
+	int minX3 = ghostLayerWidth;
+	int maxX1 = (int)distributionsH->getNX1() - ghostLayerWidth;
+	int maxX2 = (int)distributionsH->getNX2() - ghostLayerWidth;
+	int maxX3 = (int)distributionsH->getNX3() - ghostLayerWidth;
+
+	//------------- Computing the phase-field ------------------
+	for(int x3 = minX3; x3 < maxX3; x3++)
+	{
+		for(int x2 = minX2; x2 < maxX2; x2++)
+		{
+			for(int x1 = minX1; x1 < maxX1; x1++)
+			{
+				//if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3))
+				{
+					int x1p = x1 + 1;
+					int x2p = x2 + 1;
+					int x3p = x3 + 1;
+
+					h[E  ] = (*this->localDistributionsH)(D3Q27System::ET_E, x1,x2,x3);
+					h[N  ] = (*this->localDistributionsH)(D3Q27System::ET_N,x1,x2,x3); 
+					h[T  ] = (*this->localDistributionsH)(D3Q27System::ET_T,x1,x2,x3);
+					h[NE ] = (*this->localDistributionsH)(D3Q27System::ET_NE,x1,x2,x3);
+					h[NW ] = (*this->localDistributionsH)(D3Q27System::ET_NW,x1p,x2,x3);
+					h[TE ] = (*this->localDistributionsH)(D3Q27System::ET_TE,x1,x2,x3);
+					h[TW ] = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p,x2,x3);
+					h[TN ] = (*this->localDistributionsH)(D3Q27System::ET_TN,x1,x2,x3);
+					h[TS ] = (*this->localDistributionsH)(D3Q27System::ET_TS,x1,x2p,x3);
+					h[TNE] = (*this->localDistributionsH)(D3Q27System::ET_TNE,x1,x2,x3);
+					h[TNW] = (*this->localDistributionsH)(D3Q27System::ET_TNW,x1p,x2,x3);
+					h[TSE] = (*this->localDistributionsH)(D3Q27System::ET_TSE,x1,x2p,x3);
+					h[TSW] = (*this->localDistributionsH)(D3Q27System::ET_TSW,x1p,x2p,x3);
+
+					h[W  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_W,x1p,x2,x3  );
+					h[S  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_S,x1,x2p,x3  );
+					h[B  ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_B,x1,x2,x3p  );
+					h[SW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW,x1p,x2p,x3 );
+					h[SE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE,x1,x2p,x3 );
+					h[BW ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW,x1p,x2,x3p );
+					h[BE ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE,x1,x2,x3p );
+					h[BS ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS,x1,x2p,x3p );
+					h[BN ] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN,x1,x2,x3p );
+					h[BSW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW,x1p,x2p,x3p);
+					h[BSE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE,x1,x2p,x3p);
+					h[BNW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW,x1p,x2,x3p);
+					h[BNE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE,x1,x2,x3p);
+
+					h[ZERO] = (*this->zeroDistributionsH)(x1,x2,x3);
+
+					/*(*this->phaseField)(x1,x2,x3) = h[ZERO] + h[E] + h[W] + h[N] + h[S] + h[T] + h[B] + h[NE] + h[SW] + h[SE] + h[NW] + h[TE] + h[BW] + 
+						h[BE] + h[TW] + h[TN] + h[BS] + h[BN] + h[TS] + h[TNE] + h[TNW] + h[TSE] + h[TSW] + h[BNE] + h[BNW] + h[BSE] + h[BSW];*/
+
+				}
+			}
+		}
+	}
+	//----------------------------------------------------------
+	
+/*
+	/////// Filling ghost nodes for FD computations //////////
+	for(int x1 = minX1; x1 < maxX1; x1++)
+	{
+		for(int x2 = minX2; x2 < maxX2; x2++)
+		{
+			int x3 = 0;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, x2, maxX3-1);
+			x3 = maxX3;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, x2, minX3);
+		}
+	}
+	for(int x2 = minX2; x2 < maxX2; x2++)
+	{
+		for(int x3 = minX3; x3 < maxX3; x3++)
+		{
+			int x1 = 0;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(maxX1-1, x2, x3);
+			x1 = maxX1;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(minX1, x2, x3);
+		}
+	}
+	for(int x1 = minX1; x1 < maxX1; x1++)
+	{
+		for(int x3 = minX3; x3 < maxX3; x3++)
+		{
+			int x2 = 0;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, maxX2-1, x3);
+			x2 = maxX2;
+			(*phaseField)(x1, x2, x3) = (*phaseField)(x1, minX2, x3);
+		}
+	}
+	(*phaseField)(0, 0,     0    ) = (*phaseField)(maxX1-1, maxX2-1, maxX3-1);
+	(*phaseField)(0, 0,     maxX3) = (*phaseField)(maxX1-1, maxX2-1, minX3  );
+	(*phaseField)(0, maxX2, 0    ) = (*phaseField)(maxX1-1, minX2, maxX3-1  );
+	(*phaseField)(0, maxX2, maxX3) = (*phaseField)(maxX1-1, minX2, minX3    );
+
+	(*phaseField)(maxX1, 0,     0    ) = (*phaseField)(minX1, maxX2-1, maxX3-1);
+	(*phaseField)(maxX1, 0,     maxX3) = (*phaseField)(minX1, maxX2-1, minX3  );
+	(*phaseField)(maxX1, maxX2, 0    ) = (*phaseField)(minX1, minX2, maxX3-1  );
+	(*phaseField)(maxX1, maxX2, maxX3) = (*phaseField)(minX1, minX2, minX3    );
+
+	///////////////////////////////////////////////////////// 
+*/
+}
+
+void MultiphaseCumulantLBMKernel::findNeighbors(CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr ph, int x1, int x2, int x3)
+{
+	using namespace D3Q27System;
+	
+	BCArray3DPtr bcArray = this->getBCProcessor()->getBCArray();
+
+	phi[ZERO] = (*ph)(x1,x2,x3);
+	
+	LBMReal a = -0.5*sqrt(2*beta/kappa)*cos(contactAngle*PI/180);
+	LBMReal a1 = 1 + a;
+	
+	for (int k = FSTARTDIR ; k <= FENDDIR ; k++)
+	{
+		
+		if (!bcArray->isSolid(x1 + DX1[k], x2 + DX2[k], x3 + DX3[k]))
+		{
+			phi[k] = (*ph)(x1 + DX1[k], x2 + DX2[k], x3 + DX3[k]);
+		} 
+		else
+		{
+			/*
+			if (phi[ZERO] < 1e-2)
+			{
+				phi[k] = (*ph)(x1 + DX1[INVDIR[k]], x2 + DX2[INVDIR[k]], x3 + DX3[INVDIR[k]]);
+			}
+			else
+			{
+				LBMReal phi_f = (*ph)(x1 + DX1[k], x2, x3 + DX3[k]);
+				phi[k] = (a1 - sqrt(a1*a1 - 4*a*phi_f) )/a - phi_f;
+			}
+			*/
+			
+			phi[k] = (*ph)(x1, x2, x3);
+
+			//if (bcArray->isSolid(x1 + DX1[k], x2, x3))
+			//{
+			//	phi[k] = (*ph)(x1, x2, x3);
+			//	//if (!bcArray->isSolid(x1 , x2 + DX2[k], x3 + DX3[k]))
+			//	//{
+			//	//	//phi[k] = (*ph)(x1 , x2 + DX2[k], x3 + DX3[k]);
+			//	//	LBMReal phi_f = (*ph)(x1 , x2 + DX2[k], x3 + DX3[k]);
+			//	//	phi[k] = (a1 - sqrt(a1*a1 - 4*a*phi_f) )/a - phi_f;
+			//	//} 
+			//	//else
+			//	//{
+			//	//	phi[k] = (*ph)(x1, x2, x3);
+			//	//}
+			//}
+			//
+			//if (bcArray->isSolid(x1 , x2 + DX2[k], x3))
+			//{
+			//	phi[k] = (*ph)(x1, x2, x3);
+			//	//if (!bcArray->isSolid(x1 + DX1[k], x2 , x3 + DX3[k]))
+			//	//{
+			//	//	//phi[k] = (*ph)(x1 + DX1[k], x2 , x3 + DX3[k]);
+			//	//	LBMReal phi_f = (*ph)(x1 + DX1[k], x2 , x3 + DX3[k]);
+			//	//	phi[k] = (a1 - sqrt(a1*a1 - 4*a*phi_f) )/a - phi_f;
+			//	//} 
+			//	//else
+			//	//{
+			//	//	phi[k] = (*ph)(x1, x2, x3);
+			//	//}
+			//}
+
+
+			//if (bcArray->isSolid(x1 , x2, x3+ DX3[k]))
+			//{
+			//	if (!bcArray->isSolid(x1 + DX1[k], x2 + DX2[k], x3))
+			//	{
+			//		//phi[k] = (*ph)(x1 + DX1[k], x2 + DX2[k], x3);
+			//		LBMReal phi_f = (*ph)(x1 + DX1[k], x2 + DX2[k], x3);
+			//		phi[k] = (a1 - sqrt(a1*a1 - 4*a*phi_f) )/a - phi_f;
+			//	} 
+			//	else
+			//	{
+			//		phi[k] = (*ph)(x1, x2, x3);
+			//	}
+			//}
+
+
+			/*if (bcArray->isSolid(x1 + DX1[k], x2, x3)) phi[k] = (*ph)(x1 , x2 + DX2[k], x3 + DX3[k]);
+			if (bcArray->isSolid(x1 , x2 + DX2[k], x3)) phi[k] = (*ph)(x1 + DX1[k], x2 , x3 + DX3[k]);
+			if (bcArray->isSolid(x1 , x2, x3+ DX3[k])) phi[k] = (*ph)(x1 + DX1[k], x2 + DX2[k], x3 );*/
+
+			/*if (phi[ZERO] < 0.00001)
+			{
+			phi[k] = 0.0;
+			} 
+			else
+			{
+			phi[k] = 0.5;
+			}*/
+			
+			//phi[k] = 0.5;
+			//phi[k] = (*ph)(x1, x2, x3);
+			//phi[k] = (*ph)(x1 + DX1[INVDIR[k]], x2 + DX2[INVDIR[k]], x3 + DX3[INVDIR[k]]);
+			
+			
+		}
+	}
+
+	/*
+	phi[E  ] = (*ph)(x1 + DX1[E  ], x2 + DX2[E  ], x3 + DX3[E  ]);
+	phi[N  ] = (*ph)(x1 + DX1[N  ], x2 + DX2[N  ], x3 + DX3[N  ]);
+	phi[T  ] = (*ph)(x1 + DX1[T  ], x2 + DX2[T  ], x3 + DX3[T  ]);
+	phi[W  ] = (*ph)(x1 + DX1[W  ], x2 + DX2[W  ], x3 + DX3[W  ]);
+	phi[S  ] = (*ph)(x1 + DX1[S  ], x2 + DX2[S  ], x3 + DX3[S  ]);
+	phi[B  ] = (*ph)(x1 + DX1[B  ], x2 + DX2[B  ], x3 + DX3[B  ]);
+	phi[NE ] = (*ph)(x1 + DX1[NE ], x2 + DX2[NE ], x3 + DX3[NE ]);
+	phi[NW ] = (*ph)(x1 + DX1[NW ], x2 + DX2[NW ], x3 + DX3[NW ]);
+	phi[TE ] = (*ph)(x1 + DX1[TE ], x2 + DX2[TE ], x3 + DX3[TE ]);
+	phi[TW ] = (*ph)(x1 + DX1[TW ], x2 + DX2[TW ], x3 + DX3[TW ]);
+	phi[TN ] = (*ph)(x1 + DX1[TN ], x2 + DX2[TN ], x3 + DX3[TN ]);
+	phi[TS ] = (*ph)(x1 + DX1[TS ], x2 + DX2[TS ], x3 + DX3[TS ]);
+	phi[SW ] = (*ph)(x1 + DX1[SW ], x2 + DX2[SW ], x3 + DX3[SW ]);
+	phi[SE ] = (*ph)(x1 + DX1[SE ], x2 + DX2[SE ], x3 + DX3[SE ]);
+	phi[BW ] = (*ph)(x1 + DX1[BW ], x2 + DX2[BW ], x3 + DX3[BW ]);
+	phi[BE ] = (*ph)(x1 + DX1[BE ], x2 + DX2[BE ], x3 + DX3[BE ]);
+	phi[BS ] = (*ph)(x1 + DX1[BS ], x2 + DX2[BS ], x3 + DX3[BS ]);
+	phi[BN ] = (*ph)(x1 + DX1[BN ], x2 + DX2[BN ], x3 + DX3[BN ]);
+	phi[BSW] = (*ph)(x1 + DX1[BSW], x2 + DX2[BSW], x3 + DX3[BSW]);
+	phi[BSE] = (*ph)(x1 + DX1[BSE], x2 + DX2[BSE], x3 + DX3[BSE]);
+	phi[BNW] = (*ph)(x1 + DX1[BNW], x2 + DX2[BNW], x3 + DX3[BNW]);
+	phi[BNE] = (*ph)(x1 + DX1[BNE], x2 + DX2[BNE], x3 + DX3[BNE]);
+	phi[TNE] = (*ph)(x1 + DX1[TNE], x2 + DX2[TNE], x3 + DX3[TNE]);
+	phi[TNW] = (*ph)(x1 + DX1[TNW], x2 + DX2[TNW], x3 + DX3[TNW]);
+	phi[TSE] = (*ph)(x1 + DX1[TSE], x2 + DX2[TSE], x3 + DX3[TSE]);
+	phi[TSW] = (*ph)(x1 + DX1[TSW], x2 + DX2[TSW], x3 + DX3[TSW]);
+	*/
+}
+
+void MultiphaseCumulantLBMKernel::swapDistributions()
+{
+   dataSet->getFdistributions()->swap();
+   dataSet->getHdistributions()->swap();
+   //computePhasefield();
+}
\ No newline at end of file
diff --git a/apps/cpu/Multiphase/backup/Multiphase_Jet.cfg b/apps/cpu/Multiphase/backup/Multiphase_Jet.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..caa02fe7ad8048a5f658f6a74ea69a044307b90f
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/Multiphase_Jet.cfg
@@ -0,0 +1,75 @@
+pathname = /work/hessafar/MultiphaseWOInletTest
+pathGeo = /home/hessafar/projects/VitualFluids/source
+geoFile = JetBreakup2.ast
+#geoFile = FlowFocusingS2_Small.ast
+numOfThreads = 1
+availMem = 10e9
+
+#Grid
+#length = 50 50 50
+#length = 21 6 13
+#boundingBox = x1min x1max x2min x2max x3min x3max [mm]
+#boundingBox = 0.5 219.5 -30 30 -30 30
+#boundingBox = -1 121 -30 30 -30 30
+#boundingBox = -32 128 -12 14 3 58   (FlowFocusingSS , FlowFocusingS) (X1 extendable until 128)
+#blocknx = 10 13 11
+#boundingBox = 0.5 165.5 -17.5 17.5 -29.5 30.5   (FlowFocusing)
+#blocknx = 11 7 10
+#boundingBox = -32 128 -12 14 -27 88 (FlowFocusingSL)
+#blocknx = 10 13 5
+#boundingBox = 1 179 -21 21 -21 59 (T-Junction)
+#blocknx = 8 7 8
+#boundingBox = -23 79 0 26 3 59 (FlowFocusingSq0-1)
+#blocknx = 6 13 7
+#boundingBox = -23 179 0 26 3 59 (FlowFocusingSq2)
+#blocknx = 6 13 7
+#boundingBox = -24 181 0 18 1 101 (FlowFocusingS2)
+#blocknx = 5 9 10
+
+#boundingBox = -24.5 180.5 2.5 4.5 1.5 64.5 (FlowFocusingS2_Small) (Periodic X2)
+#blocknx = 5 2 9
+
+
+#boundingBox = -24.5 180.5 -1.5 11.5 1.5 64.5 (FlowFocusingS2_Small) (Original was 180.5)
+#blocknx = 5 6 9
+
+#boundingBox = -1.0 121.0 0.5 629.0 -1.0 121.0 (Jet Breakup) (Original with inlet length)
+boundingBox = -60.5 60.5 -1.0 -201.0 -60.5 60.5 (Jet Breakup2) (Original without inlet length)
+blocknx = 22 20 22
+
+#boundingBox = 0.5 50.5 0.5 50.5 0.5 50.5 (Droplet test)
+#blocknx = 10 10 10
+
+dx = 0.5
+refineLevel = 0
+
+#Simulation
+uLB = 0.05
+uF2 = 0.0001
+Re = 10
+nuL = 1.0e-5
+nuG = 1.16e-4
+densityRatio = 30
+sigma = 4.66e-3
+interfaceThickness = 5
+#radius = -5.0   (FlowFocusing2D)
+radius = 615.0   (Jet Breakup)
+contactAngle = 110.0
+gravity = 0.0
+#gravity = -5.04e-6
+phi_L = 0.0
+phi_H = 1.0
+Phase-field Relaxation = 0.6
+Mobility = 0.02
+
+
+logToFile = false
+
+newStart = true
+restartStep = 100000
+
+cpStart = 100000
+cpStep = 100000
+
+outTime = 500
+endTime = 200000000
diff --git a/apps/cpu/Multiphase/backup/T-Junction.FCStd b/apps/cpu/Multiphase/backup/T-Junction.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..7546324577b48ee195aaa8a3172721be4e4d562b
Binary files /dev/null and b/apps/cpu/Multiphase/backup/T-Junction.FCStd differ
diff --git a/apps/cpu/Multiphase/backup/T-Junction.FCStd1 b/apps/cpu/Multiphase/backup/T-Junction.FCStd1
new file mode 100644
index 0000000000000000000000000000000000000000..f42334cd9105ab78edc27ba44171436be705389a
Binary files /dev/null and b/apps/cpu/Multiphase/backup/T-Junction.FCStd1 differ
diff --git a/apps/cpu/Multiphase/backup/T-Junction.ast b/apps/cpu/Multiphase/backup/T-Junction.ast
new file mode 100644
index 0000000000000000000000000000000000000000..9abee7d99250850d8b52ec708994ac822a0fe665
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/T-Junction.ast
@@ -0,0 +1,2088 @@
+solid Mesh
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 41.548100 -5.344658 60.000000
+      vertex 42.514893 -6.631227 60.000000
+      vertex 43.675545 -7.746049 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 55.680649 8.229838 60.000000
+      vertex 54.286926 9.034504 60.000000
+      vertex 52.782173 9.605181 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 55.680649 8.229838 60.000000
+      vertex 52.782173 9.605181 60.000000
+      vertex 51.205368 9.927089 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 55.680649 8.229838 60.000000
+      vertex 43.675545 7.746049 60.000000
+      vertex 59.485363 3.166680 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 55.680649 8.229838 60.000000
+      vertex 47.999744 9.797907 60.000000
+      vertex 43.675545 7.746049 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 55.680649 8.229838 60.000000
+      vertex 51.205368 9.927089 60.000000
+      vertex 47.999744 9.797907 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 57.994427 6.007422 60.000000
+      vertex 59.485363 3.166680 60.000000
+      vertex 58.854561 4.647232 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 40.800205 -3.919666 60.000000
+      vertex 43.675545 -7.746049 60.000000
+      vertex 45.000000 -8.660254 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 57.994427 6.007422 60.000000
+      vertex 55.680649 8.229838 60.000000
+      vertex 59.485363 3.166680 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 40.800205 -3.919666 60.000000
+      vertex 41.548100 -5.344658 60.000000
+      vertex 43.675545 -7.746049 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 56.927242 7.212025 60.000000
+      vertex 55.680649 8.229838 60.000000
+      vertex 57.994427 6.007422 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 47.999744 -9.797907 60.000000
+      vertex 45.000000 -8.660254 60.000000
+      vertex 46.453953 -9.350163 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 40.032429 -0.804666 60.000000
+      vertex 40.290581 -2.393157 60.000000
+      vertex 40.800205 -3.919666 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 40.032429 -0.804666 60.000000
+      vertex 40.800205 -3.919666 60.000000
+      vertex 45.000000 -8.660254 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 51.205368 -9.927089 60.000000
+      vertex 47.999744 -9.797907 60.000000
+      vertex 49.597340 -9.991890 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 40.290581 2.393157 60.000000
+      vertex 40.032429 0.804666 60.000000
+      vertex 40.032429 -0.804666 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 52.782173 -9.605181 60.000000
+      vertex 45.000000 -8.660254 60.000000
+      vertex 47.999744 -9.797907 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 52.782173 -9.605181 60.000000
+      vertex 47.999744 -9.797907 60.000000
+      vertex 51.205368 -9.927089 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 42.514893 6.631227 60.000000
+      vertex 41.548100 5.344658 60.000000
+      vertex 40.800205 3.919666 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 56.927242 -7.212025 60.000000
+      vertex 52.782173 -9.605181 60.000000
+      vertex 54.286926 -9.034504 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 56.927242 -7.212025 60.000000
+      vertex 54.286926 -9.034504 60.000000
+      vertex 55.680649 -8.229838 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 43.675545 7.746049 60.000000
+      vertex 40.800205 3.919666 60.000000
+      vertex 40.290581 2.393157 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 43.675545 7.746049 60.000000
+      vertex 40.290581 2.393157 60.000000
+      vertex 40.032429 -0.804666 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 43.675545 7.746049 60.000000
+      vertex 42.514893 6.631227 60.000000
+      vertex 40.800205 3.919666 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 46.453953 9.350163 60.000000
+      vertex 45.000000 8.660254 60.000000
+      vertex 43.675545 7.746049 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 59.485363 -3.166680 60.000000
+      vertex 56.927242 -7.212025 60.000000
+      vertex 57.994427 -6.007422 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 59.485363 -3.166680 60.000000
+      vertex 57.994427 -6.007422 60.000000
+      vertex 58.854561 -4.647232 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 47.999744 9.797907 60.000000
+      vertex 46.453953 9.350163 60.000000
+      vertex 43.675545 7.746049 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 51.205368 9.927089 60.000000
+      vertex 49.597340 9.991890 60.000000
+      vertex 47.999744 9.797907 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 59.485363 3.166680 60.000000
+      vertex 60.000000 -0.000000 60.000000
+      vertex 59.870502 1.604113 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 59.485363 3.166680 60.000000
+      vertex 59.485363 -3.166680 60.000000
+      vertex 59.870502 -1.604113 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 59.485363 3.166680 60.000000
+      vertex 59.870502 -1.604113 60.000000
+      vertex 60.000000 -0.000000 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 59.485363 3.166680 60.000000
+      vertex 40.032429 -0.804666 60.000000
+      vertex 45.000000 -8.660254 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 59.485363 3.166680 60.000000
+      vertex 45.000000 -8.660254 60.000000
+      vertex 52.782173 -9.605181 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 59.485363 3.166680 60.000000
+      vertex 43.675545 7.746049 60.000000
+      vertex 40.032429 -0.804666 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 59.485363 3.166680 60.000000
+      vertex 52.782173 -9.605181 60.000000
+      vertex 56.927242 -7.212025 60.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 59.485363 3.166680 60.000000
+      vertex 56.927242 -7.212025 60.000000
+      vertex 59.485363 -3.166680 60.000000
+    endloop
+  endfacet
+  facet normal 0.354604 -0.935016 0.000507
+    outer loop
+      vertex 54.286926 -9.034504 60.000000
+      vertex 52.782173 -9.605181 60.000000
+      vertex 53.865475 -9.222695 7.677362
+    endloop
+  endfacet
+  facet normal 0.455679 -0.890144 -0.000469
+    outer loop
+      vertex 54.286926 -9.034504 60.000000
+      vertex 53.865475 -9.222695 7.677362
+      vertex 55.217609 -8.530917 8.439399
+    endloop
+  endfacet
+  facet normal -0.981788 0.189978 -0.000491
+    outer loop
+      vertex 40.290581 2.393157 60.000000
+      vertex 40.380032 2.730610 11.685194
+      vertex 40.055984 1.056659 11.953387
+    endloop
+  endfacet
+  facet normal -0.948536 0.316668 0.000456
+    outer loop
+      vertex 40.290581 2.393157 60.000000
+      vertex 40.800205 3.919666 60.000000
+      vertex 40.380032 2.730610 11.685194
+    endloop
+  endfacet
+  facet normal 0.500000 -0.866025 0.000567
+    outer loop
+      vertex 55.680649 -8.229838 60.000000
+      vertex 54.286926 -9.034504 60.000000
+      vertex 55.217609 -8.530917 8.439399
+    endloop
+  endfacet
+  facet normal 0.597108 -0.802161 -0.000678
+    outer loop
+      vertex 55.680649 -8.229838 60.000000
+      vertex 55.217609 -8.530917 8.439399
+      vertex 56.669765 -7.450787 9.406688
+    endloop
+  endfacet
+  facet normal 0.632446 -0.774604 0.000437
+    outer loop
+      vertex 56.927242 -7.212025 60.000000
+      vertex 55.680649 -8.229838 60.000000
+      vertex 56.669765 -7.450787 9.406688
+    endloop
+  endfacet
+  facet normal 0.733897 -0.679260 -0.000529
+    outer loop
+      vertex 56.927242 -7.212025 60.000000
+      vertex 56.669765 -7.450787 9.406688
+      vertex 57.940296 -6.078792 10.346415
+    endloop
+  endfacet
+  facet normal -0.999691 0.024856 -0.000360
+    outer loop
+      vertex 40.032429 0.804666 60.000000
+      vertex 40.055984 1.056659 11.953387
+      vertex 40.015751 -0.561047 11.986877
+    endloop
+  endfacet
+  facet normal -0.987050 0.160410 0.000357
+    outer loop
+      vertex 40.032429 0.804666 60.000000
+      vertex 40.290581 2.393157 60.000000
+      vertex 40.055984 1.056659 11.953387
+    endloop
+  endfacet
+  facet normal 0.996738 0.080699 -0.000008
+    outer loop
+      vertex 59.870502 1.604113 60.000000
+      vertex 60.000000 -0.000000 12.000000
+      vertex 59.869751 1.608730 11.891677
+    endloop
+  endfacet
+  facet normal 0.748511 -0.663123 0.000137
+    outer loop
+      vertex 57.994427 -6.007422 60.000000
+      vertex 56.927242 -7.212025 60.000000
+      vertex 57.940296 -6.078792 10.346415
+    endloop
+  endfacet
+  facet normal 0.973621 0.228173 0.000007
+    outer loop
+      vertex 59.870502 1.604113 60.000000
+      vertex 59.869751 1.608730 11.891677
+      vertex 59.556835 2.943959 11.633276
+    endloop
+  endfacet
+  facet normal 0.838390 -0.545070 -0.000131
+    outer loop
+      vertex 57.994427 -6.007422 60.000000
+      vertex 57.940296 -6.078792 10.346415
+      vertex 58.777405 -4.791364 11.001946
+    endloop
+  endfacet
+  facet normal 0.996757 0.080467 0.000000
+    outer loop
+      vertex 59.870502 1.604113 60.000000
+      vertex 60.000000 -0.000000 60.000000
+      vertex 60.000000 -0.000000 12.000000
+    endloop
+  endfacet
+  facet normal 0.845190 -0.534467 0.000241
+    outer loop
+      vertex 58.854561 -4.647232 60.000000
+      vertex 57.994427 -6.007422 60.000000
+      vertex 58.777405 -4.791364 11.001946
+    endloop
+  endfacet
+  facet normal 0.936599 0.350403 -0.000230
+    outer loop
+      vertex 59.485363 3.166680 60.000000
+      vertex 59.556835 2.943959 11.633276
+      vertex 59.141815 4.053054 11.294811
+    endloop
+  endfacet
+  facet normal 0.917731 -0.397203 -0.000277
+    outer loop
+      vertex 58.854561 -4.647232 60.000000
+      vertex 58.777405 -4.791364 11.001946
+      vertex 59.500378 -3.121356 11.586938
+    endloop
+  endfacet
+  facet normal 0.970942 0.239316 0.000333
+    outer loop
+      vertex 59.485363 3.166680 60.000000
+      vertex 59.870502 1.604113 60.000000
+      vertex 59.556835 2.943959 11.633276
+    endloop
+  endfacet
+  facet normal 0.919980 -0.391966 -0.000082
+    outer loop
+      vertex 59.485363 -3.166680 60.000000
+      vertex 58.854561 -4.647232 60.000000
+      vertex 59.500378 -3.121356 11.586938
+    endloop
+  endfacet
+  facet normal -0.991290 -0.131696 -0.000324
+    outer loop
+      vertex 40.032429 -0.804666 60.000000
+      vertex 40.015751 -0.561047 11.986877
+      vertex 40.215744 -2.066004 11.820813
+    endloop
+  endfacet
+  facet normal 0.883824 0.467820 -0.000495
+    outer loop
+      vertex 58.854561 4.647232 60.000000
+      vertex 59.141815 4.053054 11.294811
+      vertex 58.490032 5.283877 10.774073
+    endloop
+  endfacet
+  facet normal 0.970137 -0.242556 0.000074
+    outer loop
+      vertex 59.485363 -3.166680 60.000000
+      vertex 59.500378 -3.121356 11.586938
+      vertex 59.851536 -1.716760 11.876562
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000347
+    outer loop
+      vertex 40.032429 -0.804666 60.000000
+      vertex 40.032429 0.804666 60.000000
+      vertex 40.015751 -0.561047 11.986877
+    endloop
+  endfacet
+  facet normal 0.919980 0.391966 0.000644
+    outer loop
+      vertex 58.854561 4.647232 60.000000
+      vertex 59.485363 3.166680 60.000000
+      vertex 59.141815 4.053054 11.294811
+    endloop
+  endfacet
+  facet normal 0.845189 0.534466 0.000654
+    outer loop
+      vertex 57.994427 6.007422 60.000000
+      vertex 58.854561 4.647232 60.000000
+      vertex 58.490032 5.283877 10.774073
+    endloop
+  endfacet
+  facet normal 0.809745 0.586781 -0.000472
+    outer loop
+      vertex 57.994427 6.007422 60.000000
+      vertex 58.490032 5.283877 10.774073
+      vertex 57.662033 6.425983 10.134433
+    endloop
+  endfacet
+  facet normal 0.970942 -0.239316 0.000178
+    outer loop
+      vertex 59.870502 -1.604113 60.000000
+      vertex 59.485363 -3.166680 60.000000
+      vertex 59.851536 -1.716760 11.876562
+    endloop
+  endfacet
+  facet normal 0.996283 -0.086144 -0.000191
+    outer loop
+      vertex 59.870502 -1.604113 60.000000
+      vertex 59.851536 -1.716760 11.876562
+      vertex 60.000000 -0.000000 12.000000
+    endloop
+  endfacet
+  facet normal -0.964233 -0.265056 -0.000302
+    outer loop
+      vertex 40.290581 -2.393157 60.000000
+      vertex 40.215744 -2.066004 11.820813
+      vertex 40.534901 -3.226747 11.558032
+    endloop
+  endfacet
+  facet normal -0.987050 -0.160410 0.000444
+    outer loop
+      vertex 40.290581 -2.393157 60.000000
+      vertex 40.032429 -0.804666 60.000000
+      vertex 40.215744 -2.066004 11.820813
+    endloop
+  endfacet
+  facet normal 0.996757 -0.080467 0.000000
+    outer loop
+      vertex 60.000000 -0.000000 60.000000
+      vertex 59.870502 -1.604113 60.000000
+      vertex 60.000000 -0.000000 12.000000
+    endloop
+  endfacet
+  facet normal 0.748511 0.663123 0.000577
+    outer loop
+      vertex 56.927242 7.212025 60.000000
+      vertex 57.994427 6.007422 60.000000
+      vertex 57.662033 6.425983 10.134433
+    endloop
+  endfacet
+  facet normal 0.708406 0.705805 -0.000687
+    outer loop
+      vertex 56.927242 7.212025 60.000000
+      vertex 57.662033 6.425983 10.134433
+      vertex 56.448730 7.642896 9.251278
+    endloop
+  endfacet
+  facet normal -0.921845 -0.387558 -0.000495
+    outer loop
+      vertex 40.800205 -3.919666 60.000000
+      vertex 40.534901 -3.226747 11.558032
+      vertex 41.074001 -4.508494 11.120858
+    endloop
+  endfacet
+  facet normal -0.948536 -0.316668 0.000665
+    outer loop
+      vertex 40.800205 -3.919666 60.000000
+      vertex 40.290581 -2.393157 60.000000
+      vertex 40.534901 -3.226747 11.558032
+    endloop
+  endfacet
+  facet normal 0.567662 0.823261 -0.000930
+    outer loop
+      vertex 55.680649 8.229838 60.000000
+      vertex 56.448730 7.642896 9.251278
+      vertex 54.842255 8.749433 8.212639
+    endloop
+  endfacet
+  facet normal 0.632446 0.774604 0.000613
+    outer loop
+      vertex 55.680649 8.229838 60.000000
+      vertex 56.927242 7.212025 60.000000
+      vertex 56.448730 7.642896 9.251278
+    endloop
+  endfacet
+  facet normal 0.404679 0.914459 -0.000694
+    outer loop
+      vertex 54.286926 9.034504 60.000000
+      vertex 54.842255 8.749433 8.212639
+      vertex 53.213177 9.469715 7.370516
+    endloop
+  endfacet
+  facet normal -0.859338 -0.511408 -0.000413
+    outer loop
+      vertex 41.548100 -5.344658 60.000000
+      vertex 41.074001 -4.508494 11.120858
+      vertex 41.782188 -5.698035 10.560890
+    endloop
+  endfacet
+  facet normal 0.500000 0.866025 0.000594
+    outer loop
+      vertex 54.286926 9.034504 60.000000
+      vertex 55.680649 8.229838 60.000000
+      vertex 54.842255 8.749433 8.212639
+    endloop
+  endfacet
+  facet normal -0.885456 -0.464723 0.000638
+    outer loop
+      vertex 41.548100 -5.344658 60.000000
+      vertex 40.800205 -3.919666 60.000000
+      vertex 41.074001 -4.508494 11.120858
+    endloop
+  endfacet
+  facet normal 0.263490 0.964662 -0.000325
+    outer loop
+      vertex 52.782173 9.605181 60.000000
+      vertex 53.213177 9.469715 7.370516
+      vertex 52.044731 9.788722 6.941248
+    endloop
+  endfacet
+  facet normal 0.354604 0.935016 0.000497
+    outer loop
+      vertex 52.782173 9.605181 60.000000
+      vertex 54.286926 9.034504 60.000000
+      vertex 53.213177 9.469715 7.370516
+    endloop
+  endfacet
+  facet normal -0.771350 -0.636411 -0.000581
+    outer loop
+      vertex 42.514893 -6.631227 60.000000
+      vertex 41.782188 -5.698035 10.560890
+      vertex 42.848557 -6.989770 9.754133
+    endloop
+  endfacet
+  facet normal -0.799443 -0.600742 0.000509
+    outer loop
+      vertex 42.514893 -6.631227 60.000000
+      vertex 41.548100 -5.344658 60.000000
+      vertex 41.782188 -5.698035 10.560890
+    endloop
+  endfacet
+  facet normal 0.132345 0.991204 -0.000491
+    outer loop
+      vertex 51.205368 9.927089 60.000000
+      vertex 52.044731 9.788722 6.941248
+      vertex 50.593201 9.982390 6.659721
+    endloop
+  endfacet
+  facet normal 0.200026 0.979790 0.000609
+    outer loop
+      vertex 51.205368 9.927089 60.000000
+      vertex 52.782173 9.605181 60.000000
+      vertex 52.044731 9.788722 6.941248
+    endloop
+  endfacet
+  facet normal -0.646138 -0.763221 -0.000853
+    outer loop
+      vertex 43.675545 -7.746049 60.000000
+      vertex 42.848557 -6.989770 9.754133
+      vertex 44.293537 -8.211959 8.750070
+    endloop
+  endfacet
+  facet normal -0.692725 -0.721202 0.000546
+    outer loop
+      vertex 43.675545 -7.746049 60.000000
+      vertex 42.514893 -6.631227 60.000000
+      vertex 42.848557 -6.989770 9.754133
+    endloop
+  endfacet
+  facet normal -0.009882 0.999951 -0.000363
+    outer loop
+      vertex 49.597340 9.991890 60.000000
+      vertex 50.593201 9.982390 6.659721
+      vertex 49.209751 9.968726 6.680157
+    endloop
+  endfacet
+  facet normal 0.040266 0.999189 0.000574
+    outer loop
+      vertex 49.597340 9.991890 60.000000
+      vertex 51.205368 9.927089 60.000000
+      vertex 50.593201 9.982390 6.659721
+    endloop
+  endfacet
+  facet normal -0.495631 -0.868533 -0.000765
+    outer loop
+      vertex 45.000000 -8.660254 60.000000
+      vertex 44.293537 -8.211959 8.750070
+      vertex 45.840042 -9.093665 7.829767
+    endloop
+  endfacet
+  facet normal -0.137559 0.990494 0.000052
+    outer loop
+      vertex 47.999744 9.797907 60.000000
+      vertex 49.209751 9.968726 6.680157
+      vertex 48.043625 9.806763 6.915736
+    endloop
+  endfacet
+  facet normal -0.568064 -0.822984 0.000632
+    outer loop
+      vertex 45.000000 -8.660254 60.000000
+      vertex 43.675545 -7.746049 60.000000
+      vertex 44.293537 -8.211959 8.750070
+    endloop
+  endfacet
+  facet normal -0.249430 0.968393 -0.000045
+    outer loop
+      vertex 47.999744 9.797907 60.000000
+      vertex 48.043625 9.806763 6.915736
+      vertex 46.975643 9.531698 7.290181
+    endloop
+  endfacet
+  facet normal -0.120537 0.992709 0.000445
+    outer loop
+      vertex 47.999744 9.797907 60.000000
+      vertex 49.597340 9.991890 60.000000
+      vertex 49.209751 9.968726 6.680157
+    endloop
+  endfacet
+  facet normal -0.368876 0.929478 -0.000450
+    outer loop
+      vertex 46.453953 9.350163 60.000000
+      vertex 46.975643 9.531698 7.290181
+      vertex 45.668846 9.013384 7.922052
+    endloop
+  endfacet
+  facet normal -0.335392 -0.942078 -0.000685
+    outer loop
+      vertex 46.453953 -9.350163 60.000000
+      vertex 45.840042 -9.093665 7.829767
+      vertex 47.483089 -9.678077 7.094705
+    endloop
+  endfacet
+  facet normal -0.278218 0.960518 0.000554
+    outer loop
+      vertex 46.453953 9.350163 60.000000
+      vertex 47.999744 9.797907 60.000000
+      vertex 46.975643 9.531698 7.290181
+    endloop
+  endfacet
+  facet normal -0.428692 -0.903451 0.000603
+    outer loop
+      vertex 46.453953 -9.350163 60.000000
+      vertex 45.000000 -8.660254 60.000000
+      vertex 45.840042 -9.093665 7.829767
+    endloop
+  endfacet
+  facet normal -0.502281 0.864704 -0.000588
+    outer loop
+      vertex 45.000000 8.660254 60.000000
+      vertex 45.668846 9.013384 7.922052
+      vertex 44.321312 8.231192 8.731980
+    endloop
+  endfacet
+  facet normal -0.428692 0.903451 0.000620
+    outer loop
+      vertex 45.000000 8.660254 60.000000
+      vertex 46.453953 9.350163 60.000000
+      vertex 45.668846 9.013384 7.922052
+    endloop
+  endfacet
+  facet normal -0.641328 0.767266 -0.000818
+    outer loop
+      vertex 43.675545 7.746049 60.000000
+      vertex 44.321312 8.231192 8.731980
+      vertex 42.912872 7.054971 9.707079
+    endloop
+  endfacet
+  facet normal -0.278218 -0.960518 0.000541
+    outer loop
+      vertex 47.999744 -9.797907 60.000000
+      vertex 46.453953 -9.350163 60.000000
+      vertex 47.483089 -9.678077 7.094705
+    endloop
+  endfacet
+  facet normal -0.568064 0.822984 0.000632
+    outer loop
+      vertex 43.675545 7.746049 60.000000
+      vertex 45.000000 8.660254 60.000000
+      vertex 44.321312 8.231192 8.731980
+    endloop
+  endfacet
+  facet normal -0.190108 -0.981763 -0.000367
+    outer loop
+      vertex 47.999744 -9.797907 60.000000
+      vertex 47.483089 -9.678077 7.094705
+      vertex 48.724289 -9.918295 6.754808
+    endloop
+  endfacet
+  facet normal -0.771686 0.636003 -0.000748
+    outer loop
+      vertex 42.514893 6.631227 60.000000
+      vertex 42.912872 7.054971 9.707079
+      vertex 41.725323 5.615130 10.605202
+    endloop
+  endfacet
+  facet normal -0.692725 0.721202 0.000595
+    outer loop
+      vertex 42.514893 6.631227 60.000000
+      vertex 43.675545 7.746049 60.000000
+      vertex 42.912872 7.054971 9.707079
+    endloop
+  endfacet
+  facet normal -0.120537 -0.992709 0.000604
+    outer loop
+      vertex 49.597340 -9.991890 60.000000
+      vertex 47.999744 -9.797907 60.000000
+      vertex 48.724289 -9.918295 6.754808
+    endloop
+  endfacet
+  facet normal -0.085718 -0.996319 0.000028
+    outer loop
+      vertex 49.597340 -9.991890 60.000000
+      vertex 48.724289 -9.918295 6.754808
+      vertex 49.562771 -9.990437 6.647644
+    endloop
+  endfacet
+  facet normal -0.000150 -1.000000 -0.000027
+    outer loop
+      vertex 49.597340 -9.991890 60.000000
+      vertex 49.562771 -9.990437 6.647644
+      vertex 50.434238 -9.990567 6.647448
+    endloop
+  endfacet
+  facet normal -0.869310 0.494268 -0.000413
+    outer loop
+      vertex 41.548100 5.344658 60.000000
+      vertex 41.725323 5.615130 10.605202
+      vertex 40.944370 4.242121 11.225168
+    endloop
+  endfacet
+  facet normal -0.799443 0.600742 0.000421
+    outer loop
+      vertex 41.548100 5.344658 60.000000
+      vertex 42.514893 6.631227 60.000000
+      vertex 41.725323 5.615130 10.605202
+    endloop
+  endfacet
+  facet normal 0.040266 -0.999189 0.000607
+    outer loop
+      vertex 51.205368 -9.927089 60.000000
+      vertex 49.597340 -9.991890 60.000000
+      vertex 50.434238 -9.990567 6.647448
+    endloop
+  endfacet
+  facet normal 0.095514 -0.995428 -0.000196
+    outer loop
+      vertex 51.205368 -9.927089 60.000000
+      vertex 50.434238 -9.990567 6.647448
+      vertex 51.472881 -9.890936 6.794806
+    endloop
+  endfacet
+  facet normal 0.201349 -0.979520 0.000347
+    outer loop
+      vertex 51.205368 -9.927089 60.000000
+      vertex 51.472881 -9.890936 6.794806
+      vertex 52.549927 -9.669430 7.106485
+    endloop
+  endfacet
+  facet normal -0.936879 0.349654 -0.000458
+    outer loop
+      vertex 40.800205 3.919666 60.000000
+      vertex 40.944370 4.242121 11.225168
+      vertex 40.380032 2.730610 11.685194
+    endloop
+  endfacet
+  facet normal -0.885456 0.464723 0.000455
+    outer loop
+      vertex 40.800205 3.919666 60.000000
+      vertex 41.548100 5.344658 60.000000
+      vertex 40.944370 4.242121 11.225168
+    endloop
+  endfacet
+  facet normal 0.200026 -0.979791 0.000312
+    outer loop
+      vertex 52.782173 -9.605181 60.000000
+      vertex 51.205368 -9.927089 60.000000
+      vertex 52.549927 -9.669430 7.106485
+    endloop
+  endfacet
+  facet normal 0.321649 -0.946859 -0.000262
+    outer loop
+      vertex 52.782173 -9.605181 60.000000
+      vertex 52.549927 -9.669430 7.106485
+      vertex 53.865475 -9.222695 7.677362
+    endloop
+  endfacet
+  facet normal 0.000000 0.995974 0.089639
+    outer loop
+      vertex 180.000000 11.807155 2.142683
+      vertex 0.000000 12.000000 -0.000000
+      vertex 0.000000 11.807155 2.142683
+    endloop
+  endfacet
+  facet normal 0.000000 0.995974 0.089639
+    outer loop
+      vertex 180.000000 11.807155 2.142683
+      vertex 180.000000 12.000000 -0.000000
+      vertex 0.000000 12.000000 -0.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.963963 0.266037
+    outer loop
+      vertex 180.000000 11.234818 4.216498
+      vertex 0.000000 11.807155 2.142683
+      vertex 0.000000 11.234818 4.216498
+    endloop
+  endfacet
+  facet normal 0.000000 0.963963 0.266037
+    outer loop
+      vertex 180.000000 11.234818 4.216498
+      vertex 180.000000 11.807155 2.142683
+      vertex 0.000000 11.807155 2.142683
+    endloop
+  endfacet
+  facet normal 0.001350 0.900968 0.433883
+    outer loop
+      vertex 50.593201 9.982390 6.659721
+      vertex 0.000000 11.234818 4.216498
+      vertex 0.000000 10.301386 6.154791
+    endloop
+  endfacet
+  facet normal 0.000000 0.889892 0.456170
+    outer loop
+      vertex 50.593201 9.982390 6.659721
+      vertex 180.000000 11.234818 4.216498
+      vertex 0.000000 11.234818 4.216498
+    endloop
+  endfacet
+  facet normal -0.000184 0.836995 0.547211
+    outer loop
+      vertex 49.209751 9.968726 6.680157
+      vertex 50.593201 9.982390 6.659721
+      vertex 0.000000 10.301386 6.154791
+    endloop
+  endfacet
+  facet normal -0.000454 0.825086 0.565007
+    outer loop
+      vertex 48.043625 9.806763 6.915736
+      vertex 49.209751 9.968726 6.680157
+      vertex 0.000000 10.301386 6.154791
+    endloop
+  endfacet
+  facet normal -0.000981 0.809017 0.587785
+    outer loop
+      vertex 0.000000 9.036858 7.895265
+      vertex 48.043625 9.806763 6.915736
+      vertex 0.000000 10.301386 6.154791
+    endloop
+  endfacet
+  facet normal -0.000898 0.807141 0.590358
+    outer loop
+      vertex 46.975643 9.531698 7.290181
+      vertex 48.043625 9.806763 6.915736
+      vertex 0.000000 9.036858 7.895265
+    endloop
+  endfacet
+  facet normal 0.000025 0.773134 0.634243
+    outer loop
+      vertex 45.668846 9.013384 7.922052
+      vertex 46.975643 9.531698 7.290181
+      vertex 0.000000 9.036858 7.895265
+    endloop
+  endfacet
+  facet normal -0.000528 0.900969 0.433884
+    outer loop
+      vertex 180.000000 10.301386 6.154791
+      vertex 180.000000 11.234818 4.216498
+      vertex 50.593201 9.982390 6.659721
+    endloop
+  endfacet
+  facet normal 0.000177 0.824306 0.566145
+    outer loop
+      vertex 180.000000 10.301386 6.154791
+      vertex 50.593201 9.982390 6.659721
+      vertex 52.044731 9.788722 6.941248
+    endloop
+  endfacet
+  facet normal -0.001083 0.691062 0.722794
+    outer loop
+      vertex 0.000000 7.481878 9.381978
+      vertex 44.321312 8.231192 8.731980
+      vertex 0.000000 9.036858 7.895265
+    endloop
+  endfacet
+  facet normal 0.000371 0.809017 0.587785
+    outer loop
+      vertex 180.000000 9.036858 7.895265
+      vertex 180.000000 10.301386 6.154791
+      vertex 52.044731 9.788722 6.941248
+    endloop
+  endfacet
+  facet normal -0.000096 0.759849 0.650099
+    outer loop
+      vertex 180.000000 9.036858 7.895265
+      vertex 53.213177 9.469715 7.370516
+      vertex 54.842255 8.749433 8.212639
+    endloop
+  endfacet
+  facet normal 0.000275 0.802992 0.595989
+    outer loop
+      vertex 180.000000 9.036858 7.895265
+      vertex 52.044731 9.788722 6.941248
+      vertex 53.213177 9.469715 7.370516
+    endloop
+  endfacet
+  facet normal -0.000842 0.550897 0.834573
+    outer loop
+      vertex 0.000000 5.686424 10.567146
+      vertex 42.912872 7.054971 9.707079
+      vertex 0.000000 7.481878 9.381978
+    endloop
+  endfacet
+  facet normal 0.000246 0.691063 0.722795
+    outer loop
+      vertex 180.000000 7.481878 9.381978
+      vertex 180.000000 9.036858 7.895265
+      vertex 54.842255 8.749433 8.212639
+    endloop
+  endfacet
+  facet normal -0.000914 0.393025 0.919527
+    outer loop
+      vertex 40.944370 4.242121 11.225168
+      vertex 0.000000 5.686424 10.567146
+      vertex 0.000000 3.708204 11.412678
+    endloop
+  endfacet
+  facet normal 0.000378 0.550897 0.834573
+    outer loop
+      vertex 180.000000 5.686424 10.567146
+      vertex 180.000000 7.481878 9.381978
+      vertex 57.662033 6.425983 10.134433
+    endloop
+  endfacet
+  facet normal -0.000133 0.488565 0.872527
+    outer loop
+      vertex 180.000000 5.686424 10.567146
+      vertex 57.662033 6.425983 10.134433
+      vertex 58.490032 5.283877 10.774073
+    endloop
+  endfacet
+  facet normal -0.001192 0.222521 0.974927
+    outer loop
+      vertex 0.000000 1.610799 11.891397
+      vertex 40.380032 2.730610 11.685194
+      vertex 0.000000 3.708204 11.412678
+    endloop
+  endfacet
+  facet normal -0.000100 0.291849 0.956464
+    outer loop
+      vertex 180.000000 3.708204 11.412678
+      vertex 59.141815 4.053054 11.294811
+      vertex 59.556835 2.943959 11.633276
+    endloop
+  endfacet
+  facet normal 0.000214 0.389740 0.920925
+    outer loop
+      vertex 180.000000 3.708204 11.412678
+      vertex 58.490032 5.283877 10.774073
+      vertex 59.141815 4.053054 11.294811
+    endloop
+  endfacet
+  facet normal 0.000264 0.393025 0.919528
+    outer loop
+      vertex 180.000000 3.708204 11.412678
+      vertex 180.000000 5.686424 10.567146
+      vertex 58.490032 5.283877 10.774073
+    endloop
+  endfacet
+  facet normal -0.000925 0.044865 0.998993
+    outer loop
+      vertex 0.000000 -0.538378 11.987917
+      vertex 40.055984 1.056659 11.953387
+      vertex 0.000000 1.610799 11.891397
+    endloop
+  endfacet
+  facet normal 0.000001 0.067182 0.997741
+    outer loop
+      vertex 180.000000 1.610799 11.891397
+      vertex 59.869751 1.608730 11.891677
+      vertex 60.000000 -0.000000 12.000000
+    endloop
+  endfacet
+  facet normal -0.000001 0.190000 0.981784
+    outer loop
+      vertex 180.000000 1.610799 11.891397
+      vertex 59.556835 2.943959 11.633276
+      vertex 59.869751 1.608730 11.891677
+    endloop
+  endfacet
+  facet normal 0.000374 0.222521 0.974928
+    outer loop
+      vertex 180.000000 1.610799 11.891397
+      vertex 180.000000 3.708204 11.412678
+      vertex 59.556835 2.943959 11.633276
+    endloop
+  endfacet
+  facet normal -0.000981 -0.134233 0.990949
+    outer loop
+      vertex 40.215744 -2.066004 11.820813
+      vertex 0.000000 -0.538378 11.987917
+      vertex 0.000000 -2.670251 11.699135
+    endloop
+  endfacet
+  facet normal 0.000302 0.044865 0.998993
+    outer loop
+      vertex 180.000000 -0.538378 11.987917
+      vertex 180.000000 1.610799 11.891397
+      vertex 60.000000 -0.000000 12.000000
+    endloop
+  endfacet
+  facet normal -0.000221 -0.071697 0.997426
+    outer loop
+      vertex 180.000000 -0.538378 11.987917
+      vertex 60.000000 -0.000000 12.000000
+      vertex 59.851536 -1.716760 11.876562
+    endloop
+  endfacet
+  facet normal 0.000365 -0.220707 0.975340
+    outer loop
+      vertex 40.534901 -3.226747 11.558032
+      vertex 40.215744 -2.066004 11.820813
+      vertex 0.000000 -2.670251 11.699135
+    endloop
+  endfacet
+  facet normal -0.000932 -0.309017 0.951056
+    outer loop
+      vertex 0.000000 -4.716300 11.034333
+      vertex 40.534901 -3.226747 11.558032
+      vertex 0.000000 -2.670251 11.699135
+    endloop
+  endfacet
+  facet normal -0.000360 -0.322951 0.946416
+    outer loop
+      vertex 41.074001 -4.508494 11.120858
+      vertex 40.534901 -3.226747 11.558032
+      vertex 0.000000 -4.716300 11.034333
+    endloop
+  endfacet
+  facet normal 0.000398 -0.134233 0.990950
+    outer loop
+      vertex 180.000000 -2.670251 11.699135
+      vertex 180.000000 -0.538378 11.987917
+      vertex 59.851536 -1.716760 11.876562
+    endloop
+  endfacet
+  facet normal -0.000156 -0.201912 0.979404
+    outer loop
+      vertex 180.000000 -2.670251 11.699135
+      vertex 59.851536 -1.716760 11.876562
+      vertex 59.500378 -3.121356 11.586938
+    endloop
+  endfacet
+  facet normal -0.001156 -0.473868 0.880595
+    outer loop
+      vertex 0.000000 -6.610764 10.014879
+      vertex 41.782188 -5.698035 10.560890
+      vertex 0.000000 -4.716300 11.034333
+    endloop
+  endfacet
+  facet normal 0.000043 -0.453768 0.891120
+    outer loop
+      vertex 180.000000 -4.716300 11.034333
+      vertex 58.777405 -4.791364 11.001946
+      vertex 57.940296 -6.078792 10.346415
+    endloop
+  endfacet
+  facet normal -0.000047 -0.330578 0.943779
+    outer loop
+      vertex 180.000000 -4.716300 11.034333
+      vertex 59.500378 -3.121356 11.586938
+      vertex 58.777405 -4.791364 11.001946
+    endloop
+  endfacet
+  facet normal 0.000271 -0.309017 0.951057
+    outer loop
+      vertex 180.000000 -4.716300 11.034333
+      vertex 180.000000 -2.670251 11.699135
+      vertex 59.500378 -3.121356 11.586938
+    endloop
+  endfacet
+  facet normal -0.000757 -0.623490 0.781831
+    outer loop
+      vertex 0.000000 -8.292751 8.673538
+      vertex 42.848557 -6.989770 9.754133
+      vertex 0.000000 -6.610764 10.014879
+    endloop
+  endfacet
+  facet normal 0.000327 -0.473869 0.880596
+    outer loop
+      vertex 180.000000 -6.610764 10.014879
+      vertex 180.000000 -4.716300 11.034333
+      vertex 57.940296 -6.078792 10.346415
+    endloop
+  endfacet
+  facet normal -0.001047 -0.753071 0.657939
+    outer loop
+      vertex 0.000000 -9.708204 7.053423
+      vertex 45.840042 -9.093665 7.829767
+      vertex 0.000000 -8.292751 8.673538
+    endloop
+  endfacet
+  facet normal 0.000153 -0.740550 0.672002
+    outer loop
+      vertex 180.000000 -8.292751 8.673538
+      vertex 55.217609 -8.530917 8.439399
+      vertex 53.865475 -9.222695 7.677362
+    endloop
+  endfacet
+  facet normal 0.000391 -0.623490 0.781831
+    outer loop
+      vertex 180.000000 -8.292751 8.673538
+      vertex 180.000000 -6.610764 10.014879
+      vertex 56.669765 -7.450787 9.406688
+    endloop
+  endfacet
+  facet normal 0.000016 -0.816610 0.577190
+    outer loop
+      vertex 48.724289 -9.918295 6.754808
+      vertex 47.483089 -9.678077 7.094705
+      vertex 0.000000 -9.708204 7.053423
+    endloop
+  endfacet
+  facet normal -0.000162 -0.830133 0.557565
+    outer loop
+      vertex 49.562771 -9.990437 6.647644
+      vertex 48.724289 -9.918295 6.754808
+      vertex 0.000000 -9.708204 7.053423
+    endloop
+  endfacet
+  facet normal -0.000019 -0.868552 0.495599
+    outer loop
+      vertex 0.000000 -10.811626 5.206605
+      vertex 50.434238 -9.990567 6.647448
+      vertex 49.562771 -9.990437 6.647644
+    endloop
+  endfacet
+  facet normal -0.000689 -0.858449 0.512899
+    outer loop
+      vertex 0.000000 -10.811626 5.206605
+      vertex 49.562771 -9.990437 6.647644
+      vertex 0.000000 -9.708204 7.053423
+    endloop
+  endfacet
+  facet normal 0.000052 -0.828587 0.559861
+    outer loop
+      vertex 180.000000 -9.708204 7.053423
+      vertex 51.472881 -9.890936 6.794806
+      vertex 50.434238 -9.990567 6.647448
+    endloop
+  endfacet
+  facet normal -0.000007 -0.815108 0.579309
+    outer loop
+      vertex 180.000000 -9.708204 7.053423
+      vertex 52.549927 -9.669430 7.106485
+      vertex 51.472881 -9.890936 6.794806
+    endloop
+  endfacet
+  facet normal 0.000017 -0.787550 0.616251
+    outer loop
+      vertex 180.000000 -9.708204 7.053423
+      vertex 53.865475 -9.222695 7.677362
+      vertex 52.549927 -9.669430 7.106485
+    endloop
+  endfacet
+  facet normal 0.000356 -0.753071 0.657939
+    outer loop
+      vertex 180.000000 -9.708204 7.053423
+      vertex 180.000000 -8.292751 8.673538
+      vertex 53.865475 -9.222695 7.677362
+    endloop
+  endfacet
+  facet normal 0.000000 -0.868835 0.495102
+    outer loop
+      vertex 180.000000 -10.811626 5.206605
+      vertex 50.434238 -9.990567 6.647448
+      vertex 0.000000 -10.811626 5.206605
+    endloop
+  endfacet
+  facet normal 0.000264 -0.858449 0.512899
+    outer loop
+      vertex 180.000000 -10.811626 5.206605
+      vertex 180.000000 -9.708204 7.053423
+      vertex 50.434238 -9.990567 6.647448
+    endloop
+  endfacet
+  facet normal 0.000000 -0.936235 0.351375
+    outer loop
+      vertex 180.000000 -11.567554 3.192442
+      vertex 0.000000 -10.811626 5.206605
+      vertex 0.000000 -11.567554 3.192442
+    endloop
+  endfacet
+  facet normal 0.000000 -0.936235 0.351375
+    outer loop
+      vertex 180.000000 -11.567554 3.192442
+      vertex 180.000000 -10.811626 5.206605
+      vertex 0.000000 -10.811626 5.206605
+    endloop
+  endfacet
+  facet normal 0.000000 -0.983930 0.178557
+    outer loop
+      vertex 180.000000 -11.951692 1.075672
+      vertex 0.000000 -11.567554 3.192442
+      vertex 0.000000 -11.951692 1.075672
+    endloop
+  endfacet
+  facet normal 0.000000 -0.983930 0.178557
+    outer loop
+      vertex 180.000000 -11.951692 1.075672
+      vertex 180.000000 -11.567554 3.192442
+      vertex 0.000000 -11.567554 3.192442
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 180.000000 -11.951692 -1.075672
+      vertex 0.000000 -11.951692 1.075672
+      vertex 0.000000 -11.951692 -1.075672
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 180.000000 -11.951692 -1.075672
+      vertex 180.000000 -11.951692 1.075672
+      vertex 0.000000 -11.951692 1.075672
+    endloop
+  endfacet
+  facet normal -0.000000 -0.983930 -0.178557
+    outer loop
+      vertex 180.000000 -11.567554 -3.192442
+      vertex 0.000000 -11.951692 -1.075672
+      vertex 0.000000 -11.567554 -3.192442
+    endloop
+  endfacet
+  facet normal 0.000000 -0.983930 -0.178557
+    outer loop
+      vertex 180.000000 -11.567554 -3.192442
+      vertex 180.000000 -11.951692 -1.075672
+      vertex 0.000000 -11.951692 -1.075672
+    endloop
+  endfacet
+  facet normal -0.000000 -0.936235 -0.351375
+    outer loop
+      vertex 180.000000 -10.811626 -5.206605
+      vertex 0.000000 -11.567554 -3.192442
+      vertex 0.000000 -10.811626 -5.206605
+    endloop
+  endfacet
+  facet normal 0.000000 -0.936235 -0.351375
+    outer loop
+      vertex 180.000000 -10.811626 -5.206605
+      vertex 180.000000 -11.567554 -3.192442
+      vertex 0.000000 -11.567554 -3.192442
+    endloop
+  endfacet
+  facet normal 0.000000 -0.858449 -0.512899
+    outer loop
+      vertex 180.000000 -9.708204 -7.053423
+      vertex 180.000000 -10.811626 -5.206605
+      vertex 0.000000 -10.811626 -5.206605
+    endloop
+  endfacet
+  facet normal -0.000000 -0.858449 -0.512899
+    outer loop
+      vertex 180.000000 -9.708204 -7.053423
+      vertex 0.000000 -10.811626 -5.206605
+      vertex 0.000000 -9.708204 -7.053423
+    endloop
+  endfacet
+  facet normal 0.000000 -0.753071 -0.657939
+    outer loop
+      vertex 180.000000 -8.292751 -8.673538
+      vertex 180.000000 -9.708204 -7.053423
+      vertex 0.000000 -9.708204 -7.053423
+    endloop
+  endfacet
+  facet normal -0.000000 -0.753071 -0.657939
+    outer loop
+      vertex 180.000000 -8.292751 -8.673538
+      vertex 0.000000 -9.708204 -7.053423
+      vertex 0.000000 -8.292751 -8.673538
+    endloop
+  endfacet
+  facet normal 0.000000 -0.623490 -0.781831
+    outer loop
+      vertex 180.000000 -6.610764 -10.014879
+      vertex 180.000000 -8.292751 -8.673538
+      vertex 0.000000 -8.292751 -8.673538
+    endloop
+  endfacet
+  facet normal -0.000000 -0.623490 -0.781831
+    outer loop
+      vertex 180.000000 -6.610764 -10.014879
+      vertex 0.000000 -8.292751 -8.673538
+      vertex 0.000000 -6.610764 -10.014879
+    endloop
+  endfacet
+  facet normal 0.000000 -0.473869 -0.880596
+    outer loop
+      vertex 180.000000 -4.716300 -11.034333
+      vertex 180.000000 -6.610764 -10.014879
+      vertex 0.000000 -6.610764 -10.014879
+    endloop
+  endfacet
+  facet normal -0.000000 -0.473869 -0.880596
+    outer loop
+      vertex 180.000000 -4.716300 -11.034333
+      vertex 0.000000 -6.610764 -10.014879
+      vertex 0.000000 -4.716300 -11.034333
+    endloop
+  endfacet
+  facet normal 0.000000 -0.309017 -0.951056
+    outer loop
+      vertex 180.000000 -2.670251 -11.699135
+      vertex 180.000000 -4.716300 -11.034333
+      vertex 0.000000 -4.716300 -11.034333
+    endloop
+  endfacet
+  facet normal -0.000000 -0.309017 -0.951056
+    outer loop
+      vertex 180.000000 -2.670251 -11.699135
+      vertex 0.000000 -4.716300 -11.034333
+      vertex 0.000000 -2.670251 -11.699135
+    endloop
+  endfacet
+  facet normal 0.000000 -0.134233 -0.990950
+    outer loop
+      vertex 180.000000 -0.538378 -11.987917
+      vertex 180.000000 -2.670251 -11.699135
+      vertex 0.000000 -2.670251 -11.699135
+    endloop
+  endfacet
+  facet normal -0.000000 -0.134233 -0.990950
+    outer loop
+      vertex 180.000000 -0.538378 -11.987917
+      vertex 0.000000 -2.670251 -11.699135
+      vertex 0.000000 -0.538378 -11.987917
+    endloop
+  endfacet
+  facet normal 0.000000 0.044865 -0.998993
+    outer loop
+      vertex 180.000000 1.610799 -11.891397
+      vertex 180.000000 -0.538378 -11.987917
+      vertex 0.000000 -0.538378 -11.987917
+    endloop
+  endfacet
+  facet normal 0.000000 0.044865 -0.998993
+    outer loop
+      vertex 180.000000 1.610799 -11.891397
+      vertex 0.000000 -0.538378 -11.987917
+      vertex 0.000000 1.610799 -11.891397
+    endloop
+  endfacet
+  facet normal 0.000000 0.222521 -0.974928
+    outer loop
+      vertex 180.000000 3.708204 -11.412678
+      vertex 0.000000 1.610799 -11.891397
+      vertex 0.000000 3.708204 -11.412678
+    endloop
+  endfacet
+  facet normal 0.000000 0.222521 -0.974928
+    outer loop
+      vertex 180.000000 3.708204 -11.412678
+      vertex 180.000000 1.610799 -11.891397
+      vertex 0.000000 1.610799 -11.891397
+    endloop
+  endfacet
+  facet normal 0.000000 0.393025 -0.919528
+    outer loop
+      vertex 180.000000 5.686424 -10.567146
+      vertex 0.000000 3.708204 -11.412678
+      vertex 0.000000 5.686424 -10.567146
+    endloop
+  endfacet
+  facet normal 0.000000 0.393025 -0.919528
+    outer loop
+      vertex 180.000000 5.686424 -10.567146
+      vertex 180.000000 3.708204 -11.412678
+      vertex 0.000000 3.708204 -11.412678
+    endloop
+  endfacet
+  facet normal 0.000000 0.550897 -0.834573
+    outer loop
+      vertex 180.000000 7.481878 -9.381978
+      vertex 0.000000 5.686424 -10.567146
+      vertex 0.000000 7.481878 -9.381978
+    endloop
+  endfacet
+  facet normal 0.000000 0.550897 -0.834573
+    outer loop
+      vertex 180.000000 7.481878 -9.381978
+      vertex 180.000000 5.686424 -10.567146
+      vertex 0.000000 5.686424 -10.567146
+    endloop
+  endfacet
+  facet normal 0.000000 0.691063 -0.722795
+    outer loop
+      vertex 180.000000 9.036858 -7.895265
+      vertex 0.000000 7.481878 -9.381978
+      vertex 0.000000 9.036858 -7.895265
+    endloop
+  endfacet
+  facet normal 0.000000 0.691063 -0.722795
+    outer loop
+      vertex 180.000000 9.036858 -7.895265
+      vertex 180.000000 7.481878 -9.381978
+      vertex 0.000000 7.481878 -9.381978
+    endloop
+  endfacet
+  facet normal 0.000000 0.809017 -0.587785
+    outer loop
+      vertex 180.000000 10.301386 -6.154791
+      vertex 0.000000 9.036858 -7.895265
+      vertex 0.000000 10.301386 -6.154791
+    endloop
+  endfacet
+  facet normal 0.000000 0.809017 -0.587785
+    outer loop
+      vertex 180.000000 10.301386 -6.154791
+      vertex 180.000000 9.036858 -7.895265
+      vertex 0.000000 9.036858 -7.895265
+    endloop
+  endfacet
+  facet normal 0.000000 0.900969 -0.433884
+    outer loop
+      vertex 180.000000 11.234818 -4.216498
+      vertex 0.000000 10.301386 -6.154791
+      vertex 0.000000 11.234818 -4.216498
+    endloop
+  endfacet
+  facet normal 0.000000 0.900969 -0.433884
+    outer loop
+      vertex 180.000000 11.234818 -4.216498
+      vertex 180.000000 10.301386 -6.154791
+      vertex 0.000000 10.301386 -6.154791
+    endloop
+  endfacet
+  facet normal 0.000000 0.963963 -0.266037
+    outer loop
+      vertex 180.000000 11.807155 -2.142683
+      vertex 0.000000 11.234818 -4.216498
+      vertex 0.000000 11.807155 -2.142683
+    endloop
+  endfacet
+  facet normal 0.000000 0.963963 -0.266037
+    outer loop
+      vertex 180.000000 11.807155 -2.142683
+      vertex 180.000000 11.234818 -4.216498
+      vertex 0.000000 11.234818 -4.216498
+    endloop
+  endfacet
+  facet normal 0.000000 0.995974 -0.089639
+    outer loop
+      vertex 180.000000 12.000000 -0.000000
+      vertex 0.000000 11.807155 -2.142683
+      vertex 0.000000 12.000000 -0.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.995974 -0.089639
+    outer loop
+      vertex 180.000000 12.000000 -0.000000
+      vertex 180.000000 11.807155 -2.142683
+      vertex 0.000000 11.807155 -2.142683
+    endloop
+  endfacet
+  facet normal -0.000091 0.587298 0.809371
+    outer loop
+      vertex 56.448730 7.642896 9.251278
+      vertex 57.662033 6.425983 10.134433
+      vertex 180.000000 7.481878 9.381978
+    endloop
+  endfacet
+  facet normal 0.000121 0.684477 0.729035
+    outer loop
+      vertex 54.842255 8.749433 8.212639
+      vertex 56.448730 7.642896 9.251278
+      vertex 180.000000 7.481878 9.381978
+    endloop
+  endfacet
+  facet normal -0.000038 0.719347 0.694650
+    outer loop
+      vertex 44.321312 8.231192 8.731980
+      vertex 45.668846 9.013384 7.922052
+      vertex 0.000000 9.036858 7.895265
+    endloop
+  endfacet
+  facet normal 0.000511 0.637855 0.770156
+    outer loop
+      vertex 42.912872 7.054971 9.707079
+      vertex 44.321312 8.231192 8.731980
+      vertex 0.000000 7.481878 9.381978
+    endloop
+  endfacet
+  facet normal 0.000130 0.529168 0.848517
+    outer loop
+      vertex 41.725323 5.615130 10.605202
+      vertex 42.912872 7.054971 9.707079
+      vertex 0.000000 5.686424 10.567146
+    endloop
+  endfacet
+  facet normal -0.000128 0.411591 0.911369
+    outer loop
+      vertex 40.944370 4.242121 11.225168
+      vertex 41.725323 5.615130 10.605202
+      vertex 0.000000 5.686424 10.567146
+    endloop
+  endfacet
+  facet normal 0.000587 0.290961 0.956735
+    outer loop
+      vertex 40.380032 2.730610 11.685194
+      vertex 40.944370 4.242121 11.225168
+      vertex 0.000000 3.708204 11.412678
+    endloop
+  endfacet
+  facet normal 0.000659 0.158074 0.987427
+    outer loop
+      vertex 40.055984 1.056659 11.953387
+      vertex 40.380032 2.730610 11.685194
+      vertex 0.000000 1.610799 11.891397
+    endloop
+  endfacet
+  facet normal 0.000038 0.020697 0.999786
+    outer loop
+      vertex 40.015751 -0.561047 11.986877
+      vertex 40.055984 1.056659 11.953387
+      vertex 0.000000 -0.538378 11.987917
+    endloop
+  endfacet
+  facet normal -0.000036 -0.109684 0.993966
+    outer loop
+      vertex 40.215744 -2.066004 11.820813
+      vertex 40.015751 -0.561047 11.986877
+      vertex 0.000000 -0.538378 11.987917
+    endloop
+  endfacet
+  facet normal 0.000248 -0.425791 0.904822
+    outer loop
+      vertex 41.782188 -5.698035 10.560890
+      vertex 41.074001 -4.508494 11.120858
+      vertex 0.000000 -4.716300 11.034333
+    endloop
+  endfacet
+  facet normal 0.000479 -0.529441 0.848346
+    outer loop
+      vertex 42.848557 -6.989770 9.754133
+      vertex 41.782188 -5.698035 10.560890
+      vertex 0.000000 -6.610764 10.014879
+    endloop
+  endfacet
+  facet normal -0.000177 -0.634911 0.772586
+    outer loop
+      vertex 44.293537 -8.211959 8.750070
+      vertex 42.848557 -6.989770 9.754133
+      vertex 0.000000 -8.292751 8.673538
+    endloop
+  endfacet
+  facet normal 0.000121 -0.721984 0.691909
+    outer loop
+      vertex 45.840042 -9.093665 7.829767
+      vertex 44.293537 -8.211959 8.750070
+      vertex 0.000000 -8.292751 8.673538
+    endloop
+  endfacet
+  facet normal -0.000044 -0.782803 0.622269
+    outer loop
+      vertex 47.483089 -9.678077 7.094705
+      vertex 45.840042 -9.093665 7.829767
+      vertex 0.000000 -9.708204 7.053423
+    endloop
+  endfacet
+  facet normal -0.000125 -0.667030 0.745031
+    outer loop
+      vertex 56.669765 -7.450787 9.406688
+      vertex 55.217609 -8.530917 8.439399
+      vertex 180.000000 -8.292751 8.673538
+    endloop
+  endfacet
+  facet normal -0.000221 -0.564951 0.825124
+    outer loop
+      vertex 57.940296 -6.078792 10.346415
+      vertex 56.669765 -7.450787 9.406688
+      vertex 180.000000 -6.610764 10.014879
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 9.036858 -7.895265
+      vertex 0.000000 7.481878 9.381978
+      vertex 0.000000 11.234818 4.216498
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 11.234818 4.216498
+      vertex 0.000000 7.481878 9.381978
+      vertex 0.000000 10.301386 6.154791
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex 0.000000 5.686424 10.567146
+      vertex 0.000000 7.481878 9.381978
+      vertex 0.000000 3.708204 11.412678
+    endloop
+  endfacet
+  facet normal -1.000000 -0.000000 -0.000000
+    outer loop
+      vertex 0.000000 3.708204 11.412678
+      vertex 0.000000 7.481878 9.381978
+      vertex 0.000000 1.610799 11.891397
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 -11.951692 -1.075672
+      vertex 0.000000 7.481878 9.381978
+      vertex 0.000000 -10.811626 -5.206605
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 -9.708204 -7.053423
+      vertex 0.000000 -4.716300 -11.034333
+      vertex 0.000000 -8.292751 -8.673538
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.000000 -10.811626 5.206605
+      vertex 0.000000 7.481878 9.381978
+      vertex 0.000000 -11.951692 -1.075672
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 -8.292751 -8.673538
+      vertex 0.000000 -4.716300 -11.034333
+      vertex 0.000000 -6.610764 -10.014879
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 -10.811626 -5.206605
+      vertex 0.000000 7.481878 9.381978
+      vertex 0.000000 9.036858 -7.895265
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.000000 1.610799 11.891397
+      vertex 0.000000 7.481878 9.381978
+      vertex 0.000000 -10.811626 5.206605
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 7.481878 9.381978
+      vertex 0.000000 9.036858 7.895265
+      vertex 0.000000 10.301386 6.154791
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 -11.567554 -3.192442
+      vertex 0.000000 -11.951692 -1.075672
+      vertex 0.000000 -10.811626 -5.206605
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 -4.716300 -11.034333
+      vertex 0.000000 -0.538378 -11.987917
+      vertex 0.000000 -2.670251 -11.699135
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 -9.708204 -7.053423
+      vertex 0.000000 -0.538378 -11.987917
+      vertex 0.000000 -4.716300 -11.034333
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 -0.538378 -11.987917
+      vertex 0.000000 3.708204 -11.412678
+      vertex 0.000000 1.610799 -11.891397
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.000000 -11.567554 3.192442
+      vertex 0.000000 -10.811626 5.206605
+      vertex 0.000000 -11.951692 1.075672
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 -11.951692 1.075672
+      vertex 0.000000 -10.811626 5.206605
+      vertex 0.000000 -11.951692 -1.075672
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.000000 -9.708204 7.053423
+      vertex 0.000000 -8.292751 8.673538
+      vertex 0.000000 -10.811626 5.206605
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 -10.811626 -5.206605
+      vertex 0.000000 9.036858 -7.895265
+      vertex 0.000000 -9.708204 -7.053423
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 3.708204 -11.412678
+      vertex 0.000000 9.036858 -7.895265
+      vertex 0.000000 5.686424 -10.567146
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 5.686424 -10.567146
+      vertex 0.000000 9.036858 -7.895265
+      vertex 0.000000 7.481878 -9.381978
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 -9.708204 -7.053423
+      vertex 0.000000 9.036858 -7.895265
+      vertex 0.000000 -0.538378 -11.987917
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 -0.538378 -11.987917
+      vertex 0.000000 9.036858 -7.895265
+      vertex 0.000000 3.708204 -11.412678
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 9.036858 -7.895265
+      vertex 0.000000 11.234818 -4.216498
+      vertex 0.000000 10.301386 -6.154791
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.000000 -2.670251 11.699135
+      vertex 0.000000 -0.538378 11.987917
+      vertex 0.000000 -4.716300 11.034333
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.000000 -4.716300 11.034333
+      vertex 0.000000 -0.538378 11.987917
+      vertex 0.000000 -6.610764 10.014879
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.000000 -6.610764 10.014879
+      vertex 0.000000 1.610799 11.891397
+      vertex 0.000000 -8.292751 8.673538
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.000000 -8.292751 8.673538
+      vertex 0.000000 1.610799 11.891397
+      vertex 0.000000 -10.811626 5.206605
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 -0.000000
+    outer loop
+      vertex 0.000000 -0.538378 11.987917
+      vertex 0.000000 1.610799 11.891397
+      vertex 0.000000 -6.610764 10.014879
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 11.807155 -2.142683
+      vertex 0.000000 11.807155 2.142683
+      vertex 0.000000 12.000000 -0.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 11.234818 -4.216498
+      vertex 0.000000 11.234818 4.216498
+      vertex 0.000000 11.807155 -2.142683
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 9.036858 -7.895265
+      vertex 0.000000 11.234818 4.216498
+      vertex 0.000000 11.234818 -4.216498
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 11.807155 -2.142683
+      vertex 0.000000 11.234818 4.216498
+      vertex 0.000000 11.807155 2.142683
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 7.481878 9.381978
+      vertex 180.000000 11.234818 4.216498
+      vertex 180.000000 10.301386 6.154791
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 7.481878 9.381978
+      vertex 180.000000 5.686424 10.567146
+      vertex 180.000000 3.708204 11.412678
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 7.481878 9.381978
+      vertex 180.000000 3.708204 11.412678
+      vertex 180.000000 1.610799 11.891397
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 7.481878 9.381978
+      vertex 180.000000 1.610799 11.891397
+      vertex 180.000000 -6.610764 10.014879
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 7.481878 9.381978
+      vertex 180.000000 -6.610764 10.014879
+      vertex 180.000000 11.234818 4.216498
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 -4.716300 -11.034333
+      vertex 180.000000 -9.708204 -7.053423
+      vertex 180.000000 -8.292751 -8.673538
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 9.036858 7.895265
+      vertex 180.000000 7.481878 9.381978
+      vertex 180.000000 10.301386 6.154791
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 -4.716300 -11.034333
+      vertex 180.000000 -8.292751 -8.673538
+      vertex 180.000000 -6.610764 -10.014879
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 -11.951692 -1.075672
+      vertex 180.000000 -11.567554 -3.192442
+      vertex 180.000000 -10.811626 -5.206605
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 -0.538378 -11.987917
+      vertex 180.000000 -4.716300 -11.034333
+      vertex 180.000000 -2.670251 -11.699135
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 -0.538378 -11.987917
+      vertex 180.000000 -9.708204 -7.053423
+      vertex 180.000000 -4.716300 -11.034333
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 3.708204 -11.412678
+      vertex 180.000000 -0.538378 -11.987917
+      vertex 180.000000 1.610799 -11.891397
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 -10.811626 5.206605
+      vertex 180.000000 -11.567554 3.192442
+      vertex 180.000000 -11.951692 1.075672
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 -10.811626 5.206605
+      vertex 180.000000 -11.951692 1.075672
+      vertex 180.000000 -11.951692 -1.075672
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 -8.292751 8.673538
+      vertex 180.000000 -9.708204 7.053423
+      vertex 180.000000 -10.811626 5.206605
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 9.036858 -7.895265
+      vertex 180.000000 -10.811626 -5.206605
+      vertex 180.000000 -9.708204 -7.053423
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 9.036858 -7.895265
+      vertex 180.000000 3.708204 -11.412678
+      vertex 180.000000 5.686424 -10.567146
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 9.036858 -7.895265
+      vertex 180.000000 5.686424 -10.567146
+      vertex 180.000000 7.481878 -9.381978
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 9.036858 -7.895265
+      vertex 180.000000 -9.708204 -7.053423
+      vertex 180.000000 -0.538378 -11.987917
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 9.036858 -7.895265
+      vertex 180.000000 -0.538378 -11.987917
+      vertex 180.000000 3.708204 -11.412678
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 11.234818 -4.216498
+      vertex 180.000000 9.036858 -7.895265
+      vertex 180.000000 10.301386 -6.154791
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 -0.538378 11.987917
+      vertex 180.000000 -2.670251 11.699135
+      vertex 180.000000 -4.716300 11.034333
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 -0.538378 11.987917
+      vertex 180.000000 -4.716300 11.034333
+      vertex 180.000000 -6.610764 10.014879
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 1.610799 11.891397
+      vertex 180.000000 -0.538378 11.987917
+      vertex 180.000000 -6.610764 10.014879
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 11.807155 2.142683
+      vertex 180.000000 11.807155 -2.142683
+      vertex 180.000000 12.000000 -0.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 11.234818 4.216498
+      vertex 180.000000 -6.610764 10.014879
+      vertex 180.000000 -8.292751 8.673538
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 11.234818 4.216498
+      vertex 180.000000 11.234818 -4.216498
+      vertex 180.000000 11.807155 -2.142683
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 11.234818 4.216498
+      vertex 180.000000 -11.951692 -1.075672
+      vertex 180.000000 -10.811626 -5.206605
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 11.234818 4.216498
+      vertex 180.000000 -8.292751 8.673538
+      vertex 180.000000 -10.811626 5.206605
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 11.234818 4.216498
+      vertex 180.000000 -10.811626 5.206605
+      vertex 180.000000 -11.951692 -1.075672
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 11.234818 4.216498
+      vertex 180.000000 -10.811626 -5.206605
+      vertex 180.000000 9.036858 -7.895265
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 11.234818 4.216498
+      vertex 180.000000 9.036858 -7.895265
+      vertex 180.000000 11.234818 -4.216498
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 180.000000 11.234818 4.216498
+      vertex 180.000000 11.807155 -2.142683
+      vertex 180.000000 11.807155 2.142683
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/T-Junction.stl b/apps/cpu/Multiphase/backup/T-Junction.stl
new file mode 100644
index 0000000000000000000000000000000000000000..87c59e91572cedafd98f2b21053d09011e80a623
Binary files /dev/null and b/apps/cpu/Multiphase/backup/T-Junction.stl differ
diff --git a/apps/cpu/Multiphase/backup/Thermal - Cfg_file.txt b/apps/cpu/Multiphase/backup/Thermal - Cfg_file.txt
new file mode 100644
index 0000000000000000000000000000000000000000..34aa746a2c05e1f6dbfa38631f84b5dd99c2b12c
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/Thermal - Cfg_file.txt	
@@ -0,0 +1,72 @@
+pathname = d:/temp/Thermal
+pathGeo = d:/Hesam/VirtualFluids/source/Applications/Multiphase
+geoFile = FlowFocusingS2_Small.ast
+#geoFile = T-Junction.ast
+numOfThreads = 4
+availMem = 10e9
+
+#Grid
+#length = 50 50 50
+#length = 21 6 13
+#boundingBox = x1min x1max x2min x2max x3min x3max [mm]
+#boundingBox = 0.5 219.5 -30 30 -30 30
+#boundingBox = -1 121 -30 30 -30 30
+#boundingBox = -32 128 -12 14 3 58   (FlowFocusingSS , FlowFocusingS) (X1 extendable until 128)
+#blocknx = 10 13 11
+#boundingBox = 0.5 165.5 -17.5 17.5 -29.5 30.5   (FlowFocusing)
+#blocknx = 11 7 10
+#boundingBox = -32 128 -12 14 -27 88 (FlowFocusingSL)
+#blocknx = 10 13 5
+#boundingBox = 1 179 -21 21 -21 59 (T-Junction)
+#blocknx = 8 7 8
+#boundingBox = -23 79 0 26 3 59 (FlowFocusingSq0-1)
+#blocknx = 6 13 7
+#boundingBox = -23 179 0 26 3 59 (FlowFocusingSq2)
+#blocknx = 6 13 7
+#boundingBox = -24 181 0 18 1 101 (FlowFocusingS2)
+#blocknx = 5 9 10
+
+#boundingBox = -24.5 180.5 2.5 4.5 1.5 64.5 (FlowFocusingS2_Small)
+#blocknx = 5 2 9
+
+boundingBox = 0.5 200.5 0.5 100.5 0.5 3.5 (Droplet test)
+blocknx = 10 10 3
+dx = 1.0
+refineLevel = 0
+
+#Simulation
+uLB = 0.001
+uF2 = 0.001
+Re = 10
+#nuL = 3.3e-3
+nuL = 3.33e-5
+nuG = 3.33e-5
+Phase-field Relaxation = 0.500141
+#nuL = 0.16666
+#nuG = 0.16666
+densityRatio = 1.0495
+#densityRatio = 10.0
+sigma = 7.4e-4
+interfaceThickness = 3
+#radius = 10.0  (Droplet test)
+#radius = -20.0   (FlowFocusingSS , FlowFocusingS)
+radius = -5.0   (FlowFocusingSq)
+#radius = 10.0   (FlowFocusing)
+#radius = 20.0   (T-Junction)
+contactAngle = 120.0
+gravity = -2.7e-4
+phi_L = 1.0
+phi_H = 4.0
+Mobility = 0.05
+
+
+logToFile = false
+
+newStart = true
+restartStep = 100000
+
+cpStart = 100000
+cpStep = 100000
+
+outTime = 200
+endTime = 20000000
\ No newline at end of file
diff --git a/apps/cpu/Multiphase/backup/Tube_jet.FCStd b/apps/cpu/Multiphase/backup/Tube_jet.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..a496c4b14043a3d397f70a479205f7d23139c991
Binary files /dev/null and b/apps/cpu/Multiphase/backup/Tube_jet.FCStd differ
diff --git a/apps/cpu/Multiphase/backup/Tube_jet.stl b/apps/cpu/Multiphase/backup/Tube_jet.stl
new file mode 100644
index 0000000000000000000000000000000000000000..8b9fa2cb33db4762af84b2e7da4d46a01d3c0184
Binary files /dev/null and b/apps/cpu/Multiphase/backup/Tube_jet.stl differ
diff --git a/apps/cpu/Multiphase/backup/Tube_jet1.FCStd b/apps/cpu/Multiphase/backup/Tube_jet1.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..a009fabad2296f3a56ef31b8122ccb60341a76a6
Binary files /dev/null and b/apps/cpu/Multiphase/backup/Tube_jet1.FCStd differ
diff --git a/apps/cpu/Multiphase/backup/Tube_jet1.stl b/apps/cpu/Multiphase/backup/Tube_jet1.stl
new file mode 100644
index 0000000000000000000000000000000000000000..416bdd4d9e81be88dfc2164c97a67577812ebdd3
Binary files /dev/null and b/apps/cpu/Multiphase/backup/Tube_jet1.stl differ
diff --git a/apps/cpu/Multiphase/backup/Tube_jet_s.stl b/apps/cpu/Multiphase/backup/Tube_jet_s.stl
new file mode 100644
index 0000000000000000000000000000000000000000..8cdc56a34427f1dbea876038a43b0fea78de2d09
Binary files /dev/null and b/apps/cpu/Multiphase/backup/Tube_jet_s.stl differ
diff --git a/apps/cpu/Multiphase/backup/aaaa.stl b/apps/cpu/Multiphase/backup/aaaa.stl
new file mode 100644
index 0000000000000000000000000000000000000000..012423f0625912bb76dcae9c5040a1dcad1d2bda
Binary files /dev/null and b/apps/cpu/Multiphase/backup/aaaa.stl differ
diff --git a/apps/cpu/Multiphase/backup/dd.ast b/apps/cpu/Multiphase/backup/dd.ast
new file mode 100644
index 0000000000000000000000000000000000000000..b95f8748a8bc6e4fdb3f94f61521a27fb392d073
--- /dev/null
+++ b/apps/cpu/Multiphase/backup/dd.ast
@@ -0,0 +1,198 @@
+solid Mesh
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 5.000000 -5.000000
+      vertex 0.000000 -5.000000 -5.000000
+      vertex 0.000000 5.000000 5.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 0.000000 -5.000000 -5.000000
+      vertex 0.000000 -5.000000 5.000000
+      vertex 0.000000 5.000000 5.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 20.000000 -5.000000 -5.000000
+      vertex 0.000000 -5.000000 -5.000000
+      vertex 20.000000 5.000000 -5.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 0.000000 -5.000000 -5.000000
+      vertex 0.000000 5.000000 -5.000000
+      vertex 20.000000 5.000000 -5.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 20.000000 5.000000 -5.000000
+      vertex 0.000000 5.000000 -5.000000
+      vertex 20.000000 5.000000 5.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 0.000000 5.000000 -5.000000
+      vertex 0.000000 5.000000 5.000000
+      vertex 20.000000 5.000000 5.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 0.000000 5.000000 5.000000
+      vertex 0.000000 -5.000000 5.000000
+      vertex 20.000000 5.000000 5.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 20.000000 5.000000 5.000000
+      vertex 0.000000 -5.000000 5.000000
+      vertex 20.000000 -5.000000 5.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 0.000000 -5.000000 5.000000
+      vertex 0.000000 -5.000000 -5.000000
+      vertex 20.000000 -5.000000 5.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 20.000000 -5.000000 5.000000
+      vertex 0.000000 -5.000000 -5.000000
+      vertex 20.000000 -5.000000 -5.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 20.000000 5.000000 5.000000
+      vertex 20.000000 25.000000 25.000000
+      vertex 20.000000 5.000000 -5.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 20.000000 5.000000 -5.000000
+      vertex 20.000000 25.000000 25.000000
+      vertex 20.000000 25.000000 -25.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 20.000000 25.000000 -25.000000
+      vertex 20.000000 -25.000000 -25.000000
+      vertex 20.000000 5.000000 -5.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 20.000000 -25.000000 -25.000000
+      vertex 20.000000 -5.000000 -5.000000
+      vertex 20.000000 5.000000 -5.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 20.000000 5.000000 5.000000
+      vertex 20.000000 -5.000000 5.000000
+      vertex 20.000000 25.000000 25.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 20.000000 -25.000000 -25.000000
+      vertex 20.000000 -5.000000 5.000000
+      vertex 20.000000 -5.000000 -5.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 20.000000 -5.000000 5.000000
+      vertex 20.000000 -25.000000 25.000000
+      vertex 20.000000 25.000000 25.000000
+    endloop
+  endfacet
+  facet normal -1.000000 0.000000 0.000000
+    outer loop
+      vertex 20.000000 -25.000000 -25.000000
+      vertex 20.000000 -25.000000 25.000000
+      vertex 20.000000 -5.000000 5.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 120.000000 -25.000000 -25.000000
+      vertex 20.000000 -25.000000 -25.000000
+      vertex 120.000000 25.000000 -25.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 -1.000000
+    outer loop
+      vertex 20.000000 -25.000000 -25.000000
+      vertex 20.000000 25.000000 -25.000000
+      vertex 120.000000 25.000000 -25.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 20.000000 -25.000000 25.000000
+      vertex 20.000000 -25.000000 -25.000000
+      vertex 120.000000 -25.000000 25.000000
+    endloop
+  endfacet
+  facet normal 0.000000 -1.000000 0.000000
+    outer loop
+      vertex 120.000000 -25.000000 25.000000
+      vertex 20.000000 -25.000000 -25.000000
+      vertex 120.000000 -25.000000 -25.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 120.000000 25.000000 -25.000000
+      vertex 20.000000 25.000000 -25.000000
+      vertex 120.000000 25.000000 25.000000
+    endloop
+  endfacet
+  facet normal 0.000000 1.000000 0.000000
+    outer loop
+      vertex 20.000000 25.000000 -25.000000
+      vertex 20.000000 25.000000 25.000000
+      vertex 120.000000 25.000000 25.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 20.000000 25.000000 25.000000
+      vertex 20.000000 -25.000000 25.000000
+      vertex 120.000000 25.000000 25.000000
+    endloop
+  endfacet
+  facet normal 0.000000 0.000000 1.000000
+    outer loop
+      vertex 120.000000 25.000000 25.000000
+      vertex 20.000000 -25.000000 25.000000
+      vertex 120.000000 -25.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 120.000000 -25.000000 -25.000000
+      vertex 120.000000 25.000000 -25.000000
+      vertex 120.000000 25.000000 25.000000
+    endloop
+  endfacet
+  facet normal 1.000000 0.000000 0.000000
+    outer loop
+      vertex 120.000000 -25.000000 25.000000
+      vertex 120.000000 -25.000000 -25.000000
+      vertex 120.000000 25.000000 25.000000
+    endloop
+  endfacet
+endsolid Mesh
diff --git a/apps/cpu/Multiphase/backup/dd.stl b/apps/cpu/Multiphase/backup/dd.stl
new file mode 100644
index 0000000000000000000000000000000000000000..c72bd5e4cc997a156f43cc526b38d7fb49077aa1
Binary files /dev/null and b/apps/cpu/Multiphase/backup/dd.stl differ
diff --git a/src/basics/geometry3d/GbTriFaceMesh3D.cpp b/src/basics/geometry3d/GbTriFaceMesh3D.cpp
index 9c098f14c802a5ac7fba4328d99e412cc6b453f4..3615cff63bba077b72f02280854531b9be34df2d 100644
--- a/src/basics/geometry3d/GbTriFaceMesh3D.cpp
+++ b/src/basics/geometry3d/GbTriFaceMesh3D.cpp
@@ -67,8 +67,8 @@ GbTriFaceMesh3D::~GbTriFaceMesh3D()
 /*======================================================================*/
 void GbTriFaceMesh3D::init()
 {
-    nodes      = NULL;
-    triangles  = NULL;
+    //nodes      = NULL;
+    //triangles  = NULL;
     x1min      = 0.0;
     x1max      = 0.0;
     x1center   = 0.0;
@@ -787,7 +787,7 @@ bool GbTriFaceMesh3D::isPointInGbObject3D(const double &x1, const double &x2, co
             timer.start();
             if (kdtreeSplitAlg == KDTREE_SAHPLIT) {
                 UBLOG(logDEBUG3, "GbTriFaceMesh3D::calculateValues - build KdTree with SAHSplit");
-                cout << "GbTriFaceMesh3D::calculateValues - build KdTree with SAHSplit" << std::endl;
+                //cout << "GbTriFaceMesh3D::calculateValues - build KdTree with SAHSplit" << std::endl;
                 this->kdTree = new Kd::Tree<double>(*this, Kd::SAHSplit<double>());
             } else if (kdtreeSplitAlg == KDTREE_SPATIALSPLIT) {
                 UBLOG(logDEBUG3, "GbTriFaceMesh3D::calculateValues - build KdTree with SpatialMedianSplit");
@@ -795,7 +795,7 @@ bool GbTriFaceMesh3D::isPointInGbObject3D(const double &x1, const double &x2, co
             } else
                 throw UbException(UB_EXARGS, "unknown kdtree split option)");
             UBLOG(logDEBUG3, "GbTriFaceMesh3D::calculateValues - built kdTree in " << timer.stop() << "seconds");
-            cout << "GbTriFaceMesh3D::calculateValues - built kdTree in " << timer.stop() << "seconds" << std::endl;
+            //cout << "GbTriFaceMesh3D::calculateValues - built kdTree in " << timer.stop() << "seconds" << std::endl;
         }
 
         // eigentlicher PIO-Test
@@ -1005,48 +1005,44 @@ void GbTriFaceMesh3D::writeMeshPly(const std::string &filename)
         out << "3 " << (*triangles)[i].v1 << " " << (*triangles)[i].v2 << " " << (*triangles)[i].v3 << endl;
 }
 /*======================================================================*/
-void GbTriFaceMesh3D::readMeshFromSTLFile(string filename, bool removeRedundantNodes)
+void GbTriFaceMesh3D::readMeshFromSTLFileASCII(string filename, bool removeRedundantNodes)
 {
     UBLOG(logDEBUG1, "GbTriFaceMesh3DCreator::readMeshFromSTLFile !!! Dieses Format hat leider redundante Knoten ...");
 
-    UbFileInputASCII in(filename);
-    // this->nodes     = new vector<GbTriFaceMesh3D::Vertex>;
-    // this->triangles = new vector<GbTriFaceMesh3D::TriFace>;
-    string dummy;
-
-    double x, y, z;
     int nr = 0;
 
-    in.readLine();
-    while (dummy != "endsolid") {
-        in.readLine();
-        in.readLine();
-        dummy = in.readString();
-        if (dummy != "vertex")
-            throw UbException(UB_EXARGS, "no vertex format");
-        x = in.readDouble();
-        y = in.readDouble();
-        z = in.readDouble();
-        nodes->push_back(GbTriFaceMesh3D::Vertex((float)x, (float)y, (float)z));
-        in.readLine();
-        in.readString();
-        x = in.readDouble();
-        y = in.readDouble();
-        z = in.readDouble();
-        nodes->push_back(GbTriFaceMesh3D::Vertex((float)x, (float)y, (float)z));
-        in.readLine();
-        in.readString();
-        x = in.readDouble();
-        y = in.readDouble();
-        z = in.readDouble();
-        nodes->push_back(GbTriFaceMesh3D::Vertex((float)x, (float)y, (float)z));
-        triangles->push_back(GbTriFaceMesh3D::TriFace(nr, nr + 1, nr + 2));
-        in.readLine();
-        in.readLine();
-        in.readLine();
-        dummy = in.readString();
-        nr += 3;
+    ifstream in(filename.c_str());
+    if (!in.good()) {
+        (*nodes).clear();
+        (*triangles).clear();
+        UB_THROW(UbException(UB_EXARGS, "Can not open STL file: " + filename));
     }
+    char title[80];
+    std::string s0, s1;
+    float n0, n1, n2, f0, f1, f2, f3, f4, f5, f6, f7, f8;
+    in.read(title, 80);
+    while (!in.eof()) {
+        in >> s0; // facet || endsolid
+        if (s0 == "facet") {
+            in >> s1 >> n0 >> n1 >> n2; // normal x y z
+            in >> s0 >> s1;             // outer loop
+            in >> s0 >> f0 >> f1 >> f2; // vertex x y z
+            in >> s0 >> f3 >> f4 >> f5; // vertex x y z
+            in >> s0 >> f6 >> f7 >> f8; // vertex x y z
+            in >> s0;                   // endloop
+            in >> s0;                   // endfacet
+            // Generate a new Triangle without Normal as 3 Vertices
+            nodes->push_back(GbTriFaceMesh3D::Vertex(f0, f1, f2));
+            nodes->push_back(GbTriFaceMesh3D::Vertex(f3, f4, f5));
+            nodes->push_back(GbTriFaceMesh3D::Vertex(f6, f7, f8));
+            triangles->push_back(GbTriFaceMesh3D::TriFace(nr, nr + 1, nr + 2));
+            nr += 3;
+        } else if (s0 == "endsolid") {
+            break;
+        }
+    }
+    in.close();
+
     if (removeRedundantNodes) {
         this->deleteRedundantNodes(); // dort wird autoamtisch calculateValues() aufgerufen
     } else {
@@ -1056,13 +1052,11 @@ void GbTriFaceMesh3D::readMeshFromSTLFile(string filename, bool removeRedundantN
 /*======================================================================*/
 void GbTriFaceMesh3D::readMeshFromSTLFileBinary(string filename, bool removeRedundantNodes)
 {
-    // vector<GbTriFaceMesh3D::Vertex> *nodes      = new vector<GbTriFaceMesh3D::Vertex>;
-    // vector<GbTriFaceMesh3D::TriFace> *triangles = new vector<GbTriFaceMesh3D::TriFace>;
     int nr  = 0;
     FILE *f = fopen(filename.c_str(), "rb");
     if (!f) {
-        delete nodes;
-        delete triangles;
+        (*nodes).clear();
+        (*triangles).clear();
         UB_THROW(UbException(UB_EXARGS, "Can not open STL file: " + filename));
     }
     char title[80];
diff --git a/src/basics/geometry3d/GbTriFaceMesh3D.h b/src/basics/geometry3d/GbTriFaceMesh3D.h
index 7f574bdf0ca8ef4f5e1027e8021d6b3ad939c3f8..eb7fc1a9f2119493287052d6a593e39a4e967e9d 100644
--- a/src/basics/geometry3d/GbTriFaceMesh3D.h
+++ b/src/basics/geometry3d/GbTriFaceMesh3D.h
@@ -269,7 +269,7 @@ public:
         this->transX2             = transX2;
         this->transX3             = transX3;
     }
-    void readMeshFromSTLFile(std::string filename, bool removeRedundantNodes);
+    void readMeshFromSTLFileASCII(std::string filename, bool removeRedundantNodes);
     void readMeshFromSTLFileBinary(std::string filename, bool removeRedundantNodes);
 
     double getX1Minimum() override
@@ -344,7 +344,7 @@ public:
     void rotateAroundPoint(const double &px1, const double &px2, const double &px3, const double &alpha,
                            const double &beta, const double &gamma);
     void translate(const double &x1, const double &x2, const double &x3) override;
-    void reflectAcrossXYLine(const double &alpha);
+    //void reflectAcrossXYLine(const double &alpha);
 
     bool isPointInGbObject3D(const double &x1, const double &x2, const double &x3) override;
     bool isPointInGbObject3D(const double &x1, const double &x2, const double &x3, int counter);
@@ -378,8 +378,8 @@ protected:
     KDTREE_SPLITAGORITHM kdtreeSplitAlg;
     void init();
 
-    std::vector<Vertex> *nodes;
-    std::vector<TriFace> *triangles;
+    std::vector<Vertex> * nodes;
+    std::vector<TriFace> * triangles;
     // for transfer
     std::string filename;
     bool transferViaFilename{ false };
diff --git a/src/cpu/VirtualFluids.h b/src/cpu/VirtualFluids.h
index f90e05e07a78f1376caea529480e2e050de70c0c..0a666a932f8b3e3fba0e5f24d5220becb603b564 100644
--- a/src/cpu/VirtualFluids.h
+++ b/src/cpu/VirtualFluids.h
@@ -133,6 +133,10 @@
 #include <BoundaryConditions/SimpleSlipBCAlgorithm.h>
 #include <BoundaryConditions/PowellEyringModelNoSlipBCAlgorithm.h>
 #include <BoundaryConditions/BinghamModelVelocityBCAlgorithm.h>
+#include <BoundaryConditions/NoSlipBCAlgorithmMultiphase.h> 
+#include <BoundaryConditions/NonReflectingOutflowBCAlgorithmMultiphase.h> 
+#include <BoundaryConditions/VelocityBCAdapterMultiphase.h>
+#include <BoundaryConditions/VelocityBCAlgorithmMultiphase.h>
 
 #include <Connectors/Block3DConnector.h>
 #include <Connectors/Block3DConnectorFactory.h>
@@ -231,6 +235,7 @@
 #include <LBM/ThixotropyInterpolationProcessor.h>
 #include <LBM/RheologyK17LBMKernel.h>
 #include <LBM/PowellEyringModelLBMKernel.h>
+#include <LBM/MultiphaseCumulantLBMKernel.h>
 
 
 
@@ -322,6 +327,9 @@
 #include <CheckRatioBlockVisitor.h>
 #include <SpongeLayerBlockVisitor.h>
 #include <ZoltanPartitioningGridVisitor.h>
+#include <Visitors/SetKernelBlockVisitorMultiphase.h>
+#include <Visitors/BoundaryConditionsBlockVisitorMultiphase.h>
+#include <Visitors/InitDistributionsBlockVisitorMultiphase.h>
 
 #include <RefineAroundGbObjectHelper.h>
 #include <Visitors/RefineCrossAndInsideGbObjectHelper.h>
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.cpp
index 61b427e323dce214240f439eb0ff45c62029e05f..69543bc6dce034c9c878711013d0297180c3d99f 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.cpp
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.cpp
@@ -65,7 +65,20 @@ void BCAlgorithm::setCompressible(bool c)
 }
 //////////////////////////////////////////////////////////////////////////
 void BCAlgorithm::setCollFactor(LBMReal cf) { collFactor = cf; }
-
+//////////////////////////////////////////////////////////////////////////
+void BCAlgorithm::setCollFactorL(LBMReal cf) { collFactorL = cf; }
+//////////////////////////////////////////////////////////////////////////
+void BCAlgorithm::setCollFactorG(LBMReal cf) { collFactorG = cf; }
+//////////////////////////////////////////////////////////////////////////
+void BCAlgorithm::setCollFactorPh(LBMReal cf) { collFactorPh = cf; }
+//////////////////////////////////////////////////////////////////////////
+void BCAlgorithm::setDensityRatio(LBMReal dr) { densityRatio = dr; }
+//////////////////////////////////////////////////////////////////////////
+void BCAlgorithm::setPhiBound(LBMReal phiL, LBMReal phiH)
+{
+    this->phiL = phiL;
+    this->phiH = phiH;
+}
 //////////////////////////////////////////////////////////////////////////
 char BCAlgorithm::getType() { return type; }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.h
index 734aa9342df011846ce345ba7c37a181383e8828..518ea9fac1898912f16d3c83d18bb1ff722c21a3 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCAlgorithm.h
@@ -47,37 +47,46 @@ class BoundaryConditions;
 class BCAlgorithm
 {
 public:
-    static const char VelocityBCAlgorithm = 0;
-    static const char EqDensityBCAlgorithm = 1;
-    static const char NonEqDensityBCAlgorithm = 2;
-    static const char NoSlipBCAlgorithm = 3;
-    static const char SlipBCAlgorithm = 4;
-    static const char HighViscosityNoSlipBCAlgorithm = 5;
-    static const char ThinWallNoSlipBCAlgorithm = 6;
-    static const char VelocityWithDensityBCAlgorithm = 7;
-    static const char NonReflectingOutflowBCAlgorithm = 8;
-    static const char VelocityAndThixotropyBCAlgorithm = 9;
-    static const char DensityAndThixotropyBCAlgorithm = 10;
-    static const char NoSlipAndThixotropyBCAlgorithm = 11;
+    static const char VelocityBCAlgorithm                          = 0;
+    static const char EqDensityBCAlgorithm                         = 1;
+    static const char NonEqDensityBCAlgorithm                      = 2;
+    static const char NoSlipBCAlgorithm                            = 3;
+    static const char SlipBCAlgorithm                              = 4;
+    static const char HighViscosityNoSlipBCAlgorithm               = 5;
+    static const char ThinWallNoSlipBCAlgorithm                    = 6;
+    static const char VelocityWithDensityBCAlgorithm               = 7;
+    static const char NonReflectingOutflowBCAlgorithm              = 8;
+    static const char VelocityAndThixotropyBCAlgorithm             = 9;
+    static const char DensityAndThixotropyBCAlgorithm              = 10;
+    static const char NoSlipAndThixotropyBCAlgorithm               = 11;
     static const char NonReflectingOutflowAndThixotropyBCAlgorithm = 12;
-    static const char VelocityWithDensityAndThixotropyBCAlgorithm = 13;
-    static const char BinghamModelNoSlipBCAlgorithm = 14;
-    static const char HerschelBulkleyModelNoSlipBCAlgorithm = 15;
-    static const char SimpleVelocityBCAlgorithm = 16;
-    static const char SimpleSlipBCAlgorithm = 17;
-    static const char PowellEyringModelNoSlipBCAlgorithm = 18;
-    static const char BinghamModelVelocityBCAlgorithm = 19;
+    static const char VelocityWithDensityAndThixotropyBCAlgorithm  = 13;
+    static const char BinghamModelNoSlipBCAlgorithm                = 14;
+    static const char HerschelBulkleyModelNoSlipBCAlgorithm        = 15;
+    static const char SimpleVelocityBCAlgorithm                    = 16;
+    static const char SimpleSlipBCAlgorithm                        = 17;
+    static const char PowellEyringModelNoSlipBCAlgorithm           = 18;
+    static const char BinghamModelVelocityBCAlgorithm              = 19;
+    static const char NoSlipBCAlgorithmMultiphase                  = 20;
 
 
 public:
     BCAlgorithm() = default;
     virtual ~BCAlgorithm() = default;
 
-    virtual void addDistributions(SPtr<DistributionArray3D> distributions) = 0;
+    virtual void addDistributions(SPtr<DistributionArray3D> distributions)   = 0;
+    virtual void addDistributionsH(SPtr<DistributionArray3D> distributionsH) {}
     void setNodeIndex(int x1, int x2, int x3);
     void setBcPointer(SPtr<BoundaryConditions> bcPtr);
     void setCompressible(bool c);
     void setCollFactor(LBMReal cf);
+
+    void setCollFactorL(LBMReal cf);
+    void setCollFactorG(LBMReal cf);
+    void setCollFactorPh(LBMReal cf);
+    void setDensityRatio(LBMReal dr);
+    void setPhiBound(LBMReal phiL, LBMReal phiH);
+
     char getType();
     bool isPreCollision();
     virtual SPtr<BCAlgorithm> clone() = 0;
@@ -94,9 +103,13 @@ protected:
 
     SPtr<BoundaryConditions> bcPtr;
     SPtr<DistributionArray3D> distributions;
+    SPtr<DistributionArray3D> distributionsH;
     SPtr<BCArray3D> bcArray;
 
     LBMReal collFactor;
+    LBMReal collFactorL, collFactorG, collFactorPh;
+    LBMReal densityRatio;
+    LBMReal phiL, phiH;
     int x1, x2, x3;
 
     LBMReal compressibleFactor;
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BoundaryConditions.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/BoundaryConditions.h
index 84ba7a6041d38546da03323f35a23f7084df9809..f59a899495c72a3f401b238de871e47a0282590b 100644
--- a/src/cpu/VirtualFluidsCore/BoundaryConditions/BoundaryConditions.h
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/BoundaryConditions.h
@@ -251,6 +251,10 @@ public:
                 throw UbException(UB_EXARGS, "unknown error");
         }
     }
+    
+    //Multiphase
+    void setBoundaryPhaseField(const float &phiBC) { this->bcPhaseField = phiBC; }
+    float getBoundaryPhaseField() { return this->bcPhaseField; }
 
     /*============== Density Boundary ========================*/
     void setDensityBoundaryFlag(const int &direction, const short &secOpt = 0)
@@ -348,8 +352,9 @@ protected:
     float bcVelocityX2{ 0.0f };
     float bcVelocityX3{ 0.0f };
     float bcDensity{ 0.0f };
-    // float  bcThixotropy{ 0.0f };
+    float bcPhaseField{ 0.0f };
 
+    //FIXME: remove LODI variables, don't forget to adjust MPIIOCoProcessors
     float bcLodiDensity{ 0.0f };
     float bcLodiVelocityX1{ 0.0f };
     float bcLodiVelocityX2{ 0.0f };
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCAlgorithmMultiphase.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCAlgorithmMultiphase.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d32a42d9a362e20d6985474397268a8679be4717
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCAlgorithmMultiphase.cpp
@@ -0,0 +1,111 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 NoSlipBCAlgorithmMultiphase.cpp
+//! \ingroup BoundarConditions
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#include "NoSlipBCAlgorithmMultiphase.h"
+#include "DistributionArray3D.h"
+#include "BoundaryConditions.h"
+
+NoSlipBCAlgorithmMultiphase::NoSlipBCAlgorithmMultiphase()
+{
+   BCAlgorithm::type = BCAlgorithm::NoSlipBCAlgorithmMultiphase;
+   BCAlgorithm::preCollision = false;
+}
+//////////////////////////////////////////////////////////////////////////
+NoSlipBCAlgorithmMultiphase::~NoSlipBCAlgorithmMultiphase()
+{
+
+}
+//////////////////////////////////////////////////////////////////////////
+SPtr<BCAlgorithm> NoSlipBCAlgorithmMultiphase::clone()
+{
+   SPtr<BCAlgorithm> bc(new NoSlipBCAlgorithmMultiphase());
+   return bc;
+}
+//////////////////////////////////////////////////////////////////////////
+void NoSlipBCAlgorithmMultiphase::addDistributions(SPtr<DistributionArray3D> distributions)
+{
+   this->distributions = distributions;
+}
+//////////////////////////////////////////////////////////////////////////
+void NoSlipBCAlgorithmMultiphase::addDistributionsH(SPtr<DistributionArray3D> distributionsH)
+{
+	this->distributionsH = distributionsH;
+}
+//////////////////////////////////////////////////////////////////////////
+void NoSlipBCAlgorithmMultiphase::applyBC()
+{
+   LBMReal f[D3Q27System::ENDF+1];
+   LBMReal h[D3Q27System::ENDF+1];
+   LBMReal feq[D3Q27System::ENDF+1];
+   LBMReal heq[D3Q27System::ENDF+1];
+   distributions ->getDistributionInv(f, x1, x2, x3);
+   distributionsH->getDistributionInv(h, x1, x2, x3);
+   LBMReal phi, vx1, vx2, vx3, p1;
+   
+   D3Q27System::calcDensity(h, phi);
+   
+   //LBMReal collFactorM = phi*collFactorL + (1-phi)*collFactorG;
+   //LBMReal collFactorM = collFactorL + (collFactorL - collFactorG)*(phi - phiH)/(phiH - phiL);
+   
+   //rho = phi + (1.0 - phi)*1.0/densityRatio;
+   LBMReal rhoH = 1.0;
+   LBMReal rhoL = 1.0/densityRatio;
+   //rho = rhoH + (rhoH - rhoL)*(phi - phiH)/(phiH - phiL);
+   
+   calcMacrosFct(f, p1, vx1, vx2, vx3);
+   /*vx1/=(rho*c1o3);
+   vx2/=(rho*c1o3);
+   vx3/=(rho*c1o3);*/ 
+   
+   //calcFeqFct(feq, rho, vx1, vx2, vx3);
+   //D3Q27System::calcMultiphaseFeq(feq, rho, p1, vx1, vx2, vx3);
+   D3Q27System::calcMultiphaseFeqVB(feq, p1, vx1, vx2, vx3);
+   D3Q27System::calcMultiphaseHeq(heq, phi, vx1, vx2, vx3); 
+   //LBMReal collFactorM1 = 0.9;
+   for (int fdir = D3Q27System::FSTARTDIR; fdir<=D3Q27System::FENDDIR; fdir++)
+   {
+      if (bcPtr->hasNoSlipBoundaryFlag(fdir))
+      {
+         //quadratic bounce back
+         const int invDir = D3Q27System::INVDIR[fdir];
+         //LBMReal q = bcPtr->getQ(invDir);
+         //LBMReal fReturn = ((1.0-q)/(1.0+q))*((f[invDir]-feq[invDir])/(1.0-collFactorM)+feq[invDir])+((q/(1.0+q))*(f[invDir]+f[fdir]));
+		 LBMReal fReturn = f[invDir];
+         distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir);
+
+		 //LBMReal hReturn = ((1.0-q)/(1.0+q))*((h[invDir]-heq[invDir])/(1.0-collFactorPh)+heq[invDir])+((q/(1.0+q))*(h[invDir]+h[fdir]));
+		 LBMReal hReturn = h[invDir];
+		 distributionsH->setDistributionForDirection(hReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir);
+      }
+   }
+}
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCAlgorithmMultiphase.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCAlgorithmMultiphase.h
new file mode 100644
index 0000000000000000000000000000000000000000..037ee6f50551b7700ccd70deae7c25d1ba83a0af
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCAlgorithmMultiphase.h
@@ -0,0 +1,50 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 NoSlipBCAlgorithmMultiphase.h
+//! \ingroup BoundarConditions
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#ifndef NoSlipBCAlgorithmMultiphase_h__
+#define NoSlipBCAlgorithmMultiphase_h__
+
+#include "BCAlgorithm.h"
+
+//! A class implements no-slip boundary condition for multiphase simulations
+class NoSlipBCAlgorithmMultiphase : public BCAlgorithm
+{
+public:
+   NoSlipBCAlgorithmMultiphase();
+   virtual ~NoSlipBCAlgorithmMultiphase();
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
+   void addDistributionsH(SPtr<DistributionArray3D> distributionsH) override;
+   void applyBC();
+};
+#endif // NoSlipBCAlgorithmMultiphase_h__
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithmMultiphase.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithmMultiphase.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e8a3fa794d579e9149f2f600027e0a30ddf0a54d
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithmMultiphase.cpp
@@ -0,0 +1,372 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 NonReflectingOutflowBCAlgorithmMultiphase.cpp
+//! \ingroup BoundarConditions
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#include "NonReflectingOutflowBCAlgorithmMultiphase.h"
+#include "D3Q27System.h"
+#include "DistributionArray3D.h"
+#include "BoundaryConditions.h"
+
+NonReflectingOutflowBCAlgorithmMultiphase::NonReflectingOutflowBCAlgorithmMultiphase()
+{
+   BCAlgorithm::type = BCAlgorithm::NonReflectingOutflowBCAlgorithm;
+   BCAlgorithm::preCollision = true;
+}
+//////////////////////////////////////////////////////////////////////////
+NonReflectingOutflowBCAlgorithmMultiphase::~NonReflectingOutflowBCAlgorithmMultiphase()
+{
+}
+//////////////////////////////////////////////////////////////////////////
+SPtr<BCAlgorithm> NonReflectingOutflowBCAlgorithmMultiphase::clone()
+{
+    SPtr<BCAlgorithm> bc(new NonReflectingOutflowBCAlgorithmMultiphase());
+   return bc;
+}
+//////////////////////////////////////////////////////////////////////////
+void NonReflectingOutflowBCAlgorithmMultiphase::addDistributions(SPtr<DistributionArray3D> distributions)
+{
+   this->distributions = distributions;
+}
+//////////////////////////////////////////////////////////////////////////
+void NonReflectingOutflowBCAlgorithmMultiphase::addDistributionsH(SPtr<DistributionArray3D> distributionsH)
+{
+	this->distributionsH = distributionsH;
+}
+//////////////////////////////////////////////////////////////////////////
+void NonReflectingOutflowBCAlgorithmMultiphase::applyBC()
+{
+   using namespace D3Q27System;
+   using namespace UbMath;
+   LBMReal f[ENDF+1];
+   LBMReal ftemp[ENDF+1];
+   LBMReal h[D3Q27System::ENDF+1];
+   //LBMReal heq[D3Q27System::ENDF+1];
+   LBMReal htemp[ENDF+1];
+
+   int nx1 = x1;
+   int nx2 = x2;
+   int nx3 = x3;
+   int direction = -1;
+
+   //flag points in direction of fluid
+   if      (bcPtr->hasDensityBoundaryFlag(E)) { nx1 += 1; direction = E; }
+   else if (bcPtr->hasDensityBoundaryFlag(W)) { nx1 -= 1; direction = W; }
+   else if (bcPtr->hasDensityBoundaryFlag(N)) { nx2 += 1; direction = N; }
+   else if (bcPtr->hasDensityBoundaryFlag(S)) { nx2 -= 1; direction = S; }
+   else if (bcPtr->hasDensityBoundaryFlag(T)) { nx3 += 1; direction = T; }
+   else if (bcPtr->hasDensityBoundaryFlag(B)) { nx3 -= 1; direction = B; }
+   else UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary..."));
+
+   distributions->getDistribution(f, x1, x2, x3);
+   distributions->getDistribution(ftemp, nx1, nx2, nx3);
+   distributionsH->getDistribution(h, x1, x2, x3);
+   distributionsH->getDistribution(htemp, nx1, nx2, nx3);
+
+   LBMReal phi, rho, p1, vx1, vx2, vx3;
+   
+   D3Q27System::calcDensity(h, phi);
+   
+   //LBMReal collFactorM = phi*collFactorL + (1-phi)*collFactorG;
+   //LBMReal collFactorM = collFactorL + (collFactorL - collFactorG)*(phi - phiH)/(phiH - phiL);
+
+   //rho = phi + (1.0 - phi)*1.0/densityRatio;
+   LBMReal rhoH = 1.0;
+   LBMReal rhoL = 1.0/densityRatio;
+   rho = rhoH + (rhoH - rhoL)*(phi - phiH)/(phiH - phiL);
+
+   
+   
+   calcMacrosFct(f, p1, vx1, vx2, vx3);
+   /*vx1/=(rho*c1o3);
+   vx2/=(rho*c1o3);
+   vx3/=(rho*c1o3);*/
+
+
+   switch (direction)
+   {
+   case E:
+      f[E]   = ftemp[E]   * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*f[E]   ;
+      f[NE]  = ftemp[NE]  * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*f[NE]  ;
+      f[SE]  = ftemp[SE]  * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*f[SE]  ;
+      f[TE]  = ftemp[TE]  * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*f[TE]  ;
+      f[BE]  = ftemp[BE]  * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*f[BE]  ;
+      f[TNE] = ftemp[TNE] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*f[TNE] ;
+      f[TSE] = ftemp[TSE] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*f[TSE] ;
+      f[BNE] = ftemp[BNE] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*f[BNE] ;
+      f[BSE] = ftemp[BSE] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*f[BSE] ;
+
+      distributions->setDistributionInvForDirection(f[E],   x1+DX1[W],   x2+DX2[W],   x3+DX3[W],   W);
+      distributions->setDistributionInvForDirection(f[NE],  x1+DX1[SW],  x2+DX2[SW],  x3+DX3[SW],  SW);
+      distributions->setDistributionInvForDirection(f[SE],  x1+DX1[NW],  x2+DX2[NW],  x3+DX3[NW],  NW);
+      distributions->setDistributionInvForDirection(f[TE],  x1+DX1[BW],  x2+DX2[BW],  x3+DX3[BW],  BW);
+      distributions->setDistributionInvForDirection(f[BE],  x1+DX1[TW],  x2+DX2[TW],  x3+DX3[TW],  TW);
+      distributions->setDistributionInvForDirection(f[TNE], x1+DX1[BSW], x2+DX2[BSW], x3+DX3[BSW], BSW);
+      distributions->setDistributionInvForDirection(f[TSE], x1+DX1[BNW], x2+DX2[BNW], x3+DX3[BNW], BNW);
+      distributions->setDistributionInvForDirection(f[BNE], x1+DX1[TSW], x2+DX2[TSW], x3+DX3[TSW], TSW);
+      distributions->setDistributionInvForDirection(f[BSE], x1+DX1[TNW], x2+DX2[TNW], x3+DX3[TNW], TNW);
+      
+	  h[E]   = htemp[E]   * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*h[E]   ;
+	  h[NE]  = htemp[NE]  * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*h[NE]  ;
+	  h[SE]  = htemp[SE]  * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*h[SE]  ;
+	  h[TE]  = htemp[TE]  * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*h[TE]  ;
+	  h[BE]  = htemp[BE]  * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*h[BE]  ;
+	  h[TNE] = htemp[TNE] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*h[TNE] ;
+	  h[TSE] = htemp[TSE] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*h[TSE] ;
+	  h[BNE] = htemp[BNE] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*h[BNE] ;
+	  h[BSE] = htemp[BSE] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1)*h[BSE] ;
+
+	  distributionsH->setDistributionInvForDirection(h[E],   x1+DX1[W],   x2+DX2[W],   x3+DX3[W],   W);
+	  distributionsH->setDistributionInvForDirection(h[NE],  x1+DX1[SW],  x2+DX2[SW],  x3+DX3[SW],  SW);
+	  distributionsH->setDistributionInvForDirection(h[SE],  x1+DX1[NW],  x2+DX2[NW],  x3+DX3[NW],  NW);
+	  distributionsH->setDistributionInvForDirection(h[TE],  x1+DX1[BW],  x2+DX2[BW],  x3+DX3[BW],  BW);
+	  distributionsH->setDistributionInvForDirection(h[BE],  x1+DX1[TW],  x2+DX2[TW],  x3+DX3[TW],  TW);
+	  distributionsH->setDistributionInvForDirection(h[TNE], x1+DX1[BSW], x2+DX2[BSW], x3+DX3[BSW], BSW);
+	  distributionsH->setDistributionInvForDirection(h[TSE], x1+DX1[BNW], x2+DX2[BNW], x3+DX3[BNW], BNW);
+	  distributionsH->setDistributionInvForDirection(h[BNE], x1+DX1[TSW], x2+DX2[TSW], x3+DX3[TSW], TSW);
+	  distributionsH->setDistributionInvForDirection(h[BSE], x1+DX1[TNW], x2+DX2[TNW], x3+DX3[TNW], TNW);
+	  
+	  break;
+   case W:
+      f[W]   = ftemp[W]   * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[W]  ;
+      f[NW]  = ftemp[NW]  * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[NW] ;
+      f[SW]  = ftemp[SW]  * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[SW] ;
+      f[TW]  = ftemp[TW]  * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[TW] ;
+      f[BW]  = ftemp[BW]  * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[BW] ;
+      f[TNW] = ftemp[TNW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[TNW];
+      f[TSW] = ftemp[TSW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[TSW];
+      f[BNW] = ftemp[BNW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[BNW];
+      f[BSW] = ftemp[BSW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*f[BSW];
+
+      distributions->setDistributionInvForDirection(f[W],   x1+DX1[E],   x2+DX2[E],   x3+DX3[E],     E);
+      distributions->setDistributionInvForDirection(f[NW],  x1+DX1[SE],  x2+DX2[SE],  x3+DX3[SE],   SE);
+      distributions->setDistributionInvForDirection(f[SW],  x1+DX1[NE],  x2+DX2[NE],  x3+DX3[NE],   NE);
+      distributions->setDistributionInvForDirection(f[TW],  x1+DX1[BE],  x2+DX2[BE],  x3+DX3[BE],   BE);
+      distributions->setDistributionInvForDirection(f[BW],  x1+DX1[TE],  x2+DX2[TE],  x3+DX3[TE],   TE);
+      distributions->setDistributionInvForDirection(f[TNW], x1+DX1[BSE], x2+DX2[BSE], x3+DX3[BSE], BSE);
+      distributions->setDistributionInvForDirection(f[TSW], x1+DX1[BNE], x2+DX2[BNE], x3+DX3[BNE], BNE);
+      distributions->setDistributionInvForDirection(f[BNW], x1+DX1[TSE], x2+DX2[TSE], x3+DX3[TSE], TSE);
+      distributions->setDistributionInvForDirection(f[BSW], x1+DX1[TNE], x2+DX2[TNE], x3+DX3[TNE], TNE);
+
+	  h[W]   = htemp[W]  * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*h[W]  ;
+	  h[NW]  = htemp[NW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*h[NW] ;
+	  h[SW]  = htemp[SW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*h[SW] ;
+	  h[TW]  = htemp[TW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*h[TW] ;
+	  h[BW]  = htemp[BW] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*h[BW] ;
+	  h[TNW] = htemp[TNW]* (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*h[TNW];
+	  h[TSW] = htemp[TSW]* (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*h[TSW];
+	  h[BNW] = htemp[BNW]* (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*h[BNW];
+	  h[BSW] = htemp[BSW]* (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1)*h[BSW];
+
+	  distributionsH->setDistributionInvForDirection(h[W],   x1+DX1[E],   x2+DX2[E],   x3+DX3[E],     E);
+	  distributionsH->setDistributionInvForDirection(h[NW],  x1+DX1[SE],  x2+DX2[SE],  x3+DX3[SE],   SE);
+	  distributionsH->setDistributionInvForDirection(h[SW],  x1+DX1[NE],  x2+DX2[NE],  x3+DX3[NE],   NE);
+	  distributionsH->setDistributionInvForDirection(h[TW],  x1+DX1[BE],  x2+DX2[BE],  x3+DX3[BE],   BE);
+	  distributionsH->setDistributionInvForDirection(h[BW],  x1+DX1[TE],  x2+DX2[TE],  x3+DX3[TE],   TE);
+	  distributionsH->setDistributionInvForDirection(h[TNW], x1+DX1[BSE], x2+DX2[BSE], x3+DX3[BSE], BSE);
+	  distributionsH->setDistributionInvForDirection(h[TSW], x1+DX1[BNE], x2+DX2[BNE], x3+DX3[BNE], BNE);
+	  distributionsH->setDistributionInvForDirection(h[BNW], x1+DX1[TSE], x2+DX2[TSE], x3+DX3[TSE], TSE);
+	  distributionsH->setDistributionInvForDirection(h[BSW], x1+DX1[TNE], x2+DX2[TNE], x3+DX3[TNE], TNE);
+
+      break;
+   case N:
+      f[N]   = ftemp[N]   * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*f[N]   ;
+      f[NE]  = ftemp[NE]  * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*f[NE]  ;
+      f[NW]  = ftemp[NW]  * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*f[NW]  ;
+      f[TN]  = ftemp[TN]  * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*f[TN]  ;
+      f[BN]  = ftemp[BN]  * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*f[BN]  ;
+      f[TNE] = ftemp[TNE] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*f[TNE] ;
+      f[TNW] = ftemp[TNW] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*f[TNW] ;
+      f[BNE] = ftemp[BNE] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*f[BNE] ;
+      f[BNW] = ftemp[BNW] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*f[BNW] ;
+
+      distributions->setDistributionInvForDirection(f[N],   x1+DX1[S],   x2+DX2[S],   x3+DX3[S],     S);
+      distributions->setDistributionInvForDirection(f[NE],  x1+DX1[SW],  x2+DX2[SW],  x3+DX3[SW],   SW);
+      distributions->setDistributionInvForDirection(f[NW],  x1+DX1[SE],  x2+DX2[SE],  x3+DX3[SE],   SE);
+      distributions->setDistributionInvForDirection(f[TN],  x1+DX1[BS],  x2+DX2[BS],  x3+DX3[BS],   BS);
+      distributions->setDistributionInvForDirection(f[BN],  x1+DX1[TS],  x2+DX2[TS],  x3+DX3[TS],   TS);
+      distributions->setDistributionInvForDirection(f[TNE], x1+DX1[BSW], x2+DX2[BSW], x3+DX3[BSW], BSW);
+      distributions->setDistributionInvForDirection(f[TNW], x1+DX1[BSE], x2+DX2[BSE], x3+DX3[BSE], BSE);
+      distributions->setDistributionInvForDirection(f[BNE], x1+DX1[TSW], x2+DX2[TSW], x3+DX3[TSW], TSW);
+      distributions->setDistributionInvForDirection(f[BNW], x1+DX1[TSE], x2+DX2[TSE], x3+DX3[TSE], TSE);
+
+	  h[N]   = htemp[N]   * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*h[N]   ;
+	  h[NE]  = htemp[NE]  * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*h[NE]  ;
+	  h[NW]  = htemp[NW]  * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*h[NW]  ;
+	  h[TN]  = htemp[TN]  * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*h[TN]  ;
+	  h[BN]  = htemp[BN]  * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*h[BN]  ;
+	  h[TNE] = htemp[TNE] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*h[TNE] ;
+	  h[TNW] = htemp[TNW] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*h[TNW] ;
+	  h[BNE] = htemp[BNE] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*h[BNE] ;
+	  h[BNW] = htemp[BNW] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2)*h[BNW] ;
+
+	  distributionsH->setDistributionInvForDirection(h[N],   x1+DX1[S],   x2+DX2[S],   x3+DX3[S],     S);
+	  distributionsH->setDistributionInvForDirection(h[NE],  x1+DX1[SW],  x2+DX2[SW],  x3+DX3[SW],   SW);
+	  distributionsH->setDistributionInvForDirection(h[NW],  x1+DX1[SE],  x2+DX2[SE],  x3+DX3[SE],   SE);
+	  distributionsH->setDistributionInvForDirection(h[TN],  x1+DX1[BS],  x2+DX2[BS],  x3+DX3[BS],   BS);
+	  distributionsH->setDistributionInvForDirection(h[BN],  x1+DX1[TS],  x2+DX2[TS],  x3+DX3[TS],   TS);
+	  distributionsH->setDistributionInvForDirection(h[TNE], x1+DX1[BSW], x2+DX2[BSW], x3+DX3[BSW], BSW);
+	  distributionsH->setDistributionInvForDirection(h[TNW], x1+DX1[BSE], x2+DX2[BSE], x3+DX3[BSE], BSE);
+	  distributionsH->setDistributionInvForDirection(h[BNE], x1+DX1[TSW], x2+DX2[TSW], x3+DX3[TSW], TSW);
+	  distributionsH->setDistributionInvForDirection(h[BNW], x1+DX1[TSE], x2+DX2[TSE], x3+DX3[TSE], TSE);
+
+      break;
+   case S:
+      f[S]   = ftemp[S]   * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[S]   ;
+      f[SE]  = ftemp[SE]  * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[SE]  ;
+      f[SW]  = ftemp[SW]  * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[SW]  ;
+      f[TS]  = ftemp[TS]  * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[TS]  ;
+      f[BS]  = ftemp[BS]  * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[BS]  ;
+      f[TSE] = ftemp[TSE] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[TSE] ;
+      f[TSW] = ftemp[TSW] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[TSW] ;
+      f[BSE] = ftemp[BSE] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[BSE] ;
+      f[BSW] = ftemp[BSW] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*f[BSW] ;
+
+      distributions->setDistributionInvForDirection(f[S],   x1+DX1[N],   x2+DX2[N],   x3+DX3[N],     N);
+      distributions->setDistributionInvForDirection(f[SE],  x1+DX1[NW],  x2+DX2[NW],  x3+DX3[NW],   NW);
+      distributions->setDistributionInvForDirection(f[SW],  x1+DX1[NE],  x2+DX2[NE],  x3+DX3[NE],   NE);
+      distributions->setDistributionInvForDirection(f[TS],  x1+DX1[BN],  x2+DX2[BN],  x3+DX3[BN],   BN);
+      distributions->setDistributionInvForDirection(f[BS],  x1+DX1[TN],  x2+DX2[TN],  x3+DX3[TN],   TN);
+      distributions->setDistributionInvForDirection(f[TSE], x1+DX1[BNW], x2+DX2[BNW], x3+DX3[BNW], BNW);
+      distributions->setDistributionInvForDirection(f[TSW], x1+DX1[BNE], x2+DX2[BNE], x3+DX3[BNE], BNE);
+      distributions->setDistributionInvForDirection(f[BSE], x1+DX1[TNW], x2+DX2[TNW], x3+DX3[TNW], TNW);
+      distributions->setDistributionInvForDirection(f[BSW], x1+DX1[TNE], x2+DX2[TNE], x3+DX3[TNE], TNE);
+
+	  h[S]   = htemp[S]   * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*h[S]   ;
+	  h[SE]  = htemp[SE]  * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*h[SE]  ;
+	  h[SW]  = htemp[SW]  * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*h[SW]  ;
+	  h[TS]  = htemp[TS]  * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*h[TS]  ;
+	  h[BS]  = htemp[BS]  * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*h[BS]  ;
+	  h[TSE] = htemp[TSE] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*h[TSE] ;
+	  h[TSW] = htemp[TSW] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*h[TSW] ;
+	  h[BSE] = htemp[BSE] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*h[BSE] ;
+	  h[BSW] = htemp[BSW] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2)*h[BSW] ;
+
+	  distributionsH->setDistributionInvForDirection(h[S],   x1+DX1[N],   x2+DX2[N],   x3+DX3[N],     N);
+	  distributionsH->setDistributionInvForDirection(h[SE],  x1+DX1[NW],  x2+DX2[NW],  x3+DX3[NW],   NW);
+	  distributionsH->setDistributionInvForDirection(h[SW],  x1+DX1[NE],  x2+DX2[NE],  x3+DX3[NE],   NE);
+	  distributionsH->setDistributionInvForDirection(h[TS],  x1+DX1[BN],  x2+DX2[BN],  x3+DX3[BN],   BN);
+	  distributionsH->setDistributionInvForDirection(h[BS],  x1+DX1[TN],  x2+DX2[TN],  x3+DX3[TN],   TN);
+	  distributionsH->setDistributionInvForDirection(h[TSE], x1+DX1[BNW], x2+DX2[BNW], x3+DX3[BNW], BNW);
+	  distributionsH->setDistributionInvForDirection(h[TSW], x1+DX1[BNE], x2+DX2[BNE], x3+DX3[BNE], BNE);
+	  distributionsH->setDistributionInvForDirection(h[BSE], x1+DX1[TNW], x2+DX2[TNW], x3+DX3[TNW], TNW);
+	  distributionsH->setDistributionInvForDirection(h[BSW], x1+DX1[TNE], x2+DX2[TNE], x3+DX3[TNE], TNE);
+
+      break;
+   case T:
+      f[T]   = ftemp[T]   * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*f[T]   ;
+      f[TE]  = ftemp[TE]  * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*f[TE]  ;
+      f[TW]  = ftemp[TW]  * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*f[TW]  ;
+      f[TN]  = ftemp[TN]  * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*f[TN]  ;
+      f[TS]  = ftemp[TS]  * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*f[TS]  ;
+      f[TNE] = ftemp[TNE] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*f[TNE] ;
+      f[TNW] = ftemp[TNW] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*f[TNW] ;
+      f[TSE] = ftemp[TSE] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*f[TSE] ;
+      f[TSW] = ftemp[TSW] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*f[TSW] ;
+
+      distributions->setDistributionInvForDirection(f[T],   x1+DX1[B],   x2+DX2[B],   x3+DX3[B],     B);
+      distributions->setDistributionInvForDirection(f[TE],  x1+DX1[BW],  x2+DX2[BW],  x3+DX3[BW],   BW);
+      distributions->setDistributionInvForDirection(f[TW],  x1+DX1[BE],  x2+DX2[BE],  x3+DX3[BE],   BE);
+      distributions->setDistributionInvForDirection(f[TN],  x1+DX1[BS],  x2+DX2[BS],  x3+DX3[BS],   BS);
+      distributions->setDistributionInvForDirection(f[TS],  x1+DX1[BN],  x2+DX2[BN],  x3+DX3[BN],   BN);
+      distributions->setDistributionInvForDirection(f[TNE], x1+DX1[BSW], x2+DX2[BSW], x3+DX3[BSW], BSW);
+      distributions->setDistributionInvForDirection(f[TNW], x1+DX1[BSE], x2+DX2[BSE], x3+DX3[BSE], BSE);
+      distributions->setDistributionInvForDirection(f[TSE], x1+DX1[BNW], x2+DX2[BNW], x3+DX3[BNW], BNW);
+      distributions->setDistributionInvForDirection(f[TSW], x1+DX1[BNE], x2+DX2[BNE], x3+DX3[BNE], BNE);
+
+	  h[T]   = htemp[T]   * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*h[T]   ;
+	  h[TE]  = htemp[TE]  * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*h[TE]  ;
+	  h[TW]  = htemp[TW]  * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*h[TW]  ;
+	  h[TN]  = htemp[TN]  * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*h[TN]  ;
+	  h[TS]  = htemp[TS]  * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*h[TS]  ;
+	  h[TNE] = htemp[TNE] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*h[TNE] ;
+	  h[TNW] = htemp[TNW] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*h[TNW] ;
+	  h[TSE] = htemp[TSE] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*h[TSE] ;
+	  h[TSW] = htemp[TSW] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3)*h[TSW] ;
+
+	  distributionsH->setDistributionInvForDirection(h[T],   x1+DX1[B],   x2+DX2[B],   x3+DX3[B],     B);
+	  distributionsH->setDistributionInvForDirection(h[TE],  x1+DX1[BW],  x2+DX2[BW],  x3+DX3[BW],   BW);
+	  distributionsH->setDistributionInvForDirection(h[TW],  x1+DX1[BE],  x2+DX2[BE],  x3+DX3[BE],   BE);
+	  distributionsH->setDistributionInvForDirection(h[TN],  x1+DX1[BS],  x2+DX2[BS],  x3+DX3[BS],   BS);
+	  distributionsH->setDistributionInvForDirection(h[TS],  x1+DX1[BN],  x2+DX2[BN],  x3+DX3[BN],   BN);
+	  distributionsH->setDistributionInvForDirection(h[TNE], x1+DX1[BSW], x2+DX2[BSW], x3+DX3[BSW], BSW);
+	  distributionsH->setDistributionInvForDirection(h[TNW], x1+DX1[BSE], x2+DX2[BSE], x3+DX3[BSE], BSE);
+	  distributionsH->setDistributionInvForDirection(h[TSE], x1+DX1[BNW], x2+DX2[BNW], x3+DX3[BNW], BNW);
+	  distributionsH->setDistributionInvForDirection(h[TSW], x1+DX1[BNE], x2+DX2[BNE], x3+DX3[BNE], BNE);
+
+      break;
+   case B:
+      f[B]   = ftemp[B]   * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[B]   ;
+      f[BE]  = ftemp[BE]  * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[BE]  ;
+      f[BW]  = ftemp[BW]  * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[BW]  ;
+      f[BN]  = ftemp[BN]  * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[BN]  ;
+      f[BS]  = ftemp[BS]  * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[BS]  ;
+      f[BNE] = ftemp[BNE] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[BNE] ;
+      f[BNW] = ftemp[BNW] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[BNW] ;
+      f[BSE] = ftemp[BSE] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[BSE] ;
+      f[BSW] = ftemp[BSW] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*f[BSW] ;
+
+      distributions->setDistributionInvForDirection(f[B],   x1+DX1[T],   x2+DX2[T],   x3+DX3[T],     T);
+      distributions->setDistributionInvForDirection(f[BE],  x1+DX1[TW],  x2+DX2[TW],  x3+DX3[TW],   TW);
+      distributions->setDistributionInvForDirection(f[BW],  x1+DX1[TE],  x2+DX2[TE],  x3+DX3[TE],   TE);
+      distributions->setDistributionInvForDirection(f[BN],  x1+DX1[TS],  x2+DX2[TS],  x3+DX3[TS],   TS);
+      distributions->setDistributionInvForDirection(f[BS],  x1+DX1[TN],  x2+DX2[TN],  x3+DX3[TN],   TN);
+      distributions->setDistributionInvForDirection(f[BNE], x1+DX1[TSW], x2+DX2[TSW], x3+DX3[TSW], TSW);
+      distributions->setDistributionInvForDirection(f[BNW], x1+DX1[TSE], x2+DX2[TSE], x3+DX3[TSE], TSE);
+      distributions->setDistributionInvForDirection(f[BSE], x1+DX1[TNW], x2+DX2[TNW], x3+DX3[TNW], TNW);
+      distributions->setDistributionInvForDirection(f[BSW], x1+DX1[TNE], x2+DX2[TNE], x3+DX3[TNE], TNE);
+
+	  h[B]   = htemp[B]   * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*h[B]   ;
+	  h[BE]  = htemp[BE]  * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*h[BE]  ;
+	  h[BW]  = htemp[BW]  * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*h[BW]  ;
+	  h[BN]  = htemp[BN]  * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*h[BN]  ;
+	  h[BS]  = htemp[BS]  * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*h[BS]  ;
+	  h[BNE] = htemp[BNE] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*h[BNE] ;
+	  h[BNW] = htemp[BNW] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*h[BNW] ;
+	  h[BSE] = htemp[BSE] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*h[BSE] ;
+	  h[BSW] = htemp[BSW] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3)*h[BSW] ;
+
+	  distributionsH->setDistributionInvForDirection(h[B],   x1+DX1[T],   x2+DX2[T],   x3+DX3[T],     T);
+	  distributionsH->setDistributionInvForDirection(h[BE],  x1+DX1[TW],  x2+DX2[TW],  x3+DX3[TW],   TW);
+	  distributionsH->setDistributionInvForDirection(h[BW],  x1+DX1[TE],  x2+DX2[TE],  x3+DX3[TE],   TE);
+	  distributionsH->setDistributionInvForDirection(h[BN],  x1+DX1[TS],  x2+DX2[TS],  x3+DX3[TS],   TS);
+	  distributionsH->setDistributionInvForDirection(h[BS],  x1+DX1[TN],  x2+DX2[TN],  x3+DX3[TN],   TN);
+	  distributionsH->setDistributionInvForDirection(h[BNE], x1+DX1[TSW], x2+DX2[TSW], x3+DX3[TSW], TSW);
+	  distributionsH->setDistributionInvForDirection(h[BNW], x1+DX1[TSE], x2+DX2[TSE], x3+DX3[TSE], TSE);
+	  distributionsH->setDistributionInvForDirection(h[BSE], x1+DX1[TNW], x2+DX2[TNW], x3+DX3[TNW], TNW);
+	  distributionsH->setDistributionInvForDirection(h[BSW], x1+DX1[TNE], x2+DX2[TNE], x3+DX3[TNE], TNE);
+
+      break;
+   default:
+      UB_THROW(UbException(UB_EXARGS, "It isn't implemented non reflecting density boundary for this direction!"));
+   }
+}
+
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithmMultiphase.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithmMultiphase.h
new file mode 100644
index 0000000000000000000000000000000000000000..1a34c931dd87c46554ede2de27bbd1403d85424e
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithmMultiphase.h
@@ -0,0 +1,49 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 NonReflectingOutflowBCAlgorithmMultiphase.h
+//! \ingroup BoundarConditions
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#ifndef NonReflectingOutflowBCAlgorithmMultiphase_h__
+#define NonReflectingOutflowBCAlgorithmMultiphase_h__
+
+#include "BCAlgorithm.h"
+//! A class implements non reflecting outflow boundary condition for multiphase simulations
+class NonReflectingOutflowBCAlgorithmMultiphase : public BCAlgorithm
+{
+public:
+   NonReflectingOutflowBCAlgorithmMultiphase();
+   ~NonReflectingOutflowBCAlgorithmMultiphase();
+   SPtr<BCAlgorithm> clone();
+   void addDistributions(SPtr<DistributionArray3D> distributions);
+   void addDistributionsH(SPtr<DistributionArray3D> distributionsH);
+   void applyBC();
+};
+#endif // NonReflectingOutflowBCAlgorithmMultiphase_h__
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithmMultiphase.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithmMultiphase.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..436f67229dc6651915eeb7f9db9102508f9398ca
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithmMultiphase.cpp
@@ -0,0 +1,141 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 SlipBCAlgorithmMultiphase.cpp
+//! \ingroup BoundarConditions
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#include "SlipBCAlgorithmMultiphase.h"
+#include "DistributionArray3D.h"
+#include "BoundaryConditions.h"
+
+SlipBCAlgorithmMultiphase::SlipBCAlgorithmMultiphase()
+{
+   BCAlgorithm::type = BCAlgorithm::SlipBCAlgorithm;
+   BCAlgorithm::preCollision = false;
+}
+//////////////////////////////////////////////////////////////////////////
+SlipBCAlgorithmMultiphase::~SlipBCAlgorithmMultiphase()
+{
+
+}
+//////////////////////////////////////////////////////////////////////////
+SPtr<BCAlgorithm> SlipBCAlgorithmMultiphase::clone()
+{
+   SPtr<BCAlgorithm> bc(new SlipBCAlgorithmMultiphase());
+   return bc;
+}
+//////////////////////////////////////////////////////////////////////////
+void SlipBCAlgorithmMultiphase::addDistributions(SPtr<DistributionArray3D> distributions)
+{
+   this->distributions = distributions;
+}
+//////////////////////////////////////////////////////////////////////////
+void SlipBCAlgorithmMultiphase::addDistributionsH(SPtr<DistributionArray3D> distributionsH)
+{
+	this->distributionsH = distributionsH;
+}
+//////////////////////////////////////////////////////////////////////////
+void SlipBCAlgorithmMultiphase::applyBC()
+{
+   LBMReal f[D3Q27System::ENDF+1];
+   LBMReal h[D3Q27System::ENDF+1];
+   LBMReal feq[D3Q27System::ENDF+1];
+   LBMReal heq[D3Q27System::ENDF+1];
+   distributions->getDistributionInv(f, x1, x2, x3);
+   distributionsH->getDistributionInv(h, x1, x2, x3);
+
+   LBMReal p1, vx1, vx2, vx3, phi, rho;
+
+   D3Q27System::calcDensity(h, phi);
+   //LBMReal collFactorM = collFactorL + (collFactorL - collFactorG)*(phi - phiH)/(phiH - phiL);
+
+
+   calcMacrosFct(f, p1, vx1, vx2, vx3);
+   D3Q27System::calcMultiphaseFeqVB(feq, p1, vx1, vx2, vx3);
+   D3Q27System::calcMultiphaseHeq(heq, phi, vx1, vx2, vx3); 
+
+   UbTupleFloat3 normale = bcPtr->getNormalVector();
+   LBMReal amp = vx1*val<1>(normale)+vx2*val<2>(normale)+vx3*val<3>(normale);
+
+   vx1 = vx1 - amp * val<1>(normale); //normale zeigt von struktur weg!
+   vx2 = vx2 - amp * val<2>(normale); //normale zeigt von struktur weg!
+   vx3 = vx3 - amp * val<3>(normale); //normale zeigt von struktur weg!
+
+   //rho = 1.0+drho*compressibleFactor;
+   rho = 1.0; // In multiphase model set to 1.0!
+
+   for (int fdir = D3Q27System::FSTARTDIR; fdir<=D3Q27System::FENDDIR; fdir++)
+   {
+      if (bcPtr->hasSlipBoundaryFlag(fdir))
+      {
+         //quadratic bounce back
+         const int invDir = D3Q27System::INVDIR[fdir];
+         LBMReal q = bcPtr->getQ(invDir);// m+m q=0 stabiler
+         //vx3=0;
+         LBMReal velocity = 0.0;
+         switch (invDir)
+         {
+         case D3Q27System::E: velocity = (UbMath::c4o9*(+vx1)); break;      //(2/cs^2)(=6)*rho_0(=1 bei imkompr)*wi*u*ei mit cs=1/sqrt(3)
+         case D3Q27System::W: velocity = (UbMath::c4o9*(-vx1)); break;      //z.B. aus paper manfred MRT LB models in three dimensions (2002)   
+         case D3Q27System::N: velocity = (UbMath::c4o9*(+vx2)); break;
+         case D3Q27System::S: velocity = (UbMath::c4o9*(-vx2)); break;
+         case D3Q27System::T: velocity = (UbMath::c4o9*(+vx3)); break;
+         case D3Q27System::B: velocity = (UbMath::c4o9*(-vx3)); break;
+         case D3Q27System::NE: velocity = (UbMath::c1o9*(+vx1+vx2)); break;
+         case D3Q27System::SW: velocity = (UbMath::c1o9*(-vx1-vx2)); break;
+         case D3Q27System::SE: velocity = (UbMath::c1o9*(+vx1-vx2)); break;
+         case D3Q27System::NW: velocity = (UbMath::c1o9*(-vx1+vx2)); break;
+         case D3Q27System::TE: velocity = (UbMath::c1o9*(+vx1             +vx3)); break;
+         case D3Q27System::BW: velocity = (UbMath::c1o9*(-vx1             -vx3)); break;
+         case D3Q27System::BE: velocity = (UbMath::c1o9*(+vx1             -vx3)); break;
+         case D3Q27System::TW: velocity = (UbMath::c1o9*(-vx1             +vx3)); break;
+         case D3Q27System::TN: velocity = (UbMath::c1o9*(+vx2+vx3)); break;
+         case D3Q27System::BS: velocity = (UbMath::c1o9*(-vx2-vx3)); break;
+         case D3Q27System::BN: velocity = (UbMath::c1o9*(+vx2-vx3)); break;
+         case D3Q27System::TS: velocity = (UbMath::c1o9*(-vx2+vx3)); break;
+         case D3Q27System::TNE: velocity = (UbMath::c1o36*(+vx1+vx2+vx3)); break;
+         case D3Q27System::BSW: velocity = (UbMath::c1o36*(-vx1-vx2-vx3)); break;
+         case D3Q27System::BNE: velocity = (UbMath::c1o36*(+vx1+vx2-vx3)); break;
+         case D3Q27System::TSW: velocity = (UbMath::c1o36*(-vx1-vx2+vx3)); break;
+         case D3Q27System::TSE: velocity = (UbMath::c1o36*(+vx1-vx2+vx3)); break;
+         case D3Q27System::BNW: velocity = (UbMath::c1o36*(-vx1+vx2-vx3)); break;
+         case D3Q27System::BSE: velocity = (UbMath::c1o36*(+vx1-vx2-vx3)); break;
+         case D3Q27System::TNW: velocity = (UbMath::c1o36*(-vx1+vx2+vx3)); break;
+         default: throw UbException(UB_EXARGS, "unknown error");
+         }
+         LBMReal fReturn = ((1.0-q)/(1.0+q))*((f[invDir]-feq[invDir])/(1.0-collFactor)+feq[invDir])+((q*(f[invDir]+f[fdir])-velocity*rho)/(1.0+q));
+         distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir);
+
+		 LBMReal hReturn = ((1.0-q)/(1.0+q))*((h[invDir]-heq[invDir])/(1.0-collFactorPh)+heq[invDir])+((q/(1.0+q))*(h[invDir]+h[fdir]));
+		 //LBMReal hReturn = h[invDir];
+		 distributionsH->setDistributionForDirection(hReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir);
+      }
+   }
+}
\ No newline at end of file
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithmMultiphase.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithmMultiphase.h
new file mode 100644
index 0000000000000000000000000000000000000000..3d89df9279291bf8cc626560ed58efbeb19d3371
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithmMultiphase.h
@@ -0,0 +1,51 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 SlipBCAlgorithmMultiphase.h
+//! \ingroup BoundarConditions
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#ifndef SlipBCAlgorithmMultiphase_h__
+#define SlipBCAlgorithmMultiphase_h__
+
+#include "BCAlgorithm.h"
+
+//! A class implements slip boundary condition for multiphase simulation
+class SlipBCAlgorithmMultiphase : public BCAlgorithm
+{
+public:
+   SlipBCAlgorithmMultiphase();
+   virtual ~SlipBCAlgorithmMultiphase();
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
+   void addDistributionsH(SPtr<DistributionArray3D> distributionsH) override;
+   void applyBC() override;
+
+};
+#endif // SlipBCAlgorithm_h__
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapterMultiphase.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapterMultiphase.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c288aff3e94df04f389c80204efb294d6cf22ebb
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapterMultiphase.cpp
@@ -0,0 +1,344 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 VelocityBCAdapterMultiphase.cpp
+//! \ingroup BoundarConditions
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#include "VelocityBCAdapterMultiphase.h"
+#include "basics/utilities/UbLogger.h"
+#include "basics/utilities/UbMath.h"
+#include "basics/utilities/UbTuple.h"
+
+using namespace std;
+
+
+VelocityBCAdapterMultiphase::VelocityBCAdapterMultiphase(const bool& vx1, const bool& vx2, const bool& vx3, const BCFunction& velVxBC)
+{
+   if(vx1) this->vx1BCs.push_back(velVxBC);
+   if(vx2) this->vx2BCs.push_back(velVxBC);
+   if(vx3) this->vx3BCs.push_back(velVxBC);
+   this->init();
+}
+/*==========================================================*/
+VelocityBCAdapterMultiphase::VelocityBCAdapterMultiphase(const bool& vx1, const bool& vx2, const bool& vx3, const mu::Parser& function, const LBMReal& phiBC, const double& startTime, const double& endTime )
+{
+   if(vx1) this->vx1BCs.push_back(BCFunction(function,startTime,endTime));
+   if(vx2) this->vx2BCs.push_back(BCFunction(function,startTime,endTime));
+   if(vx3) this->vx3BCs.push_back(BCFunction(function,startTime,endTime));
+   this->phiBC = phiBC;
+   this->init();
+   //this->init(vx3BCs);
+
+}
+/*==========================================================*/
+VelocityBCAdapterMultiphase::VelocityBCAdapterMultiphase(const bool& vx1, const bool& vx2, const bool& vx3, const mu::Parser& function1, const mu::Parser& function2, const mu::Parser& function3, const LBMReal& phiBC, const double& startTime, const double& endTime )
+{
+   if(vx1) this->vx1BCs.push_back(BCFunction(function1,startTime,endTime));
+   if(vx2) this->vx2BCs.push_back(BCFunction(function2,startTime,endTime));
+   if(vx3) this->vx3BCs.push_back(BCFunction(function3,startTime,endTime));
+   this->phiBC = phiBC;
+   this->init();
+}
+/*==========================================================*/
+VelocityBCAdapterMultiphase::VelocityBCAdapterMultiphase(const bool& vx1, const bool& vx2, const bool& vx3, const string& functionstring, const double& startTime, const double& endTime )
+{
+   if(vx1) this->vx1BCs.push_back(BCFunction(functionstring,startTime,endTime));
+   if(vx2) this->vx2BCs.push_back(BCFunction(functionstring,startTime,endTime));
+   if(vx3) this->vx3BCs.push_back(BCFunction(functionstring,startTime,endTime));
+   this->init();
+}
+/*==========================================================*/
+VelocityBCAdapterMultiphase::VelocityBCAdapterMultiphase(const BCFunction& velBC, bool x1Dir, bool x2Dir, bool x3Dir)
+{
+   if(x1Dir) this->vx1BCs.push_back(velBC);
+   if(x2Dir) this->vx2BCs.push_back(velBC);
+   if(x3Dir) this->vx3BCs.push_back(velBC);
+   this->init();
+}
+/*==========================================================*/
+VelocityBCAdapterMultiphase::VelocityBCAdapterMultiphase(const BCFunction& velVx1BC, const BCFunction& velVx2BC, const BCFunction& velVx3BC)
+{
+   if( velVx1BC.getEndTime()!=-Ub::inf ) this->vx1BCs.push_back(velVx1BC);
+   if( velVx2BC.getEndTime()!=-Ub::inf ) this->vx2BCs.push_back(velVx2BC);
+   if( velVx3BC.getEndTime()!=-Ub::inf ) this->vx3BCs.push_back(velVx3BC);
+   this->init();
+}
+/*==========================================================*/
+VelocityBCAdapterMultiphase::VelocityBCAdapterMultiphase(const vector< BCFunction >& velVx1BCs, const vector< BCFunction >& velVx2BCs, const vector< BCFunction >& velVx3BCs)
+{
+   this->vx1BCs = velVx1BCs;
+   this->vx2BCs = velVx2BCs;
+   this->vx3BCs = velVx3BCs;
+   this->init();
+}
+/*==========================================================*/
+VelocityBCAdapterMultiphase::VelocityBCAdapterMultiphase(const double& vx1, const double& vx1StartTime, const double& vx1EndTime,
+                                               const double& vx2, const double& vx2StartTime, const double& vx2EndTime,
+                                               const double& vx3, const double& vx3StartTime, const double& vx3EndTime )
+{
+   this->vx1BCs.push_back(BCFunction(vx1,vx1StartTime,vx1EndTime));
+   this->vx2BCs.push_back(BCFunction(vx2,vx2StartTime,vx2EndTime));
+   this->vx3BCs.push_back(BCFunction(vx3,vx3StartTime,vx3EndTime));
+   this->init();
+}
+/*==========================================================*/
+VelocityBCAdapterMultiphase::VelocityBCAdapterMultiphase(const string& vx1Function, const double& vx1StartTime, const double& vx1EndTime,
+                                               const string& vx2Function, const double& vx2StartTime, const double& vx2EndTime,
+                                               const string& vx3Function, const double& vx3StartTime, const double& vx3EndTime ) 
+{
+   if(vx1Function.size()) this->vx1BCs.push_back(BCFunction(vx1Function,vx1StartTime,vx1EndTime));
+   if(vx2Function.size()) this->vx2BCs.push_back(BCFunction(vx2Function,vx2StartTime,vx2EndTime));
+   if(vx3Function.size()) this->vx3BCs.push_back(BCFunction(vx3Function,vx3StartTime,vx3EndTime));
+   this->init();
+}
+/*==========================================================*/
+void VelocityBCAdapterMultiphase::setNewVelocities(const double& vx1, const double& vx1StartTime, const double& vx1EndTime,
+                                              const double& vx2, const double& vx2StartTime, const double& vx2EndTime,
+                                              const double& vx3, const double& vx3StartTime, const double& vx3EndTime )
+{
+   this->clear();
+   this->vx1BCs.push_back(BCFunction(vx1,vx1StartTime,vx1EndTime));
+   this->vx2BCs.push_back(BCFunction(vx2,vx2StartTime,vx2EndTime));
+   this->vx3BCs.push_back(BCFunction(vx3,vx3StartTime,vx3EndTime));
+   this->init();
+}
+/*==========================================================*/
+void VelocityBCAdapterMultiphase::init()
+{
+   this->unsetTimeDependent();
+   
+   this->timeStep = 0.0;
+
+   this->x1 = 0.0;
+   this->x2 = 0.0;
+   this->x3 = 0.0;
+
+   this->tmpVx1Function = NULL;
+   this->tmpVx2Function = NULL;
+   this->tmpVx3Function = NULL;
+
+   try //initilialization and validation of functions
+   {
+      this->init(vx1BCs);
+      this->init(vx2BCs);
+      this->init(vx3BCs);
+   }
+   catch(mu::Parser::exception_type& e){ stringstream error; error<<"mu::parser exception occurs, message("<<e.GetMsg()<<"), formula("<<e.GetExpr()+"), token("+e.GetToken()<<")"
+                                          <<", pos("<<e.GetPos()<<"), error code("<<e.GetCode(); throw UbException(error.str()); }
+   catch(...)                          { throw UbException(UB_EXARGS,"unknown exception" ); }
+}
+/*==========================================================*/
+void VelocityBCAdapterMultiphase::init(std::vector<BCFunction>& vxBCs)
+{
+   for(size_t pos=0; pos<vxBCs.size(); ++pos)
+   {
+      if( !(    UbMath::equal( BCFunction::INFCONST, vxBCs[pos].getEndTime() )
+             && UbMath::greaterEqual( this->timeStep,  vxBCs[pos].getStartTime()  ) ) )
+      {
+         this->setTimeDependent();
+      }
+	  
+      vxBCs[pos].getFunction().DefineVar("t" , &this->timeStep);
+      vxBCs[pos].getFunction().DefineVar("x1", &this->x1      );
+      vxBCs[pos].getFunction().DefineVar("x2", &this->x2      );
+      vxBCs[pos].getFunction().DefineVar("x3", &this->x3      );
+
+      vxBCs[pos].getFunction().Eval(); //<-- validation
+   }
+}
+/*==========================================================*/
+void VelocityBCAdapterMultiphase::init(const D3Q27Interactor* const& interactor, const double& time)
+{
+   this->timeStep       = time;
+   this->tmpVx1Function = this->tmpVx2Function = this->tmpVx3Function = NULL;
+
+   //aktuelle velocityfunction bestimmen
+   double maxEndtime = -Ub::inf;
+   
+   for(size_t pos=0; pos<vx1BCs.size(); ++pos)
+   {
+      if( UbMath::equal(vx1BCs[pos].getEndTime(),BCFunction::INFTIMEDEPENDENT) ) maxEndtime=Ub::inf;
+      maxEndtime = UbMath::max(maxEndtime,vx1BCs[pos].getStartTime(),vx1BCs[pos].getEndTime()); //startTime abfragen, da  INFCONST=-10
+      
+      if( UbMath::greaterEqual(this->timeStep,vx1BCs[pos].getStartTime()) ) 
+      {
+          if(   UbMath::lessEqual( this->timeStep     , vx1BCs[pos].getEndTime()     )
+             || UbMath::equal(     vx1BCs[pos].getEndTime(), (double)BCFunction::INFCONST        )
+             || UbMath::equal(     vx1BCs[pos].getEndTime(), (double)BCFunction::INFTIMEDEPENDENT)  )
+         {
+            tmpVx1Function = &vx1BCs[pos].getFunction();
+            break;
+         }
+      }
+   }
+   for(size_t pos=0; pos<vx2BCs.size(); ++pos)
+   {
+      if( UbMath::equal(vx2BCs[pos].getEndTime(),BCFunction::INFTIMEDEPENDENT)) maxEndtime=Ub::inf;
+      maxEndtime = UbMath::max(maxEndtime,vx2BCs[pos].getStartTime(),vx2BCs[pos].getEndTime()); //startTime abfragen, da  INFCONST=-10
+
+      if( UbMath::greaterEqual(this->timeStep,vx2BCs[pos].getStartTime()) ) 
+      {
+         if(   UbMath::lessEqual( this->timeStep     , vx2BCs[pos].getEndTime()      )
+            || UbMath::equal(     vx2BCs[pos].getEndTime(), (double)BCFunction::INFCONST         )
+            || UbMath::equal(     vx2BCs[pos].getEndTime(), (double)BCFunction::INFTIMEDEPENDENT )  )
+         {
+            tmpVx2Function = &vx2BCs[pos].getFunction();
+            break;
+         }
+      }
+   }
+   for(size_t pos=0; pos<vx3BCs.size(); ++pos)
+   {
+      if( UbMath::equal(vx3BCs[pos].getEndTime(),BCFunction::INFTIMEDEPENDENT)) maxEndtime=Ub::inf;
+      maxEndtime = UbMath::max(maxEndtime,vx3BCs[pos].getStartTime(),vx3BCs[pos].getEndTime()); //startTime abfragen, da  INFCONST=-10
+
+      if( UbMath::greaterEqual(this->timeStep,vx3BCs[pos].getStartTime()) ) 
+      {
+         if(   UbMath::lessEqual( this->timeStep     , vx3BCs[pos].getEndTime()      )
+            || UbMath::equal(     vx3BCs[pos].getEndTime(), (double)BCFunction::INFCONST         )
+            || UbMath::equal(     vx3BCs[pos].getEndTime(), (double)BCFunction::INFTIMEDEPENDENT )  )
+         {
+            tmpVx3Function = &vx3BCs[pos].getFunction();
+            break;
+         }
+      }
+   }
+
+   if( UbMath::greaterEqual(time,maxEndtime) ) 
+   {
+      if( !this->isTimePeriodic() ) this->unsetTimeDependent();
+      else //bei peridoic die interavalle neu setzen:
+      {
+         if( UbMath::equal(maxEndtime,BCFunction::INFCONST) )
+            for(size_t pos=0; pos<vx1BCs.size(); ++pos)
+            {
+               vx1BCs[pos].setStartTime( vx1BCs[pos].getStartTime() + timeStep );
+               vx1BCs[pos].setEndTime( vx1BCs[pos].getEndTime() + timeStep );
+            }
+            if( UbMath::equal(maxEndtime,BCFunction::INFCONST) )
+            for(size_t pos=0; pos<vx2BCs.size(); ++pos)
+            {
+               vx2BCs[pos].setStartTime( vx2BCs[pos].getStartTime() + timeStep );
+               vx2BCs[pos].setEndTime( vx2BCs[pos].getEndTime() + timeStep );
+            }
+         if( UbMath::equal(maxEndtime,BCFunction::INFCONST) )
+            for(size_t pos=0; pos<vx3BCs.size(); ++pos)
+            {
+               vx3BCs[pos].setStartTime( vx3BCs[pos].getStartTime() + timeStep );
+               vx3BCs[pos].setEndTime( vx3BCs[pos].getEndTime() + timeStep );
+            }
+        this->init(interactor,time);
+      }
+   }
+
+   UBLOG(logDEBUG4,"D3Q27VelocityBCAdapter::init(time="<<time<<") "
+                   <<", vx1= \""<<(tmpVx1Function ? tmpVx1Function->GetExpr() : "-")<<"\""
+                   <<", vx2= \""<<(tmpVx2Function ? tmpVx2Function->GetExpr() : "-")<<"\""
+                   <<", vx3= \""<<(tmpVx3Function ? tmpVx3Function->GetExpr() : "-")<<"\""
+                   <<", timedependent="<<boolalpha<<this->isTimeDependent()   );
+}
+/*==========================================================*/
+void VelocityBCAdapterMultiphase::update( const D3Q27Interactor* const& interactor, const double& time ) 
+{
+   this->init(interactor,time);
+}
+/*==========================================================*/
+void VelocityBCAdapterMultiphase::adaptBCForDirection( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& q, const int& fdirection, const double& time )
+{
+   bc->setVelocityBoundaryFlag(D3Q27System::INVDIR[fdirection],secondaryBcOption);
+   bc->setQ((float)q,fdirection);
+}
+/*==========================================================*/
+void VelocityBCAdapterMultiphase::adaptBC( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& time ) 
+{
+   this->setNodeVelocity(interactor,bc,worldX1,worldX2,worldX3,time);
+   bc->setBcAlgorithmType(algorithmType);
+}
+/*==========================================================*/
+void VelocityBCAdapterMultiphase::setNodeVelocity( const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& timestep) 
+{
+   //Geschwindigkeiten setzen
+   try
+   {
+      //PunktKoordinaten bestimmen
+      this->x1 = worldX1;
+      this->x2 = worldX2;
+      this->x3 = worldX3;
+      this->timeStep = timestep;
+
+      if(tmpVx1Function) bc->setBoundaryVelocityX1((float)tmpVx1Function->Eval());  
+      if(tmpVx2Function) bc->setBoundaryVelocityX2((float)tmpVx2Function->Eval());
+      if(tmpVx3Function) bc->setBoundaryVelocityX3((float)tmpVx3Function->Eval());
+	  bc->setBoundaryPhaseField(this->phiBC);
+   }
+   catch(mu::Parser::exception_type& e){ stringstream error; error<<"mu::parser exception occurs, message("<<e.GetMsg()<<"), formula("<<e.GetExpr()+"), token("+e.GetToken()<<")"
+                                         <<", pos("<<e.GetPos()<<"), error code("<<e.GetCode(); throw UbException(error.str()); }
+   catch(...)                          { throw UbException(UB_EXARGS,"unknown exception" ); }
+}
+/*==========================================================*/
+UbTupleDouble3 VelocityBCAdapterMultiphase::getVelocity(const double& x1, const double& x2, const double& x3, const double& timeStep) const
+{
+	double vx1 = 0.0;
+	double vx2 = 0.0;
+	double vx3 = 0.0;
+   this->x1 = x1;
+   this->x2 = x2;
+   this->x3 = x3;
+   this->timeStep = timeStep;
+	
+	if(tmpVx1Function) vx1 = tmpVx1Function->Eval();  
+   if(tmpVx2Function) vx2 = tmpVx2Function->Eval();
+   if(tmpVx3Function) vx3 = tmpVx3Function->Eval();
+    
+   return UbTupleDouble3(vx1,vx2,vx3);
+}
+/*==========================================================*/
+string VelocityBCAdapterMultiphase::toString()
+{
+   stringstream info;
+   info<<"D3Q27VelocityBCAdapter:\n";
+   info<<" #vx1-functions = "<<(int)vx1BCs.size()<<endl;
+   info<<" #vx2-functions = "<<(int)vx2BCs.size()<<endl;
+   info<<" #vx3-functions = "<<(int)vx3BCs.size()<<endl;
+   info<<" protected variables: x1, x2, x3, t"<<endl;
+   
+   const vector<BCFunction>* bcvecs[3] = { &vx1BCs, &vx2BCs, &vx3BCs };
+   for(int i=0; i<3; i++)
+   {
+      for(size_t pos=0; pos<bcvecs[i]->size(); ++pos)
+      {
+         info<<"\n   vx"<<(i+1)<<"-function nr."<<pos<<":"<<endl;
+         info<<(*bcvecs[i])[pos]<<endl;
+      }
+   }
+   return info.str();
+}
+
+
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapterMultiphase.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapterMultiphase.h
new file mode 100644
index 0000000000000000000000000000000000000000..29025a89d7f100f2f5c8de36cf772c47ebf90d07
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapterMultiphase.h
@@ -0,0 +1,169 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 VelocityBCAdapterMultiphase.h
+//! \ingroup BoundarConditions
+//! \author Hesameddin Safari
+//=======================================================================================
+#ifndef VelocityBCAdapterMultiphase_H
+#define VelocityBCAdapterMultiphase_H
+
+#include <iostream>
+#include <string>
+#include <sstream>
+#include <vector>
+
+#include <basics/utilities/UbInfinity.h>
+#include <basics/utilities/UbFileOutput.h>
+#include <basics/utilities/UbFileInput.h>
+
+class UbFileOutput;
+class UbFileInput;
+
+#include <BCAdapter.h>
+#include <BCFunction.h>
+
+//! \brief A class provides an interface for velocity boundary condition for multiphase simulation in grid generator.
+
+//! \details
+//! Example:
+//! \code{.cpp}  vector<BCFunction> vx1BCs,vx2BCs,vx3BCs;
+//!        vx1BCs.push_back(BCFunction(0.01 , 0  , 100) );   //t=[0  ..100[ -> vx1 = 0.01
+//!        vx1BCs.push_back(BCFunction(0.004, 100, 200) );   //t=[100..200[ -> vx1 = 0.004
+//!        vx1BCs.push_back(BCFunction(0.03 , 200, 400) );   //t=[200..400] -> vx1 = 0.03
+//!
+//!        vx2BCs.push_back(BCFunction(0.02 , 0  , 200) );   //t=[0  ..200[ -> vx2 = 0.02
+//!        vx2BCs.push_back(BCFunction(0.002, 200, 300) );   //t=[200..300[ -> vx2 = 0.002
+//!        vx2BCs.push_back(BCFunction(0.043, 300, 600) );   //t=[300..600] -> vx2 = 0.043
+//!
+//!        VelocityBCAdapter bcAdapter(vx1BCs,vx2BCs,vx3BCs);
+//!        bcAdapter.setTimePeriodic(); //->  t=[0  ..100[ -> vx1 = 0.01
+//!                                     //    t=[100..200[ -> vx1 = 0.004
+//!                                     //    t=[200..400[ -> vx1 = 0.03
+//!                                     //    t=[400..500[ -> vx1 = 0.01
+//!                                     //    t=[500..600[ -> vx1 = 0.004
+//!                                     //    t=[600..800[ -> vx1 = 0.03  ...
+//!                                     //    t=[0  ..200[ -> vx2 = 0.02
+//!                                     //    t=[200..300[ -> vx2 = 0.002
+//!                                     //    t=[300..600] -> vx2 = 0.043
+//!                                     //    t=[600..800[ -> vx2 = 0.02
+//!                                     //    t=[800..900[ -> vx2 = 0.002
+//!                                     //    t=[900..1200]-> vx2 = 0.043  ...
+//! \endcode
+//! Example of parabolic inflow:
+//! \code{.cpp}
+//!    mu::Parser fct;
+//!    fct.SetExpr("max(vmax*(1.0-4.0*((x2-x2_vmax)^2+(x3-x3_vmax)^2)/H^2),0.0)"); //paraboloid (with vmax for
+//!    (0/x2_vmax/x3_vmax) fct.DefineConst("x2Vmax", 0.0            ); //x2-Pos für vmax fct.DefineConst("x3Vmax", 0.0
+//!    ); //x3-Pos für vmax fct.DefineConst("H"     , diameterOfPipe); fct.DefineConst("vmax"  , vmax           );
+//!    VelocityBCAdapter velBC(true, false ,false ,fct, 0, BCFunction::INFCONST);
+//! \endcode 
+
+class VelocityBCAdapterMultiphase : public BCAdapter
+{
+public:
+   //constructors
+   VelocityBCAdapterMultiphase() { this->init(); }
+   
+   VelocityBCAdapterMultiphase(const bool& vx1, const bool& vx2, const bool& vx3, const BCFunction& velVxBC );
+
+   VelocityBCAdapterMultiphase(const bool& vx1, const bool& vx2, const bool& vx3, const mu::Parser& function, const LBMReal& phiBC, const double& startTime, const double& endTime  );
+
+   VelocityBCAdapterMultiphase(const bool& vx1, const bool& vx2, const bool& vx3, const mu::Parser& function1, const mu::Parser& function2, const mu::Parser& function3, const LBMReal& phiBC, const double& startTime, const double& endTime );
+   
+   VelocityBCAdapterMultiphase(const bool& vx1, const bool& vx2, const bool& vx3, const std::string& functionstring, const double& startTime, const double& endTime );
+
+   VelocityBCAdapterMultiphase(const BCFunction& velBC, bool x1Dir, bool x2Dir, bool x3Dir);
+
+   VelocityBCAdapterMultiphase(const BCFunction& velVx1BC, const BCFunction& velVx2BC, const BCFunction& velVx3BC);
+
+   VelocityBCAdapterMultiphase(const std::vector< BCFunction >& velVx1BCs, const std::vector< BCFunction >& velVx2BCs, const std::vector< BCFunction >& velVx3BCs);
+
+   VelocityBCAdapterMultiphase(const double& vx1, const double& vx1StartTime, const double& vx1EndTime,
+                          const double& vx2, const double& vx2StartTime, const double& vx2EndTime,
+                          const double& vx3, const double& vx3StartTime, const double& vx3EndTime);
+
+   VelocityBCAdapterMultiphase(const std::string& vx1Function, const double& vx1StartTime, const double& vx1EndTime,
+                          const std::string& vx2Function, const double& vx2StartTime, const double& vx2EndTime,
+                          const std::string& vx3Function, const double& vx3StartTime, const double& vx3EndTime ); 
+
+   //methods
+   void setTimePeriodic()    { (this->type |=   TIMEPERIODIC); }
+   void unsetTimePeriodic()  { (this->type &=  ~TIMEPERIODIC); }
+   bool isTimePeriodic()     { return ((this->type & TIMEPERIODIC) ==  TIMEPERIODIC); }
+
+   //folgendes ist fuer moving objects gedadacht... 
+   void setNewVelocities(const double& vx1, const double& vx1StartTime, const double& vx1EndTime,
+                         const double& vx2, const double& vx2StartTime, const double& vx2EndTime,
+                         const double& vx3, const double& vx3StartTime, const double& vx3EndTime);
+
+      
+   //------------- implements D3Q27BoundaryConditionAdapter ----- start
+   std::string toString();
+   
+   void init(const D3Q27Interactor* const& interactor, const double& time=0);
+   void update(const D3Q27Interactor* const& interactor, const double& time=0);
+
+   void adaptBCForDirection(const D3Q27Interactor &interactor, SPtr<BoundaryConditions> bc, const double &worldX1,
+                            const double &worldX2, const double &worldX3, const double &q, const int &fdirection,
+                            const double &time = 0);
+   void adaptBC(const D3Q27Interactor &interactor, SPtr<BoundaryConditions> bc, const double &worldX1,
+                const double &worldX2, const double &worldX3, const double &time = 0);
+
+   //------------- implements D3Q27BoundaryConditionAdapter ----- end
+
+   UbTupleDouble3 getVelocity(const double& x1, const double& x2, const double& x3, const double& timeStep) const;
+
+
+protected:
+   void init();
+   void init(std::vector<BCFunction>& vxBCs);
+
+   //time dependency wird automatisch ueber D3Q27BCFunction Intervalle ermittelt!
+   void setTimeDependent()   { (this->type |=   TIMEDEPENDENT); }
+   void unsetTimeDependent() { (this->type &=  ~TIMEDEPENDENT); }
+
+   void clear() { vx1BCs.clear(); vx2BCs.clear();  vx3BCs.clear(); this->init(); }
+   void setNodeVelocity(const D3Q27Interactor& interactor, SPtr<BoundaryConditions> bc, const double& worldX1, const double& worldX2, const double& worldX3, const double& timestep);
+
+private:
+   mutable mu::value_type x1, x2, x3;
+   mutable mu::value_type timeStep;
+
+   mu::Parser* tmpVx1Function;
+   mu::Parser* tmpVx2Function;
+   mu::Parser* tmpVx3Function;
+
+   std::vector<BCFunction> vx1BCs;
+   std::vector<BCFunction> vx2BCs;
+   std::vector<BCFunction> vx3BCs;
+
+   LBMReal phiBC;
+};
+
+#endif
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAlgorithmMultiphase.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAlgorithmMultiphase.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c840f1cb8489d58fe1726a5b599590d3663f079f
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAlgorithmMultiphase.cpp
@@ -0,0 +1,148 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 VelocityBCAlgorithmMultiphase.cpp
+//! \ingroup BoundarConditions
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#include "VelocityBCAlgorithmMultiphase.h"
+#include "DistributionArray3D.h"
+#include "BoundaryConditions.h"
+
+VelocityBCAlgorithmMultiphase::VelocityBCAlgorithmMultiphase()
+{
+   BCAlgorithm::type = BCAlgorithm::VelocityBCAlgorithm;
+   BCAlgorithm::preCollision = false;
+}
+//////////////////////////////////////////////////////////////////////////
+VelocityBCAlgorithmMultiphase::~VelocityBCAlgorithmMultiphase()
+{
+}
+//////////////////////////////////////////////////////////////////////////
+SPtr<BCAlgorithm> VelocityBCAlgorithmMultiphase::clone()
+{
+   SPtr<BCAlgorithm> bc(new VelocityBCAlgorithmMultiphase());
+   return bc;
+}
+//////////////////////////////////////////////////////////////////////////
+void VelocityBCAlgorithmMultiphase::addDistributions(SPtr<DistributionArray3D> distributions)
+{
+   this->distributions = distributions;
+}
+//////////////////////////////////////////////////////////////////////////
+void VelocityBCAlgorithmMultiphase::addDistributionsH(SPtr<DistributionArray3D> distributionsH)
+{
+	this->distributionsH = distributionsH;
+}
+//////////////////////////////////////////////////////////////////////////
+void VelocityBCAlgorithmMultiphase::applyBC()
+{
+   LBMReal f[D3Q27System::ENDF+1];
+   LBMReal h[D3Q27System::ENDF+1];
+   LBMReal feq[D3Q27System::ENDF+1];
+   LBMReal heq[D3Q27System::ENDF+1];
+   LBMReal htemp[D3Q27System::ENDF+1];
+   
+   distributions->getDistributionInv(f, x1, x2, x3);
+   distributionsH->getDistributionInv(h, x1, x2, x3);
+   LBMReal phi, rho, vx1, vx2, vx3, p1, phiBC;
+   
+   D3Q27System::calcDensity(h, phi);
+   
+   //LBMReal collFactorM = phi*collFactorL + (1-phi)*collFactorG;
+   //LBMReal collFactorM = collFactorL + (collFactorL - collFactorG)*(phi - phiH)/(phiH - phiL);
+
+   
+
+   //rho = phi + (1.0 - phi)*1.0/densityRatio;
+   LBMReal rhoH = 1.0;
+   LBMReal rhoL = 1.0/densityRatio;
+   rho = rhoH + (rhoH - rhoL)*(phi - phiH)/(phiH - phiL);
+   
+
+   calcMacrosFct(f, p1, vx1, vx2, vx3);
+   /*vx1/=(rho*c1o3);
+   vx2/=(rho*c1o3);
+   vx3/=(rho*c1o3);*/
+
+   //D3Q27System::calcMultiphaseFeq(feq, rho, p1, vx1, vx2, vx3);
+   D3Q27System::calcMultiphaseFeqVB(feq, p1, vx1, vx2, vx3);
+   D3Q27System::calcMultiphaseHeq(heq, phi, vx1, vx2, vx3);
+
+   ///// added for phase field //////
+
+   int nx1 = x1;
+   int nx2 = x2;
+   int nx3 = x3;
+   int direction = -1;
+   //flag points in direction of fluid
+   if      (bcPtr->hasVelocityBoundaryFlag(D3Q27System::E)) { nx1 -= 1; direction = D3Q27System::E; }
+   else if (bcPtr->hasVelocityBoundaryFlag(D3Q27System::W)) { nx1 += 1; direction = D3Q27System::W; }
+   else if (bcPtr->hasVelocityBoundaryFlag(D3Q27System::N)) { nx2 -= 1; direction = D3Q27System::N; }
+   else if (bcPtr->hasVelocityBoundaryFlag(D3Q27System::S)) { nx2 += 1; direction = D3Q27System::S; }
+   else if (bcPtr->hasVelocityBoundaryFlag(D3Q27System::T)) { nx3 -= 1; direction = D3Q27System::T; }
+   else if (bcPtr->hasVelocityBoundaryFlag(D3Q27System::B)) { nx3 += 1; direction = D3Q27System::B; }
+   else UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on velocity boundary..."));
+   
+   phiBC = bcPtr->getBoundaryPhaseField();
+   
+   D3Q27System::calcMultiphaseHeq(htemp, phiBC, vx1, vx2, vx3);
+
+   for (int fdir = D3Q27System::STARTF; fdir<=D3Q27System::ENDF; fdir++)
+   {
+	   if (bcPtr->hasVelocityBoundaryFlag(fdir))
+	   {
+		   LBMReal hReturn = htemp[fdir]+h[fdir]-heq[fdir];
+		   distributionsH->setDistributionForDirection(hReturn, nx1, nx2, nx3, fdir);
+	   }
+   }
+
+   //////////////////////////////////
+
+
+
+   
+   for (int fdir = D3Q27System::FSTARTDIR; fdir<=D3Q27System::FENDDIR; fdir++)
+   {
+      if (bcPtr->hasVelocityBoundaryFlag(fdir))
+      {
+         const int invDir = D3Q27System::INVDIR[fdir];
+         LBMReal q = bcPtr->getQ(invDir);// m+m q=0 stabiler
+         LBMReal velocity = bcPtr->getBoundaryVelocity(invDir);
+         //LBMReal fReturn = ((1.0-q)/(1.0+q))*((f[invDir]-feq[invDir])/(1.0-collFactor)+feq[invDir])+((q*(f[invDir]+f[fdir])-velocity*rho*c1o3)/(1.0+q));
+		 LBMReal fReturn = ((1.0-q)/(1.0+q))*((f[invDir]-feq[invDir])/(1.0-collFactor)+feq[invDir])+((q*(f[invDir]+f[fdir])-velocity)/(1.0+q));
+         distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir);
+
+		 //LBMReal hReturn = ((1.0-q)/(1.0+q))*((h[invDir]-heq[invDir])/(1.0-collFactorM)+heq[invDir])+((q/(1.0+q))*(h[invDir]+h[fdir]));
+		 //distributionsH->setDistributionForDirection(hReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir);
+      }
+   }
+
+}
+
diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAlgorithmMultiphase.h b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAlgorithmMultiphase.h
new file mode 100644
index 0000000000000000000000000000000000000000..869940099429c1bcf3f178644835e154c489e29f
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAlgorithmMultiphase.h
@@ -0,0 +1,51 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 VelocityBCAlgorithmMultiphase.h
+//! \ingroup BoundarConditions
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#ifndef VelocityBoundaryConditionMultiphase_h__
+#define VelocityBoundaryConditionMultiphase_h__
+
+#include "BCAlgorithm.h"
+//! A class implements velocity boundary condition for multiphase simulations
+class VelocityBCAlgorithmMultiphase : public BCAlgorithm
+{
+public:
+   VelocityBCAlgorithmMultiphase();
+   ~VelocityBCAlgorithmMultiphase();
+   SPtr<BCAlgorithm> clone() override;
+   void addDistributions(SPtr<DistributionArray3D> distributions) override;
+   void addDistributionsH(SPtr<DistributionArray3D> distributionsH) override;
+   void applyBC() override;
+};
+
+#endif // VelocityBoundaryConditionMultiphase_h__
+
diff --git a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullVectorConnector.cpp b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullVectorConnector.cpp
index 70d7c438e0b0a8eb32ffcf7b097ab3148d76e270..b9ec6597416e6db70bf02b52f32cce8c25737530 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullVectorConnector.cpp
+++ b/src/cpu/VirtualFluidsCore/Connectors/D3Q27ETFullVectorConnector.cpp
@@ -21,7 +21,7 @@ void D3Q27ETFullVectorConnector::init()
 
     int anz = 27;
     switch (sendDir) {
-        case D3Q27System::ZERO:
+        case D3Q27System::REST:
             UB_THROW(UbException(UB_EXARGS, "ZERO not allowed"));
             break;
         case D3Q27System::E:
diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullDirectConnector.cpp b/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullDirectConnector.cpp
similarity index 63%
rename from src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullDirectConnector.cpp
rename to src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullDirectConnector.cpp
index 39561bd819e86e8beece92e52766396c2b031d91..51d1e1a548a90cde3e18c3a6536da3ee324aef50 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullDirectConnector.cpp
+++ b/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullDirectConnector.cpp
@@ -1,4 +1,37 @@
-#include "ThixotropyFullDirectConnector.h"
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 TwoDistributionsFullDirectConnector.cpp
+//! \ingroup Connectors
+//! \author Konstantin Kutscher
+//=======================================================================================
+
+#include "TwoDistributionsFullDirectConnector.h"
 #include "LBMKernel.h"
 #include "D3Q27EsoTwist3DSplittedVector.h"
 #include "DataSet3D.h"
@@ -7,14 +40,14 @@
 
 using namespace std;
 
-ThixotropyFullDirectConnector::ThixotropyFullDirectConnector(SPtr<Block3D> from, SPtr<Block3D> to, int sendDir)
+TwoDistributionsFullDirectConnector::TwoDistributionsFullDirectConnector(SPtr<Block3D> from, SPtr<Block3D> to, int sendDir)
 	: LocalBlock3DConnector(from, to, sendDir)
 
 {
 
 }
 //////////////////////////////////////////////////////////////////////////
-void ThixotropyFullDirectConnector::init()
+void TwoDistributionsFullDirectConnector::init()
 {
 	maxX1 = (int)this->from.lock()->getKernel()->getDataSet()->getFdistributions()->getNX1() - 1;
 	maxX2 = (int)this->from.lock()->getKernel()->getDataSet()->getFdistributions()->getNX2() - 1;
@@ -24,31 +57,9 @@ void ThixotropyFullDirectConnector::init()
 	fTo = dynamicPointerCast<EsoTwist3D>(to.lock()->getKernel()->getDataSet()->getFdistributions());
 	hFrom = dynamicPointerCast<EsoTwist3D>(from.lock()->getKernel()->getDataSet()->getHdistributions());
 	hTo = dynamicPointerCast<EsoTwist3D>(to.lock()->getKernel()->getDataSet()->getHdistributions());
-
-	//celltypematrixFrom = from.lock()->getKernel()->getBCProcessor()->getCellsTypeArray();
-	//fillVolumeMatrixFrom = from.lock()->getKernel()->getBCProcessor()->getFillVolumeArray();
-	//normalMatrixFrom = from.lock()->getKernel()->getBCProcessor()->getNormalArray();
-	//changeInConcMatrixFrom = from.lock()->getKernel()->getBCProcessor()->getChangeInConcentrationArray();
-	//deltaVolumeMatrixFrom = from.lock()->getKernel()->getBCProcessor()->getChangeInVolumeArray();
-
-	//celltypematrixTo = to.lock()->getKernel()->getBCProcessor()->getCellsTypeArray();
-	//fillVolumeMatrixTo = to.lock()->getKernel()->getBCProcessor()->getFillVolumeArray();
-	//normalMatrixTo = to.lock()->getKernel()->getBCProcessor()->getNormalArray();
-	//changeInConcMatrixTo = to.lock()->getKernel()->getBCProcessor()->getChangeInConcentrationArray();
-	//deltaVolumeMatrixTo = to.lock()->getKernel()->getBCProcessor()->getChangeInVolumeArray();
-
-	//bcArrayFrom = from.lock()->getKernel()->getBCProcessor()->getBCArray();
-	//bcArrayTo = to.lock()->getKernel()->getBCProcessor()->getBCArray();
-
-	//bcArrayReactiveFrom = from.lock()->getKernel()->getBCProcessor()->getBCArrayReactive();
-	//bcArrayReactiveTo = to.lock()->getKernel()->getBCProcessor()->getBCArrayReactive();
-
-	// 	maxX1 = (int)this->from.lock()->getKernel()->getBCProcessor()->getCellsTypeArray()->getNX1()/* - 1*/;
-	// 	maxX2 = (int)this->from.lock()->getKernel()->getBCProcessor()->getCellsTypeArray()->getNX2()/* - 1*/;
-	// 	maxX3 = (int)this->from.lock()->getKernel()->getBCProcessor()->getCellsTypeArray()->getNX3()/* - 1*/;
 }
 //////////////////////////////////////////////////////////////////////////
-void ThixotropyFullDirectConnector::sendVectors()
+void TwoDistributionsFullDirectConnector::sendVectors()
 {
 	localDistributionsFromf = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(this->fFrom)->getLocalDistributions();
 	nonLocalDistributionsFromf = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(this->fFrom)->getNonLocalDistributions();
@@ -66,8 +77,6 @@ void ThixotropyFullDirectConnector::sendVectors()
 	nonLocalDistributionsToh = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(this->hTo)->getNonLocalDistributions();
 	zeroDistributionsToh = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(this->hTo)->getZeroDistributions();
 
-	//bool con = /*(from.lock()->getGlobalID()==11) &&*/ (to.lock()->getGlobalID() == 1);
-
 	//EAST
 	if (sendDir == D3Q27System::E)
 	{
@@ -76,7 +85,6 @@ void ThixotropyFullDirectConnector::sendVectors()
 			for (int x2 = 1; x2 < maxX2; x2++)
 			{
 				exchangeData(maxX1 - 1, x2, x3, 0, x2, x3);
-				//exchangeDataforCells(maxX1 - 1, x2, x3, 0, x2, x3);
 			}
 		}
 	}
@@ -88,7 +96,6 @@ void ThixotropyFullDirectConnector::sendVectors()
 			for (int x2 = 1; x2 < maxX2; x2++)
 			{
 				exchangeData(1, x2, x3, maxX1, x2, x3);
-				//exchangeDataforCells(1, x2, x3, maxX1, x2, x3);
 			}
 		}
 	}
@@ -100,7 +107,6 @@ void ThixotropyFullDirectConnector::sendVectors()
 			for (int x1 = 1; x1 < maxX1; x1++)
 			{
 				exchangeData(x1, maxX2 - 1, x3, x1, 0, x3);
-				//exchangeDataforCells(x1, maxX2 - 1, x3, x1, 0, x3);
 			}
 		}
 	}
@@ -112,7 +118,6 @@ void ThixotropyFullDirectConnector::sendVectors()
 			for (int x1 = 1; x1 < maxX1; x1++)
 			{
 				exchangeData(x1, 1, x3, x1, maxX2, x3);
-				//exchangeDataforCells(x1, 1, x3, x1, maxX2, x3);
 			}
 		}
 	}
@@ -125,7 +130,6 @@ void ThixotropyFullDirectConnector::sendVectors()
 			for (int x1 = 1; x1 < maxX1; x1++)
 			{
 				exchangeData(x1, x2, maxX3 - 1, x1, x2, 0);
-				//exchangeDataforCells(x1, x2, maxX3 - 1, x1, x2, 0);
 			}
 		}
 	}
@@ -137,7 +141,6 @@ void ThixotropyFullDirectConnector::sendVectors()
 			for (int x1 = 1; x1 < maxX1; x1++)
 			{
 				exchangeData(x1, x2, 1, x1, x2, maxX3);
-				//exchangeDataforCells(x1, x2, 1, x1, x2, maxX3);
 			}
 		}
 	}
@@ -147,8 +150,6 @@ void ThixotropyFullDirectConnector::sendVectors()
 		for (int x3 = 1; x3 < maxX3; x3++)
 		{
 			exchangeData(maxX1 - 1, maxX2 - 1, x3, 0, 0, x3);
-			//exchangeDataforCells(maxX1 - 1, maxX2 - 1, x3, 0, 0, x3);
-
 		}
 	}
 	//NORTHWEST
@@ -157,7 +158,6 @@ void ThixotropyFullDirectConnector::sendVectors()
 		for (int x3 = 1; x3 < maxX3; x3++)
 		{
 			exchangeData(1, maxX2 - 1, x3, maxX1, 0, x3);
-			//exchangeDataforCells(1, maxX2 - 1, x3, maxX1, 0, x3);
 		}
 	}
 	//SOUTHWEST
@@ -166,8 +166,6 @@ void ThixotropyFullDirectConnector::sendVectors()
 		for (int x3 = 1; x3 < maxX3; x3++)
 		{
 			exchangeData(1, 1, x3, maxX1, maxX2, x3);
-			//exchangeDataforCells(1, 1, x3, maxX1, maxX2, x3);
-
 		}
 	}
 	//SOUTHEAST
@@ -176,115 +174,81 @@ void ThixotropyFullDirectConnector::sendVectors()
 		for (int x3 = 1; x3 < maxX3; x3++)
 		{
 			exchangeData(maxX1 - 1, 1, x3, 0, maxX2, x3);
-			//exchangeDataforCells(maxX1 - 1, 1, x3, 0, maxX2, x3);
-
 		}
 	}
 	else if (sendDir == D3Q27System::TE)
 		for (int x2 = 1; x2 < maxX2; x2++)
 		{
 			exchangeData(maxX1 - 1, x2, maxX3 - 1, 0, x2, 0);
-			//exchangeDataforCells(maxX1 - 1, x2, maxX3 - 1, 0, x2, 0);
-
 		}
 	else if (sendDir == D3Q27System::BW)
 		for (int x2 = 1; x2 < maxX2; x2++)
 		{
 			exchangeData(1, x2, 1, maxX1, x2, maxX3);
-			//exchangeDataforCells(1, x2, 1, maxX1, x2, maxX3);
-
 		}
 	else if (sendDir == D3Q27System::BE)
 		for (int x2 = 1; x2 < maxX2; x2++)
 		{
 			exchangeData(maxX1 - 1, x2, 1, 0, x2, maxX3);
-			//exchangeDataforCells(maxX1 - 1, x2, 1, 0, x2, maxX3);
-
 		}
 	else if (sendDir == D3Q27System::TW)
 		for (int x2 = 1; x2 < maxX2; x2++)
 		{
 			exchangeData(1, x2, maxX3 - 1, maxX1, x2, 0);
-			//exchangeDataforCells(1, x2, maxX3 - 1, maxX1, x2, 0);
-
 		}
 	else if (sendDir == D3Q27System::TN)
 		for (int x1 = 1; x1 < maxX1; x1++)
 		{
 			exchangeData(x1, maxX2 - 1, maxX3 - 1, x1, 0, 0);
-			//exchangeDataforCells(x1, maxX2 - 1, maxX3 - 1, x1, 0, 0);
-
 		}
 	else if (sendDir == D3Q27System::BS)
 		for (int x1 = 1; x1 < maxX1; x1++)
 		{
 			exchangeData(x1, 1, 1, x1, maxX2, maxX3);
-			//exchangeDataforCells(x1, 1, 1, x1, maxX2, maxX3);
-
 		}
 	else if (sendDir == D3Q27System::BN)
 		for (int x1 = 1; x1 < maxX1; x1++)
 		{
 			exchangeData(x1, maxX2 - 1, 1, x1, 0, maxX3);
-			//exchangeDataforCells(x1, maxX2 - 1, 1, x1, 0, maxX3);
-
 		}
 
 	else if (sendDir == D3Q27System::TS)
 		for (int x1 = 1; x1 < maxX1; x1++)
 		{
 			exchangeData(x1, 1, maxX3 - 1, x1, maxX2, 0);
-			//exchangeDataforCells(x1, 1, maxX3 - 1, x1, maxX2, 0);
-
 		}
 
 	else if (sendDir == D3Q27System::TSW)
 	{
 		exchangeData(1, 1, maxX3 - 1, maxX1, maxX2, 0);
-		//exchangeDataforCells(1, 1, maxX3 - 1, maxX1, maxX2, 0);
-
 	}
 	else if (sendDir == D3Q27System::TSE)
 	{
 		exchangeData(maxX1 - 1, 1, maxX3 - 1, 0, maxX2, 0);
-		//exchangeDataforCells(maxX1 - 1, 1, maxX3 - 1, 0, maxX2, 0);
-
 	}
 	else if (sendDir == D3Q27System::TNW)
 	{
 		exchangeData(1, maxX2 - 1, maxX3 - 1, maxX1, 0, 0);
-		//exchangeDataforCells(1, maxX2 - 1, maxX3 - 1, maxX1, 0, 0);
-
 	}
 	else if (sendDir == D3Q27System::TNE)
 	{
 		exchangeData(maxX1 - 1, maxX2 - 1, maxX3 - 1, 0, 0, 0);
-		//exchangeDataforCells(maxX1 - 1, maxX2 - 1, maxX3 - 1, 0, 0, 0);
-
 	}
 	else if (sendDir == D3Q27System::BSW)
 	{
 		exchangeData(1, 1, 1, maxX1, maxX2, maxX3);
-		//exchangeDataforCells(1, 1, 1, maxX1, maxX2, maxX3);
-
 	}
 	else if (sendDir == D3Q27System::BSE)
 	{
 		exchangeData(maxX1 - 1, 1, 1, 0, maxX2, maxX3);
-		//exchangeDataforCells(maxX1 - 1, 1, 1, 0, maxX2, maxX3);
-
 	}
 	else if (sendDir == D3Q27System::BNW)
 	{
 		exchangeData(1, maxX2 - 1, 1, maxX1, 0, maxX3);
-		//exchangeDataforCells(1, maxX2 - 1, 1, maxX1, 0, maxX3);
-
 	}
 	else if (sendDir == D3Q27System::BNE)
 	{
 		exchangeData(maxX1 - 1, maxX2 - 1, 1, 0, 0, maxX3);
-		//exchangeDataforCells(maxX1 - 1, maxX2 - 1, 1, 0, 0, maxX3);
-
 	}
 	else UB_THROW(UbException(UB_EXARGS, "unknown dir"));
 }
diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullDirectConnector.h b/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullDirectConnector.h
similarity index 67%
rename from src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullDirectConnector.h
rename to src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullDirectConnector.h
index 1fecd5d0a9dd1b6c7921a2b7699cc8d9098df2e1..20c8e2a75d5ccd4a66a5848f07866224824c3d3a 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullDirectConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullDirectConnector.h
@@ -1,12 +1,38 @@
-/**
-* @file ThixotropyFullDirectConnector.h
-* @brief Connector send and receive full distribution in shared memory
-*
-* @author Hussein Alihussein
-* @date 28.11.2018
-*/
-#ifndef ThixotropyFullDirectConnector_H
-#define ThixotropyFullDirectConnector_H
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 TwoDistributionsFullDirectConnector.h
+//! \ingroup Connectors
+//! \author Konstantin Kutscher
+//=======================================================================================
+
+#ifndef TwoDistributionsFullDirectConnector_H
+#define TwoDistributionsFullDirectConnector_H
 
 #include "LocalBlock3DConnector.h"
 #include "Block3D.h"
@@ -19,38 +45,22 @@ class EsoTwist3D;
 
 //! \brief   Exchange data between blocks. 
 //! \details Connector send and receive full distributions between two blocks in shared memory.
-//! \author  Hussein Alihussein
 
-class ThixotropyFullDirectConnector : public LocalBlock3DConnector
+class TwoDistributionsFullDirectConnector : public LocalBlock3DConnector
 {
 public:
-	ThixotropyFullDirectConnector(SPtr<Block3D> from, SPtr<Block3D> to, int sendDir);
+	TwoDistributionsFullDirectConnector(SPtr<Block3D> from, SPtr<Block3D> to, int sendDir);
 	void init();
 	void sendVectors();
 	//void sendCellVectors();
 
 protected:
 	inline void exchangeData(int x1From, int x2From, int x3From, int x1To, int x2To, int x3To);
-	//inline void exchangeDataforCells(int x1From, int x2From, int x3From, int x1To, int x2To, int x3To);
-	//void ExchangeDatabcArray(SPtr<BCArray3D> bcArrayFrom, SPtr<BCArray3D> bcArrayTo, int x1From, int x2From, int x3From, int x1To, int x2To, int x3To);
-	//void ExchangeDatabcArrayReactive(BCArray3DReactivePtr bcArrayFrom, BCArray3DReactivePtr bcArrayTo, int x1From, int x2From, int x3From, int x1To, int x2To, int x3To);
 private:
 	int maxX1;
 	int maxX2;
 	int maxX3;
 
-	//CbArray3D<int>::CbArray3DPtr celltypematrixFrom;
-	//CbArray3D<double>::CbArray3DPtr fillVolumeMatrixFrom;
-	//CbArray4D<LBMReal, IndexerX4X3X2X1>::CbArray4DPtr normalMatrixFrom;
-	//CbArray3D<double>::CbArray3DPtr changeInConcMatrixFrom;
-	//CbArray3D<double>::CbArray3DPtr deltaVolumeMatrixFrom;
-
-	//CbArray3D<int>::CbArray3DPtr celltypematrixTo;
-	//CbArray3D<double>::CbArray3DPtr fillVolumeMatrixTo;
-	//CbArray4D<LBMReal, IndexerX4X3X2X1>::CbArray4DPtr normalMatrixTo;
-	//CbArray3D<double>::CbArray3DPtr changeInConcMatrixTo;
-	//CbArray3D<double>::CbArray3DPtr deltaVolumeMatrixTo;
-
 	CbArray4D <LBMReal, IndexerX4X3X2X1>::CbArray4DPtr localDistributionsFromf;
 	CbArray4D <LBMReal, IndexerX4X3X2X1>::CbArray4DPtr nonLocalDistributionsFromf;
 	CbArray3D <LBMReal, IndexerX3X2X1>::CbArray3DPtr   zeroDistributionsFromf;
@@ -69,17 +79,9 @@ private:
 
 	SPtr<EsoTwist3D>  fFrom, hFrom;
 	SPtr<EsoTwist3D>  fTo, hTo;
-
-	//BCArray3DPtr bcArrayFrom;
-	//BCArray3DPtr bcArrayTo;
-
-	//BCArray3DReactivePtr bcArrayReactiveFrom;
-	//BCArray3DReactivePtr bcArrayReactiveTo;
 };
-
-
 //////////////////////////////////////////////////////////////////////////
-inline void ThixotropyFullDirectConnector::exchangeData(int x1From, int x2From, int x3From, int x1To, int x2To, int x3To)
+inline void TwoDistributionsFullDirectConnector::exchangeData(int x1From, int x2From, int x3From, int x1To, int x2To, int x3To)
 {
 
 
@@ -144,79 +146,4 @@ inline void ThixotropyFullDirectConnector::exchangeData(int x1From, int x2From,
 
 	(*this->zeroDistributionsToh)(x1To, x2To, x3To) = (*this->zeroDistributionsFromh)(x1From, x2From, x3From);
 }
-//////////////////////////////////////////////////////////////////////////
-//inline void ThixotropyFullDirectConnector::exchangeDataforCells(int x1From, int x2From, int x3From, int x1To, int x2To, int x3To)
-//{
-//	//(*this->celltypematrixTo)( x1To, x2To, x3To) = (*this->celltypematrixFrom)( x1From, x2From, x3From);
-//
-//	(*this->celltypematrixTo)(x1To, x2To, x3To) = (*this->celltypematrixFrom)(x1From, x2From, x3From);
-//	(*this->fillVolumeMatrixTo)(x1To, x2To, x3To) = (*this->fillVolumeMatrixFrom)(x1From, x2From, x3From);
-//	(*this->changeInConcMatrixTo)(x1To, x2To, x3To) = (*this->changeInConcMatrixFrom)(x1From, x2From, x3From);
-//	(*this->deltaVolumeMatrixTo)(x1To, x2To, x3To) = (*this->deltaVolumeMatrixFrom)(x1From, x2From, x3From);
-//
-//	(*this->normalMatrixTo)(0, x1To, x2To, x3To) = (*this->normalMatrixFrom)(0, x1From, x2From, x3From);
-//	(*this->normalMatrixTo)(1, x1To, x2To, x3To) = (*this->normalMatrixFrom)(1, x1From, x2From, x3From);
-//	(*this->normalMatrixTo)(2, x1To, x2To, x3To) = (*this->normalMatrixFrom)(2, x1From, x2From, x3From);
-//	//bcArrayTo->bcindexmatrix(x1To, x2To, x3To) = bcArrayFrom->bcindexmatrix(x1From, x2From, x3From);
-//	ExchangeDatabcArray(bcArrayFrom, bcArrayTo, x1From, x2From, x3From, x1To, x2To, x3To);
-//	ExchangeDatabcArrayReactive(bcArrayReactiveFrom, bcArrayReactiveTo, x1From, x2From, x3From, x1To, x2To, x3To);
-//}
-////////////////////////////////////////////////////////////////////////////
-//inline void ThixotropyFullDirectConnector::ExchangeDatabcArray(BCArray3DPtr bcArrayFrom, BCArray3DPtr bcArrayTo, int x1From, int x2From, int x3From, int x1To, int x2To, int x3To)
-//{
-//	if (bcArrayFrom->isFluid(x1From, x2From, x3From))
-//	{
-//		if (bcArrayFrom->hasBC(x1From, x2From, x3From))
-//		{
-//			BoundaryConditionsPtr bc = bcArrayFrom->getBC(x1From, x2From, x3From);
-//
-//			bcArrayTo->setBC(x1To, x2To, x3To, bc);
-//
-//		}
-//		else if (bcArrayFrom->isFluidWithoutBC(x1From, x2From, x3From))
-//		{
-//			bcArrayTo->setFluid(x1To, x2To, x3To);
-//		}
-//	}
-//	else if (bcArrayFrom->isSolid(x1From, x2From, x3From))
-//	{
-//		bcArrayTo->setSolid(x1To, x2To, x3To);
-//	}
-//	else
-//	{
-//		bcArrayTo->setUndefined(x1To, x2To, x3To);
-//	}
-//
-//}
-////////////////////////////////////////////////////////////////////////////
-//inline void ThixotropyFullDirectConnector::ExchangeDatabcArrayReactive(BCArray3DReactivePtr bcArrayFrom, BCArray3DReactivePtr bcArrayTo, int x1From, int x2From, int x3From, int x1To, int x2To, int x3To)
-//{
-//	if (bcArrayFrom->isFluid(x1From, x2From, x3From))
-//	{
-//		if (bcArrayFrom->hasBC(x1From, x2From, x3From))
-//		{
-//			BoundaryConditionsPtr bc = bcArrayFrom->getBC(x1From, x2From, x3From);
-//
-//			bcArrayTo->setBC(x1To, x2To, x3To, bc);
-//
-//		}
-//		else if (bcArrayFrom->isFluidWithoutBC(x1From, x2From, x3From))
-//		{
-//			bcArrayTo->setFluid(x1To, x2To, x3To);
-//		}
-//	}
-//	else if (bcArrayFrom->isSolid(x1From, x2From, x3From))
-//	{
-//		bcArrayTo->setSolid(x1To, x2To, x3To);
-//	}
-//	else if (bcArrayFrom->isReactiveSolid(x1From, x2From, x3From))
-//	{
-//		bcArrayTo->setReactiveSolidType1(x1To, x2To, x3To);
-//	}
-//	else
-//	{
-//		bcArrayTo->setUndefined(x1To, x2To, x3To);
-//	}
-//
-//}
 #endif
\ No newline at end of file
diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullVectorConnector.cpp b/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullVectorConnector.cpp
similarity index 84%
rename from src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullVectorConnector.cpp
rename to src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullVectorConnector.cpp
index 89950b25e872fd07cd71847407926d3fbb413318..c34462be0e80ed1ca60f0dd9378c11eac023b6c2 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullVectorConnector.cpp
+++ b/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullVectorConnector.cpp
@@ -1,4 +1,37 @@
-#include "ThixotropyFullVectorConnector.h"
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 TwoDistributionsFullVectorConnector.cpp
+//! \ingroup Connectors
+//! \author Konstantin Kutscher
+//=======================================================================================
+
+#include "TwoDistributionsFullVectorConnector.h"
 #include "D3Q27EsoTwist3DSplittedVector.h"
 #include "LBMKernel.h"
 #include "Block3D.h"
@@ -7,7 +40,7 @@
 #include "DataSet3D.h"
 
 //////////////////////////////////////////////////////////////////////////
-ThixotropyFullVectorConnector::ThixotropyFullVectorConnector(SPtr<Block3D> block
+TwoDistributionsFullVectorConnector::TwoDistributionsFullVectorConnector(SPtr<Block3D> block
    , VectorTransmitterPtr sender
    , VectorTransmitterPtr receiver
    , int sendDir)
@@ -18,7 +51,7 @@ ThixotropyFullVectorConnector::ThixotropyFullVectorConnector(SPtr<Block3D> block
 
 }
 //////////////////////////////////////////////////////////////////////////
-void ThixotropyFullVectorConnector::init()
+void TwoDistributionsFullVectorConnector::init()
 {
    maxX1 = (int)block.lock()->getKernel()->getDataSet()->getFdistributions()->getNX1() - 1;
    maxX2 = (int)block.lock()->getKernel()->getDataSet()->getFdistributions()->getNX2() - 1;
@@ -30,7 +63,7 @@ void ThixotropyFullVectorConnector::init()
    int anz = 2*27;
    switch (sendDir)
    {
-   case D3Q27System::ZERO: UB_THROW(UbException(UB_EXARGS, "ZERO not allowed")); break;
+   case D3Q27System::REST: UB_THROW(UbException(UB_EXARGS, "ZERO not allowed")); break;
    case D3Q27System::E:
    case D3Q27System::W: sender->getData().resize(maxX2*maxX3*anz, 0.0);   break;
    case D3Q27System::N:
@@ -66,7 +99,7 @@ void ThixotropyFullVectorConnector::init()
    }
 }
 //////////////////////////////////////////////////////////////////////////
-void ThixotropyFullVectorConnector::fillSendVectors()
+void TwoDistributionsFullVectorConnector::fillSendVectors()
 {
    localDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(this->fDis)->getLocalDistributions();
    nonLocalDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(this->fDis)->getNonLocalDistributions();
@@ -257,7 +290,7 @@ void ThixotropyFullVectorConnector::fillSendVectors()
    else UB_THROW(UbException(UB_EXARGS, "unknown dir"));
 }
 ////////////////////////////////////////////////////////////////////////
-void ThixotropyFullVectorConnector::distributeReceiveVectors()
+void TwoDistributionsFullVectorConnector::distributeReceiveVectors()
 {
    /*e.g. connector sendet nach EAST --> empfaengt daten aus WEST ;-)*/
 
diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullVectorConnector.h b/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullVectorConnector.h
similarity index 80%
rename from src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullVectorConnector.h
rename to src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullVectorConnector.h
index 0b2bd66b9fc88c7e8adfdbc37c9bb569392f5dd2..27093e04eb1844c92d1b3d4477c150a40bbe5c9c 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullVectorConnector.h
+++ b/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullVectorConnector.h
@@ -1,5 +1,38 @@
-#ifndef ThixotropyFullVectorConnector_H
-#define ThixotropyFullVectorConnector_H
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 TwoDistributionsFullVectorConnector.h
+//! \ingroup Connectors
+//! \author Konstantin Kutscher
+//=======================================================================================
+
+#ifndef TwoDistributionsFullVectorConnector_H
+#define TwoDistributionsFullVectorConnector_H
 
 #include <vector>
 
@@ -18,10 +51,10 @@ class Block3D;
 //der vector wird via transmitter uebertragen
 //transmitter kann ein lokal, MPI, RCG, CTL oder was auch immer fuer ein
 //transmitter sein, der von Transmitter abgeleitet ist ;-)
-class ThixotropyFullVectorConnector : public RemoteBlock3DConnector
+class TwoDistributionsFullVectorConnector : public RemoteBlock3DConnector
 {
 public:
-   ThixotropyFullVectorConnector(SPtr<Block3D> block
+   TwoDistributionsFullVectorConnector(SPtr<Block3D> block
       , VectorTransmitterPtr sender
       , VectorTransmitterPtr receiver
       , int sendDir);
@@ -55,7 +88,7 @@ private:
 };
 
 //////////////////////////////////////////////////////////////////////////
-inline void ThixotropyFullVectorConnector::fillData(vector_type& sdata, int& index, int x1, int x2, int x3)
+inline void TwoDistributionsFullVectorConnector::fillData(vector_type& sdata, int& index, int x1, int x2, int x3)
 {
    sdata[index++] = (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3);
    sdata[index++] = (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3);
@@ -120,7 +153,7 @@ inline void ThixotropyFullVectorConnector::fillData(vector_type& sdata, int& ind
 
 }
 //////////////////////////////////////////////////////////////////////////
-inline void ThixotropyFullVectorConnector::distributeData(vector_type& rdata, int& index, int x1, int x2, int x3)
+inline void TwoDistributionsFullVectorConnector::distributeData(vector_type& rdata, int& index, int x1, int x2, int x3)
 {
    (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = rdata[index++];
    (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = rdata[index++];
diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.cpp b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.cpp
index d75c90c9dc74a19296950d58f08d05d8a982c791..bd6d46c2bdaeb72244578b4e3f3625cd2dfe7ff1 100644
--- a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.cpp
+++ b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.cpp
@@ -62,7 +62,7 @@ D3Q27EsoTwist3DSoA::D3Q27EsoTwist3DSoA(const size_t &nx1, const size_t &nx2, con
         new CbArray3D<LBMReal, IndexerX3X2X1>(nx1 + 1, nx2 + 1, nx3 + 1, value));
     d.BSW = CbArray3D<LBMReal, IndexerX3X2X1>::CbArray3DPtr(
         new CbArray3D<LBMReal, IndexerX3X2X1>(nx1 + 1, nx2 + 1, nx3 + 1, value));
-    d.ZERO =
+    d.REST =
         CbArray3D<LBMReal, IndexerX3X2X1>::CbArray3DPtr(new CbArray3D<LBMReal, IndexerX3X2X1>(nx1, nx2, nx3, value));
 }
 //////////////////////////////////////////////////////////////////////////
@@ -119,7 +119,7 @@ void D3Q27EsoTwist3DSoA::getDistribution(LBMReal *const f, size_t x1, size_t x2,
     f[D3Q27System::BNW] = (*d.BNW)(x1p, x2, x3p);
     f[D3Q27System::BNE] = (*d.BNE)(x1, x2, x3p);
 
-    f[D3Q27System::ZERO] = (*d.ZERO)(x1, x2, x3);
+    f[D3Q27System::REST] = (*d.REST)(x1, x2, x3);
 }
 //////////////////////////////////////////////////////////////////////////
 void D3Q27EsoTwist3DSoA::setDistribution(const LBMReal *const f, size_t x1, size_t x2, size_t x3)
@@ -156,7 +156,7 @@ void D3Q27EsoTwist3DSoA::setDistribution(const LBMReal *const f, size_t x1, size
     (*d.BNW)(x1p, x2, x3p)  = f[D3Q27System::INV_BNW];
     (*d.BNE)(x1, x2, x3p)   = f[D3Q27System::INV_BNE];
 
-    (*d.ZERO)(x1, x2, x3) = f[D3Q27System::ZERO];
+    (*d.REST)(x1, x2, x3) = f[D3Q27System::REST];
 }
 //////////////////////////////////////////////////////////////////////////
 void D3Q27EsoTwist3DSoA::getDistributionInv(LBMReal *const f, size_t x1, size_t x2, size_t x3)
@@ -189,7 +189,7 @@ void D3Q27EsoTwist3DSoA::getDistributionInv(LBMReal *const f, size_t x1, size_t
     f[D3Q27System::INV_BNW] = (*d.BNW)(x1 + 1, x2, x3 + 1);
     f[D3Q27System::INV_BNE] = (*d.BNE)(x1, x2, x3 + 1);
 
-    f[D3Q27System::ZERO] = (*d.ZERO)(x1, x2, x3);
+    f[D3Q27System::REST] = (*d.REST)(x1, x2, x3);
 }
 //////////////////////////////////////////////////////////////////////////
 void D3Q27EsoTwist3DSoA::setDistributionInv(const LBMReal *const f, size_t x1, size_t x2, size_t x3)
@@ -222,7 +222,7 @@ void D3Q27EsoTwist3DSoA::setDistributionInv(const LBMReal *const f, size_t x1, s
     //(*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1+1,x2,  x3+1) = f[D3Q27System::BNW];
     //(*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1,  x2,  x3+1) = f[D3Q27System::BNE];
 
-    //(*this->zeroDistributions)(x1,x2,x3) = f[D3Q27System::ZERO];
+    //(*this->zeroDistributions)(x1,x2,x3) = f[D3Q27System::REST];
 }
 //////////////////////////////////////////////////////////////////////////
 void D3Q27EsoTwist3DSoA::setDistributionForDirection(const LBMReal *const f, size_t x1, size_t x2, size_t x3,
@@ -281,8 +281,8 @@ void D3Q27EsoTwist3DSoA::setDistributionForDirection(const LBMReal *const f, siz
     //   (*this->localDistributions)(D3Q27System::ET_TSW,x1+1,x2+1,x3) = f[D3Q27System::BNE]; directionFlag=true;
     // if ((direction & EsoTwistD3Q27System::etTSW) == EsoTwistD3Q27System::etTSW)
     //   (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1,  x2,  x3+1) = f[D3Q27System::TSW]; directionFlag=true;
-    // if ((direction & EsoTwistD3Q27System::ZERO) == EsoTwistD3Q27System::ZERO)
-    //   (*this->zeroDistributions)(x1,x2,x3) = f[D3Q27System::ZERO]; directionFlag=true;
+    // if ((direction & EsoTwistD3Q27System::REST) == EsoTwistD3Q27System::REST)
+    //   (*this->zeroDistributions)(x1,x2,x3) = f[D3Q27System::REST]; directionFlag=true;
     //#ifdef _DEBUG
     //   if(!directionFlag)UB_THROW( UbException(UB_EXARGS, "Direction didn't find") );
     //#endif //DEBUG
@@ -370,7 +370,7 @@ void D3Q27EsoTwist3DSoA::setDistributionForDirection(LBMReal f, size_t x1, size_
     // case D3Q27System::TSW :
     //   (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1,  x2,  x3+1) = f;
     //   break;
-    // case D3Q27System::ZERO :
+    // case D3Q27System::REST :
     //   (*this->zeroDistributions)(x1,x2,x3) = f;
     //   break;
     // default:
@@ -437,8 +437,8 @@ void D3Q27EsoTwist3DSoA::setDistributionInvForDirection(const LBMReal *const f,
     //      (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1,  x2,  x3+1)= f[D3Q27System::BNE]; directionFlag=true;
     //   if ((direction & EsoTwistD3Q27System::etTSW) == EsoTwistD3Q27System::etTSW)
     //      (*this->localDistributions)(D3Q27System::ET_TSW,x1+1,x2+1,x3) = f[D3Q27System::TSW]; directionFlag=true;
-    //   if ((direction & EsoTwistD3Q27System::ZERO) == EsoTwistD3Q27System::ZERO)
-    //      (*this->zeroDistributions)(x1,x2,x3) = f[D3Q27System::ZERO]; directionFlag=true;
+    //   if ((direction & EsoTwistD3Q27System::REST) == EsoTwistD3Q27System::REST)
+    //      (*this->zeroDistributions)(x1,x2,x3) = f[D3Q27System::REST]; directionFlag=true;
     //#ifdef _DEBUG
     //   if(!directionFlag)UB_THROW( UbException(UB_EXARGS, "Direction didn't find") );
     //#endif //DEBUG
@@ -527,7 +527,7 @@ void D3Q27EsoTwist3DSoA::setDistributionInvForDirection(LBMReal f, size_t x1, si
     // case D3Q27System::TSW :
     //   (*this->localDistributions)(D3Q27System::ET_TSW,x1+1,x2+1,x3) = f;
     //   break;
-    // case D3Q27System::ZERO :
+    // case D3Q27System::REST :
     //   (*this->zeroDistributions)(x1,x2,x3) = f;
     //   break;
     // default:
@@ -592,7 +592,7 @@ LBMReal D3Q27EsoTwist3DSoA::getDistributionInvForDirection(size_t /*x1*/, size_t
     //   return (*this->localDistributions)(D3Q27System::ET_TSW,x1+1,x2+1,x3);
     // case D3Q27System::TSW :
     //   return (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1,  x2,  x3+1);
-    // case D3Q27System::ZERO :
+    // case D3Q27System::REST :
     //   return (*this->zeroDistributions)(x1,x2,x3);
     // default:
     //   UB_THROW( UbException(UB_EXARGS, "Direction didn't find") );
diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h
index 72951922a3580c9c4b00379e2eb6f79eefad4ef9..a3eb85e378051871a018066a5aabe58969790b73 100644
--- a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h
+++ b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h
@@ -35,7 +35,7 @@ struct Distributions {
     CbArray3D<LBMReal, IndexerX3X2X1>::CbArray3DPtr BNW;
     CbArray3D<LBMReal, IndexerX3X2X1>::CbArray3DPtr BSE;
     CbArray3D<LBMReal, IndexerX3X2X1>::CbArray3DPtr BSW;
-    CbArray3D<LBMReal, IndexerX3X2X1>::CbArray3DPtr ZERO;
+    CbArray3D<LBMReal, IndexerX3X2X1>::CbArray3DPtr REST;
 };
 
 class D3Q27EsoTwist3DSoA : public EsoTwist3D
diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.cpp b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.cpp
index 6f8a6e74664cf82a550b9000071d4f6beb9ebac2..5e762c68bab806ee7c892c000869bce8c76431af 100644
--- a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.cpp
+++ b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.cpp
@@ -84,7 +84,7 @@ void D3Q27EsoTwist3DSplittedVector::getDistribution(LBMReal *const f, size_t x1,
     f[D3Q27System::BNW] = (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1 + 1, x2, x3 + 1);
     f[D3Q27System::BNE] = (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1);
 
-    f[D3Q27System::ZERO] = (*this->zeroDistributions)(x1, x2, x3);
+    f[D3Q27System::REST] = (*this->zeroDistributions)(x1, x2, x3);
 }
 //////////////////////////////////////////////////////////////////////////
 void D3Q27EsoTwist3DSplittedVector::setDistribution(const LBMReal *const f, size_t x1, size_t x2, size_t x3)
@@ -117,7 +117,7 @@ void D3Q27EsoTwist3DSplittedVector::setDistribution(const LBMReal *const f, size
     (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1 + 1, x2, x3 + 1)     = f[D3Q27System::INV_BNW];
     (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1)         = f[D3Q27System::INV_BNE];
 
-    (*this->zeroDistributions)(x1, x2, x3) = f[D3Q27System::ZERO];
+    (*this->zeroDistributions)(x1, x2, x3) = f[D3Q27System::REST];
 }
 //////////////////////////////////////////////////////////////////////////
 void D3Q27EsoTwist3DSplittedVector::getDistributionInv(LBMReal *const f, size_t x1, size_t x2, size_t x3)
@@ -150,7 +150,7 @@ void D3Q27EsoTwist3DSplittedVector::getDistributionInv(LBMReal *const f, size_t
     f[D3Q27System::INV_BNW] = (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1 + 1, x2, x3 + 1);
     f[D3Q27System::INV_BNE] = (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1);
 
-    f[D3Q27System::ZERO] = (*this->zeroDistributions)(x1, x2, x3);
+    f[D3Q27System::REST] = (*this->zeroDistributions)(x1, x2, x3);
 }
 //////////////////////////////////////////////////////////////////////////
 void D3Q27EsoTwist3DSplittedVector::setDistributionInv(const LBMReal *const f, size_t x1, size_t x2, size_t x3)
@@ -183,7 +183,7 @@ void D3Q27EsoTwist3DSplittedVector::setDistributionInv(const LBMReal *const f, s
     (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1 + 1, x2, x3 + 1)     = f[D3Q27System::BNW];
     (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1)         = f[D3Q27System::BNE];
 
-    (*this->zeroDistributions)(x1, x2, x3) = f[D3Q27System::ZERO];
+    (*this->zeroDistributions)(x1, x2, x3) = f[D3Q27System::REST];
 }
 //////////////////////////////////////////////////////////////////////////
 void D3Q27EsoTwist3DSplittedVector::setDistributionForDirection(const LBMReal *const f, size_t x1, size_t x2, size_t x3,
@@ -241,8 +241,8 @@ void D3Q27EsoTwist3DSplittedVector::setDistributionForDirection(const LBMReal *c
         (*this->localDistributions)(D3Q27System::ET_TSW, x1 + 1, x2 + 1, x3) = f[D3Q27System::BNE];
     if ((direction & EsoTwistD3Q27System::etTSW) == EsoTwistD3Q27System::etTSW)
         (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1) = f[D3Q27System::TSW];
-    if ((direction & EsoTwistD3Q27System::ZERO) == EsoTwistD3Q27System::ZERO)
-        (*this->zeroDistributions)(x1, x2, x3) = f[D3Q27System::ZERO];
+    if ((direction & EsoTwistD3Q27System::REST) == EsoTwistD3Q27System::REST)
+        (*this->zeroDistributions)(x1, x2, x3) = f[D3Q27System::REST];
 }
 //////////////////////////////////////////////////////////////////////////
 void D3Q27EsoTwist3DSplittedVector::setDistributionForDirection(LBMReal f, size_t x1, size_t x2, size_t x3,
@@ -327,7 +327,7 @@ void D3Q27EsoTwist3DSplittedVector::setDistributionForDirection(LBMReal f, size_
         case D3Q27System::TSW:
             (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1) = f;
             break;
-        case D3Q27System::ZERO:
+        case D3Q27System::REST:
             (*this->zeroDistributions)(x1, x2, x3) = f;
             break;
         default:
@@ -390,8 +390,8 @@ void D3Q27EsoTwist3DSplittedVector::setDistributionInvForDirection(const LBMReal
         (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1) = f[D3Q27System::BNE];
     if ((direction & EsoTwistD3Q27System::etTSW) == EsoTwistD3Q27System::etTSW)
         (*this->localDistributions)(D3Q27System::ET_TSW, x1 + 1, x2 + 1, x3) = f[D3Q27System::TSW];
-    if ((direction & EsoTwistD3Q27System::ZERO) == EsoTwistD3Q27System::ZERO)
-        (*this->zeroDistributions)(x1, x2, x3) = f[D3Q27System::ZERO];
+    if ((direction & EsoTwistD3Q27System::REST) == EsoTwistD3Q27System::REST)
+        (*this->zeroDistributions)(x1, x2, x3) = f[D3Q27System::REST];
 }
 //////////////////////////////////////////////////////////////////////////
 void D3Q27EsoTwist3DSplittedVector::setDistributionInvForDirection(LBMReal f, size_t x1, size_t x2, size_t x3,
@@ -476,7 +476,7 @@ void D3Q27EsoTwist3DSplittedVector::setDistributionInvForDirection(LBMReal f, si
         case D3Q27System::TSW:
             (*this->localDistributions)(D3Q27System::ET_TSW, x1 + 1, x2 + 1, x3) = f;
             break;
-        case D3Q27System::ZERO:
+        case D3Q27System::REST:
             (*this->zeroDistributions)(x1, x2, x3) = f;
             break;
         default:
@@ -539,7 +539,7 @@ LBMReal D3Q27EsoTwist3DSplittedVector::getDistributionForDirection(size_t x1, si
             return (*this->localDistributions)(D3Q27System::ET_TSW, x1 + 1, x2 + 1, x3);
         case D3Q27System::BNE:
             return (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1);
-        case D3Q27System::ZERO:
+        case D3Q27System::REST:
             return (*this->zeroDistributions)(x1, x2, x3);
         default:
             UB_THROW(UbException(UB_EXARGS, "Direction didn't find"));
@@ -601,7 +601,7 @@ LBMReal D3Q27EsoTwist3DSplittedVector::getDistributionInvForDirection(size_t x1,
             return (*this->localDistributions)(D3Q27System::ET_TSW, x1 + 1, x2 + 1, x3);
         case D3Q27System::TSW:
             return (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1);
-        case D3Q27System::ZERO:
+        case D3Q27System::REST:
             return (*this->zeroDistributions)(x1, x2, x3);
         default:
             UB_THROW(UbException(UB_EXARGS, "Direction didn't find"));
diff --git a/src/cpu/VirtualFluidsCore/Data/DataSet3D.h b/src/cpu/VirtualFluidsCore/Data/DataSet3D.h
index 4930beeab491caf541c436a2e60b326b7cd54c64..9b8c36817c3fbebf4dd8acdbc8d6399acf99cd02 100644
--- a/src/cpu/VirtualFluidsCore/Data/DataSet3D.h
+++ b/src/cpu/VirtualFluidsCore/Data/DataSet3D.h
@@ -43,6 +43,7 @@
 using AverageValuesArray3D     = CbArray4D<LBMReal, IndexerX4X3X2X1>;
 using ShearStressValuesArray3D = CbArray4D<LBMReal, IndexerX4X3X2X1>;
 using RelaxationFactorArray3D  = CbArray3D<LBMReal, IndexerX3X2X1>;
+using PhaseFieldArray3D        = CbArray3D<LBMReal, IndexerX3X2X1>;
 
 //! A class provides an interface for data structures in the kernel.
 class DataSet3D
@@ -74,6 +75,10 @@ public:
 
     SPtr<RelaxationFactorArray3D> getRelaxationFactor() const;
     void setRelaxationFactor(SPtr<RelaxationFactorArray3D> values);
+
+    SPtr<PhaseFieldArray3D> getPhaseField() const;
+    void setPhaseField(SPtr<PhaseFieldArray3D> values);
+
 protected:
 private:
     SPtr<DistributionArray3D> fdistributions;
@@ -91,95 +96,50 @@ private:
 
     SPtr<RelaxationFactorArray3D> relaxationFactor;
 
+    SPtr<PhaseFieldArray3D> phaseField;
 };
 
-inline SPtr<DistributionArray3D> DataSet3D::getFdistributions() const
-{
-    return fdistributions;
-}
+inline SPtr<DistributionArray3D> DataSet3D::getFdistributions() const { return fdistributions; }
 
-inline void DataSet3D::setFdistributions(SPtr<DistributionArray3D> distributions)
-{
-    fdistributions = distributions;
-}
+inline void DataSet3D::setFdistributions(SPtr<DistributionArray3D> distributions) { fdistributions = distributions; }
 
-inline SPtr<DistributionArray3D> DataSet3D::getHdistributions() const
-{
-    return hdistributions;
-}
+inline SPtr<DistributionArray3D> DataSet3D::getHdistributions() const { return hdistributions; }
 
-inline void DataSet3D::setHdistributions(SPtr<DistributionArray3D> distributions)
-{
-    hdistributions = distributions;
-}
+inline void DataSet3D::setHdistributions(SPtr<DistributionArray3D> distributions) { hdistributions = distributions; }
 
-inline SPtr<AverageValuesArray3D> DataSet3D::getAverageValues() const
-{
-    return averageValues;
-}
+inline SPtr<AverageValuesArray3D> DataSet3D::getAverageValues() const { return averageValues; }
 
-inline void DataSet3D::setAverageValues(SPtr<AverageValuesArray3D> values)
-{
-    averageValues = values;
-}
+inline void DataSet3D::setAverageValues(SPtr<AverageValuesArray3D> values) { averageValues = values; }
 
-inline SPtr<AverageValuesArray3D> DataSet3D::getAverageDensity() const
-{
-    return averageDensity;
-}
+inline SPtr<AverageValuesArray3D> DataSet3D::getAverageDensity() const { return averageDensity; }
 
-inline void DataSet3D::setAverageDensity(SPtr<AverageValuesArray3D> values)
-{
-    averageDensity = values;
-}
+inline void DataSet3D::setAverageDensity(SPtr<AverageValuesArray3D> values) { averageDensity = values; }
 
-inline SPtr<AverageValuesArray3D> DataSet3D::getAverageVelocity() const
-{
-    return averageVelocity;
-}
+inline SPtr<AverageValuesArray3D> DataSet3D::getAverageVelocity() const { return averageVelocity; }
 
-inline void DataSet3D::setAverageVelocity(SPtr<AverageValuesArray3D> values)
-{
-    averageVelocity = values;
-}
+inline void DataSet3D::setAverageVelocity(SPtr<AverageValuesArray3D> values) { averageVelocity = values; }
 
-inline SPtr<AverageValuesArray3D> DataSet3D::getAverageFluctuations() const
-{
-    return averageFluktuations;
-}
+inline SPtr<AverageValuesArray3D> DataSet3D::getAverageFluctuations() const { return averageFluktuations; }
 
-inline void DataSet3D::setAverageFluctuations(SPtr<AverageValuesArray3D> values)
-{
-    averageFluktuations = values;
-}
+inline void DataSet3D::setAverageFluctuations(SPtr<AverageValuesArray3D> values) { averageFluktuations = values; }
 
-inline SPtr<AverageValuesArray3D> DataSet3D::getAverageTriplecorrelations() const
-{
-    return averageTriplecorrelations;
-}
+inline SPtr<AverageValuesArray3D> DataSet3D::getAverageTriplecorrelations() const { return averageTriplecorrelations; }
 
 inline void DataSet3D::setAverageTriplecorrelations(SPtr<AverageValuesArray3D> values)
 {
     averageTriplecorrelations = values;
 }
 
-inline SPtr<ShearStressValuesArray3D> DataSet3D::getShearStressValues() const
-{
-    return shearStressValues;
-}
+inline SPtr<ShearStressValuesArray3D> DataSet3D::getShearStressValues() const { return shearStressValues; }
 
-inline void DataSet3D::setShearStressValues(SPtr<ShearStressValuesArray3D> values)
-{
-    shearStressValues = values;
-}
+inline void DataSet3D::setShearStressValues(SPtr<ShearStressValuesArray3D> values) { shearStressValues = values; }
 
-inline SPtr<RelaxationFactorArray3D> DataSet3D::getRelaxationFactor() const
-{
-    return relaxationFactor;
-}
+inline SPtr<RelaxationFactorArray3D> DataSet3D::getRelaxationFactor() const { return relaxationFactor; }
+
+inline void DataSet3D::setRelaxationFactor(SPtr<RelaxationFactorArray3D> values) { relaxationFactor = values; }
+
+inline SPtr<PhaseFieldArray3D> DataSet3D::getPhaseField() const { return phaseField; }
+
+inline void DataSet3D::setPhaseField(SPtr<PhaseFieldArray3D> values) { phaseField = values; }
 
-inline void DataSet3D::setRelaxationFactor(SPtr<RelaxationFactorArray3D> values)
-{
-    relaxationFactor = values;
-}
 #endif
diff --git a/src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.cpp b/src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.cpp
index 1a13aa008ab49a48f1d16c7a2a71ea39dfb191ab..c456be678449744475a0ac6932850dceb0ee6f1c 100644
--- a/src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.cpp
+++ b/src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.cpp
@@ -35,7 +35,7 @@
 
 // index                                                              0   1   2   3   4   5  6   7   8    9  10  11  12
 // 13  14  15  16  17  18  19  20  21  22  23  24  25  26 f: E,  W,  N,  S,  T,  B, NE, SW, SE, NW, TE, BW, BE, TW, TN,
-// BS, BN, TS, TNE TNW TSE TSW BNE BNW BSE BSW ZERO
+// BS, BN, TS, TNE TNW TSE TSW BNE BNW BSE BSW REST
 const int EsoTwistD3Q27System::ETX1[EsoTwistD3Q27System::ENDF + 1] = { 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1,
                                                                        0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
 const int EsoTwistD3Q27System::ETX2[EsoTwistD3Q27System::ENDF + 1] = { 0, 0, 0,  1, 0, 0,  0, 1, 0, -1, 0, 0, 0, 0,
@@ -49,7 +49,7 @@ const int EsoTwistD3Q27System::etINVDIR[EsoTwistD3Q27System::ENDF + 1] = {
     D3Q27System::INV_TE,  D3Q27System::INV_BW,  D3Q27System::INV_BE,  D3Q27System::INV_TW,  D3Q27System::INV_TN,
     D3Q27System::INV_BS,  D3Q27System::INV_BN,  D3Q27System::INV_TS,  D3Q27System::INV_TNE, D3Q27System::INV_TNW,
     D3Q27System::INV_TSE, D3Q27System::INV_TSW, D3Q27System::INV_BNE, D3Q27System::INV_BNW, D3Q27System::INV_BSE,
-    D3Q27System::INV_BSW, D3Q27System::ZERO
+    D3Q27System::INV_BSW, D3Q27System::REST
 };
 
 const unsigned long int EsoTwistD3Q27System::etDIR[EsoTwistD3Q27System::ENDF + 1] = {
diff --git a/src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.h b/src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.h
index a9214673ec4b4a66a52fa53f9b625ead0180768b..21752cc48a84b02bc24cb7efe9e3c5912f476dfd 100644
--- a/src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.h
+++ b/src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.h
@@ -47,7 +47,7 @@ struct EsoTwistD3Q27System {
     const static int STARTDIR = D3Q27System::STARTDIR;
     const static int ENDDIR   = D3Q27System::ENDDIR;
 
-    static const int ZERO = D3Q27System::ZERO; /*f0 */
+    static const int REST = D3Q27System::REST; /*f0 */
     static const int E    = D3Q27System::E;    /*f1 */
     static const int W    = D3Q27System::W;    /*f2 */
     static const int N    = D3Q27System::N;    /*f3 */
diff --git a/src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp b/src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp
index 199d2cf87851160a4fc36e9a90ae2b199f1fce7e..1d37e4a09f5c45967a76eb7ff1abc7999788c8b9 100644
--- a/src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp
+++ b/src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp
@@ -1341,7 +1341,7 @@ void Grid3D::getNeighborBlocksForDirectionWithDirZero(int dir, int ix1, int ix2,
         case Grid3DSystem::BSW:
             this->getNeighborsBottomSouthWest(ix1, ix2, ix3, level, levelDepth, blocks);
             break;
-        case Grid3DSystem::ZERO:
+        case Grid3DSystem::REST:
             this->getNeighborsZero(ix1, ix2, ix3, level, levelDepth, blocks);
             break;
         default:
diff --git a/src/cpu/VirtualFluidsCore/Grid/Grid3DSystem.h b/src/cpu/VirtualFluidsCore/Grid/Grid3DSystem.h
index ee61b8f7327e76a9393d4d3caa13c3a796470c08..94c3bf2a75bf8e7137b08c113c1caa878d8c0896 100644
--- a/src/cpu/VirtualFluidsCore/Grid/Grid3DSystem.h
+++ b/src/cpu/VirtualFluidsCore/Grid/Grid3DSystem.h
@@ -71,7 +71,7 @@ static const int BNE          = 22;
 static const int BNW          = 23;
 static const int BSE          = 24;
 static const int BSW          = 25;
-static const int ZERO /*f0 */ = 26;
+static const int REST /*f0 */ = 26;
 
 static const int ENDDIR = 25;
 
diff --git a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp
index 365373c09053c3e3292276ac39908e6bd66a26fd..280562ebfaff7ccaa61055fa7caed0a4cac4d666 100644
--- a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp
@@ -87,7 +87,7 @@ void BGKLBMKernel::calculate(int /*step*/)
                     //////////////////////////////////////////////////////////////////////////
                     // read distribution
                     ////////////////////////////////////////////////////////////////////////////
-                    f[ZERO] = (*this->zeroDistributions)(x1, x2, x3);
+                    f[REST] = (*this->zeroDistributions)(x1, x2, x3);
 
                     f[E]   = (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3);
                     f[N]   = (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3);
@@ -118,7 +118,7 @@ void BGKLBMKernel::calculate(int /*step*/)
                     f[BNE] = (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p);
                     //////////////////////////////////////////////////////////////////////////
 
-                    drho = f[ZERO] + f[E] + f[W] + f[N] + f[S] + f[T] + f[B] + f[NE] + f[SW] + f[SE] + f[NW] + f[TE] +
+                    drho = f[REST] + f[E] + f[W] + f[N] + f[S] + f[T] + f[B] + f[NE] + f[SW] + f[SE] + f[NW] + f[TE] +
                            f[BW] + f[BE] + f[TW] + f[TN] + f[BS] + f[BN] + f[TS] + f[TNE] + f[TSW] + f[TSE] + f[TNW] +
                            f[BNE] + f[BSW] + f[BSE] + f[BNW];
 
@@ -133,7 +133,7 @@ void BGKLBMKernel::calculate(int /*step*/)
 
                     LBMReal cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3);
 
-                    feq[ZERO] = c8o27 * (drho - cu_sq);
+                    feq[REST] = c8o27 * (drho - cu_sq);
                     feq[E]    = c2o27 * (drho + 3.0 * (vx1) + c9o2 * (vx1) * (vx1)-cu_sq);
                     feq[W]    = c2o27 * (drho + 3.0 * (-vx1) + c9o2 * (-vx1) * (-vx1) - cu_sq);
                     feq[N]    = c2o27 * (drho + 3.0 * (vx2) + c9o2 * (vx2) * (vx2)-cu_sq);
@@ -170,7 +170,7 @@ void BGKLBMKernel::calculate(int /*step*/)
                                          c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq);
 
                     // Relaxation
-                    f[ZERO] += (feq[ZERO] - f[ZERO]) * collFactor;
+                    f[REST] += (feq[REST] - f[REST]) * collFactor;
                     f[E] += (feq[E] - f[E]) * collFactor;
                     f[W] += (feq[W] - f[W]) * collFactor;
                     f[N] += (feq[N] - f[N]) * collFactor;
@@ -210,7 +210,7 @@ void BGKLBMKernel::calculate(int /*step*/)
                         forcingX2 = muForcingX2.Eval();
                         forcingX3 = muForcingX3.Eval();
 
-                        f[ZERO] += 0.0;
+                        f[REST] += 0.0;
                         f[E] += 3.0 * c2o27 * (forcingX1);
                         f[W] += 3.0 * c2o27 * (-forcingX1);
                         f[N] += 3.0 * c2o27 * (forcingX2);
@@ -240,7 +240,7 @@ void BGKLBMKernel::calculate(int /*step*/)
                     }
                     //////////////////////////////////////////////////////////////////////////
 #ifdef PROOF_CORRECTNESS
-                    LBMReal rho_post = f[ZERO] + f[E] + f[W] + f[N] + f[S] + f[T] + f[B] + f[NE] + f[SW] + f[SE] +
+                    LBMReal rho_post = f[REST] + f[E] + f[W] + f[N] + f[S] + f[T] + f[B] + f[NE] + f[SW] + f[SE] +
                                        f[NW] + f[TE] + f[BW] + f[BE] + f[TW] + f[TN] + f[BS] + f[BN] + f[TS] + f[TNE] +
                                        f[TSW] + f[TSE] + f[TNW] + f[BNE] + f[BSW] + f[BSE] + f[BNW];
                     LBMReal dif = drho - rho_post;
@@ -284,7 +284,7 @@ void BGKLBMKernel::calculate(int /*step*/)
                     (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p)  = f[D3Q27System::INV_BNW];
                     (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p)   = f[D3Q27System::INV_BNE];
 
-                    (*this->zeroDistributions)(x1, x2, x3) = f[D3Q27System::ZERO];
+                    (*this->zeroDistributions)(x1, x2, x3) = f[D3Q27System::REST];
                     //////////////////////////////////////////////////////////////////////////
                 }
             }
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.cpp b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.cpp
index 04e9fe233bd42da3cfc7e156f080f57b9be505c1..036b35379ec218585a43a67d03f2a03deb79d6e5 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetInterpolationProcessor.cpp
@@ -497,7 +497,7 @@ void CompressibleOffsetInterpolationProcessor::calcInterpolatedNodeCF(LBMReal* f
    f[BSW]  = f_TNE  + xs*x_TNE  + ys*y_TNE  + zs*z_TNE  + xs*ys*xy_TNE  + xs*zs*xz_TNE  + ys*zs*yz_TNE  + feq[BSW];
    f[BSE]  = f_TNW  + xs*x_TNW  + ys*y_TNW  + zs*z_TNW  + xs*ys*xy_TNW  + xs*zs*xz_TNW  + ys*zs*yz_TNW  + feq[BSE];
    f[BNW]  = f_TSE  + xs*x_TSE  + ys*y_TSE  + zs*z_TSE  + xs*ys*xy_TSE  + xs*zs*xz_TSE  + ys*zs*yz_TSE  + feq[BNW];
-   f[ZERO] = f_ZERO + xs*x_ZERO + ys*y_ZERO + zs*z_ZERO                                                 + feq[ZERO];
+   f[REST] = f_ZERO + xs*x_ZERO + ys*y_ZERO + zs*z_ZERO                                                 + feq[REST];
 }
 //////////////////////////////////////////////////////////////////////////
 //Position SWB -0.25, -0.25, -0.25
@@ -691,7 +691,7 @@ void CompressibleOffsetInterpolationProcessor::calcInterpolatedNodeFC(LBMReal* f
    f[BNW]  = f_TSE  + feq[BNW];
    f[BSE]  = f_TNW  + feq[BSE];
    f[BSW]  = f_TNE  + feq[BSW];
-   f[ZERO] = f_ZERO + feq[ZERO];
+   f[REST] = f_ZERO + feq[REST];
 }
 //////////////////////////////////////////////////////////////////////////
 void CompressibleOffsetInterpolationProcessor::calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z, LBMReal& vx1, LBMReal& vx2, LBMReal& vx3)
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.cpp b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.cpp
index 54d3b32b26cea7f597b0c487668ca74cb99193ad..4dec637580458cfa77d151b810df04a853116de8 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetMomentsInterpolationProcessor.cpp
@@ -803,7 +803,7 @@ void CompressibleOffsetMomentsInterpolationProcessor::calcInterpolatedNodeCF(LBM
    f[BS]   = mfbaa;
    f[BN]   = mfbca;
    f[TS]   = mfbac;
-   f[ZERO] = mfbbb;
+   f[REST] = mfbbb;
    f[TNE]  = mfccc;
    f[TSE]  = mfcac;
    f[BNE]  = mfcca;
@@ -1251,7 +1251,7 @@ void CompressibleOffsetMomentsInterpolationProcessor::calcInterpolatedNodeFC(LBM
    f[BS]   = mfbaa;
    f[BN]   = mfbca;
    f[TS]   = mfbac;
-   f[ZERO] = mfbbb;
+   f[REST] = mfbbb;
    f[TNE]  = mfccc;
    f[TSE]  = mfcac;
    f[BNE]  = mfcca;
diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.cpp b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.cpp
index 3436dd58471605b08e6cbfdc676474c4418cedfe..7a19f156e4447acd9d4451ce4c1a1de7bf5c990d 100644
--- a/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/CompressibleOffsetSquarePressureInterpolationProcessor.cpp
@@ -798,7 +798,7 @@ void CompressibleOffsetSquarePressureInterpolationProcessor::calcInterpolatedNod
    f[BS]   = mfbaa;
    f[BN]   = mfbca;
    f[TS]   = mfbac;
-   f[ZERO] = mfbbb;
+   f[REST] = mfbbb;
    f[TNE]  = mfccc;
    f[TSE]  = mfcac;
    f[BNE]  = mfcca;
@@ -1251,7 +1251,7 @@ void CompressibleOffsetSquarePressureInterpolationProcessor::calcInterpolatedNod
    f[BS]   = mfbaa;
    f[BN]   = mfbca;
    f[TS]   = mfbac;
-   f[ZERO] = mfbbb;
+   f[REST] = mfbbb;
    f[TNE]  = mfccc;
    f[TSE]  = mfcac;
    f[BNE]  = mfcca;
diff --git a/src/cpu/VirtualFluidsCore/LBM/D3Q27System.cpp b/src/cpu/VirtualFluidsCore/LBM/D3Q27System.cpp
index 874a24fbb0e18dcd963048ca3dbe0548131acf56..5e88242fa23bdf37386f4f4d293ed7c2c33750ee 100644
--- a/src/cpu/VirtualFluidsCore/LBM/D3Q27System.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/D3Q27System.cpp
@@ -4,23 +4,12 @@ namespace D3Q27System
 {
 using namespace UbMath;
 
-// index             0   1   2   3   4   5  6   7   8    9  10  11  12  13  14  15  16  17  18//falsch
-// f:              ZERO, E,  W,  N,  S,  T,  B, NE, SW, SE, NW, TE, BW, BE, TW, TN, BS, BN, TS, TNE TNW TSE TSW BNE BNW
-// BSE BSW const int EX1[] = { 0,  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,
-// 1, -1,  1, -1 }; const int EX2[] = { 0,  0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,  1, 1,
-// -1, -1,  1,  1, -1, -1 }; const int EX3[] = { 0,  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,
-// 1,  1,  1,  1,  1, -1, -1, -1, -1 };
-
-// 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, TNE TNW TSE TSW BNE BNW BSE
-// BSW
+// index            0   1   2   3   4   5  6   7   8   9   10  11  12  13  14  15  16  17  18  20  21  22  23  24  25  26
+// f:               E,  W,  N,  S,  T,  B, NE, SW, SE, NW, TE, BW, BE, TW, TN, BS, BN, TS, TNE TNW TSE TSW BNE BNW BSE BSW
 const int DX1[] = { 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1 };
 const int DX2[] = { 0, 0, 1, -1, 0, 0, 1, -1, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 1, 1, -1, -1, 1, 1, -1, -1 };
 const int DX3[] = { 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 1, -1, -1, 1, 1, -1, -1, 1, 1, 1, 1, 1, -1, -1, -1, -1 };
 
-////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, TNE TNW TSE TSW BNE BNW
-///BSE BSW
 const double WEIGTH[] = { c2o27,  c2o27,  c2o27,  c2o27,  c2o27,  c2o27,  c1o54,  c1o54,  c1o54,
                           c1o54,  c1o54,  c1o54,  c1o54,  c1o54,  c1o54,  c1o54,  c1o54,  c1o54,
                           c1o216, c1o216, c1o216, c1o216, c1o216, c1o216, c1o216, c1o216, c8o27 };
@@ -29,181 +18,4 @@ const int INVDIR[] = { INV_E,   INV_W,   INV_N,   INV_S,   INV_T,   INV_B,   INV
                        INV_NW,  INV_TE,  INV_BW,  INV_BE,  INV_TW,  INV_TN,  INV_BS,  INV_BN, INV_TS,
                        INV_TNE, INV_TNW, INV_TSE, INV_TSW, INV_BNE, INV_BNW, INV_BSE, INV_BSW };
 
-//// The x,y,z component for each normalized direction
-//const double cNorm[3][ENDDIR] = { { double(DX1[0]),
-//                                    double(DX1[1]),
-//                                    double(DX1[2]),
-//                                    double(DX1[3]),
-//                                    double(DX1[4]),
-//                                    double(DX1[5]),
-//                                    double(DX1[6]) / std::sqrt(double(2)),
-//                                    double(DX1[7]) / std::sqrt(double(2)),
-//                                    double(DX1[8]) / std::sqrt(double(2)),
-//                                    double(DX1[9]) / std::sqrt(double(2)),
-//                                    double(DX1[10]) / std::sqrt(double(2)),
-//                                    double(DX1[11]) / std::sqrt(double(2)),
-//                                    double(DX1[12]) / std::sqrt(double(2)),
-//                                    double(DX1[13]) / std::sqrt(double(2)),
-//                                    double(DX1[14]),
-//                                    double(DX1[15]),
-//                                    double(DX1[16]),
-//                                    double(DX1[17]),
-//                                    double(DX1[18]) / std::sqrt(double(3)),
-//                                    double(DX1[19]) / std::sqrt(double(3)),
-//                                    double(DX1[20]) / std::sqrt(double(3)),
-//                                    double(DX1[21]) / std::sqrt(double(3)),
-//                                    double(DX1[22]) / std::sqrt(double(3)),
-//                                    double(DX1[23]) / std::sqrt(double(3)),
-//                                    double(DX1[24]) / std::sqrt(double(3)),
-//                                    double(DX1[25]) / std::sqrt(double(3)) },
-//                                  { double(DX2[0]),
-//                                    double(DX2[1]),
-//                                    double(DX2[2]),
-//                                    double(DX2[3]),
-//                                    double(DX2[4]),
-//                                    double(DX2[5]),
-//                                    double(DX2[6]) / std::sqrt(double(2)),
-//                                    double(DX2[7]) / std::sqrt(double(2)),
-//                                    double(DX2[8]) / std::sqrt(double(2)),
-//                                    double(DX2[9]) / std::sqrt(double(2)),
-//                                    double(DX2[10]),
-//                                    double(DX2[11]),
-//                                    double(DX2[12]),
-//                                    double(DX2[13]),
-//                                    double(DX2[14]) / std::sqrt(double(2)),
-//                                    double(DX2[15]) / std::sqrt(double(2)),
-//                                    double(DX2[16]) / std::sqrt(double(2)),
-//                                    double(DX2[17]) / std::sqrt(double(2)),
-//                                    double(DX2[18]) / std::sqrt(double(3)),
-//                                    double(DX2[19]) / std::sqrt(double(3)),
-//                                    double(DX2[20]) / std::sqrt(double(3)),
-//                                    double(DX2[21]) / std::sqrt(double(3)),
-//                                    double(DX2[22]) / std::sqrt(double(3)),
-//                                    double(DX2[23]) / std::sqrt(double(3)),
-//                                    double(DX2[24]) / std::sqrt(double(3)),
-//                                    double(DX2[25]) / std::sqrt(double(3)) },
-//                                  { double(DX3[0]),
-//                                    double(DX3[1]),
-//                                    double(DX3[2]),
-//                                    double(DX3[3]),
-//                                    double(DX3[4]),
-//                                    double(DX3[5]),
-//                                    double(DX3[6]),
-//                                    double(DX3[7]),
-//                                    double(DX3[8]),
-//                                    double(DX3[9]),
-//                                    double(DX3[10]) / std::sqrt(double(2)),
-//                                    double(DX3[11]) / std::sqrt(double(2)),
-//                                    double(DX3[12]) / std::sqrt(double(2)),
-//                                    double(DX3[13]) / std::sqrt(double(2)),
-//                                    double(DX3[14]) / std::sqrt(double(2)),
-//                                    double(DX3[15]) / std::sqrt(double(2)),
-//                                    double(DX3[16]) / std::sqrt(double(2)),
-//                                    double(DX3[17]) / std::sqrt(double(2)),
-//                                    double(DX3[18]) / std::sqrt(double(3)),
-//                                    double(DX3[19]) / std::sqrt(double(3)),
-//                                    double(DX3[20]) / std::sqrt(double(3)),
-//                                    double(DX3[21]) / std::sqrt(double(3)),
-//                                    double(DX3[22]) / std::sqrt(double(3)),
-//                                    double(DX3[23]) / std::sqrt(double(3)),
-//                                    double(DX3[24]) / std::sqrt(double(3)),
-//                                    double(DX3[25]) / std::sqrt(double(3)) } };
-
-} // namespace D3Q27System
-
-// const int FSTARTDIR = 0;
-// const int FENDDIR   = 25;   //D3Q27
-
-// const int STARTF = 0;
-// const int ENDF   = 26;   //D3Q27
-
-// const int EX1[ENDF+1];
-// const int EX2[ENDF+1];
-// const int EX3[ENDF+1];
-
-// const int STARTDIR = 0;
-// const int ENDDIR   = 26; //alle geometrischen richtungen
-
-// const int DX1[ENDDIR+1];
-// const int DX2[ENDDIR+1];
-// const int DX3[ENDDIR+1];
-
-// const int E    /*f1 */ = 0;
-// const int W    /*f2 */ = 1;
-// const int N    /*f3 */ = 2;
-// const int S    /*f4 */ = 3;
-// const int T    /*f5 */ = 4;
-// const int B    /*f6 */ = 5;
-// const int NE   /*f7 */ = 6;
-// const int SW   /*f8 */ = 7;
-// const int SE   /*f9 */ = 8;
-// const int NW   /*f10*/ = 9;
-// const int TE   /*f11*/ = 10;
-// const int BW   /*f12*/ = 11;
-// const int BE   /*f13*/ = 12;
-// const int TW   /*f14*/ = 13;
-// const int TN   /*f15*/ = 14;
-// const int BS   /*f16*/ = 15;
-// const int BN   /*f17*/ = 16;
-// const int TS   /*f18*/ = 17;
-// const int TNE          = 18;
-// const int TNW          = 19;
-// const int TSE          = 20;
-// const int TSW          = 21;
-// const int BNE          = 22;
-// const int BNW          = 23;
-// const int BSE          = 24;
-// const int BSW          = 25;
-// const int ZERO /*f0 */ = 26;
-
-// const int INV_E   = W;
-// const int INV_W   = E;
-// const int INV_N   = S;
-// const int INV_S   = N;
-// const int INV_T   = B;
-// const int INV_B   = T;
-// const int INV_NE  = SW;
-// const int INV_SW  = NE;
-// const int INV_SE  = NW;
-// const int INV_NW  = SE;
-// const int INV_TE  = BW;
-// const int INV_BW  = TE;
-// const int INV_BE  = TW;
-// const int INV_TW  = BE;
-// const int INV_TN  = BS;
-// const int INV_BS  = TN;
-// const int INV_BN  = TS;
-// const int INV_TS  = BN;
-// const int INV_TNE = BSW;
-// const int INV_TNW = BSE;
-// const int INV_TSE = BNW;
-// const int INV_TSW = BNE;
-// const int INV_BNE = TSW;
-// const int INV_BNW = TSE;
-// const int INV_BSE = TNW;
-// const int INV_BSW = TNE;
-
-// const int INVDIR[ENDDIR+1];
-
-// const int M_RHO     = 0;
-// const int M_EN      = 1;
-// const int M_EPS     = 2;
-// const int M_JX1     = 3;
-// const int M_QX1     = 4;
-// const int M_JX2     = 5;
-// const int M_QX2     = 6;
-// const int M_JX3     = 7;
-// const int M_QX3     = 8;
-// const int M_3PX1X1  = 9;
-// const int M_3PIX1X1 = 10;
-// const int M_PWW     = 11;
-// const int M_PIWW    = 12;
-// const int M_PX1X2   = 13;
-// const int M_PX2X3   = 14;
-// const int M_PX1X3   = 15;
-// const int M_MX1     = 16;
-// const int M_MX2     = 17;
-// const int M_MX3     = 18;
-
-// const int STARTM = 0;
-// const int ENDM   = 18;   //D3Q27
+} // namespace D3Q27System
\ No newline at end of file
diff --git a/src/cpu/VirtualFluidsCore/LBM/D3Q27System.h b/src/cpu/VirtualFluidsCore/LBM/D3Q27System.h
index 7b3e1e4ccbab55ba088bc8d6b3c4d62f56a6cc03..8f8c376459ce0b9bd4d0b7691655c173a6d4e149 100644
--- a/src/cpu/VirtualFluidsCore/LBM/D3Q27System.h
+++ b/src/cpu/VirtualFluidsCore/LBM/D3Q27System.h
@@ -35,1101 +35,1207 @@
 #define D3Q27SYSTEM_H
 
 #include <cmath>
-#include <string>
 #include <iostream>
+#include <string>
 
-#include <basics/utilities/UbException.h>
-#include <basics/utilities/UbTuple.h>
-#include <basics/utilities/UbMath.h>
-#include <basics/utilities/UbSystem.h>
-//#include "Patch3DSystem.h"
 #include "LBMSystem.h"
+#include "UbException.h"
+#include "UbMath.h"
 
-/*=========================================================================*/
-/*  D3Q27System                                                            */
-/*                                                                         */
-/**
-class for global system-functions
-<BR><BR>
-@author <A HREF="mailto:kucher@irmb.tu-bs.de">K. Kucher</A>
-@version 1.0 - 22.10.09
-*/
-
-/*
-usage: ...
-*/
-
+//! \brief namespace for global system-functions
 namespace D3Q27System
 {
-  //enum COLLISIONMODEL { UNDEFINED, INCOMPLBGKMODEL,   COMPLBGKMODEL,   COMPLBGKWTMODEL,   INCOMPLBGKLESMODEL, INCOMPLBGKNONNEWTONIANMODEL
-  //                               , INCOMPGLBEJTMODEL, COMPGLBEJTMODEL, COMPGLBEJTWTMODEL, INCOMPGLBEJTLESMODEL, INCOMPGLBEJTWALEMODEL
-  //                               , CASCADEDMODEL};
-  //
-  // #if defined(RCF_USE_SF_SERIALIZATION) && (CAB_RCF <= 903)
-  //    SF_SERIALIZE_ENUM(COLLISIONMODEL) //muss im namespace stehen, sonst funzt es nicht!
-  // #endif
-
-  ///*=====================================================================*/
-  //std::string toString(const COLLISIONMODEL& model);
-  ///*=====================================================================*/
-  //COLLISIONMODEL getCollModelByString(const std::string& str);
-  ///*=====================================================================*/
-
-  ///*=====================================================================*/
-  //static bool isCompModel(const COLLISIONMODEL& model)
-  //{
-  //   switch(model)
-  //   {
-  //   case COMPLBGKMODEL               : return true;
-  //   case COMPLBGKWTMODEL             : return true;
-  //   case COMPGLBEJTWTMODEL           : return true;
-  //   case COMPGLBEJTMODEL             : return true;
-  //   case CASCADEDMODEL               : return true;
-  //
-  //   case INCOMPLBGKMODEL             : return false;
-  //   case INCOMPGLBEJTMODEL           : return false;
-  //   case INCOMPLBGKLESMODEL          : return false;
-  //   case INCOMPGLBEJTLESMODEL        : return false;
-  //   case INCOMPGLBEJTWALEMODEL       : return false;
-  //   case INCOMPLBGKNONNEWTONIANMODEL : return false;
-
-  //   default: throw UbException(UB_EXARGS,"unknown model");
-  //   }
-  //}
-  ///*=====================================================================*/
-  //static bool isGLBEModel(const COLLISIONMODEL& model)
-  //{
-  //   switch(model)
-  //   {
-  //   case COMPGLBEJTWTMODEL           : return true;
-  //   case COMPGLBEJTMODEL             : return true;
-  //   case INCOMPGLBEJTMODEL           : return true;
-  //   case INCOMPGLBEJTLESMODEL        : return true;
-  //   case INCOMPGLBEJTWALEMODEL       : return false;
-
-  //   case COMPLBGKMODEL               : return false;
-  //   case COMPLBGKWTMODEL             : return false;
-  //   case INCOMPLBGKMODEL             : return false;
-  //   case INCOMPLBGKLESMODEL          : return false;
-  //   case INCOMPLBGKNONNEWTONIANMODEL : return false;
-
-  //   default: throw UbException(UB_EXARGS,"unknown model");
-  //   }
-  //}
-  //static bool isLESModel(const COLLISIONMODEL& model)
-  //{
-  //   switch(model)
-  //   {
-  //   case INCOMPGLBEJTLESMODEL        : return true;
-  //   case INCOMPLBGKLESMODEL          : return true;
-  //   case INCOMPGLBEJTWALEMODEL       : return true;
-  //
-  //   case COMPGLBEJTWTMODEL           : return false;
-  //   case COMPGLBEJTMODEL             : return false;
-  //   case INCOMPGLBEJTMODEL           : return false;
-  //   case COMPLBGKMODEL               : return false;
-  //   case COMPLBGKWTMODEL             : return false;
-  //   case INCOMPLBGKMODEL             : return false;
-  //   case INCOMPLBGKNONNEWTONIANMODEL : return false;
-
-  //   default: throw UbException(UB_EXARGS,"unknown model");
-  //   }
-  //}
-
-  //////////////////////////////////////////////////////////////////////////
-  //////////////////////////////////////////////////////////////////////////
-  //DIRECTION STUFF
-  static const int FSTARTDIR = 0;
-  static const int FENDDIR = 25;   //D3Q27
-
-  //static const int FSTARTDIR = 1;
-  //static const int FENDDIR   = 26;   //D3Q27
+//////////////////////////////////////////////////////////////////////////
+// DIRECTION STUFF
+static const int FSTARTDIR = 0;
+static const int FENDDIR   = 25; // D3Q27
 
-  static const int STARTF = 0;
-  static const int ENDF = 26;   //D3Q27
+static const int STARTF = 0;
+static const int ENDF   = 26; // D3Q27
 
-  //extern const int EX1[ENDF+1];
-  //extern const int EX2[ENDF+1];
-  //extern const int EX3[ENDF+1];
+static const int STARTDIR = 0;
+static const int ENDDIR   = 26; // all geometric directions
 
-  static const int STARTDIR = 0;
-  static const int ENDDIR = 26; //alle geometrischen richtungen
+extern const int DX1[ENDDIR + 1];
+extern const int DX2[ENDDIR + 1];
+extern const int DX3[ENDDIR + 1];
+extern const double WEIGTH[ENDDIR + 1];
 
-  extern const int DX1[ENDDIR + 1];
-  extern const int DX2[ENDDIR + 1];
-  extern const int DX3[ENDDIR + 1];
-  extern const double WEIGTH[ENDDIR + 1];
+extern const double cNorm[3][ENDDIR];
 
-  //static const int ZERO /*f0 */ = 0;
-  //static const int E    /*f1 */ = 1;
-  //static const int W    /*f2 */ = 2;
-  //static const int N    /*f3 */ = 3;
-  //static const int S    /*f4 */ = 4;
-  //static const int T    /*f5 */ = 5;
-  //static const int B    /*f6 */ = 6;
-  //static const int NE   /*f7 */ = 7;
-  //static const int SW   /*f8 */ = 8;
-  //static const int SE   /*f9 */ = 9;
-  //static const int NW   /*f10*/ = 10;
-  //static const int TE   /*f11*/ = 11;
-  //static const int BW   /*f12*/ = 12;
-  //static const int BE   /*f13*/ = 13;
-  //static const int TW   /*f14*/ = 14;
-  //static const int TN   /*f15*/ = 15;
-  //static const int BS   /*f16*/ = 16;
-  //static const int BN   /*f17*/ = 17;
-  //static const int TS   /*f18*/ = 18;
-  //static const int TNE          = 19;
-  //static const int TNW          = 20;
-  //static const int TSE          = 21;
-  //static const int TSW          = 22;
-  //static const int BNE          = 23;
-  //static const int BNW          = 24;
-  //static const int BSE          = 25;
-  //static const int BSW          = 26;
+static const int E    = 0;
+static const int W    = 1;
+static const int N    = 2;
+static const int S    = 3;
+static const int T    = 4;
+static const int B    = 5;
+static const int NE   = 6;
+static const int SW   = 7;
+static const int SE   = 8;
+static const int NW   = 9;
+static const int TE   = 10;
+static const int BW   = 11;
+static const int BE   = 12;
+static const int TW   = 13;
+static const int TN   = 14;
+static const int BS   = 15;
+static const int BN   = 16;
+static const int TS   = 17;
+static const int TNE  = 18;
+static const int TNW  = 19;
+static const int TSE  = 20;
+static const int TSW  = 21;
+static const int BNE  = 22;
+static const int BNW  = 23;
+static const int BSE  = 24;
+static const int BSW  = 25;
+static const int REST = 26;
 
-  static const int E    /*f1 */ = 0;
-  static const int W    /*f2 */ = 1;
-  static const int N    /*f3 */ = 2;
-  static const int S    /*f4 */ = 3;
-  static const int T    /*f5 */ = 4;
-  static const int B    /*f6 */ = 5;
-  static const int NE   /*f7 */ = 6;
-  static const int SW   /*f8 */ = 7;
-  static const int SE   /*f9 */ = 8;
-  static const int NW   /*f10*/ = 9;
-  static const int TE   /*f11*/ = 10;
-  static const int BW   /*f12*/ = 11;
-  static const int BE   /*f13*/ = 12;
-  static const int TW   /*f14*/ = 13;
-  static const int TN   /*f15*/ = 14;
-  static const int BS   /*f16*/ = 15;
-  static const int BN   /*f17*/ = 16;
-  static const int TS   /*f18*/ = 17;
-  static const int TNE = 18;
-  static const int TNW = 19;
-  static const int TSE = 20;
-  static const int TSW = 21;
-  static const int BNE = 22;
-  static const int BNW = 23;
-  static const int BSE = 24;
-  static const int BSW = 25;
-  static const int ZERO /*f0 */ = 26;
+static const int INV_E   = W;
+static const int INV_W   = E;
+static const int INV_N   = S;
+static const int INV_S   = N;
+static const int INV_T   = B;
+static const int INV_B   = T;
+static const int INV_NE  = SW;
+static const int INV_SW  = NE;
+static const int INV_SE  = NW;
+static const int INV_NW  = SE;
+static const int INV_TE  = BW;
+static const int INV_BW  = TE;
+static const int INV_BE  = TW;
+static const int INV_TW  = BE;
+static const int INV_TN  = BS;
+static const int INV_BS  = TN;
+static const int INV_BN  = TS;
+static const int INV_TS  = BN;
+static const int INV_TNE = BSW;
+static const int INV_TNW = BSE;
+static const int INV_TSE = BNW;
+static const int INV_TSW = BNE;
+static const int INV_BNE = TSW;
+static const int INV_BNW = TSE;
+static const int INV_BSE = TNW;
+static const int INV_BSW = TNE;
 
-  static const int INV_E = W;
-  static const int INV_W = E;
-  static const int INV_N = S;
-  static const int INV_S = N;
-  static const int INV_T = B;
-  static const int INV_B = T;
-  static const int INV_NE = SW;
-  static const int INV_SW = NE;
-  static const int INV_SE = NW;
-  static const int INV_NW = SE;
-  static const int INV_TE = BW;
-  static const int INV_BW = TE;
-  static const int INV_BE = TW;
-  static const int INV_TW = BE;
-  static const int INV_TN = BS;
-  static const int INV_BS = TN;
-  static const int INV_BN = TS;
-  static const int INV_TS = BN;
-  static const int INV_TNE = BSW;
-  static const int INV_TNW = BSE;
-  static const int INV_TSE = BNW;
-  static const int INV_TSW = BNE;
-  static const int INV_BNE = TSW;
-  static const int INV_BNW = TSE;
-  static const int INV_BSE = TNW;
-  static const int INV_BSW = TNE;
+extern const int INVDIR[ENDDIR + 1];
 
-  extern const int INVDIR[ENDDIR + 1];
+static const int ET_E   = 0;
+static const int ET_W   = 0;
+static const int ET_N   = 1;
+static const int ET_S   = 1;
+static const int ET_T   = 2;
+static const int ET_B   = 2;
+static const int ET_NE  = 3;
+static const int ET_SW  = 3;
+static const int ET_SE  = 4;
+static const int ET_NW  = 4;
+static const int ET_TE  = 5;
+static const int ET_BW  = 5;
+static const int ET_BE  = 6;
+static const int ET_TW  = 6;
+static const int ET_TN  = 7;
+static const int ET_BS  = 7;
+static const int ET_BN  = 8;
+static const int ET_TS  = 8;
+static const int ET_TNE = 9;
+static const int ET_BSW = 9;
+static const int ET_TNW = 10;
+static const int ET_BSE = 10;
+static const int ET_TSE = 11;
+static const int ET_BNW = 11;
+static const int ET_TSW = 12;
+static const int ET_BNE = 12;
 
-  static const int ET_E = 0;
-  static const int ET_W = 0;
-  static const int ET_N = 1;
-  static const int ET_S = 1;
-  static const int ET_T = 2;
-  static const int ET_B = 2;
-  static const int ET_NE = 3;
-  static const int ET_SW = 3;
-  static const int ET_SE = 4;
-  static const int ET_NW = 4;
-  static const int ET_TE = 5;
-  static const int ET_BW = 5;
-  static const int ET_BE = 6;
-  static const int ET_TW = 6;
-  static const int ET_TN = 7;
-  static const int ET_BS = 7;
-  static const int ET_BN = 8;
-  static const int ET_TS = 8;
-  static const int ET_TNE = 9;
-  static const int ET_BSW = 9;
-  static const int ET_TNW = 10;
-  static const int ET_BSE = 10;
-  static const int ET_TSE = 11;
-  static const int ET_BNW = 11;
-  static const int ET_TSW = 12;
-  static const int ET_BNE = 12;
-
-
-  //////////////////////////////////////////////////////////////////////////
-  //MACROSCOPIC VALUES
-  /*=====================================================================*/
-  static LBMReal getDensity(const LBMReal* const& f/*[27]*/)
-  {
-     return  ((f[TNE] + f[BSW]) + (f[TSE] + f[BNW])) + ((f[BSE] + f[TNW]) + (f[TSW] + f[BNE]))
-        + (((f[NE] + f[SW]) + (f[SE] + f[NW])) + ((f[TE] + f[BW]) + (f[BE] + f[TW]))
-           + ((f[BN] + f[TS]) + (f[TN] + f[BS]))) + ((f[E] + f[W]) + (f[N] + f[S])
-              + (f[T] + f[B])) + f[ZERO];
-  }
-  /*=====================================================================*/
-  //ACHTUNG: gilt nicht fuer alle modelle -> praedikat verwenden anstelle static! toDo
-  static LBMReal getPressure(const LBMReal* const& f/*[27]*/)
-  {
-     return  REAL_CAST(UbMath::c1o3) * getDensity(f);
-  }
-  /*=====================================================================*/
-  static LBMReal getIncompVelocityX1(const LBMReal* const& f/*[27]*/)
-  {
-     return ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[BSE] - f[TNW]) + (f[BNE] - f[TSW]))) +
-        (((f[BE] - f[TW]) + (f[TE] - f[BW])) + ((f[SE] - f[NW]) + (f[NE] - f[SW]))) +
-        (f[E] - f[W]));
-  }
-  /*=====================================================================*/
-  static LBMReal getIncompVelocityX2(const LBMReal* const& f/*[27]*/)
-  {
-     return ((((f[TNE] - f[BSW]) + (f[BNW] - f[TSE])) + ((f[TNW] - f[BSE]) + (f[BNE] - f[TSW]))) +
-        (((f[BN] - f[TS]) + (f[TN] - f[BS])) + ((f[NW] - f[SE]) + (f[NE] - f[SW]))) +
-        (f[N] - f[S]));
-  }
-  /*=====================================================================*/
-  static LBMReal getIncompVelocityX3(const LBMReal* const& f/*[27]*/)
-  {
-     return ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[TNW] - f[BSE]) + (f[TSW] - f[BNE]))) +
-        (((f[TS] - f[BN]) + (f[TN] - f[BS])) + ((f[TW] - f[BE]) + (f[TE] - f[BW]))) +
-        (f[T] - f[B]));
-  }
-  /*=====================================================================*/
-  static void calcDensity(const LBMReal* const& f/*[27]*/, LBMReal& rho)
-  {
-     rho = ((f[TNE] + f[BSW]) + (f[TSE] + f[BNW])) + ((f[BSE] + f[TNW]) + (f[TSW] + f[BNE]))
-        + (((f[NE] + f[SW]) + (f[SE] + f[NW])) + ((f[TE] + f[BW]) + (f[BE] + f[TW]))
-           + ((f[BN] + f[TS]) + (f[TN] + f[BS]))) + ((f[E] + f[W]) + (f[N] + f[S])
-              + (f[T] + f[B])) + f[ZERO];
-
-  }
-  /*=====================================================================*/
-  static void calcIncompVelocityX1(const LBMReal* const& f/*[27]*/, LBMReal& vx1)
-  {
-     vx1 = ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[BSE] - f[TNW]) + (f[BNE] - f[TSW]))) +
-        (((f[BE] - f[TW]) + (f[TE] - f[BW])) + ((f[SE] - f[NW]) + (f[NE] - f[SW]))) +
-        (f[E] - f[W]));
-  }
-  /*=====================================================================*/
-  static void calcIncompVelocityX2(const LBMReal* const& f/*[27]*/, LBMReal& vx2)
-  {
-     vx2 = ((((f[TNE] - f[BSW]) + (f[BNW] - f[TSE])) + ((f[TNW] - f[BSE]) + (f[BNE] - f[TSW]))) +
-        (((f[BN] - f[TS]) + (f[TN] - f[BS])) + ((f[NW] - f[SE]) + (f[NE] - f[SW]))) +
-        (f[N] - f[S]));
-  }
-  /*=====================================================================*/
-  static void calcIncompVelocityX3(const LBMReal* const& f/*[27]*/, LBMReal& vx3)
-  {
-     vx3 = ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[TNW] - f[BSE]) + (f[TSW] - f[BNE]))) +
-        (((f[TS] - f[BN]) + (f[TN] - f[BS])) + ((f[TW] - f[BE]) + (f[TE] - f[BW]))) +
-        (f[T] - f[B]));
-  }
-  /*=====================================================================*/
-  static LBMReal getCompVelocityX1(const LBMReal* const& f/*[27]*/)
-  {
-     return ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[BSE] - f[TNW]) + (f[BNE] - f[TSW]))) +
-        (((f[BE] - f[TW]) + (f[TE] - f[BW])) + ((f[SE] - f[NW]) + (f[NE] - f[SW]))) +
-        (f[E] - f[W])) / getDensity(f);
-  }
-  /*=====================================================================*/
-  static LBMReal getCompVelocityX2(const LBMReal* const& f/*[27]*/)
-  {
-     return ((((f[TNE] - f[BSW]) + (f[BNW] - f[TSE])) + ((f[TNW] - f[BSE]) + (f[BNE] - f[TSW]))) +
-        (((f[BN] - f[TS]) + (f[TN] - f[BS])) + ((f[NW] - f[SE]) + (f[NE] - f[SW]))) +
-        (f[N] - f[S])) / getDensity(f);
-  }
-  /*=====================================================================*/
-  static LBMReal getCompVelocityX3(const LBMReal* const& f/*[27]*/)
-  {
-     return ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[TNW] - f[BSE]) + (f[TSW] - f[BNE]))) +
-        (((f[TS] - f[BN]) + (f[TN] - f[BS])) + ((f[TW] - f[BE]) + (f[TE] - f[BW]))) +
-        (f[T] - f[B])) / getDensity(f);
-  }
-  /*=====================================================================*/
-  static void calcCompVelocityX1(const LBMReal* const& f/*[27]*/, LBMReal& vx1)
-  {
-     vx1 = ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[BSE] - f[TNW]) + (f[BNE] - f[TSW]))) +
-        (((f[BE] - f[TW]) + (f[TE] - f[BW])) + ((f[SE] - f[NW]) + (f[NE] - f[SW]))) +
-        (f[E] - f[W])) / getDensity(f);
-  }
-  /*=====================================================================*/
-  static void calcCompVelocityX2(const LBMReal* const& f/*[27]*/, LBMReal& vx2)
-  {
-     vx2 = ((((f[TNE] - f[BSW]) + (f[BNW] - f[TSE])) + ((f[TNW] - f[BSE]) + (f[BNE] - f[TSW]))) +
-        (((f[BN] - f[TS]) + (f[TN] - f[BS])) + ((f[NW] - f[SE]) + (f[NE] - f[SW]))) +
-        (f[N] - f[S])) / getDensity(f);
-  }
-  /*=====================================================================*/
-  static void calcCompVelocityX3(const LBMReal* const& f/*[27]*/, LBMReal& vx3)
-  {
-     vx3 = ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[TNW] - f[BSE]) + (f[TSW] - f[BNE]))) +
-        (((f[TS] - f[BN]) + (f[TN] - f[BS])) + ((f[TW] - f[BE]) + (f[TE] - f[BW]))) +
-        (f[T] - f[B])) / getDensity(f);
-  }
-  /*=====================================================================*/
-  static void calcIncompMacroscopicValues(const LBMReal* const& f/*[27]*/, LBMReal& rho, LBMReal& vx1, LBMReal& vx2, LBMReal& vx3)
-  {
-     D3Q27System::calcDensity(f, rho);
-     D3Q27System::calcIncompVelocityX1(f, vx1);
-     D3Q27System::calcIncompVelocityX2(f, vx2);
-     D3Q27System::calcIncompVelocityX3(f, vx3);
-  }
-
-  /*=====================================================================*/
-  static void calcCompMacroscopicValues(const LBMReal* const& f/*[27]*/, LBMReal& drho, LBMReal& vx1, LBMReal& vx2, LBMReal& vx3)
-  {
-     D3Q27System::calcDensity(f, drho);
-     D3Q27System::calcIncompVelocityX1(f, vx1);
-     D3Q27System::calcIncompVelocityX2(f, vx2);
-     D3Q27System::calcIncompVelocityX3(f, vx3);
-     LBMReal rho = drho + UbMath::one;
-     vx1 /= rho;
-     vx2 /= rho;
-     vx3 /= rho;
-  }
-  //////////////////////////////////////////////////////////////////////////
-  static LBMReal getCompFeqForDirection(const int& direction, const LBMReal& drho, const LBMReal& vx1, const LBMReal& vx2, const LBMReal& vx3)
-  {
-     LBMReal cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3);
-
-     //switch(direction)
-     //{
-     //   case ZERO : return REAL_CAST( UbMath::c8o27*rho*(1.0-cu_sq));
-     //   case E : return REAL_CAST(  UbMath::c2o27*rho*(1.0+3.0*( vx1   )+UbMath::c9o2*( vx1   )*( vx1   )-cu_sq));
-     //   case W : return REAL_CAST(  UbMath::c2o27*rho*(1.0+3.0*(-vx1   )+UbMath::c9o2*(-vx1   )*(-vx1   )-cu_sq));
-     //   case N : return REAL_CAST(  UbMath::c2o27*rho*(1.0+3.0*(    vx2)+UbMath::c9o2*(    vx2)*(    vx2)-cu_sq));
-     //   case S : return REAL_CAST(  UbMath::c2o27*rho*(1.0+3.0*(   -vx2)+UbMath::c9o2*(   -vx2)*(   -vx2)-cu_sq));
-     //   case T : return REAL_CAST(  UbMath::c2o27*rho*(1.0+3.0*( vx3   )+UbMath::c9o2*(    vx3)*(    vx3)-cu_sq));
-     //   case B : return REAL_CAST(  UbMath::c2o27*rho*(1.0+3.0*(   -vx3)+UbMath::c9o2*(   -vx3)*(   -vx3)-cu_sq));
-     //   case NE : return REAL_CAST( UbMath::c1o54*rho*(1.0+3.0*( vx1+vx2)+UbMath::c9o2*( vx1+vx2)*( vx1+vx2)-cu_sq));
-     //   case SW : return REAL_CAST( UbMath::c1o54*rho*(1.0+3.0*(-vx1-vx2)+UbMath::c9o2*(-vx1-vx2)*(-vx1-vx2)-cu_sq));
-     //   case SE : return REAL_CAST( UbMath::c1o54*rho*(1.0+3.0*( vx1-vx2)+UbMath::c9o2*( vx1-vx2)*( vx1-vx2)-cu_sq));
-     //   case NW : return REAL_CAST( UbMath::c1o54*rho*(1.0+3.0*(-vx1+vx2)+UbMath::c9o2*(-vx1+vx2)*(-vx1+vx2)-cu_sq));
-     //   case TE : return REAL_CAST( UbMath::c1o54*rho*(1.0+3.0*( vx1+vx3)+UbMath::c9o2*( vx1+vx3)*( vx1+vx3)-cu_sq));
-     //   case BW : return REAL_CAST( UbMath::c1o54*rho*(1.0+3.0*(-vx1-vx3)+UbMath::c9o2*(-vx1-vx3)*(-vx1-vx3)-cu_sq));
-     //   case BE : return REAL_CAST( UbMath::c1o54*rho*(1.0+3.0*( vx1-vx3)+UbMath::c9o2*( vx1-vx3)*( vx1-vx3)-cu_sq));
-     //   case TW : return REAL_CAST( UbMath::c1o54*rho*(1.0+3.0*(-vx1+vx3)+UbMath::c9o2*(-vx1+vx3)*(-vx1+vx3)-cu_sq));
-     //   case TN : return REAL_CAST( UbMath::c1o54*rho*(1.0+3.0*( vx2+vx3)+UbMath::c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq));
-     //   case BS : return REAL_CAST( UbMath::c1o54*rho*(1.0+3.0*(-vx2-vx3)+UbMath::c9o2*(-vx2-vx3)*(-vx2-vx3)-cu_sq));
-     //   case BN : return REAL_CAST( UbMath::c1o54*rho*(1.0+3.0*( vx2-vx3)+UbMath::c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq));
-     //   case TS : return REAL_CAST( UbMath::c1o54*rho*(1.0+3.0*(-vx2+vx3)+UbMath::c9o2*(-vx2+vx3)*(-vx2+vx3)-cu_sq));
-     //   case TNE : return REAL_CAST(UbMath::c1o216*rho*(1.0+3.0*( vx1+vx2+vx3)+UbMath::c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq));
-     //   case BSW : return REAL_CAST(UbMath::c1o216*rho*(1.0+3.0*(-vx1-vx2-vx3)+UbMath::c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq));
-     //   case BNE : return REAL_CAST(UbMath::c1o216*rho*(1.0+3.0*( vx1+vx2-vx3)+UbMath::c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq));
-     //   case TSW : return REAL_CAST(UbMath::c1o216*rho*(1.0+3.0*(-vx1-vx2+vx3)+UbMath::c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq));
-     //   case TSE : return REAL_CAST(UbMath::c1o216*rho*(1.0+3.0*( vx1-vx2+vx3)+UbMath::c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq));
-     //   case BNW : return REAL_CAST(UbMath::c1o216*rho*(1.0+3.0*(-vx1+vx2-vx3)+UbMath::c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq));
-     //   case BSE : return REAL_CAST(UbMath::c1o216*rho*(1.0+3.0*( vx1-vx2-vx3)+UbMath::c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq));
-     //   case TNW : return REAL_CAST(UbMath::c1o216*rho*(1.0+3.0*(-vx1+vx2+vx3)+UbMath::c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq));
-     //   default: throw UbException(UB_EXARGS,"unknown dir");
-     //}
-
-
-     ////-----
-     LBMReal rho = drho + UbMath::one;
-     switch (direction)
-     {
-     case ZERO: return REAL_CAST(UbMath::c8o27 * (drho + rho * (-cu_sq)));
-     case E: return REAL_CAST(UbMath::c2o27 * (drho + rho * (3.0 * (vx1)+UbMath::c9o2 * (vx1) * (vx1)-cu_sq)));
-     case W: return REAL_CAST(UbMath::c2o27 * (drho + rho * (3.0 * (-vx1) + UbMath::c9o2 * (-vx1) * (-vx1) - cu_sq)));
-     case N: return REAL_CAST(UbMath::c2o27 * (drho + rho * (3.0 * (vx2)+UbMath::c9o2 * (vx2) * (vx2)-cu_sq)));
-     case S: return REAL_CAST(UbMath::c2o27 * (drho + rho * (3.0 * (-vx2) + UbMath::c9o2 * (-vx2) * (-vx2) - cu_sq)));
-     case T: return REAL_CAST(UbMath::c2o27 * (drho + rho * (3.0 * (vx3)+UbMath::c9o2 * (vx3) * (vx3)-cu_sq)));
-     case B: return REAL_CAST(UbMath::c2o27 * (drho + rho * (3.0 * (-vx3) + UbMath::c9o2 * (-vx3) * (-vx3) - cu_sq)));
-     case NE: return REAL_CAST(UbMath::c1o54 * (drho + rho * (3.0 * (vx1 + vx2) + UbMath::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq)));
-     case SW: return REAL_CAST(UbMath::c1o54 * (drho + rho * (3.0 * (-vx1 - vx2) + UbMath::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq)));
-     case SE: return REAL_CAST(UbMath::c1o54 * (drho + rho * (3.0 * (vx1 - vx2) + UbMath::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq)));
-     case NW: return REAL_CAST(UbMath::c1o54 * (drho + rho * (3.0 * (-vx1 + vx2) + UbMath::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq)));
-     case TE: return REAL_CAST(UbMath::c1o54 * (drho + rho * (3.0 * (vx1 + vx3) + UbMath::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq)));
-     case BW: return REAL_CAST(UbMath::c1o54 * (drho + rho * (3.0 * (-vx1 - vx3) + UbMath::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq)));
-     case BE: return REAL_CAST(UbMath::c1o54 * (drho + rho * (3.0 * (vx1 - vx3) + UbMath::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq)));
-     case TW: return REAL_CAST(UbMath::c1o54 * (drho + rho * (3.0 * (-vx1 + vx3) + UbMath::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq)));
-     case TN: return REAL_CAST(UbMath::c1o54 * (drho + rho * (3.0 * (vx2 + vx3) + UbMath::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq)));
-     case BS: return REAL_CAST(UbMath::c1o54 * (drho + rho * (3.0 * (-vx2 - vx3) + UbMath::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq)));
-     case BN: return REAL_CAST(UbMath::c1o54 * (drho + rho * (3.0 * (vx2 - vx3) + UbMath::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq)));
-     case TS: return REAL_CAST(UbMath::c1o54 * (drho + rho * (3.0 * (-vx2 + vx3) + UbMath::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq)));
-     case TNE: return REAL_CAST(UbMath::c1o216 * (drho + rho * (3.0 * (vx1 + vx2 + vx3) + UbMath::c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq)));
-     case BSW: return REAL_CAST(UbMath::c1o216 * (drho + rho * (3.0 * (-vx1 - vx2 - vx3) + UbMath::c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq)));
-     case BNE: return REAL_CAST(UbMath::c1o216 * (drho + rho * (3.0 * (vx1 + vx2 - vx3) + UbMath::c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq)));
-     case TSW: return REAL_CAST(UbMath::c1o216 * (drho + rho * (3.0 * (-vx1 - vx2 + vx3) + UbMath::c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq)));
-     case TSE: return REAL_CAST(UbMath::c1o216 * (drho + rho * (3.0 * (vx1 - vx2 + vx3) + UbMath::c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq)));
-     case BNW: return REAL_CAST(UbMath::c1o216 * (drho + rho * (3.0 * (-vx1 + vx2 - vx3) + UbMath::c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq)));
-     case BSE: return REAL_CAST(UbMath::c1o216 * (drho + rho * (3.0 * (vx1 - vx2 - vx3) + UbMath::c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq)));
-     case TNW: return REAL_CAST(UbMath::c1o216 * (drho + rho * (3.0 * (-vx1 + vx2 + vx3) + UbMath::c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq)));
-     default: throw UbException(UB_EXARGS, "unknown dir");
-     }
-
-  }
-  //////////////////////////////////////////////////////////////////////////
-  static void calcCompFeq(LBMReal* const& feq/*[27]*/, const LBMReal& drho, const LBMReal& vx1, const LBMReal& vx2, const LBMReal& vx3)
-  {
-     //LBMReal cu_sq=1.5*(vx1*vx1+vx2*vx2+vx3*vx3);
-
-     //feq[ZERO] =  UbMath::c8o27*rho*(1.0-cu_sq);
-     //feq[E] =   UbMath::c2o27*rho*(1.0+3.0*( vx1   )+UbMath::c9o2*( vx1   )*( vx1   )-cu_sq);
-     //feq[W] =   UbMath::c2o27*rho*(1.0+3.0*(-vx1   )+UbMath::c9o2*(-vx1   )*(-vx1   )-cu_sq);
-     //feq[N] =   UbMath::c2o27*rho*(1.0+3.0*(    vx2)+UbMath::c9o2*(    vx2)*(    vx2)-cu_sq);
-     //feq[S] =   UbMath::c2o27*rho*(1.0+3.0*(   -vx2)+UbMath::c9o2*(   -vx2)*(   -vx2)-cu_sq);
-     //feq[T] =   UbMath::c2o27*rho*(1.0+3.0*( vx3   )+UbMath::c9o2*(    vx3)*(    vx3)-cu_sq);
-     //feq[B] =   UbMath::c2o27*rho*(1.0+3.0*(   -vx3)+UbMath::c9o2*(   -vx3)*(   -vx3)-cu_sq);
-     //feq[NE] =  UbMath::c1o54*rho*(1.0+3.0*( vx1+vx2)+UbMath::c9o2*( vx1+vx2)*( vx1+vx2)-cu_sq);
-     //feq[SW] =  UbMath::c1o54*rho*(1.0+3.0*(-vx1-vx2)+UbMath::c9o2*(-vx1-vx2)*(-vx1-vx2)-cu_sq);
-     //feq[SE] =  UbMath::c1o54*rho*(1.0+3.0*( vx1-vx2)+UbMath::c9o2*( vx1-vx2)*( vx1-vx2)-cu_sq);
-     //feq[NW] =  UbMath::c1o54*rho*(1.0+3.0*(-vx1+vx2)+UbMath::c9o2*(-vx1+vx2)*(-vx1+vx2)-cu_sq);
-     //feq[TE] =  UbMath::c1o54*rho*(1.0+3.0*( vx1+vx3)+UbMath::c9o2*( vx1+vx3)*( vx1+vx3)-cu_sq);
-     //feq[BW] =  UbMath::c1o54*rho*(1.0+3.0*(-vx1-vx3)+UbMath::c9o2*(-vx1-vx3)*(-vx1-vx3)-cu_sq);
-     //feq[BE] =  UbMath::c1o54*rho*(1.0+3.0*( vx1-vx3)+UbMath::c9o2*( vx1-vx3)*( vx1-vx3)-cu_sq);
-     //feq[TW] =  UbMath::c1o54*rho*(1.0+3.0*(-vx1+vx3)+UbMath::c9o2*(-vx1+vx3)*(-vx1+vx3)-cu_sq);
-     //feq[TN] =  UbMath::c1o54*rho*(1.0+3.0*( vx2+vx3)+UbMath::c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq);
-     //feq[BS] =  UbMath::c1o54*rho*(1.0+3.0*(-vx2-vx3)+UbMath::c9o2*(-vx2-vx3)*(-vx2-vx3)-cu_sq);
-     //feq[BN] =  UbMath::c1o54*rho*(1.0+3.0*( vx2-vx3)+UbMath::c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq);
-     //feq[TS] =  UbMath::c1o54*rho*(1.0+3.0*(-vx2+vx3)+UbMath::c9o2*(-vx2+vx3)*(-vx2+vx3)-cu_sq);
-     //feq[TNE] = UbMath::c1o216*rho*(1.0+3.0*( vx1+vx2+vx3)+UbMath::c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-     //feq[BSW] = UbMath::c1o216*rho*(1.0+3.0*(-vx1-vx2-vx3)+UbMath::c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-     //feq[BNE] = UbMath::c1o216*rho*(1.0+3.0*( vx1+vx2-vx3)+UbMath::c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-     //feq[TSW] = UbMath::c1o216*rho*(1.0+3.0*(-vx1-vx2+vx3)+UbMath::c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-     //feq[TSE] = UbMath::c1o216*rho*(1.0+3.0*( vx1-vx2+vx3)+UbMath::c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-     //feq[BNW] = UbMath::c1o216*rho*(1.0+3.0*(-vx1+vx2-vx3)+UbMath::c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-     //feq[BSE] = UbMath::c1o216*rho*(1.0+3.0*( vx1-vx2-vx3)+UbMath::c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-     //feq[TNW] = UbMath::c1o216*rho*(1.0+3.0*(-vx1+vx2+vx3)+UbMath::c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
-
-     //////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+// MACROSCOPIC VALUES
+/*=====================================================================*/
+static LBMReal getDensity(const LBMReal *const &f /*[27]*/)
+{
+    return ((f[TNE] + f[BSW]) + (f[TSE] + f[BNW])) + ((f[BSE] + f[TNW]) + (f[TSW] + f[BNE])) +
+           (((f[NE] + f[SW]) + (f[SE] + f[NW])) + ((f[TE] + f[BW]) + (f[BE] + f[TW])) +
+            ((f[BN] + f[TS]) + (f[TN] + f[BS]))) +
+           ((f[E] + f[W]) + (f[N] + f[S]) + (f[T] + f[B])) + f[REST];
+}
+/*=====================================================================*/
+static LBMReal getPressure(const LBMReal *const &f /*[27]*/) { return REAL_CAST(UbMath::c1o3) * getDensity(f); }
+/*=====================================================================*/
+static LBMReal getIncompVelocityX1(const LBMReal *const &f /*[27]*/)
+{
+    return ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[BSE] - f[TNW]) + (f[BNE] - f[TSW]))) +
+            (((f[BE] - f[TW]) + (f[TE] - f[BW])) + ((f[SE] - f[NW]) + (f[NE] - f[SW]))) + (f[E] - f[W]));
+}
+/*=====================================================================*/
+static LBMReal getIncompVelocityX2(const LBMReal *const &f /*[27]*/)
+{
+    return ((((f[TNE] - f[BSW]) + (f[BNW] - f[TSE])) + ((f[TNW] - f[BSE]) + (f[BNE] - f[TSW]))) +
+            (((f[BN] - f[TS]) + (f[TN] - f[BS])) + ((f[NW] - f[SE]) + (f[NE] - f[SW]))) + (f[N] - f[S]));
+}
+/*=====================================================================*/
+static LBMReal getIncompVelocityX3(const LBMReal *const &f /*[27]*/)
+{
+    return ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[TNW] - f[BSE]) + (f[TSW] - f[BNE]))) +
+            (((f[TS] - f[BN]) + (f[TN] - f[BS])) + ((f[TW] - f[BE]) + (f[TE] - f[BW]))) + (f[T] - f[B]));
+}
+/*=====================================================================*/
+static void calcDensity(const LBMReal *const &f /*[27]*/, LBMReal &rho)
+{
+    rho = ((f[TNE] + f[BSW]) + (f[TSE] + f[BNW])) + ((f[BSE] + f[TNW]) + (f[TSW] + f[BNE])) +
+          (((f[NE] + f[SW]) + (f[SE] + f[NW])) + ((f[TE] + f[BW]) + (f[BE] + f[TW])) +
+           ((f[BN] + f[TS]) + (f[TN] + f[BS]))) +
+          ((f[E] + f[W]) + (f[N] + f[S]) + (f[T] + f[B])) + f[REST];
+}
+/*=====================================================================*/
+static void calcIncompVelocityX1(const LBMReal *const &f /*[27]*/, LBMReal &vx1)
+{
+    vx1 = ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[BSE] - f[TNW]) + (f[BNE] - f[TSW]))) +
+           (((f[BE] - f[TW]) + (f[TE] - f[BW])) + ((f[SE] - f[NW]) + (f[NE] - f[SW]))) + (f[E] - f[W]));
+}
+/*=====================================================================*/
+static void calcIncompVelocityX2(const LBMReal *const &f /*[27]*/, LBMReal &vx2)
+{
+    vx2 = ((((f[TNE] - f[BSW]) + (f[BNW] - f[TSE])) + ((f[TNW] - f[BSE]) + (f[BNE] - f[TSW]))) +
+           (((f[BN] - f[TS]) + (f[TN] - f[BS])) + ((f[NW] - f[SE]) + (f[NE] - f[SW]))) + (f[N] - f[S]));
+}
+/*=====================================================================*/
+static void calcIncompVelocityX3(const LBMReal *const &f /*[27]*/, LBMReal &vx3)
+{
+    vx3 = ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[TNW] - f[BSE]) + (f[TSW] - f[BNE]))) +
+           (((f[TS] - f[BN]) + (f[TN] - f[BS])) + ((f[TW] - f[BE]) + (f[TE] - f[BW]))) + (f[T] - f[B]));
+}
+/*=====================================================================*/
+static LBMReal getCompVelocityX1(const LBMReal *const &f /*[27]*/)
+{
+    return ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[BSE] - f[TNW]) + (f[BNE] - f[TSW]))) +
+            (((f[BE] - f[TW]) + (f[TE] - f[BW])) + ((f[SE] - f[NW]) + (f[NE] - f[SW]))) + (f[E] - f[W])) /
+           getDensity(f);
+}
+/*=====================================================================*/
+static LBMReal getCompVelocityX2(const LBMReal *const &f /*[27]*/)
+{
+    return ((((f[TNE] - f[BSW]) + (f[BNW] - f[TSE])) + ((f[TNW] - f[BSE]) + (f[BNE] - f[TSW]))) +
+            (((f[BN] - f[TS]) + (f[TN] - f[BS])) + ((f[NW] - f[SE]) + (f[NE] - f[SW]))) + (f[N] - f[S])) /
+           getDensity(f);
+}
+/*=====================================================================*/
+static LBMReal getCompVelocityX3(const LBMReal *const &f /*[27]*/)
+{
+    return ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[TNW] - f[BSE]) + (f[TSW] - f[BNE]))) +
+            (((f[TS] - f[BN]) + (f[TN] - f[BS])) + ((f[TW] - f[BE]) + (f[TE] - f[BW]))) + (f[T] - f[B])) /
+           getDensity(f);
+}
+/*=====================================================================*/
+static void calcCompVelocityX1(const LBMReal *const &f /*[27]*/, LBMReal &vx1)
+{
+    vx1 = ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[BSE] - f[TNW]) + (f[BNE] - f[TSW]))) +
+           (((f[BE] - f[TW]) + (f[TE] - f[BW])) + ((f[SE] - f[NW]) + (f[NE] - f[SW]))) + (f[E] - f[W])) /
+          getDensity(f);
+}
+/*=====================================================================*/
+static void calcCompVelocityX2(const LBMReal *const &f /*[27]*/, LBMReal &vx2)
+{
+    vx2 = ((((f[TNE] - f[BSW]) + (f[BNW] - f[TSE])) + ((f[TNW] - f[BSE]) + (f[BNE] - f[TSW]))) +
+           (((f[BN] - f[TS]) + (f[TN] - f[BS])) + ((f[NW] - f[SE]) + (f[NE] - f[SW]))) + (f[N] - f[S])) /
+          getDensity(f);
+}
+/*=====================================================================*/
+static void calcCompVelocityX3(const LBMReal *const &f /*[27]*/, LBMReal &vx3)
+{
+    vx3 = ((((f[TNE] - f[BSW]) + (f[TSE] - f[BNW])) + ((f[TNW] - f[BSE]) + (f[TSW] - f[BNE]))) +
+           (((f[TS] - f[BN]) + (f[TN] - f[BS])) + ((f[TW] - f[BE]) + (f[TE] - f[BW]))) + (f[T] - f[B])) /
+          getDensity(f);
+}
+/*=====================================================================*/
+static void calcIncompMacroscopicValues(const LBMReal *const &f /*[27]*/, LBMReal &rho, LBMReal &vx1, LBMReal &vx2,
+                                        LBMReal &vx3)
+{
+    D3Q27System::calcDensity(f, rho);
+    D3Q27System::calcIncompVelocityX1(f, vx1);
+    D3Q27System::calcIncompVelocityX2(f, vx2);
+    D3Q27System::calcIncompVelocityX3(f, vx3);
+}
 
-     LBMReal cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3);
-     LBMReal rho = drho + UbMath::one;
+/*=====================================================================*/
+static void calcCompMacroscopicValues(const LBMReal *const &f /*[27]*/, LBMReal &drho, LBMReal &vx1, LBMReal &vx2,
+                                      LBMReal &vx3)
+{
+    D3Q27System::calcDensity(f, drho);
+    D3Q27System::calcIncompVelocityX1(f, vx1);
+    D3Q27System::calcIncompVelocityX2(f, vx2);
+    D3Q27System::calcIncompVelocityX3(f, vx3);
+    LBMReal rho = drho + UbMath::one;
+    vx1 /= rho;
+    vx2 /= rho;
+    vx3 /= rho;
+}
+//////////////////////////////////////////////////////////////////////////
+static LBMReal getCompFeqForDirection(const int &direction, const LBMReal &drho, const LBMReal &vx1, const LBMReal &vx2,
+                                      const LBMReal &vx3)
+{
+    LBMReal cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3);
+    LBMReal rho   = drho + UbMath::one;
+    switch (direction) {
+        case REST:
+            return REAL_CAST(UbMath::c8o27 * (drho + rho * (-cu_sq)));
+        case E:
+            return REAL_CAST(UbMath::c2o27 * (drho + rho * (3.0 * (vx1) + UbMath::c9o2 * (vx1) * (vx1)-cu_sq)));
+        case W:
+            return REAL_CAST(UbMath::c2o27 * (drho + rho * (3.0 * (-vx1) + UbMath::c9o2 * (-vx1) * (-vx1) - cu_sq)));
+        case N:
+            return REAL_CAST(UbMath::c2o27 * (drho + rho * (3.0 * (vx2) + UbMath::c9o2 * (vx2) * (vx2)-cu_sq)));
+        case S:
+            return REAL_CAST(UbMath::c2o27 * (drho + rho * (3.0 * (-vx2) + UbMath::c9o2 * (-vx2) * (-vx2) - cu_sq)));
+        case T:
+            return REAL_CAST(UbMath::c2o27 * (drho + rho * (3.0 * (vx3) + UbMath::c9o2 * (vx3) * (vx3)-cu_sq)));
+        case B:
+            return REAL_CAST(UbMath::c2o27 * (drho + rho * (3.0 * (-vx3) + UbMath::c9o2 * (-vx3) * (-vx3) - cu_sq)));
+        case NE:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + rho * (3.0 * (vx1 + vx2) + UbMath::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq)));
+        case SW:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + rho * (3.0 * (-vx1 - vx2) + UbMath::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq)));
+        case SE:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + rho * (3.0 * (vx1 - vx2) + UbMath::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq)));
+        case NW:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + rho * (3.0 * (-vx1 + vx2) + UbMath::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq)));
+        case TE:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + rho * (3.0 * (vx1 + vx3) + UbMath::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq)));
+        case BW:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + rho * (3.0 * (-vx1 - vx3) + UbMath::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq)));
+        case BE:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + rho * (3.0 * (vx1 - vx3) + UbMath::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq)));
+        case TW:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + rho * (3.0 * (-vx1 + vx3) + UbMath::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq)));
+        case TN:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + rho * (3.0 * (vx2 + vx3) + UbMath::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq)));
+        case BS:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + rho * (3.0 * (-vx2 - vx3) + UbMath::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq)));
+        case BN:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + rho * (3.0 * (vx2 - vx3) + UbMath::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq)));
+        case TS:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + rho * (3.0 * (-vx2 + vx3) + UbMath::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq)));
+        case TNE:
+            return REAL_CAST(UbMath::c1o216 *
+                             (drho + rho * (3.0 * (vx1 + vx2 + vx3) +
+                                            UbMath::c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq)));
+        case BSW:
+            return REAL_CAST(UbMath::c1o216 *
+                             (drho + rho * (3.0 * (-vx1 - vx2 - vx3) +
+                                            UbMath::c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq)));
+        case BNE:
+            return REAL_CAST(UbMath::c1o216 *
+                             (drho + rho * (3.0 * (vx1 + vx2 - vx3) +
+                                            UbMath::c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq)));
+        case TSW:
+            return REAL_CAST(UbMath::c1o216 *
+                             (drho + rho * (3.0 * (-vx1 - vx2 + vx3) +
+                                            UbMath::c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq)));
+        case TSE:
+            return REAL_CAST(UbMath::c1o216 *
+                             (drho + rho * (3.0 * (vx1 - vx2 + vx3) +
+                                            UbMath::c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq)));
+        case BNW:
+            return REAL_CAST(UbMath::c1o216 *
+                             (drho + rho * (3.0 * (-vx1 + vx2 - vx3) +
+                                            UbMath::c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq)));
+        case BSE:
+            return REAL_CAST(UbMath::c1o216 *
+                             (drho + rho * (3.0 * (vx1 - vx2 - vx3) +
+                                            UbMath::c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq)));
+        case TNW:
+            return REAL_CAST(UbMath::c1o216 *
+                             (drho + rho * (3.0 * (-vx1 + vx2 + vx3) +
+                                            UbMath::c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq)));
+        default:
+            throw UbException(UB_EXARGS, "unknown dir");
+    }
+}
+//////////////////////////////////////////////////////////////////////////
+static void calcCompFeq(LBMReal *const &feq /*[27]*/, const LBMReal &drho, const LBMReal &vx1, const LBMReal &vx2,
+                        const LBMReal &vx3)
+{
+    LBMReal cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3);
+    LBMReal rho   = drho + UbMath::one;
 
-     feq[ZERO] = UbMath::c8o27 * (drho + rho * (-cu_sq));
-     feq[E] = UbMath::c2o27 * (drho + rho * (3.0 * (vx1)+UbMath::c9o2 * (vx1) * (vx1)-cu_sq));
-     feq[W] = UbMath::c2o27 * (drho + rho * (3.0 * (-vx1) + UbMath::c9o2 * (-vx1) * (-vx1) - cu_sq));
-     feq[N] = UbMath::c2o27 * (drho + rho * (3.0 * (vx2)+UbMath::c9o2 * (vx2) * (vx2)-cu_sq));
-     feq[S] = UbMath::c2o27 * (drho + rho * (3.0 * (-vx2) + UbMath::c9o2 * (-vx2) * (-vx2) - cu_sq));
-     feq[T] = UbMath::c2o27 * (drho + rho * (3.0 * (vx3)+UbMath::c9o2 * (vx3) * (vx3)-cu_sq));
-     feq[B] = UbMath::c2o27 * (drho + rho * (3.0 * (-vx3) + UbMath::c9o2 * (-vx3) * (-vx3) - cu_sq));
-     feq[NE] = UbMath::c1o54 * (drho + rho * (3.0 * (vx1 + vx2) + UbMath::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq));
-     feq[SW] = UbMath::c1o54 * (drho + rho * (3.0 * (-vx1 - vx2) + UbMath::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq));
-     feq[SE] = UbMath::c1o54 * (drho + rho * (3.0 * (vx1 - vx2) + UbMath::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq));
-     feq[NW] = UbMath::c1o54 * (drho + rho * (3.0 * (-vx1 + vx2) + UbMath::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq));
-     feq[TE] = UbMath::c1o54 * (drho + rho * (3.0 * (vx1 + vx3) + UbMath::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq));
-     feq[BW] = UbMath::c1o54 * (drho + rho * (3.0 * (-vx1 - vx3) + UbMath::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq));
-     feq[BE] = UbMath::c1o54 * (drho + rho * (3.0 * (vx1 - vx3) + UbMath::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq));
-     feq[TW] = UbMath::c1o54 * (drho + rho * (3.0 * (-vx1 + vx3) + UbMath::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq));
-     feq[TN] = UbMath::c1o54 * (drho + rho * (3.0 * (vx2 + vx3) + UbMath::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq));
-     feq[BS] = UbMath::c1o54 * (drho + rho * (3.0 * (-vx2 - vx3) + UbMath::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq));
-     feq[BN] = UbMath::c1o54 * (drho + rho * (3.0 * (vx2 - vx3) + UbMath::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq));
-     feq[TS] = UbMath::c1o54 * (drho + rho * (3.0 * (-vx2 + vx3) + UbMath::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq));
-     feq[TNE] = UbMath::c1o216 * (drho + rho * (3.0 * (vx1 + vx2 + vx3) + UbMath::c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq));
-     feq[BSW] = UbMath::c1o216 * (drho + rho * (3.0 * (-vx1 - vx2 - vx3) + UbMath::c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq));
-     feq[BNE] = UbMath::c1o216 * (drho + rho * (3.0 * (vx1 + vx2 - vx3) + UbMath::c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq));
-     feq[TSW] = UbMath::c1o216 * (drho + rho * (3.0 * (-vx1 - vx2 + vx3) + UbMath::c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq));
-     feq[TSE] = UbMath::c1o216 * (drho + rho * (3.0 * (vx1 - vx2 + vx3) + UbMath::c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq));
-     feq[BNW] = UbMath::c1o216 * (drho + rho * (3.0 * (-vx1 + vx2 - vx3) + UbMath::c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq));
-     feq[BSE] = UbMath::c1o216 * (drho + rho * (3.0 * (vx1 - vx2 - vx3) + UbMath::c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq));
-     feq[TNW] = UbMath::c1o216 * (drho + rho * (3.0 * (-vx1 + vx2 + vx3) + UbMath::c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq));
-  }
-  //////////////////////////////////////////////////////////////////////////
-  static LBMReal getIncompFeqForDirection(const int& direction, const LBMReal& drho, const LBMReal& vx1, const LBMReal& vx2, const LBMReal& vx3)
-  {
-     LBMReal cu_sq = 1.5f * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3);
+    feq[REST] = UbMath::c8o27 * (drho + rho * (-cu_sq));
+    feq[E]    = UbMath::c2o27 * (drho + rho * (3.0 * (vx1) + UbMath::c9o2 * (vx1) * (vx1)-cu_sq));
+    feq[W]    = UbMath::c2o27 * (drho + rho * (3.0 * (-vx1) + UbMath::c9o2 * (-vx1) * (-vx1) - cu_sq));
+    feq[N]    = UbMath::c2o27 * (drho + rho * (3.0 * (vx2) + UbMath::c9o2 * (vx2) * (vx2)-cu_sq));
+    feq[S]    = UbMath::c2o27 * (drho + rho * (3.0 * (-vx2) + UbMath::c9o2 * (-vx2) * (-vx2) - cu_sq));
+    feq[T]    = UbMath::c2o27 * (drho + rho * (3.0 * (vx3) + UbMath::c9o2 * (vx3) * (vx3)-cu_sq));
+    feq[B]    = UbMath::c2o27 * (drho + rho * (3.0 * (-vx3) + UbMath::c9o2 * (-vx3) * (-vx3) - cu_sq));
+    feq[NE]   = UbMath::c1o54 * (drho + rho * (3.0 * (vx1 + vx2) + UbMath::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq));
+    feq[SW]  = UbMath::c1o54 * (drho + rho * (3.0 * (-vx1 - vx2) + UbMath::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq));
+    feq[SE]  = UbMath::c1o54 * (drho + rho * (3.0 * (vx1 - vx2) + UbMath::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq));
+    feq[NW]  = UbMath::c1o54 * (drho + rho * (3.0 * (-vx1 + vx2) + UbMath::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq));
+    feq[TE]  = UbMath::c1o54 * (drho + rho * (3.0 * (vx1 + vx3) + UbMath::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq));
+    feq[BW]  = UbMath::c1o54 * (drho + rho * (3.0 * (-vx1 - vx3) + UbMath::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq));
+    feq[BE]  = UbMath::c1o54 * (drho + rho * (3.0 * (vx1 - vx3) + UbMath::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq));
+    feq[TW]  = UbMath::c1o54 * (drho + rho * (3.0 * (-vx1 + vx3) + UbMath::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq));
+    feq[TN]  = UbMath::c1o54 * (drho + rho * (3.0 * (vx2 + vx3) + UbMath::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq));
+    feq[BS]  = UbMath::c1o54 * (drho + rho * (3.0 * (-vx2 - vx3) + UbMath::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq));
+    feq[BN]  = UbMath::c1o54 * (drho + rho * (3.0 * (vx2 - vx3) + UbMath::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq));
+    feq[TS]  = UbMath::c1o54 * (drho + rho * (3.0 * (-vx2 + vx3) + UbMath::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq));
+    feq[TNE] = UbMath::c1o216 *
+               (drho + rho * (3.0 * (vx1 + vx2 + vx3) + UbMath::c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq));
+    feq[BSW] =
+        UbMath::c1o216 *
+        (drho + rho * (3.0 * (-vx1 - vx2 - vx3) + UbMath::c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq));
+    feq[BNE] = UbMath::c1o216 *
+               (drho + rho * (3.0 * (vx1 + vx2 - vx3) + UbMath::c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq));
+    feq[TSW] =
+        UbMath::c1o216 *
+        (drho + rho * (3.0 * (-vx1 - vx2 + vx3) + UbMath::c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq));
+    feq[TSE] = UbMath::c1o216 *
+               (drho + rho * (3.0 * (vx1 - vx2 + vx3) + UbMath::c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq));
+    feq[BNW] =
+        UbMath::c1o216 *
+        (drho + rho * (3.0 * (-vx1 + vx2 - vx3) + UbMath::c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq));
+    feq[BSE] = UbMath::c1o216 *
+               (drho + rho * (3.0 * (vx1 - vx2 - vx3) + UbMath::c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq));
+    feq[TNW] =
+        UbMath::c1o216 *
+        (drho + rho * (3.0 * (-vx1 + vx2 + vx3) + UbMath::c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq));
+}
+//////////////////////////////////////////////////////////////////////////
+static LBMReal getIncompFeqForDirection(const int &direction, const LBMReal &drho, const LBMReal &vx1,
+                                        const LBMReal &vx2, const LBMReal &vx3)
+{
+    LBMReal cu_sq = 1.5f * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3);
 
-     switch (direction)
-     {
-     case ZERO: return REAL_CAST(UbMath::c8o27 * (drho - cu_sq));
-     case E: return REAL_CAST(UbMath::c2o27 * (drho + 3.0 * (vx1)+UbMath::c9o2 * (vx1) * (vx1)-cu_sq));
-     case W: return REAL_CAST(UbMath::c2o27 * (drho + 3.0 * (-vx1) + UbMath::c9o2 * (-vx1) * (-vx1) - cu_sq));
-     case N: return REAL_CAST(UbMath::c2o27 * (drho + 3.0 * (vx2)+UbMath::c9o2 * (vx2) * (vx2)-cu_sq));
-     case S: return REAL_CAST(UbMath::c2o27 * (drho + 3.0 * (-vx2) + UbMath::c9o2 * (-vx2) * (-vx2) - cu_sq));
-     case T: return REAL_CAST(UbMath::c2o27 * (drho + 3.0 * (vx3)+UbMath::c9o2 * (vx3) * (vx3)-cu_sq));
-     case B: return REAL_CAST(UbMath::c2o27 * (drho + 3.0 * (-vx3) + UbMath::c9o2 * (-vx3) * (-vx3) - cu_sq));
-     case NE: return REAL_CAST(UbMath::c1o54 * (drho + 3.0 * (vx1 + vx2) + UbMath::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq));
-     case SW: return REAL_CAST(UbMath::c1o54 * (drho + 3.0 * (-vx1 - vx2) + UbMath::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq));
-     case SE: return REAL_CAST(UbMath::c1o54 * (drho + 3.0 * (vx1 - vx2) + UbMath::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq));
-     case NW: return REAL_CAST(UbMath::c1o54 * (drho + 3.0 * (-vx1 + vx2) + UbMath::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq));
-     case TE: return REAL_CAST(UbMath::c1o54 * (drho + 3.0 * (vx1 + vx3) + UbMath::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq));
-     case BW: return REAL_CAST(UbMath::c1o54 * (drho + 3.0 * (-vx1 - vx3) + UbMath::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq));
-     case BE: return REAL_CAST(UbMath::c1o54 * (drho + 3.0 * (vx1 - vx3) + UbMath::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq));
-     case TW: return REAL_CAST(UbMath::c1o54 * (drho + 3.0 * (-vx1 + vx3) + UbMath::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq));
-     case TN: return REAL_CAST(UbMath::c1o54 * (drho + 3.0 * (vx2 + vx3) + UbMath::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq));
-     case BS: return REAL_CAST(UbMath::c1o54 * (drho + 3.0 * (-vx2 - vx3) + UbMath::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq));
-     case BN: return REAL_CAST(UbMath::c1o54 * (drho + 3.0 * (vx2 - vx3) + UbMath::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq));
-     case TS: return REAL_CAST(UbMath::c1o54 * (drho + 3.0 * (-vx2 + vx3) + UbMath::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq));
-     case TNE: return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (vx1 + vx2 + vx3) + UbMath::c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq));
-     case BSW: return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (-vx1 - vx2 - vx3) + UbMath::c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq));
-     case BNE: return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (vx1 + vx2 - vx3) + UbMath::c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq));
-     case TSW: return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (-vx1 - vx2 + vx3) + UbMath::c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq));
-     case TSE: return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (vx1 - vx2 + vx3) + UbMath::c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq));
-     case BNW: return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (-vx1 + vx2 - vx3) + UbMath::c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq));
-     case BSE: return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (vx1 - vx2 - vx3) + UbMath::c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq));
-     case TNW: return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (-vx1 + vx2 + vx3) + UbMath::c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq));
-     default: throw UbException(UB_EXARGS, "unknown dir");
-     }
-  }
-  //////////////////////////////////////////////////////////////////////////
-  static void calcIncompFeq(LBMReal* const& feq/*[27]*/, const LBMReal& drho, const LBMReal& vx1, const LBMReal& vx2, const LBMReal& vx3)
-  {
-     LBMReal cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3);
+    switch (direction) {
+        case REST:
+            return REAL_CAST(UbMath::c8o27 * (drho - cu_sq));
+        case E:
+            return REAL_CAST(UbMath::c2o27 * (drho + 3.0 * (vx1) + UbMath::c9o2 * (vx1) * (vx1)-cu_sq));
+        case W:
+            return REAL_CAST(UbMath::c2o27 * (drho + 3.0 * (-vx1) + UbMath::c9o2 * (-vx1) * (-vx1) - cu_sq));
+        case N:
+            return REAL_CAST(UbMath::c2o27 * (drho + 3.0 * (vx2) + UbMath::c9o2 * (vx2) * (vx2)-cu_sq));
+        case S:
+            return REAL_CAST(UbMath::c2o27 * (drho + 3.0 * (-vx2) + UbMath::c9o2 * (-vx2) * (-vx2) - cu_sq));
+        case T:
+            return REAL_CAST(UbMath::c2o27 * (drho + 3.0 * (vx3) + UbMath::c9o2 * (vx3) * (vx3)-cu_sq));
+        case B:
+            return REAL_CAST(UbMath::c2o27 * (drho + 3.0 * (-vx3) + UbMath::c9o2 * (-vx3) * (-vx3) - cu_sq));
+        case NE:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + 3.0 * (vx1 + vx2) + UbMath::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq));
+        case SW:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + 3.0 * (-vx1 - vx2) + UbMath::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq));
+        case SE:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + 3.0 * (vx1 - vx2) + UbMath::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq));
+        case NW:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + 3.0 * (-vx1 + vx2) + UbMath::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq));
+        case TE:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + 3.0 * (vx1 + vx3) + UbMath::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq));
+        case BW:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + 3.0 * (-vx1 - vx3) + UbMath::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq));
+        case BE:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + 3.0 * (vx1 - vx3) + UbMath::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq));
+        case TW:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + 3.0 * (-vx1 + vx3) + UbMath::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq));
+        case TN:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + 3.0 * (vx2 + vx3) + UbMath::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq));
+        case BS:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + 3.0 * (-vx2 - vx3) + UbMath::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq));
+        case BN:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + 3.0 * (vx2 - vx3) + UbMath::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq));
+        case TS:
+            return REAL_CAST(UbMath::c1o54 *
+                             (drho + 3.0 * (-vx2 + vx3) + UbMath::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq));
+        case TNE:
+            return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (vx1 + vx2 + vx3) +
+                                               UbMath::c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq));
+        case BSW:
+            return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (-vx1 - vx2 - vx3) +
+                                               UbMath::c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq));
+        case BNE:
+            return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (vx1 + vx2 - vx3) +
+                                               UbMath::c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq));
+        case TSW:
+            return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (-vx1 - vx2 + vx3) +
+                                               UbMath::c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq));
+        case TSE:
+            return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (vx1 - vx2 + vx3) +
+                                               UbMath::c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq));
+        case BNW:
+            return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (-vx1 + vx2 - vx3) +
+                                               UbMath::c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq));
+        case BSE:
+            return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (vx1 - vx2 - vx3) +
+                                               UbMath::c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq));
+        case TNW:
+            return REAL_CAST(UbMath::c1o216 * (drho + 3.0 * (-vx1 + vx2 + vx3) +
+                                               UbMath::c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq));
+        default:
+            throw UbException(UB_EXARGS, "unknown dir");
+    }
+}
+//////////////////////////////////////////////////////////////////////////
+static void calcIncompFeq(LBMReal *const &feq /*[27]*/, const LBMReal &drho, const LBMReal &vx1, const LBMReal &vx2,
+                          const LBMReal &vx3)
+{
+    LBMReal cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3);
 
-     feq[ZERO] = UbMath::c8o27 * (drho - cu_sq);
-     feq[E] = UbMath::c2o27 * (drho + 3.0 * (vx1)+UbMath::c9o2 * (vx1) * (vx1)-cu_sq);
-     feq[W] = UbMath::c2o27 * (drho + 3.0 * (-vx1) + UbMath::c9o2 * (-vx1) * (-vx1) - cu_sq);
-     feq[N] = UbMath::c2o27 * (drho + 3.0 * (vx2)+UbMath::c9o2 * (vx2) * (vx2)-cu_sq);
-     feq[S] = UbMath::c2o27 * (drho + 3.0 * (-vx2) + UbMath::c9o2 * (-vx2) * (-vx2) - cu_sq);
-     feq[T] = UbMath::c2o27 * (drho + 3.0 * (vx3)+UbMath::c9o2 * (vx3) * (vx3)-cu_sq);
-     feq[B] = UbMath::c2o27 * (drho + 3.0 * (-vx3) + UbMath::c9o2 * (-vx3) * (-vx3) - cu_sq);
-     feq[NE] = UbMath::c1o54 * (drho + 3.0 * (vx1 + vx2) + UbMath::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq);
-     feq[SW] = UbMath::c1o54 * (drho + 3.0 * (-vx1 - vx2) + UbMath::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq);
-     feq[SE] = UbMath::c1o54 * (drho + 3.0 * (vx1 - vx2) + UbMath::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq);
-     feq[NW] = UbMath::c1o54 * (drho + 3.0 * (-vx1 + vx2) + UbMath::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq);
-     feq[TE] = UbMath::c1o54 * (drho + 3.0 * (vx1 + vx3) + UbMath::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq);
-     feq[BW] = UbMath::c1o54 * (drho + 3.0 * (-vx1 - vx3) + UbMath::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq);
-     feq[BE] = UbMath::c1o54 * (drho + 3.0 * (vx1 - vx3) + UbMath::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq);
-     feq[TW] = UbMath::c1o54 * (drho + 3.0 * (-vx1 + vx3) + UbMath::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq);
-     feq[TN] = UbMath::c1o54 * (drho + 3.0 * (vx2 + vx3) + UbMath::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq);
-     feq[BS] = UbMath::c1o54 * (drho + 3.0 * (-vx2 - vx3) + UbMath::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq);
-     feq[BN] = UbMath::c1o54 * (drho + 3.0 * (vx2 - vx3) + UbMath::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq);
-     feq[TS] = UbMath::c1o54 * (drho + 3.0 * (-vx2 + vx3) + UbMath::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq);
-     feq[TNE] = UbMath::c1o216 * (drho + 3.0 * (vx1 + vx2 + vx3) + UbMath::c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq);
-     feq[BSW] = UbMath::c1o216 * (drho + 3.0 * (-vx1 - vx2 - vx3) + UbMath::c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq);
-     feq[BNE] = UbMath::c1o216 * (drho + 3.0 * (vx1 + vx2 - vx3) + UbMath::c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq);
-     feq[TSW] = UbMath::c1o216 * (drho + 3.0 * (-vx1 - vx2 + vx3) + UbMath::c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq);
-     feq[TSE] = UbMath::c1o216 * (drho + 3.0 * (vx1 - vx2 + vx3) + UbMath::c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq);
-     feq[BNW] = UbMath::c1o216 * (drho + 3.0 * (-vx1 + vx2 - vx3) + UbMath::c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq);
-     feq[BSE] = UbMath::c1o216 * (drho + 3.0 * (vx1 - vx2 - vx3) + UbMath::c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq);
-     feq[TNW] = UbMath::c1o216 * (drho + 3.0 * (-vx1 + vx2 + vx3) + UbMath::c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq);
-  }
-  //////////////////////////////////////////////////////////////////////////
-  static inline float getBoundaryVelocityForDirection(const int& direction, const float& bcVelocityX1, const float& bcVelocityX2, const float& bcVelocityX3)
-  {
-     switch (direction)
-     {
-     case E:   return (float)(UbMath::c4o9 * (+bcVelocityX1));
-     case W:   return (float)(UbMath::c4o9 * (-bcVelocityX1));
-     case N:   return (float)(UbMath::c4o9 * (+bcVelocityX2));
-     case S:   return (float)(UbMath::c4o9 * (-bcVelocityX2));
-     case T:   return (float)(UbMath::c4o9 * (+bcVelocityX3));
-     case B:   return (float)(UbMath::c4o9 * (-bcVelocityX3));
-     case NE:  return (float)(UbMath::c1o9 * (+bcVelocityX1 + bcVelocityX2));
-     case SW:  return (float)(UbMath::c1o9 * (-bcVelocityX1 - bcVelocityX2));
-     case SE:  return (float)(UbMath::c1o9 * (+bcVelocityX1 - bcVelocityX2));
-     case NW:  return (float)(UbMath::c1o9 * (-bcVelocityX1 + bcVelocityX2));
-     case TE:  return (float)(UbMath::c1o9 * (+bcVelocityX1 + bcVelocityX3));
-     case BW:  return (float)(UbMath::c1o9 * (-bcVelocityX1 - bcVelocityX3));
-     case BE:  return (float)(UbMath::c1o9 * (+bcVelocityX1 - bcVelocityX3));
-     case TW:  return (float)(UbMath::c1o9 * (-bcVelocityX1 + bcVelocityX3));
-     case TN:  return (float)(UbMath::c1o9 * (+bcVelocityX2 + bcVelocityX3));
-     case BS:  return (float)(UbMath::c1o9 * (-bcVelocityX2 - bcVelocityX3));
-     case BN:  return (float)(UbMath::c1o9 * (+bcVelocityX2 - bcVelocityX3));
-     case TS:  return (float)(UbMath::c1o9 * (-bcVelocityX2 + bcVelocityX3));
-     case TNE: return (float)(UbMath::c1o36 * (+bcVelocityX1 + bcVelocityX2 + bcVelocityX3));
-     case BSW: return (float)(UbMath::c1o36 * (-bcVelocityX1 - bcVelocityX2 - bcVelocityX3));
-     case BNE: return (float)(UbMath::c1o36 * (+bcVelocityX1 + bcVelocityX2 - bcVelocityX3));
-     case TSW: return (float)(UbMath::c1o36 * (-bcVelocityX1 - bcVelocityX2 + bcVelocityX3));
-     case TSE: return (float)(UbMath::c1o36 * (+bcVelocityX1 - bcVelocityX2 + bcVelocityX3));
-     case BNW: return (float)(UbMath::c1o36 * (-bcVelocityX1 + bcVelocityX2 - bcVelocityX3));
-     case BSE: return (float)(UbMath::c1o36 * (+bcVelocityX1 - bcVelocityX2 - bcVelocityX3));
-     case TNW: return (float)(UbMath::c1o36 * (-bcVelocityX1 + bcVelocityX2 + bcVelocityX3));
-     default: throw UbException(UB_EXARGS, "unknown direction");
-     }
-  }
-  /*=====================================================================*/
-  static const int& getInvertDirection(const int& direction)
-  {
+    feq[REST] = UbMath::c8o27 * (drho - cu_sq);
+    feq[E]    = UbMath::c2o27 * (drho + 3.0 * (vx1) + UbMath::c9o2 * (vx1) * (vx1)-cu_sq);
+    feq[W]    = UbMath::c2o27 * (drho + 3.0 * (-vx1) + UbMath::c9o2 * (-vx1) * (-vx1) - cu_sq);
+    feq[N]    = UbMath::c2o27 * (drho + 3.0 * (vx2) + UbMath::c9o2 * (vx2) * (vx2)-cu_sq);
+    feq[S]    = UbMath::c2o27 * (drho + 3.0 * (-vx2) + UbMath::c9o2 * (-vx2) * (-vx2) - cu_sq);
+    feq[T]    = UbMath::c2o27 * (drho + 3.0 * (vx3) + UbMath::c9o2 * (vx3) * (vx3)-cu_sq);
+    feq[B]    = UbMath::c2o27 * (drho + 3.0 * (-vx3) + UbMath::c9o2 * (-vx3) * (-vx3) - cu_sq);
+    feq[NE]   = UbMath::c1o54 * (drho + 3.0 * (vx1 + vx2) + UbMath::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq);
+    feq[SW]   = UbMath::c1o54 * (drho + 3.0 * (-vx1 - vx2) + UbMath::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq);
+    feq[SE]   = UbMath::c1o54 * (drho + 3.0 * (vx1 - vx2) + UbMath::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq);
+    feq[NW]   = UbMath::c1o54 * (drho + 3.0 * (-vx1 + vx2) + UbMath::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq);
+    feq[TE]   = UbMath::c1o54 * (drho + 3.0 * (vx1 + vx3) + UbMath::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq);
+    feq[BW]   = UbMath::c1o54 * (drho + 3.0 * (-vx1 - vx3) + UbMath::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq);
+    feq[BE]   = UbMath::c1o54 * (drho + 3.0 * (vx1 - vx3) + UbMath::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq);
+    feq[TW]   = UbMath::c1o54 * (drho + 3.0 * (-vx1 + vx3) + UbMath::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq);
+    feq[TN]   = UbMath::c1o54 * (drho + 3.0 * (vx2 + vx3) + UbMath::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq);
+    feq[BS]   = UbMath::c1o54 * (drho + 3.0 * (-vx2 - vx3) + UbMath::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq);
+    feq[BN]   = UbMath::c1o54 * (drho + 3.0 * (vx2 - vx3) + UbMath::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq);
+    feq[TS]   = UbMath::c1o54 * (drho + 3.0 * (-vx2 + vx3) + UbMath::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq);
+    feq[TNE]  = UbMath::c1o216 *
+               (drho + 3.0 * (vx1 + vx2 + vx3) + UbMath::c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq);
+    feq[BSW] = UbMath::c1o216 *
+               (drho + 3.0 * (-vx1 - vx2 - vx3) + UbMath::c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq);
+    feq[BNE] = UbMath::c1o216 *
+               (drho + 3.0 * (vx1 + vx2 - vx3) + UbMath::c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq);
+    feq[TSW] = UbMath::c1o216 *
+               (drho + 3.0 * (-vx1 - vx2 + vx3) + UbMath::c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq);
+    feq[TSE] = UbMath::c1o216 *
+               (drho + 3.0 * (vx1 - vx2 + vx3) + UbMath::c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq);
+    feq[BNW] = UbMath::c1o216 *
+               (drho + 3.0 * (-vx1 + vx2 - vx3) + UbMath::c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq);
+    feq[BSE] = UbMath::c1o216 *
+               (drho + 3.0 * (vx1 - vx2 - vx3) + UbMath::c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq);
+    feq[TNW] = UbMath::c1o216 *
+               (drho + 3.0 * (-vx1 + vx2 + vx3) + UbMath::c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq);
+}
+//////////////////////////////////////////////////////////////////////////
+static inline float getBoundaryVelocityForDirection(const int &direction, const float &bcVelocityX1,
+                                                    const float &bcVelocityX2, const float &bcVelocityX3)
+{
+    switch (direction) {
+        case E:
+            return (float)(UbMath::c4o9 * (+bcVelocityX1));
+        case W:
+            return (float)(UbMath::c4o9 * (-bcVelocityX1));
+        case N:
+            return (float)(UbMath::c4o9 * (+bcVelocityX2));
+        case S:
+            return (float)(UbMath::c4o9 * (-bcVelocityX2));
+        case T:
+            return (float)(UbMath::c4o9 * (+bcVelocityX3));
+        case B:
+            return (float)(UbMath::c4o9 * (-bcVelocityX3));
+        case NE:
+            return (float)(UbMath::c1o9 * (+bcVelocityX1 + bcVelocityX2));
+        case SW:
+            return (float)(UbMath::c1o9 * (-bcVelocityX1 - bcVelocityX2));
+        case SE:
+            return (float)(UbMath::c1o9 * (+bcVelocityX1 - bcVelocityX2));
+        case NW:
+            return (float)(UbMath::c1o9 * (-bcVelocityX1 + bcVelocityX2));
+        case TE:
+            return (float)(UbMath::c1o9 * (+bcVelocityX1 + bcVelocityX3));
+        case BW:
+            return (float)(UbMath::c1o9 * (-bcVelocityX1 - bcVelocityX3));
+        case BE:
+            return (float)(UbMath::c1o9 * (+bcVelocityX1 - bcVelocityX3));
+        case TW:
+            return (float)(UbMath::c1o9 * (-bcVelocityX1 + bcVelocityX3));
+        case TN:
+            return (float)(UbMath::c1o9 * (+bcVelocityX2 + bcVelocityX3));
+        case BS:
+            return (float)(UbMath::c1o9 * (-bcVelocityX2 - bcVelocityX3));
+        case BN:
+            return (float)(UbMath::c1o9 * (+bcVelocityX2 - bcVelocityX3));
+        case TS:
+            return (float)(UbMath::c1o9 * (-bcVelocityX2 + bcVelocityX3));
+        case TNE:
+            return (float)(UbMath::c1o36 * (+bcVelocityX1 + bcVelocityX2 + bcVelocityX3));
+        case BSW:
+            return (float)(UbMath::c1o36 * (-bcVelocityX1 - bcVelocityX2 - bcVelocityX3));
+        case BNE:
+            return (float)(UbMath::c1o36 * (+bcVelocityX1 + bcVelocityX2 - bcVelocityX3));
+        case TSW:
+            return (float)(UbMath::c1o36 * (-bcVelocityX1 - bcVelocityX2 + bcVelocityX3));
+        case TSE:
+            return (float)(UbMath::c1o36 * (+bcVelocityX1 - bcVelocityX2 + bcVelocityX3));
+        case BNW:
+            return (float)(UbMath::c1o36 * (-bcVelocityX1 + bcVelocityX2 - bcVelocityX3));
+        case BSE:
+            return (float)(UbMath::c1o36 * (+bcVelocityX1 - bcVelocityX2 - bcVelocityX3));
+        case TNW:
+            return (float)(UbMath::c1o36 * (-bcVelocityX1 + bcVelocityX2 + bcVelocityX3));
+        default:
+            throw UbException(UB_EXARGS, "unknown direction");
+    }
+}
+/*=====================================================================*/
+static const int &getInvertDirection(const int &direction)
+{
 #ifdef _DEBUG
-     if (direction<STARTDIR || direction>ENDDIR)
+    if (direction < STARTDIR || direction > ENDDIR)
         throw UbException(UB_EXARGS, "unknown direction");
 #endif
-     return INVDIR[direction];
-  }
-  /*=====================================================================*/
-  static void getLBMDirections(std::vector<int>& dirs, bool onlyLBdirs = false)
-  {
-     std::vector<int> D3Q27Dirs;
-     if (onlyLBdirs) /*FSTARTDIR->FENDDIR*/
-     {
+    return INVDIR[direction];
+}
+/*=====================================================================*/
+static void getLBMDirections(std::vector<int> &dirs, bool onlyLBdirs = false)
+{
+    std::vector<int> D3Q27Dirs;
+    if (onlyLBdirs) /*FSTARTDIR->FENDDIR*/
+    {
         dirs.resize(FENDDIR + 1);
         for (int dir = FSTARTDIR; dir <= FENDDIR; ++dir)
-           dirs[dir] = dir;
-     }
-     else /*STARTDIR->ENDDIR*/
-     {
+            dirs[dir] = dir;
+    } else /*STARTDIR->ENDDIR*/
+    {
         dirs.resize(ENDDIR + 1);
         for (int dir = STARTDIR; dir <= ENDDIR; ++dir)
-           dirs[dir] = dir;
-     }
-  }
-  //////////////////////////////////////////////////////////////////////////
-  static std::vector<int> getEX(const int& exn)
-  {
-     std::vector<int> ex;
-     ex.resize(ENDDIR + 1);
-     switch (exn)
-     {
-     case 1:
-        for (int dir = STARTDIR; dir < ENDDIR; ++dir)
-           ex[dir] = DX1[dir];
-        break;
-     case 2:
-        for (int dir = STARTDIR; dir < ENDDIR; ++dir)
-           ex[dir] = DX2[dir];
-        break;
-     case 3:
-        for (int dir = STARTDIR; dir < ENDDIR; ++dir)
-           ex[dir] = DX3[dir];
-        break;
-     }
-     return ex;
-  }
-  //////////////////////////////////////////////////////////////////////////
-  static inline void calcDistanceToNeighbors(std::vector<double>& distNeigh, const double& deltaX1)
-  {
-     //distNeigh.resize(FENDDIR+1, UbMath::sqrt2*deltaX1);
-
-     distNeigh[E] = distNeigh[W] = distNeigh[N] = deltaX1;
-     distNeigh[S] = distNeigh[T] = distNeigh[B] = deltaX1;
-     distNeigh[NE] = distNeigh[NW] = distNeigh[SW] = distNeigh[SE] = UbMath::sqrt2 * deltaX1;
-     distNeigh[TE] = distNeigh[TN] = distNeigh[TW] = distNeigh[TS] = UbMath::sqrt2 * deltaX1;
-     distNeigh[BE] = distNeigh[BN] = distNeigh[BW] = distNeigh[BS] = UbMath::sqrt2 * deltaX1;
-     distNeigh[TNE] = distNeigh[TNW] = distNeigh[TSE] = distNeigh[TSW] = UbMath::sqrt3 * deltaX1;
-     distNeigh[BNE] = distNeigh[BNW] = distNeigh[BSE] = distNeigh[BSW] = UbMath::sqrt3 * deltaX1;
-  }
-  //////////////////////////////////////////////////////////////////////////
-  static inline void calcDistanceToNeighbors(std::vector<double>& distNeigh, const double& deltaX1, const double& deltaX2, const double& deltaX3)
-  {
-     //distNeigh.resize(FENDDIR+1, UbMath::sqrt2*deltaX1);
-     distNeigh[E] = distNeigh[W] = deltaX1;
-     distNeigh[N] = distNeigh[S] = deltaX2;
-     distNeigh[T] = distNeigh[B] = deltaX3;
-     distNeigh[NE] = distNeigh[NW] = distNeigh[SW] = distNeigh[SE] = sqrt(deltaX1 * deltaX1 + deltaX2 * deltaX2);
-     distNeigh[TE] = distNeigh[TN] = distNeigh[TW] = distNeigh[TS] = sqrt(deltaX1 * deltaX1 + deltaX3 * deltaX3);
-     distNeigh[BE] = distNeigh[BN] = distNeigh[BW] = distNeigh[BS] = sqrt(deltaX2 * deltaX2 + deltaX3 * deltaX3);
-     distNeigh[TNE] = distNeigh[TNW] = distNeigh[TSE] = distNeigh[TSW] = sqrt(deltaX1 * deltaX1 + deltaX2 * deltaX2 + deltaX3 * deltaX3);
-     distNeigh[BNE] = distNeigh[BNW] = distNeigh[BSE] = distNeigh[BSW] = sqrt(deltaX1 * deltaX1 + deltaX2 * deltaX2 + deltaX3 * deltaX3);
-  }
-  //////////////////////////////////////////////////////////////////////////
-  static inline void initRayVectors(double* const& rayX1, double* const& rayX2, double* const& rayX3)
-  {
-     int fdir;
-     double c1oS2 = UbMath::one_over_sqrt2;
-     double c1oS3 = UbMath::one_over_sqrt3;
-     fdir = E;  rayX1[fdir] = 1.0;   rayX2[fdir] = 0.0;   rayX3[fdir] = 0.0;
-     fdir = W;  rayX1[fdir] = -1.0;   rayX2[fdir] = 0.0;   rayX3[fdir] = 0.0;
-     fdir = N;  rayX1[fdir] = 0.0;   rayX2[fdir] = 1.0;   rayX3[fdir] = 0.0;
-     fdir = S;  rayX1[fdir] = 0.0;   rayX2[fdir] = -1.0;   rayX3[fdir] = 0.0;
-     fdir = T;  rayX1[fdir] = 0.0;   rayX2[fdir] = 0.0;   rayX3[fdir] = 1.0;
-     fdir = B;  rayX1[fdir] = 0.0;   rayX2[fdir] = 0.0;   rayX3[fdir] = -1.0;
-     fdir = NE; rayX1[fdir] = c1oS2; rayX2[fdir] = c1oS2; rayX3[fdir] = 0.0;
-     fdir = SW; rayX1[fdir] = -c1oS2; rayX2[fdir] = -c1oS2; rayX3[fdir] = 0.0;
-     fdir = SE; rayX1[fdir] = c1oS2; rayX2[fdir] = -c1oS2; rayX3[fdir] = 0.0;
-     fdir = NW; rayX1[fdir] = -c1oS2; rayX2[fdir] = c1oS2; rayX3[fdir] = 0.0;
-     fdir = TE; rayX1[fdir] = c1oS2; rayX2[fdir] = 0.0;    rayX3[fdir] = c1oS2;
-     fdir = BW; rayX1[fdir] = -c1oS2; rayX2[fdir] = 0.0;    rayX3[fdir] = -c1oS2;
-     fdir = BE; rayX1[fdir] = c1oS2; rayX2[fdir] = 0.0;    rayX3[fdir] = -c1oS2;
-     fdir = TW; rayX1[fdir] = -c1oS2; rayX2[fdir] = 0.0;    rayX3[fdir] = c1oS2;
-     fdir = TN; rayX1[fdir] = 0.0;   rayX2[fdir] = c1oS2;  rayX3[fdir] = c1oS2;
-     fdir = BS; rayX1[fdir] = 0.0;   rayX2[fdir] = -c1oS2;  rayX3[fdir] = -c1oS2;
-     fdir = BN; rayX1[fdir] = 0.0;   rayX2[fdir] = c1oS2;  rayX3[fdir] = -c1oS2;
-     fdir = TS; rayX1[fdir] = 0.0;   rayX2[fdir] = -c1oS2;  rayX3[fdir] = c1oS2;
-     fdir = TNE; rayX1[fdir] = c1oS3; rayX2[fdir] = c1oS3; rayX3[fdir] = c1oS3;
-     fdir = TNW; rayX1[fdir] = -c1oS3; rayX2[fdir] = c1oS3; rayX3[fdir] = c1oS3;
-     fdir = TSE; rayX1[fdir] = c1oS3; rayX2[fdir] = -c1oS3; rayX3[fdir] = c1oS3;
-     fdir = TSW; rayX1[fdir] = -c1oS3; rayX2[fdir] = -c1oS3; rayX3[fdir] = c1oS3;
-     fdir = BNE; rayX1[fdir] = c1oS3; rayX2[fdir] = c1oS3; rayX3[fdir] = -c1oS3;
-     fdir = BNW; rayX1[fdir] = -c1oS3; rayX2[fdir] = c1oS3; rayX3[fdir] = -c1oS3;
-     fdir = BSE; rayX1[fdir] = c1oS3; rayX2[fdir] = -c1oS3; rayX3[fdir] = -c1oS3;
-     fdir = BSW; rayX1[fdir] = -c1oS3; rayX2[fdir] = -c1oS3; rayX3[fdir] = -c1oS3;
-  }
-  //////////////////////////////////////////////////////////////////////////
-  static inline LBMReal calcPress(const LBMReal* const f, LBMReal rho, LBMReal vx1, LBMReal vx2, LBMReal vx3)
-  {
-     LBMReal op = 1.0;
-     return ((f[E] + f[W] + f[N] + f[S] + f[T] + f[B] + 2. * (f[NE] + f[SW] + f[SE] + f[NW] + f[TE] + f[BW] + f[BE] + f[TW] + f[TN] + f[BS] + f[BN] + f[TS]) +
-        3. * (f[TNE] + f[TSW] + f[TSE] + f[TNW] + f[BNE] + f[BSW] + f[BSE] + f[BNW]) - (vx1 * vx1 + vx2 * vx2 + vx3 * vx3)) * (1 - 0.5 * op) + op * 0.5 * (rho)) * UbMath::c1o3;
-
-  }
-  //////////////////////////////////////////////////////////////////////////
-  static inline LBMReal getShearRate(const LBMReal* const f, LBMReal collFactorF)
-  {
-     LBMReal mfcbb = f[E];
-     LBMReal mfbcb = f[N];
-     LBMReal mfbbc = f[T];
-     LBMReal mfccb = f[NE];
-     LBMReal mfacb = f[NW];
-     LBMReal mfcbc = f[TE];
-     LBMReal mfabc = f[TW];
-     LBMReal mfbcc = f[TN];
-     LBMReal mfbac = f[TS];
-     LBMReal mfccc = f[TNE];
-     LBMReal mfacc = f[TNW];
-     LBMReal mfcac = f[TSE];
-     LBMReal mfaac = f[TSW];
-
-     LBMReal mfabb = f[W];
-     LBMReal mfbab = f[S];
-     LBMReal mfbba = f[B];
-     LBMReal mfaab = f[SW];
-     LBMReal mfcab = f[SE];
-     LBMReal mfaba = f[BW];
-     LBMReal mfcba = f[BE];
-     LBMReal mfbaa = f[BS];
-     LBMReal mfbca = f[BN];
-     LBMReal mfaaa = f[BSW];
-     LBMReal mfcaa = f[BSE];
-     LBMReal mfaca = f[BNW];
-     LBMReal mfcca = f[BNE];
-
-     LBMReal mfbbb = f[ZERO];
-
-     LBMReal m0, m1, m2;
-
-     LBMReal rho = (mfaaa + mfaac + mfaca + mfcaa + mfacc + mfcac + mfccc + mfcca)
-        + (mfaab + mfacb + mfcab + mfccb) + (mfaba + mfabc + mfcba + mfcbc) + (mfbaa + mfbac + mfbca + mfbcc)
-        + (mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc) + mfbbb;
-
-     LBMReal vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
-        (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
-        (mfcbb - mfabb));
-     LBMReal vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
-        (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
-        (mfbcb - mfbab));
-     LBMReal vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
-        (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
-        (mfbbc - mfbba));
-
-     //LBMReal OxxPyyPzz = 1.;
+            dirs[dir] = dir;
+    }
+}
+//////////////////////////////////////////////////////////////////////////
+static std::vector<int> getEX(const int &exn)
+{
+    std::vector<int> ex;
+    ex.resize(ENDDIR + 1);
+    switch (exn) {
+        case 1:
+            for (int dir = STARTDIR; dir < ENDDIR; ++dir)
+                ex[dir] = DX1[dir];
+            break;
+        case 2:
+            for (int dir = STARTDIR; dir < ENDDIR; ++dir)
+                ex[dir] = DX2[dir];
+            break;
+        case 3:
+            for (int dir = STARTDIR; dir < ENDDIR; ++dir)
+                ex[dir] = DX3[dir];
+            break;
+    }
+    return ex;
+}
+//////////////////////////////////////////////////////////////////////////
+static inline void calcDistanceToNeighbors(std::vector<double> &distNeigh, const double &deltaX1)
+{
+    // distNeigh.resize(FENDDIR+1, UbMath::sqrt2*deltaX1);
 
-     LBMReal oMdrho;
+    distNeigh[E] = distNeigh[W] = distNeigh[N] = deltaX1;
+    distNeigh[S] = distNeigh[T] = distNeigh[B] = deltaX1;
+    distNeigh[NE] = distNeigh[NW] = distNeigh[SW] = distNeigh[SE] = UbMath::sqrt2 * deltaX1;
+    distNeigh[TE] = distNeigh[TN] = distNeigh[TW] = distNeigh[TS] = UbMath::sqrt2 * deltaX1;
+    distNeigh[BE] = distNeigh[BN] = distNeigh[BW] = distNeigh[BS] = UbMath::sqrt2 * deltaX1;
+    distNeigh[TNE] = distNeigh[TNW] = distNeigh[TSE] = distNeigh[TSW] = UbMath::sqrt3 * deltaX1;
+    distNeigh[BNE] = distNeigh[BNW] = distNeigh[BSE] = distNeigh[BSW] = UbMath::sqrt3 * deltaX1;
+}
+//////////////////////////////////////////////////////////////////////////
+static inline void calcDistanceToNeighbors(std::vector<double> &distNeigh, const double &deltaX1, const double &deltaX2,
+                                           const double &deltaX3)
+{
+    // distNeigh.resize(FENDDIR+1, UbMath::sqrt2*deltaX1);
+    distNeigh[E] = distNeigh[W] = deltaX1;
+    distNeigh[N] = distNeigh[S] = deltaX2;
+    distNeigh[T] = distNeigh[B] = deltaX3;
+    distNeigh[NE] = distNeigh[NW] = distNeigh[SW] = distNeigh[SE] = sqrt(deltaX1 * deltaX1 + deltaX2 * deltaX2);
+    distNeigh[TE] = distNeigh[TN] = distNeigh[TW] = distNeigh[TS] = sqrt(deltaX1 * deltaX1 + deltaX3 * deltaX3);
+    distNeigh[BE] = distNeigh[BN] = distNeigh[BW] = distNeigh[BS] = sqrt(deltaX2 * deltaX2 + deltaX3 * deltaX3);
+    distNeigh[TNE] = distNeigh[TNW] = distNeigh[TSE] = distNeigh[TSW] =
+        sqrt(deltaX1 * deltaX1 + deltaX2 * deltaX2 + deltaX3 * deltaX3);
+    distNeigh[BNE] = distNeigh[BNW] = distNeigh[BSE] = distNeigh[BSW] =
+        sqrt(deltaX1 * deltaX1 + deltaX2 * deltaX2 + deltaX3 * deltaX3);
+}
+//////////////////////////////////////////////////////////////////////////
+static inline void initRayVectors(double *const &rayX1, double *const &rayX2, double *const &rayX3)
+{
+    int fdir;
+    double c1oS2 = UbMath::one_over_sqrt2;
+    double c1oS3 = UbMath::one_over_sqrt3;
+    fdir         = E;
+    rayX1[fdir]  = 1.0;
+    rayX2[fdir]  = 0.0;
+    rayX3[fdir]  = 0.0;
+    fdir         = W;
+    rayX1[fdir]  = -1.0;
+    rayX2[fdir]  = 0.0;
+    rayX3[fdir]  = 0.0;
+    fdir         = N;
+    rayX1[fdir]  = 0.0;
+    rayX2[fdir]  = 1.0;
+    rayX3[fdir]  = 0.0;
+    fdir         = S;
+    rayX1[fdir]  = 0.0;
+    rayX2[fdir]  = -1.0;
+    rayX3[fdir]  = 0.0;
+    fdir         = T;
+    rayX1[fdir]  = 0.0;
+    rayX2[fdir]  = 0.0;
+    rayX3[fdir]  = 1.0;
+    fdir         = B;
+    rayX1[fdir]  = 0.0;
+    rayX2[fdir]  = 0.0;
+    rayX3[fdir]  = -1.0;
+    fdir         = NE;
+    rayX1[fdir]  = c1oS2;
+    rayX2[fdir]  = c1oS2;
+    rayX3[fdir]  = 0.0;
+    fdir         = SW;
+    rayX1[fdir]  = -c1oS2;
+    rayX2[fdir]  = -c1oS2;
+    rayX3[fdir]  = 0.0;
+    fdir         = SE;
+    rayX1[fdir]  = c1oS2;
+    rayX2[fdir]  = -c1oS2;
+    rayX3[fdir]  = 0.0;
+    fdir         = NW;
+    rayX1[fdir]  = -c1oS2;
+    rayX2[fdir]  = c1oS2;
+    rayX3[fdir]  = 0.0;
+    fdir         = TE;
+    rayX1[fdir]  = c1oS2;
+    rayX2[fdir]  = 0.0;
+    rayX3[fdir]  = c1oS2;
+    fdir         = BW;
+    rayX1[fdir]  = -c1oS2;
+    rayX2[fdir]  = 0.0;
+    rayX3[fdir]  = -c1oS2;
+    fdir         = BE;
+    rayX1[fdir]  = c1oS2;
+    rayX2[fdir]  = 0.0;
+    rayX3[fdir]  = -c1oS2;
+    fdir         = TW;
+    rayX1[fdir]  = -c1oS2;
+    rayX2[fdir]  = 0.0;
+    rayX3[fdir]  = c1oS2;
+    fdir         = TN;
+    rayX1[fdir]  = 0.0;
+    rayX2[fdir]  = c1oS2;
+    rayX3[fdir]  = c1oS2;
+    fdir         = BS;
+    rayX1[fdir]  = 0.0;
+    rayX2[fdir]  = -c1oS2;
+    rayX3[fdir]  = -c1oS2;
+    fdir         = BN;
+    rayX1[fdir]  = 0.0;
+    rayX2[fdir]  = c1oS2;
+    rayX3[fdir]  = -c1oS2;
+    fdir         = TS;
+    rayX1[fdir]  = 0.0;
+    rayX2[fdir]  = -c1oS2;
+    rayX3[fdir]  = c1oS2;
+    fdir         = TNE;
+    rayX1[fdir]  = c1oS3;
+    rayX2[fdir]  = c1oS3;
+    rayX3[fdir]  = c1oS3;
+    fdir         = TNW;
+    rayX1[fdir]  = -c1oS3;
+    rayX2[fdir]  = c1oS3;
+    rayX3[fdir]  = c1oS3;
+    fdir         = TSE;
+    rayX1[fdir]  = c1oS3;
+    rayX2[fdir]  = -c1oS3;
+    rayX3[fdir]  = c1oS3;
+    fdir         = TSW;
+    rayX1[fdir]  = -c1oS3;
+    rayX2[fdir]  = -c1oS3;
+    rayX3[fdir]  = c1oS3;
+    fdir         = BNE;
+    rayX1[fdir]  = c1oS3;
+    rayX2[fdir]  = c1oS3;
+    rayX3[fdir]  = -c1oS3;
+    fdir         = BNW;
+    rayX1[fdir]  = -c1oS3;
+    rayX2[fdir]  = c1oS3;
+    rayX3[fdir]  = -c1oS3;
+    fdir         = BSE;
+    rayX1[fdir]  = c1oS3;
+    rayX2[fdir]  = -c1oS3;
+    rayX3[fdir]  = -c1oS3;
+    fdir         = BSW;
+    rayX1[fdir]  = -c1oS3;
+    rayX2[fdir]  = -c1oS3;
+    rayX3[fdir]  = -c1oS3;
+}
+//////////////////////////////////////////////////////////////////////////
+static inline LBMReal calcPress(const LBMReal *const f, LBMReal rho, LBMReal vx1, LBMReal vx2, LBMReal vx3)
+{
+    LBMReal op = 1.0;
+    return ((f[E] + f[W] + f[N] + f[S] + f[T] + f[B] +
+             2. * (f[NE] + f[SW] + f[SE] + f[NW] + f[TE] + f[BW] + f[BE] + f[TW] + f[TN] + f[BS] + f[BN] + f[TS]) +
+             3. * (f[TNE] + f[TSW] + f[TSE] + f[TNW] + f[BNE] + f[BSW] + f[BSE] + f[BNW]) -
+             (vx1 * vx1 + vx2 * vx2 + vx3 * vx3)) *
+                (1 - 0.5 * op) +
+            op * 0.5 * (rho)) *
+           UbMath::c1o3;
+}
+//////////////////////////////////////////////////////////////////////////
+static inline LBMReal getShearRate(const LBMReal *const f, LBMReal collFactorF)
+{
+    LBMReal mfcbb = f[E];
+    LBMReal mfbcb = f[N];
+    LBMReal mfbbc = f[T];
+    LBMReal mfccb = f[NE];
+    LBMReal mfacb = f[NW];
+    LBMReal mfcbc = f[TE];
+    LBMReal mfabc = f[TW];
+    LBMReal mfbcc = f[TN];
+    LBMReal mfbac = f[TS];
+    LBMReal mfccc = f[TNE];
+    LBMReal mfacc = f[TNW];
+    LBMReal mfcac = f[TSE];
+    LBMReal mfaac = f[TSW];
 
-     oMdrho = mfccc + mfaaa;
-     m0 = mfaca + mfcac;
-     m1 = mfacc + mfcaa;
-     m2 = mfaac + mfcca;
-     oMdrho += m0;
-     m1 += m2;
-     oMdrho += m1;
-     m0 = mfbac + mfbca;
-     m1 = mfbaa + mfbcc;
-     m0 += m1;
-     m1 = mfabc + mfcba;
-     m2 = mfaba + mfcbc;
-     m1 += m2;
-     m0 += m1;
-     m1 = mfacb + mfcab;
-     m2 = mfaab + mfccb;
-     m1 += m2;
-     m0 += m1;
-     oMdrho += m0;
-     m0 = mfabb + mfcbb;
-     m1 = mfbab + mfbcb;
-     m2 = mfbba + mfbbc;
-     m0 += m1 + m2;
-     m0 += mfbbb; //hat gefehlt
-     oMdrho = 1. - (oMdrho + m0);
+    LBMReal mfabb = f[W];
+    LBMReal mfbab = f[S];
+    LBMReal mfbba = f[B];
+    LBMReal mfaab = f[SW];
+    LBMReal mfcab = f[SE];
+    LBMReal mfaba = f[BW];
+    LBMReal mfcba = f[BE];
+    LBMReal mfbaa = f[BS];
+    LBMReal mfbca = f[BN];
+    LBMReal mfaaa = f[BSW];
+    LBMReal mfcaa = f[BSE];
+    LBMReal mfaca = f[BNW];
+    LBMReal mfcca = f[BNE];
 
-     LBMReal vx2;
-     LBMReal vy2;
-     LBMReal vz2;
-     vx2 = vvx * vvx;
-     vy2 = vvy * vvy;
-     vz2 = vvz * vvz;
-     ////////////////////////////////////////////////////////////////////////////////////
-     //Hin
-     ////////////////////////////////////////////////////////////////////////////////////
-     // mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36  Konditionieren
-     ////////////////////////////////////////////////////////////////////////////////////
-     // Z - Dir
-     m2 = mfaaa + mfaac;
-     m1 = mfaac - mfaaa;
-     m0 = m2 + mfaab;
-     mfaaa = m0;
-     m0 += UbMath::c1o36 * oMdrho;
-     mfaab = m1 - m0 * vvz;
-     mfaac = m2 - 2. * m1 * vvz + vz2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfaba + mfabc;
-     m1 = mfabc - mfaba;
-     m0 = m2 + mfabb;
-     mfaba = m0;
-     m0 += UbMath::c1o9 * oMdrho;
-     mfabb = m1 - m0 * vvz;
-     mfabc = m2 - 2. * m1 * vvz + vz2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfaca + mfacc;
-     m1 = mfacc - mfaca;
-     m0 = m2 + mfacb;
-     mfaca = m0;
-     m0 += UbMath::c1o36 * oMdrho;
-     mfacb = m1 - m0 * vvz;
-     mfacc = m2 - 2. * m1 * vvz + vz2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfbaa + mfbac;
-     m1 = mfbac - mfbaa;
-     m0 = m2 + mfbab;
-     mfbaa = m0;
-     m0 += UbMath::c1o9 * oMdrho;
-     mfbab = m1 - m0 * vvz;
-     mfbac = m2 - 2. * m1 * vvz + vz2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfbba + mfbbc;
-     m1 = mfbbc - mfbba;
-     m0 = m2 + mfbbb;
-     mfbba = m0;
-     m0 += UbMath::c4o9 * oMdrho;
-     mfbbb = m1 - m0 * vvz;
-     mfbbc = m2 - 2. * m1 * vvz + vz2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfbca + mfbcc;
-     m1 = mfbcc - mfbca;
-     m0 = m2 + mfbcb;
-     mfbca = m0;
-     m0 += UbMath::c1o9 * oMdrho;
-     mfbcb = m1 - m0 * vvz;
-     mfbcc = m2 - 2. * m1 * vvz + vz2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfcaa + mfcac;
-     m1 = mfcac - mfcaa;
-     m0 = m2 + mfcab;
-     mfcaa = m0;
-     m0 += UbMath::c1o36 * oMdrho;
-     mfcab = m1 - m0 * vvz;
-     mfcac = m2 - 2. * m1 * vvz + vz2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfcba + mfcbc;
-     m1 = mfcbc - mfcba;
-     m0 = m2 + mfcbb;
-     mfcba = m0;
-     m0 += UbMath::c1o9 * oMdrho;
-     mfcbb = m1 - m0 * vvz;
-     mfcbc = m2 - 2. * m1 * vvz + vz2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfcca + mfccc;
-     m1 = mfccc - mfcca;
-     m0 = m2 + mfccb;
-     mfcca = m0;
-     m0 += UbMath::c1o36 * oMdrho;
-     mfccb = m1 - m0 * vvz;
-     mfccc = m2 - 2. * m1 * vvz + vz2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     ////////////////////////////////////////////////////////////////////////////////////
-     // mit  1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren
-     ////////////////////////////////////////////////////////////////////////////////////
-     // Y - Dir
-     m2 = mfaaa + mfaca;
-     m1 = mfaca - mfaaa;
-     m0 = m2 + mfaba;
-     mfaaa = m0;
-     m0 += UbMath::c1o6 * oMdrho;
-     mfaba = m1 - m0 * vvy;
-     mfaca = m2 - 2. * m1 * vvy + vy2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfaab + mfacb;
-     m1 = mfacb - mfaab;
-     m0 = m2 + mfabb;
-     mfaab = m0;
-     mfabb = m1 - m0 * vvy;
-     mfacb = m2 - 2. * m1 * vvy + vy2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfaac + mfacc;
-     m1 = mfacc - mfaac;
-     m0 = m2 + mfabc;
-     mfaac = m0;
-     m0 += UbMath::c1o18 * oMdrho;
-     mfabc = m1 - m0 * vvy;
-     mfacc = m2 - 2. * m1 * vvy + vy2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfbaa + mfbca;
-     m1 = mfbca - mfbaa;
-     m0 = m2 + mfbba;
-     mfbaa = m0;
-     m0 += UbMath::c2o3 * oMdrho;
-     mfbba = m1 - m0 * vvy;
-     mfbca = m2 - 2. * m1 * vvy + vy2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfbab + mfbcb;
-     m1 = mfbcb - mfbab;
-     m0 = m2 + mfbbb;
-     mfbab = m0;
-     mfbbb = m1 - m0 * vvy;
-     mfbcb = m2 - 2. * m1 * vvy + vy2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfbac + mfbcc;
-     m1 = mfbcc - mfbac;
-     m0 = m2 + mfbbc;
-     mfbac = m0;
-     m0 += UbMath::c2o9 * oMdrho;
-     mfbbc = m1 - m0 * vvy;
-     mfbcc = m2 - 2. * m1 * vvy + vy2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfcaa + mfcca;
-     m1 = mfcca - mfcaa;
-     m0 = m2 + mfcba;
-     mfcaa = m0;
-     m0 += UbMath::c1o6 * oMdrho;
-     mfcba = m1 - m0 * vvy;
-     mfcca = m2 - 2. * m1 * vvy + vy2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfcab + mfccb;
-     m1 = mfccb - mfcab;
-     m0 = m2 + mfcbb;
-     mfcab = m0;
-     mfcbb = m1 - m0 * vvy;
-     mfccb = m2 - 2. * m1 * vvy + vy2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfcac + mfccc;
-     m1 = mfccc - mfcac;
-     m0 = m2 + mfcbc;
-     mfcac = m0;
-     m0 += UbMath::c1o18 * oMdrho;
-     mfcbc = m1 - m0 * vvy;
-     mfccc = m2 - 2. * m1 * vvy + vy2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     ////////////////////////////////////////////////////////////////////////////////////
-     // mit     1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9            Konditionieren
-     ////////////////////////////////////////////////////////////////////////////////////
-     // X - Dir
-     m2 = mfaaa + mfcaa;
-     m1 = mfcaa - mfaaa;
-     m0 = m2 + mfbaa;
-     mfaaa = m0;
-     m0 += 1. * oMdrho;
-     mfbaa = m1 - m0 * vvx;
-     mfcaa = m2 - 2. * m1 * vvx + vx2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfaba + mfcba;
-     m1 = mfcba - mfaba;
-     m0 = m2 + mfbba;
-     mfaba = m0;
-     mfbba = m1 - m0 * vvx;
-     mfcba = m2 - 2. * m1 * vvx + vx2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfaca + mfcca;
-     m1 = mfcca - mfaca;
-     m0 = m2 + mfbca;
-     mfaca = m0;
-     m0 += UbMath::c1o3 * oMdrho;
-     mfbca = m1 - m0 * vvx;
-     mfcca = m2 - 2. * m1 * vvx + vx2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfaab + mfcab;
-     m1 = mfcab - mfaab;
-     m0 = m2 + mfbab;
-     mfaab = m0;
-     mfbab = m1 - m0 * vvx;
-     mfcab = m2 - 2. * m1 * vvx + vx2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfabb + mfcbb;
-     m1 = mfcbb - mfabb;
-     m0 = m2 + mfbbb;
-     mfabb = m0;
-     mfbbb = m1 - m0 * vvx;
-     mfcbb = m2 - 2. * m1 * vvx + vx2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfacb + mfccb;
-     m1 = mfccb - mfacb;
-     m0 = m2 + mfbcb;
-     mfacb = m0;
-     mfbcb = m1 - m0 * vvx;
-     mfccb = m2 - 2. * m1 * vvx + vx2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfaac + mfcac;
-     m1 = mfcac - mfaac;
-     m0 = m2 + mfbac;
-     mfaac = m0;
-     m0 += UbMath::c1o3 * oMdrho;
-     mfbac = m1 - m0 * vvx;
-     mfcac = m2 - 2. * m1 * vvx + vx2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfabc + mfcbc;
-     m1 = mfcbc - mfabc;
-     m0 = m2 + mfbbc;
-     mfabc = m0;
-     mfbbc = m1 - m0 * vvx;
-     mfcbc = m2 - 2. * m1 * vvx + vx2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     m2 = mfacc + mfccc;
-     m1 = mfccc - mfacc;
-     m0 = m2 + mfbcc;
-     mfacc = m0;
-     m0 += UbMath::c1o9 * oMdrho;
-     mfbcc = m1 - m0 * vvx;
-     mfccc = m2 - 2. * m1 * vvx + vx2 * m0;
-     ////////////////////////////////////////////////////////////////////////////////////
-     // Cumulants
-     ////////////////////////////////////////////////////////////////////////////////////
-     LBMReal OxxPyyPzz = 1.; //omega2 or bulk viscosity
-     // LBMReal OxyyPxzz = 1.;//-s9;//2+s9;//
-     // LBMReal OxyyMxzz  = 1.;//2+s9;//
+    LBMReal mfbbb = f[REST];
 
-     //Cum 4.
-     //LBMReal CUMcbb = mfcbb - ((mfcaa + UbMath::c1o3 * oMdrho) * mfabb + 2. * mfbba * mfbab); // till 18.05.2015
-     //LBMReal CUMbcb = mfbcb - ((mfaca + UbMath::c1o3 * oMdrho) * mfbab + 2. * mfbba * mfabb); // till 18.05.2015
-     //LBMReal CUMbbc = mfbbc - ((mfaac + UbMath::c1o3 * oMdrho) * mfbba + 2. * mfbab * mfabb); // till 18.05.2015
+    LBMReal m0, m1, m2;
 
-     // LBMReal CUMcbb = mfcbb - ((mfcaa + UbMath::c1o3) * mfabb + 2. * mfbba * mfbab);
-     // LBMReal CUMbcb = mfbcb - ((mfaca + UbMath::c1o3) * mfbab + 2. * mfbba * mfabb);
-     // LBMReal CUMbbc = mfbbc - ((mfaac + UbMath::c1o3) * mfbba + 2. * mfbab * mfabb);
+    LBMReal rho = (mfaaa + mfaac + mfaca + mfcaa + mfacc + mfcac + mfccc + mfcca) + (mfaab + mfacb + mfcab + mfccb) +
+                  (mfaba + mfabc + mfcba + mfcbc) + (mfbaa + mfbac + mfbca + mfbcc) + (mfabb + mfcbb) +
+                  (mfbab + mfbcb) + (mfbba + mfbbc) + mfbbb;
 
-     // LBMReal CUMcca = mfcca - ((mfcaa * mfaca + 2. * mfbba * mfbba) + UbMath::c1o3 * (mfcaa + mfaca) * oMdrho + UbMath::c1o9 * (oMdrho - 1) * oMdrho);
-     // LBMReal CUMcac = mfcac - ((mfcaa * mfaac + 2. * mfbab * mfbab) + UbMath::c1o3 * (mfcaa + mfaac) * oMdrho + UbMath::c1o9 * (oMdrho - 1) * oMdrho);
-     // LBMReal CUMacc = mfacc - ((mfaac * mfaca + 2. * mfabb * mfabb) + UbMath::c1o3 * (mfaac + mfaca) * oMdrho + UbMath::c1o9 * (oMdrho - 1) * oMdrho);
+    LBMReal vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
+                   (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) + (mfcbb - mfabb));
+    LBMReal vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
+                   (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) + (mfbcb - mfbab));
+    LBMReal vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
+                   (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) + (mfbbc - mfbba));
 
-     //Cum 5.
-     // LBMReal CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + 4. * mfabb * mfbbb + 2. * (mfbab * mfacb + mfbba * mfabc)) - UbMath::c1o3 * (mfbca + mfbac) * oMdrho;
-     // LBMReal CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + 4. * mfbab * mfbbb + 2. * (mfabb * mfcab + mfbba * mfbac)) - UbMath::c1o3 * (mfcba + mfabc) * oMdrho;
-     // LBMReal CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + 4. * mfbba * mfbbb + 2. * (mfbab * mfbca + mfabb * mfcba)) - UbMath::c1o3 * (mfacb + mfcab) * oMdrho;
+    LBMReal oMdrho;
 
-     //Cum 6.
-//         LBMReal CUMccc = mfccc + ((-4. * mfbbb * mfbbb
-//            - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-//            - 4. * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-//            - 2. * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb))
-//            + (4. * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-//               + 2. * (mfcaa * mfaca * mfaac)
-//               + 16. * mfbba * mfbab * mfabb)
-//            - UbMath::c1o3 * (mfacc + mfcac + mfcca) * oMdrho - UbMath::c1o9 * oMdrho * oMdrho
-//            - UbMath::c1o9 * (mfcaa + mfaca + mfaac) * oMdrho * (1. - 2. * oMdrho) - c1o27 * oMdrho * oMdrho * (-2. * oMdrho)
-//            + (2. * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-//               + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa)) * c2o3 * oMdrho) + c1o27 * oMdrho;
+    oMdrho = mfccc + mfaaa;
+    m0     = mfaca + mfcac;
+    m1     = mfacc + mfcaa;
+    m2     = mfaac + mfcca;
+    oMdrho += m0;
+    m1 += m2;
+    oMdrho += m1;
+    m0 = mfbac + mfbca;
+    m1 = mfbaa + mfbcc;
+    m0 += m1;
+    m1 = mfabc + mfcba;
+    m2 = mfaba + mfcbc;
+    m1 += m2;
+    m0 += m1;
+    m1 = mfacb + mfcab;
+    m2 = mfaab + mfccb;
+    m1 += m2;
+    m0 += m1;
+    oMdrho += m0;
+    m0 = mfabb + mfcbb;
+    m1 = mfbab + mfbcb;
+    m2 = mfbba + mfbbc;
+    m0 += m1 + m2;
+    m0 += mfbbb; // hat gefehlt
+    oMdrho = 1. - (oMdrho + m0);
 
+    LBMReal vx2;
+    LBMReal vy2;
+    LBMReal vz2;
+    vx2 = vvx * vvx;
+    vy2 = vvy * vvy;
+    vz2 = vvz * vvz;
+    ////////////////////////////////////////////////////////////////////////////////////
+    // Hin
+    ////////////////////////////////////////////////////////////////////////////////////
+    // mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36  Konditionieren
+    ////////////////////////////////////////////////////////////////////////////////////
+    // Z - Dir
+    m2    = mfaaa + mfaac;
+    m1    = mfaac - mfaaa;
+    m0    = m2 + mfaab;
+    mfaaa = m0;
+    m0 += UbMath::c1o36 * oMdrho;
+    mfaab = m1 - m0 * vvz;
+    mfaac = m2 - 2. * m1 * vvz + vz2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfaba + mfabc;
+    m1    = mfabc - mfaba;
+    m0    = m2 + mfabb;
+    mfaba = m0;
+    m0 += UbMath::c1o9 * oMdrho;
+    mfabb = m1 - m0 * vvz;
+    mfabc = m2 - 2. * m1 * vvz + vz2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfaca + mfacc;
+    m1    = mfacc - mfaca;
+    m0    = m2 + mfacb;
+    mfaca = m0;
+    m0 += UbMath::c1o36 * oMdrho;
+    mfacb = m1 - m0 * vvz;
+    mfacc = m2 - 2. * m1 * vvz + vz2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfbaa + mfbac;
+    m1    = mfbac - mfbaa;
+    m0    = m2 + mfbab;
+    mfbaa = m0;
+    m0 += UbMath::c1o9 * oMdrho;
+    mfbab = m1 - m0 * vvz;
+    mfbac = m2 - 2. * m1 * vvz + vz2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfbba + mfbbc;
+    m1    = mfbbc - mfbba;
+    m0    = m2 + mfbbb;
+    mfbba = m0;
+    m0 += UbMath::c4o9 * oMdrho;
+    mfbbb = m1 - m0 * vvz;
+    mfbbc = m2 - 2. * m1 * vvz + vz2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfbca + mfbcc;
+    m1    = mfbcc - mfbca;
+    m0    = m2 + mfbcb;
+    mfbca = m0;
+    m0 += UbMath::c1o9 * oMdrho;
+    mfbcb = m1 - m0 * vvz;
+    mfbcc = m2 - 2. * m1 * vvz + vz2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfcaa + mfcac;
+    m1    = mfcac - mfcaa;
+    m0    = m2 + mfcab;
+    mfcaa = m0;
+    m0 += UbMath::c1o36 * oMdrho;
+    mfcab = m1 - m0 * vvz;
+    mfcac = m2 - 2. * m1 * vvz + vz2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfcba + mfcbc;
+    m1    = mfcbc - mfcba;
+    m0    = m2 + mfcbb;
+    mfcba = m0;
+    m0 += UbMath::c1o9 * oMdrho;
+    mfcbb = m1 - m0 * vvz;
+    mfcbc = m2 - 2. * m1 * vvz + vz2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfcca + mfccc;
+    m1    = mfccc - mfcca;
+    m0    = m2 + mfccb;
+    mfcca = m0;
+    m0 += UbMath::c1o36 * oMdrho;
+    mfccb = m1 - m0 * vvz;
+    mfccc = m2 - 2. * m1 * vvz + vz2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    ////////////////////////////////////////////////////////////////////////////////////
+    // mit  1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren
+    ////////////////////////////////////////////////////////////////////////////////////
+    // Y - Dir
+    m2    = mfaaa + mfaca;
+    m1    = mfaca - mfaaa;
+    m0    = m2 + mfaba;
+    mfaaa = m0;
+    m0 += UbMath::c1o6 * oMdrho;
+    mfaba = m1 - m0 * vvy;
+    mfaca = m2 - 2. * m1 * vvy + vy2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfaab + mfacb;
+    m1    = mfacb - mfaab;
+    m0    = m2 + mfabb;
+    mfaab = m0;
+    mfabb = m1 - m0 * vvy;
+    mfacb = m2 - 2. * m1 * vvy + vy2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfaac + mfacc;
+    m1    = mfacc - mfaac;
+    m0    = m2 + mfabc;
+    mfaac = m0;
+    m0 += UbMath::c1o18 * oMdrho;
+    mfabc = m1 - m0 * vvy;
+    mfacc = m2 - 2. * m1 * vvy + vy2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfbaa + mfbca;
+    m1    = mfbca - mfbaa;
+    m0    = m2 + mfbba;
+    mfbaa = m0;
+    m0 += UbMath::c2o3 * oMdrho;
+    mfbba = m1 - m0 * vvy;
+    mfbca = m2 - 2. * m1 * vvy + vy2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfbab + mfbcb;
+    m1    = mfbcb - mfbab;
+    m0    = m2 + mfbbb;
+    mfbab = m0;
+    mfbbb = m1 - m0 * vvy;
+    mfbcb = m2 - 2. * m1 * vvy + vy2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfbac + mfbcc;
+    m1    = mfbcc - mfbac;
+    m0    = m2 + mfbbc;
+    mfbac = m0;
+    m0 += UbMath::c2o9 * oMdrho;
+    mfbbc = m1 - m0 * vvy;
+    mfbcc = m2 - 2. * m1 * vvy + vy2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfcaa + mfcca;
+    m1    = mfcca - mfcaa;
+    m0    = m2 + mfcba;
+    mfcaa = m0;
+    m0 += UbMath::c1o6 * oMdrho;
+    mfcba = m1 - m0 * vvy;
+    mfcca = m2 - 2. * m1 * vvy + vy2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfcab + mfccb;
+    m1    = mfccb - mfcab;
+    m0    = m2 + mfcbb;
+    mfcab = m0;
+    mfcbb = m1 - m0 * vvy;
+    mfccb = m2 - 2. * m1 * vvy + vy2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfcac + mfccc;
+    m1    = mfccc - mfcac;
+    m0    = m2 + mfcbc;
+    mfcac = m0;
+    m0 += UbMath::c1o18 * oMdrho;
+    mfcbc = m1 - m0 * vvy;
+    mfccc = m2 - 2. * m1 * vvy + vy2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    ////////////////////////////////////////////////////////////////////////////////////
+    // mit     1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9            Konditionieren
+    ////////////////////////////////////////////////////////////////////////////////////
+    // X - Dir
+    m2    = mfaaa + mfcaa;
+    m1    = mfcaa - mfaaa;
+    m0    = m2 + mfbaa;
+    mfaaa = m0;
+    m0 += 1. * oMdrho;
+    mfbaa = m1 - m0 * vvx;
+    mfcaa = m2 - 2. * m1 * vvx + vx2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfaba + mfcba;
+    m1    = mfcba - mfaba;
+    m0    = m2 + mfbba;
+    mfaba = m0;
+    mfbba = m1 - m0 * vvx;
+    mfcba = m2 - 2. * m1 * vvx + vx2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfaca + mfcca;
+    m1    = mfcca - mfaca;
+    m0    = m2 + mfbca;
+    mfaca = m0;
+    m0 += UbMath::c1o3 * oMdrho;
+    mfbca = m1 - m0 * vvx;
+    mfcca = m2 - 2. * m1 * vvx + vx2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfaab + mfcab;
+    m1    = mfcab - mfaab;
+    m0    = m2 + mfbab;
+    mfaab = m0;
+    mfbab = m1 - m0 * vvx;
+    mfcab = m2 - 2. * m1 * vvx + vx2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfabb + mfcbb;
+    m1    = mfcbb - mfabb;
+    m0    = m2 + mfbbb;
+    mfabb = m0;
+    mfbbb = m1 - m0 * vvx;
+    mfcbb = m2 - 2. * m1 * vvx + vx2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfacb + mfccb;
+    m1    = mfccb - mfacb;
+    m0    = m2 + mfbcb;
+    mfacb = m0;
+    mfbcb = m1 - m0 * vvx;
+    mfccb = m2 - 2. * m1 * vvx + vx2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfaac + mfcac;
+    m1    = mfcac - mfaac;
+    m0    = m2 + mfbac;
+    mfaac = m0;
+    m0 += UbMath::c1o3 * oMdrho;
+    mfbac = m1 - m0 * vvx;
+    mfcac = m2 - 2. * m1 * vvx + vx2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfabc + mfcbc;
+    m1    = mfcbc - mfabc;
+    m0    = m2 + mfbbc;
+    mfabc = m0;
+    mfbbc = m1 - m0 * vvx;
+    mfcbc = m2 - 2. * m1 * vvx + vx2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    m2    = mfacc + mfccc;
+    m1    = mfccc - mfacc;
+    m0    = m2 + mfbcc;
+    mfacc = m0;
+    m0 += UbMath::c1o9 * oMdrho;
+    mfbcc = m1 - m0 * vvx;
+    mfccc = m2 - 2. * m1 * vvx + vx2 * m0;
+    ////////////////////////////////////////////////////////////////////////////////////
+    // Cumulants
+    ////////////////////////////////////////////////////////////////////////////////////
+    LBMReal OxxPyyPzz = 1.; // omega2 or bulk viscosity
 
-     LBMReal mxxPyyPzz = mfcaa + mfaca + mfaac;
-     LBMReal mxxMyy = mfcaa - mfaca;
-     LBMReal mxxMzz = mfcaa - mfaac;
+    LBMReal mxxPyyPzz = mfcaa + mfaca + mfaac;
+    LBMReal mxxMyy    = mfcaa - mfaca;
+    LBMReal mxxMzz    = mfcaa - mfaac;
 
-     LBMReal dxux = -UbMath::c1o2 * collFactorF * (mxxMyy + mxxMzz) + UbMath::c1o2 * OxxPyyPzz * (mfaaa - mxxPyyPzz);
-     LBMReal dyuy = dxux + collFactorF * UbMath::c3o2 * mxxMyy;
-     LBMReal dzuz = dxux + collFactorF * UbMath::c3o2 * mxxMzz;
+    LBMReal dxux = -UbMath::c1o2 * collFactorF * (mxxMyy + mxxMzz) + UbMath::c1o2 * OxxPyyPzz * (mfaaa - mxxPyyPzz);
+    LBMReal dyuy = dxux + collFactorF * UbMath::c3o2 * mxxMyy;
+    LBMReal dzuz = dxux + collFactorF * UbMath::c3o2 * mxxMzz;
 
-     LBMReal Dxy = -UbMath::three * collFactorF * mfbba;
-     LBMReal Dxz = -UbMath::three * collFactorF * mfbab;
-     LBMReal Dyz = -UbMath::three * collFactorF * mfabb;
+    LBMReal Dxy = -UbMath::three * collFactorF * mfbba;
+    LBMReal Dxz = -UbMath::three * collFactorF * mfbab;
+    LBMReal Dyz = -UbMath::three * collFactorF * mfabb;
 
+    return sqrt(UbMath::c2 * (dxux * dxux + dyuy * dyuy + dzuz * dzuz) + Dxy * Dxy + Dxz * Dxz + Dyz * Dyz) /
+           (rho + UbMath::one);
+}
+//Multiphase stuff
+//////////////////////////////////////////////////////////////////////////
+static void calcMultiphaseFeq(LBMReal *const &feq /*[27]*/, const LBMReal &rho, const LBMReal &p1, const LBMReal &vx1,
+                              const LBMReal &vx2, const LBMReal &vx3)
+{
+    using namespace UbMath;
+    LBMReal cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3);
 
-     //TODO: may be factor 2
-     return sqrt(UbMath::c2 * (dxux * dxux + dyuy * dyuy + dzuz * dzuz) + Dxy * Dxy + Dxz * Dxz + Dyz * Dyz) / (rho + UbMath::one);
-  }
+    feq[REST] = c8o27 * (p1 + rho * c1o3 * (-cu_sq));
+    feq[E]    = c2o27 * (p1 + rho * c1o3 * (3.0 * (vx1) + c9o2 * (vx1) * (vx1)-cu_sq));
+    feq[W]    = c2o27 * (p1 + rho * c1o3 * (3.0 * (-vx1) + c9o2 * (-vx1) * (-vx1) - cu_sq));
+    feq[N]    = c2o27 * (p1 + rho * c1o3 * (3.0 * (vx2) + c9o2 * (vx2) * (vx2)-cu_sq));
+    feq[S]    = c2o27 * (p1 + rho * c1o3 * (3.0 * (-vx2) + c9o2 * (-vx2) * (-vx2) - cu_sq));
+    feq[T]    = c2o27 * (p1 + rho * c1o3 * (3.0 * (vx3) + c9o2 * (vx3) * (vx3)-cu_sq));
+    feq[B]    = c2o27 * (p1 + rho * c1o3 * (3.0 * (-vx3) + c9o2 * (-vx3) * (-vx3) - cu_sq));
+    feq[NE]   = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx1 + vx2) + c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq));
+    feq[SW]   = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx1 - vx2) + c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq));
+    feq[SE]   = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx1 - vx2) + c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq));
+    feq[NW]   = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx1 + vx2) + c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq));
+    feq[TE]   = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx1 + vx3) + c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq));
+    feq[BW]   = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq));
+    feq[BE]   = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx1 - vx3) + c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq));
+    feq[TW]   = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq));
+    feq[TN]   = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx2 + vx3) + c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq));
+    feq[BS]   = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx2 - vx3) + c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq));
+    feq[BN]   = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx2 - vx3) + c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq));
+    feq[TS]   = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx2 + vx3) + c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq));
+    feq[TNE] =
+        c1o216 * (p1 + rho * c1o3 * (3.0 * (vx1 + vx2 + vx3) + c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq));
+    feq[BSW] = c1o216 *
+               (p1 + rho * c1o3 * (3.0 * (-vx1 - vx2 - vx3) + c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq));
+    feq[BNE] =
+        c1o216 * (p1 + rho * c1o3 * (3.0 * (vx1 + vx2 - vx3) + c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq));
+    feq[TSW] = c1o216 *
+               (p1 + rho * c1o3 * (3.0 * (-vx1 - vx2 + vx3) + c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq));
+    feq[TSE] =
+        c1o216 * (p1 + rho * c1o3 * (3.0 * (vx1 - vx2 + vx3) + c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq));
+    feq[BNW] = c1o216 *
+               (p1 + rho * c1o3 * (3.0 * (-vx1 + vx2 - vx3) + c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq));
+    feq[BSE] =
+        c1o216 * (p1 + rho * c1o3 * (3.0 * (vx1 - vx2 - vx3) + c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq));
+    feq[TNW] = c1o216 *
+               (p1 + rho * c1o3 * (3.0 * (-vx1 + vx2 + vx3) + c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq));
 }
-#endif
+//////////////////////////////////////////////////////////////////////////
+static void calcMultiphaseFeqVB(LBMReal *const &feq /*[27]*/, const LBMReal &p1, const LBMReal &vx1, const LBMReal &vx2,
+                                const LBMReal &vx3)
+{
+    using namespace UbMath;
+    LBMReal cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3);
 
+    feq[REST] = p1 + c8o27 * (-cu_sq);
+    feq[E]    = c2o27 * ((3.0 * (vx1) + c9o2 * (vx1) * (vx1)-cu_sq));
+    feq[W]    = c2o27 * ((3.0 * (-vx1) + c9o2 * (-vx1) * (-vx1) - cu_sq));
+    feq[N]    = c2o27 * ((3.0 * (vx2) + c9o2 * (vx2) * (vx2)-cu_sq));
+    feq[S]    = c2o27 * ((3.0 * (-vx2) + c9o2 * (-vx2) * (-vx2) - cu_sq));
+    feq[T]    = c2o27 * ((3.0 * (vx3) + c9o2 * (vx3) * (vx3)-cu_sq));
+    feq[B]    = c2o27 * ((3.0 * (-vx3) + c9o2 * (-vx3) * (-vx3) - cu_sq));
+    feq[NE]   = c1o54 * ((3.0 * (vx1 + vx2) + c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq));
+    feq[SW]   = c1o54 * ((3.0 * (-vx1 - vx2) + c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq));
+    feq[SE]   = c1o54 * ((3.0 * (vx1 - vx2) + c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq));
+    feq[NW]   = c1o54 * ((3.0 * (-vx1 + vx2) + c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq));
+    feq[TE]   = c1o54 * ((3.0 * (vx1 + vx3) + c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq));
+    feq[BW]   = c1o54 * ((3.0 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq));
+    feq[BE]   = c1o54 * ((3.0 * (vx1 - vx3) + c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq));
+    feq[TW]   = c1o54 * ((3.0 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq));
+    feq[TN]   = c1o54 * ((3.0 * (vx2 + vx3) + c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq));
+    feq[BS]   = c1o54 * ((3.0 * (-vx2 - vx3) + c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq));
+    feq[BN]   = c1o54 * ((3.0 * (vx2 - vx3) + c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq));
+    feq[TS]   = c1o54 * ((3.0 * (-vx2 + vx3) + c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq));
+    feq[TNE]  = c1o216 * ((3.0 * (vx1 + vx2 + vx3) + c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq));
+    feq[BSW]  = c1o216 * ((3.0 * (-vx1 - vx2 - vx3) + c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq));
+    feq[BNE]  = c1o216 * ((3.0 * (vx1 + vx2 - vx3) + c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq));
+    feq[TSW]  = c1o216 * ((3.0 * (-vx1 - vx2 + vx3) + c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq));
+    feq[TSE]  = c1o216 * ((3.0 * (vx1 - vx2 + vx3) + c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq));
+    feq[BNW]  = c1o216 * ((3.0 * (-vx1 + vx2 - vx3) + c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq));
+    feq[BSE]  = c1o216 * ((3.0 * (vx1 - vx2 - vx3) + c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq));
+    feq[TNW]  = c1o216 * ((3.0 * (-vx1 + vx2 + vx3) + c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq));
+}
+//////////////////////////////////////////////////////////////////////////
+static void calcMultiphaseHeq(LBMReal *const &heq /*[27]*/, const LBMReal &phi, const LBMReal &vx1, const LBMReal &vx2,
+                              const LBMReal &vx3)
+{
+    using namespace UbMath;
+    LBMReal cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3);
 
+    heq[REST] = c8o27 * phi * (1.0 - cu_sq);
+    heq[E]    = c2o27 * phi * (1.0 + 3.0 * (vx1) + c9o2 * (vx1) * (vx1)-cu_sq);
+    heq[W]    = c2o27 * phi * (1.0 + 3.0 * (-vx1) + c9o2 * (-vx1) * (-vx1) - cu_sq);
+    heq[N]    = c2o27 * phi * (1.0 + 3.0 * (vx2) + c9o2 * (vx2) * (vx2)-cu_sq);
+    heq[S]    = c2o27 * phi * (1.0 + 3.0 * (-vx2) + c9o2 * (-vx2) * (-vx2) - cu_sq);
+    heq[T]    = c2o27 * phi * (1.0 + 3.0 * (vx3) + c9o2 * (vx3) * (vx3)-cu_sq);
+    heq[B]    = c2o27 * phi * (1.0 + 3.0 * (-vx3) + c9o2 * (-vx3) * (-vx3) - cu_sq);
+    heq[NE]   = c1o54 * phi * (1.0 + 3.0 * (vx1 + vx2) + c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq);
+    heq[SW]   = c1o54 * phi * (1.0 + 3.0 * (-vx1 - vx2) + c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq);
+    heq[SE]   = c1o54 * phi * (1.0 + 3.0 * (vx1 - vx2) + c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq);
+    heq[NW]   = c1o54 * phi * (1.0 + 3.0 * (-vx1 + vx2) + c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq);
+    heq[TE]   = c1o54 * phi * (1.0 + 3.0 * (vx1 + vx3) + c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq);
+    heq[BW]   = c1o54 * phi * (1.0 + 3.0 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq);
+    heq[BE]   = c1o54 * phi * (1.0 + 3.0 * (vx1 - vx3) + c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq);
+    heq[TW]   = c1o54 * phi * (1.0 + 3.0 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq);
+    heq[TN]   = c1o54 * phi * (1.0 + 3.0 * (vx2 + vx3) + c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq);
+    heq[BS]   = c1o54 * phi * (1.0 + 3.0 * (-vx2 - vx3) + c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq);
+    heq[BN]   = c1o54 * phi * (1.0 + 3.0 * (vx2 - vx3) + c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq);
+    heq[TS]   = c1o54 * phi * (1.0 + 3.0 * (-vx2 + vx3) + c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq);
+    heq[TNE]  = c1o216 * phi * (1.0 + 3.0 * (vx1 + vx2 + vx3) + c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq);
+    heq[BSW] = c1o216 * phi * (1.0 + 3.0 * (-vx1 - vx2 - vx3) + c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq);
+    heq[BNE] = c1o216 * phi * (1.0 + 3.0 * (vx1 + vx2 - vx3) + c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq);
+    heq[TSW] = c1o216 * phi * (1.0 + 3.0 * (-vx1 - vx2 + vx3) + c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq);
+    heq[TSE] = c1o216 * phi * (1.0 + 3.0 * (vx1 - vx2 + vx3) + c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq);
+    heq[BNW] = c1o216 * phi * (1.0 + 3.0 * (-vx1 + vx2 - vx3) + c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq);
+    heq[BSE] = c1o216 * phi * (1.0 + 3.0 * (vx1 - vx2 - vx3) + c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq);
+    heq[TNW] = c1o216 * phi * (1.0 + 3.0 * (-vx1 + vx2 + vx3) + c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq);
+}
+//////////////////////////////////////////////////////////////////////////
 
+} // namespace D3Q27System
+#endif
diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.cpp b/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.cpp
index 979476eb4208d39f1e925c4d87d7257b3df77680..15e6f1dddb88f31e7bf57e2d3235e04b48da1080 100644
--- a/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/IncompressibleOffsetInterpolationProcessor.cpp
@@ -569,7 +569,7 @@ void IncompressibleOffsetInterpolationProcessor::calcInterpolatedNode(LBMReal* f
    f[BSW]  = f_TNE  + xs*x_TNE  + ys*y_TNE  + zs*z_TNE  + xs*ys*xy_TNE  + xs*zs*xz_TNE  + ys*zs*yz_TNE  + feq[BSW];
    f[BSE]  = f_TNW  + xs*x_TNW  + ys*y_TNW  + zs*z_TNW  + xs*ys*xy_TNW  + xs*zs*xz_TNW  + ys*zs*yz_TNW  + feq[BSE];
    f[BNW]  = f_TSE  + xs*x_TSE  + ys*y_TSE  + zs*z_TSE  + xs*ys*xy_TSE  + xs*zs*xz_TSE  + ys*zs*yz_TSE  + feq[BNW];
-   f[ZERO] = f_ZERO + xs*x_ZERO + ys*y_ZERO + zs*z_ZERO                                                 + feq[ZERO];
+   f[REST] = f_ZERO + xs*x_ZERO + ys*y_ZERO + zs*z_ZERO                                                 + feq[REST];
 }
 //////////////////////////////////////////////////////////////////////////
 //Position SWB -0.25, -0.25, -0.25
@@ -763,7 +763,7 @@ void IncompressibleOffsetInterpolationProcessor::calcInterpolatedNodeFC(LBMReal*
    f[BNW]  = f_TSE  + feq[BNW];
    f[BSE]  = f_TNW  + feq[BSE];
    f[BSW]  = f_TNE  + feq[BSW];
-   f[ZERO] = f_ZERO + feq[ZERO];
+   f[REST] = f_ZERO + feq[REST];
 }
 //////////////////////////////////////////////////////////////////////////
 void IncompressibleOffsetInterpolationProcessor::calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z, LBMReal& vx1, LBMReal& vx2, LBMReal& vx3)
diff --git a/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp
index 6a7256997d22e9f226d6a534a7f51801f533a59d..554fc6614c11e2e8b96f5829d81d1c27e9365870 100644
--- a/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp
@@ -894,7 +894,7 @@ void InitDensityLBMKernel::calculate(int  /*step*/)
                //////////////////////////////////////////////////////////////////////////
                //read distribution
                ////////////////////////////////////////////////////////////////////////////
-               f[ZERO] = (*this->zeroDistributions)(x1, x2, x3);
+               f[REST] = (*this->zeroDistributions)(x1, x2, x3);
 
                f[E] = (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3);
                f[N] = (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3);
@@ -928,7 +928,7 @@ void InitDensityLBMKernel::calculate(int  /*step*/)
                drho = ((f[TNE]+f[BSW])+(f[TSE]+f[BNW]))+((f[BSE]+f[TNW])+(f[TSW]+f[BNE]))
                   +(((f[NE]+f[SW])+(f[SE]+f[NW]))+((f[TE]+f[BW])+(f[BE]+f[TW]))
                      +((f[BN]+f[TS])+(f[TN]+f[BS])))+((f[E]+f[W])+(f[N]+f[S])
-                        +(f[T]+f[B]))+f[ZERO];
+                        +(f[T]+f[B]))+f[REST];
 
                //vx1 = ((((f[TNE]-f[BSW])+(f[TSE]-f[BNW]))+((f[BSE]-f[TNW])+(f[BNE]-f[TSW])))+
                //   (((f[BE]-f[TW])+(f[TE]-f[BW]))+((f[SE]-f[NW])+(f[NE]-f[SW])))+
@@ -956,7 +956,7 @@ void InitDensityLBMKernel::calculate(int  /*step*/)
 
                LBMReal cu_sq = 1.5*(vx1*vx1+vx2*vx2+vx3*vx3);
 
-               feq[ZERO] = c8o27*(drho-cu_sq);
+               feq[REST] = c8o27*(drho-cu_sq);
                feq[E] = c2o27*(drho+3.0*(vx1)+c9o2*(vx1)*(vx1)-cu_sq);
                feq[W] = c2o27*(drho+3.0*(-vx1)+c9o2*(-vx1)*(-vx1)-cu_sq);
                feq[N] = c2o27*(drho+3.0*(vx2)+c9o2*(vx2)*(vx2)-cu_sq);
@@ -985,7 +985,7 @@ void InitDensityLBMKernel::calculate(int  /*step*/)
                feq[TNW] = c1o216*(drho+3.0*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
 
                //Relaxation
-               f[ZERO] += (feq[ZERO]-f[ZERO])*collFactor;
+               f[REST] += (feq[REST]-f[REST])*collFactor;
                f[E] += (feq[E]-f[E])*collFactor;
                f[W] += (feq[W]-f[W])*collFactor;
                f[N] += (feq[N]-f[N])*collFactor;
@@ -1016,7 +1016,7 @@ void InitDensityLBMKernel::calculate(int  /*step*/)
 
                //////////////////////////////////////////////////////////////////////////
 #ifdef  PROOF_CORRECTNESS
-               LBMReal rho_post = f[ZERO]+f[E]+f[W]+f[N]+f[S]+f[T]+f[B]
+               LBMReal rho_post = f[REST]+f[E]+f[W]+f[N]+f[S]+f[T]+f[B]
                   +f[NE]+f[SW]+f[SE]+f[NW]+f[TE]+f[BW]+f[BE]
                   +f[TW]+f[TN]+f[BS]+f[BN]+f[TS]+f[TNE]+f[TSW]
                   +f[TSE]+f[TNW]+f[BNE]+f[BSW]+f[BSE]+f[BNW];
@@ -1061,7 +1061,7 @@ void InitDensityLBMKernel::calculate(int  /*step*/)
                (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p) = f[D3Q27System::INV_BNW];
                (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p) = f[D3Q27System::INV_BNE];
 
-               (*this->zeroDistributions)(x1, x2, x3) = f[D3Q27System::ZERO];
+               (*this->zeroDistributions)(x1, x2, x3) = f[D3Q27System::REST];
                //////////////////////////////////////////////////////////////////////////
 
 
diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/LBMKernel.cpp
index 1d387655bc0b177fa8f80972ac99aeee3caba6a8..f3d168733db86ea03a72a9741ba819ed6874a0c1 100644
--- a/src/cpu/VirtualFluidsCore/LBM/LBMKernel.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/LBMKernel.cpp
@@ -185,3 +185,49 @@ bool LBMKernel::isInsideOfDomain(const int &x1, const int &x2, const int &x3) co
     const SPtr<BCArray3D> bcArray = this->bcProcessor->getBCArray();
     return bcArray->isInsideOfDomain(x1, x2, x3, ghostLayerWidth);
 }
+//////////////////////////////////////////////////////////////////////////
+
+void LBMKernel::setCollisionFactorMultiphase(double collFactorL, double collFactorG)
+{
+    this->collFactorL = collFactorL;
+    this->collFactorG = collFactorG;
+}
+//////////////////////////////////////////////////////////////////////////
+double LBMKernel::getCollisionFactorL() const { return collFactorL; }
+//////////////////////////////////////////////////////////////////////////
+double LBMKernel::getCollisionFactorG() const { return collFactorG; }
+//////////////////////////////////////////////////////////////////////////
+void LBMKernel::setDensityRatio(double densityRatio) { this->densityRatio = densityRatio; }
+//////////////////////////////////////////////////////////////////////////
+double LBMKernel::getDensityRatio() const { return densityRatio; }
+//////////////////////////////////////////////////////////////////////////
+void LBMKernel::setMultiphaseModelParameters(double beta, double kappa)
+{
+    this->beta  = beta;
+    this->kappa = kappa;
+}
+//////////////////////////////////////////////////////////////////////////
+void LBMKernel::getMultiphaseModelParameters(double &beta, double &kappa)
+{
+    beta  = this->beta;
+    kappa = this->kappa;
+}
+//////////////////////////////////////////////////////////////////////////
+void LBMKernel::setContactAngle(double contactAngle) { this->contactAngle = contactAngle; }
+//////////////////////////////////////////////////////////////////////////
+double LBMKernel::getContactAngle() const { return contactAngle; }
+//////////////////////////////////////////////////////////////////////////
+void LBMKernel::setPhiL(double phiL) { this->phiL = phiL; }
+//////////////////////////////////////////////////////////////////////////
+void LBMKernel::setPhiH(double phiH) { this->phiH = phiH; }
+//////////////////////////////////////////////////////////////////////////
+double LBMKernel::getPhiL() const { return phiL; }
+//////////////////////////////////////////////////////////////////////////
+double LBMKernel::getPhiH() const { return phiH; }
+//////////////////////////////////////////////////////////////////////////
+void LBMKernel::setPhaseFieldRelaxation(double tauH) { this->tauH = tauH; }
+//////////////////////////////////////////////////////////////////////////
+double LBMKernel::getPhaseFieldRelaxation() const { return tauH; }
+//////////////////////////////////////////////////////////////////////////
+void LBMKernel::setMobility(double mob) { this->mob = mob; }
+//////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h
index be29589b9b7ab239bece700126ae906795c83977..5c3e067656e2fc5cb06046e28c0442b15c180050 100644
--- a/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h
+++ b/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h
@@ -110,6 +110,25 @@ public:
     void setNX(std::array<int, 3> nx);
     std::array<int, 3> getNX();
 
+    ///////// Extra methods for the multiphase kernel ////////////
+
+    void setCollisionFactorMultiphase(double collFactorL, double collFactorG);
+    double getCollisionFactorL() const;
+    double getCollisionFactorG() const;
+    void setDensityRatio(double densityRatio);
+    double getDensityRatio() const;
+    void setMultiphaseModelParameters(double beta, double kappa);
+    void getMultiphaseModelParameters(double &beta, double &kappa);
+    void setContactAngle(double contactAngle);
+    double getContactAngle() const;
+    void setPhiL(double phiL);
+    void setPhiH(double phiH);
+    double getPhiL() const;
+    double getPhiH() const;
+    void setPhaseFieldRelaxation(double tauH);
+    double getPhaseFieldRelaxation() const;
+    void setMobility(double mob);
+
 protected:
     SPtr<DataSet3D> dataSet;
     SPtr<BCProcessor> bcProcessor;
@@ -133,6 +152,18 @@ protected:
 
     std::array<int, 3> nx;
 
+    // Multiphase model
+    LBMReal collFactorL;
+    LBMReal collFactorG;
+    LBMReal densityRatio;
+    LBMReal beta;
+    LBMReal kappa;
+    LBMReal contactAngle;
+    LBMReal phiL;
+    LBMReal phiH;
+    LBMReal tauH;
+    LBMReal mob;
+
 private:
     void checkFunction(mu::Parser fct);
 };
diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.cpp b/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.cpp
index 1da1a07ea4713d47c34ad75de5ba3e71fc548759..6076eb018097dc77afcf37af2d14206325be463c 100644
--- a/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.cpp
@@ -88,7 +88,7 @@ void LBMKernelETD3Q27BGK::calculate(int  /*step*/)
                //////////////////////////////////////////////////////////////////////////
                //read distribution
                ////////////////////////////////////////////////////////////////////////////
-               f[ZERO] = (*this->zeroDistributions)(x1,x2,x3);
+               f[REST] = (*this->zeroDistributions)(x1,x2,x3);
 
                f[E] = (*this->localDistributions)(D3Q27System::ET_E, x1,x2,x3);
                f[N] = (*this->localDistributions)(D3Q27System::ET_N,x1,x2,x3);  
@@ -119,7 +119,7 @@ void LBMKernelETD3Q27BGK::calculate(int  /*step*/)
                f[BNE] = (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1,x2,x3p);
                //////////////////////////////////////////////////////////////////////////
 
-               drho = f[ZERO] + f[E] + f[W] + f[N] + f[S] + f[T] + f[B] 
+               drho = f[REST] + f[E] + f[W] + f[N] + f[S] + f[T] + f[B] 
                + f[NE] + f[SW] + f[SE] + f[NW] + f[TE] + f[BW] + f[BE]
                + f[TW] + f[TN] + f[BS] + f[BN] + f[TS] + f[TNE] + f[TSW]
                + f[TSE] + f[TNW] + f[BNE] + f[BSW] + f[BSE] + f[BNW];
@@ -138,7 +138,7 @@ void LBMKernelETD3Q27BGK::calculate(int  /*step*/)
 
                LBMReal cu_sq=1.5*(vx1*vx1+vx2*vx2+vx3*vx3);
 
-               feq[ZERO] =  c8o27*(drho-cu_sq);
+               feq[REST] =  c8o27*(drho-cu_sq);
                feq[E] =  c2o27*(drho+3.0*( vx1   )+c9o2*( vx1   )*( vx1   )-cu_sq);
                feq[W] =  c2o27*(drho+3.0*(-vx1   )+c9o2*(-vx1   )*(-vx1   )-cu_sq);
                feq[N] =  c2o27*(drho+3.0*(    vx2)+c9o2*(    vx2)*(    vx2)-cu_sq);
@@ -167,7 +167,7 @@ void LBMKernelETD3Q27BGK::calculate(int  /*step*/)
                feq[TNW]= c1o216*(drho+3.0*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
 
                //Relaxation
-               f[ZERO] += (feq[ZERO]-f[ZERO])*collFactor;
+               f[REST] += (feq[REST]-f[REST])*collFactor;
                f[E] += (feq[E]-f[E])*collFactor;
                f[W] += (feq[W]-f[W])*collFactor;
                f[N] += (feq[N]-f[N])*collFactor;
@@ -208,7 +208,7 @@ void LBMKernelETD3Q27BGK::calculate(int  /*step*/)
                   forcingX2 = muForcingX2.Eval();
                   forcingX3 = muForcingX3.Eval();
 
-                  f[ZERO] +=                   0.0                        ;
+                  f[REST] +=                   0.0                        ;
                   f[E  ] +=  3.0*c2o27  *  (forcingX1)                    ;
                   f[W  ] +=  3.0*c2o27  *  (-forcingX1)                   ;
                   f[N  ] +=  3.0*c2o27  *             (forcingX2)         ;
@@ -238,7 +238,7 @@ void LBMKernelETD3Q27BGK::calculate(int  /*step*/)
                }
                //////////////////////////////////////////////////////////////////////////
 #ifdef  PROOF_CORRECTNESS
-               LBMReal rho_post = f[ZERO] + f[E] + f[W] + f[N] + f[S] + f[T] + f[B] 
+               LBMReal rho_post = f[REST] + f[E] + f[W] + f[N] + f[S] + f[T] + f[B] 
                + f[NE] + f[SW] + f[SE] + f[NW] + f[TE] + f[BW] + f[BE]
                + f[TW] + f[TN] + f[BS] + f[BN] + f[TS] + f[TNE] + f[TSW]
                + f[TSE] + f[TNW] + f[BNE] + f[BSW] + f[BSE] + f[BNW];
@@ -283,7 +283,7 @@ void LBMKernelETD3Q27BGK::calculate(int  /*step*/)
                (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1p,x2,  x3p) = f[D3Q27System::INV_BNW];
                (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1,  x2,  x3p) = f[D3Q27System::INV_BNE];
 
-               (*this->zeroDistributions)(x1,x2,x3) = f[D3Q27System::ZERO];
+               (*this->zeroDistributions)(x1,x2,x3) = f[D3Q27System::REST];
                //////////////////////////////////////////////////////////////////////////
 
 
diff --git a/src/cpu/VirtualFluidsCore/LBM/MultiphaseCumulantLBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/MultiphaseCumulantLBMKernel.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..09c43e97b9b9f4ba46fb741b5f2cc2b1299d109c
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/LBM/MultiphaseCumulantLBMKernel.cpp
@@ -0,0 +1,1748 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 MultiphaseCumulantLBMKernel.cpp
+//! \ingroup LBMKernel
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#include "MultiphaseCumulantLBMKernel.h"
+#include "BCArray3D.h"
+#include "Block3D.h"
+#include "D3Q27EsoTwist3DSplittedVector.h"
+#include "D3Q27System.h"
+#include "DataSet3D.h"
+#include "LBMKernel.h"
+#include <cmath>
+
+#define PROOF_CORRECTNESS
+
+//////////////////////////////////////////////////////////////////////////
+MultiphaseCumulantLBMKernel::MultiphaseCumulantLBMKernel() { this->compressible = false; }
+//////////////////////////////////////////////////////////////////////////
+void MultiphaseCumulantLBMKernel::initDataSet()
+{
+    SPtr<DistributionArray3D> f(new D3Q27EsoTwist3DSplittedVector(nx[0] + 2, nx[1] + 2, nx[2] + 2, -999.9));
+    SPtr<DistributionArray3D> h(new D3Q27EsoTwist3DSplittedVector(nx[0] + 2, nx[1] + 2, nx[2] + 2, -999.9)); // For phase-field
+    SPtr<PhaseFieldArray3D> divU(new PhaseFieldArray3D(nx[0] + 2, nx[1] + 2, nx[2] + 2, 0.0));
+    dataSet->setFdistributions(f);
+    dataSet->setHdistributions(h); // For phase-field
+    dataSet->setPhaseField(divU);
+}
+//////////////////////////////////////////////////////////////////////////
+SPtr<LBMKernel> MultiphaseCumulantLBMKernel::clone()
+{
+    SPtr<LBMKernel> kernel(new MultiphaseCumulantLBMKernel());
+    kernel->setNX(nx);
+    dynamicPointerCast<MultiphaseCumulantLBMKernel>(kernel)->initDataSet();
+    kernel->setCollisionFactorMultiphase(this->collFactorL, this->collFactorG);
+    kernel->setDensityRatio(this->densityRatio);
+    kernel->setMultiphaseModelParameters(this->beta, this->kappa);
+    kernel->setContactAngle(this->contactAngle);
+    kernel->setPhiL(this->phiL);
+    kernel->setPhiH(this->phiH);
+    kernel->setPhaseFieldRelaxation(this->tauH);
+    kernel->setMobility(this->mob);
+
+    kernel->setBCProcessor(bcProcessor->clone(kernel));
+    kernel->setWithForcing(withForcing);
+    kernel->setForcingX1(muForcingX1);
+    kernel->setForcingX2(muForcingX2);
+    kernel->setForcingX3(muForcingX3);
+    kernel->setIndex(ix1, ix2, ix3);
+    kernel->setDeltaT(deltaT);
+
+    return kernel;
+}
+//////////////////////////////////////////////////////////////////////////
+void MultiphaseCumulantLBMKernel::calculate(int step)
+{
+    using namespace D3Q27System;
+    using namespace UbMath;
+
+    // initializing of forcing stuff
+    /*if (withForcing)
+    {
+    muForcingX1.DefineVar("x1",&muX1); muForcingX1.DefineVar("x2",&muX2); muForcingX1.DefineVar("x3",&muX3);
+    muForcingX2.DefineVar("x1",&muX1); muForcingX2.DefineVar("x2",&muX2); muForcingX2.DefineVar("x3",&muX3);
+    muForcingX3.DefineVar("x1",&muX1); muForcingX3.DefineVar("x2",&muX2); muForcingX3.DefineVar("x3",&muX3);
+
+    muDeltaT = deltaT;
+
+    muForcingX1.DefineVar("dt",&muDeltaT);
+    muForcingX2.DefineVar("dt",&muDeltaT);
+    muForcingX3.DefineVar("dt",&muDeltaT);
+
+    muNu = (1.0/3.0)*(1.0/collFactor - 1.0/2.0);
+
+    muForcingX1.DefineVar("nu",&muNu);
+    muForcingX2.DefineVar("nu",&muNu);
+    muForcingX3.DefineVar("nu",&muNu);
+
+    LBMReal forcingX1 = 0;
+    LBMReal forcingX2 = 0;
+    LBMReal forcingX3 = 0;
+    }*/
+    forcingX1 = 0.0;
+    forcingX2 = 0.0;
+    forcingX3 = 0.0;
+    /////////////////////////////////////
+
+    localDistributionsF =
+        dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions();
+    nonLocalDistributionsF =
+        dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions();
+    zeroDistributionsF =
+        dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions();
+
+    localDistributionsH =
+        dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getHdistributions())->getLocalDistributions();
+    nonLocalDistributionsH =
+        dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getHdistributions())->getNonLocalDistributions();
+    zeroDistributionsH =
+        dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getHdistributions())->getZeroDistributions();
+
+    // phaseField = dataSet->getPhaseField();
+
+    SPtr<BCArray3D> bcArray = this->getBCProcessor()->getBCArray();
+
+    const int bcArrayMaxX1 = (int)bcArray->getNX1();
+    const int bcArrayMaxX2 = (int)bcArray->getNX2();
+    const int bcArrayMaxX3 = (int)bcArray->getNX3();
+
+    int minX1 = ghostLayerWidth;
+    int minX2 = ghostLayerWidth;
+    int minX3 = ghostLayerWidth;
+    int maxX1 = bcArrayMaxX1 - ghostLayerWidth;
+    int maxX2 = bcArrayMaxX2 - ghostLayerWidth;
+    int maxX3 = bcArrayMaxX3 - ghostLayerWidth;
+
+    //#pragma omp parallel num_threads(8)
+    {
+        //   int i = omp_get_thread_num();
+        //   printf_s("Hello from thread %d\n", i);
+        //}
+        //#pragma omp for
+
+        CbArray3D<LBMReal, IndexerX3X2X1>::CbArray3DPtr phaseField(
+            new CbArray3D<LBMReal, IndexerX3X2X1>(bcArrayMaxX1, bcArrayMaxX2, bcArrayMaxX3, -999.0));
+        CbArray3D<LBMReal, IndexerX3X2X1>::CbArray3DPtr divU(
+            new CbArray3D<LBMReal, IndexerX3X2X1>(bcArrayMaxX1, bcArrayMaxX2, bcArrayMaxX3, 0.0));
+
+        // CbArray3D<LBMReal> phaseField(bcArrayMaxX1, bcArrayMaxX2, bcArrayMaxX3,-999);
+
+        for (int x3 = 0; x3 <= maxX3; x3++) {
+            for (int x2 = 0; x2 <= maxX2; x2++) {
+                for (int x1 = 0; x1 <= maxX1; x1++) {
+                    if (!bcArray->isSolid(x1, x2, x3) && !bcArray->isUndefined(x1, x2, x3)) {
+                        int x1p = x1 + 1;
+                        int x2p = x2 + 1;
+                        int x3p = x3 + 1;
+
+                        LBMReal mfcbb = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3);
+                        LBMReal mfbcb = (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3);
+                        LBMReal mfbbc = (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3);
+                        LBMReal mfccb = (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3);
+                        LBMReal mfacb = (*this->localDistributionsH)(D3Q27System::ET_NW, x1p, x2, x3);
+                        LBMReal mfcbc = (*this->localDistributionsH)(D3Q27System::ET_TE, x1, x2, x3);
+                        LBMReal mfabc = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p, x2, x3);
+                        LBMReal mfbcc = (*this->localDistributionsH)(D3Q27System::ET_TN, x1, x2, x3);
+                        LBMReal mfbac = (*this->localDistributionsH)(D3Q27System::ET_TS, x1, x2p, x3);
+                        LBMReal mfccc = (*this->localDistributionsH)(D3Q27System::ET_TNE, x1, x2, x3);
+                        LBMReal mfacc = (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2, x3);
+                        LBMReal mfcac = (*this->localDistributionsH)(D3Q27System::ET_TSE, x1, x2p, x3);
+                        LBMReal mfaac = (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3);
+                        LBMReal mfabb = (*this->nonLocalDistributionsH)(D3Q27System::ET_W, x1p, x2, x3);
+                        LBMReal mfbab = (*this->nonLocalDistributionsH)(D3Q27System::ET_S, x1, x2p, x3);
+                        LBMReal mfbba = (*this->nonLocalDistributionsH)(D3Q27System::ET_B, x1, x2, x3p);
+                        LBMReal mfaab = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW, x1p, x2p, x3);
+                        LBMReal mfcab = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE, x1, x2p, x3);
+                        LBMReal mfaba = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW, x1p, x2, x3p);
+                        LBMReal mfcba = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE, x1, x2, x3p);
+                        LBMReal mfbaa = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS, x1, x2p, x3p);
+                        LBMReal mfbca = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN, x1, x2, x3p);
+                        LBMReal mfaaa = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p);
+                        LBMReal mfcaa = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1, x2p, x3p);
+                        LBMReal mfaca = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2, x3p);
+                        LBMReal mfcca = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1, x2, x3p);
+
+                        LBMReal mfbbb = (*this->zeroDistributionsH)(x1, x2, x3);
+                        // LBMReal phase = h[REST] + h[E] + h[W] + h[N] + h[S] + h[T] + h[B] + h[NE] + h[SW] + h[SE] +
+                        // h[NW] + h[TE] + h[BW] + 	h[BE] + h[TW] + h[TN] + h[BS] + h[BN] + h[TS] + h[TNE] + h[TNW] +
+                        //h[TSE] + h[TSW] + h[BNE] + h[BNW] + h[BSE] + h[BSW]; if (phase > 1.0) phase = 1.0e0;
+                        //(*phaseField)(x1,x2,x3) = phase;
+                        (*phaseField)(x1, x2, x3) = (mfaaa + mfaac + mfaca + mfcaa + mfacc + mfcac + mfccc + mfcca) +
+                                                    (mfaab + mfacb + mfcab + mfccb) + (mfaba + mfabc + mfcba + mfcbc) +
+                                                    (mfbaa + mfbac + mfbca + mfbcc) + (mfabb + mfcbb) +
+                                                    (mfbab + mfbcb) + (mfbba + mfbbc) + mfbbb;
+                    }
+                }
+            }
+        }
+
+        LBMReal collFactorM;
+        LBMReal forcingTerm[D3Q27System::ENDF + 1];
+        // LBMReal m000, m100, m010, m001, m110, m101, m011, m200, m020, m002, m120, m102, m210, m012, m201, m021, m111,
+        // m220, m202, m022, m211, m121, m112, m221, m212, m122, m222; LBMReal k000, k100, k010, k001, k110, k101, k011,
+        // k200, k020, k002, k120, k102, k210, k012, k201, k021, k111, k220, k202, k022, k211, k121, k112, k221, k212,
+        // k122, k222; LBMReal c000, c100, c010, c001, c110, c101, c011, c200, c020, c002, c120, c102, c210, c012, c201,
+        // c021, c111, c220, c202, c022, c211, c121, c112, c221, c212, c122, c222;
+
+        // LBMReal k200_pl_k020_pl_k002, k200_mi_k020, k200_mi_k002, k210_pl_k012, k210_mi_k012, k201_pl_k021,
+        // k201_mi_k021, k120_pl_k102, k120_mi_k102, k220_pl_k202_pl_k022,
+        // k220_mi2_k202_pl_k022, k220_pl_k202_mi2_k022;
+
+        // LBMReal c200_pl_c020_pl_c002, c200_mi_c020, c200_mi_c002, c210_pl_c012, c210_mi_c012, c201_pl_c021,
+        // c201_mi_c021, c120_pl_c102, c120_mi_c102, c220_pl_c202_pl_c022,
+        // c220_mi2_c202_pl_c022, c220_pl_c202_mi2_c022;
+
+        LBMReal w1, w2, w3, w4, w5, w6, w7, w8, w9, w10;
+
+        w2  = 1.0;
+        w3  = 1.0;
+        w4  = 1.0;
+        w5  = 1.0;
+        w6  = 1.0;
+        w7  = 1.0;
+        w8  = 1.0;
+        w9  = 1.0;
+        w10 = 1.0;
+
+        for (int x3 = minX3; x3 < maxX3; x3++) {
+            for (int x2 = minX2; x2 < maxX2; x2++) {
+                for (int x1 = minX1; x1 < maxX1; x1++) {
+                    if (!bcArray->isSolid(x1, x2, x3) && !bcArray->isUndefined(x1, x2, x3)) {
+                        int x1p = x1 + 1;
+                        int x2p = x2 + 1;
+                        int x3p = x3 + 1;
+
+                        //////////////////////////////////////////////////////////////////////////
+                        // Read distributions and phase field
+                        ////////////////////////////////////////////////////////////////////////////
+                        //////////////////////////////////////////////////////////////////////////
+
+                        // E   N  T
+                        // c   c  c
+                        //////////
+                        // W   S  B
+                        // a   a  a
+
+                        // Rest ist b
+
+                        // mfxyz
+                        // a - negative
+                        // b - null
+                        // c - positive
+
+                        // a b c
+                        //-1 0 1
+
+                        /*
+                        phi[REST] = (phaseField)(x1,x2,x3);
+                        phi[E  ] = (phaseField)(x1 + DX1[E  ], x2 + DX2[E  ], x3 + DX3[E  ]);
+                        phi[N  ] = (phaseField)(x1 + DX1[N  ], x2 + DX2[N  ], x3 + DX3[N  ]);
+                        phi[T  ] = (phaseField)(x1 + DX1[T  ], x2 + DX2[T  ], x3 + DX3[T  ]);
+                        phi[W  ] = (phaseField)(x1 + DX1[W  ], x2 + DX2[W  ], x3 + DX3[W  ]);
+                        phi[S  ] = (phaseField)(x1 + DX1[S  ], x2 + DX2[S  ], x3 + DX3[S  ]);
+                        phi[B  ] = (phaseField)(x1 + DX1[B  ], x2 + DX2[B  ], x3 + DX3[B  ]);
+                        phi[NE ] = (phaseField)(x1 + DX1[NE ], x2 + DX2[NE ], x3 + DX3[NE ]);
+                        phi[NW ] = (phaseField)(x1 + DX1[NW ], x2 + DX2[NW ], x3 + DX3[NW ]);
+                        phi[TE ] = (phaseField)(x1 + DX1[TE ], x2 + DX2[TE ], x3 + DX3[TE ]);
+                        phi[TW ] = (phaseField)(x1 + DX1[TW ], x2 + DX2[TW ], x3 + DX3[TW ]);
+                        phi[TN ] = (phaseField)(x1 + DX1[TN ], x2 + DX2[TN ], x3 + DX3[TN ]);
+                        phi[TS ] = (phaseField)(x1 + DX1[TS ], x2 + DX2[TS ], x3 + DX3[TS ]);
+                        phi[SW ] = (phaseField)(x1 + DX1[SW ], x2 + DX2[SW ], x3 + DX3[SW ]);
+                        phi[SE ] = (phaseField)(x1 + DX1[SE ], x2 + DX2[SE ], x3 + DX3[SE ]);
+                        phi[BW ] = (phaseField)(x1 + DX1[BW ], x2 + DX2[BW ], x3 + DX3[BW ]);
+                        phi[BE ] = (phaseField)(x1 + DX1[BE ], x2 + DX2[BE ], x3 + DX3[BE ]);
+                        phi[BS ] = (phaseField)(x1 + DX1[BS ], x2 + DX2[BS ], x3 + DX3[BS ]);
+                        phi[BN ] = (phaseField)(x1 + DX1[BN ], x2 + DX2[BN ], x3 + DX3[BN ]);
+                        phi[BSW] = (phaseField)(x1 + DX1[BSW], x2 + DX2[BSW], x3 + DX3[BSW]);
+                        phi[BSE] = (phaseField)(x1 + DX1[BSE], x2 + DX2[BSE], x3 + DX3[BSE]);
+                        phi[BNW] = (phaseField)(x1 + DX1[BNW], x2 + DX2[BNW], x3 + DX3[BNW]);
+                        phi[BNE] = (phaseField)(x1 + DX1[BNE], x2 + DX2[BNE], x3 + DX3[BNE]);
+                        phi[TNE] = (phaseField)(x1 + DX1[TNE], x2 + DX2[TNE], x3 + DX3[TNE]);
+                        phi[TNW] = (phaseField)(x1 + DX1[TNW], x2 + DX2[TNW], x3 + DX3[TNW]);
+                        phi[TSE] = (phaseField)(x1 + DX1[TSE], x2 + DX2[TSE], x3 + DX3[TSE]);
+                        phi[TSW] = (phaseField)(x1 + DX1[TSW], x2 + DX2[TSW], x3 + DX3[TSW]);
+                        */
+                        findNeighbors(phaseField, x1, x2, x3);
+
+                        LBMReal mfcbb = (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3);
+                        LBMReal mfbcb = (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3);
+                        LBMReal mfbbc = (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3);
+                        LBMReal mfccb = (*this->localDistributionsF)(D3Q27System::ET_NE, x1, x2, x3);
+                        LBMReal mfacb = (*this->localDistributionsF)(D3Q27System::ET_NW, x1p, x2, x3);
+                        LBMReal mfcbc = (*this->localDistributionsF)(D3Q27System::ET_TE, x1, x2, x3);
+                        LBMReal mfabc = (*this->localDistributionsF)(D3Q27System::ET_TW, x1p, x2, x3);
+                        LBMReal mfbcc = (*this->localDistributionsF)(D3Q27System::ET_TN, x1, x2, x3);
+                        LBMReal mfbac = (*this->localDistributionsF)(D3Q27System::ET_TS, x1, x2p, x3);
+                        LBMReal mfccc = (*this->localDistributionsF)(D3Q27System::ET_TNE, x1, x2, x3);
+                        LBMReal mfacc = (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p, x2, x3);
+                        LBMReal mfcac = (*this->localDistributionsF)(D3Q27System::ET_TSE, x1, x2p, x3);
+                        LBMReal mfaac = (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p, x2p, x3);
+                        LBMReal mfabb = (*this->nonLocalDistributionsF)(D3Q27System::ET_W, x1p, x2, x3);
+                        LBMReal mfbab = (*this->nonLocalDistributionsF)(D3Q27System::ET_S, x1, x2p, x3);
+                        LBMReal mfbba = (*this->nonLocalDistributionsF)(D3Q27System::ET_B, x1, x2, x3p);
+                        LBMReal mfaab = (*this->nonLocalDistributionsF)(D3Q27System::ET_SW, x1p, x2p, x3);
+                        LBMReal mfcab = (*this->nonLocalDistributionsF)(D3Q27System::ET_SE, x1, x2p, x3);
+                        LBMReal mfaba = (*this->nonLocalDistributionsF)(D3Q27System::ET_BW, x1p, x2, x3p);
+                        LBMReal mfcba = (*this->nonLocalDistributionsF)(D3Q27System::ET_BE, x1, x2, x3p);
+                        LBMReal mfbaa = (*this->nonLocalDistributionsF)(D3Q27System::ET_BS, x1, x2p, x3p);
+                        LBMReal mfbca = (*this->nonLocalDistributionsF)(D3Q27System::ET_BN, x1, x2, x3p);
+                        LBMReal mfaaa = (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p, x2p, x3p);
+                        LBMReal mfcaa = (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1, x2p, x3p);
+                        LBMReal mfaca = (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p, x2, x3p);
+                        LBMReal mfcca = (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1, x2, x3p);
+
+                        LBMReal mfbbb = (*this->zeroDistributionsF)(x1, x2, x3);
+
+                        LBMReal rhoH = 1.0;
+                        LBMReal rhoL = 1.0 / densityRatio;
+
+                        // LBMReal rhoToPhi = (1.0 - 1.0/densityRatio);
+                        LBMReal rhoToPhi = (rhoH - rhoL) / (phiH - phiL);
+
+                        // collFactorM = phi[REST]*collFactorL + (1-phi[REST])*collFactorG;
+                        // collFactorM = phi[REST]*collFactorG + (1-phi[REST])*collFactorL;
+
+                        // LBMReal tauH = 1.0;
+                        // LBMReal di = sqrt(8*kappa/beta);
+
+                        LBMReal dX1_phi = gradX1_phi();
+                        LBMReal dX2_phi = gradX2_phi();
+                        LBMReal dX3_phi = gradX3_phi();
+
+                        LBMReal denom = sqrt(dX1_phi * dX1_phi + dX2_phi * dX2_phi + dX3_phi * dX3_phi) + 1e-9;
+                        // LBMReal normX1 = dX1_phi/denom;
+                        // LBMReal normX2 = dX2_phi/denom;
+                        // LBMReal normX3 = dX3_phi/denom;
+
+                        collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[REST] - phiH) / (phiH - phiL);
+
+                        /*if ((phi[REST] > 0.1)||(phi[REST] < 0.9))
+                        {
+                            collFactorM*=(1.0-denom);
+                        }*/
+
+                        w1 = collFactorM;
+
+                        /*dX1_phi = -normX1*((phi[REST]>phiH || phi[REST]<phiL) ? 0.0 : 4*(phi[REST] - phiL)*(phi[REST]
+                        - phiH)/di); dX2_phi = -normX2*((phi[REST]>phiH || phi[REST]<phiL) ? 0.0 : 4*(phi[REST] -
+                        phiL)*(phi[REST] - phiH)/di); dX3_phi = -normX3*((phi[REST]>phiH || phi[REST]<phiL) ? 0.0 :
+                        4*(phi[REST] - phiL)*(phi[REST] - phiH)/di);*/
+
+                        // UbTupleDouble3 coords = grid->getNodeCoordinates(block, x1, x2, x3);
+                        /*Block3D bl = this->block();
+
+                        int wX1 = bl->getX1()  + x1;
+                        int wX2 = bl->getX2()  + x2;
+                        int wX3 = bl->getX3()  + x3;*/
+
+                        /*if (wX3 >= 30.0)
+                        {
+                        dX1_phi = 0.0;
+                        dX2_phi = 0.0;
+                        dX3_phi = 0.0;
+                        }*/
+
+                        LBMReal mu =
+                            2 * beta * phi[REST] * (phi[REST] - 1) * (2 * phi[REST] - 1) - kappa * nabla2_phi();
+
+                        // LBMReal rhoToPhi = (1.0/densityRatio - 1.0);
+
+                        //----------- Calculating Macroscopic Values -------------
+
+                        // LBMReal rho = phi[REST] + (1.0 - phi[REST])*1.0/densityRatio;
+                        LBMReal rho = rhoH + rhoToPhi * (phi[REST] - phiH);
+                        // LBMReal rho = phi[REST]*1.0/densityRatio + (1.0 - phi[REST]);
+
+                        if (withForcing) {
+                            // muX1 = static_cast<double>(x1-1+ix1*maxX1);
+                            // muX2 = static_cast<double>(x2-1+ix2*maxX2);
+                            // muX3 = static_cast<double>(x3-1+ix3*maxX3);
+
+                            forcingX1 = muForcingX1.Eval();
+                            forcingX2 = muForcingX2.Eval();
+                            forcingX3 = muForcingX3.Eval();
+
+                            LBMReal rho_m = 1.0 / densityRatio;
+                            forcingX1     = forcingX1 * (rho - rho_m);
+                            forcingX2     = forcingX2 * (rho - rho_m);
+                            forcingX3     = forcingX3 * (rho - rho_m);
+
+                            // ux += forcingX1*deltaT*0.5; // X
+                            // uy += forcingX2*deltaT*0.5; // Y
+                            // uz += forcingX3*deltaT*0.5; // Z
+                        }
+
+                        LBMReal ux = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
+                                      (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
+                                      (mfcbb - mfabb)) /
+                                         (rho * c1o3) +
+                                     (mu * dX1_phi + forcingX1) / (2 * rho);
+
+                        LBMReal uy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
+                                      (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
+                                      (mfbcb - mfbab)) /
+                                         (rho * c1o3) +
+                                     (mu * dX2_phi + forcingX2) / (2 * rho);
+
+                        LBMReal uz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
+                                      (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
+                                      (mfbbc - mfbba)) /
+                                         (rho * c1o3) +
+                                     (mu * dX3_phi + forcingX3) / (2 * rho);
+
+                        // LBMReal p1 = (mfaaa+mfaac+mfaca+mfcaa+mfacc+mfcac+mfccc+mfcca)
+                        // +(mfaab+mfacb+mfcab+mfccb)+(mfaba+mfabc+mfcba+mfcbc)+(mfbaa+mfbac+mfbca+mfbcc)
+                        // +(mfabb+mfcbb)+(mfbab+mfbcb)+(mfbba+mfbbc)+mfbbb +
+                        //(ux*rhoToPhi*dX1_phi*c1o3 + uy*rhoToPhi*dX2_phi*c1o3 + uz*rhoToPhi*dX3_phi*c1o3)/2.0;
+
+                        // vvx = 0.0; vvy = 0.0; vvz = 0.0;
+                        //--------------------------------------------------------
+
+                        LBMReal ux2 = ux * ux;
+                        LBMReal uy2 = uy * uy;
+                        LBMReal uz2 = uz * uz;
+                        // LBMReal ux_uy = ux*uy;
+                        // LBMReal ux_uz = ux*uz;
+                        // LBMReal uy_uz = uy*uz;
+                        // LBMReal ux_uy_uz = ux*uy*uz;
+
+                        /*
+                                       //----------- Calculating Forcing Terms -------------
+                                       LBMReal forcingTerm1 = (ux*mu*dX1_phi + uy*mu*dX2_phi + uz*mu*dX3_phi);
+                                       for (int dir = STARTF; dir < (ENDF+1); dir++)
+                                       {
+                                           if (dir != REST)
+                                           {
+                                               LBMReal dirGrad_phi = (phi[dir] - phi[INVDIR[dir]])/2.0;
+                                               forcingTerm[dir] = (c1o3*rhoToPhi*dirGrad_phi +
+                           mu*dirGrad_phi)*(DX1[dir]*ux + DX2[dir]*uy + DX3[dir]*uz)*WEIGTH[dir]/c1o3 +
+                           mu*dirGrad_phi*WEIGTH[dir] - (forcingTerm1)*WEIGTH[dir];
+                                           }
+                                           else
+                                           {
+                                               forcingTerm[REST] =  -(forcingTerm1)*WEIGTH[REST];
+                                           }
+                                       }
+                                      //--------------------------------------------------------
+                        */
+
+                        //----------- Calculating Forcing Terms * -------------
+                        // LBMReal forcingTerm1 = (ux*mu*dX1_phi + uy*mu*dX2_phi + uz*mu*dX3_phi);
+                        for (int dir = STARTF; dir <= (FENDDIR); dir++) {
+                            LBMReal velProd = DX1[dir] * ux + DX2[dir] * uy + DX3[dir] * uz;
+                            LBMReal velSq1  = velProd * velProd;
+                            LBMReal gamma = WEIGTH[dir] * (1.0 + 3 * velProd + 4.5 * velSq1 - 1.5 * (ux2 + uy2 + uz2));
+
+                            // forcingTerm[dir] = (DX1[dir] - ux)*((gamma - WEIGTH[dir])*c1o3*rhoToPhi*dX1_phi +
+                            // gamma*mu*dX1_phi) +
+                            //   (DX2[dir] - uy)*((gamma - WEIGTH[dir])*c1o3*rhoToPhi*dX2_phi + gamma*mu*dX2_phi) +
+                            //   (DX3[dir] - uz)*((gamma - WEIGTH[dir])*c1o3*rhoToPhi*dX3_phi + gamma*mu*dX3_phi);
+
+                            LBMReal fac1 = (gamma - WEIGTH[dir]) * c1o3 * rhoToPhi;
+                            // LBMReal dirGrad_phi = (phi[dir] - phi[INVDIR[dir]])/2.0;
+                            // LBMReal dirGrad_phi = DX1[dir]*dX1_phi + DX2[dir]*dX2_phi + DX3[dir]*dX3_phi;
+
+                            /*forcingTerm[dir] =  (- (ux)*(fac1*dX1_phi + gamma*mu*dX1_phi) -
+                            (uy)*(fac1*dX2_phi + gamma*mu*dX2_phi) -
+                            (uz)*(fac1*dX3_phi + gamma*mu*dX3_phi)) + (fac1*dirGrad_phi + gamma*mu*dirGrad_phi +
+                            DX1[dir]*forcingX1 + DX2[dir]*forcingX2 + DX3[dir]*forcingX3);*/
+
+                            forcingTerm[dir] = ((-ux) * (fac1 * dX1_phi + gamma * (mu * dX1_phi + forcingX1)) +
+                                                (-uy) * (fac1 * dX2_phi + gamma * (mu * dX2_phi + forcingX2)) +
+                                                (-uz) * (fac1 * dX3_phi + gamma * (mu * dX3_phi + forcingX3))) +
+                                               (DX1[dir]) * (fac1 * dX1_phi + gamma * (mu * dX1_phi + forcingX1)) +
+                                               (DX2[dir]) * (fac1 * dX2_phi + gamma * (mu * dX2_phi + forcingX2)) +
+                                               (DX3[dir]) * (fac1 * dX3_phi + gamma * (mu * dX3_phi + forcingX3));
+                        }
+
+                        LBMReal gamma = WEIGTH[REST] * (1.0 - 1.5 * (ux2 + uy2 + uz2));
+                        /*forcingTerm[REST] = -(ux)*((gamma - WEIGTH[REST])*c1o3*rhoToPhi*dX1_phi + gamma*mu*dX1_phi) -
+                        (uy)*((gamma - WEIGTH[REST])*c1o3*rhoToPhi*dX2_phi + gamma*mu*dX2_phi) -
+                        (uz)*((gamma - WEIGTH[REST])*c1o3*rhoToPhi*dX3_phi + gamma*mu*dX3_phi);*/
+                        LBMReal fac1      = (gamma - WEIGTH[REST]) * c1o3 * rhoToPhi;
+                        forcingTerm[REST] = (-ux) * (fac1 * dX1_phi + gamma * (mu * dX1_phi + forcingX1)) +
+                                            (-uy) * (fac1 * dX2_phi + gamma * (mu * dX2_phi + forcingX2)) +
+                                            (-uz) * (fac1 * dX3_phi + gamma * (mu * dX3_phi + forcingX3));
+
+                        //--------------------------------------------------------
+
+                        /*
+                                       f1[E  ] = (g[E  ] + 0.5*forcingTerm[E  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[E ]/c1o3;
+                                       f1[N  ] = (g[N  ] + 0.5*forcingTerm[N  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[N ]/c1o3;
+                                       f1[T  ] = (g[T  ] + 0.5*forcingTerm[T  ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[T ]/c1o3;
+                                       f1[NE ] = (g[NE ] + 0.5*forcingTerm[NE ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[NE
+                           ]/c1o3; f1[NW ] = (g[NW ] + 0.5*forcingTerm[NW ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[NW ]/c1o3;
+                                       f1[TE ] = (g[TE ] + 0.5*forcingTerm[TE ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TE
+                           ]/c1o3; f1[TW ] = (g[TW ] + 0.5*forcingTerm[TW ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TW ]/c1o3;
+                                       f1[TN ] = (g[TN ] + 0.5*forcingTerm[TN ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TN
+                           ]/c1o3; f1[TS ] = (g[TS ] + 0.5*forcingTerm[TS ])/c1o3 - (p1 - rho*c1o3)*WEIGTH[TS ]/c1o3;
+                                       f1[TNE] = (g[TNE] + 0.5*forcingTerm[TNE])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[TNE]/c1o3; f1[TNW] = (g[TNW] + 0.5*forcingTerm[TNW])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[TNW]/c1o3; f1[TSE] = (g[TSE] + 0.5*forcingTerm[TSE])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[TSE]/c1o3; f1[TSW] = (g[TSW] + 0.5*forcingTerm[TSW])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[TSW]/c1o3; f1[W  ] = (g[W  ] + 0.5*forcingTerm[W  ])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[W  ]/c1o3; f1[S  ] = (g[S  ] + 0.5*forcingTerm[S  ])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[S  ]/c1o3; f1[B  ] = (g[B  ] + 0.5*forcingTerm[B  ])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[B  ]/c1o3; f1[SW ] = (g[SW ] + 0.5*forcingTerm[SW ])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[SW ]/c1o3; f1[SE ] = (g[SE ] + 0.5*forcingTerm[SE ])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[SE ]/c1o3; f1[BW ] = (g[BW ] + 0.5*forcingTerm[BW ])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[BW ]/c1o3; f1[BE ] = (g[BE ] + 0.5*forcingTerm[BE ])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[BE ]/c1o3; f1[BS ] = (g[BS ] + 0.5*forcingTerm[BS ])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[BS ]/c1o3; f1[BN ] = (g[BN ] + 0.5*forcingTerm[BN ])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[BN ]/c1o3; f1[BSW] = (g[BSW] + 0.5*forcingTerm[BSW])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[BSW]/c1o3; f1[BSE] = (g[BSE] + 0.5*forcingTerm[BSE])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[BSE]/c1o3; f1[BNW] = (g[BNW] + 0.5*forcingTerm[BNW])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[BNW]/c1o3; f1[BNE] = (g[BNE] + 0.5*forcingTerm[BNE])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[BNE]/c1o3; f1[REST] = (g[REST] + 0.5*forcingTerm[REST])/c1o3 - (p1 -
+                           rho*c1o3)*WEIGTH[REST]/c1o3;
+                        */
+
+                        mfcbb = 3.0 * (mfcbb + 0.5 * forcingTerm[E]) / rho;    //-(3.0*p1 - rho)*WEIGTH[E  ];
+                        mfbcb = 3.0 * (mfbcb + 0.5 * forcingTerm[N]) / rho;    //-(3.0*p1 - rho)*WEIGTH[N  ];
+                        mfbbc = 3.0 * (mfbbc + 0.5 * forcingTerm[T]) / rho;    //-(3.0*p1 - rho)*WEIGTH[T  ];
+                        mfccb = 3.0 * (mfccb + 0.5 * forcingTerm[NE]) / rho;   //-(3.0*p1 - rho)*WEIGTH[NE ];
+                        mfacb = 3.0 * (mfacb + 0.5 * forcingTerm[NW]) / rho;   //-(3.0*p1 - rho)*WEIGTH[NW ];
+                        mfcbc = 3.0 * (mfcbc + 0.5 * forcingTerm[TE]) / rho;   //-(3.0*p1 - rho)*WEIGTH[TE ];
+                        mfabc = 3.0 * (mfabc + 0.5 * forcingTerm[TW]) / rho;   //-(3.0*p1 - rho)*WEIGTH[TW ];
+                        mfbcc = 3.0 * (mfbcc + 0.5 * forcingTerm[TN]) / rho;   //-(3.0*p1 - rho)*WEIGTH[TN ];
+                        mfbac = 3.0 * (mfbac + 0.5 * forcingTerm[TS]) / rho;   //-(3.0*p1 - rho)*WEIGTH[TS ];
+                        mfccc = 3.0 * (mfccc + 0.5 * forcingTerm[TNE]) / rho;  //-(3.0*p1 - rho)*WEIGTH[TNE];
+                        mfacc = 3.0 * (mfacc + 0.5 * forcingTerm[TNW]) / rho;  //-(3.0*p1 - rho)*WEIGTH[TNW];
+                        mfcac = 3.0 * (mfcac + 0.5 * forcingTerm[TSE]) / rho;  //-(3.0*p1 - rho)*WEIGTH[TSE];
+                        mfaac = 3.0 * (mfaac + 0.5 * forcingTerm[TSW]) / rho;  //-(3.0*p1 - rho)*WEIGTH[TSW];
+                        mfabb = 3.0 * (mfabb + 0.5 * forcingTerm[W]) / rho;    //-(3.0*p1 - rho)*WEIGTH[W  ];
+                        mfbab = 3.0 * (mfbab + 0.5 * forcingTerm[S]) / rho;    //-(3.0*p1 - rho)*WEIGTH[S  ];
+                        mfbba = 3.0 * (mfbba + 0.5 * forcingTerm[B]) / rho;    //-(3.0*p1 - rho)*WEIGTH[B  ];
+                        mfaab = 3.0 * (mfaab + 0.5 * forcingTerm[SW]) / rho;   //-(3.0*p1 - rho)*WEIGTH[SW ];
+                        mfcab = 3.0 * (mfcab + 0.5 * forcingTerm[SE]) / rho;   //-(3.0*p1 - rho)*WEIGTH[SE ];
+                        mfaba = 3.0 * (mfaba + 0.5 * forcingTerm[BW]) / rho;   //-(3.0*p1 - rho)*WEIGTH[BW ];
+                        mfcba = 3.0 * (mfcba + 0.5 * forcingTerm[BE]) / rho;   //-(3.0*p1 - rho)*WEIGTH[BE ];
+                        mfbaa = 3.0 * (mfbaa + 0.5 * forcingTerm[BS]) / rho;   //-(3.0*p1 - rho)*WEIGTH[BS ];
+                        mfbca = 3.0 * (mfbca + 0.5 * forcingTerm[BN]) / rho;   //-(3.0*p1 - rho)*WEIGTH[BN ];
+                        mfaaa = 3.0 * (mfaaa + 0.5 * forcingTerm[BSW]) / rho;  //-(3.0*p1 - rho)*WEIGTH[BSW];
+                        mfcaa = 3.0 * (mfcaa + 0.5 * forcingTerm[BSE]) / rho;  //-(3.0*p1 - rho)*WEIGTH[BSE];
+                        mfaca = 3.0 * (mfaca + 0.5 * forcingTerm[BNW]) / rho;  //-(3.0*p1 - rho)*WEIGTH[BNW];
+                        mfcca = 3.0 * (mfcca + 0.5 * forcingTerm[BNE]) / rho;  //-(3.0*p1 - rho)*WEIGTH[BNE];
+                        mfbbb = 3.0 * (mfbbb + 0.5 * forcingTerm[REST]) / rho; //- (3.0*p1 - rho)*WEIGTH[REST];
+
+                        LBMReal rho1 = (mfaaa + mfaac + mfaca + mfcaa + mfacc + mfcac + mfccc + mfcca) +
+                                       (mfaab + mfacb + mfcab + mfccb) + (mfaba + mfabc + mfcba + mfcbc) +
+                                       (mfbaa + mfbac + mfbca + mfbcc) + (mfabb + mfcbb) + (mfbab + mfbcb) +
+                                       (mfbba + mfbbc) + mfbbb;
+
+                        /*
+                        //forcing
+                        ///////////////////////////////////////////////////////////////////////////////////////////
+                        if (withForcing)
+                        {
+                           muX1 = static_cast<double>(x1-1+ix1*maxX1);
+                           muX2 = static_cast<double>(x2-1+ix2*maxX2);
+                           muX3 = static_cast<double>(x3-1+ix3*maxX3);
+
+                           forcingX1 = muForcingX1.Eval();
+                           forcingX2 = muForcingX2.Eval();
+                           forcingX3 = muForcingX3.Eval();
+
+                           vvx += forcingX1*deltaT*0.5; // X
+                           vvy += forcingX2*deltaT*0.5; // Y
+                           vvz += forcingX3*deltaT*0.5; // Z
+                        }
+                        ///////////////////////////////////////////////////////////////////////////////////////////
+                        */
+
+                        LBMReal oMdrho, m0, m1, m2;
+
+                        oMdrho = mfccc + mfaaa;
+                        m0     = mfaca + mfcac;
+                        m1     = mfacc + mfcaa;
+                        m2     = mfaac + mfcca;
+                        oMdrho += m0;
+                        m1 += m2;
+                        oMdrho += m1;
+                        m0 = mfbac + mfbca;
+                        m1 = mfbaa + mfbcc;
+                        m0 += m1;
+                        m1 = mfabc + mfcba;
+                        m2 = mfaba + mfcbc;
+                        m1 += m2;
+                        m0 += m1;
+                        m1 = mfacb + mfcab;
+                        m2 = mfaab + mfccb;
+                        m1 += m2;
+                        m0 += m1;
+                        oMdrho += m0;
+                        m0 = mfabb + mfcbb;
+                        m1 = mfbab + mfbcb;
+                        m2 = mfbba + mfbbc;
+                        m0 += m1 + m2;
+                        m0 += mfbbb; // hat gefehlt
+                        oMdrho = 1. - (oMdrho + m0);
+                        // oMdrho = rho - (oMdrho + m0);
+
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        LBMReal wadjust;
+                        LBMReal qudricLimit = 0.01;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // Hin
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36  Konditionieren
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // Z - Dir
+                        m2    = mfaaa + mfaac;
+                        m1    = mfaac - mfaaa;
+                        m0    = m2 + mfaab;
+                        mfaaa = m0;
+                        m0 += c1o36 * oMdrho;
+                        mfaab = m1 - m0 * uz;
+                        mfaac = m2 - 2. * m1 * uz + uz2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfaba + mfabc;
+                        m1    = mfabc - mfaba;
+                        m0    = m2 + mfabb;
+                        mfaba = m0;
+                        m0 += c1o9 * oMdrho;
+                        mfabb = m1 - m0 * uz;
+                        mfabc = m2 - 2. * m1 * uz + uz2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfaca + mfacc;
+                        m1    = mfacc - mfaca;
+                        m0    = m2 + mfacb;
+                        mfaca = m0;
+                        m0 += c1o36 * oMdrho;
+                        mfacb = m1 - m0 * uz;
+                        mfacc = m2 - 2. * m1 * uz + uz2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfbaa + mfbac;
+                        m1    = mfbac - mfbaa;
+                        m0    = m2 + mfbab;
+                        mfbaa = m0;
+                        m0 += c1o9 * oMdrho;
+                        mfbab = m1 - m0 * uz;
+                        mfbac = m2 - 2. * m1 * uz + uz2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfbba + mfbbc;
+                        m1    = mfbbc - mfbba;
+                        m0    = m2 + mfbbb;
+                        mfbba = m0;
+                        m0 += c4o9 * oMdrho;
+                        mfbbb = m1 - m0 * uz;
+                        mfbbc = m2 - 2. * m1 * uz + uz2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfbca + mfbcc;
+                        m1    = mfbcc - mfbca;
+                        m0    = m2 + mfbcb;
+                        mfbca = m0;
+                        m0 += c1o9 * oMdrho;
+                        mfbcb = m1 - m0 * uz;
+                        mfbcc = m2 - 2. * m1 * uz + uz2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfcaa + mfcac;
+                        m1    = mfcac - mfcaa;
+                        m0    = m2 + mfcab;
+                        mfcaa = m0;
+                        m0 += c1o36 * oMdrho;
+                        mfcab = m1 - m0 * uz;
+                        mfcac = m2 - 2. * m1 * uz + uz2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfcba + mfcbc;
+                        m1    = mfcbc - mfcba;
+                        m0    = m2 + mfcbb;
+                        mfcba = m0;
+                        m0 += c1o9 * oMdrho;
+                        mfcbb = m1 - m0 * uz;
+                        mfcbc = m2 - 2. * m1 * uz + uz2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfcca + mfccc;
+                        m1    = mfccc - mfcca;
+                        m0    = m2 + mfccb;
+                        mfcca = m0;
+                        m0 += c1o36 * oMdrho;
+                        mfccb = m1 - m0 * uz;
+                        mfccc = m2 - 2. * m1 * uz + uz2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // mit  1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // Y - Dir
+                        m2    = mfaaa + mfaca;
+                        m1    = mfaca - mfaaa;
+                        m0    = m2 + mfaba;
+                        mfaaa = m0;
+                        m0 += c1o6 * oMdrho;
+                        mfaba = m1 - m0 * uy;
+                        mfaca = m2 - 2. * m1 * uy + uy2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfaab + mfacb;
+                        m1    = mfacb - mfaab;
+                        m0    = m2 + mfabb;
+                        mfaab = m0;
+                        mfabb = m1 - m0 * uy;
+                        mfacb = m2 - 2. * m1 * uy + uy2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfaac + mfacc;
+                        m1    = mfacc - mfaac;
+                        m0    = m2 + mfabc;
+                        mfaac = m0;
+                        m0 += c1o18 * oMdrho;
+                        mfabc = m1 - m0 * uy;
+                        mfacc = m2 - 2. * m1 * uy + uy2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfbaa + mfbca;
+                        m1    = mfbca - mfbaa;
+                        m0    = m2 + mfbba;
+                        mfbaa = m0;
+                        m0 += c2o3 * oMdrho;
+                        mfbba = m1 - m0 * uy;
+                        mfbca = m2 - 2. * m1 * uy + uy2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfbab + mfbcb;
+                        m1    = mfbcb - mfbab;
+                        m0    = m2 + mfbbb;
+                        mfbab = m0;
+                        mfbbb = m1 - m0 * uy;
+                        mfbcb = m2 - 2. * m1 * uy + uy2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfbac + mfbcc;
+                        m1    = mfbcc - mfbac;
+                        m0    = m2 + mfbbc;
+                        mfbac = m0;
+                        m0 += c2o9 * oMdrho;
+                        mfbbc = m1 - m0 * uy;
+                        mfbcc = m2 - 2. * m1 * uy + uy2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfcaa + mfcca;
+                        m1    = mfcca - mfcaa;
+                        m0    = m2 + mfcba;
+                        mfcaa = m0;
+                        m0 += c1o6 * oMdrho;
+                        mfcba = m1 - m0 * uy;
+                        mfcca = m2 - 2. * m1 * uy + uy2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfcab + mfccb;
+                        m1    = mfccb - mfcab;
+                        m0    = m2 + mfcbb;
+                        mfcab = m0;
+                        mfcbb = m1 - m0 * uy;
+                        mfccb = m2 - 2. * m1 * uy + uy2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfcac + mfccc;
+                        m1    = mfccc - mfcac;
+                        m0    = m2 + mfcbc;
+                        mfcac = m0;
+                        m0 += c1o18 * oMdrho;
+                        mfcbc = m1 - m0 * uy;
+                        mfccc = m2 - 2. * m1 * uy + uy2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // mit     1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9            Konditionieren
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // X - Dir
+                        m2    = mfaaa + mfcaa;
+                        m1    = mfcaa - mfaaa;
+                        m0    = m2 + mfbaa;
+                        mfaaa = m0;
+                        m0 += 1. * oMdrho;
+                        mfbaa = m1 - m0 * ux;
+                        mfcaa = m2 - 2. * m1 * ux + ux2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfaba + mfcba;
+                        m1    = mfcba - mfaba;
+                        m0    = m2 + mfbba;
+                        mfaba = m0;
+                        mfbba = m1 - m0 * ux;
+                        mfcba = m2 - 2. * m1 * ux + ux2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfaca + mfcca;
+                        m1    = mfcca - mfaca;
+                        m0    = m2 + mfbca;
+                        mfaca = m0;
+                        m0 += c1o3 * oMdrho;
+                        mfbca = m1 - m0 * ux;
+                        mfcca = m2 - 2. * m1 * ux + ux2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfaab + mfcab;
+                        m1    = mfcab - mfaab;
+                        m0    = m2 + mfbab;
+                        mfaab = m0;
+                        mfbab = m1 - m0 * ux;
+                        mfcab = m2 - 2. * m1 * ux + ux2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfabb + mfcbb;
+                        m1    = mfcbb - mfabb;
+                        m0    = m2 + mfbbb;
+                        mfabb = m0;
+                        mfbbb = m1 - m0 * ux;
+                        mfcbb = m2 - 2. * m1 * ux + ux2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfacb + mfccb;
+                        m1    = mfccb - mfacb;
+                        m0    = m2 + mfbcb;
+                        mfacb = m0;
+                        mfbcb = m1 - m0 * ux;
+                        mfccb = m2 - 2. * m1 * ux + ux2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfaac + mfcac;
+                        m1    = mfcac - mfaac;
+                        m0    = m2 + mfbac;
+                        mfaac = m0;
+                        m0 += c1o3 * oMdrho;
+                        mfbac = m1 - m0 * ux;
+                        mfcac = m2 - 2. * m1 * ux + ux2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfabc + mfcbc;
+                        m1    = mfcbc - mfabc;
+                        m0    = m2 + mfbbc;
+                        mfabc = m0;
+                        mfbbc = m1 - m0 * ux;
+                        mfcbc = m2 - 2. * m1 * ux + ux2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m2    = mfacc + mfccc;
+                        m1    = mfccc - mfacc;
+                        m0    = m2 + mfbcc;
+                        mfacc = m0;
+                        m0 += c1o9 * oMdrho;
+                        mfbcc = m1 - m0 * ux;
+                        mfccc = m2 - 2. * m1 * ux + ux2 * m0;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // Cumulants
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        LBMReal OxxPyyPzz = 1.; // omega2 or bulk viscosity
+                        LBMReal OxyyPxzz  = 1.; //-s9;//2+s9;//
+                        LBMReal OxyyMxzz  = 1.; // 2+s9;//
+                        LBMReal O4        = 1.;
+                        LBMReal O5        = 1.;
+                        LBMReal O6        = 1.;
+
+                        // Cum 4.
+                        // LBMReal CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + 2. * mfbba * mfbab); //
+                        // till 18.05.2015 LBMReal CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + 2. * mfbba *
+                        // mfabb); // till 18.05.2015 LBMReal CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + 2. *
+                        // mfbab * mfabb); // till 18.05.2015
+
+                        LBMReal CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + 2. * mfbba * mfbab);
+                        LBMReal CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + 2. * mfbba * mfabb);
+                        LBMReal CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + 2. * mfbab * mfabb);
+
+                        LBMReal CUMcca = mfcca - ((mfcaa * mfaca + 2. * mfbba * mfbba) +
+                                                  c1o3 * (mfcaa + mfaca) * oMdrho + c1o9 * (oMdrho - 1) * oMdrho);
+                        LBMReal CUMcac = mfcac - ((mfcaa * mfaac + 2. * mfbab * mfbab) +
+                                                  c1o3 * (mfcaa + mfaac) * oMdrho + c1o9 * (oMdrho - 1) * oMdrho);
+                        LBMReal CUMacc = mfacc - ((mfaac * mfaca + 2. * mfabb * mfabb) +
+                                                  c1o3 * (mfaac + mfaca) * oMdrho + c1o9 * (oMdrho - 1) * oMdrho);
+
+                        // LBMReal CUMcca = mfcca - ((mfcaa * mfaca + 2. * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) *
+                        // oMdrho + c1o9*(-p1/c1o3)*oMdrho); LBMReal CUMcac = mfcac - ((mfcaa * mfaac + 2. * mfbab *
+                        // mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(-p1/c1o3)*oMdrho); LBMReal CUMacc = mfacc -
+                        // ((mfaac * mfaca + 2. * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho +
+                        // c1o9*(-p1/c1o3)*oMdrho);
+
+                        // Cum 5.
+                        LBMReal CUMbcc = mfbcc -
+                                         (mfaac * mfbca + mfaca * mfbac + 4. * mfabb * mfbbb +
+                                          2. * (mfbab * mfacb + mfbba * mfabc)) -
+                                         c1o3 * (mfbca + mfbac) * oMdrho;
+                        LBMReal CUMcbc = mfcbc -
+                                         (mfaac * mfcba + mfcaa * mfabc + 4. * mfbab * mfbbb +
+                                          2. * (mfabb * mfcab + mfbba * mfbac)) -
+                                         c1o3 * (mfcba + mfabc) * oMdrho;
+                        LBMReal CUMccb = mfccb -
+                                         (mfcaa * mfacb + mfaca * mfcab + 4. * mfbba * mfbbb +
+                                          2. * (mfbab * mfbca + mfabb * mfcba)) -
+                                         c1o3 * (mfacb + mfcab) * oMdrho;
+
+                        // Cum 6.
+                        LBMReal CUMccc =
+                            mfccc +
+                            ((-4. * mfbbb * mfbbb - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) -
+                              4. * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) -
+                              2. * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) +
+                             (4. * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) +
+                              2. * (mfcaa * mfaca * mfaac) + 16. * mfbba * mfbab * mfabb) -
+                             c1o3 * (mfacc + mfcac + mfcca) * oMdrho - c1o9 * oMdrho * oMdrho -
+                             c1o9 * (mfcaa + mfaca + mfaac) * oMdrho * (1. - 2. * oMdrho) -
+                             c1o27 * oMdrho * oMdrho * (-2. * oMdrho) +
+                             (2. * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) +
+                              (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa)) *
+                                 c2o3 * oMdrho) +
+                            c1o27 * oMdrho;
+
+                        // 2.
+                        // linear combinations
+                        LBMReal mxxPyyPzz = mfcaa + mfaca + mfaac;
+                        LBMReal mxxMyy    = mfcaa - mfaca;
+                        LBMReal mxxMzz    = mfcaa - mfaac;
+
+                        LBMReal dxux = -c1o2 * collFactorM * (mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz * (mfaaa - mxxPyyPzz);
+                        LBMReal dyuy = dxux + collFactorM * c3o2 * mxxMyy;
+                        LBMReal dzuz = dxux + collFactorM * c3o2 * mxxMzz;
+
+                        /*LBMReal Dxy =-three*collFactorM*mfbba;
+                        LBMReal Dxz =-three*collFactorM*mfbab;
+                        LBMReal Dyz =-three*collFactorM*mfabb;
+
+                        LBMReal strainMag = sqrt(2*(dxux*dxux + dyuy*dyuy + dzuz*dzuz) + Dxy*Dxy + Dxz*Dxz + Dyz*Dyz);
+                        LBMReal intVis = 3*abs(denom - 1e-9)*strainMag;
+                        LBMReal fluidVis = (1.0/collFactorM - 0.5)/3.0;
+                        collFactorM = 1.0/((fluidVis + intVis)*3.0 + 0.5);*/
+                        (*divU)(x1, x2, x3) = dxux + dyuy + dzuz;
+
+                        // relax
+                        mxxPyyPzz += OxxPyyPzz * (mfaaa - mxxPyyPzz) -
+                                     3. * (1. - c1o2 * OxxPyyPzz) * (ux2 * dxux + uy2 * dyuy + uz2 * dzuz);
+                        mxxMyy += collFactorM * (-mxxMyy) - 3. * (1. - c1o2 * collFactorM) * (ux2 * dxux - uy2 * dyuy);
+                        mxxMzz += collFactorM * (-mxxMzz) - 3. * (1. - c1o2 * collFactorM) * (ux2 * dxux - uz2 * dzuz);
+
+                        mfabb += collFactorM * (-mfabb);
+                        mfbab += collFactorM * (-mfbab);
+                        mfbba += collFactorM * (-mfbba);
+
+                        // linear combinations back
+                        mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz);
+                        mfaca = c1o3 * (-2. * mxxMyy + mxxMzz + mxxPyyPzz);
+                        mfaac = c1o3 * (mxxMyy - 2. * mxxMzz + mxxPyyPzz);
+
+                        // 3.
+                        // linear combinations
+                        LBMReal mxxyPyzz = mfcba + mfabc;
+                        LBMReal mxxyMyzz = mfcba - mfabc;
+
+                        LBMReal mxxzPyyz = mfcab + mfacb;
+                        LBMReal mxxzMyyz = mfcab - mfacb;
+
+                        LBMReal mxyyPxzz = mfbca + mfbac;
+                        LBMReal mxyyMxzz = mfbca - mfbac;
+
+                        // relax
+                        wadjust = OxyyMxzz + (1. - OxyyMxzz) * fabs(mfbbb) / (fabs(mfbbb) + qudricLimit);
+                        mfbbb += wadjust * (-mfbbb);
+                        wadjust = OxyyPxzz + (1. - OxyyPxzz) * fabs(mxxyPyzz) / (fabs(mxxyPyzz) + qudricLimit);
+                        mxxyPyzz += wadjust * (-mxxyPyzz);
+                        wadjust = OxyyMxzz + (1. - OxyyMxzz) * fabs(mxxyMyzz) / (fabs(mxxyMyzz) + qudricLimit);
+                        mxxyMyzz += wadjust * (-mxxyMyzz);
+                        wadjust = OxyyPxzz + (1. - OxyyPxzz) * fabs(mxxzPyyz) / (fabs(mxxzPyyz) + qudricLimit);
+                        mxxzPyyz += wadjust * (-mxxzPyyz);
+                        wadjust = OxyyMxzz + (1. - OxyyMxzz) * fabs(mxxzMyyz) / (fabs(mxxzMyyz) + qudricLimit);
+                        mxxzMyyz += wadjust * (-mxxzMyyz);
+                        wadjust = OxyyPxzz + (1. - OxyyPxzz) * fabs(mxyyPxzz) / (fabs(mxyyPxzz) + qudricLimit);
+                        mxyyPxzz += wadjust * (-mxyyPxzz);
+                        wadjust = OxyyMxzz + (1. - OxyyMxzz) * fabs(mxyyMxzz) / (fabs(mxyyMxzz) + qudricLimit);
+                        mxyyMxzz += wadjust * (-mxyyMxzz);
+
+                        // linear combinations back
+                        mfcba = (mxxyMyzz + mxxyPyzz) * c1o2;
+                        mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2;
+                        mfcab = (mxxzMyyz + mxxzPyyz) * c1o2;
+                        mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2;
+                        mfbca = (mxyyMxzz + mxyyPxzz) * c1o2;
+                        mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2;
+
+                        // 4.
+                        CUMacc += O4 * (-CUMacc);
+                        CUMcac += O4 * (-CUMcac);
+                        CUMcca += O4 * (-CUMcca);
+
+                        CUMbbc += O4 * (-CUMbbc);
+                        CUMbcb += O4 * (-CUMbcb);
+                        CUMcbb += O4 * (-CUMcbb);
+
+                        // 5.
+                        CUMbcc += O5 * (-CUMbcc);
+                        CUMcbc += O5 * (-CUMcbc);
+                        CUMccb += O5 * (-CUMccb);
+
+                        // 6.
+                        CUMccc += O6 * (-CUMccc);
+
+                        // back cumulants to central moments
+                        // 4.
+                        // mfcbb = CUMcbb + ((mfcaa + c1o3 * oMdrho) * mfabb + 2. * mfbba * mfbab); // till 18.05.2015
+                        // mfbcb = CUMbcb + ((mfaca + c1o3 * oMdrho) * mfbab + 2. * mfbba * mfabb); // till 18.05.2015
+                        // mfbbc = CUMbbc + ((mfaac + c1o3 * oMdrho) * mfbba + 2. * mfbab * mfabb); // till 18.05.2015
+
+                        mfcbb = CUMcbb + ((mfcaa + c1o3) * mfabb + 2. * mfbba * mfbab);
+                        mfbcb = CUMbcb + ((mfaca + c1o3) * mfbab + 2. * mfbba * mfabb);
+                        mfbbc = CUMbbc + ((mfaac + c1o3) * mfbba + 2. * mfbab * mfabb);
+
+                        mfcca = CUMcca + (mfcaa * mfaca + 2. * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho +
+                                c1o9 * (oMdrho - 1) * oMdrho;
+                        mfcac = CUMcac + (mfcaa * mfaac + 2. * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho +
+                                c1o9 * (oMdrho - 1) * oMdrho;
+                        mfacc = CUMacc + (mfaac * mfaca + 2. * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho +
+                                c1o9 * (oMdrho - 1) * oMdrho;
+
+                        // mfcca = CUMcca + (mfcaa * mfaca + 2. * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho +
+                        // c1o9*(-p1/c1o3)*oMdrho; mfcac = CUMcac + (mfcaa * mfaac + 2. * mfbab * mfbab) + c1o3 * (mfcaa
+                        // + mfaac) * oMdrho + c1o9*(-p1/c1o3)*oMdrho; mfacc = CUMacc + (mfaac * mfaca + 2. * mfabb *
+                        // mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(-p1/c1o3)*oMdrho;
+
+                        // 5.
+                        mfbcc = CUMbcc +
+                                (mfaac * mfbca + mfaca * mfbac + 4. * mfabb * mfbbb +
+                                 2. * (mfbab * mfacb + mfbba * mfabc)) +
+                                c1o3 * (mfbca + mfbac) * oMdrho;
+                        mfcbc = CUMcbc +
+                                (mfaac * mfcba + mfcaa * mfabc + 4. * mfbab * mfbbb +
+                                 2. * (mfabb * mfcab + mfbba * mfbac)) +
+                                c1o3 * (mfcba + mfabc) * oMdrho;
+                        mfccb = CUMccb +
+                                (mfcaa * mfacb + mfaca * mfcab + 4. * mfbba * mfbbb +
+                                 2. * (mfbab * mfbca + mfabb * mfcba)) +
+                                c1o3 * (mfacb + mfcab) * oMdrho;
+
+                        // 6.
+                        mfccc = CUMccc -
+                                ((-4. * mfbbb * mfbbb - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) -
+                                  4. * (mfabb * mfcbb + mfbac * mfbca + mfbba * mfbbc) -
+                                  2. * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) +
+                                 (4. * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) +
+                                  2. * (mfcaa * mfaca * mfaac) + 16. * mfbba * mfbab * mfabb) -
+                                 c1o3 * (mfacc + mfcac + mfcca) * oMdrho - c1o9 * oMdrho * oMdrho -
+                                 c1o9 * (mfcaa + mfaca + mfaac) * oMdrho * (1. - 2. * oMdrho) -
+                                 c1o27 * oMdrho * oMdrho * (-2. * oMdrho) +
+                                 (2. * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba) +
+                                  (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa)) *
+                                     c2o3 * oMdrho) -
+                                c1o27 * oMdrho;
+
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // forcing
+                        mfbaa = -mfbaa;
+                        mfaba = -mfaba;
+                        mfaab = -mfaab;
+                        //////////////////////////////////////////////////////////////////////////////////////
+
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // back
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9   Konditionieren
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // Z - Dir
+                        m0    = mfaac * c1o2 + mfaab * (uz - c1o2) + (mfaaa + 1. * oMdrho) * (uz2 - uz) * c1o2;
+                        m1    = -mfaac - 2. * mfaab * uz + mfaaa * (1. - uz2) - 1. * oMdrho * uz2;
+                        m2    = mfaac * c1o2 + mfaab * (uz + c1o2) + (mfaaa + 1. * oMdrho) * (uz2 + uz) * c1o2;
+                        mfaaa = m0;
+                        mfaab = m1;
+                        mfaac = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m0    = mfabc * c1o2 + mfabb * (uz - c1o2) + mfaba * (uz2 - uz) * c1o2;
+                        m1    = -mfabc - 2. * mfabb * uz + mfaba * (1. - uz2);
+                        m2    = mfabc * c1o2 + mfabb * (uz + c1o2) + mfaba * (uz2 + uz) * c1o2;
+                        mfaba = m0;
+                        mfabb = m1;
+                        mfabc = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m0    = mfacc * c1o2 + mfacb * (uz - c1o2) + (mfaca + c1o3 * oMdrho) * (uz2 - uz) * c1o2;
+                        m1    = -mfacc - 2. * mfacb * uz + mfaca * (1. - uz2) - c1o3 * oMdrho * uz2;
+                        m2    = mfacc * c1o2 + mfacb * (uz + c1o2) + (mfaca + c1o3 * oMdrho) * (uz2 + uz) * c1o2;
+                        mfaca = m0;
+                        mfacb = m1;
+                        mfacc = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m0    = mfbac * c1o2 + mfbab * (uz - c1o2) + mfbaa * (uz2 - uz) * c1o2;
+                        m1    = -mfbac - 2. * mfbab * uz + mfbaa * (1. - uz2);
+                        m2    = mfbac * c1o2 + mfbab * (uz + c1o2) + mfbaa * (uz2 + uz) * c1o2;
+                        mfbaa = m0;
+                        mfbab = m1;
+                        mfbac = m2;
+                        /////////b//////////////////////////////////////////////////////////////////////////
+                        m0    = mfbbc * c1o2 + mfbbb * (uz - c1o2) + mfbba * (uz2 - uz) * c1o2;
+                        m1    = -mfbbc - 2. * mfbbb * uz + mfbba * (1. - uz2);
+                        m2    = mfbbc * c1o2 + mfbbb * (uz + c1o2) + mfbba * (uz2 + uz) * c1o2;
+                        mfbba = m0;
+                        mfbbb = m1;
+                        mfbbc = m2;
+                        /////////b//////////////////////////////////////////////////////////////////////////
+                        m0    = mfbcc * c1o2 + mfbcb * (uz - c1o2) + mfbca * (uz2 - uz) * c1o2;
+                        m1    = -mfbcc - 2. * mfbcb * uz + mfbca * (1. - uz2);
+                        m2    = mfbcc * c1o2 + mfbcb * (uz + c1o2) + mfbca * (uz2 + uz) * c1o2;
+                        mfbca = m0;
+                        mfbcb = m1;
+                        mfbcc = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m0    = mfcac * c1o2 + mfcab * (uz - c1o2) + (mfcaa + c1o3 * oMdrho) * (uz2 - uz) * c1o2;
+                        m1    = -mfcac - 2. * mfcab * uz + mfcaa * (1. - uz2) - c1o3 * oMdrho * uz2;
+                        m2    = mfcac * c1o2 + mfcab * (uz + c1o2) + (mfcaa + c1o3 * oMdrho) * (uz2 + uz) * c1o2;
+                        mfcaa = m0;
+                        mfcab = m1;
+                        mfcac = m2;
+                        /////////c//////////////////////////////////////////////////////////////////////////
+                        m0    = mfcbc * c1o2 + mfcbb * (uz - c1o2) + mfcba * (uz2 - uz) * c1o2;
+                        m1    = -mfcbc - 2. * mfcbb * uz + mfcba * (1. - uz2);
+                        m2    = mfcbc * c1o2 + mfcbb * (uz + c1o2) + mfcba * (uz2 + uz) * c1o2;
+                        mfcba = m0;
+                        mfcbb = m1;
+                        mfcbc = m2;
+                        /////////c//////////////////////////////////////////////////////////////////////////
+                        m0    = mfccc * c1o2 + mfccb * (uz - c1o2) + (mfcca + c1o9 * oMdrho) * (uz2 - uz) * c1o2;
+                        m1    = -mfccc - 2. * mfccb * uz + mfcca * (1. - uz2) - c1o9 * oMdrho * uz2;
+                        m2    = mfccc * c1o2 + mfccb * (uz + c1o2) + (mfcca + c1o9 * oMdrho) * (uz2 + uz) * c1o2;
+                        mfcca = m0;
+                        mfccb = m1;
+                        mfccc = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18   Konditionieren
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // Y - Dir
+                        m0    = mfaca * c1o2 + mfaba * (uy - c1o2) + (mfaaa + c1o6 * oMdrho) * (uy2 - uy) * c1o2;
+                        m1    = -mfaca - 2. * mfaba * uy + mfaaa * (1. - uy2) - c1o6 * oMdrho * uy2;
+                        m2    = mfaca * c1o2 + mfaba * (uy + c1o2) + (mfaaa + c1o6 * oMdrho) * (uy2 + uy) * c1o2;
+                        mfaaa = m0;
+                        mfaba = m1;
+                        mfaca = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m0    = mfacb * c1o2 + mfabb * (uy - c1o2) + (mfaab + c2o3 * oMdrho) * (uy2 - uy) * c1o2;
+                        m1    = -mfacb - 2. * mfabb * uy + mfaab * (1. - uy2) - c2o3 * oMdrho * uy2;
+                        m2    = mfacb * c1o2 + mfabb * (uy + c1o2) + (mfaab + c2o3 * oMdrho) * (uy2 + uy) * c1o2;
+                        mfaab = m0;
+                        mfabb = m1;
+                        mfacb = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m0    = mfacc * c1o2 + mfabc * (uy - c1o2) + (mfaac + c1o6 * oMdrho) * (uy2 - uy) * c1o2;
+                        m1    = -mfacc - 2. * mfabc * uy + mfaac * (1. - uy2) - c1o6 * oMdrho * uy2;
+                        m2    = mfacc * c1o2 + mfabc * (uy + c1o2) + (mfaac + c1o6 * oMdrho) * (uy2 + uy) * c1o2;
+                        mfaac = m0;
+                        mfabc = m1;
+                        mfacc = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m0    = mfbca * c1o2 + mfbba * (uy - c1o2) + mfbaa * (uy2 - uy) * c1o2;
+                        m1    = -mfbca - 2. * mfbba * uy + mfbaa * (1. - uy2);
+                        m2    = mfbca * c1o2 + mfbba * (uy + c1o2) + mfbaa * (uy2 + uy) * c1o2;
+                        mfbaa = m0;
+                        mfbba = m1;
+                        mfbca = m2;
+                        /////////b//////////////////////////////////////////////////////////////////////////
+                        m0    = mfbcb * c1o2 + mfbbb * (uy - c1o2) + mfbab * (uy2 - uy) * c1o2;
+                        m1    = -mfbcb - 2. * mfbbb * uy + mfbab * (1. - uy2);
+                        m2    = mfbcb * c1o2 + mfbbb * (uy + c1o2) + mfbab * (uy2 + uy) * c1o2;
+                        mfbab = m0;
+                        mfbbb = m1;
+                        mfbcb = m2;
+                        /////////b//////////////////////////////////////////////////////////////////////////
+                        m0    = mfbcc * c1o2 + mfbbc * (uy - c1o2) + mfbac * (uy2 - uy) * c1o2;
+                        m1    = -mfbcc - 2. * mfbbc * uy + mfbac * (1. - uy2);
+                        m2    = mfbcc * c1o2 + mfbbc * (uy + c1o2) + mfbac * (uy2 + uy) * c1o2;
+                        mfbac = m0;
+                        mfbbc = m1;
+                        mfbcc = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m0    = mfcca * c1o2 + mfcba * (uy - c1o2) + (mfcaa + c1o18 * oMdrho) * (uy2 - uy) * c1o2;
+                        m1    = -mfcca - 2. * mfcba * uy + mfcaa * (1. - uy2) - c1o18 * oMdrho * uy2;
+                        m2    = mfcca * c1o2 + mfcba * (uy + c1o2) + (mfcaa + c1o18 * oMdrho) * (uy2 + uy) * c1o2;
+                        mfcaa = m0;
+                        mfcba = m1;
+                        mfcca = m2;
+                        /////////c//////////////////////////////////////////////////////////////////////////
+                        m0    = mfccb * c1o2 + mfcbb * (uy - c1o2) + (mfcab + c2o9 * oMdrho) * (uy2 - uy) * c1o2;
+                        m1    = -mfccb - 2. * mfcbb * uy + mfcab * (1. - uy2) - c2o9 * oMdrho * uy2;
+                        m2    = mfccb * c1o2 + mfcbb * (uy + c1o2) + (mfcab + c2o9 * oMdrho) * (uy2 + uy) * c1o2;
+                        mfcab = m0;
+                        mfcbb = m1;
+                        mfccb = m2;
+                        /////////c//////////////////////////////////////////////////////////////////////////
+                        m0    = mfccc * c1o2 + mfcbc * (uy - c1o2) + (mfcac + c1o18 * oMdrho) * (uy2 - uy) * c1o2;
+                        m1    = -mfccc - 2. * mfcbc * uy + mfcac * (1. - uy2) - c1o18 * oMdrho * uy2;
+                        m2    = mfccc * c1o2 + mfcbc * (uy + c1o2) + (mfcac + c1o18 * oMdrho) * (uy2 + uy) * c1o2;
+                        mfcac = m0;
+                        mfcbc = m1;
+                        mfccc = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        // X - Dir
+                        m0    = mfcaa * c1o2 + mfbaa * (ux - c1o2) + (mfaaa + c1o36 * oMdrho) * (ux2 - ux) * c1o2;
+                        m1    = -mfcaa - 2. * mfbaa * ux + mfaaa * (1. - ux2) - c1o36 * oMdrho * ux2;
+                        m2    = mfcaa * c1o2 + mfbaa * (ux + c1o2) + (mfaaa + c1o36 * oMdrho) * (ux2 + ux) * c1o2;
+                        mfaaa = m0;
+                        mfbaa = m1;
+                        mfcaa = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m0    = mfcba * c1o2 + mfbba * (ux - c1o2) + (mfaba + c1o9 * oMdrho) * (ux2 - ux) * c1o2;
+                        m1    = -mfcba - 2. * mfbba * ux + mfaba * (1. - ux2) - c1o9 * oMdrho * ux2;
+                        m2    = mfcba * c1o2 + mfbba * (ux + c1o2) + (mfaba + c1o9 * oMdrho) * (ux2 + ux) * c1o2;
+                        mfaba = m0;
+                        mfbba = m1;
+                        mfcba = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m0    = mfcca * c1o2 + mfbca * (ux - c1o2) + (mfaca + c1o36 * oMdrho) * (ux2 - ux) * c1o2;
+                        m1    = -mfcca - 2. * mfbca * ux + mfaca * (1. - ux2) - c1o36 * oMdrho * ux2;
+                        m2    = mfcca * c1o2 + mfbca * (ux + c1o2) + (mfaca + c1o36 * oMdrho) * (ux2 + ux) * c1o2;
+                        mfaca = m0;
+                        mfbca = m1;
+                        mfcca = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m0    = mfcab * c1o2 + mfbab * (ux - c1o2) + (mfaab + c1o9 * oMdrho) * (ux2 - ux) * c1o2;
+                        m1    = -mfcab - 2. * mfbab * ux + mfaab * (1. - ux2) - c1o9 * oMdrho * ux2;
+                        m2    = mfcab * c1o2 + mfbab * (ux + c1o2) + (mfaab + c1o9 * oMdrho) * (ux2 + ux) * c1o2;
+                        mfaab = m0;
+                        mfbab = m1;
+                        mfcab = m2;
+                        ///////////b////////////////////////////////////////////////////////////////////////
+                        m0    = mfcbb * c1o2 + mfbbb * (ux - c1o2) + (mfabb + c4o9 * oMdrho) * (ux2 - ux) * c1o2;
+                        m1    = -mfcbb - 2. * mfbbb * ux + mfabb * (1. - ux2) - c4o9 * oMdrho * ux2;
+                        m2    = mfcbb * c1o2 + mfbbb * (ux + c1o2) + (mfabb + c4o9 * oMdrho) * (ux2 + ux) * c1o2;
+                        mfabb = m0;
+                        mfbbb = m1;
+                        mfcbb = m2;
+                        ///////////b////////////////////////////////////////////////////////////////////////
+                        m0    = mfccb * c1o2 + mfbcb * (ux - c1o2) + (mfacb + c1o9 * oMdrho) * (ux2 - ux) * c1o2;
+                        m1    = -mfccb - 2. * mfbcb * ux + mfacb * (1. - ux2) - c1o9 * oMdrho * ux2;
+                        m2    = mfccb * c1o2 + mfbcb * (ux + c1o2) + (mfacb + c1o9 * oMdrho) * (ux2 + ux) * c1o2;
+                        mfacb = m0;
+                        mfbcb = m1;
+                        mfccb = m2;
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        ////////////////////////////////////////////////////////////////////////////////////
+                        m0    = mfcac * c1o2 + mfbac * (ux - c1o2) + (mfaac + c1o36 * oMdrho) * (ux2 - ux) * c1o2;
+                        m1    = -mfcac - 2. * mfbac * ux + mfaac * (1. - ux2) - c1o36 * oMdrho * ux2;
+                        m2    = mfcac * c1o2 + mfbac * (ux + c1o2) + (mfaac + c1o36 * oMdrho) * (ux2 + ux) * c1o2;
+                        mfaac = m0;
+                        mfbac = m1;
+                        mfcac = m2;
+                        ///////////c////////////////////////////////////////////////////////////////////////
+                        m0    = mfcbc * c1o2 + mfbbc * (ux - c1o2) + (mfabc + c1o9 * oMdrho) * (ux2 - ux) * c1o2;
+                        m1    = -mfcbc - 2. * mfbbc * ux + mfabc * (1. - ux2) - c1o9 * oMdrho * ux2;
+                        m2    = mfcbc * c1o2 + mfbbc * (ux + c1o2) + (mfabc + c1o9 * oMdrho) * (ux2 + ux) * c1o2;
+                        mfabc = m0;
+                        mfbbc = m1;
+                        mfcbc = m2;
+                        ///////////c////////////////////////////////////////////////////////////////////////
+                        m0    = mfccc * c1o2 + mfbcc * (ux - c1o2) + (mfacc + c1o36 * oMdrho) * (ux2 - ux) * c1o2;
+                        m1    = -mfccc - 2. * mfbcc * ux + mfacc * (1. - ux2) - c1o36 * oMdrho * ux2;
+                        m2    = mfccc * c1o2 + mfbcc * (ux + c1o2) + (mfacc + c1o36 * oMdrho) * (ux2 + ux) * c1o2;
+                        mfacc = m0;
+                        mfbcc = m1;
+                        mfccc = m2;
+
+                        ///////////////////////////////////////////////////////////////////////////
+
+                        //////////////////////////////////////////////////////////////////////////
+                        // proof correctness
+                        //////////////////////////////////////////////////////////////////////////
+#ifdef PROOF_CORRECTNESS
+                        LBMReal rho_post = (mfaaa + mfaac + mfaca + mfcaa + mfacc + mfcac + mfccc + mfcca) +
+                                           (mfaab + mfacb + mfcab + mfccb) + (mfaba + mfabc + mfcba + mfcbc) +
+                                           (mfbaa + mfbac + mfbca + mfbcc) + (mfabb + mfcbb) + (mfbab + mfbcb) +
+                                           (mfbba + mfbbc) + mfbbb;
+
+                        /*LBMReal rho_post = f1[REST] + f1[E] + f1[W] + f1[N] + f1[S] + f1[T] + f1[B] + f1[NE] + f1[SW]
+                           + f1[SE] + f1[NW] + f1[TE] + f1[BW] + f1[BE] + f1[TW] + f1[TN] + f1[BS] + f1[BN] + f1[TS] +
+                           f1[TNE] + f1[TNW] + f1[TSE] + f1[TSW] + f1[BNE] + f1[BNW] + f1[BSE] + f1[BSW]; */
+                        // LBMReal dif = fabs(rho - rho_post);
+                        LBMReal dif = rho1 - rho_post;
+#ifdef SINGLEPRECISION
+                        if (dif > 10.0E-7 || dif < -10.0E-7)
+#else
+                        if (dif > 10.0E-15 || dif < -10.0E-15)
+#endif
+                        {
+                            UB_THROW(UbException(UB_EXARGS,
+                                                 "rho=" + UbSystem::toString(rho) + ", rho_post=" +
+                                                     UbSystem::toString(rho_post) + " dif=" + UbSystem::toString(dif) +
+                                                     " rho is not correct for node " + UbSystem::toString(x1) + "," +
+                                                     UbSystem::toString(x2) + "," + UbSystem::toString(x3)));
+                            // UBLOG(logERROR,"LBMKernelETD3Q27CCLB::collideAll(): rho is not correct for node
+                            // "+UbSystem::toString(x1)+","+UbSystem::toString(x2)+","+UbSystem::toString(x3));
+                            // exit(EXIT_FAILURE);
+                        }
+#endif
+
+                        mfcbb = rho * c1o3 * (mfcbb) + 0.5 * forcingTerm[E];
+                        mfbcb = rho * c1o3 * (mfbcb) + 0.5 * forcingTerm[N];
+                        mfbbc = rho * c1o3 * (mfbbc) + 0.5 * forcingTerm[T];
+                        mfccb = rho * c1o3 * (mfccb) + 0.5 * forcingTerm[NE];
+                        mfacb = rho * c1o3 * (mfacb) + 0.5 * forcingTerm[NW];
+                        mfcbc = rho * c1o3 * (mfcbc) + 0.5 * forcingTerm[TE];
+                        mfabc = rho * c1o3 * (mfabc) + 0.5 * forcingTerm[TW];
+                        mfbcc = rho * c1o3 * (mfbcc) + 0.5 * forcingTerm[TN];
+                        mfbac = rho * c1o3 * (mfbac) + 0.5 * forcingTerm[TS];
+                        mfccc = rho * c1o3 * (mfccc) + 0.5 * forcingTerm[TNE];
+                        mfacc = rho * c1o3 * (mfacc) + 0.5 * forcingTerm[TNW];
+                        mfcac = rho * c1o3 * (mfcac) + 0.5 * forcingTerm[TSE];
+                        mfaac = rho * c1o3 * (mfaac) + 0.5 * forcingTerm[TSW];
+                        mfabb = rho * c1o3 * (mfabb) + 0.5 * forcingTerm[W];
+                        mfbab = rho * c1o3 * (mfbab) + 0.5 * forcingTerm[S];
+                        mfbba = rho * c1o3 * (mfbba) + 0.5 * forcingTerm[B];
+                        mfaab = rho * c1o3 * (mfaab) + 0.5 * forcingTerm[SW];
+                        mfcab = rho * c1o3 * (mfcab) + 0.5 * forcingTerm[SE];
+                        mfaba = rho * c1o3 * (mfaba) + 0.5 * forcingTerm[BW];
+                        mfcba = rho * c1o3 * (mfcba) + 0.5 * forcingTerm[BE];
+                        mfbaa = rho * c1o3 * (mfbaa) + 0.5 * forcingTerm[BS];
+                        mfbca = rho * c1o3 * (mfbca) + 0.5 * forcingTerm[BN];
+                        mfaaa = rho * c1o3 * (mfaaa) + 0.5 * forcingTerm[BSW];
+                        mfcaa = rho * c1o3 * (mfcaa) + 0.5 * forcingTerm[BSE];
+                        mfaca = rho * c1o3 * (mfaca) + 0.5 * forcingTerm[BNW];
+                        mfcca = rho * c1o3 * (mfcca) + 0.5 * forcingTerm[BNE];
+                        mfbbb = rho * c1o3 * (mfbbb) + 0.5 * forcingTerm[REST];
+
+                        //////////////////////////////////////////////////////////////////////////
+                        // write distribution for F
+                        //////////////////////////////////////////////////////////////////////////
+
+                        (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3)     = mfabb;
+                        (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3)     = mfbab;
+                        (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3)     = mfbba;
+                        (*this->localDistributionsF)(D3Q27System::ET_NE, x1, x2, x3)    = mfaab;
+                        (*this->localDistributionsF)(D3Q27System::ET_NW, x1p, x2, x3)   = mfcab;
+                        (*this->localDistributionsF)(D3Q27System::ET_TE, x1, x2, x3)    = mfaba;
+                        (*this->localDistributionsF)(D3Q27System::ET_TW, x1p, x2, x3)   = mfcba;
+                        (*this->localDistributionsF)(D3Q27System::ET_TN, x1, x2, x3)    = mfbaa;
+                        (*this->localDistributionsF)(D3Q27System::ET_TS, x1, x2p, x3)   = mfbca;
+                        (*this->localDistributionsF)(D3Q27System::ET_TNE, x1, x2, x3)   = mfaaa;
+                        (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p, x2, x3)  = mfcaa;
+                        (*this->localDistributionsF)(D3Q27System::ET_TSE, x1, x2p, x3)  = mfaca;
+                        (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p, x2p, x3) = mfcca;
+
+                        (*this->nonLocalDistributionsF)(D3Q27System::ET_W, x1p, x2, x3)     = mfcbb;
+                        (*this->nonLocalDistributionsF)(D3Q27System::ET_S, x1, x2p, x3)     = mfbcb;
+                        (*this->nonLocalDistributionsF)(D3Q27System::ET_B, x1, x2, x3p)     = mfbbc;
+                        (*this->nonLocalDistributionsF)(D3Q27System::ET_SW, x1p, x2p, x3)   = mfccb;
+                        (*this->nonLocalDistributionsF)(D3Q27System::ET_SE, x1, x2p, x3)    = mfacb;
+                        (*this->nonLocalDistributionsF)(D3Q27System::ET_BW, x1p, x2, x3p)   = mfcbc;
+                        (*this->nonLocalDistributionsF)(D3Q27System::ET_BE, x1, x2, x3p)    = mfabc;
+                        (*this->nonLocalDistributionsF)(D3Q27System::ET_BS, x1, x2p, x3p)   = mfbcc;
+                        (*this->nonLocalDistributionsF)(D3Q27System::ET_BN, x1, x2, x3p)    = mfbac;
+                        (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p, x2p, x3p) = mfccc;
+                        (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1, x2p, x3p)  = mfacc;
+                        (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p, x2, x3p)  = mfcac;
+                        (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1, x2, x3p)   = mfaac;
+
+                        (*this->zeroDistributionsF)(x1, x2, x3) = mfbbb;
+
+                        /////////////////////  P H A S E - F I E L D   S O L V E R
+                        ////////////////////////////////////////////
+
+                        /////////////////////   PHASE-FIELD BGK SOLVER ///////////////////////////////
+
+                        h[E]   = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3);
+                        h[N]   = (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3);
+                        h[T]   = (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3);
+                        h[NE]  = (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3);
+                        h[NW]  = (*this->localDistributionsH)(D3Q27System::ET_NW, x1p, x2, x3);
+                        h[TE]  = (*this->localDistributionsH)(D3Q27System::ET_TE, x1, x2, x3);
+                        h[TW]  = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p, x2, x3);
+                        h[TN]  = (*this->localDistributionsH)(D3Q27System::ET_TN, x1, x2, x3);
+                        h[TS]  = (*this->localDistributionsH)(D3Q27System::ET_TS, x1, x2p, x3);
+                        h[TNE] = (*this->localDistributionsH)(D3Q27System::ET_TNE, x1, x2, x3);
+                        h[TNW] = (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2, x3);
+                        h[TSE] = (*this->localDistributionsH)(D3Q27System::ET_TSE, x1, x2p, x3);
+                        h[TSW] = (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3);
+
+                        h[W]   = (*this->nonLocalDistributionsH)(D3Q27System::ET_W, x1p, x2, x3);
+                        h[S]   = (*this->nonLocalDistributionsH)(D3Q27System::ET_S, x1, x2p, x3);
+                        h[B]   = (*this->nonLocalDistributionsH)(D3Q27System::ET_B, x1, x2, x3p);
+                        h[SW]  = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW, x1p, x2p, x3);
+                        h[SE]  = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE, x1, x2p, x3);
+                        h[BW]  = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW, x1p, x2, x3p);
+                        h[BE]  = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE, x1, x2, x3p);
+                        h[BS]  = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS, x1, x2p, x3p);
+                        h[BN]  = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN, x1, x2, x3p);
+                        h[BSW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p);
+                        h[BSE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1, x2p, x3p);
+                        h[BNW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2, x3p);
+                        h[BNE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1, x2, x3p);
+
+                        h[REST] = (*this->zeroDistributionsH)(x1, x2, x3);
+
+                        // LBMReal denom = sqrt(dX1_phi*dX1_phi + dX2_phi*dX2_phi + dX3_phi*dX3_phi) + 1e-15;
+                        // LBMReal di = sqrt(8*kappa/beta);
+                        // LBMReal tauH1 = 3.0*mob + 0.5;
+                        for (int dir = STARTF; dir < (ENDF + 1); dir++) {
+                            LBMReal velProd = DX1[dir] * ux + DX2[dir] * uy + DX3[dir] * uz;
+                            LBMReal velSq1  = velProd * velProd;
+                            LBMReal hEq; //, gEq;
+
+                            if (dir != REST) {
+                                // LBMReal dirGrad_phi = DX1[dir]*dX1_phi+DX2[dir]*dX2_phi+DX3[dir]*dX3_phi;
+                                LBMReal dirGrad_phi = (phi[dir] - phi[INVDIR[dir]]) / 2.0;
+                                LBMReal hSource     = (tauH - 0.5) * (1.0 - phi[REST]) * (phi[REST]) * (dirGrad_phi) /
+                                                  denom; // + phi[REST]*(dxux + dyuy + dzuz);
+
+                                // LBMReal hSource =((phi[REST]>phiH || phi[REST]<phiL) ? 0.1 : 1.0)
+                                // * 3.0*mob*(-4.0)/di*(phi[REST] - phiL)*(phi[REST] - phiH)*(dirGrad_phi)/denom; LBMReal
+                                // hSource = 3.0*mob*(-4.0)/di*(phi[REST] - phiL)*(phi[REST] - phiH)*(dirGrad_phi)/denom;
+                                hEq = phi[REST] * WEIGTH[dir] *
+                                          (1.0 + 3.0 * velProd + 4.5 * velSq1 - 1.5 * (ux2 + uy2 + uz2)) +
+                                      hSource * WEIGTH[dir];
+                                // gEq = rho*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(vx2+vy2+vz2))*c1o3 +
+                                // (p1-rho*c1o3)*WEIGTH[dir]; h[dir] = hEq; //h[dir] - (h[dir] - hEq)/(tauH + 0.5));  ///
+                                // This corresponds with the collision factor of 1.0 which equals (tauH + 0.5).
+                                h[dir] =
+                                    h[dir] - (h[dir] - hEq) / (tauH); // + WEIGTH[dir]*phi[REST]*(dxux + dyuy + dzuz);
+                                                                      // h[dir] = h[dir] - (h[dir] - hEq)/(tauH1);
+                                // g[dir] = g[dir] - collFactorM*(g[dir]-gEq) + 0.5*forcingTerm[dir];
+
+                            } else {
+                                hEq = phi[REST] * WEIGTH[REST] * (1.0 - 1.5 * (ux2 + uy2 + uz2));
+                                // gEq = rho*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(vx2+vy2+vz2))*c1o3 +
+                                // (p1-rho*c1o3)*WEIGTH[dir]; h[dir] = hEq;
+                                h[REST] = h[REST] -
+                                          (h[REST] - hEq) / (tauH); // + WEIGTH[REST]*phi[REST]*(dxux + dyuy + dzuz);
+                                // g[dir] = g[dir] - collFactorM*(g[dir]-gEq) + 0.5*forcingTerm[dir];
+                            }
+                        }
+
+                        (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3)     = h[D3Q27System::INV_E];
+                        (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3)     = h[D3Q27System::INV_N];
+                        (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3)     = h[D3Q27System::INV_T];
+                        (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3)    = h[D3Q27System::INV_NE];
+                        (*this->localDistributionsH)(D3Q27System::ET_NW, x1p, x2, x3)   = h[D3Q27System::INV_NW];
+                        (*this->localDistributionsH)(D3Q27System::ET_TE, x1, x2, x3)    = h[D3Q27System::INV_TE];
+                        (*this->localDistributionsH)(D3Q27System::ET_TW, x1p, x2, x3)   = h[D3Q27System::INV_TW];
+                        (*this->localDistributionsH)(D3Q27System::ET_TN, x1, x2, x3)    = h[D3Q27System::INV_TN];
+                        (*this->localDistributionsH)(D3Q27System::ET_TS, x1, x2p, x3)   = h[D3Q27System::INV_TS];
+                        (*this->localDistributionsH)(D3Q27System::ET_TNE, x1, x2, x3)   = h[D3Q27System::INV_TNE];
+                        (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2, x3)  = h[D3Q27System::INV_TNW];
+                        (*this->localDistributionsH)(D3Q27System::ET_TSE, x1, x2p, x3)  = h[D3Q27System::INV_TSE];
+                        (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3) = h[D3Q27System::INV_TSW];
+
+                        (*this->nonLocalDistributionsH)(D3Q27System::ET_W, x1p, x2, x3)     = h[D3Q27System::INV_W];
+                        (*this->nonLocalDistributionsH)(D3Q27System::ET_S, x1, x2p, x3)     = h[D3Q27System::INV_S];
+                        (*this->nonLocalDistributionsH)(D3Q27System::ET_B, x1, x2, x3p)     = h[D3Q27System::INV_B];
+                        (*this->nonLocalDistributionsH)(D3Q27System::ET_SW, x1p, x2p, x3)   = h[D3Q27System::INV_SW];
+                        (*this->nonLocalDistributionsH)(D3Q27System::ET_SE, x1, x2p, x3)    = h[D3Q27System::INV_SE];
+                        (*this->nonLocalDistributionsH)(D3Q27System::ET_BW, x1p, x2, x3p)   = h[D3Q27System::INV_BW];
+                        (*this->nonLocalDistributionsH)(D3Q27System::ET_BE, x1, x2, x3p)    = h[D3Q27System::INV_BE];
+                        (*this->nonLocalDistributionsH)(D3Q27System::ET_BS, x1, x2p, x3p)   = h[D3Q27System::INV_BS];
+                        (*this->nonLocalDistributionsH)(D3Q27System::ET_BN, x1, x2, x3p)    = h[D3Q27System::INV_BN];
+                        (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p) = h[D3Q27System::INV_BSW];
+                        (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1, x2p, x3p)  = h[D3Q27System::INV_BSE];
+                        (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2, x3p)  = h[D3Q27System::INV_BNW];
+                        (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1, x2, x3p)   = h[D3Q27System::INV_BNE];
+
+                        (*this->zeroDistributionsH)(x1, x2, x3) = h[D3Q27System::REST];
+
+                        /////////////////////   END OF OLD BGK SOLVER ///////////////////////////////
+                    }
+                }
+            }
+        }
+        dataSet->setPhaseField(divU);
+    }
+}
+//////////////////////////////////////////////////////////////////////////
+
+LBMReal MultiphaseCumulantLBMKernel::gradX1_phi()
+{
+    using namespace D3Q27System;
+    LBMReal sum = 0.0;
+    for (int k = FSTARTDIR; k <= FENDDIR; k++) {
+        sum += WEIGTH[k] * DX1[k] * phi[k];
+    }
+    return 3.0 * sum;
+}
+
+LBMReal MultiphaseCumulantLBMKernel::gradX2_phi()
+{
+    using namespace D3Q27System;
+    LBMReal sum = 0.0;
+    for (int k = FSTARTDIR; k <= FENDDIR; k++) {
+        sum += WEIGTH[k] * DX2[k] * phi[k];
+    }
+    return 3.0 * sum;
+}
+
+LBMReal MultiphaseCumulantLBMKernel::gradX3_phi()
+{
+    using namespace D3Q27System;
+    LBMReal sum = 0.0;
+    for (int k = FSTARTDIR; k <= FENDDIR; k++) {
+        sum += WEIGTH[k] * DX3[k] * phi[k];
+    }
+    return 3.0 * sum;
+}
+
+LBMReal MultiphaseCumulantLBMKernel::nabla2_phi()
+{
+    using namespace D3Q27System;
+    LBMReal sum = 0.0;
+    for (int k = FSTARTDIR; k <= FENDDIR; k++) {
+        sum += WEIGTH[k] * (phi[k] - phi[REST]);
+    }
+    return 6.0 * sum;
+}
+///// Commnets neeeded ////////
+
+void MultiphaseCumulantLBMKernel::computePhasefield()
+{
+    using namespace D3Q27System;
+    SPtr<DistributionArray3D> distributionsH = dataSet->getHdistributions();
+
+    // const int bcArrayMaxX1 = (int)distributionsH->getNX1();
+    // const int bcArrayMaxX2 = (int)distributionsH->getNX2();
+    // const int bcArrayMaxX3 = (int)distributionsH->getNX3();
+
+    int minX1 = ghostLayerWidth;
+    int minX2 = ghostLayerWidth;
+    int minX3 = ghostLayerWidth;
+    int maxX1 = (int)distributionsH->getNX1() - ghostLayerWidth;
+    int maxX2 = (int)distributionsH->getNX2() - ghostLayerWidth;
+    int maxX3 = (int)distributionsH->getNX3() - ghostLayerWidth;
+
+    //------------- Computing the phase-field ------------------
+    for (int x3 = minX3; x3 < maxX3; x3++) {
+        for (int x2 = minX2; x2 < maxX2; x2++) {
+            for (int x1 = minX1; x1 < maxX1; x1++) {
+                // if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3))
+                {
+                    int x1p = x1 + 1;
+                    int x2p = x2 + 1;
+                    int x3p = x3 + 1;
+
+                    h[E]   = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3);
+                    h[N]   = (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3);
+                    h[T]   = (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3);
+                    h[NE]  = (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3);
+                    h[NW]  = (*this->localDistributionsH)(D3Q27System::ET_NW, x1p, x2, x3);
+                    h[TE]  = (*this->localDistributionsH)(D3Q27System::ET_TE, x1, x2, x3);
+                    h[TW]  = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p, x2, x3);
+                    h[TN]  = (*this->localDistributionsH)(D3Q27System::ET_TN, x1, x2, x3);
+                    h[TS]  = (*this->localDistributionsH)(D3Q27System::ET_TS, x1, x2p, x3);
+                    h[TNE] = (*this->localDistributionsH)(D3Q27System::ET_TNE, x1, x2, x3);
+                    h[TNW] = (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2, x3);
+                    h[TSE] = (*this->localDistributionsH)(D3Q27System::ET_TSE, x1, x2p, x3);
+                    h[TSW] = (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3);
+
+                    h[W]   = (*this->nonLocalDistributionsH)(D3Q27System::ET_W, x1p, x2, x3);
+                    h[S]   = (*this->nonLocalDistributionsH)(D3Q27System::ET_S, x1, x2p, x3);
+                    h[B]   = (*this->nonLocalDistributionsH)(D3Q27System::ET_B, x1, x2, x3p);
+                    h[SW]  = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW, x1p, x2p, x3);
+                    h[SE]  = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE, x1, x2p, x3);
+                    h[BW]  = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW, x1p, x2, x3p);
+                    h[BE]  = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE, x1, x2, x3p);
+                    h[BS]  = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS, x1, x2p, x3p);
+                    h[BN]  = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN, x1, x2, x3p);
+                    h[BSW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p);
+                    h[BSE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1, x2p, x3p);
+                    h[BNW] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2, x3p);
+                    h[BNE] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1, x2, x3p);
+
+                    h[REST] = (*this->zeroDistributionsH)(x1, x2, x3);
+
+                    /*(*this->phaseField)(x1,x2,x3) = h[REST] + h[E] + h[W] + h[N] + h[S] + h[T] + h[B] + h[NE] + h[SW]
+                       + h[SE] + h[NW] + h[TE] + h[BW] +
+                        h[BE] + h[TW] + h[TN] + h[BS] + h[BN] + h[TS] + h[TNE] + h[TNW] + h[TSE] + h[TSW] + h[BNE] +
+                       h[BNW] + h[BSE] + h[BSW];*/
+                }
+            }
+        }
+    }
+    //----------------------------------------------------------
+
+    /*
+        /////// Filling ghost nodes for FD computations //////////
+        for(int x1 = minX1; x1 < maxX1; x1++)
+        {
+            for(int x2 = minX2; x2 < maxX2; x2++)
+            {
+                int x3 = 0;
+                (*phaseField)(x1, x2, x3) = (*phaseField)(x1, x2, maxX3-1);
+                x3 = maxX3;
+                (*phaseField)(x1, x2, x3) = (*phaseField)(x1, x2, minX3);
+            }
+        }
+        for(int x2 = minX2; x2 < maxX2; x2++)
+        {
+            for(int x3 = minX3; x3 < maxX3; x3++)
+            {
+                int x1 = 0;
+                (*phaseField)(x1, x2, x3) = (*phaseField)(maxX1-1, x2, x3);
+                x1 = maxX1;
+                (*phaseField)(x1, x2, x3) = (*phaseField)(minX1, x2, x3);
+            }
+        }
+        for(int x1 = minX1; x1 < maxX1; x1++)
+        {
+            for(int x3 = minX3; x3 < maxX3; x3++)
+            {
+                int x2 = 0;
+                (*phaseField)(x1, x2, x3) = (*phaseField)(x1, maxX2-1, x3);
+                x2 = maxX2;
+                (*phaseField)(x1, x2, x3) = (*phaseField)(x1, minX2, x3);
+            }
+        }
+        (*phaseField)(0, 0,     0    ) = (*phaseField)(maxX1-1, maxX2-1, maxX3-1);
+        (*phaseField)(0, 0,     maxX3) = (*phaseField)(maxX1-1, maxX2-1, minX3  );
+        (*phaseField)(0, maxX2, 0    ) = (*phaseField)(maxX1-1, minX2, maxX3-1  );
+        (*phaseField)(0, maxX2, maxX3) = (*phaseField)(maxX1-1, minX2, minX3    );
+
+        (*phaseField)(maxX1, 0,     0    ) = (*phaseField)(minX1, maxX2-1, maxX3-1);
+        (*phaseField)(maxX1, 0,     maxX3) = (*phaseField)(minX1, maxX2-1, minX3  );
+        (*phaseField)(maxX1, maxX2, 0    ) = (*phaseField)(minX1, minX2, maxX3-1  );
+        (*phaseField)(maxX1, maxX2, maxX3) = (*phaseField)(minX1, minX2, minX3    );
+
+        /////////////////////////////////////////////////////////
+    */
+}
+
+void MultiphaseCumulantLBMKernel::findNeighbors(CbArray3D<LBMReal, IndexerX3X2X1>::CbArray3DPtr ph, int x1, int x2,
+                                                int x3)
+{
+    using namespace D3Q27System;
+
+    SPtr<BCArray3D> bcArray = this->getBCProcessor()->getBCArray();
+
+    phi[REST] = (*ph)(x1, x2, x3);
+
+    // LBMReal a = -0.5*sqrt(2*beta/kappa)*cos(contactAngle*UbMath::PI/180);
+    // LBMReal a1 = 1 + a;
+
+    for (int k = FSTARTDIR; k <= FENDDIR; k++) {
+
+        if (!bcArray->isSolid(x1 + DX1[k], x2 + DX2[k], x3 + DX3[k])) {
+            phi[k] = (*ph)(x1 + DX1[k], x2 + DX2[k], x3 + DX3[k]);
+        } else {
+            /*
+            if (phi[REST] < 1e-2)
+            {
+                phi[k] = (*ph)(x1 + DX1[INVDIR[k]], x2 + DX2[INVDIR[k]], x3 + DX3[INVDIR[k]]);
+            }
+            else
+            {
+                LBMReal phi_f = (*ph)(x1 + DX1[k], x2, x3 + DX3[k]);
+                phi[k] = (a1 - sqrt(a1*a1 - 4*a*phi_f) )/a - phi_f;
+            }
+            */
+
+            phi[k] = (*ph)(x1, x2, x3);
+
+            // if (bcArray->isSolid(x1 + DX1[k], x2, x3))
+            //{
+            //	phi[k] = (*ph)(x1, x2, x3);
+            //	//if (!bcArray->isSolid(x1 , x2 + DX2[k], x3 + DX3[k]))
+            //	//{
+            //	//	//phi[k] = (*ph)(x1 , x2 + DX2[k], x3 + DX3[k]);
+            //	//	LBMReal phi_f = (*ph)(x1 , x2 + DX2[k], x3 + DX3[k]);
+            //	//	phi[k] = (a1 - sqrt(a1*a1 - 4*a*phi_f) )/a - phi_f;
+            //	//}
+            //	//else
+            //	//{
+            //	//	phi[k] = (*ph)(x1, x2, x3);
+            //	//}
+            //}
+            //
+            // if (bcArray->isSolid(x1 , x2 + DX2[k], x3))
+            //{
+            //	phi[k] = (*ph)(x1, x2, x3);
+            //	//if (!bcArray->isSolid(x1 + DX1[k], x2 , x3 + DX3[k]))
+            //	//{
+            //	//	//phi[k] = (*ph)(x1 + DX1[k], x2 , x3 + DX3[k]);
+            //	//	LBMReal phi_f = (*ph)(x1 + DX1[k], x2 , x3 + DX3[k]);
+            //	//	phi[k] = (a1 - sqrt(a1*a1 - 4*a*phi_f) )/a - phi_f;
+            //	//}
+            //	//else
+            //	//{
+            //	//	phi[k] = (*ph)(x1, x2, x3);
+            //	//}
+            //}
+
+            // if (bcArray->isSolid(x1 , x2, x3+ DX3[k]))
+            //{
+            //	if (!bcArray->isSolid(x1 + DX1[k], x2 + DX2[k], x3))
+            //	{
+            //		//phi[k] = (*ph)(x1 + DX1[k], x2 + DX2[k], x3);
+            //		LBMReal phi_f = (*ph)(x1 + DX1[k], x2 + DX2[k], x3);
+            //		phi[k] = (a1 - sqrt(a1*a1 - 4*a*phi_f) )/a - phi_f;
+            //	}
+            //	else
+            //	{
+            //		phi[k] = (*ph)(x1, x2, x3);
+            //	}
+            //}
+
+            /*if (bcArray->isSolid(x1 + DX1[k], x2, x3)) phi[k] = (*ph)(x1 , x2 + DX2[k], x3 + DX3[k]);
+            if (bcArray->isSolid(x1 , x2 + DX2[k], x3)) phi[k] = (*ph)(x1 + DX1[k], x2 , x3 + DX3[k]);
+            if (bcArray->isSolid(x1 , x2, x3+ DX3[k])) phi[k] = (*ph)(x1 + DX1[k], x2 + DX2[k], x3 );*/
+
+            /*if (phi[REST] < 0.00001)
+            {
+            phi[k] = 0.0;
+            }
+            else
+            {
+            phi[k] = 0.5;
+            }*/
+
+            // phi[k] = 0.5;
+            // phi[k] = (*ph)(x1, x2, x3);
+            // phi[k] = (*ph)(x1 + DX1[INVDIR[k]], x2 + DX2[INVDIR[k]], x3 + DX3[INVDIR[k]]);
+        }
+    }
+
+    /*
+    phi[E  ] = (*ph)(x1 + DX1[E  ], x2 + DX2[E  ], x3 + DX3[E  ]);
+    phi[N  ] = (*ph)(x1 + DX1[N  ], x2 + DX2[N  ], x3 + DX3[N  ]);
+    phi[T  ] = (*ph)(x1 + DX1[T  ], x2 + DX2[T  ], x3 + DX3[T  ]);
+    phi[W  ] = (*ph)(x1 + DX1[W  ], x2 + DX2[W  ], x3 + DX3[W  ]);
+    phi[S  ] = (*ph)(x1 + DX1[S  ], x2 + DX2[S  ], x3 + DX3[S  ]);
+    phi[B  ] = (*ph)(x1 + DX1[B  ], x2 + DX2[B  ], x3 + DX3[B  ]);
+    phi[NE ] = (*ph)(x1 + DX1[NE ], x2 + DX2[NE ], x3 + DX3[NE ]);
+    phi[NW ] = (*ph)(x1 + DX1[NW ], x2 + DX2[NW ], x3 + DX3[NW ]);
+    phi[TE ] = (*ph)(x1 + DX1[TE ], x2 + DX2[TE ], x3 + DX3[TE ]);
+    phi[TW ] = (*ph)(x1 + DX1[TW ], x2 + DX2[TW ], x3 + DX3[TW ]);
+    phi[TN ] = (*ph)(x1 + DX1[TN ], x2 + DX2[TN ], x3 + DX3[TN ]);
+    phi[TS ] = (*ph)(x1 + DX1[TS ], x2 + DX2[TS ], x3 + DX3[TS ]);
+    phi[SW ] = (*ph)(x1 + DX1[SW ], x2 + DX2[SW ], x3 + DX3[SW ]);
+    phi[SE ] = (*ph)(x1 + DX1[SE ], x2 + DX2[SE ], x3 + DX3[SE ]);
+    phi[BW ] = (*ph)(x1 + DX1[BW ], x2 + DX2[BW ], x3 + DX3[BW ]);
+    phi[BE ] = (*ph)(x1 + DX1[BE ], x2 + DX2[BE ], x3 + DX3[BE ]);
+    phi[BS ] = (*ph)(x1 + DX1[BS ], x2 + DX2[BS ], x3 + DX3[BS ]);
+    phi[BN ] = (*ph)(x1 + DX1[BN ], x2 + DX2[BN ], x3 + DX3[BN ]);
+    phi[BSW] = (*ph)(x1 + DX1[BSW], x2 + DX2[BSW], x3 + DX3[BSW]);
+    phi[BSE] = (*ph)(x1 + DX1[BSE], x2 + DX2[BSE], x3 + DX3[BSE]);
+    phi[BNW] = (*ph)(x1 + DX1[BNW], x2 + DX2[BNW], x3 + DX3[BNW]);
+    phi[BNE] = (*ph)(x1 + DX1[BNE], x2 + DX2[BNE], x3 + DX3[BNE]);
+    phi[TNE] = (*ph)(x1 + DX1[TNE], x2 + DX2[TNE], x3 + DX3[TNE]);
+    phi[TNW] = (*ph)(x1 + DX1[TNW], x2 + DX2[TNW], x3 + DX3[TNW]);
+    phi[TSE] = (*ph)(x1 + DX1[TSE], x2 + DX2[TSE], x3 + DX3[TSE]);
+    phi[TSW] = (*ph)(x1 + DX1[TSW], x2 + DX2[TSW], x3 + DX3[TSW]);
+    */
+}
+
+void MultiphaseCumulantLBMKernel::swapDistributions()
+{
+    LBMKernel::swapDistributions();
+    dataSet->getHdistributions()->swap();
+    // computePhasefield();
+}
\ No newline at end of file
diff --git a/src/cpu/VirtualFluidsCore/LBM/MultiphaseCumulantLBMKernel.h b/src/cpu/VirtualFluidsCore/LBM/MultiphaseCumulantLBMKernel.h
new file mode 100644
index 0000000000000000000000000000000000000000..dd99637063f48a38ddf8c0a15a301688b0ab3c59
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/LBM/MultiphaseCumulantLBMKernel.h
@@ -0,0 +1,99 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 MultiphaseCumulantLBMKernel.h
+//! \ingroup LBMKernel
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#ifndef MultiphaseCumulantLBMKernel_H
+#define MultiphaseCumulantLBMKernel_H
+
+#include "LBMKernel.h"
+#include "BCProcessor.h"
+#include "D3Q27System.h"
+#include "basics/utilities/UbTiming.h"
+#include "basics/container/CbArray4D.h"
+#include "basics/container/CbArray3D.h"
+
+//! \brief  Multiphase Cascaded Cumulant LBM kernel. 
+//! \details CFD solver that use Cascaded Cumulant Lattice Boltzmann method for D3Q27 model
+//! \author  H. Safari, K. Kutscher, M. Geier
+class MultiphaseCumulantLBMKernel : public LBMKernel
+{
+public:
+   MultiphaseCumulantLBMKernel();
+   virtual ~MultiphaseCumulantLBMKernel(void) = default;
+   void calculate(int step) override;
+   SPtr<LBMKernel> clone() override;
+   double getCalculationTime() override { return .0; }
+protected:
+   virtual void initDataSet();
+   void swapDistributions();
+   LBMReal f1[D3Q27System::ENDF+1];
+
+   CbArray4D<LBMReal,IndexerX4X3X2X1>::CbArray4DPtr localDistributionsF;
+   CbArray4D<LBMReal,IndexerX4X3X2X1>::CbArray4DPtr nonLocalDistributionsF;
+   CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr   zeroDistributionsF;
+
+   CbArray4D<LBMReal,IndexerX4X3X2X1>::CbArray4DPtr localDistributionsH;
+   CbArray4D<LBMReal,IndexerX4X3X2X1>::CbArray4DPtr nonLocalDistributionsH;
+   CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr   zeroDistributionsH;
+
+   //CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr   phaseField;
+
+   LBMReal h  [D3Q27System::ENDF+1];
+   LBMReal g  [D3Q27System::ENDF+1];
+   LBMReal phi[D3Q27System::ENDF+1];
+   LBMReal pr1[D3Q27System::ENDF+1];
+   LBMReal phi_cutoff[D3Q27System::ENDF+1];
+
+   LBMReal gradX1_phi();
+   LBMReal gradX2_phi();
+   LBMReal gradX3_phi();
+   //LBMReal gradX1_pr1();
+   //LBMReal gradX2_pr1();
+   //LBMReal gradX3_pr1();
+   //LBMReal dirgradC_phi(int n, int k);
+   void computePhasefield();
+   void findNeighbors(CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr ph /*Phase-Field*/, int x1, int x2, int x3);
+   //void findNeighbors(CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr ph /*Phase-Field*/, CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr pf /*Pressure-Field*/, int x1, int x2, int x3);
+   //void pressureFiltering(CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr pf /*Pressure-Field*/, CbArray3D<LBMReal,IndexerX3X2X1>::CbArray3DPtr pf_filtered /*Pressure-Field*/);
+
+   LBMReal nabla2_phi();
+
+
+   mu::value_type muX1,muX2,muX3;
+   mu::value_type muDeltaT;
+   mu::value_type muNu;
+   LBMReal forcingX1;
+   LBMReal forcingX2;
+   LBMReal forcingX3;
+};
+
+#endif
diff --git a/src/cpu/VirtualFluidsCore/LBM/ThixotropyInterpolationProcessor.cpp b/src/cpu/VirtualFluidsCore/LBM/ThixotropyInterpolationProcessor.cpp
index a673f473e13715e1a90db22e502446066e695ca0..26355a6f8a5d83b48365f1c287597a65e5876ef3 100644
--- a/src/cpu/VirtualFluidsCore/LBM/ThixotropyInterpolationProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/LBM/ThixotropyInterpolationProcessor.cpp
@@ -469,7 +469,7 @@ void ThixotropyInterpolationProcessor::calcInterpolatedNode(LBMReal* f, /*LBMRea
    f[BSW]  = f_TNE  + xs*x_TNE  + ys*y_TNE  + zs*z_TNE  + xs*ys*xy_TNE  + xs*zs*xz_TNE  + ys*zs*yz_TNE  + feq[BSW];
    f[BSE]  = f_TNW  + xs*x_TNW  + ys*y_TNW  + zs*z_TNW  + xs*ys*xy_TNW  + xs*zs*xz_TNW  + ys*zs*yz_TNW  + feq[BSE];
    f[BNW]  = f_TSE  + xs*x_TSE  + ys*y_TSE  + zs*z_TSE  + xs*ys*xy_TSE  + xs*zs*xz_TSE  + ys*zs*yz_TSE  + feq[BNW];
-   f[ZERO] = f_ZERO + xs*x_ZERO + ys*y_ZERO + zs*z_ZERO                                                 + feq[ZERO];
+   f[REST] = f_ZERO + xs*x_ZERO + ys*y_ZERO + zs*z_ZERO                                                 + feq[REST];
 }
 //////////////////////////////////////////////////////////////////////////
 //Position SWB -0.25, -0.25, -0.25
@@ -658,7 +658,7 @@ void ThixotropyInterpolationProcessor::calcInterpolatedNodeFC(LBMReal* f, LBMRea
    f[BNW]  = f_TSE  + feq[BNW];
    f[BSE]  = f_TNW  + feq[BSE];
    f[BSW]  = f_TNE  + feq[BSW];
-   f[ZERO] = f_ZERO + feq[ZERO];
+   f[REST] = f_ZERO + feq[REST];
 }
 //////////////////////////////////////////////////////////////////////////
 void ThixotropyInterpolationProcessor::calcInterpolatedVelocity(LBMReal x, LBMReal y, LBMReal z, LBMReal& vx1, LBMReal& vx2, LBMReal& vx3)
diff --git a/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitorMultiphase.cpp b/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitorMultiphase.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f3bd4f9540bb35e1ccac4b618cab492ff8c331d1
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitorMultiphase.cpp
@@ -0,0 +1,145 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 BoundaryConditionsBlockVisitorMultiphase.cpp
+//! \ingroup Visitors
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#include "BoundaryConditionsBlockVisitorMultiphase.h"
+#include "BCAdapter.h"
+#include "BCArray3D.h"
+#include "BCProcessor.h"
+#include "Block3D.h"
+#include "D3Q27EsoTwist3DSplittedVector.h"
+#include "DataSet3D.h"
+#include "Grid3D.h"
+#include "Grid3DSystem.h"
+#include "BCAdapter.h"
+#include "Block3D.h"
+#include "BCArray3D.h"
+#include "LBMKernel.h"
+
+BoundaryConditionsBlockVisitorMultiphase::BoundaryConditionsBlockVisitorMultiphase() :
+Block3DVisitor(0, Grid3DSystem::MAXLEVEL)
+{
+
+}
+//////////////////////////////////////////////////////////////////////////
+BoundaryConditionsBlockVisitorMultiphase::~BoundaryConditionsBlockVisitorMultiphase()
+{
+
+}
+//////////////////////////////////////////////////////////////////////////
+void BoundaryConditionsBlockVisitorMultiphase::visit(SPtr<Grid3D> grid, SPtr<Block3D> block)
+{
+   if (block->getRank() == grid->getRank())
+   {
+      SPtr<LBMKernel> kernel = dynamicPointerCast<LBMKernel>(block->getKernel());
+
+      if (!kernel)
+      {
+         throw UbException(UB_EXARGS, "LBMKernel in " + block->toString() + "is not exist!");
+      }
+
+      SPtr<BCProcessor> bcProcessor = kernel->getBCProcessor();
+
+      if (!bcProcessor)
+      {
+         throw UbException(UB_EXARGS,"Boundary Conditions Processor is not exist!" );
+      }
+
+      SPtr<BCArray3D> bcArray = bcProcessor->getBCArray();
+
+      bool compressible = kernel->getCompressible();
+      double collFactorL = kernel->getCollisionFactorL();
+	  double collFactorG = kernel->getCollisionFactorG();
+	  double collFactorPh = 1.0/kernel->getPhaseFieldRelaxation();
+	  double densityRatio = kernel->getDensityRatio();
+	  LBMReal phiL = kernel->getPhiL();
+	  LBMReal phiH = kernel->getPhiH();
+      //int level = block->getLevel();
+
+      int minX1 = 0;
+      int minX2 = 0;
+      int minX3 = 0;
+      int maxX1 = (int)bcArray->getNX1();
+      int maxX2 = (int)bcArray->getNX2();
+      int maxX3 = (int)bcArray->getNX3();
+      SPtr<BoundaryConditions> bcPtr;
+
+      bcProcessor->clearBC();
+
+      SPtr<DistributionArray3D> distributions = kernel->getDataSet()->getFdistributions();
+	  SPtr<DistributionArray3D> distributionsH = kernel->getDataSet()->getHdistributions();
+
+      for (int x3 = minX3; x3 < maxX3; x3++)
+      {
+         for (int x2 = minX2; x2 < maxX2; x2++)
+         {
+            for (int x1 = minX1; x1 < maxX1; x1++)
+            {
+               if (!bcArray->isSolid(x1, x2, x3) && !bcArray->isUndefined(x1, x2, x3))
+               {
+                  if ((bcPtr = bcArray->getBC(x1, x2, x3)) != NULL)
+                  {
+                     char alg = bcPtr->getBcAlgorithmType();
+                     SPtr<BCAlgorithm> bca = bcMap[alg];
+                     
+                     if (bca)
+                     {
+                        bca = bca->clone();
+                        bca->setNodeIndex(x1, x2, x3);
+                        bca->setBcPointer(bcPtr);
+                        //bca->addDistributions(distributions, distributionsH);
+						bca->addDistributions(distributions);
+						bca->addDistributionsH(distributionsH);
+                        bca->setCollFactorL(collFactorL);
+						bca->setCollFactorG(collFactorG);
+						bca->setCollFactorPh(collFactorPh);
+						bca->setDensityRatio(densityRatio);
+						bca->setPhiBound(phiL, phiH);
+                        bca->setCompressible(compressible);
+                        bca->setBcArray(bcArray);
+                        bcProcessor->addBC(bca);
+                     }
+                  }
+               }
+            }
+         }
+      }
+   }
+}
+//////////////////////////////////////////////////////////////////////////
+void BoundaryConditionsBlockVisitorMultiphase::addBC(SPtr<BCAdapter> bc)
+{
+   bcMap.insert(std::make_pair(bc->getBcAlgorithmType(), bc->getAlgorithm()));
+}
+
+
+
diff --git a/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitorMultiphase.h b/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitorMultiphase.h
new file mode 100644
index 0000000000000000000000000000000000000000..7ff93af25d527db5d468111c5cc7f160c98802d0
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitorMultiphase.h
@@ -0,0 +1,55 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 BoundaryConditionsBlockVisitorMultiphase.h
+//! \ingroup Visitors
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#ifndef BoundaryConditionBlockVisitorMultiphase_h__
+#define BoundaryConditionBlockVisitorMultiphase_h__
+
+#include "Block3DVisitor.h"
+#include <map>
+
+class BCAdapter;
+class BCAlgorithm;
+
+class BoundaryConditionsBlockVisitorMultiphase : public Block3DVisitor
+{
+public:
+   BoundaryConditionsBlockVisitorMultiphase();
+   virtual ~BoundaryConditionsBlockVisitorMultiphase();
+   
+   void visit(SPtr<Grid3D> grid, SPtr<Block3D> block);
+   void addBC(SPtr<BCAdapter> bc);
+protected:
+private:
+   std::map<char, SPtr<BCAlgorithm>> bcMap;
+};
+#endif // BoundaryConditionBlockVisitor_h__
diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp
index bc1e7d11defc33ade7a1aeb33377dff213efe3a0..aba67e6749a47e1c06bf28f01d284799eb39c328 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp
@@ -273,7 +273,7 @@ void InitDistributionsBlockVisitor::visit(const SPtr<Grid3D> grid, SPtr<Block3D>
                f[BNW]  = f_TSE  + feq[BNW];
                f[BSE]  = f_TNW  + feq[BSE];
                f[BSW]  = f_TNE  + feq[BSW];
-               f[ZERO] = f_ZERO + feq[ZERO];
+               f[REST] = f_ZERO + feq[REST];
 
                //calcFeqsFct(f,rho,vx1,vx2,vx3);
                distributions->setDistribution(f, ix1, ix2, ix3);
diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitorMultiphase.cpp b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitorMultiphase.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f609d7af154d96a5c4e5e76fb06583de712ec77b
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitorMultiphase.cpp
@@ -0,0 +1,499 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 InitDistributionsBlockVisitorMultiphase.cpp
+//! \ingroup Visitors
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#include "InitDistributionsBlockVisitorMultiphase.h"
+#include "BCArray3D.h"
+#include "BCProcessor.h"
+#include "Block3D.h"
+#include "DataSet3D.h"
+#include "EsoTwist3D.h"
+#include "Grid3D.h"
+#include "Grid3DSystem.h"
+#include "LBMKernel.h"
+
+InitDistributionsBlockVisitorMultiphase::InitDistributionsBlockVisitorMultiphase() 
+	: Block3DVisitor(0, Grid3DSystem::MAXLEVEL)
+{
+	this->setVx1(0.0);
+	this->setVx2(0.0);
+	this->setVx3(0.0);
+	this->setRho(0.0);
+}
+//////////////////////////////////////////////////////////////////////////
+//D3Q27ETInitDistributionsBlockVisitor::D3Q27ETInitDistributionsBlockVisitor(LBMReal rho, LBMReal vx1, LBMReal vx2, LBMReal vx3)
+//   : Block3DVisitor(0, Grid3DSystem::MAXLEVEL)
+//{
+//   this->setVx1(vx1);
+//   this->setVx2(vx2);
+//   this->setVx3(vx3);
+//   this->setRho(rho);
+//}
+//////////////////////////////////////////////////////////////////////////
+InitDistributionsBlockVisitorMultiphase::InitDistributionsBlockVisitorMultiphase( LBMReal densityRatio, LBMReal intThickness, LBMReal radius, LBMReal vx1, LBMReal vx2, LBMReal vx3)
+	: Block3DVisitor(0, Grid3DSystem::MAXLEVEL), densityRatio(densityRatio), intThickness(intThickness), radius(radius)
+{
+	this->setVx1(vx1);
+	this->setVx2(vx2);
+	this->setVx3(vx3);
+	//this->setRho(rho);
+	//this->setNu(nu);
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setVx1( const mu::Parser& parser)  
+{ 
+	this->checkFunction(parser); 
+	this->muVx1 = parser;  
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setVx2( const mu::Parser& parser)
+{ 
+	this->checkFunction(parser); 
+	this->muVx2 = parser;  
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setVx3( const mu::Parser& parser)  
+{ 
+	this->checkFunction(parser); 
+	this->muVx3 = parser;  
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setRho( const mu::Parser& parser)  
+{ 
+	this->checkFunction(parser); 
+	this->muRho = parser;  
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setPhi( const mu::Parser& parser)  
+{ 
+	this->checkFunction(parser); 
+	this->muPhi = parser;  
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setVx1( const std::string& muParserString)  
+{ 
+	this->muVx1.SetExpr(muParserString); 
+	this->checkFunction(muVx1); 
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setVx2( const std::string& muParserString) 
+{ 
+	this->muVx2.SetExpr(muParserString); 
+	this->checkFunction(muVx2); 
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setVx3( const std::string& muParserString)  
+{ 
+	this->muVx3.SetExpr(muParserString); 
+	this->checkFunction(muVx3); 
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setRho( const std::string& muParserString)  
+{ 
+	this->muRho.SetExpr(muParserString); 
+	this->checkFunction(muRho); 
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setPhi( const std::string& muParserString)  
+{ 
+	this->muPhi.SetExpr(muParserString); 
+	this->checkFunction(muPhi); 
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setVx1( LBMReal vx1 ) 
+{ 
+	this->muVx1.SetExpr( UbSystem::toString(vx1,D3Q27RealLim::digits10) );  
+	this->checkFunction(muVx1); 
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setVx2( LBMReal vx2 ) 
+{ 
+	this->muVx2.SetExpr( UbSystem::toString(vx2,D3Q27RealLim::digits10) );  
+	this->checkFunction(muVx2); 
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setVx3( LBMReal vx3 ) 
+{ 
+	this->muVx3.SetExpr( UbSystem::toString(vx3,D3Q27RealLim::digits10) );  
+	this->checkFunction(muVx3); 
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setRho( LBMReal rho ) 
+{ 
+	this->muRho.SetExpr( UbSystem::toString(rho,D3Q27RealLim::digits10) );  
+	this->checkFunction(muRho); 
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setPhi( LBMReal phi ) 
+{ 
+	this->muPhi.SetExpr( UbSystem::toString(phi,D3Q27RealLim::digits10) );  
+	this->checkFunction(muPhi); 
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::visit(const SPtr<Grid3D> grid, SPtr<Block3D> block) 
+{
+	using namespace D3Q27System;
+
+	if(!block) UB_THROW( UbException(UB_EXARGS,"block is not exist") );
+
+	//UbTupleDouble3 blockLengths = grid->getBlockLengths(block);
+	//UbTupleDouble3 nodeOffset   = grid->getNodeOffset(block);
+	//double dx = grid->getDeltaX(block);
+	//LBMReal o  = LBMSystem::calcCollisionFactor(nu, block->getLevel());
+
+
+	//define vars for functions
+	mu::value_type x1,x2,x3;
+	this->muVx1.DefineVar("x1",&x1); this->muVx1.DefineVar("x2",&x2); this->muVx1.DefineVar("x3",&x3);
+	this->muVx2.DefineVar("x1",&x1); this->muVx2.DefineVar("x2",&x2); this->muVx2.DefineVar("x3",&x3);
+	this->muVx3.DefineVar("x1",&x1); this->muVx3.DefineVar("x2",&x2); this->muVx3.DefineVar("x3",&x3);
+	this->muRho.DefineVar("x1",&x1); this->muRho.DefineVar("x2",&x2); this->muRho.DefineVar("x3",&x3);
+	this->muPhi.DefineVar("x1",&x1); this->muPhi.DefineVar("x2",&x2); this->muPhi.DefineVar("x3",&x3);
+
+	//Funktionszeiger
+	typedef void (*CalcFeqsFct)(LBMReal* const& /*feq[27]*/,const LBMReal& /*(d)rho*/,const LBMReal& /*vx1*/,const LBMReal& /*vx2*/,const LBMReal& /*vx3*/);
+	CalcFeqsFct   calcFeqsFct   = NULL;
+
+	LBMReal vx1, vx2, vx3, rho, p1, phi;
+
+	int gridRank = grid->getRank();
+	int blockRank = block->getRank();
+
+	if (blockRank == gridRank && block->isActive())
+	{
+        SPtr<LBMKernel> kernel = dynamicPointerCast<LBMKernel>(block->getKernel());
+		if (!kernel)
+			throw UbException(UB_EXARGS, "The LBM kernel isn't exist in block: "+block->toString());
+
+		if(kernel->getCompressible()) 
+			calcFeqsFct   = &D3Q27System::calcCompFeq; 
+		else                                                        
+			calcFeqsFct   = &D3Q27System::calcIncompFeq; 
+
+		//UbTupleDouble3 org = grid->getBlockWorldCoordinates(block);
+
+		SPtr<BCArray3D> bcArray = kernel->getBCProcessor()->getBCArray();
+        SPtr<EsoTwist3D> distributionsF = dynamicPointerCast<EsoTwist3D>(kernel->getDataSet()->getFdistributions()); 
+		SPtr<EsoTwist3D> distributionsH = dynamicPointerCast<EsoTwist3D>(kernel->getDataSet()->getHdistributions());
+		//PhaseFieldArray3DPtr phaseField = kernel->getDataSet()->getPhaseField();
+		LBMReal phiL = kernel->getPhiL();
+		LBMReal phiH = kernel->getPhiH();
+
+		LBMReal f[D3Q27System::ENDF+1];
+		//LBMReal h[D3Q27System::ENDF+1];
+
+		//size_t nx1 = distributionsF->getNX1();
+		//size_t nx2 = distributionsF->getNX2();
+		//size_t nx3 = distributionsF->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++)
+				{
+					Vector3D coords = grid->getNodeCoordinates(block, ix1, ix2, ix3);
+                    x1              = coords[0];
+                    x2              = coords[1];
+                    x3              = coords[2];
+
+					
+					p1  = 0.0;
+					//p1 = muRho.Eval();
+					vx1 = muVx1.Eval();
+					vx2 = muVx2.Eval();
+					vx3 = muVx3.Eval();
+					phi = muPhi.Eval();
+					
+					//rho = phi*1.0 + (1.0-phi)/densityRatio;
+					LBMReal rhoH = 1.0;
+					LBMReal rhoL = 1.0/densityRatio;
+					rho = rhoH + (rhoH - rhoL)*(phi - phiH)/(phiH - phiL);
+
+					//vx1 = 0.0; //0.02*phi;
+					//vx2 = 0.0;
+					//vx3 = 0.0;
+					//(*phaseField)(ix1,ix2,ix3) = phi;
+
+
+					/*
+					vx1 = muVx1.Eval();
+					vx2 = muVx2.Eval();
+					vx3 = muVx3.Eval();
+					rho = muRho.Eval();
+
+					//x-derivative
+					double deltaX=dx*0.5;
+					x1 = val<1>(coords)+deltaX;
+					double vx1Plusx1 = muVx1.Eval();
+					double vx2Plusx1 = muVx2.Eval();
+					double vx3Plusx1 = muVx3.Eval();
+
+					x1 = val<1>(coords)-deltaX;
+					double vx1Minusx1 = muVx1.Eval();
+					double vx2Minusx1 = muVx2.Eval();
+					double vx3Minusx1 = muVx3.Eval();
+
+					//y-derivative
+					x1 = val<1>(coords);
+					x2 = val<2>(coords)+deltaX;
+					double vx1Plusx2 = muVx1.Eval();
+					double vx2Plusx2 = muVx2.Eval();
+					double vx3Plusx2 = muVx3.Eval();
+
+					x2 = val<2>(coords)-deltaX;
+					double vx1Minusx2 = muVx1.Eval();
+					double vx2Minusx2 = muVx2.Eval();
+					double vx3Minusx2 = muVx3.Eval();
+
+					//z-derivative
+					x2 = val<2>(coords);
+					x3 = val<3>(coords)+deltaX;
+					double vx1Plusx3 = muVx1.Eval();
+					double vx2Plusx3 = muVx2.Eval();
+					double vx3Plusx3 = muVx3.Eval();
+
+					x3 = val<3>(coords)-deltaX;
+					double vx1Minusx3 = muVx1.Eval();
+					double vx2Minusx3 = muVx2.Eval();
+					double vx3Minusx3 = muVx3.Eval();
+
+					double ax=(vx1Plusx1-vx1Minusx1)/(2.0*deltaX)*dx;
+					double bx=(vx2Plusx1-vx2Minusx1)/(2.0*deltaX)*dx;
+					double cx=(vx3Plusx1-vx3Minusx1)/(2.0*deltaX)*dx;
+
+					double ay=(vx1Plusx2-vx1Minusx2)/(2.0*deltaX)*dx;
+					double by=(vx2Plusx2-vx2Minusx2)/(2.0*deltaX)*dx;
+					double cy=(vx3Plusx2-vx3Minusx2)/(2.0*deltaX)*dx;
+
+					double az=(vx1Plusx3-vx1Minusx3)/(2.0*deltaX)*dx;
+					double bz=(vx2Plusx3-vx2Minusx3)/(2.0*deltaX)*dx;
+					double cz=(vx3Plusx3-vx3Minusx3)/(2.0*deltaX)*dx;
+					double eps_new=1.0;
+					LBMReal op = 1.;
+					*/
+					
+					LBMReal feq[27];
+					LBMReal geq[27];
+
+					//calcFeqsFct(feq,rho,vx1,vx2,vx3);
+					LBMReal vx1Sq = vx1*vx1;
+					LBMReal vx2Sq = vx2*vx2;
+					LBMReal vx3Sq = vx3*vx3;
+					for (int dir = STARTF; dir < (ENDF+1); dir++)
+					{
+						LBMReal velProd = DX1[dir]*vx1 + DX2[dir]*vx2 + DX3[dir]*vx3;
+						LBMReal velSq1 = velProd*velProd;
+						LBMReal gamma = WEIGTH[dir]*(3*velProd + 4.5*velSq1 - 1.5*(vx1Sq+vx2Sq+vx3Sq));
+
+						feq[dir] = rho*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(vx1Sq+vx2Sq+vx3Sq));
+						//geq[dir] = p1*WEIGTH1[dir] + gamma;
+						geq[dir] = p1*WEIGTH[dir]/(rho*UbMath::c1o3) + gamma;
+					}
+
+
+
+					/*double f_E    = eps_new *((5.*ax*o + 5.*by*o + 5.*cz*o - 8.*ax*op + 4.*by*op + 4.*cz*op)/(54.*o*op));
+					double f_N    = f_E + eps_new *((2.*(ax - by))/(9.*o));
+					double f_T    = f_E + eps_new *((2.*(ax - cz))/(9.*o));
+					double f_NE   = eps_new *(-(5.*cz*o + 3.*(ay + bx)*op - 2.*cz*op + ax*(5.*o + op) + by*(5.*o + op))/(54.*o*op));
+					double f_SE   = f_NE + eps_new *((  ay + bx )/(9.*o));
+					double f_TE   = eps_new *(-(5.*cz*o + by*(5.*o - 2.*op) + 3.*(az + cx)*op + cz*op + ax*(5.*o + op))/(54.*o*op));
+					double f_BE   = f_TE + eps_new *((  az + cx )/(9.*o));
+					double f_TN   = eps_new *(-(5.*ax*o + 5.*by*o + 5.*cz*o - 2.*ax*op + by*op + 3.*bz*op + 3.*cy*op + cz*op)/(54.*o*op));
+					double f_BN   = f_TN + eps_new *((  bz + cy )/(9.*o));
+					double f_ZERO = eps_new *((5.*(ax + by + cz))/(9.*op));
+					double f_TNE  = eps_new *(-(ay + az + bx + bz + cx + cy)/(72.*o));
+					double f_TSW  = - eps_new *((ay + bx)/(36.*o)) - f_TNE;
+					double f_TSE  = - eps_new *((az + cx)/(36.*o)) - f_TNE;
+					double f_TNW  = - eps_new *((bz + cy)/(36.*o)) - f_TNE;
+
+
+					f[E]    = f_E    + feq[E];
+					f[W]    = f_E    + feq[W];
+					f[N]    = f_N    + feq[N];
+					f[S]    = f_N    + feq[S];
+					f[T]    = f_T    + feq[T];
+					f[B]    = f_T    + feq[B];
+					f[NE]   = f_NE   + feq[NE];
+					f[SW]   = f_NE   + feq[SW];
+					f[SE]   = f_SE   + feq[SE];
+					f[NW]   = f_SE   + feq[NW];
+					f[TE]   = f_TE   + feq[TE];
+					f[BW]   = f_TE   + feq[BW];
+					f[BE]   = f_BE   + feq[BE];
+					f[TW]   = f_BE   + feq[TW];
+					f[TN]   = f_TN   + feq[TN];
+					f[BS]   = f_TN   + feq[BS];
+					f[BN]   = f_BN   + feq[BN];
+					f[TS]   = f_BN   + feq[TS];
+					f[TNE]  = f_TNE  + feq[TNE];
+					f[TNW]  = f_TNW  + feq[TNW];
+					f[TSE]  = f_TSE  + feq[TSE];
+					f[TSW]  = f_TSW  + feq[TSW];
+					f[BNE]  = f_TSW  + feq[BNE];
+					f[BNW]  = f_TSE  + feq[BNW];
+					f[BSE]  = f_TNW  + feq[BSE];
+					f[BSW]  = f_TNE  + feq[BSW];
+					f[REST] = f_ZERO + feq[REST];*/
+					
+					/*f[E]    =  feq[E]    / 3.0 + (p1-rho/3.0)*UbMath::c2o27;
+					f[W]    =  feq[W]    / 3.0 + (p1-rho/3.0)*UbMath::c2o27;
+					f[N]    =  feq[N]    / 3.0 + (p1-rho/3.0)*UbMath::c2o27;
+					f[S]    =  feq[S]    / 3.0 + (p1-rho/3.0)*UbMath::c2o27;
+					f[T]    =  feq[T]    / 3.0 + (p1-rho/3.0)*UbMath::c2o27;
+					f[B]    =  feq[B]    / 3.0 + (p1-rho/3.0)*UbMath::c2o27;
+					f[NE]   =  feq[NE]   / 3.0 + (p1-rho/3.0)*UbMath::c1o54;
+					f[SW]   =  feq[SW]   / 3.0 + (p1-rho/3.0)*UbMath::c1o54;
+					f[SE]   =  feq[SE]   / 3.0 + (p1-rho/3.0)*UbMath::c1o54;
+					f[NW]   =  feq[NW]   / 3.0 + (p1-rho/3.0)*UbMath::c1o54;
+					f[TE]   =  feq[TE]   / 3.0 + (p1-rho/3.0)*UbMath::c1o54;
+					f[BW]   =  feq[BW]   / 3.0 + (p1-rho/3.0)*UbMath::c1o54;
+					f[BE]   =  feq[BE]   / 3.0 + (p1-rho/3.0)*UbMath::c1o54;
+					f[TW]   =  feq[TW]   / 3.0 + (p1-rho/3.0)*UbMath::c1o54;
+					f[TN]   =  feq[TN]   / 3.0 + (p1-rho/3.0)*UbMath::c1o54;
+					f[BS]   =  feq[BS]   / 3.0 + (p1-rho/3.0)*UbMath::c1o54;
+					f[BN]   =  feq[BN]   / 3.0 + (p1-rho/3.0)*UbMath::c1o54;
+					f[TS]   =  feq[TS]   / 3.0 + (p1-rho/3.0)*UbMath::c1o54;
+					f[TNE]  =  feq[TNE]  / 3.0 + (p1-rho/3.0)*UbMath::c1o216;
+					f[TNW]  =  feq[TNW]  / 3.0 + (p1-rho/3.0)*UbMath::c1o216;
+					f[TSE]  =  feq[TSE]  / 3.0 + (p1-rho/3.0)*UbMath::c1o216;
+					f[TSW]  =  feq[TSW]  / 3.0 + (p1-rho/3.0)*UbMath::c1o216;
+					f[BNE]  =  feq[BNE]  / 3.0 + (p1-rho/3.0)*UbMath::c1o216;
+					f[BNW]  =  feq[BNW]  / 3.0 + (p1-rho/3.0)*UbMath::c1o216;
+					f[BSE]  =  feq[BSE]  / 3.0 + (p1-rho/3.0)*UbMath::c1o216;
+					f[BSW]  =  feq[BSW]  / 3.0 + (p1-rho/3.0)*UbMath::c1o216;
+					f[REST] =  feq[REST] / 3.0 + (p1-rho/3.0)*UbMath::c8o27;*/
+
+
+					f[E]    =  geq[E]    ;
+					f[W]    =  geq[W]    ;
+					f[N]    =  geq[N]    ;
+					f[S]    =  geq[S]    ;
+					f[T]    =  geq[T]    ;
+					f[B]    =  geq[B]    ;
+					f[NE]   =  geq[NE]   ;
+					f[SW]   =  geq[SW]   ;
+					f[SE]   =  geq[SE]   ;
+					f[NW]   =  geq[NW]   ;
+					f[TE]   =  geq[TE]   ;
+					f[BW]   =  geq[BW]   ;
+					f[BE]   =  geq[BE]   ;
+					f[TW]   =  geq[TW]   ;
+					f[TN]   =  geq[TN]   ;
+					f[BS]   =  geq[BS]   ;
+					f[BN]   =  geq[BN]   ;
+					f[TS]   =  geq[TS]   ;
+					f[TNE]  =  geq[TNE]  ;
+					f[TNW]  =  geq[TNW]  ;
+					f[TSE]  =  geq[TSE]  ;
+					f[TSW]  =  geq[TSW]  ;
+					f[BNE]  =  geq[BNE]  ;
+					f[BNW]  =  geq[BNW]  ;
+					f[BSE]  =  geq[BSE]  ;
+					f[BSW]  =  geq[BSW]  ;
+					f[REST] =  geq[REST] ;
+
+
+					//calcFeqsFct(f,rho,vx1,vx2,vx3);
+					distributionsF->setDistribution(f, ix1, ix2, ix3);
+					distributionsF->setDistributionInv(f, ix1, ix2, ix3);
+
+					f[E]    =  phi * feq[E]    / rho;
+					f[W]    =  phi * feq[W]    / rho;
+					f[N]    =  phi * feq[N]    / rho;
+					f[S]    =  phi * feq[S]    / rho;
+					f[T]    =  phi * feq[T]    / rho;
+					f[B]    =  phi * feq[B]    / rho;
+					f[NE]   =  phi * feq[NE]   / rho;
+					f[SW]   =  phi * feq[SW]   / rho;
+					f[SE]   =  phi * feq[SE]   / rho;
+					f[NW]   =  phi * feq[NW]   / rho;
+					f[TE]   =  phi * feq[TE]   / rho;
+					f[BW]   =  phi * feq[BW]   / rho;
+					f[BE]   =  phi * feq[BE]   / rho;
+					f[TW]   =  phi * feq[TW]   / rho;
+					f[TN]   =  phi * feq[TN]   / rho;
+					f[BS]   =  phi * feq[BS]   / rho;
+					f[BN]   =  phi * feq[BN]   / rho;
+					f[TS]   =  phi * feq[TS]   / rho;
+					f[TNE]  =  phi * feq[TNE]  / rho;
+					f[TNW]  =  phi * feq[TNW]  / rho;
+					f[TSE]  =  phi * feq[TSE]  / rho;
+					f[TSW]  =  phi * feq[TSW]  / rho;
+					f[BNE]  =  phi * feq[BNE]  / rho;
+					f[BNW]  =  phi * feq[BNW]  / rho;
+					f[BSE]  =  phi * feq[BSE]  / rho;
+					f[BSW]  =  phi * feq[BSW]  / rho;
+					f[REST] =  phi * feq[REST] / rho;
+
+					distributionsH->setDistribution(f, ix1, ix2, ix3);
+					distributionsH->setDistributionInv(f, ix1, ix2, ix3);
+
+					//distributions->swap();
+					//distributions->setDistribution(f, ix1, ix2, ix3);
+					//distributions->setDistributionInv(f, ix1, ix2, ix3);
+					//distributions->swap();
+
+				}
+	}
+
+	//variablen der functions loeschen, da die verwiesenen Objecte nach dem verlassen des scopes ungueltig sind!
+	this->muVx1.ClearVar();
+	this->muVx2.ClearVar();
+	this->muVx3.ClearVar();
+	this->muRho.ClearVar();
+
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::checkFunction(mu::Parser fct)
+{
+	double x1=1.0,x2=1.0,x3=1.0;
+	fct.DefineVar("x1",&x1); 
+	fct.DefineVar("x2",&x2); 
+	fct.DefineVar("x3",&x3);
+
+	try
+	{
+		fct.Eval();
+		fct.ClearVar();
+	}
+	catch(mu::ParserError& e)
+	{
+		throw UbException(UB_EXARGS,"function: "+e.GetExpr() + (std::string)"error: "+e.GetMsg()
+			+(std::string)", only x1,x2,x3 are allowed as variables" );
+	}
+}
+//////////////////////////////////////////////////////////////////////////
+void InitDistributionsBlockVisitorMultiphase::setNu( LBMReal nu )
+{
+	this->nu = nu;
+}
+
diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitorMultiphase.h b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitorMultiphase.h
new file mode 100644
index 0000000000000000000000000000000000000000..05adc07ceda199ad04c602ea5b1d7cc75035ffb2
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitorMultiphase.h
@@ -0,0 +1,102 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 InitDistributionsBlockVisitorMultiphase.h
+//! \ingroup Visitors
+//! \author Hesameddin Safari
+//=======================================================================================
+
+#ifndef InitDistributionsBlockVisitorMultiphase_H
+#define InitDistributionsBlockVisitorMultiphase_H
+
+#include "Block3DVisitor.h"
+#include "D3Q27System.h"
+#include "Block3D.h"
+
+#include <muParser.h>
+
+
+
+class InitDistributionsBlockVisitorMultiphase : public Block3DVisitor
+{
+public:
+	typedef std::numeric_limits<LBMReal> D3Q27RealLim;
+
+public:
+	InitDistributionsBlockVisitorMultiphase();
+	//D3Q27ETInitDistributionsBlockVisitor(LBMReal rho, LBMReal vx1=0.0, LBMReal vx2=0.0, LBMReal vx3=0.0);
+	//! Constructor
+	//! \param nu - viscosity
+	//! \param rho - density
+	//! \param vx1 - velocity in x
+	//! \param vx2 - velocity in y
+	//! \param vx3 - velocity in z
+	InitDistributionsBlockVisitorMultiphase( LBMReal densityRatio, LBMReal intThickness, LBMReal radius, LBMReal vx1=0.0, LBMReal vx2=0.0, LBMReal vx3=0.0);
+	//////////////////////////////////////////////////////////////////////////
+	//automatic vars are: x1,x2, x3
+	//ussage example: setVx1("x1*0.01+x2*0.003")
+	//////////////////////////////////////////////////////////////////////////
+	void setVx1( const mu::Parser& parser);
+	void setVx2( const mu::Parser& parser);
+	void setVx3( const mu::Parser& parser);
+	void setRho( const mu::Parser& parser);
+	void setPhi( const mu::Parser& parser);
+
+	void setVx1( const std::string& muParserString);
+	void setVx2( const std::string& muParserString);
+	void setVx3( const std::string& muParserString);
+	void setRho( const std::string& muParserString);
+	void setPhi( const std::string& muParserString);
+
+	//////////////////////////////////////////////////////////////////////////
+	void setVx1( LBMReal vx1 );
+	void setVx2( LBMReal vx2 );
+	void setVx3( LBMReal vx3 );
+	void setRho( LBMReal rho );
+	void setPhi( LBMReal rho );
+	void setNu( LBMReal nu );
+
+	void visit(SPtr<Grid3D> grid, SPtr<Block3D> block);
+
+protected:
+	void checkFunction(mu::Parser fct);
+
+private:
+	mu::Parser muVx1;
+	mu::Parser muVx2;
+	mu::Parser muVx3;
+	mu::Parser muRho;
+	mu::Parser muPhi;
+
+	LBMReal nu;
+	LBMReal densityRatio;
+	LBMReal intThickness;
+	LBMReal radius;
+};
+
+#endif //D3Q27INITDISTRIBUTIONSPATCHVISITOR_H
diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsFromFileBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsFromFileBlockVisitor.cpp
index 73431d92876a10b207740ca17212a30dc84a7b98..b10151a9d2926546c2807db05912f79f6815bf86 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsFromFileBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsFromFileBlockVisitor.cpp
@@ -228,7 +228,7 @@ void InitDistributionsFromFileBlockVisitor::visit(const SPtr<Grid3D> grid, SPtr<
                     // f[BNW] = f_TSE + feq[BNW];
                     // f[BSE] = f_TNW + feq[BSE];
                     // f[BSW] = f_TNE + feq[BSW];
-                    // f[ZERO] = f_ZERO + feq[ZERO];
+                    // f[REST] = f_ZERO + feq[REST];
 
                     calcFeqsFct(f, rho, vx1, vx2, vx3);
 
diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitThixotropyBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/InitThixotropyBlockVisitor.cpp
index 72a81d60f73b8489805b304501eb5d48664672d0..f9be891771838940294a5e3b348a0b4d8c31f366 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/InitThixotropyBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/InitThixotropyBlockVisitor.cpp
@@ -452,7 +452,7 @@ void InitThixotropyBlockVisitor::checkFunction(mu::Parser fct)
 //   f[BNW] = f_TSE + feq[BNW];
 //   f[BSE] = f_TNW + feq[BSE];
 //   f[BSW] = f_TNE + feq[BSW];
-//   f[ZERO] = f_ZERO + feq[ZERO];
+//   f[REST] = f_ZERO + feq[REST];
 //
 //
 //
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.cpp
index c5a2bdebc92ea478942a2a26c3c1f8ebfd8c48bf..9d63bdbd2ded14cadd62c13c622ed330953bca74 100644
--- a/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.cpp
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.cpp
@@ -36,8 +36,8 @@
 #include "D3Q27ETFullVectorConnector.h"
 #include "D3Q27ETCFOffVectorConnector.h"
 #include "D3Q27ETFCOffVectorConnector.h"
-#include "ThixotropyFullDirectConnector.h"
-#include "ThixotropyFullVectorConnector.h"
+#include "TwoDistributionsFullDirectConnector.h"
+#include "TwoDistributionsFullVectorConnector.h"
 #include "Grid3DSystem.h"
 #include <basics/transmitter/TbTransmitterLocal.h>
 
@@ -100,8 +100,8 @@ void SetConnectorsBlockVisitor::setSameLevelConnectors(SPtr<Grid3D> grid, SPtr<B
 				if(blockRank == neighBlockRank && neighBlock->isActive())
 				{
 					SPtr<Block3DConnector> connector;
-               connector = SPtr<Block3DConnector>(new D3Q27ETFullDirectConnector( block, neighBlock, dir));
-					//connector = SPtr<Block3DConnector>(new ThixotropyFullDirectConnector( block, neighBlock, dir));
+                    //connector = SPtr<Block3DConnector>(new D3Q27ETFullDirectConnector( block, neighBlock, dir));
+					connector = SPtr<Block3DConnector>(new TwoDistributionsFullDirectConnector( block, neighBlock, dir));
 					block->setConnector(connector);
 				}
 				else if(blockRank != neighBlockRank && neighBlock->isActive())
@@ -134,8 +134,8 @@ void SetConnectorsBlockVisitor::setRemoteConnectors(SPtr<Block3D> sblock, SPtr<B
 
 
 	SPtr<Block3DConnector> connector;
-	connector = SPtr<Block3DConnector>(new D3Q27ETFullVectorConnector(sblock, sender, receiver, dir));
-	//connector = SPtr<Block3DConnector>(new ThixotropyFullVectorConnector(sblock, sender, receiver, dir));
+	//connector = SPtr<Block3DConnector>(new D3Q27ETFullVectorConnector(sblock, sender, receiver, dir));
+	connector = SPtr<Block3DConnector>(new TwoDistributionsFullVectorConnector(sblock, sender, receiver, dir));
 	sblock->setConnector(connector);
    UBLOG(logDEBUG5, "D3Q27SetConnectorsBlockVisitor::setRemoteConnectors() - end");
 }
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitorMultiphase.cpp b/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitorMultiphase.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d3cbcb14570f1496d2f6ee3c251e4d515efc29da
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitorMultiphase.cpp
@@ -0,0 +1,96 @@
+#include "SetKernelBlockVisitorMultiphase.h"
+#include "Grid3DSystem.h"
+#include "LBMSystem.h"
+#include "Block3D.h"
+#include "Grid3D.h"
+
+//SetKernelBlockVisitor::SetKernelBlockVisitor(LBMKernel3DPtr kernel, LBMReal nue) : 
+//                        Block3DVisitor(0, Grid3DSystem::MAXLEVEL), kernel(kernel), nue(nue)
+//{
+//
+//}
+//////////////////////////////////////////////////////////////////////////
+//SetKernelBlockVisitor::SetKernelBlockVisitor( LBMKernel3DPtr kernel, LBMReal nue, double availMem, double needMem ) : 
+//                                              Block3DVisitor(0, Grid3DSystem::MAXLEVEL), kernel(kernel), nue(nue)
+//{
+//   if (needMem > availMem)
+//   {
+//      throw UbException(UB_EXARGS,"SetKernelBlockVisitor: Not enough memory!!!");
+//   }
+//}
+//////////////////////////////////////////////////////////////////////////
+SetKernelBlockVisitorMultiphase::SetKernelBlockVisitorMultiphase(SPtr<LBMKernel> kernel, LBMReal nuL, LBMReal nuG, LBMReal densityRatio, LBMReal beta, LBMReal kappa,
+	LBMReal contactAngle, double availMem, double needMem, SetKernelBlockVisitorMultiphase::Action action /*= SetKernelBlockVisitor::New*/) :
+	Block3DVisitor(0, Grid3DSystem::MAXLEVEL), kernel(kernel), nuL(nuL), nuG(nuG), densityRatio(densityRatio), beta(beta), kappa(kappa), contactAngle(contactAngle), action(action), dataSetFlag(true)
+{
+	if (needMem > availMem)
+	{
+		throw UbException(UB_EXARGS, "SetKernelBlockVisitor: Not enough memory!!!");
+	}
+}
+//////////////////////////////////////////////////////////////////////////
+void SetKernelBlockVisitorMultiphase::visit(SPtr<Grid3D> grid, SPtr<Block3D> block)
+{
+	if(kernel && (block->getRank() == grid->getRank()))
+	{
+		LBMReal collFactorL = LBMSystem::calcCollisionFactor(nuL, block->getLevel());
+		LBMReal collFactorG = LBMSystem::calcCollisionFactor(nuG, block->getLevel());
+
+		kernel->setCollisionFactorMultiphase(collFactorL, collFactorG);
+		kernel->setDensityRatio(densityRatio);
+		kernel->setMultiphaseModelParameters(beta, kappa);
+		kernel->setContactAngle(contactAngle);
+
+		kernel->setIndex(block->getX1(), block->getX2(), block->getX3());
+		kernel->setDeltaT(LBMSystem::getDeltaT(block->getLevel()));
+		kernel->setBlock(block);
+        UbTupleInt3 blockNX = grid->getBlockNX();
+        kernel->setNX(std::array<int, 3>{ { val<1>(blockNX), val<2>(blockNX), val<3>(blockNX) } });
+        SPtr<LBMKernel> newKernel = kernel->clone();
+
+		switch (action)
+		{
+		case SetKernelBlockVisitorMultiphase::NewKernel:
+			block->setKernel(newKernel);
+			break;
+		case SetKernelBlockVisitorMultiphase::ChangeKernel:
+			{
+                SPtr<DataSet3D> dataSet = block->getKernel()->getDataSet();
+				if (!dataSet)
+				{
+					UB_THROW(UbException(UB_EXARGS, "It is not possible to change a DataSet in kernel! Old DataSet is not exist!"));
+				}
+
+				newKernel->setDataSet(dataSet);
+
+				SPtr<BCProcessor> bcProc = block->getKernel()->getBCProcessor();
+				if (!bcProc)
+				{
+					UB_THROW(UbException(UB_EXARGS, "It is not possible to change a BCProcessor in kernel! Old BCProcessor is not exist!"));
+				}
+				newKernel->setBCProcessor(bcProc);
+				block->setKernel(newKernel);
+			}
+			break;
+
+		case SetKernelBlockVisitorMultiphase::ChangeKernelWithData:
+			{
+				SPtr<BCProcessor> bcProc = block->getKernel()->getBCProcessor();
+				if (!bcProc)
+				{
+					UB_THROW(UbException(UB_EXARGS, "It is not possible to change a BCProcessor in kernel! Old BCProcessor is not exist!"));
+				}
+				newKernel->setBCProcessor(bcProc);
+				block->setKernel(newKernel);
+			}
+			break;
+		}
+
+	}
+}
+
+void SetKernelBlockVisitorMultiphase::setNoDataSetFlag(bool flag)
+{
+	dataSetFlag = flag;
+}
+
diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitorMultiphase.h b/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitorMultiphase.h
new file mode 100644
index 0000000000000000000000000000000000000000..0874f665e8027a7497a775eab8517cb6376a2c0e
--- /dev/null
+++ b/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitorMultiphase.h
@@ -0,0 +1,70 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
+//      \    \  |    |   ________________________________________________________________
+//       \    \ |    |  |  ______________________________________________________________|
+//        \    \|    |  |  |         __          __     __     __     ______      _______
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
+//
+//  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 SetKernelBlockVisitorMultiphase.cpp
+//! \ingroup Visitors
+//! \author Hesameddin Safari
+//=======================================================================================
+#ifndef SetKernelBlockVisitorMultiphase_h
+#define SetKernelBlockVisitorMultiphase_h
+
+#include "Block3DVisitor.h"
+#include "LBMKernel.h"
+
+
+class SetKernelBlockVisitorMultiphase : public Block3DVisitor
+{
+public:
+	enum Action { NewKernel, ChangeKernel, ChangeKernelWithData};
+public:
+	//SetKernelBlockVisitor(LBMKernel3DPtr kernel, LBMReal nue);
+
+	//SetKernelBlockVisitor(LBMKernel3DPtr kernel, LBMReal nue, double availMem, double needMem);
+
+	SetKernelBlockVisitorMultiphase(SPtr<LBMKernel> kernel, LBMReal nuL, LBMReal nuG, LBMReal densityRatio, LBMReal beta, LBMReal kappa, LBMReal contactAngle, double availMem, double needMem, 
+		SetKernelBlockVisitorMultiphase::Action action = SetKernelBlockVisitorMultiphase::NewKernel);
+
+	virtual ~SetKernelBlockVisitorMultiphase() {}
+
+	virtual void visit(SPtr<Grid3D> grid, SPtr<Block3D> block);
+
+	void setNoDataSetFlag(bool flag);
+
+private:
+	SPtr<LBMKernel> kernel;
+	LBMReal nuL;
+	LBMReal nuG;
+	LBMReal densityRatio;
+	LBMReal beta;
+	LBMReal kappa;
+	LBMReal contactAngle;
+	Action action;
+	bool dataSetFlag;
+};
+
+#endif
\ No newline at end of file