From b761e863ad382487ba5abbce5084555aed0388c7 Mon Sep 17 00:00:00 2001
From: kutscher <kutscher@irmb.tu-bs.de>
Date: Wed, 17 Feb 2021 16:20:27 +0100
Subject: [PATCH] add Hesam's multiphase extention

---
 apps/cpu/Applications.cmake                   |    1 +
 apps/cpu/JetBreakup/CMakeLists.txt            |    6 +
 apps/cpu/JetBreakup/JetBreakup.cfg            |   48 +
 apps/cpu/JetBreakup/JetBreakup.cpp            |  516 ++
 apps/cpu/Multiphase/CMakeLists.txt            |    3 +
 .../Multiphase (Droplet Test).cpp.backup      |  482 ++
 ...iphase (Jet breakup on Phoenix).cpp.backup |  508 ++
 apps/cpu/Multiphase/Multiphase.cfg            |   48 +
 apps/cpu/Multiphase/Multiphase.cpp            |  503 ++
 .../Multiphase/backup/3D flow-focusing.STL    |  Bin 0 -> 20684 bytes
 apps/cpu/Multiphase/backup/Cubic_jet.stl      |  Bin 0 -> 1484 bytes
 ...ntKernel-Before Cumulant modifications.cpp | 2006 +++++++
 apps/cpu/Multiphase/backup/Final.ast          | 5042 +++++++++++++++++
 apps/cpu/Multiphase/backup/Final.stl          |  Bin 0 -> 36084 bytes
 apps/cpu/Multiphase/backup/FlowFocusing.FCStd |  Bin 0 -> 25943 bytes
 .../cpu/Multiphase/backup/FlowFocusing.FCStd1 |  Bin 0 -> 25938 bytes
 apps/cpu/Multiphase/backup/FlowFocusing.ast   | 3194 +++++++++++
 apps/cpu/Multiphase/backup/FlowFocusing.stl   |  Bin 0 -> 22884 bytes
 apps/cpu/Multiphase/backup/FlowFocusingS.ast  | 3082 ++++++++++
 apps/cpu/Multiphase/backup/FlowFocusingS.stl  |  Bin 0 -> 22084 bytes
 apps/cpu/Multiphase/backup/FlowFocusingS2.ast |  422 ++
 apps/cpu/Multiphase/backup/FlowFocusingS2.stl |  Bin 0 -> 3084 bytes
 .../backup/FlowFocusingS2_Small.ast           |  366 ++
 .../backup/FlowFocusingS2_Small.stl           |  Bin 0 -> 2684 bytes
 apps/cpu/Multiphase/backup/FlowFocusingSL.ast | 3082 ++++++++++
 apps/cpu/Multiphase/backup/FlowFocusingSL.stl |  Bin 0 -> 22084 bytes
 apps/cpu/Multiphase/backup/FlowFocusingSS.ast | 3096 ++++++++++
 apps/cpu/Multiphase/backup/FlowFocusingSS.stl |  Bin 0 -> 22184 bytes
 .../Multiphase/backup/FlowFocusingSq.FCStd    |  Bin 0 -> 10332 bytes
 .../Multiphase/backup/FlowFocusingSq.FCStd1   |  Bin 0 -> 10330 bytes
 apps/cpu/Multiphase/backup/FlowFocusingSq.ast |  310 +
 apps/cpu/Multiphase/backup/FlowFocusingSq.stl |  Bin 0 -> 2284 bytes
 .../Multiphase/backup/FlowFocusingSq1.FCStd   |  Bin 0 -> 10349 bytes
 .../Multiphase/backup/FlowFocusingSq1.FCStd1  |  Bin 0 -> 10337 bytes
 .../cpu/Multiphase/backup/FlowFocusingSq1.ast |  310 +
 .../cpu/Multiphase/backup/FlowFocusingSq1.stl |  Bin 0 -> 2284 bytes
 .../Multiphase/backup/FlowFocusingSq2.FCStd   |  Bin 0 -> 11382 bytes
 .../Multiphase/backup/FlowFocusingSq2.FCStd1  |  Bin 0 -> 11746 bytes
 .../cpu/Multiphase/backup/FlowFocusingSq2.ast |  310 +
 .../cpu/Multiphase/backup/FlowFocusingSq2.stl |  Bin 0 -> 2284 bytes
 .../Multiphase/backup/JetBreakup.ASCII.stl    | 1318 +++++
 apps/cpu/Multiphase/backup/JetBreakup.FCStd   |  Bin 0 -> 11555 bytes
 apps/cpu/Multiphase/backup/JetBreakup.stl     |  Bin 0 -> 9484 bytes
 .../Multiphase/backup/JetBreakup2.ASCII.stl   | 1584 ++++++
 apps/cpu/Multiphase/backup/JetBreakup2.FCStd  |  Bin 0 -> 30227 bytes
 apps/cpu/Multiphase/backup/JetBreakup2.FCStd1 |  Bin 0 -> 29584 bytes
 apps/cpu/Multiphase/backup/JetBreakup2.stl    |  Bin 0 -> 11384 bytes
 apps/cpu/Multiphase/backup/JetBreakup3.FCStd  |  Bin 0 -> 28673 bytes
 apps/cpu/Multiphase/backup/JetBreakup3.stl    |  Bin 0 -> 11384 bytes
 .../backup/Multiphase (Droplet Test).cpp      |  482 ++
 .../Multiphase (Final before automation).cpp  |  586 ++
 .../backup/Multiphase (Flow Focusing).cpp     |  560 ++
 .../Multiphase (Jet breakup on Phoenix).cpp   |  508 ++
 .../backup/Multiphase (T-Junction).cpp        |  488 ++
 .../backup/Multiphase (Thermal).cpp           |  529 ++
 .../Multiphase/backup/Multiphase (Tube).cpp   |  404 ++
 .../Multiphase - Cfg_file (The last).txt      |   72 +
 apps/cpu/Multiphase/backup/Multiphase.cfg     |  115 +
 apps/cpu/Multiphase/backup/Multiphase.cpp     |  755 +++
 ...ltiphaseCumulantLBMKernel (New VBased).cpp | 1258 ++++
 ...BMKernel (Original Final from Phoenix).cpp |    0
 ...haseCumulantLBMKernel (Original Final).cpp | 2700 +++++++++
 apps/cpu/Multiphase/backup/Multiphase_Jet.cfg |   75 +
 apps/cpu/Multiphase/backup/T-Junction.FCStd   |  Bin 0 -> 14928 bytes
 apps/cpu/Multiphase/backup/T-Junction.FCStd1  |  Bin 0 -> 4308 bytes
 apps/cpu/Multiphase/backup/T-Junction.ast     | 2088 +++++++
 apps/cpu/Multiphase/backup/T-Junction.stl     |  Bin 0 -> 14984 bytes
 .../Multiphase/backup/Thermal - Cfg_file.txt  |   72 +
 apps/cpu/Multiphase/backup/Tube_jet.FCStd     |  Bin 0 -> 11826 bytes
 apps/cpu/Multiphase/backup/Tube_jet.stl       |  Bin 0 -> 15084 bytes
 apps/cpu/Multiphase/backup/Tube_jet1.FCStd    |  Bin 0 -> 11785 bytes
 apps/cpu/Multiphase/backup/Tube_jet1.stl      |  Bin 0 -> 28884 bytes
 apps/cpu/Multiphase/backup/Tube_jet_s.stl     |  Bin 0 -> 26284 bytes
 apps/cpu/Multiphase/backup/aaaa.stl           |  Bin 0 -> 2684 bytes
 apps/cpu/Multiphase/backup/dd.ast             |  198 +
 apps/cpu/Multiphase/backup/dd.stl             |  Bin 0 -> 1484 bytes
 src/basics/geometry3d/GbTriFaceMesh3D.cpp     |   82 +-
 src/basics/geometry3d/GbTriFaceMesh3D.h       |    8 +-
 src/cpu/VirtualFluids.h                       |    8 +
 .../BoundaryConditions/BCAlgorithm.cpp        |   15 +-
 .../BoundaryConditions/BCAlgorithm.h          |   53 +-
 .../BoundaryConditions/BoundaryConditions.h   |    7 +-
 .../NoSlipBCAlgorithmMultiphase.cpp           |  111 +
 .../NoSlipBCAlgorithmMultiphase.h             |   50 +
 ...ReflectingOutflowBCAlgorithmMultiphase.cpp |  372 ++
 ...onReflectingOutflowBCAlgorithmMultiphase.h |   49 +
 .../SlipBCAlgorithmMultiphase.cpp             |  141 +
 .../SlipBCAlgorithmMultiphase.h               |   51 +
 .../VelocityBCAdapterMultiphase.cpp           |  344 ++
 .../VelocityBCAdapterMultiphase.h             |  169 +
 .../VelocityBCAlgorithmMultiphase.cpp         |  148 +
 .../VelocityBCAlgorithmMultiphase.h           |   51 +
 .../Connectors/D3Q27ETFullVectorConnector.cpp |    2 +-
 .../ThixotropyFullVectorConnector.cpp         |    2 +-
 .../Data/D3Q27EsoTwist3DSoA.cpp               |   24 +-
 .../Data/D3Q27EsoTwist3DSoA.h                 |    2 +-
 .../Data/D3Q27EsoTwist3DSplittedVector.cpp    |   24 +-
 src/cpu/VirtualFluidsCore/Data/DataSet3D.h    |   96 +-
 .../Data/EsoTwistD3Q27System.cpp              |    4 +-
 .../Data/EsoTwistD3Q27System.h                |    2 +-
 src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp     |    2 +-
 src/cpu/VirtualFluidsCore/Grid/Grid3DSystem.h |    2 +-
 .../VirtualFluidsCore/LBM/BGKLBMKernel.cpp    |   14 +-
 ...mpressibleOffsetInterpolationProcessor.cpp |    4 +-
 ...bleOffsetMomentsInterpolationProcessor.cpp |    4 +-
 ...etSquarePressureInterpolationProcessor.cpp |    4 +-
 src/cpu/VirtualFluidsCore/LBM/D3Q27System.cpp |  194 +-
 src/cpu/VirtualFluidsCore/LBM/D3Q27System.h   | 2214 ++++----
 ...mpressibleOffsetInterpolationProcessor.cpp |    4 +-
 .../LBM/InitDensityLBMKernel.cpp              |   12 +-
 src/cpu/VirtualFluidsCore/LBM/LBMKernel.cpp   |   46 +
 src/cpu/VirtualFluidsCore/LBM/LBMKernel.h     |   31 +
 .../LBM/LBMKernelETD3Q27BGK.cpp               |   14 +-
 .../LBM/MultiphaseCumulantLBMKernel.cpp       | 1748 ++++++
 .../LBM/MultiphaseCumulantLBMKernel.h         |   99 +
 .../LBM/ThixotropyInterpolationProcessor.cpp  |    4 +-
 ...undaryConditionsBlockVisitorMultiphase.cpp |  145 +
 ...BoundaryConditionsBlockVisitorMultiphase.h |   55 +
 .../InitDistributionsBlockVisitor.cpp         |    2 +-
 ...nitDistributionsBlockVisitorMultiphase.cpp |  499 ++
 .../InitDistributionsBlockVisitorMultiphase.h |  102 +
 .../InitDistributionsFromFileBlockVisitor.cpp |    2 +-
 .../Visitors/InitThixotropyBlockVisitor.cpp   |    2 +-
 .../SetKernelBlockVisitorMultiphase.cpp       |   96 +
 .../SetKernelBlockVisitorMultiphase.h         |   70 +
 125 files changed, 42863 insertions(+), 1448 deletions(-)
 create mode 100644 apps/cpu/JetBreakup/CMakeLists.txt
 create mode 100644 apps/cpu/JetBreakup/JetBreakup.cfg
 create mode 100644 apps/cpu/JetBreakup/JetBreakup.cpp
 create mode 100644 apps/cpu/Multiphase/CMakeLists.txt
 create mode 100644 apps/cpu/Multiphase/Multiphase (Droplet Test).cpp.backup
 create mode 100644 apps/cpu/Multiphase/Multiphase (Jet breakup on Phoenix).cpp.backup
 create mode 100644 apps/cpu/Multiphase/Multiphase.cfg
 create mode 100644 apps/cpu/Multiphase/Multiphase.cpp
 create mode 100644 apps/cpu/Multiphase/backup/3D flow-focusing.STL
 create mode 100644 apps/cpu/Multiphase/backup/Cubic_jet.stl
 create mode 100644 apps/cpu/Multiphase/backup/CumulantKernel-Before Cumulant modifications.cpp
 create mode 100644 apps/cpu/Multiphase/backup/Final.ast
 create mode 100644 apps/cpu/Multiphase/backup/Final.stl
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusing.FCStd
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusing.FCStd1
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusing.ast
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusing.stl
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingS.ast
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingS.stl
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingS2.ast
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingS2.stl
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingS2_Small.ast
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingS2_Small.stl
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSL.ast
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSL.stl
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSS.ast
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSS.stl
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSq.FCStd
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSq.FCStd1
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSq.ast
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSq.stl
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSq1.FCStd
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSq1.FCStd1
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSq1.ast
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSq1.stl
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSq2.FCStd
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSq2.FCStd1
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSq2.ast
 create mode 100644 apps/cpu/Multiphase/backup/FlowFocusingSq2.stl
 create mode 100644 apps/cpu/Multiphase/backup/JetBreakup.ASCII.stl
 create mode 100644 apps/cpu/Multiphase/backup/JetBreakup.FCStd
 create mode 100644 apps/cpu/Multiphase/backup/JetBreakup.stl
 create mode 100644 apps/cpu/Multiphase/backup/JetBreakup2.ASCII.stl
 create mode 100644 apps/cpu/Multiphase/backup/JetBreakup2.FCStd
 create mode 100644 apps/cpu/Multiphase/backup/JetBreakup2.FCStd1
 create mode 100644 apps/cpu/Multiphase/backup/JetBreakup2.stl
 create mode 100644 apps/cpu/Multiphase/backup/JetBreakup3.FCStd
 create mode 100644 apps/cpu/Multiphase/backup/JetBreakup3.stl
 create mode 100644 apps/cpu/Multiphase/backup/Multiphase (Droplet Test).cpp
 create mode 100644 apps/cpu/Multiphase/backup/Multiphase (Final before automation).cpp
 create mode 100644 apps/cpu/Multiphase/backup/Multiphase (Flow Focusing).cpp
 create mode 100644 apps/cpu/Multiphase/backup/Multiphase (Jet breakup on Phoenix).cpp
 create mode 100644 apps/cpu/Multiphase/backup/Multiphase (T-Junction).cpp
 create mode 100644 apps/cpu/Multiphase/backup/Multiphase (Thermal).cpp
 create mode 100644 apps/cpu/Multiphase/backup/Multiphase (Tube).cpp
 create mode 100644 apps/cpu/Multiphase/backup/Multiphase - Cfg_file (The last).txt
 create mode 100644 apps/cpu/Multiphase/backup/Multiphase.cfg
 create mode 100644 apps/cpu/Multiphase/backup/Multiphase.cpp
 create mode 100644 apps/cpu/Multiphase/backup/MultiphaseCumulantLBMKernel (New VBased).cpp
 create mode 100644 apps/cpu/Multiphase/backup/MultiphaseCumulantLBMKernel (Original Final from Phoenix).cpp
 create mode 100644 apps/cpu/Multiphase/backup/MultiphaseCumulantLBMKernel (Original Final).cpp
 create mode 100644 apps/cpu/Multiphase/backup/Multiphase_Jet.cfg
 create mode 100644 apps/cpu/Multiphase/backup/T-Junction.FCStd
 create mode 100644 apps/cpu/Multiphase/backup/T-Junction.FCStd1
 create mode 100644 apps/cpu/Multiphase/backup/T-Junction.ast
 create mode 100644 apps/cpu/Multiphase/backup/T-Junction.stl
 create mode 100644 apps/cpu/Multiphase/backup/Thermal - Cfg_file.txt
 create mode 100644 apps/cpu/Multiphase/backup/Tube_jet.FCStd
 create mode 100644 apps/cpu/Multiphase/backup/Tube_jet.stl
 create mode 100644 apps/cpu/Multiphase/backup/Tube_jet1.FCStd
 create mode 100644 apps/cpu/Multiphase/backup/Tube_jet1.stl
 create mode 100644 apps/cpu/Multiphase/backup/Tube_jet_s.stl
 create mode 100644 apps/cpu/Multiphase/backup/aaaa.stl
 create mode 100644 apps/cpu/Multiphase/backup/dd.ast
 create mode 100644 apps/cpu/Multiphase/backup/dd.stl
 create mode 100644 src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCAlgorithmMultiphase.cpp
 create mode 100644 src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCAlgorithmMultiphase.h
 create mode 100644 src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithmMultiphase.cpp
 create mode 100644 src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCAlgorithmMultiphase.h
 create mode 100644 src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithmMultiphase.cpp
 create mode 100644 src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCAlgorithmMultiphase.h
 create mode 100644 src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapterMultiphase.cpp
 create mode 100644 src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAdapterMultiphase.h
 create mode 100644 src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAlgorithmMultiphase.cpp
 create mode 100644 src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCAlgorithmMultiphase.h
 create mode 100644 src/cpu/VirtualFluidsCore/LBM/MultiphaseCumulantLBMKernel.cpp
 create mode 100644 src/cpu/VirtualFluidsCore/LBM/MultiphaseCumulantLBMKernel.h
 create mode 100644 src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitorMultiphase.cpp
 create mode 100644 src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitorMultiphase.h
 create mode 100644 src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitorMultiphase.cpp
 create mode 100644 src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitorMultiphase.h
 create mode 100644 src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitorMultiphase.cpp
 create mode 100644 src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitorMultiphase.h

diff --git a/apps/cpu/Applications.cmake b/apps/cpu/Applications.cmake
index fb5b9cdf5..2fc89f703 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 000000000..19553ec4c
--- /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 000000000..22d20f7d5
--- /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 000000000..e2dc0f0e3
--- /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 000000000..3daebaf85
--- /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 000000000..46297d526
--- /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 000000000..9f2800898
--- /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 000000000..0d3e5633e
--- /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 000000000..4ea38e31c
--- /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
GIT binary patch
literal 20684
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

literal 0
HcmV?d00001

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
GIT binary patch
literal 1484
zcmb`HO-=(b4282sJpy~!aE7KxNNl>|B0WNm(oKO|klD>~I0EnaZ#<JhVu2-hGWPpy
zCuw_rd3$|2|J%pieWA54_^p)wUdsGX%C*9KDThaW%KFpd$gPR2nm>$y>aZe6(b(&H
zTIycdubVSobxo}riLA;KN~M~Kb_CTBNwszfP-;$O)rI?jLfk9i9oFQtkjkpO^XOew
zyAU}u5MBG38oQ=tRXzo&)CZy=;-_2J=N55LdJlZk@>E>U<`M5y@gCfAW=jY?QMn~N
zBLoyPJXhKwvZ_N(Kf$Z6M`CqrR8tAU_cRimA|^?Me=A2qGG3Q7C;D>_>1TvjDq%dc
z?`NIJr}7CU&OTGfu^=Jc5e>prBjI-v1eCExh3JjAnh<TB*(E?5am2G3fjYlVwe%nX
zle$|1@39Xhnuz5$7z8pg)kr8HM6NXu6Q-3O@~>c2oC&f)=k-F^WI-Sk>kaV(*`ijR

literal 0
HcmV?d00001

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 000000000..860a1f112
--- /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 000000000..d1909c7ae
--- /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
GIT binary patch
literal 36084
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
R;_0nd3la!vQHoX({|D4BevkkF

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusing.FCStd b/apps/cpu/Multiphase/backup/FlowFocusing.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..80e088eaddb292386f6349b11f0cbefa75824501
GIT binary patch
literal 25943
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
W^V7R+9wN!Vwzig$lBN4ksrWzgmeIuk

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusing.FCStd1 b/apps/cpu/Multiphase/backup/FlowFocusing.FCStd1
new file mode 100644
index 0000000000000000000000000000000000000000..9d5186df8e258a78afc0f27af756cf28d259af14
GIT binary patch
literal 25938
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
Xn<KCL+`*7{wYHX#lD+qzQt^KPJ*mg7

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusing.ast b/apps/cpu/Multiphase/backup/FlowFocusing.ast
new file mode 100644
index 000000000..062fb6d03
--- /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
GIT binary patch
literal 22884
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
ZpjY6EvciE(OAX5_=n4DIPl4fj{(mg>B7pz^

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingS.ast b/apps/cpu/Multiphase/backup/FlowFocusingS.ast
new file mode 100644
index 000000000..147c1ff7a
--- /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
GIT binary patch
literal 22084
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

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingS2.ast b/apps/cpu/Multiphase/backup/FlowFocusingS2.ast
new file mode 100644
index 000000000..1b3561121
--- /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
GIT binary patch
literal 3084
zcmb`HF;4725JVkw7bGWSNC*%T0UL24AA{R0q(mHvs_w3Fjc2q=z)1Vu%=D}3?y>*r
z<^A>c^l$&%+%LYi^RjFY_&w(H?Wz9ep8a-aN=#_*(AIJ-`TZ0n?<)kVae{F!>T#{q
z!_TvtZ|!HMh;W_|uGAATANpuEiuo+1Il-zrx+9{ZElJ(Mkr2)OtRVACx8@_7iXzl6
zsB<!{eq=?rMQcAj!e>J0#+c=FX-^2R%ITi)EXDK~303y_m6M1p^q@N!`{)R09tl^f
zs-U-Q`xILxpg-`PXu6DZY0f%v!s7!0kLa+fTJhxH%+mgWfSpdLE5hRmahy+ih&~Xg
zN+;BfiQ+l;VE=r#{MPQCvq};X!=LfK8d17VxKa}B-9<L5VZENE*!n<4TrsP1S61|7
zN|jl}Y9~%B9z8_3E@SPFgx*n}DE=GaSst4Qy5+m;w-#?WDr$ZeSLY<KW&}N)uFRU1
zzMQ5DB@*h%syYy!)jU8aq5GzrJdRnaiu-UZeJ7};ERT~23XYuB@b=Ywv~PWoz|sk|
z;=RJt<B`yGzfskSY`#y-(*9*4-o7H7&T6Q^rAp|bI6TZRGiQW*s46ODjmhobGj(GM
z@Mh;ekqJ??i)b|VN$1in>Pu}|?tz&5bD~vJge&z#OtG}0Tg2>E@#x|I11PKA=EbV0
zrAopB9aG`5M@Jx=MBYd1zIOF4>06<$D%?FtX}2TlZk(1w61rROgR$S{6{0-UQ&z=l
z`2BI|gdIlg1mf&Ghy+FgYOTVeD-{ot?h%tH-H35MPFI!i#0giz$+`E@bY0i!2~oAr
H2=?>~WcCHr

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingS2_Small.ast b/apps/cpu/Multiphase/backup/FlowFocusingS2_Small.ast
new file mode 100644
index 000000000..0bbb5c2ea
--- /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
GIT binary patch
literal 2684
zcmb`HF^&{L3`INU1RE2PkZq1wgha9tmzl664mLvCkVD~T*LVNw?qL&3+UdV8zi+#`
zW?sMl{PFqqzkPgo-h7RF{P$(sp1#)eHlM_nzlN@eOM1&paR)z$KeLwT?VkkQIFUNt
z2i~zhh2N!b>~}mfuZY{EHTB*VhzMm-T^eGk-Pw@J5+Q%Z^Zz0S`9%<YMA+o_BIL=F
zPDCqyCaA96D<b#OTyN0{X?z!Ywo`BN?f2TrQ)Fi+(PejdB0NiaaY|y~G1k-7JNWpr
z$I-Qt2ubhq6`?tZp9y*uAx)O(12Og;O)L6L&>JUwi^_NhF`mD5z0@;K>RckGuM_TM
z*+{D6MZZ?BwapP7u|zP36N;Y+{8d9*r`z%L*1fvQdO+aKiYJp(otrUFp|y1dF?Ir9
zC)_ErVyUa;#@S4YTa9~>+M$NeBwd93VVsaY&a`*rglD<V+9c{1sBZ>Yyg{9nH1S%a
z&Z-H#loh(;2Ld=qe1C=4a>Hl*Ovo2PnyiJ+wz8{G%6e3Tcu$>@ZxNk^Z}yJ%IqIzB
z53KK<6Vl9AM4I3EtghU5*2`|CD^u^CIgW(7x+a$ITFgLJPCGT{R_j=U9o5shy<fu#
zvb&zj)ZL05&V(9%cSY=7fsN_oglni1;qRm8h^&5_?-QzVo2Onxb~9=m?QlM5C(x&R
w)t!h??@pIDpVVT9tn`X!`-bi~$+<*$mh|G(zg3A%-<;5Wz21qS`Xhq)Uq5t5*8l(j

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSL.ast b/apps/cpu/Multiphase/backup/FlowFocusingSL.ast
new file mode 100644
index 000000000..0ee1706e4
--- /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
GIT binary patch
literal 22084
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

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSS.ast b/apps/cpu/Multiphase/backup/FlowFocusingSS.ast
new file mode 100644
index 000000000..83ef2d561
--- /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
GIT binary patch
literal 22184
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
CJl=Hx

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq.FCStd b/apps/cpu/Multiphase/backup/FlowFocusingSq.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..dbd1808d2a5dac239a7f1b2f22e3621b3059bd79
GIT binary patch
literal 10332
zcmbW71909;+yC#Vv5ls&Z5xek+qTVyjcwbu&Bkbw2950||Ma~7^E{_L^PCrZ&(3e=
zp8d>z=bHUqyR+BIN`Qc(0000809AaZB*f-{wGbEpuu1~}z`Xq{WMklDWn}G0<7#Dj
zlDh7&&4SRqd8Jb9Eyh{VqvQ7#vSq|14Rh8O-|T}8=<wIf8n0T293L;0mtGcoB+Jhm
zYsn#?%C!xjmD_kL9527SZDo@RfUG(^g_ujQ3-xEXDy(MQz$cA=j)v#Wz)gQ98UsH_
zMY6YZ4x{N9vFF#k#fF05cNp}nTi32oriP}FJa-fxq>i49*_Eq5C*yB~)<I9^$F5L5
z;!E6$9FdqdWgvxqRw?&4{Al{I19RY$Vt)PnX-DY?a_;M^GnOY|fyG9_S$!oAZoYGN
zzkN@E6e(cGEo!ZWBt=4+vBav_Pw4ryTCUI=(2z9^@Vrx=n@l?@<)RV25QeyLItXGj
z$j*u9zVlHlu%A{&;xN?+R_gZ+Tz=S{$oXTYWct{Cq8mw?w%)Zi4|k`c3@)dHHy>hh
zFU)x<H7(3N=Gb7J8|64&nFmCNDYP_L3~6Zfr9yQ#i)=dEaOyTy>ry`n?z{W4PMlhG
zMoVe2GUu&$!XHE01sn#u?6HNe)UiV&5Ci4N7`9$%3Q=%vz*Arg9!rO<sxRwUWl36%
zXPBkEng@jI5TJG`DqWy0kTldRsoT`(T)W{3#0{rW4AioqobG|xK=$?KxZNdwuzZ!V
zeM;CjQc-ZNA2{8=xY(;@i;9-;NEJfW$3)&$JsDM2VNZn3D;r(HlG%#hI4bU-r$@Q`
zOk+mmPlquy(00LV2(0`bd_Yq&VssmUtv^0xujP(v0H5+X71p6jSp~&upR`^jt67U<
zyi@yf;QfI0J)9kh*J=LyJNiWfTZ#JuY0)aEC)b;C-K}2AfX-{aq<l8Pv`Z9fC?x@?
zk7c{>t|REVQi_bkK7?;ih_A>BKgxEV=Xb~z%M$qFY2}*(NfQ`BcmdGdpRmMGC*tHT
z8RjCM4kj&=4wBT`yu#9F8FD`3tejF&;^{kLbGQl!RIlPr<Gd?GojJ!$*N_<T1PCkw
zFL$lhPKEOoLK&v=6@uiVt#GeaI+MztNoQ}oFII8YGConpJTEi(unnVwuCj#!MQu<f
zKhlhTln|6qezTv3UJ+w;N>i7~3lW{(O9K<iX>i350L0TrbupFUpEHlM^?szru*dF$
zvP!Hegiu<}dl6B_%RNm6@@!zfRiruxJ!J7dDWm27_2!6i2&qDvrhwvF9KH;EV+V*h
z1a?4PU>>UaSem3+S0d=>I&x<mxFzbucFR7yk@-cfVLa6_UwQ?*9X2VId_nFfnpW}C
z+$O_S9)us$H1148X`%0dG`Eo+s*0PbkOaUC`DqGh3!F3z4i__i%*@_#t8bfI-5r^-
z<1X=kC&08UZO0{KNH_`#={ouTdidJd!!1rFY?!ueJOGn9YZ1Bz+sy)41z4tnNZYr=
zcH4jW46=0UU1MMa7+Y7BIt=A+An7Yr@2iIG14b$c3-n?rhtO{uSOeiJcUD9YLGg%}
zkoSZ`h6PhgHYFRzn~{y@&jo_%FgfTTRGPWYq{$(hv7JBZRZCm=UcwD#sF$0A2YrRd
zt~Qa-W)rT29kI?ax2A`!(+9TDtvU?Cim|F|8BhZ|NV42={K_?mwMji_z6m+#j1^%;
zcbh?{OhfY6cU4PJ3&%cm2s?DCVRj_GtXi?Pq>iJp4z9ejbg$i8W^$RqiZk*m+fw!;
zKWuxeqGj1LDbmZq2hRbFRjg|Rx$JnMI|Ntsl(QrIY=HVIuZ7QZ8;(@BDkJ9N@|&xq
zV;?E^*F93hkuB>HVZYi|V)o_BLxJ1K$(m*?&HbjV*^U7)(tU&HO7t}f8`8y58Tc0v
z*<Z4)KFD392M7RgO#lGEzGYikJ$pw5Q$1TF8hv})x1dI^&>?g@soXDpE)35=NZf&H
zEK;rjUCAVL9wWf7-8LxrarZtNDArhVklwGcObNvwGkVkGimL`=T}I??2b`T+XUvG*
zCn@?c?wRh1tP6G32{HPU)kWhH)o8-K`eZounq@wkc=43jjSNWy>5Wd<;}lztnjc$E
z7@xX0u>mnM{Yu4V<_&T=8}j+X6c`EQLpj<kePvn<JFAqrrsVEvEGg<7p<y{A@XqS?
z1AO0zQ2^FH9(R1U^t>3!!0ySyC5&)<n{<|a7h3k(8aEr%yk`tgRT2q08x59^L4!v&
zrm|r3m`%QaV{pfiP8h%(OFoxA>AP%I*H*6>IJBlq%$!|~Em;b;3u#1LU7bSf!fe~u
z^fZsq`eFC$bM(*l)`Z85>}eNeQX4(9KJjCBZY|<N=h97Gubrut=mX}R8mBtu$n?t<
zKB$aKkoNGoG&D$+9Lt`z;O}TSOu?blm|VPglzKK?Y!Y1&)_6`f2HxKr$ACdS8@q+b
zPc+`Y4v(4d(G<odZKIBJPxS9xUChh9hocVznRuMh)%GCz3LzURL=5#JT;+8zI1Ded
zeeY~Pjs-_C!Ct^Xn%J+GUw&2qEW_$0Vo}mkb0-TZB#>sj*NQK+HR{WKYGC|kJdEv|
z6IZnu2t?up5R9JG<pSfNZv~DJ(1qc`?+%0tp3Fd#+?1ee8CQpVXE!6*U*M<c4xC!(
zhhE}RyBVw~`ILQ|^(lZjnS%~ELIDAa>J+XDr1`c#33xn!%1jX&11erF-vLKb9Zik~
z{fbKYSQd6xb`A?iJV40mlf9be>|_H|Ya-8%Iw+mi5?Y6<`j$9*wH?gjNrc2IFt>pw
zm!*J`!DvWDz`P8L8s}N<G+CkxCVX+xS$65!kmbf?2i--$A?0boOb1hIlE9t({yMay
z$F}xpt4cr`ycYr{8`LV0t_CkFobCBl;lfyUpYc53#0R+HCUb`J=##VvsJzkR4Ejqf
za%9fl_oE#jdYXzNR(hmjreR4Y5K*G1yx~fkR&wtMOuiIfZj;@Nbs24%a+5GGW){nv
zgJP^+GBp@J!La7}-a_U%TQ(d@MGlQBceF&yGM|R>g<82)o74#FocPlTr=`PM<nO~l
zY-WPi$H{0*uTWSqA&@&n>b(YdjALf4OvlMXSmsto_KFfPRPl5H{pwPR1tr{uH<tnt
z0swG-bt(NHHdWh{S*1hpzSG$nilidj&o_Gt_2sr&$tSqQ0SXW==HCtJ_vyN75w`Ly
z+)u7wr9cUq=g8_hYnwt>$;cd+mYJNq5q_H9Xlkl@MCv?{QOUZw+cR7KW-_60#o&|P
z1btJ{VV-%uCx;DI%0|=3%W?O?j}_usbkv6kis#m!QVz=7mhn;$vx0v=8`|ly-Lr*$
zvH4hh>vcUxxQFKo4Hbh`a=3;`%35=B7dMs^osqy0F1Y8u+V!Q+R($#EAlOG4Vp9aC
zS}`#<&U!8d#Dq%5!nHfFVx~KYC?w{r{HY%W<Y3a_gPW=+h^B>K5Kb<mv8tO8&n`R&
zeA9vxiZ@?$=VF`fNLu)EFZ1sUE1&unF>0(Y)&l4z7hx8C#9A=)zaLi;XOQJq#a7Cx
z%a_v-J_i+ehK>vntgU_nq55Is@#?-xGs@^$q_O_0s!6p!v3>jCePgUqynJ=(;t<5i
z|DInl98E3Ovl*$NpO}VYBuoK~T5A)J*sZ!h?rW6U9nYE{{5!SWZumqOiZA+~UZdN`
z8C{&{+bnRW*T%%PHrg}vdLM}tq{4T;@0rLSwO-}VZrE+9ZeeE2gQ58P9EL_u;CMZX
zCcnrTvfe&4xO?!sN#IOToX8O`2}<m7$v>@@<bq5l&xl}~9iw7El#NP&N}3pjEduC(
zr!BOcYcBaVfnc)Qb<og~82~W6t-TjG2jd6Sy1u?O=Yc45ayyQ>ZDbf9k_qJLJuln!
zMdZRuoW4lVgGQtv(Q&Hol74l=60PBw$>S-PU$JO;O|8=ELGxGA)y|c-wL@-=x^U0$
zWEsZLm?J{JMk&u5pJ!4v*P#1;kCte2XA+g!sbrSy&YMhxjULTH+gH-4>&mG#ych00
zX*Ap-neO1$%(#H6k@KwY77GGe4GAL(@}1a0CGRXnrHPm|-I7ZqdSEayMis&+-MZBK
z#Rvi$;UVb;i1!CTC6CSg$Qw>1tjefsS2q}EJSG5$9i#nBmuw9d9AsaY6UPfHV3<vI
z83^#?-rC^XP;_?KMa7{nLOp-E73$fg??jzUxj-$_bDG6|k?I$jF++p85qG{SC9?ii
zE9P8_WC{^YW;`>h<Zh)<g#i5vnUJ00;O=Ifn<K8mibaw<W%pV_Q3dg$MIfedJu8Nj
zK~verf-79*;fa?>DWs^701H8D?&fJAnQ&4%v_%0rT<B&iPdFAn>%*~iUIT+N2<DPS
z6gJ+5!sPXQP-cU;9HDRp3b%ZU*XzS?+i;2cd{E<?!QcIEaEAYHaGSS%_z#0usFg0k
z0pU^}WU^Qx6?;UPE)w9&U*yTZK4n<(5%DBBNa|vj<}!6;o^?K*UJX>wtQ$JAcJ9v|
zHmEC3ojvn=Ze<x~J>1#XQOw!3kZ<lCxiuJWma4V*r7<T-Rv)vJ`M4hPAXUbWXPAsL
z6S|$XWPYS?o-DA}5}O2*0h?MfZFBed93A5_`Sq^QEHP&)J)g^Yy?MMuPv4mw&4VvJ
zc?ytJLWU4g^=Y3MhO_}IIiu*H2JA2}!&G*@RVyvCCRF|k#_Uc4NIa4|TO>9;dV7Dj
zHy>D3c*o}W7QnRQK74#>L8IG@e|CXR0ceB~mvedc%OSMiiIDgExF>fJIq`JN{_dNU
zc3WKd4tKzW&b+!~EJv$_96D68MKQa)2Gp*RZ)Y~~nZ6wZByFQBc*$!y+S$|>`N*vd
zYnN98cCCrA-7DuBkA{gQ!?s7QNnKJhU?|i+;dmkw6M_cYSTRv@JIUGkXAZNGGB8{)
zm*Hj?XRuBz!&uNR^|hJ;5{YM@e50u5y6@i#Ji+W#*gaf1aP-4}$dMp-tm>WQxo)@;
zG&^V}GqQmgQX!}KesB(Wl8&vDxr3SG{$$C~<zpDa8ZY?GR<&e`B8aC!2#%<wEsMdS
z7gL|QCI4|F2dKGLarfLOOy2eePmoW`j@dF3>K$+Z_}OjHI}tbEo(hNRAwJP^i*7&y
z00S02g@N5hUSyCkKr~vR5M3z6f4_pvASPBYU>ve@2l{K!A$WpQw};iJdGE&6k44Wa
z=vHJVFa<D0zi;pMRzi+opVWbqW(rw6ft372#0~W#?6&MTmYc^9N11(_Q*|6=6C{|0
zs=v<uSP&U4RMHLEw%y^vv5yR{Q+o)cu_)4-HBEw<t0Xz^V+=*lq?)wH=UQ?d=jT_y
zSYt7Z@#M$U+z_H{vnF6bR>ZKobcP~<W%JM1Rfk+V=N>o=`qF4xq(^ejeP)405*aL(
zr`Kzme6QN)+aiiZQXZT!eXR#U;3Z?>0kAAPR0p{&^)?5cJBXny%_&R+xjbq8BCXe`
zVS$S34lX67g`DF>YMga>CVsxS6Ry6a5c4&FM4QkwGe+yZfK7wk*+=O^IYdQ5R|^Po
zv$2O6^N86+V=-nRh1JZ~q~rRnDl#DtML7$NGxznKl4`B0Gvq$3E>W`3_nzb5^wT<d
zpi>a6Y!@mDGdJ;{Z^(q&?!WDtHh)e937cL-apr4grB5qbxXITakB~P`W{6hJ)$w})
z{JMo3;>xn7LIVJmX1{IWj6WT|tEEx3Dgx)dST()VsQ&)I+l}h;tr@xo9{=6)$2K!x
zyrSU(zSke#`Ns-oAJuW9Pj2f)^oS-yvAmyMF(*GxXnS5A4zSX8P3Z8xT;9K2oY*|T
z-|$}fv_DY1-fdkC2|iq&Kb#-6$(-Tx8os)FI^0L_dX5&APacMtKaG@q@*eqSloX~6
zszvgszx%D7R&kPeI4_-`c;t$M_NYCl3aV9{y+ER#VAX(4_?|2@uB8yKX!%-xUTh0g
zYpgKNo>oygWvgJcv9Wete?9KB?{X1chv(%{;cBPI(~{wtyS=@1tqXG3&MNTZiM<s^
z@JBPaH6FP_=O>8RzAIryIftrkL|u1bcN5$mNhw3jo?8z&Mgb=$aqUn-#k=tOuafro
z5(gdeD)K_^lH!DOf!VxV^H-0Iy7Io}YtKs)!;vlSbqwS5H~B<it;%^eXzT&%hH9x+
zSJf%UYm1{WSQIAlp26hvU;64x6gfW%=S*9ATT=FBR|ceQi9_H9=+LVwsgl^^A#(<?
z%qLkdfVRfM^={fSLW7bbKZePgf`f_m1RA%4Atz!&kaVklh7>Xe5`aNIWR!$J1lPE%
zg|}iPLfTq`5g<T72SbFw;6=2Szg{P@wiqFz##wNi6(U61lCt+>-6}I;0^5Gb*%a|2
zaJ-qe_O>ibl=nlkMhI<!erb(_0njrdjO7#CSt;;ir$Ft2_fLE&%7}$51n-aiQl!Jc
zkGf_tlJ1~S5}FLO)cGaR*cY^cS-_JZv|51EEDZ0PpLvi2F@HZyzklX+2PHgHmnh9z
zY9UbUyq~(M2tR@#$OJNyS#}XntOnWcy6zV=eEaK4^7a{eePRrHsWYlq)mSlI^&`pz
zCURE{Gzy!ZNyQYgP!SZAk}Js?Q6UYQWf3vgK}R!r06j!_fpazfWr*k$3N_*QX=Fzj
zK}S=IPH2(v%@-?g=oD>&WPa_rIZ7siNjE8+p8T|>gLkE`m=mW;a~6$8uiud$B@lTI
zQ7c(aVRMO?gF1?dF14+cU7<fNheoVsT^$}UOXqedIkl_yALF~<v|umGGrKTq6|72~
zo@Rbd3JlI0sRNw**@pNvGS2&z25H6TCGx799@cuzu83~E13zPLj&Dk(8axr)EeY5R
z??WFX2Q;wAu3`_agIBoFMA2#TyP!KZPf3wgt!o-RuWvtfJWDyi)p&#^+9AIbH_|1s
zWR+LK4w?z3RR@i&I_trwJhjq{E^X||Wwhp>9M2p;m4;LpoXV7Ps+Xi%2xu`x((O!i
zBccYaDB0SL<%;xAC{)uSrM2xAQe>vi-DuA@m?6k<l_9sLO{@=|BjF1;NPV-i%&dLs
zird~;UBl~k6&@_dy7umFIMEeOj(^I3hk-f~59v06JhyZ+8bR*{6)?y5`f~BZ#^wWW
zJ*}O{{r&!{r|XZ4^{u{D+Ouerm$Kt8Nzt#I?fkEW(kGil6ARFBgD3l`H*tFzfsIad
zbOTV<Ma_>=?Q9|_t}48W-!k&d7Zf!-5WC!;uQrw<qg-^&J?J1WP%1j0HgeIQEfb_E
z7UK|P=x=r>KDM2liEJ;gtbDrH;YoD!b8SpiMwig8cvaUv(IVs4(D0aeY`Q+o2T@ef
zp(D1V$_4FWA^uDtkUFbBlhNUQbG3y|)w)mrv{h6T(r~dhd^r*?nmO>iOTGakdRJFo
zT88y%q;r(}-u{-@=gHvq+IMuW`~rf5*Hd~bml7V4Y$}&Jnqery`aHBv;T93fzb<{K
zed3c_cN5Sj=nH;dbb(Hg2p+eV6(U`A5DYKJkP9rj(F0gIN3EW7qH|(QbgxtUxH#MI
zc@T`>)`bJrY|Su|-sc^%PERn2U^@BNCSfELdg(v;Y-R`mKLCwTn)tURkDNgr<15Qv
zw1Fg-w=&g%0fAX7N;1ML3noTT;wFV(e|Qg<L0ZSFD2q`FQ;xc20iH?|M#ai!d|sRG
zSb!eHmPZC_W8ZWQ%fvks1GI9JLvPGuwRT-G-E5+k`9jZR-EK<2HX8QanT)1GpueIG
zT8~bu*&f<`SA-u#HFDt`?w4j8syh~hh;GsdVa>2Wqd^7}_9)B#*mnbVL92gn7~@46
zOEZ@RQC3xFHBQ``NEk$@58XKgxv2sC^+D*-(R>#jmkv8Vz;xfdEALz#85j5K<?zP0
zzC2qTVYkv3vVwTm6;9WF9k;_QSSAog_t{MkeuZ7a+SV)ohW$toe^2(?d*!V~XdB2b
zE*%$^XmSL((}ZX*Y-0O>qC3ABAI~@$z%Z+JPf=tqso``!4sS$I2tj_mO<6m&FUEZR
zyMS@%R!?QjeC=xf&}#CbRK%4lkZ{ggLJQ0kfe?Me^a^B~Y25<wQZ*FHGIUEvyq7FT
z)sRyC{CMT42%ZiI0@~n$?YdFHao2<;k<sk|z7gVrkCKzt4Q<~@amW+z=QIqyeB=Dm
z&u1aC@1Gk*?trad>+`}^=B7qJ^bpwqak<)U5$;!pZ`d+7+Dif}Qu&cFCh6GtSv{-1
z#-8Nvy6AbK)W${rMSs@7t4-?RoS$#jVN_HE%vRAJn_X0mJxs9j(${Kt^j^Mky!P_g
z+OnCXOGUdlk85r!5;i<1{(J!2wHz8@_dFN=4AsK<hH;=ZGkt-qS@U3wv9kt2PBtF?
zp71fS%3C*(On?wQ(BY{3Vi-(Fe-jLfM-jc`-n0r7wW?Y+if^b_&`uBm_~hM#GQ^<C
zJf@+JFRMrcR=_nS3xwUol1pYp^ys{ak$0GZ#M-r5%8*OUI(tRLL3Mb|_-h<oTEu4E
z(JfA|hxX|0*x~%>eewl|t3&Lx0yDNDnD+Z5)$g*x-7P@)=jpnj_ew=2oO5QW{s*BD
z8sN+viA(y+Tq3urvQ8l9=LL9zG))FeY|LoH^gAUYcTw=>*Yvb)h)s;)RA5=zA|ZCO
zTQeFTYd4G>)kQ=rmm{|z?%m(13|47K!${2Bz)Wh>W{x>Lz^V3i5-}QcCGBrO`(LKR
zv>#NHQ*xMBplA(kQhPb{SaVW}uO`$vn><S6W(l+qW>S8-A@5LRR;8=`)GQW&;e%;b
zoF$9HZ63|!2#$zCLP<8>8mF=I1a%}|^{lHVo{lffG#USqSyw_r%g;Z_g~f!<cmUH-
z-GP2Tlo84(x360J;V7P;WY!~K(AIDhbTnJ?svnctn(3WUOkfJ|c8#<Jmp}oQ$vn0t
zn;>Qx*I{)SBeaZq6eHO}7~{T6Sa&6}37Y?jn|y>#9-kg{M@_cqb;ocu%n-SsWdJRZ
zoc_Zz=%}<!U@Ie~Vzo3YcS%1Il`FO81{rkRdCoRI%k$wRzK;0NQ~6REQ`26+^5vVu
z95l#rx=08(=v))<mCfUnW=yNhld3e)k5p@fHgbqM9%XZq*L?MyOptNunXzPOQJJxr
z?VsOeW^ScmWOBng28`r6auK>SSDq?vcVkA2)-(Cn;B-}vE_DkFx`Qr5N=Z^3xgp9k
z)i?T)etjDEW_koz6mclbn&!);Q`npNaO7S+IfJi=dM{+J8nK5>Vg<Sw+*yS%qt+SQ
z)`)Zk^k4<*=Up$V1;~10T6_%fZ^^3*2KMw@&jZ@5w{Qt&HjOG*4WRB}%wZdESA78I
z#=@yWnDP`A(I-+tH><{n7!o9M{;Z1`{qZ=l3yyg>MJRPr7>ls$kch830w41*5@og;
z7sxD`YzP;;NlyF}A_E`x#Z3xJMQN_J1ddY=d!#z<)V+9(Rxs#d8ibCphdaw(j$F1e
zT^KAtxtL0LqS5`^i4KXYpA&dzjXt->AcUm)8G%@==2L8kY2uo^Kq?#M<&qRfX0xia
zN&BOl6Owr@_q}~?qbJa7?h8r=HB}909_Ce7Zjm5IjM%5d7ft;;@K=fW&l-YYtGQoM
z)M>nEN)aH1){bJ&213|B8CBArBWLC1W}z_{fmx-#e)#nipRFq_)&vRw7;ymr@NXA!
zqE2SN)F(C8ZMNAEeD<r(cME7mhtVI3vnkOUXDigL8jf#qWvuCR$@^msve&-9++l+Y
z2x3**imhs8T%ioajTmy>j!!YpJ)Jj)PKTez*Eaj;9S(vK*bS2~W!}&x>aX0=@@O`=
zch#>_J5E4i!ikvn_wM@lZ>z*3`R@r3C1p&ycPtd~A#9JNavelWO~>2S>!#yj^_>7i
z-v?J7RXAg_?MY6vrN@DFZiZ#2tSCYEd}%8(^cq?YmxlPD=Qk5WZ7{Q#{=SEi0A&a4
zyTym)JUvw`f@sJnQp4HBh+gbvjcyivP1(<Tk`>Q&_FP@|trJmKc$shKKT$)hSlO3|
z;C>Q68Mx2iF71aLK@<_mz3iqgIP_JsQKJ&iQ+JOlk-K+Oy%$;PCvT_Vg$}-1QVw3`
z{D`JCV7JNk74P9;Kzko25w)u?Wf%XswKrlo+!$G#T)Z$C|C2%wedK`H3WMX=lD6{K
zMdgK1>7ucC7`1-ag3#q*SgB~JCQ?2HtR72T+j8~<!c-E(jkQ|H5|mQ~80Z+Ao2NB8
z2JBaAG(!<ro{}5X!3%dP7Tpykkykk2_333z-xgM)Xtl*{8`I~{?C;acJn>CP5~h+3
zQi2!3(rhHFf%aYJB5KZjoX6@4TO_QTR1u`@6v;Qe&qHhWp~k->XmiP)%cclCrEcB?
zbUVZ72*&lcg6q^S(u*S_jjns$g#*DE^3TOrHpWqOK#1=%y_1`(uktIR(!^sLvP;#4
zn{)uF56Ocq-gn_Zyc)cfFOz#X#W>!gJ<dNfc$E3fZ2DwW$ZW!DP*nbEI-l^}MDn%V
znd_DKv+2U)kdR2g{Z^<67xN*KryA$MN;oio5BzTNkV87tA*R*P>ATF66=kiVxUgFq
zi>h<@{nku*yyw!&eT|+9CHE}OUP0S>8`PkUxp<!G(C|aHz4-xWmj3U%Y%p{?3NW)r
zDE#JIZWnfliK$SDJbhzTEGELmS%UYktW*_|b|^Gn4;Ug_@@|cd?80)K-D|p*-k}l}
zt8KuAAw{tT$f6~<V3KzsZ6@hoI>G2FtbRbHB*N`T>{Z2lXNk7&)vk&u;fmum2#_7F
zPlu$W<_VH)f+~%ctV&{dD2pi(D11$P_FfM(JBi~8l9U0`q%d%oua_USRwizrqJd}o
zrnb6)%AhoStyBuO0i3eX=p7`9$`JIKGJ%nL5gM%&n-%<v5QT|46|N%tT#@@1g)5tV
zn#RX&CQ3skqxOQwZH4`#W1ObZq{K1Tlhzwzs00edN8~RT3ym&8;;0lq%;e0hj#P>j
zbL4}>bxdbui?2(<gp@8{h7;ODzI4=rIW4Ae1o9|E<vb`2zc8A<6F7iIcVO9JOPRA}
zeMYworaaJ-!U(yIA_9_U!ti?GdAS|3wSD@21Q<k4lvk^YUMW1qY_zlz(h|JGA@ptQ
zp7GkemINomO!^_IHuS+9yVWAu&qOV;{jR<H<T04`Ols;dHS-ffOtTh<x&*Z=JIQnd
zR7C_E9AvE~H{D5ht)8yBtMy9aX>%o^PIoP~xMxC^U}3%ie$*|F=Ya;Z<RYA|p|l}3
z?xiQUEfsj6h!0^{s(VIz&t2&a{I59<sxZ4B@-4SPy!AgGV3-*jJ2@B$+F07y8yEuo
z8BHeN>V&^k5vN5^gnthI*?-n2B+ab<YdpWby`I|}1S}>d_7BX@R4Qv@X6^XLB>w>Y
zRol;UrO;or(f<#`{ha7maX+d5MjgW6)%^#`dvqTQ>Zh!?{<}N|WZgevC+q)Pap$kW
z`@24d|C7G|K>btr82?Y<`$_%p!}k{o2p9$MpCA9c#qp0;@Avcb*R57o;#czbLiT@g
z06@K;_1j~jU&`9QqrX?z{*9u%`QTsZAGNmM+21ej|IOaKdFNm3AJ_Q5v%g;n{+nHV
zTXO$m|F|Iho&EhF@^3Z+=WoZ7-{HS5gP#unv(@|g;s5HX-^stO)t^THv(@|6zmdN>
z>z~-4>-^7F?|1OV{$~H*;lE1$>8w9nz2Ez{mkYn7f#1=;YW{Uzxi|Dz&Gi2S|I7n_
zwtBzdH~2Tvf1`iT2mhwqe^bryPZR&D`r>b@{}KLGHOX6n={MDXqyKZPHQ(sJ#+vbe
xt~%xo{WaGA2>+^j;P0y6Xs~xb<B9b4<9s`kKfR4X0EpNd842<W;r*E^{vUU~^nCyT

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq.FCStd1 b/apps/cpu/Multiphase/backup/FlowFocusingSq.FCStd1
new file mode 100644
index 0000000000000000000000000000000000000000..55f6c7b1690b72985f26a13836e7518c2704c71c
GIT binary patch
literal 10330
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

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq.ast b/apps/cpu/Multiphase/backup/FlowFocusingSq.ast
new file mode 100644
index 000000000..97ed8f775
--- /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
GIT binary patch
literal 2284
zcmb`GF;2rk5Jg>6r{oB51_BZi4HZ}606s>_h$=@&7wB>fj>101Py1tsq+un;KRf@;
zpLLwq=eL*p*MIxCxf@*Lq15ql7{-UX)bCGyk6JAW-Q3R+(0xIr6GAFGEeWehBw2ms
zsBEU*=}LMc#$u>^uWOn)VW(vVPEN=j*D5r7*9lx+oN-C8YX%c$26}mpByuWp=yW+F
zpEP;r&yg9raH4A}a#%P$A?bcs+o{}t5xVH4ZmPXcE_U<UHRpbEOI;?m>rO~72`glw
zZ{tktohQ=e$^V{;NhIhgVczA8B*=hX61eg*!>6z$tVkunw6&<RNH$$9$#;ES>9Vgb
zoaj17b+75z{a#n~qfOvH745$MPNYknor?IKZybi~iwk1a`n!(~qDd>bB~o_+jvNUp
zIGNoHHQrk12&YPVav$oR74qoIp1M!vze*xqX!koo0@UZ%Fl<}jeRDD8uHDt{<E<r;
zE_HUA+^yd*p7zBB;eSOP1W-&O!Bp!0?!w`gpyDKEaE|MQlO#>|*85QRtdQsPQTL2F
vF@K`jsb;T))AuTWXZ5i?h3f<^h)ugs#B>JeOh?a8&b0m1Nz8u(Y4(2rtR9(<

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq1.FCStd b/apps/cpu/Multiphase/backup/FlowFocusingSq1.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..57b06dc9f17ca420e2bfdda80b16ee9ad21056e3
GIT binary patch
literal 10349
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

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq1.FCStd1 b/apps/cpu/Multiphase/backup/FlowFocusingSq1.FCStd1
new file mode 100644
index 0000000000000000000000000000000000000000..fa315bacf26389f34692d3eb1c2947d3cb8d06ba
GIT binary patch
literal 10337
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
A*Z=?k

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq1.ast b/apps/cpu/Multiphase/backup/FlowFocusingSq1.ast
new file mode 100644
index 000000000..7acee4108
--- /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
GIT binary patch
literal 2284
zcmb`GJ5Iw;5Jg>6XBi-|0|F8fO)9p+0=xuDYBmCNEF(+d9VSQb#?LqnPjYfIbI*KY
z`|$YubaVK(kE`p+Gk=u&zMrP~t}gY<LywWGBcYq`H3GUHsB}U|Wu=iYn?#aTSB}iv
zsdl=OJ`r;<WRClqW=U9S?17UF`Np*iP3$s(%ZnXHf~Y;1FngfKJ(9?&=tHIL9{Eqx
zZ+(yKp$jLvrlJoAryJ7U-)bwB`!7NlmDEkO=gC7fuh-_}A||y>OhHJGgc<6hZ(}E7
z>qNTT{O_rlM1q<U_S^1}1U;Zf0#{!4@Lw1SGg3(~Z5^^4I@?_>$!~pK>9Vdaoaox4
zs@HTxeLLUV1Zv{PeNp;5VI~Q*@gjcbo2MyV_S-eLadZ$(n!zoRx)X5pksu?XW~$4C
zE-I<1UR(1`T{F6fse2FKDv5NVjd#L6pI=Qi2hS;c<-1}WZyowTq)VNZPVQEZlZ4uL
z1$yx$&gYXz;B>-HP@iaKoWvgNahY(Eq^aI&x2-vuQ9IRnk0p_=)HM~ed-A!;`>f_p
d*0x)O_usdx?*QfObVn~Y=l426W=Rm^`T?k~iEjV^

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq2.FCStd b/apps/cpu/Multiphase/backup/FlowFocusingSq2.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..64b20eb26d1d8445571b632f562e563b44467582
GIT binary patch
literal 11382
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
PcQ!K<5fUZ(w^jTXB^C-~

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq2.FCStd1 b/apps/cpu/Multiphase/backup/FlowFocusingSq2.FCStd1
new file mode 100644
index 0000000000000000000000000000000000000000..c64353de25ddbfcff53ad1ea2865621ef459f537
GIT binary patch
literal 11746
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

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/FlowFocusingSq2.ast b/apps/cpu/Multiphase/backup/FlowFocusingSq2.ast
new file mode 100644
index 000000000..1aa258836
--- /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
GIT binary patch
literal 2284
zcmb`GJ5Iw;5Jg>6XBi;TP!m8%G^yAM3-A&s*$vRKj4XwB7$3bG+i@D6<m6`Np83S~
z;raFD=J0PHSJ#7Q{4DkJFbv~;UFx^T9wS#rLO0)Q1av=8>4cEVN=w3Q5=mBFIWiwp
z?Q|tQ5o0lAj{BNsPFQK#11B5ujcXU0*kuBj7dtKqqV{0I?15hHkwi{KA1ZD4$bXuC
z>w9DmT{zJ-6@553-H`77R$Hmu=LlU?Qa9C}ClArQ-kXz)nAA2g1R=d7%upA78#@tO
zC(`BS=ci&432I8%Z@Whl^nhLxxbm`x|H6_mBb5Zx)*;KGv)$E_{MOf%F6-*TiLO1W
zdQC^vxAX3)YvRX!QTjV!CJD6hBL3zZhap||+qG?tql0MD3~q_koq(f{1Q`i6Q(Y!>
zQAthp+L~|bn$bl}-Fx^}Nu&#Hyc72M`fjQ@cuv_X-xcF{>(B=xUFxhfxm!I>5^CQS
z=-HDvo=zfx(+N94eWICh5__=6Wx`34rh2R0w&r9;?Np~d=0v(u*Hp~z$>%EXvzj|u
c+inrwf8Vse1C+DV9X;Qi-|GaKIYEr;7h#5h*8l(j

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/JetBreakup.ASCII.stl b/apps/cpu/Multiphase/backup/JetBreakup.ASCII.stl
new file mode 100644
index 000000000..eff2679cd
--- /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
GIT binary patch
literal 11555
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

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/JetBreakup.stl b/apps/cpu/Multiphase/backup/JetBreakup.stl
new file mode 100644
index 0000000000000000000000000000000000000000..a82398ec6fc375e407ebe8ac42b811318e2fa788
GIT binary patch
literal 9484
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
TPaL8CAGex6afGHs#;^PXD|>7U

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/JetBreakup2.ASCII.stl b/apps/cpu/Multiphase/backup/JetBreakup2.ASCII.stl
new file mode 100644
index 000000000..d42dbd278
--- /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
GIT binary patch
literal 30227
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
VPs<<x30oT&2=EEw|EsI<{{U_r^9}$2

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/JetBreakup2.FCStd1 b/apps/cpu/Multiphase/backup/JetBreakup2.FCStd1
new file mode 100644
index 0000000000000000000000000000000000000000..6d0a48be9fed1a6a9398d9e8a620f5480d5fcd8d
GIT binary patch
literal 29584
zcmZ6yLzpPR*0kHUZF9G6+qP}nwr$(oZQHhO+x_qJ-N`*?m^H{jJS*RbjH;5C0tP_=
z004jhNDD@l$&B`B(18X3m<t2|fcf`S*v`ns#>Cc{*4@VX8h6w6fc>GncVJTLHW#;#
z6$Ci!hNJz(Se8*Dte9<^&IcxZ2-)xxqciDhRc`!YJMmrwL2wFrMTa!yqOfw|?Dcds
z<PKUxYI=^(Ct34A4DejZsPx<|kC*eMYyJ1_^Ax_wk0lE~7#X@?@SAvlES)n>ywwjm
z6$0|L#RhKkx~!~h1qVucc^x^k8Rk+p9Xs{TTwQ$5`R%iOV@|AU`D4ynFv^#Bz}+(r
zZ`p1K0c$(d-U8Dt^#g+>f<~e}k<;sd|Lqlh`bSQPeIAWsEEOw{58@76fCpKlB{X%Q
zVE^o;EOhDlq41q9u$H$_E=K4Oakh|fjgHLwChNrhjOCuOg~p%1xN#Fe0@b$y8vGCQ
zMzJ1S)%9w0@w<e9Uuk8pbuAxs1#2d*b(@&_5%F2;6SIlJ1>3N%Qfh6<jC^V+?t5<`
zH_C9~9dAwwp3r>l%o3z#^3AoJF@B#W4|}P0*I|hd+#2U9YsZ|K<r+=v@C__iw}D&T
zmSLWSQZe1+ZO8YpV109^mlvhFc|^6IxvD$O7=mr>jN~oIEwzZ}rG(d<H1ndecVf%E
z8g}Sg63o5XI$<ubp=PG!ZsloZ2KOC-M0#S8vh>Mc!lpGq_gL!`sLa2w-ZdG1{TX_m
zI+3;^*fG8@TU*(9r2FoN=1h6T6p4)Ie<t!NWxynxs)*V-(p|`=dzKW)y5F1WTsbw2
zAjc5q_~R&arGG?~)|PoiwxSe;6VDO*q?Q}w<`g>@!v=wkz>I_DBp&!AuMC&9J3Iif
zl@`CTe$-rZm}J6G34OMHw)|F7t2`rC-gMhW;<Q<4(JhVDcl|tf*OemFJ`@TUUYAow
z;K#sp$FbnX`5K{kK_oQ6K#C^4Dh7T?;@y53&C<%`6p|lYt)vZ-1!i~9o1C}}yHN86
zb0GZGP<ne-OW`>+2TX~Oqe-gEJ#VP3uZQ}TgOx*m`=&v3VmI&@hvlKq@-icI6sS3U
zTLMJ+i=;5pkMoZV5Kh2l$RgXeOy#L3I+3bB4KZUek47076VP*a2(hu3qRnDA_Q#Mo
zENVODupI+2dF9j2K;D!_3-c!YFW{3+x7H82v5<3zqrp8Q9B}xu_@(b7aV`OPKJ*ns
z7UCaMNp~=!Tt)kF>jbnCn~nQ3qdR+)iNXY2OKGmD;}5+3h7{VzZ)wh0p!{yvBJ@>F
z9lSS=XrwYn%A|I%(vE};Q1JiyP$&mE3YhW%XlZ*oSNt(4W|m0&yThAP0#WaAKWbHY
z!0-PfgQ%1a=Y;8gczc(hZ~qR1V<r{-#ZPl5DDmmXd0izgkwjs^NLm9d86@2Md2WcF
zyssl4>IOI{#jJ+7aOkxR14k)H0DRVuK5iO-2?gOKpQB%Sn_?qF-E_eUa+B$CcEmBb
zZayg(%A6;aOdrfER*V#<L`t%@c}aDyMh^bHLD|uNDtzda9Iwi~0+7x=vaTAO{)~}D
zKP>I8D6Z>x7(w6><@F%8bI{szmCzYTCwNqYFouHzY05G61kj7bWMLgq_wu~l!D3p<
zynN-O6TDd-;VrZVlhDhE2I{N=1J?9bm^P?$i&E{t=7DfuP-#u{IO5<&H?rmDg83wz
zIhjws;4dIo3K&G&Iwa7_w3Z~?&U6Nl+X3^DTi91qu!SuSJU_ZEoJqwuwD5=VOxwQo
z|2B*xt#EMTX`4KG+o8E(r5xL|k@)UmL@;Tndh)Wv^N6bR<T!!_3C8kS4eHTATEiCG
zYcq{O*cIN;T8ecb>@i90CIS0I@`~xV8rXwL8N(jc7f~i@D0?EUsACQ$!k}(Ba0&29
z^#?^u5vU`6P434l=#yY!mwJ-H!P)HN-Az@0am2tWpR<I~g$FY`r`Tl&TLrQ|s$@6N
z(lTA2G^n>@Ya*M3aTIB_+q`(<HAzX3)=d)#O+FQkf&tT5)rZa5m5(j(e!_+>y}?pL
zV5*2j31p6;%c47ZBxNNp)J9xZn;~S=L){D0uQArDEZyvP(Kbgr(c=vZX|z2#DDgHz
zmYC_thrWPV3r3#00qqhB;In|(4JY(fbmo|^F0pEW@&&rPT>vnmYA1}IUz#(s6?s^l
z_NS{yXd>vQ1fJ@mV}s_^#=Swr7%BfidCj<*m<}7jda)6YJ973gw&<;=1HCzQ_Neq*
zq~26OH$sLX+rn$4y_A&0<t&or@gKO6#Vr-j;iL$0^I0~CT&ftP^*U4v6QS|H?Dq!F
zj+NdWy=x7=r7FYUeBxsBSzBGN!soi#*?lr{?{!)PzZQMDU^AM;mv>9+NacAwQU#|)
z5s^^kjD#U}$K~Ah>s5kR(@Dhq(wT7yYhvIFYPGr4^?q<bv*RM?vm6BtuzXqLGPw(J
z0ZFZ;?IAcsTu0k>L&tWD%NhTJEnYWfNf#{cwVX=CanTmgn3u(JW1gWs1K|rwcreV0
zbD(@h!z$`ltHHTV#3`>Ee|;w1fO6`UI`kEjBn#VfUcMVZ-y$&Yl$8pw{d61sgn#~I
z<O5byJdd|PS;KGH5kno(cpVf48$X{azzhrBLtirRfh&{(Xm_G3qiEKsv`em>RDb98
z2R~hrVA>@wHgFLzZ*G|a5dToD#Z4oj6W^XL3<DBol^0hqL*3RKDYa^%!nTOZ_}$r{
zu96ou)Tv_Ql^<Im4{|BDvX55-<Ikej>@>`o@|Jy3p(`$!TZlb3Mz|lpQZ+utNFXRh
z_Gz4DEp1<1%YlB&+<~`P-L^+(iUjx9#7L|K7TR}U84mPS7?fdy6MP`UJ9Z%=$jqCR
z84~;xa*YIzBo8guuY<--E|S+wEi+?$;XJOoZqa8GW^~4D<RrIh*9(-}HbxSX%}@97
z1SurC8*g#?e!EUETpr=~Oeg{>a~f~ru)TK7JXg<8v$1qOSp_>qLLKH(J1dg}0n$Vp
zt7H%p?Rxj~RFk=Pfzl(WwH)(Id<)DK{fzS<s9@spKI}TL(AnlX{eVOWAp>`&=Jiyk
zppz<nT#VuD%iTiPxlb5)x7h|3E;`y|`9%lO()mait8Cw&pg~=`Bh~hk-Q(l75&F<b
zdF-}jFk2UCRIH#bSKwCTtD*R{<yU<?>IDUy3om-_Uv$`sl!|Ws-3=Ve6%_ThzuEx_
zEg?c}MnY)X+RurcmWjaVKr*6e$GZD;IMkj3?b5`U$zJq{fHEb9Z0By!&R)RV<lwF)
zGtA)8+@Dm-WrQuJdbu`LAK8ckH4t{nR&$Tw`&BGwYmpy`i0QC*_Sb)&PA=PO?^EkL
zxJjzj77IEZOmv<(&??K*Oi4^P$z0Azc#l}C=3m{ZIq6t9!E<h9G0hwnikXU%(Fn)?
zGUjx>+zTockkIm5ns{EVFaqXiX8fq8oZId_Yv$pB^lg`$=CQS|9tyl!`FP$DDN+1g
z6lrz*aDHV7)J*E}mGL|+ue?{kCckO-xBFvxF5B?oNAR_vXwnp4e5)uDB+d&oR=`wY
zojES?wFiUW<2f;*Hu1N_P8ZR}NKm{fEpoq4QKgjV;94@7d#Ac;AjsvouH1OHBUO=O
z!8Z1{Y`PMgxzyDdkVqjm3N~*@vj(a}z@bd&#>j=`b35V-%&xY4PvSI#trd}&W6O>0
z^P7kwXV*Nu#jJq~y3MVvC$`Q`_oFNz54ISiy(bV91OMiaa4nF#v=&7yuT%<0M$G)_
zQjy&4O#pdwx*dAtgDLt4_Zlc03B>c>+eLXt%{rZxD;b5DM>jgDTB6QIk_eZK%X@Y=
zo;wv@mlfyL!9DM|m1_j^1D42_L9~wVw5`_ElLx*7FrHX87X>d}z6qFmH1BD~c$Yjr
zfJwIzCYBqD6WOd&?Fan#ewiDeAI9IfXi9g7%e}@Qc=`W|;Wzc6*ePHD07fhT0I>gJ
zxV(X*vy!=iy$P+Mqy4t#rtKChg3qbiUBk0#sJNwz2h7z|1zVr!N0+_gsQ*5!H)MS8
zEv996>e&8`e4`?pfPRh1O+2^L%+y`s%#KcWH<w=>U8`P8>*l51N6@>-uk&-$kI$of
zFXaqdTvi<$JliJM^X7}?V>mqgM#=<*lV<Gix#I#hs-I1!#mF4<;-oAso)Tfk?PY&+
z`DG+&*(gR_r;@5wRg7x~eMj*wjE|%H+Rt(!05ykSL|<yo_NKiZtRAb^E9+a$&hN{E
z#np>ImB=^UJfo0igq6|aJ@&yT9-a{A8R=dHpQvRt{OW)a_sYV~%N|QunRq1;4w00o
z6ul~ACF9C_yy1p|^tw>c>#Rel;MCqKPfw8BkJSzhr21fQH%BcN55w$(wokxvZQl5V
ze=y&T;TwSTONkiIcbZ}j&$i#UG2e@dw02W+$(v4g>%GYub1Bz#=&vP;q}`IG@QWHo
z#ggezxbUvOGcLh~v$<BiUHeXZF4Bw`KgN6Q<x04RfypPD=%0}H&jn@9N*HkuzDGNz
zsZe4Tum<7>-<V>`*B?P49kN1ko#DSy36hpfz)Gse-uz?r6S9_&*Ryz(vy?kmeiwh1
z(gl7?8x<mtcjiTbsF-F791Ozf*aVhZbSgAiPglxXTuOC18yRF;ZLPADz>VpzygqDn
zw?5`^(2M3>A1G!P$)I3uTE*Yf7rBIvGfYb9V)2_bX0x-{;Y45)?Ann!#wiO<Uub0v
z7ZjB&<+Kx7)tyCyhomf=55Pzs-4|U{y80wM!)TC^c+vBXFR`kI>^)L$co;1#@PjE&
zgU8rr^b_nh92z}xenb{E5quSXc@>~>hFgI@An)F1G-8|RM1&@;dFeg<y%{sh&|+9M
zcU)srTMZbFan`U`e0t8G{L}h`gUgbkB6tT9YnYV7$J6ck!=v7aAX;p6h=J;Y*zbzk
z3*oqz4DqRoHFZ|+Z>G2jq6HxDR$pE=pI>HjjD9^|-)B1~KeMK{pBJxhFdCK7<z9cS
zYvt>i8?RXCyh&StPDpetKoRRaJ~$=v7lA1c|BB7TDprfFYu>V42;Ikn+&v^q%7^H5
zoJ?^=|L7(v$nFJSG^rUb60?uh{pk_UlvP#F9%L~Ec4xaM0D83x(%)u(^~-H9r=6^U
zZb!;i8K$n7D)uU*g&N6C3lKIe%Gu-aMjfBBV{_`ZcTq@wUpgK>oklnAnW%uzdl7Ry
z(U>R{>M+lSde^B~NCx{|9-nJuSz%Y}h-{#4>oXKwyydI(Vc&?$gp)rH1lwNMuiRLp
z{C<v&9zg@IW1Qq704Uc~kv#-x1R{KfNJeiXPI1+yTLd_@rUPh4!QhuA-)2OaZxeLV
zI7B=m6}aJqe@AR2xeEIPSwkAJKTB^nx~XKKcuk{>?_AqwIsu-EAE2_f&Kg1qZ|CY!
z;}-rxIl~L<XDj@4jo@fzK9_Ln3+#Rc!Xv-9%{txV&m@3Cf%{B(TR&5+!-12;&HU~N
zSkrLu@<z}SS4vJ+vWzri^$ik7p+ni<iP*Q&rf*j6a+tv#9U;yxUT1)V(h)_u9Abzl
z)Pa<okcMA}=o?G$0pVhN3iip3B50kSN2YC)MoE6<06E4NBcDHlfNBO^WI_pPK_&%7
zk1vjwGL+z;tH`OBOiT`WfRlh?@FJj;GR)4-KM9YNQIHyoG^I#Jy-Oj(TTtPVP-`L6
z+3!i<R~zGeNRN?0NGqvwt*rfkQPC%()JZsc3Bf#xXNZcm41qDwko-(?RLLtILyfNY
zPHjv!hQ92o&+io)0CEZ)ATq#%<?yEi#>$R10}<?4vhJ6+IA)Cg?lz0!^##+w$-tJ@
z;;;vR*B62ZrpO|QuTE(8If!)wE#m1HT@|C+HhSjMixDNy{b^|hP9%`UL4P|zr5zY~
zMXGl~V8b7P5dXSQ@B^VI@&sshJ_nXt1?JsHGJ;J1gbEihBx$R@SP>&?@P*)x^fC;I
zH9t-fWdS8_(-g8v?)d_)qUENTRK;wDVsqr*d+$1cw#lV{t#76vDdfzu+d-;JfBZD+
z5(HfiQ2RlAs3ZX|@d&wZC#(}^p_*U{$l-l@eg+MX1P}+$2m>OB><cicER7xIvzWf*
z=OPJxxPm7jn>-CbK&*qH=N>_(@gziJPDC{ZxKr((P>e!?$=6$Yg7(>cIe47pEVD-~
zlmf(>n@#jh)O?yKL(#-VBa!#Es7lt`h{t^xj8LSK%=!iTZ~u~o2L%uY1OSNr=V5UF
zfB$0mkAc-BD_9NCqlE0v*0sfD>4+kAa^ROd+ZY9*z2a0lfm#%+^!xQ@6$G*xR;MBf
z4s^dxPICw_P9!RDmTu8r56rYOE66>`b1#HxEQ=PKny{KEZ9v_&&{O3y7Z>E`9^Z>K
zE<y<o2#d4GmB!b*`j``m2qp+O*0M42*t{%;8s2@JOO(LqS`q3XPL`zfl(f;YqMTXZ
z+ZVsE=(@Sn{m8&Vk`1KkSf93Blu?Ile>F{9E+{`f8=gW(SnK?z8=gEZYzXCkXOiB+
zGGyQmRld+dF$z`z>mLIuN(}RP{!Ha!LpfYp+}xvt)dRC~4P%OMOuB3DAyc~!c{>UV
zEs*TEpUu>Q|NI%vY3Hxwn&+~=_ssn{ICMpS@g;W+qdD+<f$omrI(DlF>D<BVk?Mm?
zRtYliTQ5XsW4{?==>Zp(74!RVy$>F(fcZfF<pt9J(VOu<dLL`b$Q{xnbbqQHwMns3
zxGvNY1HCj?=~O_>AlA!6vXpy^e|`EKHmhL8O|q8?RDq&w=*O9zbhG8Ql`kf}pO3G5
zI4bb1z&~$mIac(N>ecp=@l~Cwq~xf~E?*v4D9|m(eROz^M3o7jN>ce`-};hz)Nx5N
z(j--ns3%H0t@2qrXLRn3hKypE9WY50-rFQfleZ6W8SUEb)ac=&9OjORj~!&X-pbEy
zqD0>>lp07=u1$+@iM<&yJw2H`ds^A%A}Rgpx_#iC9e&k5V!&km`|eilnA^eqL^7NP
zVDSdmoa++5IDh5d@~EP3J+gDGdaC-6KMVGJo{JZ%6jU&)_=mNEn;fXRao_0?*t$_x
z#ETQ>OYu6?oDa=M_tfwnyd4Yj*S}Ws5{C`$Z`^BgFLs}w+26*Yk*TXjKvwvJ%4^^`
z_^dHnei96l{wC02N-jr-dFR<u>fu?TUODYdIS#*8tq#$UjB%_XLc%md#O-X+6&zR2
zO&a(#w|0PaMzZ4uw&%eby4fCP3I|bc7FE2?HWj1E>D!O}>snnjGxr~@-k-l+>NJ(d
z+mnMI`Xp+PY0G&RSY88f09rug3axYxD6o`xjlMgr#NYu#P|BKN2f6g^XvCZk0p%1T
ziqhz;Dbx+#Hh1cKNwiQ&^}z4XBEs~c+Y&la7#Pcfo|^H$tam}o{EgjxYF;2X#mJW=
zsW-CoYUq!j7l<Og6wAlgFBqD3GovD6Td}WDW#N*?oU3mNV&61ef)|>+y$V{WHaRV$
zMeJu~PKqboi#}-UI2DoL*f@VD!0I0Ty(^n37$~Wrw0SrT$|>Ki1(WSEuGgZa9s`Ll
zi9m9Z2EB~4A>vWf!=rl#QR94C`N&(M_qgVqd07n;x3Xu_(uuHl3}9y9p)@abej~IS
zQTOIRe&mh^%kFy8enC|WzU20QmkpJW#i50hqjSj|a)7p$r1zE+K6C@7t4nPR<rTyw
zO>xMGV!v$RSGB~tT3ltXCMEQ*1$#LBJCcb#r-u&mXJZ}b6ihp0M2w=+EFxFA6d%@3
zONv>#;O7!qeTIb@ClJE;rIQdC&Vdj?$|aN-&Pd6TkPP<5ENF^Fm6PX|j=YXRaIjf4
zIV=_m-1C0;86u$2j1kC5^@&pw@gkN5G_hVSL73;M28{z!AuttEt&y1;v|_x!n#)qF
zBN?g5=a8Ue#UYr25eUfcy7JPiqai@lq*X=rfpjYF#S89yypa8^uVpCYfwUD~fEs~h
zl-7}fqs&Hpal=BGh06W_t}I^NyWqXE3iQ3yB%&!=HsR`Hi)XC>SA*0yb+;MnSBWd4
zo;x#~X*(us1~P&woozg2_RxYEX-XIPjh|^2FYpg%S<jn7qrYMb3)2L>WrKp9zSf9N
z%1>3a#A?ozxP~BRhQi>oujj5xuJ=G`39Q7UYXSNGg8nyZA{F-F&HkY#g6w}#!}R~5
zW>;>L9>MojZ+|p~_8)5W;vm)*OJ)9S<Pz)u2Q^>uZ?~^GN*%1ct*7b97D5!sd)c$Q
zKD*n)qB*%!vT`#s&mum0yUT2JA7SsseA>QCdR3z)|4<XR{P<;{OShEv(dao825uv1
zlFTvF+UvY?9-GLWDq(6wErIuVs-|jH#8mX?=bh6n%J3NA(@D=b^3IMHZoEE(q(F18
z)$nsYOOAdW!}kIuEv6{xe312WivVY(TnaEm$Yeu!_XqIghb-H_hQZ;Z*}JDj4Ss`&
z<E?_=A9uVH_YBsUSA_QJ{!VyYD6#JOLI9jUbjO3A0G1A(-#cGc^{qvBPfpKFqlEKz
zmb<++<ICbwe^8ew3LJAF8l>p(zIq4CtW+4w!K3?DxEeL*Vf`O^#M(14et<jvOgn9{
zAMx%e{n&#1cCSlT4qS&~k8=%}($#kG0@OjUHb5glf)Rj7%4aqrlcV$CQA{knfu6m_
zDm}(Ox@}fisjpR33ve5cl{ARk$|5_#eX?)T;KTg~KFnmt4hSEE({y5b9TW^i0XS58
z|AEiq^y|mXaj7nfnftGn&reI6`b^dE^y0Q<9fev`*>T+k5{to-ki;Iz#j8j_F=0$t
zbsoIRQ8_^aP|8U`Gn;hnu(<B~KlsEHr_)j=Q#T0O+==fcQ9@O%2Yh`I5vfnAD((`2
zk^PMiKs)Nyai@cguSN@YjPnm_j;K>QzajN;Vd$*6NqCA<{BF~|oyuAz2A;3&J?$Q#
zEmUkDhwWKTSZdVYTyK`i)2sL!y`pPWwulQgcMs51aNZluOb&?{R1@l%k%S`mZV3tk
zpb}I#WTc_6hXpX4{vwOdCdJmrvB|?v3u^ken?`6p2NFexfDP_pOQ0u=8t~IMOx77Q
zkd`<W@aqoo3m-bHm4YeYS5)rhQ}5yJ4lX9*ZVD2h)lcp+M}Ig6&7Ucn4Cu|F*mp(`
z8TdS)EpeWTw3fNQZ=eQekXH?Xlgb(#?g8q2oCp9?GP93d&#v%j*phO0r?{2q(Tkk}
z#c>B0RsvLTotFGX)QtX;G2Mo74R00r#e*|2QY1Q;zce<Gh|)woj9-4QQ@%0STwv4%
zF_O_lO@f0)0mWOQW@rfl8eA+MMf5fiMSM|wL1H2vV;HqlB^(LlIEDGbr6sm&M_3k_
z@RTxFs6o*Dsa#1+f25fF^-h;Z!Pq-J-FC%=$;cgFA#bX<C^tKiQJQ=X*&U-Pm=X<v
zn1a4oE5<Te*gzlTxEO?SE(L|lf6fgGs@!ggLY+k5`cetFn>>%2(7G#bV%(o?%yxVs
zghgoc52S7WJv4QIq`0zur|BeF<&w*1zs<l#GhsMoVAOBoS_(CTBe8}etHobtb0fzi
zZKzWK=K`t(-mQ84DKIV3azdLZ<q(RfB$~>*JBKs@YKuVvmuWFe*Uott4b3Njz_Kc*
zrD^|Av|n@JWJ%9_)d?1ja!8Fq{UxyG=w878Mv^-bM<wFFv}p+ZKS*N!50YXOCoKo*
z5xQp8t{VPU<)>he@_=!*rlJ`xG}&vf>R0cH5%}q0;s_DrQU|M>x|xAb6K&%!`ncwA
zX-gYbV&}Yt<VKo(%n6l=l!E)zd~P(mvxVSU&m{o`u|50}65^V}0=14A7&?x&+uTtg
zP&qStw4op-)l(K5xzQ}Q_lEH>pbX2#C6jcO*E!OhjI}Cxr>jj{+S3?4oYg14F;3So
z+9a?4W*pA4-db*}8ZpsD4>?@<IxEQLogKyF`#lez5M@u8;J)?fhUYZIg?3BE;m5mT
zkVv(l1Hze6`#`s|cs!(&x7u_!_1}w<B9d>4-?+cF$QVv#tKtrXqePrT-su1@5==(R
zYt#ZjkU#MKw|GQ8N(=Tt008>%|05pDf5f|1owVJMN7$ZK+cLqnbjJ6kB^Fonk;pf;
zNk}Fj#JLYo?!9e?BRIe$UtFNoTm~}AYG*Q=$>zet(vcNSJEUT=!OJvZ@?%`R3G!g`
zvg2LdbjgXnwE1pZqs~P2u{3=~L&rX(=5Q4He4vjoiDQ-v$7Yb5xwH4igoHo>l{Ev=
zQw+^?22qOysX_Fw)TVrBQuN)ysJG+>!j@`#y#C&|^?Mf6m|JR|3}6b>Wmni@@k2`D
zRg6DuEFp|T={h<{CjNT2=G>^kzx}!%IU+e5h01>AJ`4#X^ga>N15-2YN2@JwWPCmS
zG!}l=H#B};``5~!LY18gMG`*{0@8I}j}+25Q~-CJJ=9G%sO*dcmm>xMCrKH*OeTZs
zMQAq+t4w6sDVN_ul7y~8$u%ZHmC)e%5esve7n!TP=0y%t@b6|GFLr5!FlZkAd|X;~
z=q^>g+qUQ7Q_Hws-ac2OI>5V~Mx?8?RnJ@kX#!q$pwEqMOEq~2s-Sw`qVf@2&&cVX
zbpT%Ze)>koNcZ3Nrm=0JGv{or!mpvz&OL8CEI44kqz$II52BYF!O}tpuLnTz;_x~<
z#5!?R%f>aIee`sc6r~cKy_l2Ny!poR4RB8gix6gh%%eXC`UEDF20(`=vd2Awb^}si
z-9skE=sB>%03=z)C`Bh^Otb}YgFg7P+Y!Y{{7Eq5*R_msBKd$G;~^5Bks|2Tz&S#z
zLbS@gnnjxdPodO*Y6x`|u4#_uuWCs3pT;4&Ra+@4B)>fD+5rrnKTSE#e>UbA!C#ZT
zk$VuRV-A|yO92uPmP-mP7s0;gje^rSd<FmS+01j+m4*Iyh3sPfpV?&nzuElPgKo0_
zUk~blT?dqq?BYS4_+qiCLm==;U2KCz5FVus^>q6RbIhK|9v!NPQ*0jC*JzQM#^f{u
zLw9j@JwCsA==S0KXynw+@ms=|(fh1tX7?2K^3pLKySe#tIy^mmBKh6KVP$uJBHF2q
zX#)4SpEqNcLNPweC}Afpm6#Xu-8(}&E3#sYFe}KOH{&jS82wzmqKbX(Z0cNlH$KM|
z7Iqz}oAb)XW(TRI%Jr!FrhLQ8(}kVct!7pCl1IsbgbI@dCpEU~c875wAO?8*Aygdt
zX3xSsB1C(=af9mQ9$7vSpOz5kkT8!Fogy6(s0lzFZiLtGnNP`OF7I2%M8eP=$K~y1
z@?*9`ji^4l+s&@WqKVQ_((?gOrL)UL1&q|QW$6wt-7;5%_e-WG=C;b$yFsUeg^ZO2
z?UT?*Utd79!OUu3fWG;MZ6Tf`0zkYBpIxFDU%$f^E~`IJXgiwb*z?pgQa$hQMHEg2
z%E{@o(s?-&!SVG}8W}TobTb73p3!qy9%*xXS;38%Vs6Y=bs<Uq#6xykaIot7IbHLw
zujqtViu$)95J5{XhH`Pnp(quys75VJCnWWJTaSicrO*i(i2FTCg8o<xwQEB+NYU;f
zmK3QPmc6320^Y_(hUfLegz|I;ElrcL>_nvZhDXsfXFs{wEKC4(;ypDqNg?1c7y37M
zU}bWiHa;}ruFz^1=160UYfD0n`~tn+2?(_wvc6x>&U<by{HF<1O05ymTyNjZu@KTH
z2A4;bl<L*`LKzxqg=Rg+RH1N&oWG(t0bGLOT)oqaW#mmZj6k_DHA=r3NIf?abHd#3
z?#aXI`^f~Zk&yf6&u-P?Wz@^X*NvlBeOgsg=cU~>=0mcj!Bldj+Sy%#JlQk*dL~)R
zLfjN5p)qygulJ9EV3Zkc+UfhD^cqA8&DU7sza=EhNPBwvbl9L~!MeP|JSSx$$yWoi
zTtwtSvv%s=p=Pm4d#P=ngJJLN)R6*vd6&m0Jgz)*4A?Y0P(b;dTyHx+0su5wpN|f%
z3&vMB9pNy&etJ|__~Z#0+q*irVj5^$*>s1++n(~A;ww=Z@FeH^fEz)3v)_Ov*Htp4
zKUz5E6Pi0f0+{oa_E_LvA;VT6C`O{-d?{x)fe`k!*Z;{;VDXEPjW8n0wDLNt9snM)
z@tq?=y!+G%FN23Nj_8~{CazR%i*q-LKu9XCZ_<y%dHu1Ds`{;K(sF<nh)(&l<$N&_
zH)0rM36awUr4mw`_)~yozd5LP?DBbZH^Tw!0<`h%8@;L>D^y`p=y1zBt@c)_TRk@B
z&<+zd_fic*FeOkNaPqJi<c3NFp2=y?an_eeZ?bH>`$^25^;D{TSPf(e8^`t%8jC(s
zK=h2pW%|fMam}-fkTW()Z^2Q-OpwPmaDwlnM<kUfg8er8=aA8Y+ZoA$kl~8qq=Y5e
zWlO2*912jMm2rwtncE5rN)t$!X5i(d#fCylyyhZIC<{<;lECoymD$5oT1a*FabkT`
z!no}tSx`lC;Yw|G%t>lG!4vezkaZNXBvXY2+Jph>?7f*%)cD0?C@>A)$&Dz+OqbjZ
zeZ8ZGsN7|8)I=x6M{|IUI9OJSFrsN84FpJDL;6oUjT&WnMHI1PuyR@)Zvc3Gp?F~O
zs>FmELIzzE$;)@4N-_2f-1DMeFmky{kAA$^urpkgxC7<T)41N2J)Qv|P-kI`NUFDk
z|H{XkP`_yX;D6<#`vtINDvuwKhEv~`3BM9mLGjfJRRa4e@tyeV5DacxiW$~13e3JF
zY>UF%1AKMIT|R{tN!v07ofSnGWbJCn2Wp=AV=NHg3R;A){d{VjZjxSqW8ejFuOOI+
z7s3z2OI0=u$}3g$?DKb|dQ%}glVw>_4{fi1ksyFUv=}Ht^$qD|vW$#ZCG)9^Jr_vm
z*BLQF((of9Vu2b62Hs$VDJ~)t);JV1fO}P}NrMO^*c@=YKBqkSF8&Hf230;S=9a&%
zlP77*SqeO5Gv`!z{@c7LWpDF+Mmn7$)kfAE{(sv>CYm-z&A%)tO8h^z!S)~9SXP&j
z+vG>+zO7p`in^TWgbTnyoKvb&g(@_IrVtinfWk-m?O|$?usmEh9?2T|Bd7{-c|YZ4
zw-dXXohLIpOG|sL@~zCb@_PHS;nR?3%e#rcJXttFSDAKU^TJ(qdgA4y)ZG_mb{WHT
zV>SQNAW~;1{mLqF=6%({#@O&7!nUJn=41x#^wZ(q`PeG|G}gC^Z$%CD(kTm>;PMH1
z-o-3ut20AdC!QQt0Wr=1eFhtK<`-R-3}>qo?4qj&75YLv*IXVX#f-V^6aJ*1E}5h@
zmt6iOAf?8fgu+3IlTd2Ls+~iF4>LO?Z87TC0#}N2@9ReZrw+9~&70O(Q}2Vf3Mge(
zmNqo7sQd?%_`vWX?2$@I<Fp7b+RfwrQ(t#NC$djH5QR61mDoI&mRzSprG(E1fBCl(
zfA{v%!vpZvb8?pNR4qz_rPt3#yXO|o^rPcVX}hnMUN!!&Q-L_@A5-BD`i3(SElEmE
z%{<Y}2OjtOsiZsA7(cGp{eF6><TrhfGRK^jQ!*BHDAR)=D%YOtx6bxVUS+wx+v73q
z-I`g%?Thdv4h>^D0!(JuYy>Q&wt@aS4oRq8$`hlzNv$SdGYxWhu?+Xb^E>Gzj@n?h
z99wNp02P|om8c>*KtN|1-Ppa6YU=$CFtZ%a13Io{6U#S%FEs17s|*GR_^?R`)`Vl?
zwg91At(}1pMAmS5AXdZWX8qqXEZ)~}%UG96%uNNpWdufF!7*!tR6oJsN@U!ovX?gW
zrsQ|Y=Uy|apgv!I!V}Ul&<n1TOGxdwsaB|toNL=em^J7p$&=CMbQXqC#!e+{WIlds
z31)ziG50y*#BBAU;>WS_TU4H$sidTLSlN+%;z_Af6Yp-se-_qH-m>%R%!Kdh8k9AD
zhZseEV74a9xa5FNopOQs?A+`hi_C$wA=ny-p*Je&JIcco<EVGudu)-*J)Km>@xa`=
zzR2GPE9ca|*s}H|EOHr9IIaN3P-I5lqkqc06OUUR?Yrq73NW4$VNbOJ{PmF2#SsFc
zrzJ~Bql;@>!_kl>P}G;=TKA?4`fKxmg;pmY(M<K0R4Q3^#z%mbm}W;Nqnv7K_i9xQ
zf~!!{7`*1*u99WYHFTL^fgB|{B~)do7a~D2Lv@zlZ>7HJ3UKwh1q$9bi)lfQhbV3#
z3<EZon?x}juMH6e6b&By%L)`4CWns|lqQC23|GftL0go4zKP(ei7jM=2CMm$GJeN$
zPWRsj`}d2xrV9-K0KfWw4mSJ$<w2dvTH;p3?Mtd=>1y*nv8HuxFxNzxKoAUK4L$Y<
zqrN*3Uy!lgQ{{%bOyeX)h2)#)eT<PUOr6TC>d^`%73-J%$K9UauU5UUo44aIKfkw^
z!PQ@$AC=#ex2if{pRdKqxZU3DUibI=W4_(5yXml7IKQvE<;l3WNq8~0Iq+}U<6qom
zojjZuz0TW(6zFZY^SIu&$Ld!lzpam{`|>z5ALgep&b_?N-8b}$yLY+W-&6dPTRxmY
z@4jBC=|3vp)@5xYZ6l<AE4IrI3!kCI&HQS&A(e1DEe{L-N-QtILApZZ|LIkzkUUn?
zSr|>NaDKqG{3sXwaDBu{(7x`R?N4AhwQlcnzE)H+um0wMqsv*!PxRdSjyckR%sPCd
z%<&2{gPV1ly5KUcl(D(f7sg`oQX<EH9p!*sX;Nb1MXBxH-yYPgEnF-!i*<1kS1AAU
z_7R4!fos_Jd3Hk>7FHRdQlj@5chO2!<(C??G=Hx26rUr?oOmi~O6cU(w@415p|~zJ
z514ASdoIzbZ)&!U<Xzv9>+Pzo$T<lo<~u-rth?3lWH$Af^EeT<p1B@o0r~i43WX%}
zz?2B@H^dn?YQHo&j~BPdg?f@7c)xKuzM+3%m>;l$X|lzQiA_Is->2clA{3vLclTZx
zSO2wljiN2Tc+~wkv%qh2Rea4%^Ty!CcesL4{&%Eix%kARCAF?RZJbWh>NIGijbo1A
z+w@f89kkbFf`)lc+BWn1iUE0Q7aJw`iYwY))_@XBZA984Uj^>B9xe)6sy^2)22sGH
zDsAtpnrs%>0LCD6(lUAhLk`$M3w_Iw4EtnQ3y=ML@9GG~+H7SdBm%4hv)6e;t7O2C
zzsNklRkU+lKvx#~)SaL-AnFiGJ#N6wJpU0*Pf<V!o@62f+>%FtK{Z2S-NfL23heSg
zMN5Bz`;ouso7<y^oQWz#<Dt)E!4pnEfK9#YWOy&hB*WAQS7xWtw2N^>#+P+wZ)9eg
zS-t`k7<dTqDU)RvOEV`hSDZjSQU$|&M<8FlH2?rt8nCx00FLaqI|H3<5FoiM;LXk7
zg+?BYw)l{rk8Un@mDRnbCa@M31TQ;-aM>gjgM8($9zngxplDziWI{%U8%9ZiNT#yC
z!ZMibk2?VVju&UM(T;|6Mo+D?zY7vTAL*aA8r0>*pE&eEcL9`ZF#Y&reh!Qbq7fh?
z6Dc_aVA*RSoDBX@%{vb`%wRZsNvsS*FlpUEMy4r$54w8d=q~?};^ccU+LR!$uZ2Dz
zbK^j)iGf|FrM^`jv>{@pHGexUT?H^~xSf7trY-r@2AV-web%_C03nMs;4p_M(!r52
zSPnAOB|{8#x-kZerYY81pCCB)un;}dIfnN>r_uy$SN~mV)`Lw@E;M0(k>O6eJ%KYs
z2rZ?%xqR_UZnmd%U~lBfsX5?SOVd409VIY)X2!v|iV*zHgcfjqh{{@kG32vNWO|F}
z9+oV`IPh6B`2kBBQ(-$kHXt?{oNr_xa7G|O6@)hWbqHo`9AHTP3`w9<w0z^(k)dyD
zd0OB@P-g0Z7tuWch5Q840O-AogmWDT9B~B1uEahA+phHBKFm47(sxLtpepLvL;lzy
zUdC>e@P08OIw?pTg@(Ys05UPOzliK}N=4}fBp`77P?{OY?DShKsO$1;9QC?`Yo3Jm
zOlRdf<MS#&;LifFUFonvEMq8d=Ar%hQ~dg-Mc5#~>;k|Jm%)7ofl2oXNVX8s7+1uV
zry#ULTI2xHCG0)VG(ceypKw601Yh567UvKf%$mfr{1c;x?@mCogTo#?KCDVbQ%a??
z6NG>p^ZPtsoFWm<5@88wVv4DA`}`66v2b2TF`&3$89L=yDU18Vgyd9;=910hK1!T0
zSC4x=ptvtksLAfr!Ei+YV5wUA^;&(*Qk+-u%fr%qvxSr#wCD7H0J{pgV?-m>77X@a
z_K0VTASD8{IdEA4Q$TW0Q^k!q#Py{(qtk&y^MD&v;SQ+J=oe5yQKrxCKqH(uqu0VX
zh2e(rP%uMK$=cJ5H-N(va8cExCx&p;lKmM}_|Wh&0vHy4*cnBPY|v*qm6%(gA5y=?
zi(<I*d=YTml$r7b!tmjp6~!;Yg_a9m+0Y6+5mt$KmA-4LGvwcEH<od>3+4)*3^RwC
zVowWO1|PRx!?1K-@?@TWAT9l*-L=YjwN=BO8Pmo={i&`Jp_iyqiP{0e5m~0I1}V<-
zsgudkDO~N}DWqr-v{s-b6Sebi&@p`#aluxP9feeJMMc=`XW~Iv!$t(AFdHxKVBnNU
z&?)XYV^uA*AD#9ltWve}HMLa3cmnN8IHezFim)n~6}Tm0z(w$`)w$F1LoHi1q?)xH
z171*6M}T%K2luwig-(|Zl*3>$H8jM9Owun}EgS>ttIP5EKbcxD=+VN`2Qnpqu%On%
zZ9ROzor(_}bG7sLf>2ZMrNhj5EZCcT@5L7)?ZJRI;GHojYT<fan7!n)M3wLhk1{A)
z8VpD*eCrn{CK^R$)V;6HNMf+ASCK3<T|<(nt$QTOz+ApfMwtw7%G*yfcr{t`skm|@
z6zP|;%09~56A4jF)T-8Z7~O^<^&?EyQJ?3!`9^GI`k5-&+Gbz$qAE1jQQ=fmb^0CD
zc(dDzb>@=BJxYfuUbd^RB8eQ;sez}4$uCXRnq`v7Uea5vOCe|S(sbt83doqBQ*2Xo
z6dX$o=|68*ni<Na<a;SjGt6ZSK0b^6Xr|0!BT(;InyT@2ig9O!%fPpu6>{H$uU;V?
zT6?s7?5*C5=!aAtmwlMQZHva+XI18tjs4{4L1<={*_2=ev<MFr0|~9T=^RzM^H-Gh
z$2M+g994o+X}la3Zbhymq2dFzQ6W$cHWmX3C$t;*vW_eJqI_yAOV?6o995=K{+e$~
zpWUA*;EKOyhLB<enzl!|O#7(MYO$I36mDmZy2w+-T^R3lR2)~1iO<W$Zb*OhoTUNP
zIl>4iZP!wD=(54o74VEAfWR?-O2G(7cJJ_vt3(7k&@c`nED^k71de!%)k=1FO|DEA
zaWma8j(Jw5?8#z7r57D%(U<S0uHGqR=z){rsz8b2G_$q}>*pHkuvwG`?s(}5yIP0z
z{RA|I#?gQ@WOj3qzQnDywG!EstsHQ^7{s?c*!~&#n2L3^LIyJz?Q+rOiFBk6>^OOt
zRvi?xT30w_C|X~_j@51Xt2mDf+hCD6cLmw0NTEzdn4{jJI7|j}1q5g}Yw;4;&Cq;L
zTD4CFt4_e%1NxNFV#&Y5F)gaeRCJg%`UsiDYS@vO98=E++(~<}-<7{k*j(trQBRe=
zh?j4bMV~ug;3c?TPAw_lqlQ9S??4LVaL;epNpWx5EW}wR+FM|Kg<vxU&FFCbU}OKK
zy$e5Tf$3W-qv?(93s5b)J#=9k-r~Fbk?M1<Sh9ha`h9kQ-<@Ci%>qK#{fc2!Cs}R;
zAK;vd`zKBJf#XHD^D|4M)A`(x>!RE;jz-(F2+zxk8=ZN{#C*H=CwK^(atDT&lLy3!
zt9unM-CRES^RKR-dG+Nx`neFxa=9L;&O5NCA$T%R5mJ={D9z>E;F`__JdsM>yD1!@
zh~PV3ETI-EvRDI|<prKEk@XqjQmB-(c$=`Pud5U_XTk)w?7cem8BkflvqVf|Py&xC
zN&^F3D`3O7TeY^gOakaL_n9s{M9gTTA0UIl6^Eh)+#INI(M0^lzPNkpPSFJ5g~0xO
zX1rzCK7R)hhrM{+T8JnvGHUKtuuwjhM;X1=`|!vR`B~v%U(F~JF(-huIkVhdVC~q`
z+h<f$%11k-V*j{AqdK}`>>Oa2-2gxyD$1>@NYn<j3)w96kV3;GdGQBs1N!+?9zhf*
zGw+sErA!np&sc**WdmDchdn0&jEc8=mgEFES(GZ-yQ(XP=yo|TIW5^l>JmGbl)09W
z$e=D67f5g+#Un$=d_bBJY^&JNeJJK?u(l1XxQd1de1?INh!_94Px(7^{HPwU_vdaM
zpSM|WU&i3&?(f%j+OFT@!}cnlPiHP`4cx8Y$4?%ep22QlgN{cdiro+?ZAD0gw6L{Q
zgF0n*t2@JjgrprccW&JbcI6wP-qYcEsxqev3D$+Ss|&PW!bYlQ@zO6JhmI6FJM(?m
zt}tg-tzwmOn4#F4`{Ye^1FvV{U#L*!4#j0j<fd46vO}#Hl#_i13z+r1L}vJNQA+?r
z8fSI?x6B2JA8PviB5NWu7WmeH)<5=90<v3KNm!HLL{+v{7ni+pD%P3Ptmm1<1$zxy
zw3?rCXQ<?#L8K*d*s3DyY35QgqL$T+I2Yy6<8kM;f0xTnlP&M9Idk$OAL~*v$%o1*
zd12DL!_6!yL!8`4<|vsC8(6qig9bGxXK`fBY@!DhO4u9yV`mwhQMuRUW)TjAnQ(MN
zogD5dcyOaTJ`uqGer()-hgH<g(k#2TJEDonV0|?okilh}MU4hSA@29-b|Qnvx)iCH
zKJ*=qKiZzNhY;}cW<W*2jaN?q$64_VzIWWo{5k5}ZXR4T9u|GaThR@=T>I8bNAEe8
zO!DH%{qxA5ebV(ffk{p^N^XIyrec4YGrgbj(Cx8bjnKF@b#&Kf{|t*2MxL=nU)RCq
z{?Z&hoUO)MkEqy*&^ve}nQoLt#b;bZrI5E*1?J?%J=CrZI<>El!a6h6Wna!=qQo&l
zDBVRm;gY^p#2}k#3j4Ab62Ix$o3d0A+Gtr}j;{;Neuae^Mz{NWdAw_`yeB?4sQ2sO
zVM2`P`g1Gq&|>uL5|<JH-nP8&U-o`po;YY0#I_bu)Ae=x<J+b_YXa!*MAD6qbXvSO
zy3=NP6{$-<zMBZo=1yGV{PqV4=_W(g@b75SNYeR>JK~(lgADAIv4V~m;ScshMO}U)
zU*M4u_JajX+41s`5_az7sPKDydgu{xORn@=*7MS-9+Rgy_>zh>90o5w;&1SXYD%o(
z`PQ7>Hy&&VAtoXf43&EQ(dUztQt#UDZjVO@^b2evhwq%UES4GLT^uMMFW1)(=#JjA
zD;fd-_)W;X^Oh*E`wOq~FiXRJe3Pnv8Ety#elQ#kVX`7@yIMc{gzGTwgZLQvW0f^%
z%IfP*)F&GZ@_X^zo5lDO)?V&C2*JWVi}}c<63EQ(XvftK`Su(m?Rsk{Bm!Z#ZwpxN
zm&kOxR{?YXjmSYiLMEbbeAC};=pe?|fnv@2uC!2TULS#|Ieouvu=4(mOGoRNyjxhU
z$enr+3(-xD2o<~)(g#E%Ibw4}<B4L~++(il=n=Zt&>9s^_n7#;CJMGod51G41~}q&
zCdd0Lty&RX=M`o4A%s6pbMOzXEmr-EN~;4JTFf7)oY+vNZm3om3C&bk`yfqT5fU($
zRiRE>1|0nCR_f&Np%``0;EOZC$PTBe_8t6a>=f`Q&e{9Ut@cD^CUkFC@(^LtCpd-j
zx*6~_MK<i|E=1Usq9|&^H5BHIA%Z?I=%abYDWx(MZtZ1r6Bn3z8FS*bypcW(W0FFQ
zNYNEmU*1m#_ZH$KkmWb-g56s&$4sA&T2#2U0^lCn8j`Qh;u=3Mk`ph{X6NE!bYtMg
zt1~1*XU-~&iSZn?=nv5C+rhk@0#!jAJ!7=53;iD7GM(#nU5;4>bwog<&A>Ran+7cG
z%CSP-M+Xu5vh4I|q}vAl5EE*x12H%V<^G0Tu;4NLvOb<Prz-rlHXKO3mE5cw(Cmux
z1n0u+scS$nxe7lWqt4=FrzRLt_ypJ-6my=$IFr%=BXpy&=II>h<0sLtV+a>p^?sbI
za@7qGS%TjO-r6T&iTjkM4_$IN4$!%%?3*Qn!VR2_lT0pu<H)m(W&IxP&U17|o62x1
zWqRm&N%f3d$Z=@-#+!O96-?M812|V;idAx#W6GDXdJX?lKjy~zg|Cu(^A(>QpK7hq
z*z!e7MO(cQIfqE?AKU2Aasl=nx37{hNP52@4H|SJg;g`{rON7*!A?y*aLNGajjsw(
zafCt8Yy1fgdfpFSDjm%`il0~5tc4KU{*z7q^pGX1ZXjt?vI{mW8o72DT;A@s%xRC}
z5rnj)JjIHNiB?aj1hmsDLLn!7!8(zoNy0BJ8+hU>Cf^6x$G)rW`fSXi%r3!#uQoWR
zn2xe@0brEb{%7z6RpD2X%|OO%)fH&RaFN<gm7Tv^j&q`Kddo<8ZJ6Ly@j^R8RCkk^
zvV%L_t~T&&IYE895VjbuK!Ag4hT4LrPy2j$JvTl706XPxb$Avb%8s$z$&fK25ejl-
z3kTwx%`|1#r0rJb$RZk!!4Bf<-N(Nlp}_5gj$?DE>l@L|KAv(S(duhN4Hcfpw!*#E
zqBZmsthnXXb|kk|g{2unD0L^>MP=_@?Hj3DXvr$grtUL!62@&^K@-@B^U`Hw%9x#>
zTH|r!>xh)cN+fxl+A6bmhwS?~Kzfod0~#b#5Aq8MNB*?6vRf29_nlEL#}gPdViECp
zRRKMu^xuM9dCQm;^5pnGs|D%hZqE6(^;e$&imH&G!>WZqyR1P_2Doae%~wvBk3pPE
zWnlGrw@eJg0EA1*g99Ael;E~=*Fbs~$WmD~5ND!IhxaIJC=EBy5ERmvQDUKHVV=&Y
zxi4=tg?A##uA%TwEsp{hTpM2MC*YO}dbS1CI4M*aUy75Cw;1x=rrNmFyWE*Npu%4E
zQ)#vFk%Cie!upW5{?Uc~l<HqeFicWm=r)Ara?&}8R5|WMHeYPx7j)s=UTYWN8ah@{
zPej6z*a?l^5o61zQ)$Fn@gXFi#4a+l9el20lDdh^76-@H<9DII?{P*(Hm$D;BTztd
zzTM#BYgKOl`}Zk!a(C_D`w|QAfx@FXg-SwPVD=*nJQrzS3B3vDXiipdz`wUkO-vyq
zpNL$Q=VLDKp-5^a&;Ctr$1?W^CI>^8?C2$xE0)DeVWr?l*BY?)t#y@s=yX+33Tz@O
z0j~>$wq0nIGvUW?T$&nc-*(&6^`d-aDd%{@Ln6UHtB7A%ohaw9vjZeC%Kk7?v6jtz
z%$l8da92d$L7`FU-0;>IsNetv(?P$FuqA^5a|>1ERTbcT`<9-i;2N(m;MdoV3GVlv
z`!TpC&<gV+?7{^L{I>&!nc;s{mVH94DD-qdI+-$Q7sM@I6^;O9iP#JpJ@RY2o&@v&
zP!o0uM-V&ucO)=8?i&bV{T0S)@WwU~UFGX;r7hkMo|9GEGGqJvX@GgE1Z?V<{^(MY
z*E0P4%^s6Qn&iFGJZ*c7dTgQMwyhzrl^tm8`9|SK-xV<`9V9UrELVFr&GHV?X&KLd
zvmDIGX5Y!xkR@Lc2T7&MN{uihg$ETrlVCqYvuE=iUazLd%AccQbxuTlD{Q7g>dt2F
zOhb4*iSo{-q162MDeVj!t7>DbPA)V%;iH@zyrb)k6VE6k+hZ0LTDvNd9t|U7mb4el
zR|B|H&v4QTO~d7~>xqtv7C7(zcBvsx{Kg)K4?`YEtCV|@0Xn3eH$_lP1}t6WwR88?
zBwE8cZKlhgE9B7)C+Pw^ZL4WWJt{`;n%CbAywUy}1wptg>|>c?O$E{$oHKm#M3^=P
z6AkkJ*V$P>Rq-wGn(j^krMnxXyE~MYls-r|a_H_(>6DUAX^`&jZfWU<-gVz!@#(ww
z4(qG~Yt47&W6z%1d-j?A8)|rgmU(UA(72$f%8bKznT`qi^k?BL)8shl?kh43g1+3R
zE;!-x{fEc8U=NZlyeU_<_nf%PH^~0rY#U$s5n}kgZkL-Lz<(X*wyd@8V#EUh$>@JF
z&i(SoICrXMI89At_tH7lS#7d9;<d-){4Y`lS8xl`A!xZtCf#ok%@92`OK&h;v&kDM
zF(*c!&wc%zmYAg%U97KtuPR!BoPKv7Jmm3kMG*GJ<F>ooir?d|bS-`Ff%AUu^@GQ4
zDKfvu!^+u}KLP*kX);0c)whKeetwVh6>*QNmFa5#YlW6q$5Z7t?xPg)FRH_@>K*LX
z_guzC?mBX4>!NGN6s+<9XB$~oECup%ODuurVcnZ*1e*7yNVi#hY3py?%-1!mgza7w
zHRSBCM{aU&bS$qaPhFhJoP-Q6CG!m_@ya;Vc;AsHscxJQ`_<o)Ct>a3Z?TkRgIC*O
z;Bg)I^*`8?JrrIsB+PO&^iiBR=L}TxE{WZ<LBJQgH{D^)E_x92R~VgWb#>%?Nlr`n
z2)_N?4b1fHUYgP6{8+A+IVA0y32K;Vl1ME*vC+r+plB)Vq14Wvdpj~M2k*WfP&(3u
zT@dQMq71aast1gEX_zr&26ysngFC%Yttg}+7e^pxFfO$+-_6d=`}>bqd&uw5hd)&n
z#eE!bt5#>5#k4c!ZH_!~i?=smTb$V$q(6A6p6UYa!tdc?tWqX&G@j#_0H&j%4IpyW
z;q*6?YXS|0_xY6mX6t;4^Ypg&w$k%fo;sb3XMtm6Ug}_P!t~Hgkna9`soo_`TxlSu
zIww=0xG{Ho!H~K^#Xb`RT<?O(h=xyQJkt}j8g9mo4o%Ir`LX#=DC<GB(UqURA0L3W
z!H2cBpR)Mud7enhEyMjbv<b3-ho{TW60o_;n8<19WSLu?c3q9TXMLEL(MyB{6;!;z
zBmaS=9V~g!{AgRphza_^h}O4tDbGpSm1=(k@%UZ)Ov;RN*qpo91YLqjp!3<__(x3~
zaduL0wr3~A+<@Kr#Q+f77jq$uAKxJC7UG#}!%coUa}t}#far_5mz)x9sz&T`YYQ@;
zmr<<%=j%@`*J{{tE0ci>yPZ*ljg}>vGvG}7gdcVPju@mA{QaN^BBWx>hF^Maj9Qcd
zbBFHer|o$XQu4?P|MYQ$X(~2`tpU*?T7Oj}dZzyS_4L=_2_|>5;S-$5mMkH*90TpT
z@F#Myr&3Dnjc&KBmt@$B)|m(93ln$q2<~(8r<^s0HBGnu>jD=ehcd<M7MYq{-6THv
zWLEr&*ZdBp6FmJB^C;Sr+H-@U1JI_^7qSy)!c&zj11^@F;|6Sm`wP?dvK)xr1~**c
zmK>M16UQsl=d)#i*%CklV6}U`%Dxm4_6Vnbx3F9vEMsLnR9SWEj&tgcmA${*edCkE
zhY6MNwa=tEdSmAcj7TIbiMe&ql*18NA<$H^Y)qN#7Bu%g>&{`NfJ_yE_M`|`(lW7^
z6ju$bB6?e(k@;J3Bj#j&daiAUx!!E2S_S07LQ4+r-X51M;o+lY1hbKmUDbte`EaXN
zrrGV6&c7Cw`WGZ-6OHBH#NmH{UZiTjDNoJIO)}R5$JiOR)OMtmfwxM6^2%NT!9`YK
z=}c3XY|q8_2Utj`%1A}9Kj)&<?NVKm@2`sXb7PiW7#5(KEEvPrb02eD8$LrcpZ3ov
zGRq{wI0bc6(N~)QlyE;&8dBEgpw&C&8aQKPe{oxkqsDsyqr7Qt;b)ri%=PW|X6*Z+
zvIyk2q$cB4Z<#1w85a{Z<8@={<32;u7M>eIN5~?ul(_e1GTITB*s(X!U<y_zXLCfU
zwww-IJJ!`Om~3#iya7_6M!EQjtw2%hP5Wlzj!-Cy06`+jtD_6srO=HevqPR0t&X#Q
zgxe6sM17AYo3SB<O*0auhRuXWd@yR06T(s<V#%P?g<F@n%s@9ZJFQAQMQfEEnqX+h
zSE*HCFp(({$#wD#MsU_9CmdXAj7GGaPd}`3LxX69s0y-N$Sjm-QevI|S#hu!``vg@
z=EzBAls21z!=?mTLw%wj`>@A|WOm6%BHNGAFW~6dMKp9`(7IWxn#_*WsVHP<a!D$A
z%#9{E?w;Fi7sm#$a~hgDzv|Ny+kOP%Y=gB4>+;=o&TNVk$uV+VsAh@jUI)#{rb?vd
zBqYZr#Q2+TmJY;Xe`uqKXoiMJtkZUQ#)oh2Y<z{sz<|dx&_8UO8SAc4o87gqt*gvh
zYOs>q*8xF=RdOvCx<bb||Jo}^8Jh=5_#FfdHV^!lx!UFOR4>gptt)S{xnk;<3ywZ}
z!QvlM%-ipKS-X+kvs<?si1y%KYt`vylJS^(1>C?M#nmr+kRmBiJgd{~nyJ^-ZBoLh
zTaMd)Y2W&R@3Ypr7k6vba?j)BY8E}<psjDv7A|X2y>1yvKCxe?{Y3j<2PAkTHRH$7
zU;}I!QXvIY@HNyLnV9Uu6R!|pCt(Ey4*FXJU}h{lAV7}X5=U^&A%nNA%U*hb!MgPT
z;+0gYJ+h7!{-)P^B3R_osc)pu?%90^ZX!Q0!RA5-2B4n;MNK(cSr5Ek=@dg>3x7?4
z81vdq?r<UmLRgwIB7S*pzb(zU5H5_F*-4o|zBu7mq?@#?PzFF)G;ibctuNpBKp6=&
zCQHC*ZNb^mkv;q(KV>=;j=OMQ9dhimH5zF73}K2<oHZk_gCUw3+2(T@>45pldgdwb
z9YL?9h|Sv14hq~wQsYg22O_yXXV#1h$S?w!$q2oAx_i;O*SIF~Obuc|HQuI@^B4jS
zurC)`5<H{^&r{#+DPO!h+&>dk7h?9%G*ponjv`O#;XR*Q@0e!uroMv1nGornTZaIi
z=98Nn&CS}j8KhDbQ=G_1+UPR@_SSt2Ihhp9P+m=jHpY??yyywA>w9kUh5}yF8qyqN
zhC>SS@iXmPVZ@<I$PsHL<suwaAsi*;D%EN`w@RbX*VQG3#K^;Ljk6rc<>X}UK(5L|
z+qt4#YzaxeA{X?OCDG7`7lx8rSZqvZjMHOi58({<D;FDjh4kP?QOHH2f&g&bV^dHZ
zvz>b=%_Y(dyh9}RVhBmp8!jvD!bkg;m9rvzwIYMGQd*D?-BMd99zvYM&y*@oq}x>o
zBT^QM6>c-*z`ydW+f8Y_^wd`wdwu2Vm17#+LUHq)c?LTtyK5MVwA}AGj9!4}s|at5
z=HgcfFD2FyXTM^t6F%Vkg%OD_uW`K}B5%_GPKpvqrd>p721ofu-63c=gsE_yytk!H
z(6aHJRw#rktTpZte2Z5cEr0|EgMl2g60brep`fb+@v;#2)3Dgpji4v&Z5R>sjEh4u
zd0<<Z8~-8M;F7exNFl#z8Y83Ii>%Llf%Ryz5TKTLaz4C=w@rkLG(ia=;`{!a-E1Ic
zu&tlT{MA{`*JVUq^0qc;0Tx-=Ut_UovH|3?$sRKeylHGB6e8|7XyQkz!VATUblXd4
zxlwE`VBAfhM{<#ud}+PNd4&ZLgj7QX9XG0{Oo>gByYqMqb-+@Rm&wk`8&KjhlCjCR
zq2m&rsXC3Mn5+sBh&m(;k{Xs&Y9AX(&-)b2bX4ogXEhcAKhVVPsLSquk-i`tQfLeV
zv;8W+N@gl?#c&?AMkvNgRj6n$*R&qc&H-kd=$JB`MTs^2N$BJF_&YOpv(UzDjP;JZ
zkKne}(b9HqB{s?-=F?}W&XR8F;~7&rXdIm-5Rj;Q)Eus)AgSf?+0PknKvr#L@$^HL
zoOMAcWtt3mp?3ls*CmeKqI-oss}Wss>zmeJs2-*w9YlJv$yVS6#Byy$MTHUW@q}g&
zdo0?3^%KM=oz)M9Cdp8LE>ehk0XIh88|GBzN(f8l+BTg%NY@}I&=km50WB;_RA8%F
zh8YwW;i$a@RRds)LPXa~+vBR)7nuX_I2Y+q^w`Vn&69qM*Z(X<H5a%*W*yZO`&F)z
z1CERgEJ1^f$#~yvs;*aEwJLk?^|Jjo*EoNPExey`L!8e@&F=gM^@8RisPvk21q~vr
zI#{w9!}c@F+a#6JnZPLUvbi`im<yzZ`5osas`e`LIG0y9{sv1&Jmzb%yUB#YU$Qq_
zgLq;3`r^RaE@yV1?}U?|!1^Q$%yG*>#lO9lL7G`{UzxiQE^Rb|TA}~|vKw8``eEZz
ziz&RLp5INflwhR~AZw#Zd)Zrcn9TYt^gE);r^N<0?)I*Z$<3U?+{doC*TY;MgyIiu
zPIKt_eO{F44ro(o<Rf}-x+4=}L7o%|6VGadROHkxArAqbSBpZ%YoB+Pb0T^Hs*@zU
za0PwD%8yA?OGveXlGrPYWC1e1mAxgGsLNt;$cKGXJdfY^de!qT%XO-FTdTbR(Q1It
zR?2#6WQynT)3+13_4wz(pX3u3tw3qL-=@ACc%jie2Rq}hR_>RMf^IpTu;Oz%otoNM
z12yB$Y&~VY4Q6Oz-ciExeseptmwRlto`k(LA7CjGC^Y{bgQEylXYA11kZcOMR$Xr~
zup)S+S}I}Qor0z5QlQom=M(;H-w-djk+A5|vd8JcK{+Me8vmywe7>zHo4lw2ZbFYc
ze6Dt+8pV^6?xB9kn~jA7oW>MNDI6E>^XfU?TE`Dyb`{dSji*$Ex5u^l%Z11-y7g2w
ziiuN5Z%ePgh8>BKkS{IlZb5HfIwtm#IKLE3F#J+a0GkLbOUA#Ha#PaU?i5^f5G_FG
zU~mj=#!fc0Kk-mbs!RQn%rr-$F|#iS%6?4mZ{_}8u%EIvr=Jxc(4~Gc(Jkw^t&yNb
zje=b2yV!|%L|C1Edc#l?byUQOZRiwK<`eB^HPA&_uQIQ=)}l2)(Sb8VTPxdVF4e?b
zOCak6Imt~j2I~ZE9VDt)|51XzNhN8yr=aORbcOrHu3X9$&1$C{;zE01`{UKy#hW+p
zZ%gh{E;VRd9)=v>csxAbsnmSGGq>^4Zek@kz4@U9`AvCvAr4&T_?EE=T;_{M4H<Z+
z*X`!!jsvcjI%tlF9nxW%<c)52r`>a90-x^^Q5aksqbsv4jwt0(j<wMrV$4$kZX=;Y
z$*F=XV}|Ic6wt25RMmU8CPQ0IJ0pFk2r?HIS5$LoYe{vDF?vJ&+E^k>g!-ZSmNBz{
zYjq#O8Bvo195bkrU~Abx%_$E6vo3geYF)E<>Bot5$B+u`m&hE#i%6H#mTxQq&Z!6V
zt~el^U$+Md+$MUtG7!Jl`SNzC!rA#)ZHGY$HDR6icGIQwtD92C+AHQ#2{)m_U}_!@
zA6I@+{&rafNN3HXpc_V^)@Fek85diflU&*(YQDH#FOfn=FMt%%iN4Yrwd>IeyRxv9
z`@tAc2z1i{=p^}u+h|$fgFb;B)r@~?0fKdx27q--=r}MrukKpQN>S7O!l8xib)ju1
zG>2Co=9ZQ?#aK8WUac{&Ru~4``d3Z@8)r`cqYb2fKmMV|Y3B2j{qA4qRfaO&l?0n@
zFy36V9C|Vfrz(Xx<p>XkmzZw7&7<FdhBi7+<uqrm(@pDpjW${*_y#6uy49WM`dtT-
z+|0?~j*nf~n16JKxkt~&?5pidT1?s=M*e1`jp|E)^oDtYx6@F$4J55Y68z=81&6m|
z9YW11hAayb>_N44fl^VVG`|XsF;!8{xaPqY`OJ9N@oZ4&{mCnM(C~6O19aI``c?nO
zv34l>4PTAg80<zm1A}EJUa?$li$m8EQc2lFt=zh+h(2CtnyXiE9#9tpL%K@`sybCp
zd1kAFaI+=Mf$>%0q3dKBpQy%OG~ccs5!?$VhPl!szrUYbu{1lW5V+$CNZ(r{L$cD4
z<DX~c*40IVJ`{^dW=CrI)bL(q>;1RA7220uy#%1j{Xl8HZ{?V@@J3$k?aKF?1E_dg
z7R`(z&s@DWy6?ZW;Q_uy>V+rYh_%N&aHy?Q2m!>Y4HUb<FU#}cY0=~kqCearoJ50o
zdwv82nesi}0qfX1+(sA%X#apGy-(mxwURKeoO#s&ahN5L>oMuo;&%F$Sw%Qo-UDXO
zlo)*#x?Nz8fS+(Vcd#gGN4f=>p>bDIv(y4FUh>PGv!#F4oLcpP_zs1AhR%!y)1oRv
zuJPdX<5YLXl$M*=1NCY5LLfn)zIH7M?qdZkDt(9jZWZBhH9TRulNDWD!z+DJvK79s
zlhqb;HPV%moj#_8w5nzU2(<tfc7-3HMmmhJOp6_Va++(i(_}yu!@Y@BLZ`Kz0$Ft(
zj;--ZEf57)|9lmUx`44d%1W@jmZb&#Zucs3s&sQ25>xw3`c_P=g&D09tI*W5Pg9U)
zoM}<_aG94}&?tY%DJv%4>cF;Z#*E-pCxqn|la6fzy4_(Cyj+=&3KLh%x|Pg@aiJ8N
z`a#NXSCCe?(L=_^FW8rXIUDOH3E_CE3V|(?n~eSX7>#t~9S{a~1oEJ6Y1BARbX^}6
z?Z_!Ao`6e4qD`#@;n<5CqeZ~4_Twf%v#=t|PK|jS5=SVz6N!%4x1ohxm<PRAp-i}D
z)f3@MRVp;Pelywg-NQ|V<q((k=l;6sjjh_W_Kfp{8RpO1!b)Fukgc?3R9%mb>EA55
zc#N%;VKJ>^4VAunpP;WRK(99X!aU!T0S6%FQ-jqfHs5Y8d=b=e(W_;fzRwz<=<nV>
z;u60<0^swsQUqz&vvLVPi^Rs=7FAj?{vzA^YUs5a#V(78G_l{2D4<MspMb%#_mpde
z2H%dqh-I_i@SL*o6JhMYZs4@%29+@zkj<-;`}M|_<-}kI0Tn5Ck2KMy!Q<&*X;^Qz
zZ-As6hLJ$YnHp@ZivUi@a-(!rL2dRvK<fC^Ww=db(niqFjtphX&5zs=K=Mv@zl)ML
zIylg^Itnpt#72#7*DW@v7v$cuQ~oRoPovIo2~X_{IHF)ojeGx@XN)u3C^aedmb+jk
zQFlg&+FQ=?IGg;rJ|bY1@zlF;1YS>Z_H~Xz8){K^s&KysXVO(~j853Zd8r#w)%<7D
z1qp|_#3J<Ym`sKrl1P`m<M&`piXd{1OF=|e<EDkqI0&Rxu{UF9l6~<QJ{4QMs-JeU
zCV3!4+0nV#+PQnXWR*|;Y10$KKv<O?TlQMYRw%hcNNg17b5dfx1-@s;iv7ia`;8M2
ziQmEO(l6YXPbgyMZ8##4)wTYc5z97+6@_{dim9Zy#X*w8N+9=_Z0-4(++nFi5~h&&
z`Rag|xCr04!V|pHme5{6N9cZC@XB&#tEo8i{Q~K6iChMS-AJZ-C}ZR;qvOW&e3pSn
z8`Zl@2r3ft1X(u#Wol{*XI+A?A>@G$oDS&oy2Z=cp?Wh1p#!{mkYq<O*$qx8hKY}U
zbN@oyYoVzFYsSc709F2qD_kuL*WM*MSyNhid6xs(oiPny+lHs#+vh@1mapb!6{EM2
zO3)E)+kT0?*wuC!7yuJxEqYt>ej^qAg!`?NcWX&Tl@@I1{w7>pFT86w!&+>_c-h>|
z1xz+mCsur-Cd%{AM{%AYlJHn5cHsmTlB&<3SCO^q*V6NmdO%JTVz4(C)`>6Hz{CNH
zM#1IfV=^F^H!;jA8~DTXEs02_9ADaBO|q!+7%HAa30f(Tl?r^Skm^bh!b~0v!e3@%
zOmwU7^uttDn$n_iRLdU2vkQqyo>~e3NM0O3ispT$PWCEQt%;XqlXgzVHi>%tmMROU
zX(qS<<`izyOL`1mjb@Ida(nLuQL%5P8-CCf7<he~UJYqKyq{6fi48;^c=YBsxbl2_
z<N8d0aoU+xS^Xe{%&*Bcr6ls4VH^c6D~M39jigC0E9|`*Phth;>#WT=bVVE8wa{|)
z!=>YBRS@7N1-RnHX^T3S>!E54zjSruj1^8;*O+2r8KOEZno;#7yb@6*++sC1iN|pF
zZW8j@Xeb_%)IoO~Fbm9iBl)V*c==V(xjK1pf8&z-2N_5#iE4Q|wIxbd!_>?KPFR#x
zUl{T|#M>n_2E$oo-Sx^q{tuXi`R?Cpd?DM(z<Y$TRO41w2Oj65H$5wg*X<B!eBB9;
zqXqg3L}rnyIeDRi1Q?RGcFqE{Jp{e=*Outrt5d^wrql@V2&9Yud=uw{xneLZE663#
zAzf6sxGRgokRgR%k?-=U7j=_Z2K{)H*SFQBS3TE!G8lSt)gI9nNAFv-5GHdw<VCQj
zpfWO_EvYn+<T&`98r*>8SA|B5;JcGL@yCk<P*G-4iwcfZVs4e=1sz7~3~~JOZ6cm&
zF0q#cHf}50k;J;KHol`C4xb9uZh{RA(`~VAoXO0s!u;J_fLf8Zlx4ydaMK@@>P9;h
zs9#$stF+W+t5`jwUo6^-qp7#s%Jd<ojVP`VH}lql<vo!geGSjsicjGg9IPu+GHzIK
z6%{h1T8GBc5>+&OjTIjB0fZr$zQ+MJo$>IVcNM5iOmz~`OQj6XrjGf|*P@MTqL&7@
z)}l!b%&d49mz%cXT}hfR=-@)J<mOPD*09xPe&~q1V4Cz>K#D(55Rx%+-%M~;Dh@Yc
z89Gz1pwr}w@Q9M~2^N`gizbGqXrIlDMrJo8j~S(MhjUNF;3fp8?{U3DTHsXEnG?&Z
zjg78eMm+x6mp!xBd(naJ?abOCacNd?b#!%KLm*Xr$JOqGsHNggE2>iPqhF+AYpZ{(
ztCe9GdFEg>DykL~<)q976d%1JABPQgmlA%lp|~8pX(U(Cw}a~_5=TF;2cPWEO-3vy
zu#XA5GUzqI+xYs>WD765*~BSm{QMp8OCQxbP8{#*OTrxWL`+Ap%$AgE^+a_VFt@Ns
zx<Y*G?0Uk=I7mv43a-yxJz%16A+(}0Ep4r!rBJ;EP!6cEf@cB>a3k1WN&zLfd3XNn
zLc_J#p`4{Dj_MVeeL(CN*6D_Is4iX3wmD+J)3_HJkb+h8-iNj4VW=^h%2@?BU4(^(
zWWBy2H@Q&zakMiYxdtx%;iD=+qu`=cQg0}w6kRxn@mBfRG|WnLK9{~0HJ1!-PR)T6
zGq0jqv~ikkNj9@^QM`f7a=k|0qi?c8;bIq><lWXofaiQeehbTVLN^h7>SBY|-b!Fa
zo2!KCP;qmGQ(e(83w<wfR0l&2qYRc@8HAzVG)8w7h_2j+e~On!jiO!pmd2lP<vw3F
zErQv+;5-7=X0kmhGkP;nXFRA#puGLQzK||3PISUcr#T0bVb)ct_8Kjv<2?J5+$EZR
zpKS}b+wo=Ju@TagOucB_YQ9V~^qDwk=kpNJkIVxX>J^q+F{D$43P_Xuk;zA4{$n5J
zc=8iYQV+oQt2%GTXlkI!j=c>Lm+Vu}+lT$epiZ<0Ial}XS_1H$*41JU2}c&s6c=bu
zI>l4V(rBGvug`G^Oj&6OAeVYxnxR}i{cdepVXt=s1_VUuaSqAjly?wud(&S+&b6g&
zXC+XYZ(jG?92?Q?0i7N%iuI!`s`rCvoSGcy3z!fX@gh{B%4DlATCBna2r*D2jQjfr
z$dFhNLdTQR?(1*%X6N!&Jb4)TmrIoS*;(%r81oJsYR8HQ!rKldH@+PtXU$qsP>8R4
z4^2B~NhSeYSq<gBal<|%xnn#Vl#?eQAgH33F&P^qX_(S#5w9<i_bVBKaa<lELR{fy
zmF4Do3B+6zl_**;7ItC5%+SSHe2(fg0pN6PJXwHV)boh;i%Dr9p(w^iaOGOdQ}4(S
ze#M|QA_pv^2<Lh+3A_s284=f248I~W7HrH;Op8w8NTZ*7=aL0_o?OhWYk8~;NBZ3L
zt2^QlH+M2Um!CR#+_hM_M&+tMP+Isz0Gi}mg8GP5Cv~HgSZDQF+s?Wp#ha=zr<ss)
zCll&L?pm(Zk|x`9W=PkqdT%3}z;d->`WFx~uM)^zmq!i;G05r>wo1@__%`HfCnrYP
zl+zpg%|x&D*_>;*;il`j-`&ZeW<|o|(_#YHfp%9QhnsCdQ8g94;8p_N@c@4#xXVRg
z_fWdlQaUEdXr;Vd&*R}?Rd@?|x?@1|+}q5U>JAH{e!0m5X17EFU-;D;L+vN2)VPJB
zZ-QYe)XfH>W5a#y+l|bvxXtq2W-;y;1{CH}g$-&4QGWefb`exd7ViQpy0ID4#J9hu
zdAkSEn=~nu(@Yeqj?+MnO7dKux834Ke>SizZ;<ED^ajN_AzVg|PS#-f%q^JCO=yPV
zDLayztayeDbD&J|H6J<G7Qq%<98)W;#hGHCW=>i*=R~`%%)fM6vL@@=wijd9!$q;T
z0gujqmY@5)Bk$9<aZK%WtcOTTr!?Crg`zt;ayjoak3b`>%W=$Wk{#hG5e!a@{g@2E
zc|qPdvxaD2N!-UMqc6B=5|tl$TmzRPrp~gF+8E4SO3>fZja_RowIKRADCZ61;eU1I
zTh_aH`F6pdt|pk}wEeSjO1hv~o+LKgvB$|lq9c^f%sj=!2n8gv+pRtaZQuL%3w#BY
z-rjOMW(ZKJN}$D|Q*{c;R_ZIQZX;B&la6On*cm+-^OW?+E;%fQ9MB34u%#**HzRbi
zM8{O;;x%??BI*XE;x#HDCokDy?4-x^%EsIM0XwW|&uAt-EsRb&VpW5x4Q?cYeXY3m
zsaYEt?V_}s`vhZ1h{>c1T+lmX?}oan7|}FUQ*6qkbx$!r)cAIhHN-8gcn80EMmS$Z
zI$IMVqL&|9C93~&JbD({raf5QM3uCc9&-M{lP87z^cm>{$Z~QlWEp)@o_-6DTXv2{
zaoiUdYvk33QM^s8jJO%qK|H@!1dw<4t3KT4I3R_U@6mOGEAOq)EoOqD1$bwbRFc3>
zeIbd~>(Yd;3*>76cuZt^kRF~?usFT%T%)3fcN@Z2EojeUs9t8kOD?aUxZf-TBeK~}
zc&3)_TW^yPd9hDeE5<~-^p@=TmL9;JrKFX?vR+!_?l;+@&vWeBd*+L%di87(u&CXp
zgM7iv<R?2lDiOsmuM{eHXNoeR5^T0x5B!`v&R!r?ggQNsqdOM0K!ZB1_2N=M*S2#7
z4>*A7%;v8%l?^v5iAiKcG+I~m4Qnc9kr8$J)*fqsMuu29=Pnt9J?EU@an&vq;DA=3
zqMG^n-W>)|7J_}F7Y}8+U#dqy_q48`6vm<ujJ<T8oz#N3Za}`6doLHC3ih_~P^fM7
zFe6~}r4n~MzVo*oOV@S)$;Ts22;gdPNU!D4ma6N*8T;sLi!6)@!T1|qFrQm?Jfkk*
zexvtH@!;n&r<;~NV{=-U&NmGoy805Wy*r8|8tZ$~lerC(X`w1dIAoP!it@Zfm+WL$
zz2oH-A|C6OY~=c;sG2`VWE$beyX|D+UPOhOEna$KQRv8ZC`rJ$66*7Ot0ZnPildZf
zTkg-;$=S6;N9jVF0dW+cH$3R_<FU~j%ukQiry^+wlV>VTPj<Rd`MISlT0AbC!?_9E
z9oGjov2s<%Xts>b!4p45p?$NXw>Bfqn(GDqda0}4I~WrigEX>}=BS&vkB^h;Q9XPH
zu{KU~V*17!8*8T<r5vOK>;eluV$!1n3<X|*R#(*fqc4)tv_IKQ1j<cWzpHMu8hZ&3
z7Nd2KtysZFwr_xmsV-^bD*BD7M$l`_ZP&V0z4ZPhl=69@z6Sju7IS7BXp(}EtlrO4
zSK=W-M%xbMw0o3?RyXN$R-qKFfziRnb@hI;2UtiIuI|#2@Rnm*Cb9ZC7DXmn^}M*Z
zSMoi{oK3x(7A=6FT6|X<7x{RyF|K|OYiDqulkOPqN^Aj!21p;w1IXE6>qWj%69zP?
zX#dAaI|lQ~HP~-PbUrjWy*Nl8X$jC3|D-WOM4QU_ZVKKEJp$tzyAXu15<4;@_L2c`
z)U1t|-;NTA3;X3Bg}Ie|qWw89!WrXmd%~W8WqCR_u~Hv9F{)~?=`qKV-n@rsFwyk_
zG5G}6q)nd27!^aSI03jj!Zt@#>ZNPvZM6xomelRO7gjx7c5QPx`aojX^%QFjiB3#~
zG6V~pPHg_OoBab!h)d}Q&P{%hsvgSjfcXF|MJth<QA5<KgX?DmVwt226y&}b%o0Rd
z5kg{IlGf1Zg5?$neO*o{QS<}?f$hX}p_R=BGtc5e4=iUADldNgs`veGMgGE2bSDBm
zVSI>N;J^~>_56w#zVf<Bf*N}qVsVKk`-P3d+XGg~FQeH+sU{8wDM75DXl0D+a>xJ@
zqICCd<%QD%=<&R<mG^qP;Kt#ZsF!5tJPA^`1N;wW+V8oow3;7AJ*|fjYhga1=nhOs
zxy&#ITAKQ4SI8zOh-!Yy7>3)d<AaWP`9+41qW*1ys5XP9QKq?SgIYP_oG1T)Qk6zU
zhnw(NQMC~smfN`AI5Y!kwp=o5Um0tY8ucvWux#TSW*Ut;ecZ3?h&+_%*Tl`i0S}G~
z>@P^M7^|XGtNR#7jWadbnFLoW06^Ate&VkOv!-K~!sNc_%`dN?OqYkt{m=pX*b{o}
z6#eU&FQ#wb+S?ilTUl7y7#M<hJqG$bCQ$#9PdzM#A^Lsw@2~Iqo-(F@f2}WQW25K%
z2!TmTO8$lU-tkhfG6mTE*vMa?pWVI(VT=6a#`GV^ec#Zpa^I={j~&YIc7LG$rpNpT
zy^SmOf`1qH?|MI|hldC7C#Cl@_5bku6ZSVjmj6lc2ld|z{t5e=AnP9lf3AJMm*98m
zzu&=sp#G-E_CM);r~Z4rKTv<uWB;G@zEl6b-XAF8{(-{Bhe?50JieYDy&Tc{KTa*f
z;7_ai-*+#^|0MVm1qy}%^5+L$J(~VlDuLhMe!enPkp7i?n$iC+4g{nU=>PaX|B~4M
z6nz?x{0}OQ_7nOeEcq$>H0t*swg&wt_DAsVQ}$_g=RYj*v!B=>NuE#Hry+a)uvO20
zVt+*LJ!PL}%>Bcjy!eUzkvR91eVPIG4;x1K6Z<0(>?!*+2<9KQ^D({j|L&q6u`o~B
zr&$yKuxZpku|JY0p0ZEx-~EU66a0z&aX0T%_UZV<KkTa3Z=)4Y;h)b32>&J@-z$M<
zM!z<mPsyJTy6-Lezn4lN#oMP%=-=4y=i`4bl|ao$_DMVc6#iNH`#Iv@OC>Pk5&osU
ze~SL>{Ofi*esgB}8~nXN{r6G{y!u`GH~P=k4934&Ge6z%&n@|{)&`I0ubq{@!oON4
zKEh9m`ZxN|*27P%S^jft2$QGQe}#Xw=6ZymSpP=<+1mP%{<(&*KDGXH4axb<`mgY>
z*0aA`|3?4W8pZTiYqtN~TI3P^wTAo^{?*#~5q?tEztMlTE`4In{-0Z~{bv1F_*d&^
zX1`hgMnCOm{BtbJJ<>nd5RU)c+UF7dwXFXN|7u<LyY(Xt3H9BK^zp|P1_b2jaUB#8
QF&iTzVL=hXe|I(h4}450GXMYp

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/JetBreakup2.stl b/apps/cpu/Multiphase/backup/JetBreakup2.stl
new file mode 100644
index 0000000000000000000000000000000000000000..3c36f67113ef3741bbe0f8526dfe5efaf635f1ec
GIT binary patch
literal 11384
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
N#&|^oEkxS6{{j2D`0D@w

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/JetBreakup3.FCStd b/apps/cpu/Multiphase/backup/JetBreakup3.FCStd
new file mode 100644
index 0000000000000000000000000000000000000000..beaf8c0e46fe33f5d006d98e3a96214ba09f2bbb
GIT binary patch
literal 28673
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
QiP#z$3GxdO{4;6)KS-C%9smFU

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/JetBreakup3.stl b/apps/cpu/Multiphase/backup/JetBreakup3.stl
new file mode 100644
index 0000000000000000000000000000000000000000..a7f77cbf00ea06646ff3b8e6cfddec6be7eea3b4
GIT binary patch
literal 11384
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

literal 0
HcmV?d00001

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 000000000..b5a8a9eac
--- /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 000000000..b4a6b3478
--- /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 000000000..33333fc0d
--- /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 000000000..9f2800898
--- /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 000000000..18651e4a5
--- /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 000000000..a5d20b94a
--- /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 000000000..5795ec610
--- /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 000000000..f0d610480
--- /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 000000000..3f19b6657
--- /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 000000000..eae4ab93d
--- /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 000000000..1cdf5905c
--- /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 000000000..e69de29bb
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 000000000..498d91ff8
--- /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 000000000..caa02fe7a
--- /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
GIT binary patch
literal 14928
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
E1zd9#M*si-

literal 0
HcmV?d00001

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
GIT binary patch
literal 4308
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
Tw1)|B6K!XA{hAu@FB|<Ip${h%

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/T-Junction.ast b/apps/cpu/Multiphase/backup/T-Junction.ast
new file mode 100644
index 000000000..9abee7d99
--- /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
GIT binary patch
literal 14984
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

literal 0
HcmV?d00001

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 000000000..34aa746a2
--- /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
GIT binary patch
literal 11826
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

literal 0
HcmV?d00001

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
GIT binary patch
literal 15084
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
GLH`#TDig*4

literal 0
HcmV?d00001

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
GIT binary patch
literal 11785
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
E13zR&tpET3

literal 0
HcmV?d00001

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
GIT binary patch
literal 28884
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
CIvURa

literal 0
HcmV?d00001

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
GIT binary patch
literal 26284
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
KQmhj8{{H}?;}(?w

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/aaaa.stl b/apps/cpu/Multiphase/backup/aaaa.stl
new file mode 100644
index 0000000000000000000000000000000000000000..012423f0625912bb76dcae9c5040a1dcad1d2bda
GIT binary patch
literal 2684
zcmb`HF^&{L3`INU1RE2PkZq1wgha9tmzl664mLvCkVD~T*LVNw?qL&3+UdV8zi+#`
zW?sMl{PFqqzkPgo-h7RF{P$(sp1#)eHlM_nzlN@eOM1&paR)z$KeLwT?VkkQIFUNt
z2i~zhh2N!b>~}mfuZY{EHTB*VhzMm-T^eGk-Pw@J5+Q%Z^Zz0S`9%<YMA+o_BIL=F
zPDCqyCaA96D<b#OTyN0{X?z!Ywo`BN?f2TrQ)Fi+(PejdB0NiaaY|y~G1k-7JNWpr
z$I-Qt2ubhq6`?tZp9y*uAx)O(12Og;O)L6L&>JUwi^_NhF`mD5z0@;K>RckGuM_TM
z*+{D6MZZ?BwapP7u|zP36N;Y+{8d9*r`z%L*1fvQdO+aKiYJp(otrUFp|y1dF?Ir9
zC)_ErVyUa;#@S4YTa9~>+M$NeBwd93VVsaY&a`*rglD<V+9c{1sBZ>Yyg{9nH1S%a
z&Z-H#loh(;2Ld=qe1C=4a>Hl*Ovo2PnyiJ+wz8{G%6e3Tcu$>@ZxNk^Z}yJ%IqIzB
z53KK<6Vl9AM4I3EtghU5*2`|CD^u^CIgW(7x+a$ITFgLJPCGT{R_j=U9o5shy<fu#
zvb&zj)ZL05&V(9%cSY=7fsN_oglni1;qRm8h^&5_?-QzVo2Onxb~9=m?QlM5C(x&R
w)t!h??@pIDpVVT9tn`X!`-bi~$+<*$mh|G(zg3A%-<;5Wz21qS`Xhq)Uq5t5*8l(j

literal 0
HcmV?d00001

diff --git a/apps/cpu/Multiphase/backup/dd.ast b/apps/cpu/Multiphase/backup/dd.ast
new file mode 100644
index 000000000..b95f8748a
--- /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
GIT binary patch
literal 1484
zcmb`HO-=(b4282sJpy~!aE7KxNNl>|B0WNm(oKO|klD>~I0EnaZ#<JhVu2-hGWPpy
zCuw_rd3$|2|J%pieWA54_^p)wUdsGX%C*9KDThaW%KFpd$gPR2nm>$y>aZe6(b(&H
zTIycdubVSobxo}riLA;KN~M~Kb_CTBNwszfP-;$O)rI?jLfk9i9oFQtkjkpO^XOew
zyAU}u5MBG38oQ=tRXzo&)CZy=;-_2J=N55LdJlZk@>E>U<`M5y@gCfAW=jY?QMn~N
zBLoyPJXhKwvZ_N(Kf$Z6M`CqrR8tAU_cRimA|^?Me=A2qGG3Q7C;D>_>1TvjDq%dc
z?`NIJr}7CU&OTGfu^=Jc5e>prBjI-v1eCExh3JjAnh<TB*(E?5am2G3fjYlVwe%nX
zle$|1@39Xhnuz5$7z8pg)kr8HM6NXu6Q-3O@~>c2oC&f)=k-F^WI-Sk>kaV(*`ijR

literal 0
HcmV?d00001

diff --git a/src/basics/geometry3d/GbTriFaceMesh3D.cpp b/src/basics/geometry3d/GbTriFaceMesh3D.cpp
index 9c098f14c..3615cff63 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 7f574bdf0..eb7fc1a9f 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 f90e05e07..0a666a932 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 61b427e32..69543bc6d 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 734aa9342..518ea9fac 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 84ba7a604..f59a89949 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 000000000..7ea78b526
--- /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, rho, 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 000000000..037ee6f50
--- /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 000000000..e8a3fa794
--- /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 000000000..1a34c931d
--- /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 000000000..436f67229
--- /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 000000000..3d89df927
--- /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 000000000..c288aff3e
--- /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 000000000..29025a89d
--- /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 000000000..c840f1cb8
--- /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 000000000..869940099
--- /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 70d7c438e..b9ec65974 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/ThixotropyFullVectorConnector.cpp b/src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullVectorConnector.cpp
index 89950b25e..9d4cb41aa 100644
--- a/src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullVectorConnector.cpp
+++ b/src/cpu/VirtualFluidsCore/Connectors/ThixotropyFullVectorConnector.cpp
@@ -30,7 +30,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:
diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.cpp b/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.cpp
index d75c90c9d..bd6d46c2b 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 72951922a..a3eb85e37 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 6f8a6e746..5e762c68b 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 4930beeab..9b8c36817 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 1a13aa008..c456be678 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 a9214673e..21752cc48 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 199d2cf87..1d37e4a09 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 ee61b8f73..94c3bf2a7 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 365373c09..280562ebf 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 04e9fe233..036b35379 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 54d3b32b2..4dec63758 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 3436dd584..7a19f156e 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 874a24fbb..5e88242fa 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 7b3e1e4cc..8f8c37645 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 979476eb4..15e6f1ddd 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 6a7256997..554fc6614 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 1d387655b..f3d168733 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 be29589b9..5c3e06765 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 1da1a07ea..6076eb018 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 000000000..09c43e97b
--- /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 000000000..dd9963706
--- /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 a673f473e..26355a6f8 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 000000000..f3bd4f954
--- /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 000000000..7ff93af25
--- /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 bc1e7d11d..aba67e674 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 000000000..f609d7af1
--- /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 000000000..05adc07ce
--- /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 73431d928..b10151a9d 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 72a81d60f..f9be89177 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/SetKernelBlockVisitorMultiphase.cpp b/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitorMultiphase.cpp
new file mode 100644
index 000000000..d3cbcb145
--- /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 000000000..0874f665e
--- /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
-- 
GitLab