From d202737319243a39422449c62f8c7f5abbff01f4 Mon Sep 17 00:00:00 2001
From: Kutscher <kutscher@irmb.tu-bs.de>
Date: Wed, 15 Nov 2023 15:13:07 +0100
Subject: [PATCH] refactoring of kernels

---
 apps/cpu/ConvectionOfVortex/cov.cpp           |    6 +-
 apps/cpu/LaminarTubeFlow/ltf.cpp              |    2 +-
 apps/cpu/PoiseuilleFlow/pf1.cpp               |    2 +-
 apps/cpu/ViskomatXL/viskomat.cpp              |    4 +-
 apps/cpu/rheometer/rheometer.cpp              |    4 +-
 apps/cpu/sphere/sphere.cpp                    |    4 +-
 src/cpu/VirtualFluids.h                       |   18 +-
 ....cpp => B92IncompressibleNavierStokes.cpp} |   18 +-
 ...rnel.h => B92IncompressibleNavierStokes.h} |   18 +-
 src/cpu/core/LBM/BasicLBMKernel.cpp           |   57 -
 src/cpu/core/LBM/BasicLBMKernel.h             |   25 -
 ...ibleCumulant4thOrderViscosityLBMKernel.cpp | 1076 ---------
 ...ssibleCumulant4thOrderViscosityLBMKernel.h |   51 -
 src/cpu/core/LBM/CumulantK17LBMKernel.cpp     |  639 ------
 src/cpu/core/LBM/CumulantK17LBMKernel.h       |   76 -
 src/cpu/core/LBM/CumulantLBMKernel.cpp        | 1966 -----------------
 src/cpu/core/LBM/CumulantLBMKernel.h          |   55 -
 ...ssibleCumulantWithSpongeLayerLBMKernel.cpp | 1012 ---------
 ...ressibleCumulantWithSpongeLayerLBMKernel.h |   42 -
 src/cpu/core/LBM/InitDensityLBMKernel.cpp     | 1075 ---------
 src/cpu/core/LBM/InitDensityLBMKernel.h       |   31 -
 src/cpu/core/LBM/{ => Interpolation}/ICell.h  |    0
 ...el.cpp => K15CompressibleNavierStokes.cpp} |  156 +-
 ...Kernel.h => K15CompressibleNavierStokes.h} |   10 +-
 ....cpp => K16IncompressibleNavierStokes.cpp} |   24 +-
 ...rnel.h => K16IncompressibleNavierStokes.h} |   10 +-
 src/cpu/core/LBM/LBMKernelETD3Q27BGK.cpp      |  303 ---
 src/cpu/core/LBM/LBMKernelETD3Q27BGK.h        |   36 -
 .../InitDistributionsFromFileBlockVisitor.cpp |  241 --
 .../InitDistributionsFromFileBlockVisitor.h   |   25 -
 30 files changed, 73 insertions(+), 6913 deletions(-)
 rename src/cpu/core/LBM/{BGKLBMKernel.cpp => B92IncompressibleNavierStokes.cpp} (96%)
 rename src/cpu/core/LBM/{BGKLBMKernel.h => B92IncompressibleNavierStokes.h} (64%)
 delete mode 100644 src/cpu/core/LBM/BasicLBMKernel.cpp
 delete mode 100644 src/cpu/core/LBM/BasicLBMKernel.h
 delete mode 100644 src/cpu/core/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp
 delete mode 100644 src/cpu/core/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h
 delete mode 100644 src/cpu/core/LBM/CumulantK17LBMKernel.cpp
 delete mode 100644 src/cpu/core/LBM/CumulantK17LBMKernel.h
 delete mode 100644 src/cpu/core/LBM/CumulantLBMKernel.cpp
 delete mode 100644 src/cpu/core/LBM/CumulantLBMKernel.h
 delete mode 100644 src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp
 delete mode 100644 src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h
 delete mode 100644 src/cpu/core/LBM/InitDensityLBMKernel.cpp
 delete mode 100644 src/cpu/core/LBM/InitDensityLBMKernel.h
 rename src/cpu/core/LBM/{ => Interpolation}/ICell.h (100%)
 rename src/cpu/core/LBM/{CompressibleCumulantLBMKernel.cpp => K15CompressibleNavierStokes.cpp} (84%)
 rename src/cpu/core/LBM/{CompressibleCumulantLBMKernel.h => K15CompressibleNavierStokes.h} (85%)
 rename src/cpu/core/LBM/{IncompressibleCumulantLBMKernel.cpp => K16IncompressibleNavierStokes.cpp} (98%)
 rename src/cpu/core/LBM/{IncompressibleCumulantLBMKernel.h => K16IncompressibleNavierStokes.h} (83%)
 delete mode 100644 src/cpu/core/LBM/LBMKernelETD3Q27BGK.cpp
 delete mode 100644 src/cpu/core/LBM/LBMKernelETD3Q27BGK.h
 delete mode 100644 src/cpu/core/Visitors/InitDistributionsFromFileBlockVisitor.cpp
 delete mode 100644 src/cpu/core/Visitors/InitDistributionsFromFileBlockVisitor.h

diff --git a/apps/cpu/ConvectionOfVortex/cov.cpp b/apps/cpu/ConvectionOfVortex/cov.cpp
index 6aebd9947..3867ed9a3 100644
--- a/apps/cpu/ConvectionOfVortex/cov.cpp
+++ b/apps/cpu/ConvectionOfVortex/cov.cpp
@@ -205,10 +205,8 @@ void run()
       }
 
 
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel());
-      //dynamicPointerCast<CompressibleCumulant4thOrderViscosityLBMKernel>(kernel)->setBulkViscosity(10.0*nuLB);
-      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel());
-      //dynamicPointerCast<CompressibleCumulantLBMKernel>(kernel)->setBulkOmegaToOmega(true);
+      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new K15CompressibleNavierStokes());
+      //dynamicPointerCast<K15CompressibleNavierStokes>(kernel)->setBulkOmegaToOmega(true);
       //
       SPtr<BCSet> bcSet(new BCSet());
 
diff --git a/apps/cpu/LaminarTubeFlow/ltf.cpp b/apps/cpu/LaminarTubeFlow/ltf.cpp
index 918bf7753..d03b14b0a 100644
--- a/apps/cpu/LaminarTubeFlow/ltf.cpp
+++ b/apps/cpu/LaminarTubeFlow/ltf.cpp
@@ -102,7 +102,7 @@ void run(string configname)
       //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel());
       //double bulckViscosity = 3700*nuLB;
       //dynamicPointerCast<CompressibleCumulant4thOrderViscosityLBMKernel>(kernel)->setBulkViscosity(bulckViscosity);
-      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CumulantK17LBMKernel());
+      SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new K17CompressibleNavierStokes());
       kernel->setBCSet(bcProc);
       kernel->setBCSet(bcProc);
 
diff --git a/apps/cpu/PoiseuilleFlow/pf1.cpp b/apps/cpu/PoiseuilleFlow/pf1.cpp
index 78446e981..393393e71 100644
--- a/apps/cpu/PoiseuilleFlow/pf1.cpp
+++ b/apps/cpu/PoiseuilleFlow/pf1.cpp
@@ -114,7 +114,7 @@ void pf1()
 
    //LBM kernel definition
    SPtr<LBMKernel> kernel;
-   kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel());
+   kernel = SPtr<LBMKernel>(new K16IncompressibleNavierStokes());
    SPtr<BCSet> bcProc(new BCSet());
    kernel->setBCSet(bcProc);
 
diff --git a/apps/cpu/ViskomatXL/viskomat.cpp b/apps/cpu/ViskomatXL/viskomat.cpp
index e02b8ff51..563e95a6b 100644
--- a/apps/cpu/ViskomatXL/viskomat.cpp
+++ b/apps/cpu/ViskomatXL/viskomat.cpp
@@ -166,10 +166,10 @@ void bflow(string configname)
       SPtr<BCSet> bcProc;
       bcProc = SPtr<BCSet>(new BCSet());
 
-      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new BGKLBMKernel());
+      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new B92IncompressibleNavierStokes());
       //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CumulantLBMKernel());
       //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel());
-      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel()); 
+      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new K16IncompressibleNavierStokes()); 
       //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CumulantK17LBMKernel()); 
       SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new RheologyBinghamModelLBMKernel());
       //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new HerschelBulkleyModelLBMKernel());
diff --git a/apps/cpu/rheometer/rheometer.cpp b/apps/cpu/rheometer/rheometer.cpp
index a7528b8c3..c57bc8c1f 100644
--- a/apps/cpu/rheometer/rheometer.cpp
+++ b/apps/cpu/rheometer/rheometer.cpp
@@ -198,8 +198,8 @@ void bflow(string configname)
       SPtr<BCSet> bcProc;
       bcProc = SPtr<BCSet>(new BCSet());
 
-      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new BGKLBMKernel());
-      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new IncompressibleCumulantLBMKernel());
+      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new B92IncompressibleNavierStokes());
+      //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new K16IncompressibleNavierStokes());
       //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CumulantLBMKernel());
       //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel());
       //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CumulantK17LBMKernel()); 
diff --git a/apps/cpu/sphere/sphere.cpp b/apps/cpu/sphere/sphere.cpp
index 5925fe093..d215e1e6f 100644
--- a/apps/cpu/sphere/sphere.cpp
+++ b/apps/cpu/sphere/sphere.cpp
@@ -212,8 +212,8 @@ void run(string configname)
             UBLOG(logINFO, "Available memory per process = " << availMem << " bytes");
          }
 
-         SPtr<LBMKernel> kernel(new IncompressibleCumulantLBMKernel());
-         //SPtr<LBMKernel> kernel(new CompressibleCumulantLBMKernel());
+         SPtr<LBMKernel> kernel(new K16IncompressibleNavierStokes());
+         //SPtr<LBMKernel> kernel(new K15CompressibleNavierStokes());
 
          SPtr<BCSet> bcSet(new BCSet());
 
diff --git a/src/cpu/VirtualFluids.h b/src/cpu/VirtualFluids.h
index 81beddf3e..3b0b80225 100644
--- a/src/cpu/VirtualFluids.h
+++ b/src/cpu/VirtualFluids.h
@@ -213,21 +213,17 @@
 #include <LBM/Interpolation/CompressibleOffsetSquarePressureInterpolator.h>
 #include <LBM/Interpolation/IncompressibleOffsetInterpolator.h>
 #include <LBM/Interpolation/Interpolator.h>
-#include <IncompressibleCumulantWithSpongeLayerLBMKernel.h>
-#include <LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h>
-#include <LBM/CompressibleCumulantLBMKernel.h>
 #include <LBM/D3Q27System.h>
-#include <LBM/ICell.h>
-#include <LBM/IncompressibleCumulantLBMKernel.h>
-#include <LBM/InitDensityLBMKernel.h>
+#include <LBM/Interpolation/ICell.h>
 #include <LBM/LBMKernel.h>
-#include <LBM/LBMKernelETD3Q27BGK.h>
 #include <LBM/LBMSystem.h>
 #include <LBM/LBMUnitConverter.h>
-#include <LBM/BGKLBMKernel.h>
 
-#include <LBM/CumulantLBMKernel.h>
-#include <LBM/CumulantK17LBMKernel.h>
+
+#include <LBM/B92IncompressibleNavierStokes.h>
+#include <LBM/K15CompressibleNavierStokes.h>
+#include <LBM/K16IncompressibleNavierStokes.h>
+#include <LBM/K17CompressibleNavierStokes.h>
 
 
 #include <geometry3d/CoordinateTransformation3D.h>
@@ -277,7 +273,6 @@
 #include <Utilities/VoxelMatrixUtil.hpp>
 
 #include <CheckRatioBlockVisitor.h>
-#include <InitDistributionsFromFileBlockVisitor.h>
 #include <InitDistributionsWithInterpolationGridVisitor.h>
 #include <SpongeLayerBlockVisitor.h>
 #include <Visitors/Block3DVisitor.h>
@@ -309,7 +304,6 @@
 #include <Visitors/BoundaryConditionsBlockVisitor.h>
 #include <Visitors/BoundaryConditionsBlockVisitor.h>
 #include <Visitors/ChangeBoundaryDensityBlockVisitor.h>
-#include <InitDistributionsFromFileBlockVisitor.h>
 #include <InitDistributionsWithInterpolationGridVisitor.h>
 #include <InitThixotropyBlockVisitor.h>
 #include <CheckRatioBlockVisitor.h>
diff --git a/src/cpu/core/LBM/BGKLBMKernel.cpp b/src/cpu/core/LBM/B92IncompressibleNavierStokes.cpp
similarity index 96%
rename from src/cpu/core/LBM/BGKLBMKernel.cpp
rename to src/cpu/core/LBM/B92IncompressibleNavierStokes.cpp
index d5cae0039..755d97ca1 100644
--- a/src/cpu/core/LBM/BGKLBMKernel.cpp
+++ b/src/cpu/core/LBM/B92IncompressibleNavierStokes.cpp
@@ -1,4 +1,4 @@
-#include "BGKLBMKernel.h"
+#include "B92IncompressibleNavierStokes.h"
 #include "BCArray3D.h"
 #include "BCSet.h"
 #include "D3Q27EsoTwist3DSoA.h"
@@ -11,21 +11,21 @@
 #define PROOF_CORRECTNESS
 
 //////////////////////////////////////////////////////////////////////////
-BGKLBMKernel::BGKLBMKernel() { this->compressible = false; }
+B92IncompressibleNavierStokes::B92IncompressibleNavierStokes() { this->compressible = false; }
 //////////////////////////////////////////////////////////////////////////
-BGKLBMKernel::~BGKLBMKernel(void) = default;
+B92IncompressibleNavierStokes::~B92IncompressibleNavierStokes(void) = default;
 //////////////////////////////////////////////////////////////////////////
-void BGKLBMKernel::initDataSet()
+void B92IncompressibleNavierStokes::initDataSet()
 {
     SPtr<DistributionArray3D> d(new D3Q27EsoTwist3DSplittedVector(nx[0] + 2, nx[1] + 2, nx[2] + 2, -999.9));
     dataSet->setFdistributions(d);
 }
 //////////////////////////////////////////////////////////////////////////
-SPtr<LBMKernel> BGKLBMKernel::clone()
+SPtr<LBMKernel> B92IncompressibleNavierStokes::clone()
 {
-    SPtr<LBMKernel> kernel(new BGKLBMKernel());
+    SPtr<LBMKernel> kernel(new B92IncompressibleNavierStokes());
     kernel->setNX(nx);
-    std::dynamic_pointer_cast<BGKLBMKernel>(kernel)->initDataSet();
+    std::dynamic_pointer_cast<B92IncompressibleNavierStokes>(kernel)->initDataSet();
     kernel->setCollisionFactor(this->collFactor);
     kernel->setBCSet(bcSet->clone(kernel));
     kernel->setWithForcing(withForcing);
@@ -38,7 +38,7 @@ SPtr<LBMKernel> BGKLBMKernel::clone()
     return kernel;
 }
 //////////////////////////////////////////////////////////////////////////
-void BGKLBMKernel::calculate(int step)
+void B92IncompressibleNavierStokes::calculate(int step)
 {
     using namespace D3Q27System;
  //   using namespace UbMath;
@@ -302,4 +302,4 @@ void BGKLBMKernel::calculate(int step)
     }
 }
 //////////////////////////////////////////////////////////////////////////
-real BGKLBMKernel::getCalculationTime() { return vf::basics::constant::c0o1; }
+real B92IncompressibleNavierStokes::getCalculationTime() { return vf::basics::constant::c0o1; }
diff --git a/src/cpu/core/LBM/BGKLBMKernel.h b/src/cpu/core/LBM/B92IncompressibleNavierStokes.h
similarity index 64%
rename from src/cpu/core/LBM/BGKLBMKernel.h
rename to src/cpu/core/LBM/B92IncompressibleNavierStokes.h
index 099e9c093..90a1618bf 100644
--- a/src/cpu/core/LBM/BGKLBMKernel.h
+++ b/src/cpu/core/LBM/B92IncompressibleNavierStokes.h
@@ -1,32 +1,30 @@
-#ifndef BGKLBMKernel_H
-#define BGKLBMKernel_H
+#ifndef B92IncompressibleNavierStokes_H
+#define B92IncompressibleNavierStokes_H
 
 #include "LBMKernel.h"
 #include "basics/container/CbArray3D.h"
 #include "basics/container/CbArray4D.h"
 
-class BGKLBMKernel : public LBMKernel
+class B92IncompressibleNavierStokes : public LBMKernel
 {
 public:
-    BGKLBMKernel();
-    ~BGKLBMKernel() override;
+    B92IncompressibleNavierStokes();
+    ~B92IncompressibleNavierStokes() override;
     void calculate(int step) override;
     SPtr<LBMKernel> clone() override;
     real getCalculationTime() override;
 
 private:
     void initDataSet();
-    // void collideAllCompressible();
-    // void collideAllIncompressible();
 
     CbArray4D<real, IndexerX4X3X2X1>::CbArray4DPtr localDistributions;
     CbArray4D<real, IndexerX4X3X2X1>::CbArray4DPtr nonLocalDistributions;
     CbArray3D<real, IndexerX3X2X1>::CbArray3DPtr zeroDistributions;
 
     mu::value_type muX1, muX2, muX3;
-    real forcingX1;
-    real forcingX2;
-    real forcingX3;
+    real forcingX1 { 0 };
+    real forcingX2 { 0 };
+    real forcingX3 { 0 };
 };
 
 #endif
diff --git a/src/cpu/core/LBM/BasicLBMKernel.cpp b/src/cpu/core/LBM/BasicLBMKernel.cpp
deleted file mode 100644
index 97659e93e..000000000
--- a/src/cpu/core/LBM/BasicLBMKernel.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-#include "BasicLBMKernel.h"
-#include "D3Q27System.h"
-#include "BCArray3D.h"
-#include "BCSet.h"
-
-BasicLBMKernel::BasicLBMKernel()
-{
-
-}
-
-BasicLBMKernel::~BasicLBMKernel(void)
-{
-}
-
-void BasicLBMKernel::calculate(int step)
-{
-   using namespace D3Q27System;
-   using namespace std;
-
-   //timer.resetAndStart();
-
-
-   /////////////////////////////////////
-
-   //localDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions();
-   //nonLocalDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions();
-   //zeroDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions();
-
-   initData();
-
-   SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray();
-
-   const int bcArrayMaxX1 = (int)bcArray->getNX1();
-   const int bcArrayMaxX2 = (int)bcArray->getNX2();
-   const int bcArrayMaxX3 = (int)bcArray->getNX3();
-
-   minX1 = ghostLayerWidth;
-   minX2 = ghostLayerWidth;
-   minX3 = ghostLayerWidth;
-   maxX1 = bcArrayMaxX1 - ghostLayerWidth;
-   maxX2 = bcArrayMaxX2 - ghostLayerWidth;
-   maxX3 = bcArrayMaxX3 - ghostLayerWidth;
-
-   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))
-            {
-               nodeCollision(step, x1, x2, x3);
-            }
-         }
-      }
-   }
-}
diff --git a/src/cpu/core/LBM/BasicLBMKernel.h b/src/cpu/core/LBM/BasicLBMKernel.h
deleted file mode 100644
index 2e8a6c5b3..000000000
--- a/src/cpu/core/LBM/BasicLBMKernel.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef BasicLBMKernel_h__
-#define BasicLBMKernel_h__
-
-#include "LBMKernel.h"
-
-
-class BasicLBMKernel : public LBMKernel
-{
-public:
-	BasicLBMKernel();
-	virtual ~BasicLBMKernel(void);
-	virtual void calculate(int step);
-	virtual SPtr<LBMKernel> clone() = 0;
-protected:
-	virtual void initData(){}
-	virtual void nodeCollision(int step, int x1, int x2, int x3) {}
-	int minX1;
-	int minX2;
-	int minX3;
-	int maxX1;
-	int maxX2;
-	int maxX3;
-};
-
-#endif // BasicLBMKernel_h__
\ No newline at end of file
diff --git a/src/cpu/core/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp b/src/cpu/core/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp
deleted file mode 100644
index e4d001701..000000000
--- a/src/cpu/core/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp
+++ /dev/null
@@ -1,1076 +0,0 @@
-#include "CompressibleCumulant4thOrderViscosityLBMKernel.h"
-#include "D3Q27System.h"
-#include "Interpolator.h"
-#include "D3Q27EsoTwist3DSplittedVector.h"
-#include <cmath>
-#include "DataSet3D.h"
-#include "LBMKernel.h"
-#include "Block3D.h"
-
-#define PROOF_CORRECTNESS
-
-//using namespace UbMath;
-using namespace vf::basics::constant;
-
-//////////////////////////////////////////////////////////////////////////
-CompressibleCumulant4thOrderViscosityLBMKernel::CompressibleCumulant4thOrderViscosityLBMKernel()
-{
-   this->compressible = true;
-   this->bulkViscosity = vf::basics::constant::c0o1;
-   this->OxxPyyPzz = vf::basics::constant::c1o1;
-}
-//////////////////////////////////////////////////////////////////////////
-CompressibleCumulant4thOrderViscosityLBMKernel::~CompressibleCumulant4thOrderViscosityLBMKernel(void)
-= default;
-//////////////////////////////////////////////////////////////////////////
-void CompressibleCumulant4thOrderViscosityLBMKernel::initDataSet()
-{
-   SPtr<DistributionArray3D> d(new D3Q27EsoTwist3DSplittedVector(nx[0]+2, nx[1]+2, nx[2]+2, -999.9));
-   dataSet->setFdistributions(d);
-}
-//////////////////////////////////////////////////////////////////////////
-SPtr<LBMKernel> CompressibleCumulant4thOrderViscosityLBMKernel::clone()
-{
-   SPtr<LBMKernel> kernel(new CompressibleCumulant4thOrderViscosityLBMKernel());
-   kernel->setNX(nx);
-   dynamicPointerCast<CompressibleCumulant4thOrderViscosityLBMKernel>(kernel)->initDataSet();
-   kernel->setCollisionFactor(this->collFactor);
-   kernel->setBCSet(bcSet->clone(kernel));
-   kernel->setWithForcing(withForcing);
-   kernel->setForcingX1(muForcingX1);
-   kernel->setForcingX2(muForcingX2);
-   kernel->setForcingX3(muForcingX3);
-   kernel->setIndex(ix1, ix2, ix3);
-   kernel->setDeltaT(deltaT);
-   kernel->setBlock(block.lock());
-
-   if (bulkViscosity != 0)
-   {
-      OxxPyyPzz = LBMSystem::calcOmega2(bulkViscosity, block.lock()->getLevel());
-   } 
-   else
-   {
-      OxxPyyPzz = c1o1;
-   }
-
-   dynamicPointerCast<CompressibleCumulant4thOrderViscosityLBMKernel>(kernel)->OxxPyyPzz = this->OxxPyyPzz;
-
-   return kernel;
-}
-//////////////////////////////////////////////////////////////////////////
-void CompressibleCumulant4thOrderViscosityLBMKernel::calculate(int step)
-{
-   using namespace std;
-   
-   //timer.resetAndStart();
-   
-   //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 = (c1o1/c3o1)*(c1o1/collFactor - c1o1/c2o1);
-
-      muForcingX1.DefineVar("nu", &muNu);
-      muForcingX2.DefineVar("nu", &muNu);
-      muForcingX3.DefineVar("nu", &muNu);
-
-//      LBMReal forcingX1 = 0;
-//      LBMReal forcingX2 = 0;
-//      LBMReal forcingX3 = 0;
-   }
-   /////////////////////////////////////
-
-   localDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions();
-   nonLocalDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions();
-   zeroDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions();
-
-   SPtr<BCArray3D> bcArray = this->getBCSet()->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;
-
-   real omega = collFactor;
-   //LBMReal OxyyPxzz  = eight*(-two+omega)*(one+two*omega)/(-eight-fourteen*omega+seven*omega*omega);//one;
-   //LBMReal OxyyMxzz  = eight*(-two+omega)*(-seven+four*omega)/(fiftysix-fifty*omega+nine*omega*omega);//one;
-   //LBMReal Oxyz      = twentyfour*(-two+omega)*(-two-seven*omega+three*omega*omega)/(fourtyeight+c152*omega-c130*omega*omega+twentynine*omega*omega*omega);
-   real OxyyPxzz  = c8o1*(omega-c2o1)*(OxxPyyPzz*(c3o1*omega-c1o1)-c5o1*omega)/(c8o1 *(c5o1-c2o1*omega)*omega+OxxPyyPzz*(c8o1+omega*(c9o1*omega-c26o1)));
-   real OxyyMxzz  = c8o1*(omega-c2o1)*(omega+OxxPyyPzz*(c3o1*omega-c7o1))/(OxxPyyPzz*(c56o1-c42o1*omega+c9o1*omega*omega)-c8o1*omega);
-   real Oxyz      = c24o1*(omega-c2o1)*(c4o1*omega*omega+omega*OxxPyyPzz*(c18o1-c13o1*omega)+OxxPyyPzz*OxxPyyPzz*(c2o1+omega*(c6o1*omega-c11o1)))/(c16o1*omega*omega*(omega-c6o1)-c2o1*omega*OxxPyyPzz*(c216o1+c5o1*omega*(c9o1*omega-c46o1))+OxxPyyPzz*OxxPyyPzz*(omega*(c3o1*omega-c10o1)*(c15o1*omega-c28o1)-c48o1));
-
-   //LBMReal A = (four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega);
-   //LBMReal B = (four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega);
-
-   real A = (c4o1*omega*omega+c2o1*omega*OxxPyyPzz*(omega-c6o1)+OxxPyyPzz*OxxPyyPzz*(omega*(c10o1-c3o1*omega)-c4o1))/((omega-OxxPyyPzz)*(OxxPyyPzz*(c2o1+c3o1*omega)-c8o1*omega));
-   //FIXME:  warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::d00M' )
-   real B = (c4o1*omega*OxxPyyPzz*(c9o1*omega-c16o1)-c4o1*omega*omega-c2o1*OxxPyyPzz*OxxPyyPzz*(c2o1+c9o1*omega*(omega-c2o1)))/(c3o1*(omega-OxxPyyPzz)*(OxxPyyPzz*(c2o1+c3o1*omega)-c8o1*omega));
-
-   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 distribution
-               ////////////////////////////////////////////////////////////////////////////
-               //////////////////////////////////////////////////////////////////////////
-
-               //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
-
-               real mfcbb = (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3);
-               real mfbcb = (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3);
-               real mfbbc = (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3);
-               real mfccb = (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3);
-               real mfacb = (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3);
-               real mfcbc = (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3);
-               real mfabc = (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3);
-               real mfbcc = (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3);
-               real mfbac = (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3);
-               real mfccc = (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3);
-               real mfacc = (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3);
-               real mfcac = (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3);
-               real mfaac = (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3);
-
-               real mfabb = (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3);
-               real mfbab = (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3);
-               real mfbba = (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p);
-               real mfaab = (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3);
-               real mfcab = (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3);
-               real mfaba = (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p);
-               real mfcba = (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p);
-               real mfbaa = (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p);
-               real mfbca = (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p);
-               real mfaaa = (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p);
-               real mfcaa = (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p);
-               real mfaca = (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p);
-               real mfcca = (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p);
-
-               real mfbbb = (*this->zeroDistributions)(x1, x2, x3);
-
-               ////////////////////////////////////////////////////////////////////////////////////
-               real 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;
-
-               real rho = c1o1 +drho;
-               ////////////////////////////////////////////////////////////////////////////////////
-               real vvx = ((((mfccc-mfaaa)+(mfcac-mfaca))+((mfcaa-mfacc)+(mfcca-mfaac)))+
-                  (((mfcba-mfabc)+(mfcbc-mfaba))+((mfcab-mfacb)+(mfccb-mfaab)))+
-                  (mfcbb-mfabb))/rho;
-               real vvy = ((((mfccc-mfaaa)+(mfaca-mfcac))+((mfacc-mfcaa)+(mfcca-mfaac)))+
-                  (((mfbca-mfbac)+(mfbcc-mfbaa))+((mfacb-mfcab)+(mfccb-mfaab)))+
-                  (mfbcb-mfbab))/rho;
-               real vvz = ((((mfccc-mfaaa)+(mfcac-mfaca))+((mfacc-mfcaa)+(mfaac-mfcca)))+
-                  (((mfbac-mfbca)+(mfbcc-mfbaa))+((mfabc-mfcba)+(mfcbc-mfaba)))+
-                  (mfbbc-mfbba))/rho;
-               ////////////////////////////////////////////////////////////////////////////////////
-
-               //forcing 
-               ///////////////////////////////////////////////////////////////////////////////////////////
-               if (withForcing)
-               {
-                  muX1 = static_cast<real>(x1-1+ix1*maxX1);
-                  muX2 = static_cast<real>(x2-1+ix2*maxX2);
-                  muX3 = static_cast<real>(x3-1+ix3*maxX3);
-
-                  forcingX1 = muForcingX1.Eval();
-                  forcingX2 = muForcingX2.Eval();
-                  forcingX3 = muForcingX3.Eval();
-
-                  vvx += forcingX1*deltaT*c1o2; // X
-                  vvy += forcingX2*deltaT*c1o2; // Y
-                  vvz += forcingX3*deltaT*c1o2; // Z
-               }
-               ///////////////////////////////////////////////////////////////////////////////////////////               
-         ////////////////////////////////////////////////////////////////////////////////////
-               real oMdrho = c1o1; // comp special
-               ////////////////////////////////////////////////////////////////////////////////////
-               real m0, m1, m2;
-               real vx2;
-               real vy2;
-               real vz2;
-               vx2 = vvx*vvx;
-               vy2 = vvy*vvy;
-               vz2 = vvz*vvz;
-               ////////////////////////////////////////////////////////////////////////////////////
-               real wadjust;
-               real qudricLimitP = c1o100;// * 0.0001f;
-               real qudricLimitM = c1o100;// * 0.0001f;
-               real qudricLimitD = c1o100;// * 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;
-               m1 = mfaac-mfaaa;
-               m0 = m2+mfaab;
-               mfaaa = m0;
-               m0 += c1o36 * oMdrho;
-               mfaab = m1-m0 * vvz;
-               mfaac = m2-c2o1*	m1 * vvz+vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfaba+mfabc;
-               m1 = mfabc-mfaba;
-               m0 = m2+mfabb;
-               mfaba = m0;
-               m0 += c1o9 * oMdrho;
-               mfabb = m1-m0 * vvz;
-               mfabc = m2-c2o1*	m1 * vvz+vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfaca+mfacc;
-               m1 = mfacc-mfaca;
-               m0 = m2+mfacb;
-               mfaca = m0;
-               m0 += c1o36 * oMdrho;
-               mfacb = m1-m0 * vvz;
-               mfacc = m2-c2o1*	m1 * vvz+vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfbaa+mfbac;
-               m1 = mfbac-mfbaa;
-               m0 = m2+mfbab;
-               mfbaa = m0;
-               m0 += c1o9 * oMdrho;
-               mfbab = m1-m0 * vvz;
-               mfbac = m2-c2o1*	m1 * vvz+vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfbba+mfbbc;
-               m1 = mfbbc-mfbba;
-               m0 = m2+mfbbb;
-               mfbba = m0;
-               m0 += c4o9 * oMdrho;
-               mfbbb = m1-m0 * vvz;
-               mfbbc = m2-c2o1*	m1 * vvz+vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfbca+mfbcc;
-               m1 = mfbcc-mfbca;
-               m0 = m2+mfbcb;
-               mfbca = m0;
-               m0 += c1o9 * oMdrho;
-               mfbcb = m1-m0 * vvz;
-               mfbcc = m2-c2o1*	m1 * vvz+vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfcaa+mfcac;
-               m1 = mfcac-mfcaa;
-               m0 = m2+mfcab;
-               mfcaa = m0;
-               m0 += c1o36 * oMdrho;
-               mfcab = m1-m0 * vvz;
-               mfcac = m2-c2o1*	m1 * vvz+vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfcba+mfcbc;
-               m1 = mfcbc-mfcba;
-               m0 = m2+mfcbb;
-               mfcba = m0;
-               m0 += c1o9 * oMdrho;
-               mfcbb = m1-m0 * vvz;
-               mfcbc = m2-c2o1*	m1 * vvz+vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfcca+mfccc;
-               m1 = mfccc-mfcca;
-               m0 = m2+mfccb;
-               mfcca = m0;
-               m0 += c1o36 * oMdrho;
-               mfccb = m1-m0 * vvz;
-               mfccc = m2-c2o1*	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 += c1o6 * oMdrho;
-               mfaba = m1-m0 * vvy;
-               mfaca = m2-c2o1*	m1 * vvy+vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfaab+mfacb;
-               m1 = mfacb-mfaab;
-               m0 = m2+mfabb;
-               mfaab = m0;
-               mfabb = m1-m0 * vvy;
-               mfacb = m2-c2o1*	m1 * vvy+vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfaac+mfacc;
-               m1 = mfacc-mfaac;
-               m0 = m2+mfabc;
-               mfaac = m0;
-               m0 += c1o18 * oMdrho;
-               mfabc = m1-m0 * vvy;
-               mfacc = m2-c2o1*	m1 * vvy+vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfbaa+mfbca;
-               m1 = mfbca-mfbaa;
-               m0 = m2+mfbba;
-               mfbaa = m0;
-               m0 += c2o3 * oMdrho;
-               mfbba = m1-m0 * vvy;
-               mfbca = m2-c2o1*	m1 * vvy+vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfbab+mfbcb;
-               m1 = mfbcb-mfbab;
-               m0 = m2+mfbbb;
-               mfbab = m0;
-               mfbbb = m1-m0 * vvy;
-               mfbcb = m2-c2o1*	m1 * vvy+vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfbac+mfbcc;
-               m1 = mfbcc-mfbac;
-               m0 = m2+mfbbc;
-               mfbac = m0;
-               m0 += c2o9 * oMdrho;
-               mfbbc = m1-m0 * vvy;
-               mfbcc = m2-c2o1*	m1 * vvy+vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfcaa+mfcca;
-               m1 = mfcca-mfcaa;
-               m0 = m2+mfcba;
-               mfcaa = m0;
-               m0 += c1o6 * oMdrho;
-               mfcba = m1-m0 * vvy;
-               mfcca = m2-c2o1*	m1 * vvy+vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfcab+mfccb;
-               m1 = mfccb-mfcab;
-               m0 = m2+mfcbb;
-               mfcab = m0;
-               mfcbb = m1-m0 * vvy;
-               mfccb = m2-c2o1*	m1 * vvy+vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfcac+mfccc;
-               m1 = mfccc-mfcac;
-               m0 = m2+mfcbc;
-               mfcac = m0;
-               m0 += c1o18 * oMdrho;
-               mfcbc = m1-m0 * vvy;
-               mfccc = m2-c2o1*	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 += c1o1* oMdrho;
-               mfbaa = m1-m0 * vvx;
-               mfcaa = m2-c2o1*	m1 * vvx+vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfaba+mfcba;
-               m1 = mfcba-mfaba;
-               m0 = m2+mfbba;
-               mfaba = m0;
-               mfbba = m1-m0 * vvx;
-               mfcba = m2-c2o1*	m1 * vvx+vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfaca+mfcca;
-               m1 = mfcca-mfaca;
-               m0 = m2+mfbca;
-               mfaca = m0;
-               m0 += c1o3 * oMdrho;
-               mfbca = m1-m0 * vvx;
-               mfcca = m2-c2o1*	m1 * vvx+vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfaab+mfcab;
-               m1 = mfcab-mfaab;
-               m0 = m2+mfbab;
-               mfaab = m0;
-               mfbab = m1-m0 * vvx;
-               mfcab = m2-c2o1*	m1 * vvx+vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfabb+mfcbb;
-               m1 = mfcbb-mfabb;
-               m0 = m2+mfbbb;
-               mfabb = m0;
-               mfbbb = m1-m0 * vvx;
-               mfcbb = m2-c2o1*	m1 * vvx+vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfacb+mfccb;
-               m1 = mfccb-mfacb;
-               m0 = m2+mfbcb;
-               mfacb = m0;
-               mfbcb = m1-m0 * vvx;
-               mfccb = m2-c2o1*	m1 * vvx+vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfaac+mfcac;
-               m1 = mfcac-mfaac;
-               m0 = m2+mfbac;
-               mfaac = m0;
-               m0 += c1o3 * oMdrho;
-               mfbac = m1-m0 * vvx;
-               mfcac = m2-c2o1*	m1 * vvx+vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfabc+mfcbc;
-               m1 = mfcbc-mfabc;
-               m0 = m2+mfbbc;
-               mfabc = m0;
-               mfbbc = m1-m0 * vvx;
-               mfcbc = m2-c2o1*	m1 * vvx+vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2 = mfacc+mfccc;
-               m1 = mfccc-mfacc;
-               m0 = m2+mfbcc;
-               mfacc = m0;
-               m0 += c1o9 * oMdrho;
-               mfbcc = m1-m0 * vvx;
-               mfccc = m2-c2o1*	m1 * vvx+vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-
-
-               ////////////////////////////////////////////////////////////////////////////////////
-               // Cumulants
-               ////////////////////////////////////////////////////////////////////////////////////
-
-               //LBMReal OxxPyyPzz = one; // bulk viscosity
-
-               ////////////////////////////////////////////////////////////
-               //3.
-               //////////////////////////////
-               //LBMReal OxyyPxzz = one;//three  * (two - omega) / (three  - omega);//
-               //LBMReal OxyyMxzz = one;//six    * (two - omega) / (six    - omega);//
-               //LBMReal Oxyz = one;//twelve * (two - omega) / (twelve + omega);//
-
-               //LBMReal OxyyPxzz  = eight*(-two+omega)*(one+two*omega)/(-eight-fourteen*omega+seven*omega*omega);//one;
-
-               //LBMReal OxyyMxzz  = eight*(-two+omega)*(-seven+four*omega)/(fiftysix-fifty*omega+nine*omega*omega);//one;
-
-               //LBMReal Oxyz      = twentyfour*(-two+omega)*(-two-seven*omega+three*omega*omega)/(fourtyeight+c152*omega-c130*omega*omega+twentynine*omega*omega*omega);
-               //////////////////////////////
-               //LBMReal OxyyPxzz  = two-omega;//
-               //LBMReal OxyyMxzz  = two-omega;//
-               //////////////////////////////
-               //LBMReal OxyyPxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
-               //LBMReal OxyyMxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
-               //////////////////////////////
-               //LBMReal OxyyPxzz  = omega;//BGK
-               //LBMReal OxyyMxzz  = omega;//BGK
-               //////////////////////////////
-               //LBMReal OxyyPxzz  = (one + omega) / two;//1P5
-               //LBMReal OxyyMxzz  = (one + omega) / two;//1P5
-               //////////////////////////////
-               //LBMReal OxyyPxzz  = (three - omega) / two;//0P5
-               //LBMReal OxyyMxzz  = (three - omega) / two;//0P5
-               //////////////////////////////
-               //LBMReal OxyyPxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
-               //LBMReal OxyyMxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
-               ////////////////////////////////////////////////////////////
-               //4.
-               //////////////////////////////
-               real O4 = c1o1;
-               //////////////////////////////
-               //real O4        = omega;//TRT
-               ////////////////////////////////////////////////////////////
-               //5.
-               //////////////////////////////
-               real O5 = c1o1;
-               ////////////////////////////////////////////////////////////
-               //6.
-               //////////////////////////////
-               real O6 = c1o1;
-               ////////////////////////////////////////////////////////////
-
-
-               //central moments to cumulants
-               //4.
-               real CUMcbb = mfcbb-((mfcaa+c1o3) * mfabb+c2o1 * mfbba * mfbab)/rho;	//ab 15.05.2015 verwendet
-               real CUMbcb = mfbcb-((mfaca+c1o3) * mfbab+c2o1 * mfbba * mfabb)/rho; //ab 15.05.2015 verwendet
-               real CUMbbc = mfbbc-((mfaac+c1o3) * mfbba+c2o1 * mfbab * mfabb)/rho; //ab 15.05.2015 verwendet
-
-               real CUMcca = mfcca-(((mfcaa * mfaca+c2o1 * mfbba * mfbba)+c1o3 * (mfcaa+mfaca))/rho-c1o9*(drho/rho));
-               real CUMcac = mfcac-(((mfcaa * mfaac+c2o1 * mfbab * mfbab)+c1o3 * (mfcaa+mfaac))/rho-c1o9*(drho/rho));
-               real CUMacc = mfacc-(((mfaac * mfaca+c2o1 * mfabb * mfabb)+c1o3 * (mfaac+mfaca))/rho-c1o9*(drho/rho));
-
-               //5.
-               real CUMbcc = mfbcc-((mfaac * mfbca+mfaca * mfbac+c4o1 * mfabb * mfbbb+c2o1 * (mfbab * mfacb+mfbba * mfabc))+c1o3 * (mfbca+mfbac))/rho;
-               real CUMcbc = mfcbc-((mfaac * mfcba+mfcaa * mfabc+c4o1 * mfbab * mfbbb+c2o1 * (mfabb * mfcab+mfbba * mfbac))+c1o3 * (mfcba+mfabc))/rho;
-               real CUMccb = mfccb-((mfcaa * mfacb+mfaca * mfcab+c4o1 * mfbba * mfbbb+c2o1 * (mfbab * mfbca+mfabb * mfcba))+c1o3 * (mfacb+mfcab))/rho;
-
-               //6.
-
-               real CUMccc = mfccc+((-c4o1 *  mfbbb * mfbbb
-                  -(mfcaa * mfacc+mfaca * mfcac+mfaac * mfcca)
-                  - c4o1 * (mfabb * mfcbb+mfbab * mfbcb+mfbba * mfbbc)
-                  - c2o1 * (mfbca * mfbac+mfcba * mfabc+mfcab * mfacb))/rho
-                  +(c4o1 * (mfbab * mfbab * mfaca+mfabb * mfabb * mfcaa+mfbba * mfbba * mfaac)
-                     + c2o1 * (mfcaa * mfaca * mfaac)
-                     + c16o1 *  mfbba * mfbab * mfabb)/(rho * rho)
-                  -c1o3 * (mfacc+mfcac+mfcca)/rho
-                  -c1o9 * (mfcaa+mfaca+mfaac)/rho
-                  +(c2o1 * (mfbab * mfbab+mfabb * mfabb+mfbba * mfbba)
-                     +(mfaac * mfaca+mfaac * mfcaa+mfaca * mfcaa)+c1o3 *(mfaac+mfaca+mfcaa))/(rho * rho) * c2o3
-                  +c1o27*((drho * drho-drho)/(rho*rho)));
-               //+ c1o27*(one -three/rho +two/(rho*rho)));
-
-
-
-
-   //2.
-   // linear combinations
-               real mxxPyyPzz = mfcaa+mfaca+mfaac;
-               real mxxMyy = mfcaa-mfaca;
-               real mxxMzz = mfcaa-mfaac;
-
-               //////////////////////////////////////////////////////////////////////////
-      // 			LBMReal magicBulk=(CUMacc+CUMcac+CUMcca)*(one/OxxPyyPzz-c1o2)*c3o2*8.;
-
-               //////////////////////////////////////////////////////////////////////////
-               //limiter-Scheise Teil 1
-               //LBMReal oxxyy,oxxzz,oxy,oxz,oyz;
-               //LBMReal smag=0.001;
-               //oxxyy    = omega+(one-omega)*fabs(mxxMyy)/(fabs(mxxMyy)+smag);
-               //oxxzz    = omega+(one-omega)*fabs(mxxMzz)/(fabs(mxxMzz)+smag);
-               //oxy      = omega+(one-omega)*fabs(mfbba)/(fabs(mfbba)+smag);
-               //oxz      = omega+(one-omega)*fabs(mfbab)/(fabs(mfbab)+smag);
-               //oyz      = omega+(one-omega)*fabs(mfabb)/(fabs(mfabb)+smag);
-
-               ////////////////////////////////////////////////////////////////////////////
-               ////Teil 1b
-               //LBMReal constante = 1000.0;
-               //LBMReal nuEddi = constante * fabs(mxxPyyPzz);
-               //LBMReal omegaLimit = one / (one / omega + three * nuEddi);
-
-               //{
-               //	LBMReal dxux = c1o2 * (-omegaLimit) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-               //	LBMReal dyuy = dxux + omegaLimit * c3o2 * mxxMyy;
-               //	LBMReal dzuz = dxux + omegaLimit * c3o2 * mxxMzz;
-
-                  ////relax
-                  //mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
-                  //mxxMyy    += omegaLimit * (-mxxMyy) - three * (one + c1o2 * (-omegaLimit)) * (vx2 * dxux + vy2 * dyuy);
-                  //mxxMzz    += omegaLimit * (-mxxMzz) - three * (one + c1o2 * (-omegaLimit)) * (vx2 * dxux + vz2 * dzuz);
-
-               //}
-               //mfabb     += omegaLimit * (-mfabb);
-               //mfbab     += omegaLimit * (-mfbab);
-               //mfbba     += omegaLimit * (-mfbba);
-               ////////////////////////////////////////////////////////////////////////////
-
-               ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-               //incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
-
-               real dxux = c1o2 * (-omega) *(mxxMyy+mxxMzz)+c1o2 *  OxxPyyPzz * (mfaaa-mxxPyyPzz);
-               real dyuy = dxux+omega * c3o2 * mxxMyy;
-               real dzuz = dxux+omega * c3o2 * mxxMzz;
-
-               real Dxy =-c3o1 *omega*mfbba;
-               real Dxz =-c3o1 *omega*mfbab;
-               real Dyz =-c3o1 *omega*mfabb;
-
-
-
-               //relax
-
-               wadjust = OxxPyyPzz+(c1o1 -OxxPyyPzz)*fabs((mfaaa-mxxPyyPzz))/(fabs((mfaaa-mxxPyyPzz))+qudricLimitD);
-               mxxPyyPzz += wadjust*(mfaaa-mxxPyyPzz)- c3o1 * (c1o1 -c1o2 * OxxPyyPzz) * (vx2 * dxux+vy2 * dyuy+vz2 * dzuz);
-
-              // mxxPyyPzz += OxxPyyPzz*(mfaaa-mxxPyyPzz)-three * (one-c1o2 * OxxPyyPzz) * (vx2 * dxux+vy2 * dyuy+vz2 * dzuz);//-magicBulk*OxxPyyPzz;
-               mxxMyy += omega * (-mxxMyy)-c3o1 * (c1o1 +c1o2 * (-omega)) * (vx2 * dxux-vy2 * dyuy);
-               mxxMzz += omega * (-mxxMzz)-c3o1 * (c1o1 +c1o2 * (-omega)) * (vx2 * dxux-vz2 * dzuz);
-
-               //////////////////////////////////////////////////////////////////////////
-               //limiter-Scheise Teil 2
-               //mxxMyy    += oxxyy * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux + vy2 * dyuy);
-               //mxxMzz    += oxxzz * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux + vz2 * dzuz);
-               //////////////////////////////////////////////////////////////////////////
-
-
-            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-            ////no correction
-            //mxxPyyPzz += OxxPyyPzz*(mfaaa-mxxPyyPzz);//-magicBulk*OxxPyyPzz;
-            //mxxMyy    += -(-omega) * (-mxxMyy);
-            //mxxMzz    += -(-omega) * (-mxxMzz);
-            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-               mfabb += omega * (-mfabb);
-               mfbab += omega * (-mfbab);
-               mfbba += omega * (-mfbba);
-
-               //////////////////////////////////////////////////////////////////////////
-               //limiter-Scheise Teil 3
-               //mfabb     += oyz * (-mfabb);
-               //mfbab     += oxz * (-mfbab);
-               //mfbba     += oxy * (-mfbba);
-               //////////////////////////////////////////////////////////////////////////
-
-               // linear combinations back
-               mfcaa = c1o3 * (mxxMyy+mxxMzz+mxxPyyPzz);
-               mfaca = c1o3 * (-c2o1 *  mxxMyy+mxxMzz+mxxPyyPzz);
-               mfaac = c1o3 * (mxxMyy-c2o1 * mxxMzz+mxxPyyPzz);
-
-               //3.
-               // linear combinations
-
-               real mxxyPyzz = mfcba+mfabc;
-               real mxxyMyzz = mfcba-mfabc;
-
-               real mxxzPyyz = mfcab+mfacb;
-               real mxxzMyyz = mfcab-mfacb;
-
-               real mxyyPxzz = mfbca+mfbac;
-               real mxyyMxzz = mfbca-mfbac;
-
-               //relax
-               //////////////////////////////////////////////////////////////////////////
-               //das ist der limiter
-               wadjust = Oxyz+(c1o1-Oxyz)*fabs(mfbbb)/(fabs(mfbbb)+qudricLimitD);
-               mfbbb += wadjust * (-mfbbb);
-               wadjust = OxyyPxzz+(c1o1-OxyyPxzz)*fabs(mxxyPyzz)/(fabs(mxxyPyzz)+qudricLimitP);
-               mxxyPyzz += wadjust * (-mxxyPyzz);
-               wadjust = OxyyMxzz+(c1o1-OxyyMxzz)*fabs(mxxyMyzz)/(fabs(mxxyMyzz)+qudricLimitM);
-               mxxyMyzz += wadjust * (-mxxyMyzz);
-               wadjust = OxyyPxzz+(c1o1-OxyyPxzz)*fabs(mxxzPyyz)/(fabs(mxxzPyyz)+qudricLimitP);
-               mxxzPyyz += wadjust * (-mxxzPyyz);
-               wadjust = OxyyMxzz+(c1o1-OxyyMxzz)*fabs(mxxzMyyz)/(fabs(mxxzMyyz)+qudricLimitM);
-               mxxzMyyz += wadjust * (-mxxzMyyz);
-               wadjust = OxyyPxzz+(c1o1-OxyyPxzz)*fabs(mxyyPxzz)/(fabs(mxyyPxzz)+qudricLimitP);
-               mxyyPxzz += wadjust * (-mxyyPxzz);
-               wadjust = OxyyMxzz+(c1o1-OxyyMxzz)*fabs(mxyyMxzz)/(fabs(mxyyMxzz)+qudricLimitM);
-               mxyyMxzz += wadjust * (-mxyyMxzz);
-               //////////////////////////////////////////////////////////////////////////
-               //ohne limiter
-               //mfbbb     += OxyyMxzz * (-mfbbb);
-               //mxxyPyzz  += OxyyPxzz * (-mxxyPyzz);
-               //mxxyMyzz  += OxyyMxzz * (-mxxyMyzz);
-               //mxxzPyyz  += OxyyPxzz * (-mxxzPyyz);
-               //mxxzMyyz  += OxyyMxzz * (-mxxzMyyz);
-               //mxyyPxzz  += OxyyPxzz * (-mxyyPxzz);
-               //mxyyMxzz  += OxyyMxzz * (-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.
-               //////////////////////////////////////////////////////////////////////////
-               //mit limiter
-            //	wadjust    = O4+(one-O4)*fabs(CUMacc)/(fabs(CUMacc)+qudricLimit);
-               //CUMacc    += wadjust * (-CUMacc);
-            //	wadjust    = O4+(one-O4)*fabs(CUMcac)/(fabs(CUMcac)+qudricLimit);
-               //CUMcac    += wadjust * (-CUMcac); 
-            //	wadjust    = O4+(one-O4)*fabs(CUMcca)/(fabs(CUMcca)+qudricLimit);
-               //CUMcca    += wadjust * (-CUMcca); 
-
-            //	wadjust    = O4+(one-O4)*fabs(CUMbbc)/(fabs(CUMbbc)+qudricLimit);
-               //CUMbbc    += wadjust * (-CUMbbc); 
-            //	wadjust    = O4+(one-O4)*fabs(CUMbcb)/(fabs(CUMbcb)+qudricLimit);
-               //CUMbcb    += wadjust * (-CUMbcb); 
-            //	wadjust    = O4+(one-O4)*fabs(CUMcbb)/(fabs(CUMcbb)+qudricLimit);
-               //CUMcbb    += wadjust * (-CUMcbb); 
-               //////////////////////////////////////////////////////////////////////////
-               //////////////////////////////////////////////////////////////////////////
-
-               //////////////////////////////////////////////////////////////////////////
-
-
-               //ohne limiter
-               //CUMacc += O4 * (-CUMacc);
-               //CUMcac += O4 * (-CUMcac);
-               //CUMcca += O4 * (-CUMcca);
-
-               //CUMbbc += O4 * (-CUMbbc);
-               //CUMbcb += O4 * (-CUMbcb);
-               //CUMcbb += O4 * (-CUMcbb);
-               CUMacc = -O4*(c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMacc);
-               CUMcac = -O4*(c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMcac);
-               CUMcca = -O4*(c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * A + (c1o1 - O4) * (CUMcca);
-               CUMbbc = -O4*(c1o1 / omega - c1o2) * Dxy           * c1o3 * B + (c1o1 - O4) * (CUMbbc);
-               CUMbcb = -O4*(c1o1 / omega - c1o2) * Dxz           * c1o3 * B + (c1o1 - O4) * (CUMbcb);
-               CUMcbb = -O4*(c1o1 / omega - c1o2) * Dyz           * c1o3 * B + (c1o1 - 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) * mfabb+c2o1 * mfbba * mfbab)/rho;
-               mfbcb = CUMbcb+((mfaca+c1o3) * mfbab+c2o1 * mfbba * mfabb)/rho;
-               mfbbc = CUMbbc+((mfaac+c1o3) * mfbba+c2o1 * mfbab * mfabb)/rho;
-
-               mfcca = CUMcca+(((mfcaa * mfaca+c2o1 * mfbba * mfbba)+c1o3 * (mfcaa+mfaca))/rho-c1o9*(drho/rho));//(one/rho-one));
-               mfcac = CUMcac+(((mfcaa * mfaac+c2o1 * mfbab * mfbab)+c1o3 * (mfcaa+mfaac))/rho-c1o9*(drho/rho));//(one/rho-one));
-               mfacc = CUMacc+(((mfaac * mfaca+c2o1 * mfabb * mfabb)+c1o3 * (mfaac+mfaca))/rho-c1o9*(drho/rho));//(one/rho-one));
-
-               //5.
-               mfbcc = CUMbcc+((mfaac * mfbca+mfaca * mfbac+c4o1 * mfabb * mfbbb+c2o1 * (mfbab * mfacb+mfbba * mfabc))+c1o3 * (mfbca+mfbac))/rho;
-               mfcbc = CUMcbc+((mfaac * mfcba+mfcaa * mfabc+c4o1 * mfbab * mfbbb+c2o1 * (mfabb * mfcab+mfbba * mfbac))+c1o3 * (mfcba+mfabc))/rho;
-               mfccb = CUMccb+((mfcaa * mfacb+mfaca * mfcab+c4o1 * mfbba * mfbbb+c2o1 * (mfbab * mfbca+mfabb * mfcba))+c1o3 * (mfacb+mfcab))/rho;
-
-               //6.
-
-               mfccc = CUMccc-((-c4o1 *  mfbbb * mfbbb
-                  -(mfcaa * mfacc+mfaca * mfcac+mfaac * mfcca)
-                  - c4o1 * (mfabb * mfcbb+mfbab * mfbcb+mfbba * mfbbc)
-                  - c2o1 * (mfbca * mfbac+mfcba * mfabc+mfcab * mfacb))/rho
-                  +(c4o1 * (mfbab * mfbab * mfaca+mfabb * mfabb * mfcaa+mfbba * mfbba * mfaac)
-                     + c2o1 * (mfcaa * mfaca * mfaac)
-                     + c16o1 *  mfbba * mfbab * mfabb)/(rho * rho)
-                  -c1o3 * (mfacc+mfcac+mfcca)/rho
-                  -c1o9 * (mfcaa+mfaca+mfaac)/rho
-                  +(c2o1 * (mfbab * mfbab+mfabb * mfabb+mfbba * mfbba)
-                     +(mfaac * mfaca+mfaac * mfcaa+mfaca * mfcaa)+c1o3 *(mfaac+mfaca+mfcaa))/(rho * rho) * c2o3
-                  +c1o27*((drho * drho-drho)/(rho*rho)));
-               ////////////////////////////////////////////////////////////////////////////////////
-               //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 * (vvz-c1o2)+(mfaaa+ c1o1 * oMdrho) * (vz2-vvz) * c1o2;
-               m1 = -mfaac-c2o1* mfaab *  vvz+mfaaa                * (c1o1-vz2)- c1o1 * oMdrho * vz2;
-               m2 = mfaac * c1o2+mfaab * (vvz+c1o2)+(mfaaa+ c1o1 * oMdrho) * (vz2+vvz) * c1o2;
-               mfaaa = m0;
-               mfaab = m1;
-               mfaac = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 = mfabc * c1o2+mfabb * (vvz-c1o2)+mfaba * (vz2-vvz) * c1o2;
-               m1 = -mfabc-c2o1* mfabb *  vvz+mfaba * (c1o1-vz2);
-               m2 = mfabc * c1o2+mfabb * (vvz+c1o2)+mfaba * (vz2+vvz) * c1o2;
-               mfaba = m0;
-               mfabb = m1;
-               mfabc = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 = mfacc * c1o2+mfacb * (vvz-c1o2)+(mfaca+c1o3 * oMdrho) * (vz2-vvz) * c1o2;
-               m1 = -mfacc-c2o1* mfacb *  vvz+mfaca                  * (c1o1-vz2)-c1o3 * oMdrho * vz2;
-               m2 = mfacc * c1o2+mfacb * (vvz+c1o2)+(mfaca+c1o3 * oMdrho) * (vz2+vvz) * c1o2;
-               mfaca = m0;
-               mfacb = m1;
-               mfacc = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 = mfbac * c1o2+mfbab * (vvz-c1o2)+mfbaa * (vz2-vvz) * c1o2;
-               m1 = -mfbac-c2o1* mfbab *  vvz+mfbaa * (c1o1-vz2);
-               m2 = mfbac * c1o2+mfbab * (vvz+c1o2)+mfbaa * (vz2+vvz) * c1o2;
-               mfbaa = m0;
-               mfbab = m1;
-               mfbac = m2;
-               /////////b//////////////////////////////////////////////////////////////////////////
-               m0 = mfbbc * c1o2+mfbbb * (vvz-c1o2)+mfbba * (vz2-vvz) * c1o2;
-               m1 = -mfbbc-c2o1* mfbbb *  vvz+mfbba * (c1o1-vz2);
-               m2 = mfbbc * c1o2+mfbbb * (vvz+c1o2)+mfbba * (vz2+vvz) * c1o2;
-               mfbba = m0;
-               mfbbb = m1;
-               mfbbc = m2;
-               /////////b//////////////////////////////////////////////////////////////////////////
-               m0 = mfbcc * c1o2+mfbcb * (vvz-c1o2)+mfbca * (vz2-vvz) * c1o2;
-               m1 = -mfbcc-c2o1* mfbcb *  vvz+mfbca * (c1o1-vz2);
-               m2 = mfbcc * c1o2+mfbcb * (vvz+c1o2)+mfbca * (vz2+vvz) * c1o2;
-               mfbca = m0;
-               mfbcb = m1;
-               mfbcc = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 = mfcac * c1o2+mfcab * (vvz-c1o2)+(mfcaa+c1o3 * oMdrho) * (vz2-vvz) * c1o2;
-               m1 = -mfcac- c2o1* mfcab *  vvz+mfcaa                  * (c1o1-vz2)-c1o3 * oMdrho * vz2;
-               m2 = mfcac * c1o2+mfcab * (vvz+c1o2)+(mfcaa+c1o3 * oMdrho) * (vz2+vvz) * c1o2;
-               mfcaa = m0;
-               mfcab = m1;
-               mfcac = m2;
-               /////////c//////////////////////////////////////////////////////////////////////////
-               m0 = mfcbc * c1o2+mfcbb * (vvz-c1o2)+mfcba * (vz2-vvz) * c1o2;
-               m1 = -mfcbc-c2o1* mfcbb *  vvz+mfcba * (c1o1-vz2);
-               m2 = mfcbc * c1o2+mfcbb * (vvz+c1o2)+mfcba * (vz2+vvz) * c1o2;
-               mfcba = m0;
-               mfcbb = m1;
-               mfcbc = m2;
-               /////////c//////////////////////////////////////////////////////////////////////////
-               m0 = mfccc * c1o2+mfccb * (vvz-c1o2)+(mfcca+c1o9 * oMdrho) * (vz2-vvz) * c1o2;
-               m1 = -mfccc-c2o1* mfccb *  vvz+mfcca                  * (c1o1-vz2)-c1o9 * oMdrho * vz2;
-               m2 = mfccc * c1o2+mfccb * (vvz+c1o2)+(mfcca+c1o9 * oMdrho) * (vz2+vvz) * 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 * (vvy-c1o2)+(mfaaa+c1o6 * oMdrho) * (vy2-vvy) * c1o2;
-               m1 = -mfaca-c2o1* mfaba *  vvy+mfaaa                  * (c1o1-vy2)-c1o6 * oMdrho * vy2;
-               m2 = mfaca * c1o2+mfaba * (vvy+c1o2)+(mfaaa+c1o6 * oMdrho) * (vy2+vvy) * c1o2;
-               mfaaa = m0;
-               mfaba = m1;
-               mfaca = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 = mfacb * c1o2+mfabb * (vvy-c1o2)+(mfaab+c2o3 * oMdrho) * (vy2-vvy) * c1o2;
-               m1 = -mfacb-c2o1* mfabb *  vvy+mfaab                  * (c1o1-vy2)-c2o3 * oMdrho * vy2;
-               m2 = mfacb * c1o2+mfabb * (vvy+c1o2)+(mfaab+c2o3 * oMdrho) * (vy2+vvy) * c1o2;
-               mfaab = m0;
-               mfabb = m1;
-               mfacb = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 = mfacc * c1o2+mfabc * (vvy-c1o2)+(mfaac+c1o6 * oMdrho) * (vy2-vvy) * c1o2;
-               m1 = -mfacc-c2o1* mfabc *  vvy+mfaac                  * (c1o1-vy2)-c1o6 * oMdrho * vy2;
-               m2 = mfacc * c1o2+mfabc * (vvy+c1o2)+(mfaac+c1o6 * oMdrho) * (vy2+vvy) * c1o2;
-               mfaac = m0;
-               mfabc = m1;
-               mfacc = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 = mfbca * c1o2+mfbba * (vvy-c1o2)+mfbaa * (vy2-vvy) * c1o2;
-               m1 = -mfbca-c2o1* mfbba *  vvy+mfbaa * (c1o1-vy2);
-               m2 = mfbca * c1o2+mfbba * (vvy+c1o2)+mfbaa * (vy2+vvy) * c1o2;
-               mfbaa = m0;
-               mfbba = m1;
-               mfbca = m2;
-               /////////b//////////////////////////////////////////////////////////////////////////
-               m0 = mfbcb * c1o2+mfbbb * (vvy-c1o2)+mfbab * (vy2-vvy) * c1o2;
-               m1 = -mfbcb-c2o1* mfbbb *  vvy+mfbab * (c1o1-vy2);
-               m2 = mfbcb * c1o2+mfbbb * (vvy+c1o2)+mfbab * (vy2+vvy) * c1o2;
-               mfbab = m0;
-               mfbbb = m1;
-               mfbcb = m2;
-               /////////b//////////////////////////////////////////////////////////////////////////
-               m0 = mfbcc * c1o2+mfbbc * (vvy-c1o2)+mfbac * (vy2-vvy) * c1o2;
-               m1 = -mfbcc-c2o1* mfbbc *  vvy+mfbac * (c1o1-vy2);
-               m2 = mfbcc * c1o2+mfbbc * (vvy+c1o2)+mfbac * (vy2+vvy) * c1o2;
-               mfbac = m0;
-               mfbbc = m1;
-               mfbcc = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 = mfcca * c1o2+mfcba * (vvy-c1o2)+(mfcaa+c1o18 * oMdrho) * (vy2-vvy) * c1o2;
-               m1 = -mfcca-c2o1* mfcba *  vvy+mfcaa                   * (c1o1-vy2)-c1o18 * oMdrho * vy2;
-               m2 = mfcca * c1o2+mfcba * (vvy+c1o2)+(mfcaa+c1o18 * oMdrho) * (vy2+vvy) * c1o2;
-               mfcaa = m0;
-               mfcba = m1;
-               mfcca = m2;
-               /////////c//////////////////////////////////////////////////////////////////////////
-               m0 = mfccb * c1o2+mfcbb * (vvy-c1o2)+(mfcab+c2o9 * oMdrho) * (vy2-vvy) * c1o2;
-               m1 = -mfccb-c2o1* mfcbb *  vvy+mfcab                  * (c1o1-vy2)-c2o9 * oMdrho * vy2;
-               m2 = mfccb * c1o2+mfcbb * (vvy+c1o2)+(mfcab+c2o9 * oMdrho) * (vy2+vvy) * c1o2;
-               mfcab = m0;
-               mfcbb = m1;
-               mfccb = m2;
-               /////////c//////////////////////////////////////////////////////////////////////////
-               m0 = mfccc * c1o2+mfcbc * (vvy-c1o2)+(mfcac+c1o18 * oMdrho) * (vy2-vvy) * c1o2;
-               m1 = -mfccc-c2o1* mfcbc *  vvy+mfcac                   * (c1o1-vy2)-c1o18 * oMdrho * vy2;
-               m2 = mfccc * c1o2+mfcbc * (vvy+c1o2)+(mfcac+c1o18 * oMdrho) * (vy2+vvy) * 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 * (vvx-c1o2)+(mfaaa+c1o36 * oMdrho) * (vx2-vvx) * c1o2;
-               m1 = -mfcaa-c2o1* mfbaa *  vvx+mfaaa                   * (c1o1-vx2)-c1o36 * oMdrho * vx2;
-               m2 = mfcaa * c1o2+mfbaa * (vvx+c1o2)+(mfaaa+c1o36 * oMdrho) * (vx2+vvx) * c1o2;
-               mfaaa = m0;
-               mfbaa = m1;
-               mfcaa = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 = mfcba * c1o2+mfbba * (vvx-c1o2)+(mfaba+c1o9 * oMdrho) * (vx2-vvx) * c1o2;
-               m1 = -mfcba-c2o1* mfbba *  vvx+mfaba                  * (c1o1-vx2)-c1o9 * oMdrho * vx2;
-               m2 = mfcba * c1o2+mfbba * (vvx+c1o2)+(mfaba+c1o9 * oMdrho) * (vx2+vvx) * c1o2;
-               mfaba = m0;
-               mfbba = m1;
-               mfcba = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 = mfcca * c1o2+mfbca * (vvx-c1o2)+(mfaca+c1o36 * oMdrho) * (vx2-vvx) * c1o2;
-               m1 = -mfcca-c2o1* mfbca *  vvx+mfaca                   * (c1o1-vx2)-c1o36 * oMdrho * vx2;
-               m2 = mfcca * c1o2+mfbca * (vvx+c1o2)+(mfaca+c1o36 * oMdrho) * (vx2+vvx) * c1o2;
-               mfaca = m0;
-               mfbca = m1;
-               mfcca = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 = mfcab * c1o2+mfbab * (vvx-c1o2)+(mfaab+c1o9 * oMdrho) * (vx2-vvx) * c1o2;
-               m1 = -mfcab-c2o1* mfbab *  vvx+mfaab                  * (c1o1-vx2)-c1o9 * oMdrho * vx2;
-               m2 = mfcab * c1o2+mfbab * (vvx+c1o2)+(mfaab+c1o9 * oMdrho) * (vx2+vvx) * c1o2;
-               mfaab = m0;
-               mfbab = m1;
-               mfcab = m2;
-               ///////////b////////////////////////////////////////////////////////////////////////
-               m0 = mfcbb * c1o2+mfbbb * (vvx-c1o2)+(mfabb+c4o9 * oMdrho) * (vx2-vvx) * c1o2;
-               m1 = -mfcbb-c2o1* mfbbb *  vvx+mfabb                  * (c1o1-vx2)-c4o9 * oMdrho * vx2;
-               m2 = mfcbb * c1o2+mfbbb * (vvx+c1o2)+(mfabb+c4o9 * oMdrho) * (vx2+vvx) * c1o2;
-               mfabb = m0;
-               mfbbb = m1;
-               mfcbb = m2;
-               ///////////b////////////////////////////////////////////////////////////////////////
-               m0 = mfccb * c1o2+mfbcb * (vvx-c1o2)+(mfacb+c1o9 * oMdrho) * (vx2-vvx) * c1o2;
-               m1 = -mfccb-c2o1* mfbcb *  vvx+mfacb                  * (c1o1-vx2)-c1o9 * oMdrho * vx2;
-               m2 = mfccb * c1o2+mfbcb * (vvx+c1o2)+(mfacb+c1o9 * oMdrho) * (vx2+vvx) * c1o2;
-               mfacb = m0;
-               mfbcb = m1;
-               mfccb = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 = mfcac * c1o2+mfbac * (vvx-c1o2)+(mfaac+c1o36 * oMdrho) * (vx2-vvx) * c1o2;
-               m1 = -mfcac-c2o1* mfbac *  vvx+mfaac                   * (c1o1-vx2)-c1o36 * oMdrho * vx2;
-               m2 = mfcac * c1o2+mfbac * (vvx+c1o2)+(mfaac+c1o36 * oMdrho) * (vx2+vvx) * c1o2;
-               mfaac = m0;
-               mfbac = m1;
-               mfcac = m2;
-               ///////////c////////////////////////////////////////////////////////////////////////
-               m0 = mfcbc * c1o2+mfbbc * (vvx-c1o2)+(mfabc+c1o9 * oMdrho) * (vx2-vvx) * c1o2;
-               m1 = -mfcbc-c2o1* mfbbc *  vvx+mfabc                  * (c1o1-vx2)-c1o9 * oMdrho * vx2;
-               m2 = mfcbc * c1o2+mfbbc * (vvx+c1o2)+(mfabc+c1o9 * oMdrho) * (vx2+vvx) * c1o2;
-               mfabc = m0;
-               mfbbc = m1;
-               mfcbc = m2;
-               ///////////c////////////////////////////////////////////////////////////////////////
-               m0 = mfccc * c1o2+mfbcc * (vvx-c1o2)+(mfacc+c1o36 * oMdrho) * (vx2-vvx) * c1o2;
-               m1 = -mfccc-c2o1* mfbcc *  vvx+mfacc                   * (c1o1-vx2)-c1o36 * oMdrho * vx2;
-               m2 = mfccc * c1o2+mfbcc * (vvx+c1o2)+(mfacc+c1o36 * oMdrho) * (vx2+vvx) * c1o2;
-               mfacc = m0;
-               mfbcc = m1;
-               mfccc = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-
-               //////////////////////////////////////////////////////////////////////////
-               //proof correctness
-               //////////////////////////////////////////////////////////////////////////
-#ifdef  PROOF_CORRECTNESS
-               real 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);
-               real 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)
-                     +" in " + block.lock()->toString()+" step = "+UbSystem::toString(step)));
-               }
-#endif
-               //////////////////////////////////////////////////////////////////////////
-               //write distribution
-               //////////////////////////////////////////////////////////////////////////
-               (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3)    = mfabb;
-               (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3)    = mfbab;
-               (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3)    = mfbba;
-               (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3)   = mfaab;
-               (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3)   = mfcab;
-               (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3)   = mfaba;
-               (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3)   = mfcba;
-               (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3)   = mfbaa;
-               (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3)   = mfbca;
-               (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3)  = mfaaa;
-               (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3)  = mfcaa;
-               (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3)  = mfaca;
-               (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3)  = mfcca;
-
-               (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3) = mfcbb;
-               (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3) = mfbcb;
-               (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p) = mfbbc;
-               (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3) = mfccb;
-               (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3) = mfacb;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p) = mfcbc;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p) = mfabc;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p) = mfbcc;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p) = mfbac;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p) = mfccc;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p) = mfacc;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p) = mfcac;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p) = mfaac;
-
-               (*this->zeroDistributions)(x1, x2, x3) = mfbbb;
-               //////////////////////////////////////////////////////////////////////////
-
-            }
-         }
-      }
-   }
-   //timer.stop();
-}
-//////////////////////////////////////////////////////////////////////////
-real CompressibleCumulant4thOrderViscosityLBMKernel::getCalculationTime()
-{
-   //return timer.getDuration();
-   return timer.getTotalTime();
-}
-//////////////////////////////////////////////////////////////////////////
-void CompressibleCumulant4thOrderViscosityLBMKernel::setBulkViscosity(real value)
-{
-   bulkViscosity = value;
-}
-
-//////////////////////////////////////////////////////////////////////////
-//void CompressibleCumulant4thOrderViscosityLBMKernel::setBulkOmegaToOmega(bool value)
-//{
-//   bulkOmegaToOmega = value;
-//}
-
-//void CompressibleCumulant4thOrderViscosityLBMKernel::setViscosityFlag(bool vf)
-//{
-//   viscosityFlag = vf;
-//}
diff --git a/src/cpu/core/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h b/src/cpu/core/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h
deleted file mode 100644
index 3b7ee8f84..000000000
--- a/src/cpu/core/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef CompressibleCumulant4thOrderViscosityLBMKernel_h__
-#define CompressibleCumulant4thOrderViscosityLBMKernel_h__
-
-#include "LBMKernel.h"
-#include "BCSet.h"
-#include "D3Q27System.h"
-#include "basics/utilities/UbTiming.h"
-#include "basics/container/CbArray4D.h"
-#include "basics/container/CbArray3D.h"
-
-//! \brief   compressible cumulant LBM kernel. 
-//! \details CFD solver that use Cascaded Cumulant Lattice Boltzmann method for D3Q27 model
-//! \author  K. Kutscher, M. Geier
-class CompressibleCumulant4thOrderViscosityLBMKernel :  public LBMKernel
-{
-public:
-   //! This option set relaxation parameter: NORMAL  
-   enum Parameter{NORMAL, MAGIC};
-public:
-   CompressibleCumulant4thOrderViscosityLBMKernel();
-   ~CompressibleCumulant4thOrderViscosityLBMKernel() override;
-   void calculate(int step) override;
-   SPtr<LBMKernel> clone() override;
-   real getCalculationTime() override;
-   //! The value should not be equal to a shear viscosity
-   void setBulkViscosity(real value);
-protected:
-   virtual void initDataSet();
-   real f[D3Q27System::ENDF+1];
-
-   UbTimer timer;
-
-   CbArray4D<real,IndexerX4X3X2X1>::CbArray4DPtr localDistributions;
-   CbArray4D<real,IndexerX4X3X2X1>::CbArray4DPtr nonLocalDistributions;
-   CbArray3D<real,IndexerX3X2X1>::CbArray3DPtr   zeroDistributions;
-
-   mu::value_type muX1,muX2,muX3;
-   mu::value_type muDeltaT;
-   mu::value_type muNu;
-   real forcingX1;
-   real forcingX2;
-   real forcingX3;
-   
-   // bulk viscosity
-   real OxxPyyPzz; //omega2 (bulk viscosity)
-   real bulkViscosity;
-
-};
-#endif // CompressibleCumulant4thOrderViscosityLBMKernel_h__
-
-
diff --git a/src/cpu/core/LBM/CumulantK17LBMKernel.cpp b/src/cpu/core/LBM/CumulantK17LBMKernel.cpp
deleted file mode 100644
index ec59cf349..000000000
--- a/src/cpu/core/LBM/CumulantK17LBMKernel.cpp
+++ /dev/null
@@ -1,639 +0,0 @@
-//=======================================================================================
-// ____          ____    __    ______     __________   __      __       __        __
-// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
-//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
-//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
-//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
-//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
-//      \    \  |    |   ________________________________________________________________
-//       \    \ |    |  |  ______________________________________________________________|
-//        \    \|    |  |  |         __          __     __     __     ______      _______
-//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
-//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
-//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
-//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
-//
-//  This file is part of VirtualFluids. VirtualFluids is free software: you can
-//  redistribute it and/or modify it under the terms of the GNU General Public
-//  License as published by the Free Software Foundation, either version 3 of
-//  the License, or (at your option) any later version.
-//
-//  VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
-//  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-//  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-//  for more details.
-//
-//  You should have received a copy of the GNU General Public License along
-//  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
-//
-//! \file CumulantK17LBMKernel.cpp
-//! \ingroup LBM
-//! \author Konstantin Kutscher, Martin Geier
-//=======================================================================================
-#include "CumulantK17LBMKernel.h"
-#include "D3Q27System.h"
-#include "D3Q27EsoTwist3DSplittedVector.h"
-#include <cmath>
-#include "DataSet3D.h"
-#include "LBMKernel.h"
-#include "Block3D.h"
-#include "BCArray3D.h"
-
-#include <lbm/ChimeraTransformation.h>
-
-#define PROOF_CORRECTNESS
-
-//using namespace UbMath;
-using namespace vf::basics::constant;
-using namespace vf::lbm;
-
-//////////////////////////////////////////////////////////////////////////
-CumulantK17LBMKernel::CumulantK17LBMKernel()
-{
-    this->compressible = true;
-}
-//////////////////////////////////////////////////////////////////////////
-void CumulantK17LBMKernel::initDataSet()
-{
-    SPtr<DistributionArray3D> d(new D3Q27EsoTwist3DSplittedVector(nx[0] + 2, nx[1] + 2, nx[2] + 2, -999.9));
-    dataSet->setFdistributions(d);
-}
-//////////////////////////////////////////////////////////////////////////
-SPtr<LBMKernel> CumulantK17LBMKernel::clone()
-{
-    SPtr<LBMKernel> kernel(new CumulantK17LBMKernel());
-    kernel->setNX(nx);
-    std::dynamic_pointer_cast<CumulantK17LBMKernel>(kernel)->initDataSet();
-    kernel->setCollisionFactor(this->collFactor);
-    kernel->setBCSet(bcSet->clone(kernel));
-    kernel->setWithForcing(withForcing);
-    kernel->setForcingX1(muForcingX1);
-    kernel->setForcingX2(muForcingX2);
-    kernel->setForcingX3(muForcingX3);
-    kernel->setIndex(ix1, ix2, ix3);
-    kernel->setDeltaT(deltaT);
-    kernel->setBlock(block.lock());
-
-    return kernel;
-}
-//////////////////////////////////////////////////////////////////////////
-void CumulantK17LBMKernel::calculate(int step)
-{
-    //////////////////////////////////////////////////////////////////////////
-    //! Cumulant K17 Kernel is based on
-    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
-    //! and
-    //! <a href="https://doi.org/10.1016/j.jcp.2017.07.004"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.07.004 ]</b></a>
-    //!
-    //! The cumulant kernel is executed in the following steps
-    //!
-    ////////////////////////////////////////////////////////////////////////////////
-    //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim.
-    //!
-
-    using namespace std;
-
-    //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 = (c1o1 / c3o1) * (c1o1 / collFactor - c1o1 / c2o1);
-
-        muForcingX1.DefineVar("nu", &muNu);
-        muForcingX2.DefineVar("nu", &muNu);
-        muForcingX3.DefineVar("nu", &muNu);
-    }
-    /////////////////////////////////////
-
-    localDistributions = dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions();
-    nonLocalDistributions = dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions();
-    restDistributions = dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions();
-
-    SPtr<BCArray3D> bcArray = this->getBCSet()->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;
-
-    real omega = collFactor;
-
-    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: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm
-                    //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a>
-                    //!
-                    ////////////////////////////////////////////////////////////////////////////
-                    //////////////////////////////////////////////////////////////////////////
-
-                    //E   N  T
-                    //c   c  c
-                    //////////
-                    //W   S  B
-                    //a   a  a
-
-                    //Rest is b
-
-                    //mfxyz
-                    //a - negative
-                    //b - null
-                    //c - positive
-
-                    // a b c
-                    //-1 0 1
-
-                    real mfcbb = (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3);
-                    real mfbcb = (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3);
-                    real mfbbc = (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3);
-                    real mfccb = (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3);
-                    real mfacb = (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3);
-                    real mfcbc = (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3);
-                    real mfabc = (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3);
-                    real mfbcc = (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3);
-                    real mfbac = (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3);
-                    real mfccc = (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3);
-                    real mfacc = (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3);
-                    real mfcac = (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3);
-                    real mfaac = (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3);
-
-                    real mfabb = (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3);
-                    real mfbab = (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3);
-                    real mfbba = (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p);
-                    real mfaab = (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3);
-                    real mfcab = (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3);
-                    real mfaba = (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p);
-                    real mfcba = (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p);
-                    real mfbaa = (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p);
-                    real mfbca = (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p);
-                    real mfaaa = (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p);
-                    real mfcaa = (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p);
-                    real mfaca = (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p);
-                    real mfcca = (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p);
-
-                    real mfbbb = (*this->restDistributions)(x1, x2, x3);
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Calculate density and velocity using pyramid summation for low round-off errors as in Eq. (J1)-(J3)
-                    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa.2015.05.001 ]</b></a>
-                    //!
-                    real 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;
-
-                    real rho = c1o1 + drho;
-                    real OOrho = c1o1 / rho;
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
-                                   (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
-                                   (mfcbb - mfabb)) / rho;
-                    real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
-                                   (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
-                                   (mfbcb - mfbab)) / rho;
-                    real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
-                                   (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
-                                   (mfbbc - mfbba)) / rho;
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //forcing
-                    ///////////////////////////////////////////////////////////////////////////////////////////
-                    if (withForcing)
-                    {
-                        muX1 = static_cast<real>(x1 - 1 + ix1 * maxX1);
-                        muX2 = static_cast<real>(x2 - 1 + ix2 * maxX2);
-                        muX3 = static_cast<real>(x3 - 1 + ix3 * maxX3);
-
-                        forcingX1 = muForcingX1.Eval();
-                        forcingX2 = muForcingX2.Eval();
-                        forcingX3 = muForcingX3.Eval();
-
-                        ////////////////////////////////////////////////////////////////////////////////////
-                        //! - Add half of the acceleration (body force) to the velocity as in Eq. (42)
-                        //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa.2015.05.001 ]</b></a>
-                        //!
-                        vvx += forcingX1 * deltaT * c1o2; // X
-                        vvy += forcingX2 * deltaT * c1o2; // Y
-                        vvz += forcingX3 * deltaT * c1o2; // Z
-                    }
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    // calculate the square of velocities for this lattice node
-                    real vx2 = vvx * vvx;
-                    real vy2 = vvy * vvy;
-                    real vz2 = vvz * vvz;
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Set relaxation limiters for third order cumulants to default value \f$ \lambda=0.001 \f$ according to section 6 in
-                    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
-                    //!
-                    real wadjust;
-                    real qudricLimitP = c1o100;
-                    real qudricLimitM = c1o100;
-                    real qudricLimitD = c1o100;
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Chimera transform from well conditioned distributions to central moments as defined in Appendix J in
-                    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa.2015.05.001 ]</b></a>
-                    //! see also Eq. (6)-(14) in
-                    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
-                    //!
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    // Z - Dir
-                    forwardInverseChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, c36o1, c1o36);
-                    forwardInverseChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2, c9o1, c1o9);
-                    forwardInverseChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c36o1, c1o36);
-                    forwardInverseChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2, c9o1, c1o9);
-                    forwardInverseChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2, c9o4, c4o9);
-                    forwardInverseChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2, c9o1, c1o9);
-                    forwardInverseChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c36o1, c1o36);
-                    forwardInverseChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2, c9o1, c1o9);
-                    forwardInverseChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c36o1, c1o36);
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    // Y - Dir
-                    forwardInverseChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c6o1, c1o6);
-                    forwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
-                    forwardInverseChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c18o1, c1o18);
-                    forwardInverseChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2, c3o2, c2o3);
-                    forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
-                    forwardInverseChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2, c9o2, c2o9);
-                    forwardInverseChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c6o1, c1o6);
-                    forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
-                    forwardInverseChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c18o1, c1o18);
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    // X - Dir
-                    forwardInverseChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o1, c1o1);
-                    forwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
-                    forwardInverseChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c3o1, c1o3);
-                    forwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
-                    forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
-                    forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
-                    forwardInverseChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c3o1, c1o3);
-                    forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
-                    forwardInverseChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c9o1, c1o9);
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Setting relaxation rates for non-hydrodynamic cumulants (default values). Variable names and equations according to
-                    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
-                    //!  => [NAME IN PAPER]=[NAME IN CODE]=[DEFAULT VALUE].
-                    //!  - Trace of second order cumulants \f$ C_{200}+C_{020}+C_{002} \f$ used to adjust bulk viscosity:\f$\omega_2=OxxPyyPzz=1.0 \f$.
-                    //!  - Third order cumulants \f$ C_{120}+C_{102} \f$, \f$ C_{210}+C_{012} \f$, \f$ C_{201}+C_{021} \f$: \f$\omega_3=OxyyPxzz\f$ set according to Eq. (111) with simplifications assuming \f$\omega_2=1.0\f$.
-                    //!  - Third order cumulants \f$ C_{120}-C_{102} \f$, \f$ C_{210}-C_{012} \f$, \f$ C_{201}-C_{021} \f$: \f$\omega_4 = OxyyMxzz\f$ set according to Eq. (112) with simplifications assuming \f$\omega_2 = 1.0\f$.
-                    //!  - Third order cumulants \f$ C_{111} \f$: \f$\omega_5 = Oxyz\f$ set according to Eq. (113) with simplifications assuming \f$\omega_2 = 1.0\f$  (modify for different bulk viscosity).
-                    //!  - Fourth order cumulants \f$ C_{220} \f$, \f$ C_{202} \f$, \f$ C_{022} \f$, \f$ C_{211} \f$, \f$ C_{121} \f$, \f$ C_{112} \f$: for simplification all set to the same default value \f$ \omega_6=\omega_7=\omega_8=O4=1.0 \f$.
-                    //!  - Fifth order cumulants \f$ C_{221}\f$, \f$C_{212}\f$, \f$C_{122}\f$: \f$\omega_9=O5=1.0\f$.
-                    //!  - Sixth order cumulant \f$ C_{222}\f$: \f$\omega_{10}=O6=1.0\f$.
-                    //!
-                    ////////////////////////////////////////////////////////////
-                    //2.
-                    real OxxPyyPzz = c1o1;
-                    ////////////////////////////////////////////////////////////
-                    //3.
-                    real OxyyPxzz = c8o1 * (-c2o1 + omega) * ( c1o1 + c2o1 *omega) / (-c8o1 - c14o1 *omega + c7o1 *omega*omega);
-                    real OxyyMxzz = c8o1 * (-c2o1 + omega) * (-c7o1 + c4o1 *omega) / (c56o1 - c50o1 *omega + c9o1 *omega*omega);
-                    real Oxyz     = c24o1 * (-c2o1 + omega) * (-c2o1 - c7o1 *omega + c3o1 *omega*omega) / (c48o1 + c152o1 *omega - c130o1 *omega*omega + c29o1 *omega*omega*omega);
-                    ////////////////////////////////////////////////////////////
-                    //4.
-                    real O4 = c1o1;
-                    ////////////////////////////////////////////////////////////
-                    //5.
-                    real O5 = c1o1;
-                    ////////////////////////////////////////////////////////////
-                    //6.
-                    real O6 = c1o1;
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (115) and (116)
-                    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
-                    //! with simplifications assuming \f$\omega_2 = 1.0\f$ (modify for different bulk viscosity).
-                    //!
-                    real A = (c4o1 + c2o1 *omega - c3o1 *omega*omega) / (c2o1 - c7o1 *omega + c5o1 *omega*omega);
-                    real B = (c4o1 + c28o1 *omega - c14o1 *omega*omega) / (c6o1 - c21o1 *omega + c15o1 *omega*omega);
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Compute cumulants from central moments according to Eq. (20)-(23) in
-                    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
-                    //!
-                    ////////////////////////////////////////////////////////////
-                    //4.
-                    real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + c2o1 * mfbba * mfbab) * OOrho;
-                    real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) * OOrho;
-                    real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) * OOrho;
-
-                    real CUMcca = mfcca - (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) * OOrho - c1o9 * (drho * OOrho));
-                    real CUMcac = mfcac - (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) * OOrho - c1o9 * (drho * OOrho));
-                    real CUMacc = mfacc - (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) * OOrho - c1o9 * (drho * OOrho));
-                    ////////////////////////////////////////////////////////////
-                    //5.
-                    real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) * OOrho;
-                    real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) * OOrho;
-                    real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) * OOrho;
-                    ////////////////////////////////////////////////////////////
-                    //6.
-                    real CUMccc = mfccc + ((-c4o1 * mfbbb * mfbbb
-                                               - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-                                               - c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-                                               - c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) * OOrho
-                                              + (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-                                                 + c2o1 * (mfcaa * mfaca * mfaac)
-                                                 + c16o1 * mfbba * mfbab * mfabb) * OOrho * OOrho
-                                              - c1o3 * (mfacc + mfcac + mfcca) * OOrho
-                                              - c1o9 * (mfcaa + mfaca + mfaac) * OOrho
-                                              + (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-                                                 + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 * (mfaac + mfaca + mfcaa)) * OOrho * OOrho * c2o3
-                                              + c1o27 * ((drho * drho - drho) * OOrho * OOrho));
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Compute linear combinations of second and third order cumulants
-                    //!
-                    ////////////////////////////////////////////////////////////
-                    //2.
-                    real mxxPyyPzz = mfcaa + mfaca + mfaac;
-                    real mxxMyy = mfcaa - mfaca;
-                    real mxxMzz = mfcaa - mfaac;
-                    ////////////////////////////////////////////////////////////
-                    //3.
-                    real mxxyPyzz = mfcba + mfabc;
-                    real mxxyMyzz = mfcba - mfabc;
-
-                    real mxxzPyyz = mfcab + mfacb;
-                    real mxxzMyyz = mfcab - mfacb;
-
-                    real mxyyPxzz = mfbca + mfbac;
-                    real mxyyMxzz = mfbca - mfbac;
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //incl. correction
-                    ////////////////////////////////////////////////////////////
-                    //! - Compute velocity  gradients from second order cumulants according to Eq. (27)-(32)
-                    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
-                    //! Further explanations of the correction in viscosity in Appendix H of
-                    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa.2015.05.001 ]</b></a>
-                    //! Note that the division by rho is omitted here as we need rho times the gradients later.
-                    //!
-                    real Dxy = -c3o1 * omega * mfbba;
-                    real Dxz = -c3o1 * omega * mfbab;
-                    real Dyz = -c3o1 * omega * mfabb;
-                    real dxux = c1o2 * (-omega) * (mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz * (mfaaa - mxxPyyPzz);
-                    real dyuy = dxux + omega * c3o2 * mxxMyy;
-                    real dzuz = dxux + omega * c3o2 * mxxMzz;
-                    ////////////////////////////////////////////////////////////
-                    //! - Relaxation of second order cumulants with correction terms according to Eq. (33)-(35) in
-                    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
-                    //!
-                    mxxPyyPzz += OxxPyyPzz * (mfaaa - mxxPyyPzz) - c3o1 * (c1o1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
-                    mxxMyy += omega * (-mxxMyy) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy);
-                    mxxMzz += omega * (-mxxMzz) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz);
-
-                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-                    ////no correction
-                    //mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz);
-                    //mxxMyy += -(-omega) * (-mxxMyy);
-                    //mxxMzz += -(-omega) * (-mxxMzz);
-                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-                    mfabb += omega * (-mfabb);
-                    mfbab += omega * (-mfbab);
-                    mfbba += omega * (-mfbba);
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //relax
-                    //////////////////////////////////////////////////////////////////////////
-                    // incl. limiter
-                    //! - Relaxation of third order cumulants including limiter according to Eq. (116)-(123)
-                    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
-                    //!
-                    wadjust = Oxyz + (c1o1 - Oxyz) * abs(mfbbb) / (abs(mfbbb) + qudricLimitD);
-                    mfbbb += wadjust * (-mfbbb);
-                    wadjust = OxyyPxzz + (c1o1 - OxyyPxzz) * abs(mxxyPyzz) / (abs(mxxyPyzz) + qudricLimitP);
-                    mxxyPyzz += wadjust * (-mxxyPyzz);
-                    wadjust = OxyyMxzz + (c1o1 - OxyyMxzz) * abs(mxxyMyzz) / (abs(mxxyMyzz) + qudricLimitM);
-                    mxxyMyzz += wadjust * (-mxxyMyzz);
-                    wadjust = OxyyPxzz + (c1o1 - OxyyPxzz) * abs(mxxzPyyz) / (abs(mxxzPyyz) + qudricLimitP);
-                    mxxzPyyz += wadjust * (-mxxzPyyz);
-                    wadjust = OxyyMxzz + (c1o1 - OxyyMxzz) * abs(mxxzMyyz) / (abs(mxxzMyyz) + qudricLimitM);
-                    mxxzMyyz += wadjust * (-mxxzMyyz);
-                    wadjust = OxyyPxzz + (c1o1 - OxyyPxzz) * abs(mxyyPxzz) / (abs(mxyyPxzz) + qudricLimitP);
-                    mxyyPxzz += wadjust * (-mxyyPxzz);
-                    wadjust = OxyyMxzz + (c1o1 - OxyyMxzz) * abs(mxyyMxzz) / (abs(mxyyMxzz) + qudricLimitM);
-                    mxyyMxzz += wadjust * (-mxyyMxzz);
-                    //////////////////////////////////////////////////////////////////////////
-                    // no limiter
-                    //mfbbb += OxyyMxzz * (-mfbbb);
-                    //mxxyPyzz += OxyyPxzz * (-mxxyPyzz);
-                    //mxxyMyzz += OxyyMxzz * (-mxxyMyzz);
-                    //mxxzPyyz += OxyyPxzz * (-mxxzPyyz);
-                    //mxxzMyyz += OxyyMxzz * (-mxxzMyyz);
-                    //mxyyPxzz += OxyyPxzz * (-mxyyPxzz);
-                    //mxyyMxzz += OxyyMxzz * (-mxyyMxzz);
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Compute inverse linear combinations of second and third order cumulants
-                    //!
-                    mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz);
-                    mfaca = c1o3 * (-c2o1 * mxxMyy + mxxMzz + mxxPyyPzz);
-                    mfaac = c1o3 * (mxxMyy - c2o1 * mxxMzz + mxxPyyPzz);
-
-                    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.
-                    // no limiter
-                    //! - Relax fourth order cumulants to modified equilibrium for fourth order convergence of diffusion according to Eq. (43)-(48)
-                    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
-                    //!
-                    CUMacc = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMacc);
-                    CUMcac = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMcac);
-                    CUMcca = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * A + (c1o1 - O4) * (CUMcca);
-                    CUMbbc = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * B + (c1o1 - O4) * (CUMbbc);
-                    CUMbcb = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * B + (c1o1 - O4) * (CUMbcb);
-                    CUMcbb = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * B + (c1o1 - O4) * (CUMcbb);
-
-                    //////////////////////////////////////////////////////////////////////////
-                    //5.
-                    CUMbcc += O5 * (-CUMbcc);
-                    CUMcbc += O5 * (-CUMcbc);
-                    CUMccb += O5 * (-CUMccb);
-
-                    //////////////////////////////////////////////////////////////////////////
-                    //6.
-                    CUMccc += O6 * (-CUMccc);
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Compute central moments from post collision cumulants according to Eq. (53)-(56) in
-                    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
-                    //!
-
-                    //////////////////////////////////////////////////////////////////////////
-                    //4.
-                    mfcbb = CUMcbb + c1o3 * ((c3o1 * mfcaa + c1o1) * mfabb + c6o1 * mfbba * mfbab) * OOrho;
-                    mfbcb = CUMbcb + c1o3 * ((c3o1 * mfaca + c1o1) * mfbab + c6o1 * mfbba * mfabb) * OOrho;
-                    mfbbc = CUMbbc + c1o3 * ((c3o1 * mfaac + c1o1) * mfbba + c6o1 * mfbab * mfabb) * OOrho;
-
-                    mfcca = CUMcca + (((mfcaa * mfaca + c2o1 * mfbba * mfbba) * c9o1 + c3o1 * (mfcaa + mfaca)) * OOrho - (drho * OOrho)) * c1o9;
-                    mfcac = CUMcac + (((mfcaa * mfaac + c2o1 * mfbab * mfbab) * c9o1 + c3o1 * (mfcaa + mfaac)) * OOrho - (drho * OOrho)) * c1o9;
-                    mfacc = CUMacc + (((mfaac * mfaca + c2o1 * mfabb * mfabb) * c9o1 + c3o1 * (mfaac + mfaca)) * OOrho - (drho * OOrho)) * c1o9;
-
-                    //////////////////////////////////////////////////////////////////////////
-                    //5.
-                    mfbcc = CUMbcc + c1o3 * (c3o1 * (mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + (mfbca + mfbac)) * OOrho;
-                    mfcbc = CUMcbc + c1o3 * (c3o1 * (mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + (mfcba + mfabc)) * OOrho;
-                    mfccb = CUMccb + c1o3 * (c3o1 * (mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + (mfacb + mfcab)) * OOrho;
-
-                    //////////////////////////////////////////////////////////////////////////
-                    //6.
-                    mfccc = CUMccc - ((-c4o1 * mfbbb * mfbbb
-                                       - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-                                       - c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-                                       - c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) * OOrho
-                                      + (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-                                         + c2o1 * (mfcaa * mfaca * mfaac)
-                                         + c16o1 * mfbba * mfbab * mfabb) * OOrho * OOrho
-                                      - c1o3 * (mfacc + mfcac + mfcca) * OOrho
-                                      - c1o9 * (mfcaa + mfaca + mfaac) * OOrho
-                                      + (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-                                         + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 * (mfaac + mfaca + mfcaa)) * OOrho * OOrho * c2o3
-                                      + c1o27 * ((drho * drho - drho) * OOrho * OOrho));
-
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //! -  Add acceleration (body force) to first order cumulants according to Eq. (85)-(87) in
-                    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa.2015.05.001 ]</b></a>
-                    //!
-                    mfbaa = -mfbaa;
-                    mfaba = -mfaba;
-                    mfaab = -mfaab;
-                    ////////////////////////////////////////////////////////////////////////////////////
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Chimera transform from central moments to well conditioned distributions as defined in Appendix J in
-                    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa.2015.05.001 ]</b></a>
-                    //! see also Eq. (88)-(96) in
-                    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
-                    //!
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    // X - Dir
-                    backwardInverseChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o1, c1o1);
-                    backwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
-                    backwardInverseChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c3o1, c1o3);
-                    backwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
-                    backwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
-                    backwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
-                    backwardInverseChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c3o1, c1o3);
-                    backwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
-                    backwardInverseChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c9o1, c1o9);
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    // Y - Dir
-                    backwardInverseChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c6o1, c1o6);
-                    backwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
-                    backwardInverseChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c18o1, c1o18);
-                    backwardInverseChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2, c3o2, c2o3);
-                    backwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
-                    backwardInverseChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2, c9o2, c2o9);
-                    backwardInverseChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c6o1, c1o6);
-                    backwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
-                    backwardInverseChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c18o1, c1o18);
-
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    // Z - Dir
-                    backwardInverseChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, c36o1, c1o36);
-                    backwardInverseChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2, c9o1, c1o9);
-                    backwardInverseChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c36o1, c1o36);
-                    backwardInverseChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2, c9o1, c1o9);
-                    backwardInverseChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2, c9o4, c4o9);
-                    backwardInverseChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2, c9o1, c1o9);
-                    backwardInverseChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c36o1, c1o36);
-                    backwardInverseChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2, c9o1, c1o9);
-                    backwardInverseChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c36o1, c1o36);
-                    ////////////////////////////////////////////////////////////////////////////////////
-
-                    //////////////////////////////////////////////////////////////////////////
-                    //proof correctness
-                    //////////////////////////////////////////////////////////////////////////
-#ifdef  PROOF_CORRECTNESS
-                    real 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;
-                    real 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)
-                                                        + " in " + block.lock()->toString() + " step = " + UbSystem::toString(step)));
-                    }
-#endif
-                    ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Write distributions: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm
-                    //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a>
-                    //!
-                    (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = mfabb;
-                    (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = mfbab;
-                    (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = mfbba;
-                    (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = mfaab;
-                    (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3) = mfcab;
-                    (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = mfaba;
-                    (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3) = mfcba;
-                    (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = mfbaa;
-                    (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3) = mfbca;
-                    (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = mfaaa;
-                    (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3) = mfcaa;
-                    (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3) = mfaca;
-                    (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3) = mfcca;
-
-                    (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3) = mfcbb;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3) = mfbcb;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p) = mfbbc;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3) = mfccb;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3) = mfacb;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p) = mfcbc;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p) = mfabc;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p) = mfbcc;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p) = mfbac;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p) = mfccc;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p) = mfacc;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p) = mfcac;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p) = mfaac;
-
-                    (*this->restDistributions)(x1, x2, x3) = mfbbb;
-                    //////////////////////////////////////////////////////////////////////////
-
-                }
-            }
-        }
-    }
-}
-//////////////////////////////////////////////////////////////////////////
-
diff --git a/src/cpu/core/LBM/CumulantK17LBMKernel.h b/src/cpu/core/LBM/CumulantK17LBMKernel.h
deleted file mode 100644
index aa202d789..000000000
--- a/src/cpu/core/LBM/CumulantK17LBMKernel.h
+++ /dev/null
@@ -1,76 +0,0 @@
-//=======================================================================================
-// ____          ____    __    ______     __________   __      __       __        __
-// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |
-//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |
-//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |
-//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____
-//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|
-//      \    \  |    |   ________________________________________________________________
-//       \    \ |    |  |  ______________________________________________________________|
-//        \    \|    |  |  |         __          __     __     __     ______      _______
-//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)
-//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______
-//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
-//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/
-//
-//  This file is part of VirtualFluids. VirtualFluids is free software: you can
-//  redistribute it and/or modify it under the terms of the GNU General Public
-//  License as published by the Free Software Foundation, either version 3 of
-//  the License, or (at your option) any later version.
-//
-//  VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
-//  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-//  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-//  for more details.
-//
-//  You should have received a copy of the GNU General Public License along
-//  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
-//
-//! \file CumulantK17LBMKernel.h
-//! \ingroup LBM
-//! \author Konstantin Kutscher, Martin Geier
-//=======================================================================================
-
-#ifndef CumulantK17LBMKernel_h__
-#define CumulantK17LBMKernel_h__
-
-#include "LBMKernel.h"
-#include "BCSet.h"
-#include "D3Q27System.h"
-#include "basics/utilities/UbTiming.h"
-#include "basics/container/CbArray4D.h"
-#include "basics/container/CbArray3D.h"
-
-//! \brief   Compressible cumulant LBM kernel.
-//! \details  LBM implementation that use Cascaded Cumulant Lattice Boltzmann method for D3Q27 model
-//!
-//! The model is publisched in
-//! <a href="http://dx.doi.org/10.1016/j.jcp.2017.05.040"><b>[ Geier et al., (2017), 10.1016/j.jcp.2017.05.040]</b></a>,
-//! <a href="http://dx.doi.org/10.1016/j.jcp.2017.07.004"><b>[ Geier et al., (2017), 10.1016/j.jcp.2017.07.004]</b></a>
-//!
-class CumulantK17LBMKernel : public LBMKernel
-{
-public:
-    CumulantK17LBMKernel();
-    ~CumulantK17LBMKernel() = default;
-    void calculate(int step) override;
-    SPtr<LBMKernel> clone() override;
-    real getCalculationTime() override { return .0; }
-
-protected:
-    virtual void initDataSet();
-    real f[D3Q27System::ENDF + 1];
-
-    CbArray4D<real, IndexerX4X3X2X1>::CbArray4DPtr localDistributions;
-    CbArray4D<real, IndexerX4X3X2X1>::CbArray4DPtr nonLocalDistributions;
-    CbArray3D<real, IndexerX3X2X1>::CbArray3DPtr restDistributions;
-
-    mu::value_type muX1, muX2, muX3;
-    mu::value_type muDeltaT;
-    mu::value_type muNu;
-    real forcingX1;
-    real forcingX2;
-    real forcingX3;
-};
-
-#endif // CumulantK17LBMKernel_h__
diff --git a/src/cpu/core/LBM/CumulantLBMKernel.cpp b/src/cpu/core/LBM/CumulantLBMKernel.cpp
deleted file mode 100644
index 1b8d5a230..000000000
--- a/src/cpu/core/LBM/CumulantLBMKernel.cpp
+++ /dev/null
@@ -1,1966 +0,0 @@
-#include "CumulantLBMKernel.h"
-#include "D3Q27System.h"
-#include "Interpolator.h"
-#include "D3Q27EsoTwist3DSplittedVector.h"
-#include <math.h>
-#include "DataSet3D.h"
-#include "Block3D.h"
-
-#define PROOF_CORRECTNESS
-
-//using namespace UbMath;
-using namespace vf::basics::constant;
-
-//////////////////////////////////////////////////////////////////////////
-CumulantLBMKernel::CumulantLBMKernel()
-{
-   this->compressible = true;
-   this->parameter = CumulantLBMKernel::NORMAL;
-   this->OxyyMxzz = c1o1;
-   this->bulkOmegaToOmega = false;
-   this->OxxPyyPzz = c1o1;
-}
-//////////////////////////////////////////////////////////////////////////
-void CumulantLBMKernel::initDataSet()
-{
-   SPtr<DistributionArray3D> d(new D3Q27EsoTwist3DSplittedVector(nx[0] + 2, nx[1] + 2, nx[2] + 2, -999.9));
-   dataSet->setFdistributions(d);
-}
-//////////////////////////////////////////////////////////////////////////
-SPtr<LBMKernel> CumulantLBMKernel::clone()
-{
-   SPtr<LBMKernel> kernel(new CumulantLBMKernel());
-   kernel->setNX(nx);
-   dynamicPointerCast<CumulantLBMKernel>(kernel)->initDataSet();
-   kernel->setCollisionFactor(this->collFactor);
-   kernel->setBCSet(bcSet->clone(kernel));
-   kernel->setWithForcing(withForcing);
-   kernel->setForcingX1(muForcingX1);
-   kernel->setForcingX2(muForcingX2);
-   kernel->setForcingX3(muForcingX3);
-   kernel->setIndex(ix1, ix2, ix3);
-   kernel->setDeltaT(deltaT);
-   kernel->setBlock(block.lock());
-
-   switch (parameter)
-   {
-   case NORMAL:
-      dynamicPointerCast<CumulantLBMKernel>(kernel)->OxyyMxzz = c1o1;
-      break;
-   case MAGIC:
-      dynamicPointerCast<CumulantLBMKernel>(kernel)->OxyyMxzz = c2o1 + (-collFactor);
-      break;
-   }
-
-   if (bulkOmegaToOmega)
-   {
-      dynamicPointerCast<CumulantLBMKernel>(kernel)->OxxPyyPzz = collFactor;
-   }
-   else
-   {
-      dynamicPointerCast<CumulantLBMKernel>(kernel)->OxxPyyPzz = c1o1;
-   }
-   return kernel;
-}
-//////////////////////////////////////////////////////////////////////////
-//void CumulantLBMKernel::calculate(int step)
-//{
-//   using namespace D3Q27System;
-//   using namespace std;
-//
-//   //timer.resetAndStart();
-//
-//   //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;
-//   }
-//   /////////////////////////////////////
-//
-//   localDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions();
-//   nonLocalDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions();
-//   zeroDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions();
-//
-//   SPtr<BCArray3D> bcArray = this->getBCSet()->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;
-//
-//   LBMReal omega = collFactor;
-//
-//
-//   //#pragma omp parallel num_threads(8)
-//   {
-//      //   int i = omp_get_thread_num();
-//      //   printf_s("Hello from thread %d\n", i);
-//      //}
-//   //#pragma omp for 
-//      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 distribution
-//                  ////////////////////////////////////////////////////////////////////////////
-//                  //////////////////////////////////////////////////////////////////////////
-//
-//                  //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
-//
-//                  LBMReal mfcbb = (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3);
-//                  LBMReal mfbcb = (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3);
-//                  LBMReal mfbbc = (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3);
-//                  LBMReal mfccb = (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3);
-//                  LBMReal mfacb = (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3);
-//                  LBMReal mfcbc = (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3);
-//                  LBMReal mfabc = (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3);
-//                  LBMReal mfbcc = (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3);
-//                  LBMReal mfbac = (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3);
-//                  LBMReal mfccc = (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3);
-//                  LBMReal mfacc = (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3);
-//                  LBMReal mfcac = (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3);
-//                  LBMReal mfaac = (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3);
-//
-//                  LBMReal mfabb = (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3);
-//                  LBMReal mfbab = (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3);
-//                  LBMReal mfbba = (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p);
-//                  LBMReal mfaab = (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3);
-//                  LBMReal mfcab = (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3);
-//                  LBMReal mfaba = (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p);
-//                  LBMReal mfcba = (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p);
-//                  LBMReal mfbaa = (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p);
-//                  LBMReal mfbca = (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p);
-//                  LBMReal mfaaa = (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p);
-//                  LBMReal mfcaa = (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p);
-//                  LBMReal mfaca = (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p);
-//                  LBMReal mfcca = (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p);
-//
-//                  LBMReal mfbbb = (*this->zeroDistributions)(x1, x2, x3);
-//
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  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 rho = one + drho;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  LBMReal vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
-//                     (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
-//                     (mfcbb - mfabb)) / rho;
-//                  LBMReal vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
-//                     (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
-//                     (mfbcb - mfbab)) / rho;
-//                  LBMReal vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
-//                     (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
-//                     (mfbbc - mfbba)) / rho;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//
-//                  //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 = one; // comp special
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  LBMReal m0, m1, m2;
-//                  LBMReal vx2;
-//                  LBMReal vy2;
-//                  LBMReal vz2;
-//                  vx2 = vvx * vvx;
-//                  vy2 = vvy * vvy;
-//                  vz2 = vvz * vvz;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  //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;
-//                  m1 = mfaac - mfaaa;
-//                  m0 = m2 + mfaab;
-//                  mfaaa = m0;
-//                  m0 += c1o36 * oMdrho;
-//                  mfaab = m1 - m0 * vvz;
-//                  mfaac = m2 - two * m1 * vvz + vz2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfaba + mfabc;
-//                  m1 = mfabc - mfaba;
-//                  m0 = m2 + mfabb;
-//                  mfaba = m0;
-//                  m0 += c1o9 * oMdrho;
-//                  mfabb = m1 - m0 * vvz;
-//                  mfabc = m2 - two * m1 * vvz + vz2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfaca + mfacc;
-//                  m1 = mfacc - mfaca;
-//                  m0 = m2 + mfacb;
-//                  mfaca = m0;
-//                  m0 += c1o36 * oMdrho;
-//                  mfacb = m1 - m0 * vvz;
-//                  mfacc = m2 - two * m1 * vvz + vz2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfbaa + mfbac;
-//                  m1 = mfbac - mfbaa;
-//                  m0 = m2 + mfbab;
-//                  mfbaa = m0;
-//                  m0 += c1o9 * oMdrho;
-//                  mfbab = m1 - m0 * vvz;
-//                  mfbac = m2 - two * m1 * vvz + vz2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfbba + mfbbc;
-//                  m1 = mfbbc - mfbba;
-//                  m0 = m2 + mfbbb;
-//                  mfbba = m0;
-//                  m0 += c4o9 * oMdrho;
-//                  mfbbb = m1 - m0 * vvz;
-//                  mfbbc = m2 - two * m1 * vvz + vz2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfbca + mfbcc;
-//                  m1 = mfbcc - mfbca;
-//                  m0 = m2 + mfbcb;
-//                  mfbca = m0;
-//                  m0 += c1o9 * oMdrho;
-//                  mfbcb = m1 - m0 * vvz;
-//                  mfbcc = m2 - two * m1 * vvz + vz2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfcaa + mfcac;
-//                  m1 = mfcac - mfcaa;
-//                  m0 = m2 + mfcab;
-//                  mfcaa = m0;
-//                  m0 += c1o36 * oMdrho;
-//                  mfcab = m1 - m0 * vvz;
-//                  mfcac = m2 - two * m1 * vvz + vz2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfcba + mfcbc;
-//                  m1 = mfcbc - mfcba;
-//                  m0 = m2 + mfcbb;
-//                  mfcba = m0;
-//                  m0 += c1o9 * oMdrho;
-//                  mfcbb = m1 - m0 * vvz;
-//                  mfcbc = m2 - two * m1 * vvz + vz2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfcca + mfccc;
-//                  m1 = mfccc - mfcca;
-//                  m0 = m2 + mfccb;
-//                  mfcca = m0;
-//                  m0 += c1o36 * oMdrho;
-//                  mfccb = m1 - m0 * vvz;
-//                  mfccc = m2 - two * 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 += c1o6 * oMdrho;
-//                  mfaba = m1 - m0 * vvy;
-//                  mfaca = m2 - two * m1 * vvy + vy2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfaab + mfacb;
-//                  m1 = mfacb - mfaab;
-//                  m0 = m2 + mfabb;
-//                  mfaab = m0;
-//                  mfabb = m1 - m0 * vvy;
-//                  mfacb = m2 - two * m1 * vvy + vy2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfaac + mfacc;
-//                  m1 = mfacc - mfaac;
-//                  m0 = m2 + mfabc;
-//                  mfaac = m0;
-//                  m0 += c1o18 * oMdrho;
-//                  mfabc = m1 - m0 * vvy;
-//                  mfacc = m2 - two * m1 * vvy + vy2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfbaa + mfbca;
-//                  m1 = mfbca - mfbaa;
-//                  m0 = m2 + mfbba;
-//                  mfbaa = m0;
-//                  m0 += c2o3 * oMdrho;
-//                  mfbba = m1 - m0 * vvy;
-//                  mfbca = m2 - two * m1 * vvy + vy2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfbab + mfbcb;
-//                  m1 = mfbcb - mfbab;
-//                  m0 = m2 + mfbbb;
-//                  mfbab = m0;
-//                  mfbbb = m1 - m0 * vvy;
-//                  mfbcb = m2 - two * m1 * vvy + vy2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfbac + mfbcc;
-//                  m1 = mfbcc - mfbac;
-//                  m0 = m2 + mfbbc;
-//                  mfbac = m0;
-//                  m0 += c2o9 * oMdrho;
-//                  mfbbc = m1 - m0 * vvy;
-//                  mfbcc = m2 - two * m1 * vvy + vy2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfcaa + mfcca;
-//                  m1 = mfcca - mfcaa;
-//                  m0 = m2 + mfcba;
-//                  mfcaa = m0;
-//                  m0 += c1o6 * oMdrho;
-//                  mfcba = m1 - m0 * vvy;
-//                  mfcca = m2 - two * m1 * vvy + vy2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfcab + mfccb;
-//                  m1 = mfccb - mfcab;
-//                  m0 = m2 + mfcbb;
-//                  mfcab = m0;
-//                  mfcbb = m1 - m0 * vvy;
-//                  mfccb = m2 - two * m1 * vvy + vy2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfcac + mfccc;
-//                  m1 = mfccc - mfcac;
-//                  m0 = m2 + mfcbc;
-//                  mfcac = m0;
-//                  m0 += c1o18 * oMdrho;
-//                  mfcbc = m1 - m0 * vvy;
-//                  mfccc = m2 - two * 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 += one * oMdrho;
-//                  mfbaa = m1 - m0 * vvx;
-//                  mfcaa = m2 - two * m1 * vvx + vx2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfaba + mfcba;
-//                  m1 = mfcba - mfaba;
-//                  m0 = m2 + mfbba;
-//                  mfaba = m0;
-//                  mfbba = m1 - m0 * vvx;
-//                  mfcba = m2 - two * m1 * vvx + vx2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfaca + mfcca;
-//                  m1 = mfcca - mfaca;
-//                  m0 = m2 + mfbca;
-//                  mfaca = m0;
-//                  m0 += c1o3 * oMdrho;
-//                  mfbca = m1 - m0 * vvx;
-//                  mfcca = m2 - two * m1 * vvx + vx2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfaab + mfcab;
-//                  m1 = mfcab - mfaab;
-//                  m0 = m2 + mfbab;
-//                  mfaab = m0;
-//                  mfbab = m1 - m0 * vvx;
-//                  mfcab = m2 - two * m1 * vvx + vx2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfabb + mfcbb;
-//                  m1 = mfcbb - mfabb;
-//                  m0 = m2 + mfbbb;
-//                  mfabb = m0;
-//                  mfbbb = m1 - m0 * vvx;
-//                  mfcbb = m2 - two * m1 * vvx + vx2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfacb + mfccb;
-//                  m1 = mfccb - mfacb;
-//                  m0 = m2 + mfbcb;
-//                  mfacb = m0;
-//                  mfbcb = m1 - m0 * vvx;
-//                  mfccb = m2 - two * m1 * vvx + vx2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfaac + mfcac;
-//                  m1 = mfcac - mfaac;
-//                  m0 = m2 + mfbac;
-//                  mfaac = m0;
-//                  m0 += c1o3 * oMdrho;
-//                  mfbac = m1 - m0 * vvx;
-//                  mfcac = m2 - two * m1 * vvx + vx2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfabc + mfcbc;
-//                  m1 = mfcbc - mfabc;
-//                  m0 = m2 + mfbbc;
-//                  mfabc = m0;
-//                  mfbbc = m1 - m0 * vvx;
-//                  mfcbc = m2 - two * m1 * vvx + vx2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m2 = mfacc + mfccc;
-//                  m1 = mfccc - mfacc;
-//                  m0 = m2 + mfbcc;
-//                  mfacc = m0;
-//                  m0 += c1o9 * oMdrho;
-//                  mfbcc = m1 - m0 * vvx;
-//                  mfccc = m2 - two * m1 * vvx + vx2 * m0;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//
-//
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  // Cumulants
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//
-//                  //LBMReal OxxPyyPzz = one; // bulk viscosity
-//
-//                  ////////////////////////////////////////////////////////////
-//                  //3.
-//                  //////////////////////////////
-//                  LBMReal OxyyPxzz = one;//three  * (two - omega) / (three  - omega);//
-//                  //LBMReal OxyyMxzz = one;//six    * (two - omega) / (six    - omega);//
-//                  LBMReal Oxyz = one;//twelve * (two - omega) / (twelve + omega);//
-//                  //////////////////////////////
-//                  //LBMReal OxyyPxzz  = two-omega;//
-//                  //LBMReal OxyyMxzz  = two-omega;//
-//                  //////////////////////////////
-//                  //LBMReal OxyyPxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
-//                  //LBMReal OxyyMxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
-//                  //////////////////////////////
-//                  //LBMReal OxyyPxzz  = omega;//BGK
-//                  //LBMReal OxyyMxzz  = omega;//BGK
-//                  //////////////////////////////
-//                  //LBMReal OxyyPxzz  = (one + omega) / two;//1P5
-//                  //LBMReal OxyyMxzz  = (one + omega) / two;//1P5
-//                  //////////////////////////////
-//                  //LBMReal OxyyPxzz  = (three - omega) / two;//0P5
-//                  //LBMReal OxyyMxzz  = (three - omega) / two;//0P5
-//                  //////////////////////////////
-//                  //LBMReal OxyyPxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
-//                  //LBMReal OxyyMxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
-//                  ////////////////////////////////////////////////////////////
-//                  //4.
-//                  //////////////////////////////
-//                  LBMReal O4 = one;
-//                  //////////////////////////////
-//                  //LBMReal O4        = omega;//TRT
-//                  ////////////////////////////////////////////////////////////
-//                  //5.
-//                  //////////////////////////////
-//                  LBMReal O5 = one;
-//                  ////////////////////////////////////////////////////////////
-//                  //6.
-//                  //////////////////////////////
-//                  LBMReal O6 = one;
-//                  ////////////////////////////////////////////////////////////
-//
-//
-//                  //central moments to cumulants
-//                  //4.
-//                  LBMReal CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;	//ab 15.05.2015 verwendet
-//                  LBMReal CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; //ab 15.05.2015 verwendet
-//                  LBMReal CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; //ab 15.05.2015 verwendet
-//
-//                  LBMReal CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9 * (drho / rho));
-//                  LBMReal CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9 * (drho / rho));
-//                  LBMReal CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9 * (drho / rho));
-//
-//                  //5.
-//                  LBMReal CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
-//                  LBMReal CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
-//                  LBMReal CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
-//
-//                  //6.
-//
-//                  LBMReal CUMccc = mfccc + ((-four * mfbbb * mfbbb
-//                     - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-//                     - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-//                     - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
-//                     + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-//                        + two * (mfcaa * mfaca * mfaac)
-//                        + sixteen * mfbba * mfbab * mfabb) / (rho * rho)
-//                     - c1o3 * (mfacc + mfcac + mfcca) / rho
-//                     - c1o9 * (mfcaa + mfaca + mfaac) / rho
-//                     + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-//                        + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 * (mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3
-//                     + c1o27 * ((drho * drho - drho) / (rho * rho)));
-//                  //+ c1o27*(one -three/rho +two/(rho*rho)));
-//
-//
-//
-//
-//      //2.
-//      // linear combinations
-//                  LBMReal mxxPyyPzz = mfcaa + mfaca + mfaac;
-//                  LBMReal mxxMyy = mfcaa - mfaca;
-//                  LBMReal mxxMzz = mfcaa - mfaac;
-//
-//                  //////////////////////////////////////////////////////////////////////////
-//         // 			LBMReal magicBulk=(CUMacc+CUMcac+CUMcca)*(one/OxxPyyPzz-c1o2)*c3o2*8.;
-//
-//                  //////////////////////////////////////////////////////////////////////////
-//                  //limiter-Scheise Teil 1
-//                  //LBMReal oxxyy,oxxzz,oxy,oxz,oyz;
-//                  //LBMReal smag=0.001;
-//                  //oxxyy    = omega+(one-omega)*fabs(mxxMyy)/(fabs(mxxMyy)+smag);
-//                  //oxxzz    = omega+(one-omega)*fabs(mxxMzz)/(fabs(mxxMzz)+smag);
-//                  //oxy      = omega+(one-omega)*fabs(mfbba)/(fabs(mfbba)+smag);
-//                  //oxz      = omega+(one-omega)*fabs(mfbab)/(fabs(mfbab)+smag);
-//                  //oyz      = omega+(one-omega)*fabs(mfabb)/(fabs(mfabb)+smag);
-//
-//                  ////////////////////////////////////////////////////////////////////////////
-//                  ////Teil 1b
-//                  //LBMReal constante = 1000.0;
-//                  //LBMReal nuEddi = constante * fabs(mxxPyyPzz);
-//                  //LBMReal omegaLimit = one / (one / omega + three * nuEddi);
-//
-//                  //{
-//                  //	LBMReal dxux = c1o2 * (-omegaLimit) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-//                  //	LBMReal dyuy = dxux + omegaLimit * c3o2 * mxxMyy;
-//                  //	LBMReal dzuz = dxux + omegaLimit * c3o2 * mxxMzz;
-//
-//                     ////relax
-//                     //mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
-//                     //mxxMyy    += omegaLimit * (-mxxMyy) - three * (one + c1o2 * (-omegaLimit)) * (vx2 * dxux + vy2 * dyuy);
-//                     //mxxMzz    += omegaLimit * (-mxxMzz) - three * (one + c1o2 * (-omegaLimit)) * (vx2 * dxux + vz2 * dzuz);
-//
-//                  //}
-//                  //mfabb     += omegaLimit * (-mfabb);
-//                  //mfbab     += omegaLimit * (-mfbab);
-//                  //mfbba     += omegaLimit * (-mfbba);
-//                  ////////////////////////////////////////////////////////////////////////////
-//
-//                  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//                  //incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
-//                  {
-//                     LBMReal dxux = c1o2 * (-omega) * (mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz * (mfaaa - mxxPyyPzz);
-//                     LBMReal dyuy = dxux + omega * c3o2 * mxxMyy;
-//                     LBMReal dzuz = dxux + omega * c3o2 * mxxMzz;
-//
-//                     //relax
-//                     mxxPyyPzz += OxxPyyPzz * (mfaaa - mxxPyyPzz) - three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
-//                     mxxMyy += omega * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy);
-//                     mxxMzz += omega * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz);
-//
-//                     //////////////////////////////////////////////////////////////////////////
-//                     //limiter-Scheise Teil 2
-//                     //mxxMyy    += oxxyy * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux + vy2 * dyuy);
-//                     //mxxMzz    += oxxzz * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux + vz2 * dzuz);
-//                     //////////////////////////////////////////////////////////////////////////
-//
-//                  }
-//                  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-//                  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//                  ////no correction
-//                  //mxxPyyPzz += OxxPyyPzz*(mfaaa-mxxPyyPzz);//-magicBulk*OxxPyyPzz;
-//                  //mxxMyy    += -(-omega) * (-mxxMyy);
-//                  //mxxMzz    += -(-omega) * (-mxxMzz);
-//                  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//                  mfabb += omega * (-mfabb);
-//                  mfbab += omega * (-mfbab);
-//                  mfbba += omega * (-mfbba);
-//
-//                  //////////////////////////////////////////////////////////////////////////
-//                  //limiter-Scheise Teil 3
-//                  //mfabb     += oyz * (-mfabb);
-//                  //mfbab     += oxz * (-mfbab);
-//                  //mfbba     += oxy * (-mfbba);
-//                  //////////////////////////////////////////////////////////////////////////
-//
-//                  // linear combinations back
-//                  mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz);
-//                  mfaca = c1o3 * (-two * mxxMyy + mxxMzz + mxxPyyPzz);
-//                  mfaac = c1o3 * (mxxMyy - two * 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
-//                  //////////////////////////////////////////////////////////////////////////
-//                  //das ist der limiter
-//                  //wadjust = Oxyz+(one-Oxyz)*fabs(mfbbb)/(fabs(mfbbb)+qudricLimitD);
-//                  //mfbbb += wadjust * (-mfbbb);
-//                  //wadjust = OxyyPxzz+(one-OxyyPxzz)*fabs(mxxyPyzz)/(fabs(mxxyPyzz)+qudricLimitP);
-//                  //mxxyPyzz += wadjust * (-mxxyPyzz);
-//                  //wadjust = OxyyMxzz+(one-OxyyMxzz)*fabs(mxxyMyzz)/(fabs(mxxyMyzz)+qudricLimitM);
-//                  //mxxyMyzz += wadjust * (-mxxyMyzz);
-//                  //wadjust = OxyyPxzz+(one-OxyyPxzz)*fabs(mxxzPyyz)/(fabs(mxxzPyyz)+qudricLimitP);
-//                  //mxxzPyyz += wadjust * (-mxxzPyyz);
-//                  //wadjust = OxyyMxzz+(one-OxyyMxzz)*fabs(mxxzMyyz)/(fabs(mxxzMyyz)+qudricLimitM);
-//                  //mxxzMyyz += wadjust * (-mxxzMyyz);
-//                  //wadjust = OxyyPxzz+(one-OxyyPxzz)*fabs(mxyyPxzz)/(fabs(mxyyPxzz)+qudricLimitP);
-//                  //mxyyPxzz += wadjust * (-mxyyPxzz);
-//                  //wadjust = OxyyMxzz+(one-OxyyMxzz)*fabs(mxyyMxzz)/(fabs(mxyyMxzz)+qudricLimitM);
-//                  //mxyyMxzz += wadjust * (-mxyyMxzz);
-//                  //////////////////////////////////////////////////////////////////////////
-//                  //ohne limiter
-//                  mfbbb += OxyyMxzz * (-mfbbb);
-//                  mxxyPyzz += OxyyPxzz * (-mxxyPyzz);
-//                  mxxyMyzz += OxyyMxzz * (-mxxyMyzz);
-//                  mxxzPyyz += OxyyPxzz * (-mxxzPyyz);
-//                  mxxzMyyz += OxyyMxzz * (-mxxzMyyz);
-//                  mxyyPxzz += OxyyPxzz * (-mxyyPxzz);
-//                  mxyyMxzz += OxyyMxzz * (-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.
-//                  //////////////////////////////////////////////////////////////////////////
-//                  //mit limiter
-//               //	wadjust    = O4+(one-O4)*fabs(CUMacc)/(fabs(CUMacc)+qudricLimit);
-//                  //CUMacc    += wadjust * (-CUMacc);
-//               //	wadjust    = O4+(one-O4)*fabs(CUMcac)/(fabs(CUMcac)+qudricLimit);
-//                  //CUMcac    += wadjust * (-CUMcac); 
-//               //	wadjust    = O4+(one-O4)*fabs(CUMcca)/(fabs(CUMcca)+qudricLimit);
-//                  //CUMcca    += wadjust * (-CUMcca); 
-//
-//               //	wadjust    = O4+(one-O4)*fabs(CUMbbc)/(fabs(CUMbbc)+qudricLimit);
-//                  //CUMbbc    += wadjust * (-CUMbbc); 
-//               //	wadjust    = O4+(one-O4)*fabs(CUMbcb)/(fabs(CUMbcb)+qudricLimit);
-//                  //CUMbcb    += wadjust * (-CUMbcb); 
-//               //	wadjust    = O4+(one-O4)*fabs(CUMcbb)/(fabs(CUMcbb)+qudricLimit);
-//                  //CUMcbb    += wadjust * (-CUMcbb); 
-//                  //////////////////////////////////////////////////////////////////////////
-//                  //ohne limiter
-//                  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) * mfabb + two * mfbba * mfbab) / rho;
-//                  mfbcb = CUMbcb + ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
-//                  mfbbc = CUMbbc + ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
-//
-//                  mfcca = CUMcca + (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9 * (drho / rho));//(one/rho-one));
-//                  mfcac = CUMcac + (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9 * (drho / rho));//(one/rho-one));
-//                  mfacc = CUMacc + (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9 * (drho / rho));//(one/rho-one));
-//
-//                  //5.
-//                  mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
-//                  mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
-//                  mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
-//
-//                  //6.
-//
-//                  mfccc = CUMccc - ((-four * mfbbb * mfbbb
-//                     - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-//                     - four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-//                     - two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
-//                     + (four * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-//                        + two * (mfcaa * mfaca * mfaac)
-//                        + sixteen * mfbba * mfbab * mfabb) / (rho * rho)
-//                     - c1o3 * (mfacc + mfcac + mfcca) / rho
-//                     - c1o9 * (mfcaa + mfaca + mfaac) / rho
-//                     + (two * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-//                        + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 * (mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3
-//                     + c1o27 * ((drho * drho - drho) / (rho * rho)));
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  //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 * (vvz - c1o2) + (mfaaa + one * oMdrho) * (vz2 - vvz) * c1o2;
-//                  m1 = -mfaac - two * mfaab * vvz + mfaaa * (one - vz2) - one * oMdrho * vz2;
-//                  m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + one * oMdrho) * (vz2 + vvz) * c1o2;
-//                  mfaaa = m0;
-//                  mfaab = m1;
-//                  mfaac = m2;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * (vz2 - vvz) * c1o2;
-//                  m1 = -mfabc - two * mfabb * vvz + mfaba * (one - vz2);
-//                  m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * (vz2 + vvz) * c1o2;
-//                  mfaba = m0;
-//                  mfabb = m1;
-//                  mfabc = m2;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * (vz2 - vvz) * c1o2;
-//                  m1 = -mfacc - two * mfacb * vvz + mfaca * (one - vz2) - c1o3 * oMdrho * vz2;
-//                  m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * (vz2 + vvz) * c1o2;
-//                  mfaca = m0;
-//                  mfacb = m1;
-//                  mfacc = m2;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * (vz2 - vvz) * c1o2;
-//                  m1 = -mfbac - two * mfbab * vvz + mfbaa * (one - vz2);
-//                  m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * (vz2 + vvz) * c1o2;
-//                  mfbaa = m0;
-//                  mfbab = m1;
-//                  mfbac = m2;
-//                  /////////b//////////////////////////////////////////////////////////////////////////
-//                  m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * (vz2 - vvz) * c1o2;
-//                  m1 = -mfbbc - two * mfbbb * vvz + mfbba * (one - vz2);
-//                  m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * (vz2 + vvz) * c1o2;
-//                  mfbba = m0;
-//                  mfbbb = m1;
-//                  mfbbc = m2;
-//                  /////////b//////////////////////////////////////////////////////////////////////////
-//                  m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * (vz2 - vvz) * c1o2;
-//                  m1 = -mfbcc - two * mfbcb * vvz + mfbca * (one - vz2);
-//                  m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * (vz2 + vvz) * c1o2;
-//                  mfbca = m0;
-//                  mfbcb = m1;
-//                  mfbcc = m2;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * (vz2 - vvz) * c1o2;
-//                  m1 = -mfcac - two * mfcab * vvz + mfcaa * (one - vz2) - c1o3 * oMdrho * vz2;
-//                  m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * (vz2 + vvz) * c1o2;
-//                  mfcaa = m0;
-//                  mfcab = m1;
-//                  mfcac = m2;
-//                  /////////c//////////////////////////////////////////////////////////////////////////
-//                  m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * (vz2 - vvz) * c1o2;
-//                  m1 = -mfcbc - two * mfcbb * vvz + mfcba * (one - vz2);
-//                  m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * (vz2 + vvz) * c1o2;
-//                  mfcba = m0;
-//                  mfcbb = m1;
-//                  mfcbc = m2;
-//                  /////////c//////////////////////////////////////////////////////////////////////////
-//                  m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * (vz2 - vvz) * c1o2;
-//                  m1 = -mfccc - two * mfccb * vvz + mfcca * (one - vz2) - c1o9 * oMdrho * vz2;
-//                  m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * (vz2 + vvz) * 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 * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * (vy2 - vvy) * c1o2;
-//                  m1 = -mfaca - two * mfaba * vvy + mfaaa * (one - vy2) - c1o6 * oMdrho * vy2;
-//                  m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * (vy2 + vvy) * c1o2;
-//                  mfaaa = m0;
-//                  mfaba = m1;
-//                  mfaca = m2;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * (vy2 - vvy) * c1o2;
-//                  m1 = -mfacb - two * mfabb * vvy + mfaab * (one - vy2) - c2o3 * oMdrho * vy2;
-//                  m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * (vy2 + vvy) * c1o2;
-//                  mfaab = m0;
-//                  mfabb = m1;
-//                  mfacb = m2;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * (vy2 - vvy) * c1o2;
-//                  m1 = -mfacc - two * mfabc * vvy + mfaac * (one - vy2) - c1o6 * oMdrho * vy2;
-//                  m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * (vy2 + vvy) * c1o2;
-//                  mfaac = m0;
-//                  mfabc = m1;
-//                  mfacc = m2;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * (vy2 - vvy) * c1o2;
-//                  m1 = -mfbca - two * mfbba * vvy + mfbaa * (one - vy2);
-//                  m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * (vy2 + vvy) * c1o2;
-//                  mfbaa = m0;
-//                  mfbba = m1;
-//                  mfbca = m2;
-//                  /////////b//////////////////////////////////////////////////////////////////////////
-//                  m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * (vy2 - vvy) * c1o2;
-//                  m1 = -mfbcb - two * mfbbb * vvy + mfbab * (one - vy2);
-//                  m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * (vy2 + vvy) * c1o2;
-//                  mfbab = m0;
-//                  mfbbb = m1;
-//                  mfbcb = m2;
-//                  /////////b//////////////////////////////////////////////////////////////////////////
-//                  m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * (vy2 - vvy) * c1o2;
-//                  m1 = -mfbcc - two * mfbbc * vvy + mfbac * (one - vy2);
-//                  m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * (vy2 + vvy) * c1o2;
-//                  mfbac = m0;
-//                  mfbbc = m1;
-//                  mfbcc = m2;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * (vy2 - vvy) * c1o2;
-//                  m1 = -mfcca - two * mfcba * vvy + mfcaa * (one - vy2) - c1o18 * oMdrho * vy2;
-//                  m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * (vy2 + vvy) * c1o2;
-//                  mfcaa = m0;
-//                  mfcba = m1;
-//                  mfcca = m2;
-//                  /////////c//////////////////////////////////////////////////////////////////////////
-//                  m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * (vy2 - vvy) * c1o2;
-//                  m1 = -mfccb - two * mfcbb * vvy + mfcab * (one - vy2) - c2o9 * oMdrho * vy2;
-//                  m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * (vy2 + vvy) * c1o2;
-//                  mfcab = m0;
-//                  mfcbb = m1;
-//                  mfccb = m2;
-//                  /////////c//////////////////////////////////////////////////////////////////////////
-//                  m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * (vy2 - vvy) * c1o2;
-//                  m1 = -mfccc - two * mfcbc * vvy + mfcac * (one - vy2) - c1o18 * oMdrho * vy2;
-//                  m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * (vy2 + vvy) * 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 * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * (vx2 - vvx) * c1o2;
-//                  m1 = -mfcaa - two * mfbaa * vvx + mfaaa * (one - vx2) - c1o36 * oMdrho * vx2;
-//                  m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * (vx2 + vvx) * c1o2;
-//                  mfaaa = m0;
-//                  mfbaa = m1;
-//                  mfcaa = m2;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * (vx2 - vvx) * c1o2;
-//                  m1 = -mfcba - two * mfbba * vvx + mfaba * (one - vx2) - c1o9 * oMdrho * vx2;
-//                  m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * (vx2 + vvx) * c1o2;
-//                  mfaba = m0;
-//                  mfbba = m1;
-//                  mfcba = m2;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * (vx2 - vvx) * c1o2;
-//                  m1 = -mfcca - two * mfbca * vvx + mfaca * (one - vx2) - c1o36 * oMdrho * vx2;
-//                  m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * (vx2 + vvx) * c1o2;
-//                  mfaca = m0;
-//                  mfbca = m1;
-//                  mfcca = m2;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * (vx2 - vvx) * c1o2;
-//                  m1 = -mfcab - two * mfbab * vvx + mfaab * (one - vx2) - c1o9 * oMdrho * vx2;
-//                  m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * (vx2 + vvx) * c1o2;
-//                  mfaab = m0;
-//                  mfbab = m1;
-//                  mfcab = m2;
-//                  ///////////b////////////////////////////////////////////////////////////////////////
-//                  m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * (vx2 - vvx) * c1o2;
-//                  m1 = -mfcbb - two * mfbbb * vvx + mfabb * (one - vx2) - c4o9 * oMdrho * vx2;
-//                  m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * (vx2 + vvx) * c1o2;
-//                  mfabb = m0;
-//                  mfbbb = m1;
-//                  mfcbb = m2;
-//                  ///////////b////////////////////////////////////////////////////////////////////////
-//                  m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * (vx2 - vvx) * c1o2;
-//                  m1 = -mfccb - two * mfbcb * vvx + mfacb * (one - vx2) - c1o9 * oMdrho * vx2;
-//                  m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * (vx2 + vvx) * c1o2;
-//                  mfacb = m0;
-//                  mfbcb = m1;
-//                  mfccb = m2;
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  ////////////////////////////////////////////////////////////////////////////////////
-//                  m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * (vx2 - vvx) * c1o2;
-//                  m1 = -mfcac - two * mfbac * vvx + mfaac * (one - vx2) - c1o36 * oMdrho * vx2;
-//                  m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * (vx2 + vvx) * c1o2;
-//                  mfaac = m0;
-//                  mfbac = m1;
-//                  mfcac = m2;
-//                  ///////////c////////////////////////////////////////////////////////////////////////
-//                  m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * (vx2 - vvx) * c1o2;
-//                  m1 = -mfcbc - two * mfbbc * vvx + mfabc * (one - vx2) - c1o9 * oMdrho * vx2;
-//                  m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * (vx2 + vvx) * c1o2;
-//                  mfabc = m0;
-//                  mfbbc = m1;
-//                  mfcbc = m2;
-//                  ///////////c////////////////////////////////////////////////////////////////////////
-//                  m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * (vx2 - vvx) * c1o2;
-//                  m1 = -mfccc - two * mfbcc * vvx + mfacc * (one - vx2) - c1o36 * oMdrho * vx2;
-//                  m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * (vx2 + vvx) * 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);
-//                  LBMReal 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)
-//                        + " in " + block.lock()->toString() + " step = " + UbSystem::toString(step)));
-//                  }
-//#endif
-//                  //////////////////////////////////////////////////////////////////////////
-//                  //write distribution
-//                  //////////////////////////////////////////////////////////////////////////
-//                  (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = mfabb;
-//                  (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = mfbab;
-//                  (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = mfbba;
-//                  (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = mfaab;
-//                  (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3) = mfcab;
-//                  (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = mfaba;
-//                  (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3) = mfcba;
-//                  (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = mfbaa;
-//                  (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3) = mfbca;
-//                  (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = mfaaa;
-//                  (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3) = mfcaa;
-//                  (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3) = mfaca;
-//                  (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3) = mfcca;
-//
-//                  (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3) = mfcbb;
-//                  (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3) = mfbcb;
-//                  (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p) = mfbbc;
-//                  (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3) = mfccb;
-//                  (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3) = mfacb;
-//                  (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p) = mfcbc;
-//                  (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p) = mfabc;
-//                  (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p) = mfbcc;
-//                  (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p) = mfbac;
-//                  (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p) = mfccc;
-//                  (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p) = mfacc;
-//                  (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p) = mfcac;
-//                  (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p) = mfaac;
-//
-//                  (*this->zeroDistributions)(x1, x2, x3) = mfbbb;
-//                  //////////////////////////////////////////////////////////////////////////
-//
-//               }
-//            }
-//         }
-//      }
-//
-//   }
-//
-//   //timer.stop();
-//}
-//////////////////////////////////////////////////////////////////////////
-real CumulantLBMKernel::getCalculationTime()
-{
-   //return timer.getDuration();
-   return timer.getTotalTime();
-}
-//////////////////////////////////////////////////////////////////////////
-void CumulantLBMKernel::setBulkOmegaToOmega(bool value)
-{
-   bulkOmegaToOmega = value;
-}
-//////////////////////////////////////////////////////////////////////////
-void CumulantLBMKernel::setRelaxationParameter(Parameter p)
-{
-   parameter = p;
-}
-
-void CumulantLBMKernel::initData()
-{
-   //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 = (c1o1 / c3o1) * (c1o1 / collFactor - c1o1 / c2o1);
-
-      muForcingX1.DefineVar("nu", &muNu);
-      muForcingX2.DefineVar("nu", &muNu);
-      muForcingX3.DefineVar("nu", &muNu);
-   }
-   localDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions();
-   nonLocalDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions();
-   zeroDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions();
-   omega = collFactor;
-}
-
-void CumulantLBMKernel::nodeCollision(int step, int x1, int x2, int x3)
-{
-   int x1p = x1 + 1;
-   int x2p = x2 + 1;
-   int x3p = x3 + 1;
-   //////////////////////////////////////////////////////////////////////////
-   //read distribution
-   ////////////////////////////////////////////////////////////////////////////
-   //////////////////////////////////////////////////////////////////////////
-
-   //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
-
-   real mfcbb = (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3);
-   real mfbcb = (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3);
-   real mfbbc = (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3);
-   real mfccb = (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3);
-   real mfacb = (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3);
-   real mfcbc = (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3);
-   real mfabc = (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3);
-   real mfbcc = (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3);
-   real mfbac = (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3);
-   real mfccc = (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3);
-   real mfacc = (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3);
-   real mfcac = (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3);
-   real mfaac = (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3);
-
-   real mfabb = (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3);
-   real mfbab = (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3);
-   real mfbba = (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p);
-   real mfaab = (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3);
-   real mfcab = (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3);
-   real mfaba = (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p);
-   real mfcba = (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p);
-   real mfbaa = (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p);
-   real mfbca = (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p);
-   real mfaaa = (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p);
-   real mfcaa = (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p);
-   real mfaca = (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p);
-   real mfcca = (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p);
-
-   real mfbbb = (*this->zeroDistributions)(x1, x2, x3);
-
-   ////////////////////////////////////////////////////////////////////////////////////
-   real 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;
-
-   real rho = c1o1 + drho;
-   ////////////////////////////////////////////////////////////////////////////////////
-   real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
-      (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
-      (mfcbb - mfabb)) / rho;
-   real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
-      (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
-      (mfbcb - mfbab)) / rho;
-   real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
-      (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
-      (mfbbc - mfbba)) / rho;
-   ////////////////////////////////////////////////////////////////////////////////////
-
-   //forcing 
-   ///////////////////////////////////////////////////////////////////////////////////////////
-   if (withForcing)
-   {
-      muX1 = static_cast<real>(x1 - 1 + ix1 * maxX1);
-      muX2 = static_cast<real>(x2 - 1 + ix2 * maxX2);
-      muX3 = static_cast<real>(x3 - 1 + ix3 * maxX3);
-
-      forcingX1 = muForcingX1.Eval();
-      forcingX2 = muForcingX2.Eval();
-      forcingX3 = muForcingX3.Eval();
-
-      vvx += forcingX1 * deltaT * c1o2; // X
-      vvy += forcingX2 * deltaT * c1o2; // Y
-      vvz += forcingX3 * deltaT * c1o2; // Z
-   }
-   ///////////////////////////////////////////////////////////////////////////////////////////               
-////////////////////////////////////////////////////////////////////////////////////
-   real oMdrho = c1o1; // comp special
-   ////////////////////////////////////////////////////////////////////////////////////
-   real m0, m1, m2;
-   real vx2;
-   real vy2;
-   real vz2;
-   vx2 = vvx * vvx;
-   vy2 = vvy * vvy;
-   vz2 = vvz * vvz;
-   ////////////////////////////////////////////////////////////////////////////////////
-   //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;
-   m1 = mfaac - mfaaa;
-   m0 = m2 + mfaab;
-   mfaaa = m0;
-   m0 += c1o36 * oMdrho;
-   mfaab = m1 - m0 * vvz;
-   mfaac = m2 - c2o1 * m1 * vvz + vz2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfaba + mfabc;
-   m1 = mfabc - mfaba;
-   m0 = m2 + mfabb;
-   mfaba = m0;
-   m0 += c1o9 * oMdrho;
-   mfabb = m1 - m0 * vvz;
-   mfabc = m2 - c2o1 * m1 * vvz + vz2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfaca + mfacc;
-   m1 = mfacc - mfaca;
-   m0 = m2 + mfacb;
-   mfaca = m0;
-   m0 += c1o36 * oMdrho;
-   mfacb = m1 - m0 * vvz;
-   mfacc = m2 - c2o1 * m1 * vvz + vz2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfbaa + mfbac;
-   m1 = mfbac - mfbaa;
-   m0 = m2 + mfbab;
-   mfbaa = m0;
-   m0 += c1o9 * oMdrho;
-   mfbab = m1 - m0 * vvz;
-   mfbac = m2 - c2o1 * m1 * vvz + vz2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfbba + mfbbc;
-   m1 = mfbbc - mfbba;
-   m0 = m2 + mfbbb;
-   mfbba = m0;
-   m0 += c4o9 * oMdrho;
-   mfbbb = m1 - m0 * vvz;
-   mfbbc = m2 - c2o1 * m1 * vvz + vz2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfbca + mfbcc;
-   m1 = mfbcc - mfbca;
-   m0 = m2 + mfbcb;
-   mfbca = m0;
-   m0 += c1o9 * oMdrho;
-   mfbcb = m1 - m0 * vvz;
-   mfbcc = m2 - c2o1 * m1 * vvz + vz2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfcaa + mfcac;
-   m1 = mfcac - mfcaa;
-   m0 = m2 + mfcab;
-   mfcaa = m0;
-   m0 += c1o36 * oMdrho;
-   mfcab = m1 - m0 * vvz;
-   mfcac = m2 - c2o1 * m1 * vvz + vz2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfcba + mfcbc;
-   m1 = mfcbc - mfcba;
-   m0 = m2 + mfcbb;
-   mfcba = m0;
-   m0 += c1o9 * oMdrho;
-   mfcbb = m1 - m0 * vvz;
-   mfcbc = m2 - c2o1 * m1 * vvz + vz2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfcca + mfccc;
-   m1 = mfccc - mfcca;
-   m0 = m2 + mfccb;
-   mfcca = m0;
-   m0 += c1o36 * oMdrho;
-   mfccb = m1 - m0 * vvz;
-   mfccc = m2 - c2o1 * 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 += c1o6 * oMdrho;
-   mfaba = m1 - m0 * vvy;
-   mfaca = m2 - c2o1 * m1 * vvy + vy2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfaab + mfacb;
-   m1 = mfacb - mfaab;
-   m0 = m2 + mfabb;
-   mfaab = m0;
-   mfabb = m1 - m0 * vvy;
-   mfacb = m2 - c2o1 * m1 * vvy + vy2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfaac + mfacc;
-   m1 = mfacc - mfaac;
-   m0 = m2 + mfabc;
-   mfaac = m0;
-   m0 += c1o18 * oMdrho;
-   mfabc = m1 - m0 * vvy;
-   mfacc = m2 - c2o1 * m1 * vvy + vy2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfbaa + mfbca;
-   m1 = mfbca - mfbaa;
-   m0 = m2 + mfbba;
-   mfbaa = m0;
-   m0 += c2o3 * oMdrho;
-   mfbba = m1 - m0 * vvy;
-   mfbca = m2 - c2o1 * m1 * vvy + vy2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfbab + mfbcb;
-   m1 = mfbcb - mfbab;
-   m0 = m2 + mfbbb;
-   mfbab = m0;
-   mfbbb = m1 - m0 * vvy;
-   mfbcb = m2 - c2o1 * m1 * vvy + vy2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfbac + mfbcc;
-   m1 = mfbcc - mfbac;
-   m0 = m2 + mfbbc;
-   mfbac = m0;
-   m0 += c2o9 * oMdrho;
-   mfbbc = m1 - m0 * vvy;
-   mfbcc = m2 - c2o1 * m1 * vvy + vy2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfcaa + mfcca;
-   m1 = mfcca - mfcaa;
-   m0 = m2 + mfcba;
-   mfcaa = m0;
-   m0 += c1o6 * oMdrho;
-   mfcba = m1 - m0 * vvy;
-   mfcca = m2 - c2o1 * m1 * vvy + vy2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfcab + mfccb;
-   m1 = mfccb - mfcab;
-   m0 = m2 + mfcbb;
-   mfcab = m0;
-   mfcbb = m1 - m0 * vvy;
-   mfccb = m2 - c2o1 * m1 * vvy + vy2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfcac + mfccc;
-   m1 = mfccc - mfcac;
-   m0 = m2 + mfcbc;
-   mfcac = m0;
-   m0 += c1o18 * oMdrho;
-   mfcbc = m1 - m0 * vvy;
-   mfccc = m2 - c2o1 * 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 += c1o1 * oMdrho;
-   mfbaa = m1 - m0 * vvx;
-   mfcaa = m2 - c2o1 * m1 * vvx + vx2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfaba + mfcba;
-   m1 = mfcba - mfaba;
-   m0 = m2 + mfbba;
-   mfaba = m0;
-   mfbba = m1 - m0 * vvx;
-   mfcba = m2 - c2o1 * m1 * vvx + vx2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfaca + mfcca;
-   m1 = mfcca - mfaca;
-   m0 = m2 + mfbca;
-   mfaca = m0;
-   m0 += c1o3 * oMdrho;
-   mfbca = m1 - m0 * vvx;
-   mfcca = m2 - c2o1 * m1 * vvx + vx2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfaab + mfcab;
-   m1 = mfcab - mfaab;
-   m0 = m2 + mfbab;
-   mfaab = m0;
-   mfbab = m1 - m0 * vvx;
-   mfcab = m2 - c2o1 * m1 * vvx + vx2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfabb + mfcbb;
-   m1 = mfcbb - mfabb;
-   m0 = m2 + mfbbb;
-   mfabb = m0;
-   mfbbb = m1 - m0 * vvx;
-   mfcbb = m2 - c2o1 * m1 * vvx + vx2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfacb + mfccb;
-   m1 = mfccb - mfacb;
-   m0 = m2 + mfbcb;
-   mfacb = m0;
-   mfbcb = m1 - m0 * vvx;
-   mfccb = m2 - c2o1 * m1 * vvx + vx2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfaac + mfcac;
-   m1 = mfcac - mfaac;
-   m0 = m2 + mfbac;
-   mfaac = m0;
-   m0 += c1o3 * oMdrho;
-   mfbac = m1 - m0 * vvx;
-   mfcac = m2 - c2o1 * m1 * vvx + vx2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfabc + mfcbc;
-   m1 = mfcbc - mfabc;
-   m0 = m2 + mfbbc;
-   mfabc = m0;
-   mfbbc = m1 - m0 * vvx;
-   mfcbc = m2 - c2o1 * m1 * vvx + vx2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m2 = mfacc + mfccc;
-   m1 = mfccc - mfacc;
-   m0 = m2 + mfbcc;
-   mfacc = m0;
-   m0 += c1o9 * oMdrho;
-   mfbcc = m1 - m0 * vvx;
-   mfccc = m2 - c2o1 * m1 * vvx + vx2 * m0;
-   ////////////////////////////////////////////////////////////////////////////////////
-   ////////////////////////////////////////////////////////////////////////////////////
-
-
-   ////////////////////////////////////////////////////////////////////////////////////
-   // Cumulants
-   ////////////////////////////////////////////////////////////////////////////////////
-
-   //LBMReal OxxPyyPzz = one; // bulk viscosity
-
-   ////////////////////////////////////////////////////////////
-   //3.
-   //////////////////////////////
-   real OxyyPxzz = c1o1;//three  * (two - omega) / (three  - omega);//
-   //LBMReal OxyyMxzz = one;//six    * (two - omega) / (six    - omega);//
-   //LBMReal Oxyz = one;//twelve * (two - omega) / (twelve + omega);//
-   //////////////////////////////
-   //LBMReal OxyyPxzz  = two-omega;//
-   //LBMReal OxyyMxzz  = two-omega;//
-   //////////////////////////////
-   //LBMReal OxyyPxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
-   //LBMReal OxyyMxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
-   //////////////////////////////
-   //LBMReal OxyyPxzz  = omega;//BGK
-   //LBMReal OxyyMxzz  = omega;//BGK
-   //////////////////////////////
-   //LBMReal OxyyPxzz  = (one + omega) / two;//1P5
-   //LBMReal OxyyMxzz  = (one + omega) / two;//1P5
-   //////////////////////////////
-   //LBMReal OxyyPxzz  = (three - omega) / two;//0P5
-   //LBMReal OxyyMxzz  = (three - omega) / two;//0P5
-   //////////////////////////////
-   //LBMReal OxyyPxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
-   //LBMReal OxyyMxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
-   ////////////////////////////////////////////////////////////
-   //4.
-   //////////////////////////////
-   real O4 = c1o1;
-   //////////////////////////////
-   //real O4        = omega;//TRT
-   ////////////////////////////////////////////////////////////
-   //5.
-   //////////////////////////////
-   real O5 = c1o1;
-   ////////////////////////////////////////////////////////////
-   //6.
-   //////////////////////////////
-   real O6 = c1o1;
-   ////////////////////////////////////////////////////////////
-
-
-   //central moments to cumulants
-   //4.
-   real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + c2o1 * mfbba * mfbab) / rho;	//ab 15.05.2015 verwendet
-   real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) / rho; //ab 15.05.2015 verwendet
-   real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) / rho; //ab 15.05.2015 verwendet
-
-   real CUMcca = mfcca - (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9 * (drho / rho));
-   real CUMcac = mfcac - (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9 * (drho / rho));
-   real CUMacc = mfacc - (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9 * (drho / rho));
-
-   //5.
-   real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
-   real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
-   real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
-
-   //6.
-
-   real CUMccc = mfccc + ((-c4o1 * mfbbb * mfbbb
-      - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-      - c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-      - c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
-      + (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-         + c2o1 * (mfcaa * mfaca * mfaac)
-         + c16o1 * mfbba * mfbab * mfabb) / (rho * rho)
-      - c1o3 * (mfacc + mfcac + mfcca) / rho
-      - c1o9 * (mfcaa + mfaca + mfaac) / rho
-      + (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-         + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 * (mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3
-      + c1o27 * ((drho * drho - drho) / (rho * rho)));
-   //+ c1o27*(one -three/rho +two/(rho*rho)));
-
-
-
-
-//2.
-// linear combinations
-   real mxxPyyPzz = mfcaa + mfaca + mfaac;
-   real mxxMyy = mfcaa - mfaca;
-   real mxxMzz = mfcaa - mfaac;
-
-   //////////////////////////////////////////////////////////////////////////
-// 			LBMReal magicBulk=(CUMacc+CUMcac+CUMcca)*(one/OxxPyyPzz-c1o2)*c3o2*8.;
-
-         //////////////////////////////////////////////////////////////////////////
-         //limiter-Scheise Teil 1
-         //LBMReal oxxyy,oxxzz,oxy,oxz,oyz;
-         //LBMReal smag=0.001;
-         //oxxyy    = omega+(one-omega)*fabs(mxxMyy)/(fabs(mxxMyy)+smag);
-         //oxxzz    = omega+(one-omega)*fabs(mxxMzz)/(fabs(mxxMzz)+smag);
-         //oxy      = omega+(one-omega)*fabs(mfbba)/(fabs(mfbba)+smag);
-         //oxz      = omega+(one-omega)*fabs(mfbab)/(fabs(mfbab)+smag);
-         //oyz      = omega+(one-omega)*fabs(mfabb)/(fabs(mfabb)+smag);
-
-         ////////////////////////////////////////////////////////////////////////////
-         ////Teil 1b
-         //LBMReal constante = 1000.0;
-         //LBMReal nuEddi = constante * fabs(mxxPyyPzz);
-         //LBMReal omegaLimit = one / (one / omega + three * nuEddi);
-
-         //{
-         //	LBMReal dxux = c1o2 * (-omegaLimit) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-         //	LBMReal dyuy = dxux + omegaLimit * c3o2 * mxxMyy;
-         //	LBMReal dzuz = dxux + omegaLimit * c3o2 * mxxMzz;
-
-            ////relax
-            //mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
-            //mxxMyy    += omegaLimit * (-mxxMyy) - three * (one + c1o2 * (-omegaLimit)) * (vx2 * dxux + vy2 * dyuy);
-            //mxxMzz    += omegaLimit * (-mxxMzz) - three * (one + c1o2 * (-omegaLimit)) * (vx2 * dxux + vz2 * dzuz);
-
-         //}
-         //mfabb     += omegaLimit * (-mfabb);
-         //mfbab     += omegaLimit * (-mfbab);
-         //mfbba     += omegaLimit * (-mfbba);
-         ////////////////////////////////////////////////////////////////////////////
-
-         ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         //incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
-   {
-      real dxux = c1o2 * (-omega) * (mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz * (mfaaa - mxxPyyPzz);
-      real dyuy = dxux + omega * c3o2 * mxxMyy;
-      real dzuz = dxux + omega * c3o2 * mxxMzz;
-
-      //relax
-      mxxPyyPzz += OxxPyyPzz * (mfaaa - mxxPyyPzz) - c3o1 * (c1o1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
-      mxxMyy += omega * (-mxxMyy) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy);
-      mxxMzz += omega * (-mxxMzz) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz);
-
-      //////////////////////////////////////////////////////////////////////////
-      //limiter-Scheise Teil 2
-      //mxxMyy    += oxxyy * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux + vy2 * dyuy);
-      //mxxMzz    += oxxzz * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux + vz2 * dzuz);
-      //////////////////////////////////////////////////////////////////////////
-
-   }
-   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-   /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-   ////no correction
-   //mxxPyyPzz += OxxPyyPzz*(mfaaa-mxxPyyPzz);//-magicBulk*OxxPyyPzz;
-   //mxxMyy    += -(-omega) * (-mxxMyy);
-   //mxxMzz    += -(-omega) * (-mxxMzz);
-   /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-   mfabb += omega * (-mfabb);
-   mfbab += omega * (-mfbab);
-   mfbba += omega * (-mfbba);
-
-   //////////////////////////////////////////////////////////////////////////
-   //limiter-Scheise Teil 3
-   //mfabb     += oyz * (-mfabb);
-   //mfbab     += oxz * (-mfbab);
-   //mfbba     += oxy * (-mfbba);
-   //////////////////////////////////////////////////////////////////////////
-
-   // linear combinations back
-   mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz);
-   mfaca = c1o3 * (-c2o1 * mxxMyy + mxxMzz + mxxPyyPzz);
-   mfaac = c1o3 * (mxxMyy - c2o1 * mxxMzz + mxxPyyPzz);
-
-   //3.
-   // linear combinations
-
-   real mxxyPyzz = mfcba + mfabc;
-   real mxxyMyzz = mfcba - mfabc;
-
-   real mxxzPyyz = mfcab + mfacb;
-   real mxxzMyyz = mfcab - mfacb;
-
-   real mxyyPxzz = mfbca + mfbac;
-   real mxyyMxzz = mfbca - mfbac;
-
-   //relax
-   //////////////////////////////////////////////////////////////////////////
-   //das ist der limiter
-   //wadjust = Oxyz+(one-Oxyz)*fabs(mfbbb)/(fabs(mfbbb)+qudricLimitD);
-   //mfbbb += wadjust * (-mfbbb);
-   //wadjust = OxyyPxzz+(one-OxyyPxzz)*fabs(mxxyPyzz)/(fabs(mxxyPyzz)+qudricLimitP);
-   //mxxyPyzz += wadjust * (-mxxyPyzz);
-   //wadjust = OxyyMxzz+(one-OxyyMxzz)*fabs(mxxyMyzz)/(fabs(mxxyMyzz)+qudricLimitM);
-   //mxxyMyzz += wadjust * (-mxxyMyzz);
-   //wadjust = OxyyPxzz+(one-OxyyPxzz)*fabs(mxxzPyyz)/(fabs(mxxzPyyz)+qudricLimitP);
-   //mxxzPyyz += wadjust * (-mxxzPyyz);
-   //wadjust = OxyyMxzz+(one-OxyyMxzz)*fabs(mxxzMyyz)/(fabs(mxxzMyyz)+qudricLimitM);
-   //mxxzMyyz += wadjust * (-mxxzMyyz);
-   //wadjust = OxyyPxzz+(one-OxyyPxzz)*fabs(mxyyPxzz)/(fabs(mxyyPxzz)+qudricLimitP);
-   //mxyyPxzz += wadjust * (-mxyyPxzz);
-   //wadjust = OxyyMxzz+(one-OxyyMxzz)*fabs(mxyyMxzz)/(fabs(mxyyMxzz)+qudricLimitM);
-   //mxyyMxzz += wadjust * (-mxyyMxzz);
-   //////////////////////////////////////////////////////////////////////////
-   //ohne limiter
-   mfbbb += OxyyMxzz * (-mfbbb);
-   mxxyPyzz += OxyyPxzz * (-mxxyPyzz);
-   mxxyMyzz += OxyyMxzz * (-mxxyMyzz);
-   mxxzPyyz += OxyyPxzz * (-mxxzPyyz);
-   mxxzMyyz += OxyyMxzz * (-mxxzMyyz);
-   mxyyPxzz += OxyyPxzz * (-mxyyPxzz);
-   mxyyMxzz += OxyyMxzz * (-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.
-   //////////////////////////////////////////////////////////////////////////
-   //mit limiter
-//	wadjust    = O4+(one-O4)*fabs(CUMacc)/(fabs(CUMacc)+qudricLimit);
-   //CUMacc    += wadjust * (-CUMacc);
-//	wadjust    = O4+(one-O4)*fabs(CUMcac)/(fabs(CUMcac)+qudricLimit);
-   //CUMcac    += wadjust * (-CUMcac); 
-//	wadjust    = O4+(one-O4)*fabs(CUMcca)/(fabs(CUMcca)+qudricLimit);
-   //CUMcca    += wadjust * (-CUMcca); 
-
-//	wadjust    = O4+(one-O4)*fabs(CUMbbc)/(fabs(CUMbbc)+qudricLimit);
-   //CUMbbc    += wadjust * (-CUMbbc); 
-//	wadjust    = O4+(one-O4)*fabs(CUMbcb)/(fabs(CUMbcb)+qudricLimit);
-   //CUMbcb    += wadjust * (-CUMbcb); 
-//	wadjust    = O4+(one-O4)*fabs(CUMcbb)/(fabs(CUMcbb)+qudricLimit);
-   //CUMcbb    += wadjust * (-CUMcbb); 
-   //////////////////////////////////////////////////////////////////////////
-   //ohne limiter
-   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) * mfabb + c2o1 * mfbba * mfbab) / rho;
-   mfbcb = CUMbcb + ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) / rho;
-   mfbbc = CUMbbc + ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) / rho;
-
-   mfcca = CUMcca + (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9 * (drho / rho));//(one/rho-one));
-   mfcac = CUMcac + (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9 * (drho / rho));//(one/rho-one));
-   mfacc = CUMacc + (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9 * (drho / rho));//(one/rho-one));
-
-   //5.
-   mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
-   mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
-   mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
-
-   //6.
-
-   mfccc = CUMccc - ((-c4o1 * mfbbb * mfbbb
-      - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-      - c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-      - c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
-      + (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-         + c2o1 * (mfcaa * mfaca * mfaac)
-         + c16o1 * mfbba * mfbab * mfabb) / (rho * rho)
-      - c1o3 * (mfacc + mfcac + mfcca) / rho
-      - c1o9 * (mfcaa + mfaca + mfaac) / rho
-      + (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-         + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 * (mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3
-      + c1o27 * ((drho * drho - drho) / (rho * rho)));
-   ////////////////////////////////////////////////////////////////////////////////////
-   //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 * (vvz - c1o2) + (mfaaa + c1o1 * oMdrho) * (vz2 - vvz) * c1o2;
-   m1 = -mfaac - c2o1 * mfaab * vvz + mfaaa * (c1o1 - vz2) - c1o1 * oMdrho * vz2;
-   m2 = mfaac * c1o2 + mfaab * (vvz + c1o2) + (mfaaa + c1o1 * oMdrho) * (vz2 + vvz) * c1o2;
-   mfaaa = m0;
-   mfaab = m1;
-   mfaac = m2;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m0 = mfabc * c1o2 + mfabb * (vvz - c1o2) + mfaba * (vz2 - vvz) * c1o2;
-   m1 = -mfabc - c2o1 * mfabb * vvz + mfaba * (c1o1 - vz2);
-   m2 = mfabc * c1o2 + mfabb * (vvz + c1o2) + mfaba * (vz2 + vvz) * c1o2;
-   mfaba = m0;
-   mfabb = m1;
-   mfabc = m2;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m0 = mfacc * c1o2 + mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * (vz2 - vvz) * c1o2;
-   m1 = -mfacc - c2o1 * mfacb * vvz + mfaca * (c1o1 - vz2) - c1o3 * oMdrho * vz2;
-   m2 = mfacc * c1o2 + mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * (vz2 + vvz) * c1o2;
-   mfaca = m0;
-   mfacb = m1;
-   mfacc = m2;
-   ////////////////////////////////////////////////////////////////////////////////////
-   ////////////////////////////////////////////////////////////////////////////////////
-   m0 = mfbac * c1o2 + mfbab * (vvz - c1o2) + mfbaa * (vz2 - vvz) * c1o2;
-   m1 = -mfbac - c2o1 * mfbab * vvz + mfbaa * (c1o1 - vz2);
-   m2 = mfbac * c1o2 + mfbab * (vvz + c1o2) + mfbaa * (vz2 + vvz) * c1o2;
-   mfbaa = m0;
-   mfbab = m1;
-   mfbac = m2;
-   /////////b//////////////////////////////////////////////////////////////////////////
-   m0 = mfbbc * c1o2 + mfbbb * (vvz - c1o2) + mfbba * (vz2 - vvz) * c1o2;
-   m1 = -mfbbc - c2o1 * mfbbb * vvz + mfbba * (c1o1 - vz2);
-   m2 = mfbbc * c1o2 + mfbbb * (vvz + c1o2) + mfbba * (vz2 + vvz) * c1o2;
-   mfbba = m0;
-   mfbbb = m1;
-   mfbbc = m2;
-   /////////b//////////////////////////////////////////////////////////////////////////
-   m0 = mfbcc * c1o2 + mfbcb * (vvz - c1o2) + mfbca * (vz2 - vvz) * c1o2;
-   m1 = -mfbcc - c2o1 * mfbcb * vvz + mfbca * (c1o1 - vz2);
-   m2 = mfbcc * c1o2 + mfbcb * (vvz + c1o2) + mfbca * (vz2 + vvz) * c1o2;
-   mfbca = m0;
-   mfbcb = m1;
-   mfbcc = m2;
-   ////////////////////////////////////////////////////////////////////////////////////
-   ////////////////////////////////////////////////////////////////////////////////////
-   m0 = mfcac * c1o2 + mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * (vz2 - vvz) * c1o2;
-   m1 = -mfcac - c2o1 * mfcab * vvz + mfcaa * (c1o1 - vz2) - c1o3 * oMdrho * vz2;
-   m2 = mfcac * c1o2 + mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * (vz2 + vvz) * c1o2;
-   mfcaa = m0;
-   mfcab = m1;
-   mfcac = m2;
-   /////////c//////////////////////////////////////////////////////////////////////////
-   m0 = mfcbc * c1o2 + mfcbb * (vvz - c1o2) + mfcba * (vz2 - vvz) * c1o2;
-   m1 = -mfcbc - c2o1 * mfcbb * vvz + mfcba * (c1o1 - vz2);
-   m2 = mfcbc * c1o2 + mfcbb * (vvz + c1o2) + mfcba * (vz2 + vvz) * c1o2;
-   mfcba = m0;
-   mfcbb = m1;
-   mfcbc = m2;
-   /////////c//////////////////////////////////////////////////////////////////////////
-   m0 = mfccc * c1o2 + mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * (vz2 - vvz) * c1o2;
-   m1 = -mfccc - c2o1 * mfccb * vvz + mfcca * (c1o1 - vz2) - c1o9 * oMdrho * vz2;
-   m2 = mfccc * c1o2 + mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * (vz2 + vvz) * 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 * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * (vy2 - vvy) * c1o2;
-   m1 = -mfaca - c2o1 * mfaba * vvy + mfaaa * (c1o1 - vy2) - c1o6 * oMdrho * vy2;
-   m2 = mfaca * c1o2 + mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * (vy2 + vvy) * c1o2;
-   mfaaa = m0;
-   mfaba = m1;
-   mfaca = m2;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m0 = mfacb * c1o2 + mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * (vy2 - vvy) * c1o2;
-   m1 = -mfacb - c2o1 * mfabb * vvy + mfaab * (c1o1 - vy2) - c2o3 * oMdrho * vy2;
-   m2 = mfacb * c1o2 + mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * (vy2 + vvy) * c1o2;
-   mfaab = m0;
-   mfabb = m1;
-   mfacb = m2;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m0 = mfacc * c1o2 + mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * (vy2 - vvy) * c1o2;
-   m1 = -mfacc - c2o1 * mfabc * vvy + mfaac * (c1o1 - vy2) - c1o6 * oMdrho * vy2;
-   m2 = mfacc * c1o2 + mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * (vy2 + vvy) * c1o2;
-   mfaac = m0;
-   mfabc = m1;
-   mfacc = m2;
-   ////////////////////////////////////////////////////////////////////////////////////
-   ////////////////////////////////////////////////////////////////////////////////////
-   m0 = mfbca * c1o2 + mfbba * (vvy - c1o2) + mfbaa * (vy2 - vvy) * c1o2;
-   m1 = -mfbca - c2o1 * mfbba * vvy + mfbaa * (c1o1 - vy2);
-   m2 = mfbca * c1o2 + mfbba * (vvy + c1o2) + mfbaa * (vy2 + vvy) * c1o2;
-   mfbaa = m0;
-   mfbba = m1;
-   mfbca = m2;
-   /////////b//////////////////////////////////////////////////////////////////////////
-   m0 = mfbcb * c1o2 + mfbbb * (vvy - c1o2) + mfbab * (vy2 - vvy) * c1o2;
-   m1 = -mfbcb - c2o1 * mfbbb * vvy + mfbab * (c1o1 - vy2);
-   m2 = mfbcb * c1o2 + mfbbb * (vvy + c1o2) + mfbab * (vy2 + vvy) * c1o2;
-   mfbab = m0;
-   mfbbb = m1;
-   mfbcb = m2;
-   /////////b//////////////////////////////////////////////////////////////////////////
-   m0 = mfbcc * c1o2 + mfbbc * (vvy - c1o2) + mfbac * (vy2 - vvy) * c1o2;
-   m1 = -mfbcc - c2o1 * mfbbc * vvy + mfbac * (c1o1 - vy2);
-   m2 = mfbcc * c1o2 + mfbbc * (vvy + c1o2) + mfbac * (vy2 + vvy) * c1o2;
-   mfbac = m0;
-   mfbbc = m1;
-   mfbcc = m2;
-   ////////////////////////////////////////////////////////////////////////////////////
-   ////////////////////////////////////////////////////////////////////////////////////
-   m0 = mfcca * c1o2 + mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * (vy2 - vvy) * c1o2;
-   m1 = -mfcca - c2o1 * mfcba * vvy + mfcaa * (c1o1 - vy2) - c1o18 * oMdrho * vy2;
-   m2 = mfcca * c1o2 + mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * (vy2 + vvy) * c1o2;
-   mfcaa = m0;
-   mfcba = m1;
-   mfcca = m2;
-   /////////c//////////////////////////////////////////////////////////////////////////
-   m0 = mfccb * c1o2 + mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * (vy2 - vvy) * c1o2;
-   m1 = -mfccb - c2o1 * mfcbb * vvy + mfcab * (c1o1 - vy2) - c2o9 * oMdrho * vy2;
-   m2 = mfccb * c1o2 + mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * (vy2 + vvy) * c1o2;
-   mfcab = m0;
-   mfcbb = m1;
-   mfccb = m2;
-   /////////c//////////////////////////////////////////////////////////////////////////
-   m0 = mfccc * c1o2 + mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * (vy2 - vvy) * c1o2;
-   m1 = -mfccc - c2o1 * mfcbc * vvy + mfcac * (c1o1 - vy2) - c1o18 * oMdrho * vy2;
-   m2 = mfccc * c1o2 + mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * (vy2 + vvy) * 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 * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * (vx2 - vvx) * c1o2;
-   m1 = -mfcaa - c2o1 * mfbaa * vvx + mfaaa * (c1o1 - vx2) - c1o36 * oMdrho * vx2;
-   m2 = mfcaa * c1o2 + mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * (vx2 + vvx) * c1o2;
-   mfaaa = m0;
-   mfbaa = m1;
-   mfcaa = m2;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m0 = mfcba * c1o2 + mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * (vx2 - vvx) * c1o2;
-   m1 = -mfcba - c2o1 * mfbba * vvx + mfaba * (c1o1 - vx2) - c1o9 * oMdrho * vx2;
-   m2 = mfcba * c1o2 + mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * (vx2 + vvx) * c1o2;
-   mfaba = m0;
-   mfbba = m1;
-   mfcba = m2;
-   ////////////////////////////////////////////////////////////////////////////////////
-   m0 = mfcca * c1o2 + mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * (vx2 - vvx) * c1o2;
-   m1 = -mfcca - c2o1 * mfbca * vvx + mfaca * (c1o1 - vx2) - c1o36 * oMdrho * vx2;
-   m2 = mfcca * c1o2 + mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * (vx2 + vvx) * c1o2;
-   mfaca = m0;
-   mfbca = m1;
-   mfcca = m2;
-   ////////////////////////////////////////////////////////////////////////////////////
-   ////////////////////////////////////////////////////////////////////////////////////
-   m0 = mfcab * c1o2 + mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * (vx2 - vvx) * c1o2;
-   m1 = -mfcab - c2o1 * mfbab * vvx + mfaab * (c1o1 - vx2) - c1o9 * oMdrho * vx2;
-   m2 = mfcab * c1o2 + mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * (vx2 + vvx) * c1o2;
-   mfaab = m0;
-   mfbab = m1;
-   mfcab = m2;
-   ///////////b////////////////////////////////////////////////////////////////////////
-   m0 = mfcbb * c1o2 + mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * (vx2 - vvx) * c1o2;
-   m1 = -mfcbb - c2o1 * mfbbb * vvx + mfabb * (c1o1 - vx2) - c4o9 * oMdrho * vx2;
-   m2 = mfcbb * c1o2 + mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * (vx2 + vvx) * c1o2;
-   mfabb = m0;
-   mfbbb = m1;
-   mfcbb = m2;
-   ///////////b////////////////////////////////////////////////////////////////////////
-   m0 = mfccb * c1o2 + mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * (vx2 - vvx) * c1o2;
-   m1 = -mfccb - c2o1 * mfbcb * vvx + mfacb * (c1o1 - vx2) - c1o9 * oMdrho * vx2;
-   m2 = mfccb * c1o2 + mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * (vx2 + vvx) * c1o2;
-   mfacb = m0;
-   mfbcb = m1;
-   mfccb = m2;
-   ////////////////////////////////////////////////////////////////////////////////////
-   ////////////////////////////////////////////////////////////////////////////////////
-   m0 = mfcac * c1o2 + mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * (vx2 - vvx) * c1o2;
-   m1 = -mfcac - c2o1 * mfbac * vvx + mfaac * (c1o1 - vx2) - c1o36 * oMdrho * vx2;
-   m2 = mfcac * c1o2 + mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * (vx2 + vvx) * c1o2;
-   mfaac = m0;
-   mfbac = m1;
-   mfcac = m2;
-   ///////////c////////////////////////////////////////////////////////////////////////
-   m0 = mfcbc * c1o2 + mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * (vx2 - vvx) * c1o2;
-   m1 = -mfcbc - c2o1 * mfbbc * vvx + mfabc * (c1o1 - vx2) - c1o9 * oMdrho * vx2;
-   m2 = mfcbc * c1o2 + mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * (vx2 + vvx) * c1o2;
-   mfabc = m0;
-   mfbbc = m1;
-   mfcbc = m2;
-   ///////////c////////////////////////////////////////////////////////////////////////
-   m0 = mfccc * c1o2 + mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * (vx2 - vvx) * c1o2;
-   m1 = -mfccc - c2o1 * mfbcc * vvx + mfacc * (c1o1 - vx2) - c1o36 * oMdrho * vx2;
-   m2 = mfccc * c1o2 + mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * (vx2 + vvx) * c1o2;
-   mfacc = m0;
-   mfbcc = m1;
-   mfccc = m2;
-   ////////////////////////////////////////////////////////////////////////////////////
-
-   //////////////////////////////////////////////////////////////////////////
-   //proof correctness
-   //////////////////////////////////////////////////////////////////////////
-#ifdef  PROOF_CORRECTNESS
-   real 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);
-   real 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)
-         + " in " + block.lock()->toString() + " step = " + UbSystem::toString(step)));
-   }
-#endif
-   //////////////////////////////////////////////////////////////////////////
-   //write distribution
-   //////////////////////////////////////////////////////////////////////////
-   (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = mfabb;
-   (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = mfbab;
-   (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = mfbba;
-   (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = mfaab;
-   (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3) = mfcab;
-   (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = mfaba;
-   (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3) = mfcba;
-   (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = mfbaa;
-   (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3) = mfbca;
-   (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = mfaaa;
-   (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3) = mfcaa;
-   (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3) = mfaca;
-   (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3) = mfcca;
-
-   (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3) = mfcbb;
-   (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3) = mfbcb;
-   (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p) = mfbbc;
-   (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3) = mfccb;
-   (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3) = mfacb;
-   (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p) = mfcbc;
-   (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p) = mfabc;
-   (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p) = mfbcc;
-   (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p) = mfbac;
-   (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p) = mfccc;
-   (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p) = mfacc;
-   (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p) = mfcac;
-   (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p) = mfaac;
-
-   (*this->zeroDistributions)(x1, x2, x3) = mfbbb;
-   //////////////////////////////////////////////////////////////////////////
-}
diff --git a/src/cpu/core/LBM/CumulantLBMKernel.h b/src/cpu/core/LBM/CumulantLBMKernel.h
deleted file mode 100644
index 3ba644ccc..000000000
--- a/src/cpu/core/LBM/CumulantLBMKernel.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef CumulantLBMKernel_h__
-#define CumulantLBMKernel_h__
-
-#include "BasicLBMKernel.h"
-#include "BCSet.h"
-#include "D3Q27System.h"
-#include "basics/utilities/UbTiming.h"
-#include "basics/container/CbArray4D.h"
-#include "basics/container/CbArray3D.h"
-
-//! \brief   compressible cumulant LBM kernel. 
-//! \details CFD solver that use Cascaded Cumulant Lattice Boltzmann method for D3Q27 model
-//! \author  K. Kutscher, M. Geier
-class CumulantLBMKernel : public BasicLBMKernel
-{
-public:
-   //! This option set relaxation parameter: NORMAL  
-   enum Parameter { NORMAL, MAGIC };
-public:
-   CumulantLBMKernel();
-   virtual ~CumulantLBMKernel() = default;
-   //virtual void calculate(int step);
-   SPtr<LBMKernel> clone() override;
-   real getCalculationTime() override;
-   void setBulkOmegaToOmega(bool value);
-   void setRelaxationParameter(Parameter p);
-protected:
-   void initData() override;
-   void nodeCollision(int step, int x1, int x2, int x3) override;
-   void initDataSet();
-   real f[D3Q27System::ENDF + 1];
-
-   UbTimer timer;
-
-   real OxyyMxzz;
-   Parameter parameter;
-
-   CbArray4D<real, IndexerX4X3X2X1>::CbArray4DPtr localDistributions;
-   CbArray4D<real, IndexerX4X3X2X1>::CbArray4DPtr nonLocalDistributions;
-   CbArray3D<real, IndexerX3X2X1>::CbArray3DPtr   zeroDistributions;
-
-   mu::value_type muX1, muX2, muX3;
-   mu::value_type muDeltaT;
-   mu::value_type muNu;
-   real forcingX1;
-   real forcingX2;
-   real forcingX3;
-
-   // bulk viscosity
-   bool bulkOmegaToOmega;
-   real OxxPyyPzz;
-
-   real omega;
-};
-#endif // CumulantLBMKernel_h__
\ No newline at end of file
diff --git a/src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp b/src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp
deleted file mode 100644
index d052f4f71..000000000
--- a/src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp
+++ /dev/null
@@ -1,1012 +0,0 @@
-#include "IncompressibleCumulantWithSpongeLayerLBMKernel.h"
-#include "D3Q27System.h"
-#include "D3Q27EsoTwist3DSplittedVector.h"
-#include <cmath>
-#include "DataSet3D.h"
-#include "BCArray3D.h"
-#include "Block3D.h"
-
-#define PROOF_CORRECTNESS
-
-//using namespace UbMath;    
-using namespace vf::basics::constant;
-
-//////////////////////////////////////////////////////////////////////////
-IncompressibleCumulantWithSpongeLayerLBMKernel::IncompressibleCumulantWithSpongeLayerLBMKernel()
-= default;
-//////////////////////////////////////////////////////////////////////////
-IncompressibleCumulantWithSpongeLayerLBMKernel::~IncompressibleCumulantWithSpongeLayerLBMKernel(void)
-= default;
-//////////////////////////////////////////////////////////////////////////
-void IncompressibleCumulantWithSpongeLayerLBMKernel::initDataSet()
-{
-   SPtr<DistributionArray3D> d(new D3Q27EsoTwist3DSplittedVector(nx[0]+2, nx[1]+2, nx[2]+2, -999.9));
-   dataSet->setFdistributions(d);
-}
-//////////////////////////////////////////////////////////////////////////
-void IncompressibleCumulantWithSpongeLayerLBMKernel::setRelaxFactorParam(int vdir, real vL1, real vdx, real vSP)
-{
-   direction = vdir;
-   L1 = vL1;
-   dx = vdx;
-   SP = vSP;
-}
-//////////////////////////////////////////////////////////////////////////
-void IncompressibleCumulantWithSpongeLayerLBMKernel::initRelaxFactor(int vdir, real vL1, real vdx, real vSP)
-{
-    using namespace vf::lbm::dir;
-
-   direction = vdir;
-   L1 = vL1;
-   dx = vdx;
-   SP = vSP;
-
-   real sizeX = L1 / dx;
-   real sizeSP = SP / dx;
-   real muX1, muX2, muX3;
-
-   real spongeFactor;
-
-   SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray();
-
-   const int bcArrayMaxX1 = (int)bcArray->getNX1();
-   const int bcArrayMaxX2 = (int)bcArray->getNX2();
-   const int bcArrayMaxX3 = (int)bcArray->getNX3();
-
-   int minX1 = 0;
-   int minX2 = 0;
-   int minX3 = 0;
-   int maxX1 = bcArrayMaxX1 - ghostLayerWidth - 1;
-   int maxX2 = bcArrayMaxX2 - ghostLayerWidth - 1;
-   int maxX3 = bcArrayMaxX3 - ghostLayerWidth - 1;
-
-   SPtr<RelaxationFactorArray3D> relaxationFactorPtr = CbArray3D<real, IndexerX3X2X1>::CbArray3DPtr(new CbArray3D<real, IndexerX3X2X1>(maxX1, maxX2, maxX3));
-   dataSet->setRelaxationFactor(relaxationFactorPtr);
-
-   for (int x3 = minX3; x3 < maxX3; x3++)
-   {
-      for (int x2 = minX2; x2 < maxX2; x2++)
-      {
-         for (int x1 = minX1; x1 < maxX1; x1++)
-         {
-            switch (direction)
-            {
-            case dP00:
-               muX1 = (real)(x1 + ix1 * maxX1);
-               if (muX1 >= (sizeX - sizeSP) / deltaT)
-                  spongeFactor = (sizeX - (muX1 * deltaT + c1o1)) / sizeSP / c2o1 + c1o2;
-               else spongeFactor = c1o1;
-               break;
-            case dM00:
-               muX1 = (real)(x1 + ix1 * maxX1);
-               if (muX1 <= sizeSP / deltaT)
-                  spongeFactor = (sizeSP - (muX1 * deltaT + c1o1)) / sizeSP / c2o1 + c1o2;
-               else spongeFactor = c1o1;
-               break;
-            case d0P0:
-               muX2 = (real)(x2 + ix2 * maxX2);
-               if (muX2 >= (sizeX - sizeSP) / deltaT)
-                  spongeFactor = (sizeX - (muX2 * deltaT + c1o1)) / sizeSP / c2o1 + c1o2;
-               else spongeFactor = c1o1;
-               break;
-            case d0M0:
-               muX2 = (real)(x2 + ix2 * maxX2);
-               if (muX2 <= sizeSP / deltaT)
-                  spongeFactor = (sizeSP - (muX2 * deltaT + c1o1)) / sizeSP / c2o1 + c1o2;
-               else spongeFactor = c1o1;
-               break;
-            case d00P:
-               muX3 = (real)(x3 + ix3 * maxX3);
-               if (muX3 >= (sizeX - sizeSP) / deltaT)
-                  spongeFactor = (sizeX - (muX3 * deltaT + c1o1)) / sizeSP / c2o1 + c1o2;
-               else spongeFactor = c1o1;
-               break;
-            case d00M:
-               muX3 = (real)(x3 + ix3 * maxX3);
-               if (muX3 <= sizeSP / deltaT)
-                  spongeFactor = (sizeSP - (muX3 * deltaT + c1o1)) / sizeSP / c2o1 + c1o2;
-               else spongeFactor = c1o1;
-               break;
-            default: throw UbException(UB_EXARGS, "unknown dir");
-            }
-            (*relaxationFactorPtr)(x1, x2, x3) = spongeFactor;
-         }
-      }
-   }
-}
-
-//////////////////////////////////////////////////////////////////////////
-SPtr<LBMKernel> IncompressibleCumulantWithSpongeLayerLBMKernel::clone()
-{
-   SPtr<LBMKernel> kernel(new IncompressibleCumulantWithSpongeLayerLBMKernel());
-   kernel->setNX(nx);
-   dynamicPointerCast<IncompressibleCumulantWithSpongeLayerLBMKernel>(kernel)->initDataSet();
-   kernel->setCollisionFactor(this->collFactor);
-   kernel->setBCSet(bcSet->clone(kernel));
-   kernel->setWithForcing(withForcing);
-   kernel->setForcingX1(muForcingX1);
-   kernel->setForcingX2(muForcingX2);
-   kernel->setForcingX3(muForcingX3);
-   kernel->setIndex(ix1, ix2, ix3);
-   kernel->setDeltaT(deltaT);
-   kernel->setBlock(block.lock());
-
-   switch (parameter)
-   {
-   case NORMAL:
-      dynamicPointerCast<IncompressibleCumulantWithSpongeLayerLBMKernel>(kernel)->OxyyMxzz = c1o1;
-      break;
-   case MAGIC:
-      dynamicPointerCast<IncompressibleCumulantWithSpongeLayerLBMKernel>(kernel)->OxyyMxzz = c2o1 +(-collFactor);
-      break;
-   }
-
-   kernel->setWithSpongeLayer(withSpongeLayer);
-   if(withSpongeLayer) kernel->setSpongeLayer(muSpongeLayer);
-   dynamicPointerCast<IncompressibleCumulantWithSpongeLayerLBMKernel>(kernel)->initRelaxFactor(direction, L1, dx, SP);
-   return kernel;
-}  
-//////////////////////////////////////////////////////////////////////////
-void IncompressibleCumulantWithSpongeLayerLBMKernel::calculate(int step)
-{
-   using namespace D3Q27System;
-   using namespace std;
-
-   if(!withSpongeLayer)
-   {
-      UB_THROW(UbException(UB_EXARGS,"Sponge layer isn't initialized!"));
-   }
-   //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("dx",&muDeltaT);
-   //   muForcingX2.DefineVar("dx",&muDeltaT);
-   //   muForcingX3.DefineVar("dx",&muDeltaT);
-
-   //   muNu = (1.0/3.0)*(1.0/collFactor - 1.0/c2o10);
-
-   //   muForcingX1.DefineVar("nu",&muNu);
-   //   muForcingX2.DefineVar("nu",&muNu);
-   //   muForcingX3.DefineVar("nu",&muNu);
-
-   //   LBMReal forcingX1 = 0;
-   //   LBMReal forcingX2 = 0;
-   //   LBMReal forcingX3 = 0;
-   //}
-   /////////////////////////////////////
-   //initialization of sponge layer variables
-   //if (withSpongeLayer)
-   //{
-      //muDeltaT = deltaT;
-      //muSpongeLayer.DefineVar("dt",&muDeltaT);
-      //muSpongeLayer.DefineVar("x1",&muX1); muSpongeLayer.DefineVar("x2",&muX2); muSpongeLayer.DefineVar("x3",&muX3);
-   //}
-   /////////////////////////////////////
-
-   localDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions();
-   nonLocalDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions();
-   zeroDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions();
-
-   SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray();
-   SPtr<RelaxationFactorArray3D> relaxationFactorPtr = dataSet->getRelaxationFactor();
-
-   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-1;
-   int maxX2 = bcArrayMaxX2-ghostLayerWidth-1;
-   int maxX3 = bcArrayMaxX3-ghostLayerWidth-1;
-
-   real collFactor0 = collFactor;
-   real spongeFactor;
-
-   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 distribution
-               ////////////////////////////////////////////////////////////////////////////
-               //////////////////////////////////////////////////////////////////////////
-
-               //E   N  T
-               //c   c  c
-               //////////
-               //W   S  B
-               //a   a  a
-
-               //Rest ist b
-
-               real mfcbb = (*this->localDistributions)(D3Q27System::ET_E, x1,x2,x3);
-               real mfbcb = (*this->localDistributions)(D3Q27System::ET_N,x1,x2,x3); 
-               real mfbbc = (*this->localDistributions)(D3Q27System::ET_T,x1,x2,x3);
-               real mfccb = (*this->localDistributions)(D3Q27System::ET_NE,x1,x2,x3);
-               real mfacb = (*this->localDistributions)(D3Q27System::ET_NW,x1p,x2,x3);
-               real mfcbc = (*this->localDistributions)(D3Q27System::ET_TE,x1,x2,x3);
-               real mfabc = (*this->localDistributions)(D3Q27System::ET_TW, x1p,x2,x3);
-               real mfbcc = (*this->localDistributions)(D3Q27System::ET_TN,x1,x2,x3);
-               real mfbac = (*this->localDistributions)(D3Q27System::ET_TS,x1,x2p,x3);
-               real mfccc = (*this->localDistributions)(D3Q27System::ET_TNE,x1,x2,x3);
-               real mfacc = (*this->localDistributions)(D3Q27System::ET_TNW,x1p,x2,x3);
-               real mfcac = (*this->localDistributions)(D3Q27System::ET_TSE,x1,x2p,x3);
-               real mfaac = (*this->localDistributions)(D3Q27System::ET_TSW,x1p,x2p,x3);
-
-               real mfabb = (*this->nonLocalDistributions)(D3Q27System::ET_W,x1p,x2,x3  );
-               real mfbab = (*this->nonLocalDistributions)(D3Q27System::ET_S,x1,x2p,x3  );
-               real mfbba = (*this->nonLocalDistributions)(D3Q27System::ET_B,x1,x2,x3p  );
-               real mfaab = (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1p,x2p,x3 );
-               real mfcab = (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1,x2p,x3 );
-               real mfaba = (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1p,x2,x3p );
-               real mfcba = (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1,x2,x3p );
-               real mfbaa = (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1,x2p,x3p );
-               real mfbca = (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1,x2,x3p );
-               real mfaaa = (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1p,x2p,x3p);
-               real mfcaa = (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1,x2p,x3p);
-               real mfaca = (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1p,x2,x3p);
-               real mfcca = (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1,x2,x3p);
-
-               real mfbbb = (*this->zeroDistributions)(x1,x2,x3);
-
-               real m0, m1, m2;
-               
-               real 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;
-
-               real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) +
-                  (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
-                  (mfcbb-mfabb));
-               real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) +
-                  (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
-                  (mfbcb-mfbab));
-               real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) +
-                  (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
-                  (mfbbc-mfbba));
-               //////////////////////////////////////////////////////////////////////////
-               //forcing 
-               ///////////////////////////////////////////////////////////////////////////////////////////
-               //if (withForcing)
-               //{
-               //   muX1 = (double)(x1-1+ix1*maxX1);
-               //   muX2 = (double)(x2-1+ix2*maxX2);
-               //   muX3 = (double)(x3-1+ix3*maxX3);
-
-               //   forcingX1 = muForcingX1.Eval();
-               //   forcingX2 = muForcingX2.Eval();
-               //   forcingX3 = muForcingX3.Eval();
-
-               //   vvx += forcingX1*0.5; // X
-               //   vvy += forcingX2*0.5; // Y
-               //   vvz += forcingX3*0.5; // Z
-               //}
-               ///////////////////////////////////////////////////////////////////////////////////////////      
-               //sponge layer
-               ///////////////////////////////////////////////////////////////////////////////////////////
-               //if (withSpongeLayer)
-               //{
-                  //if (!withForcing)
-                  //{
-                    //lk// muX1 = (double)(x1-1+ix1*maxX1);
-                     //muX2 = (double)(x2-1+ix2*maxX2);
-                     //muX3 = (double)(x3-1+ix3*maxX3);
-                  //}
-                  //spongeFactor ist von Funktion in muSpongeLayer abh�ngich und variiert zwischen 1 (nix tun) und 0.5 (collFactor etwa auf 1);
-                  //lk //LBMReal spongeFactor = muSpongeLayer.Eval();
-
-                  //if (spongeFactor == 0.5)
-                  //{
-                  //   int Test=0;
-                  //}
-
-                  //if(muX3 == ix3*maxX3/2 && muX2==ix2*maxX2/2)
-                  //   UBLOG(logINFO," x1="<<muX1<<" spongeFactor = " << spongeFactor <<" collFactor="<<collFactor);
-
-                  spongeFactor = (*relaxationFactorPtr)(x1-1, x2-1, x3-1);
-                  collFactor *= spongeFactor;
-                  //if(muX3 == ix3*maxX3/2 && muX2==ix2*maxX2/2)
-                  //   UBLOG(logINFO," x1="<<muX1<<" spongeFactor = " << spongeFactor <<" collFactor="<<collFactor);
-
-               //}
-               //////////////////////////////////////////////////////////////////////////
-
-               real 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 = c1o1 - (oMdrho + m0);
-
-               real vx2;
-               real vy2;
-               real vz2;
-               vx2=vvx*vvx;
-               vy2=vvy*vvy;
-               vz2=vvz*vvz;
-               ////////////////////////////////////////////////////////////////////////////////////
-               real wadjust;
-               real qudricLimit = c1o100;
-               ////////////////////////////////////////////////////////////////////////////////////
-               //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 * vvz;
-               mfaac = m2 - c2o1 *   m1 * vvz + vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfaba  + mfabc;
-               m1    = mfabc  - mfaba;
-               m0    = m2          + mfabb;
-               mfaba = m0;
-               m0   += c1o9 * oMdrho;
-               mfabb = m1 -        m0 * vvz;
-               mfabc = m2 - c2o1 *   m1 * vvz + vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfaca  + mfacc;
-               m1    = mfacc  - mfaca;
-               m0    = m2          + mfacb;
-               mfaca = m0;
-               m0   += c1o36 * oMdrho;
-               mfacb = m1 -        m0 * vvz;
-               mfacc = m2 - c2o1 *   m1 * vvz + vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfbaa + mfbac;
-               m1    = mfbac - mfbaa;
-               m0    = m2          + mfbab;
-               mfbaa = m0;
-               m0   += c1o9 * oMdrho;
-               mfbab = m1 -        m0 * vvz;
-               mfbac = m2 - c2o1 *   m1 * vvz + vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfbba  + mfbbc;
-               m1    = mfbbc  - mfbba;
-               m0    = m2          + mfbbb;
-               mfbba = m0;
-               m0   += c4o9 * oMdrho;
-               mfbbb = m1 -        m0 * vvz;
-               mfbbc = m2 - c2o1 *   m1 * vvz + vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfbca  + mfbcc;
-               m1    = mfbcc  - mfbca;
-               m0    = m2          + mfbcb;
-               mfbca = m0;
-               m0   += c1o9 * oMdrho;
-               mfbcb = m1 -        m0 * vvz;
-               mfbcc = m2 - c2o1 *   m1 * vvz + vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfcaa + mfcac;
-               m1    = mfcac - mfcaa;
-               m0    = m2          + mfcab;
-               mfcaa = m0;
-               m0   += c1o36 * oMdrho;
-               mfcab = m1 -        m0 * vvz;
-               mfcac = m2 - c2o1 *   m1 * vvz + vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfcba  + mfcbc;
-               m1    = mfcbc  - mfcba;
-               m0    = m2          + mfcbb;
-               mfcba = m0;
-               m0   += c1o9 * oMdrho;
-               mfcbb = m1 -        m0 * vvz;
-               mfcbc = m2 - c2o1 *   m1 * vvz + vz2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfcca  + mfccc;
-               m1    = mfccc  - mfcca;
-               m0    = m2          + mfccb;
-               mfcca = m0;
-               m0   += c1o36 * oMdrho;
-               mfccb = m1 -        m0 * vvz;
-               mfccc = m2 - c2o1 *   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   += c1o6 * oMdrho;
-               mfaba = m1 -        m0 * vvy;
-               mfaca = m2 - c2o1 *   m1 * vvy + vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfaab  + mfacb;
-               m1    = mfacb  - mfaab;
-               m0    = m2          + mfabb;
-               mfaab = m0;
-               mfabb = m1 -        m0 * vvy;
-               mfacb = m2 - c2o1 *   m1 * vvy + vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfaac  + mfacc;
-               m1    = mfacc  - mfaac;
-               m0    = m2          + mfabc;
-               mfaac = m0;
-               m0   += c1o18 * oMdrho;
-               mfabc = m1 -        m0 * vvy;
-               mfacc = m2 - c2o1 *   m1 * vvy + vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfbaa + mfbca;
-               m1    = mfbca - mfbaa;
-               m0    = m2          + mfbba;
-               mfbaa = m0;
-               m0   += c2o3 * oMdrho;
-               mfbba = m1 -        m0 * vvy;
-               mfbca = m2 - c2o1 *   m1 * vvy + vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfbab  + mfbcb;
-               m1    = mfbcb  - mfbab;
-               m0    = m2          + mfbbb;
-               mfbab = m0;
-               mfbbb = m1 -        m0 * vvy;
-               mfbcb = m2 - c2o1 *   m1 * vvy + vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfbac  + mfbcc;
-               m1    = mfbcc  - mfbac;
-               m0    = m2          + mfbbc;
-               mfbac = m0;
-               m0   += c2o9 * oMdrho;
-               mfbbc = m1 -        m0 * vvy;
-               mfbcc = m2 - c2o1 *   m1 * vvy + vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfcaa + mfcca;
-               m1    = mfcca - mfcaa;
-               m0    = m2          + mfcba;
-               mfcaa = m0;
-               m0   += c1o6 * oMdrho;
-               mfcba = m1 -        m0 * vvy;
-               mfcca = m2 - c2o1 *   m1 * vvy + vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfcab  + mfccb;
-               m1    = mfccb  - mfcab;
-               m0    = m2          + mfcbb;
-               mfcab = m0;
-               mfcbb = m1 -        m0 * vvy;
-               mfccb = m2 - c2o1 *   m1 * vvy + vy2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfcac  + mfccc;
-               m1    = mfccc  - mfcac;
-               m0    = m2          + mfcbc;
-               mfcac = m0;
-               m0   += c1o18 * oMdrho;
-               mfcbc = m1 -        m0 * vvy;
-               mfccc = m2 - c2o1 *   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   += c1o1 * oMdrho;
-               mfbaa = m1 -        m0 * vvx;
-               mfcaa = m2 - c2o1 *   m1 * vvx + vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfaba  + mfcba;
-               m1    = mfcba  - mfaba;
-               m0    = m2          + mfbba;
-               mfaba = m0;
-               mfbba = m1 -        m0 * vvx;
-               mfcba = m2 - c2o1 *   m1 * vvx + vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfaca  + mfcca;
-               m1    = mfcca  - mfaca;
-               m0    = m2          + mfbca;
-               mfaca = m0;
-               m0   += c1o3 * oMdrho;
-               mfbca = m1 -        m0 * vvx;
-               mfcca = m2 - c2o1 *   m1 * vvx + vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfaab + mfcab;
-               m1    = mfcab - mfaab;
-               m0    = m2          + mfbab;
-               mfaab = m0;
-               mfbab = m1 -        m0 * vvx;
-               mfcab = m2 - c2o1 *   m1 * vvx + vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfabb  + mfcbb;
-               m1    = mfcbb  - mfabb;
-               m0    = m2          + mfbbb;
-               mfabb = m0;
-               mfbbb = m1 -        m0 * vvx;
-               mfcbb = m2 - c2o1 *   m1 * vvx + vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfacb  + mfccb;
-               m1    = mfccb  - mfacb;
-               m0    = m2          + mfbcb;
-               mfacb = m0;
-               mfbcb = m1 -        m0 * vvx;
-               mfccb = m2 - c2o1 *   m1 * vvx + vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfaac + mfcac;
-               m1    = mfcac - mfaac;
-               m0    = m2          + mfbac;
-               mfaac = m0;
-               m0   += c1o3 * oMdrho;
-               mfbac = m1 -        m0 * vvx;
-               mfcac = m2 - c2o1 *   m1 * vvx + vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfabc  + mfcbc;
-               m1    = mfcbc  - mfabc;
-               m0    = m2          + mfbbc;
-               mfabc = m0;
-               mfbbc = m1 -        m0 * vvx;
-               mfcbc = m2 - c2o1 *   m1 * vvx + vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m2    = mfacc  + mfccc;
-               m1    = mfccc  - mfacc;
-               m0    = m2          + mfbcc;
-               mfacc = m0;
-               m0   += c1o9 * oMdrho;
-               mfbcc = m1 -        m0 * vvx;
-               mfccc = m2 - c2o1 *   m1 * vvx + vx2 * m0;
-               ////////////////////////////////////////////////////////////////////////////////////
-               // Cumulants
-               ////////////////////////////////////////////////////////////////////////////////////
-               real OxxPyyPzz = c1o1;
-               real OxyyPxzz  = c1o1;//-s9;//2+s9;//
-               //real OxyyMxzz  = c1o1;//2+s9;//
-               real O4        = c1o1;
-               real O5        = c1o1;
-               real O6        = c1o1;
-
-               //Cum c4o1
-               real CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + c2o1 * mfbba * mfbab);
-               real CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + c2o1 * mfbba * mfabb);
-               real CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + c2o1 * mfbab * mfabb);
-
-               real CUMcca = mfcca - (mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-1)*oMdrho;
-               real CUMcac = mfcac - (mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-1)*oMdrho;
-               real CUMacc = mfacc - (mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-1)*oMdrho;
-
-               //Cum 5.
-               real CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) - c1o3 * (mfbca + mfbac) * oMdrho;
-               real CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) - c1o3 * (mfcba + mfabc) * oMdrho;
-               real CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) - c1o3 * (mfacb + mfcab) * oMdrho;
-
-               //Cum 6.
-               real CUMccc = mfccc  +((-c4o1 *  mfbbb * mfbbb 
-                  -       (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-                  -  c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-                  -  c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb))
-                  +( c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-                  +  c2o1 * (mfcaa * mfaca * mfaac)
-                  + c16o1 *  mfbba * mfbab * mfabb)
-                  - c1o3* (mfacc + mfcac + mfcca) * oMdrho  -c1o9*oMdrho*oMdrho
-                  - c1o9* (mfcaa + mfaca + mfaac) * oMdrho*(c1o1-c2o1* oMdrho)- c1o27* oMdrho * oMdrho*(-c2o1* oMdrho)
-                  +( c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-                  +       (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa)) * c2o3*oMdrho) +c1o27*oMdrho;
-
-               //2.
-               // linear combinations
-               real mxxPyyPzz = mfcaa + mfaca + mfaac;
-               real mxxMyy    = mfcaa - mfaca;
-               real mxxMzz         = mfcaa - mfaac;
-
-               real dxux = -c1o2 * collFactor *(mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz*(mfaaa - mxxPyyPzz);
-               real dyuy = dxux + collFactor * c3o2 * mxxMyy;
-               real dzuz = dxux + collFactor * c3o2 * mxxMzz;
-
-               //relax
-               mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- c3o1 * (c1o1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
-               mxxMyy    += collFactor * (-mxxMyy) - c3o1 * (c1o1 - c1o2 * collFactor) * (vx2 * dxux - vy2 * dyuy);
-               mxxMzz    += collFactor * (-mxxMzz) - c3o1 * (c1o1 - c1o2 * collFactor) * (vx2 * dxux - vz2 * dzuz);
-
-               mfabb     += collFactor * (-mfabb);
-               mfbab     += collFactor * (-mfbab);
-               mfbba     += collFactor * (-mfbba);
-
-               // linear combinations back
-               mfcaa = c1o3 * (       mxxMyy +      mxxMzz + mxxPyyPzz);
-               mfaca = c1o3 * (-c2o1 *  mxxMyy +      mxxMzz + mxxPyyPzz);
-               mfaac = c1o3 * (       mxxMyy - c2o1 * mxxMzz + mxxPyyPzz);
-
-               //3.
-               // linear combinations
-               real mxxyPyzz = mfcba + mfabc;
-               real mxxyMyzz = mfcba - mfabc;
-
-               real mxxzPyyz = mfcab + mfacb;
-               real mxxzMyyz = mfcab - mfacb;
-
-               real mxyyPxzz = mfbca + mfbac;
-               real mxyyMxzz = mfbca - mfbac;
-
-               //relax
-               wadjust    = OxyyMxzz+(c1o1-OxyyMxzz)*fabs(mfbbb)/(fabs(mfbbb)+qudricLimit);
-               mfbbb     += wadjust * (-mfbbb);
-               wadjust    = OxyyPxzz+(c1o1-OxyyPxzz)*fabs(mxxyPyzz)/(fabs(mxxyPyzz)+qudricLimit);
-               mxxyPyzz  += wadjust * (-mxxyPyzz);
-               wadjust    = OxyyMxzz+(c1o1-OxyyMxzz)*fabs(mxxyMyzz)/(fabs(mxxyMyzz)+qudricLimit);
-               mxxyMyzz  += wadjust * (-mxxyMyzz);
-               wadjust    = OxyyPxzz+(c1o1-OxyyPxzz)*fabs(mxxzPyyz)/(fabs(mxxzPyyz)+qudricLimit);
-               mxxzPyyz  += wadjust * (-mxxzPyyz);
-               wadjust    = OxyyMxzz+(c1o1-OxyyMxzz)*fabs(mxxzMyyz)/(fabs(mxxzMyyz)+qudricLimit);
-               mxxzMyyz  += wadjust * (-mxxzMyyz);
-               wadjust    = OxyyPxzz+(c1o1-OxyyPxzz)*fabs(mxyyPxzz)/(fabs(mxyyPxzz)+qudricLimit);
-               mxyyPxzz  += wadjust * (-mxyyPxzz);
-               wadjust    = OxyyMxzz+(c1o1-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 + c2o1 * mfbba * mfbab);
-               mfbcb = CUMbcb + ((mfaca + c1o3 * oMdrho) * mfbab + c2o1 * mfbba * mfabb);
-               mfbbc = CUMbbc + ((mfaac + c1o3 * oMdrho) * mfbba + c2o1 * mfbab * mfabb);
-
-               mfcca = CUMcca + (mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-1)*oMdrho;
-               mfcac = CUMcac + (mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-1)*oMdrho;
-               mfacc = CUMacc + (mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-1)*oMdrho;
-
-               //5.
-               mfbcc = CUMbcc + (mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) * oMdrho;
-               mfcbc = CUMcbc + (mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) * oMdrho;
-               mfccb = CUMccb + (mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) * oMdrho;
-
-               //6.
-               mfccc = CUMccc  -((-c4o1 *  mfbbb * mfbbb 
-                  -       (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-                  -  c4o1 * (mfabb * mfcbb + mfbac * mfbca + mfbba * mfbbc)
-                  -  c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb))
-                  +( c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-                  +  c2o1 * (mfcaa * mfaca * mfaac)
-                  + c16o1 *  mfbba * mfbab * mfabb)
-                  - c1o3* (mfacc + mfcac + mfcca) * oMdrho  -c1o9*oMdrho*oMdrho
-                  - c1o9* (mfcaa + mfaca + mfaac) * oMdrho*(c1o1-c2o1* oMdrho)- c1o27* oMdrho * oMdrho*(-c2o1* oMdrho)
-                  +( c2o1 * (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 * (vvz - c1o2) + (mfaaa + c1o1 * oMdrho) * (     vz2 - vvz) * c1o2;
-               m1 = -mfaac        - c2o1 * mfaab *  vvz         +  mfaaa                * (c1o1 - vz2)              - c1o1 * oMdrho * vz2;
-               m2 =  mfaac * c1o2 +      mfaab * (vvz + c1o2) + (mfaaa + c1o1 * oMdrho) * (     vz2 + vvz) * c1o2;
-               mfaaa = m0;
-               mfaab = m1;
-               mfaac = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 =  mfabc * c1o2 +      mfabb * (vvz - c1o2) + mfaba * (     vz2 - vvz) * c1o2;
-               m1 = -mfabc        - c2o1 * mfabb *  vvz         + mfaba * (c1o1 - vz2);
-               m2 =  mfabc * c1o2 +      mfabb * (vvz + c1o2) + mfaba * (     vz2 + vvz) * c1o2;
-               mfaba = m0;
-               mfabb = m1;
-               mfabc = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 =  mfacc * c1o2 +      mfacb * (vvz - c1o2) + (mfaca + c1o3 * oMdrho) * (     vz2 - vvz) * c1o2;
-               m1 = -mfacc        - c2o1 * mfacb *  vvz         +  mfaca                  * (c1o1 - vz2)              - c1o3 * oMdrho * vz2;
-               m2 =  mfacc * c1o2 +      mfacb * (vvz + c1o2) + (mfaca + c1o3 * oMdrho) * (     vz2 + vvz) * c1o2;
-               mfaca = m0;
-               mfacb = m1;
-               mfacc = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 =  mfbac * c1o2 +      mfbab * (vvz - c1o2) + mfbaa * (     vz2 - vvz) * c1o2;
-               m1 = -mfbac        - c2o1 * mfbab *  vvz         + mfbaa * (c1o1 - vz2);
-               m2 =  mfbac * c1o2 +      mfbab * (vvz + c1o2) + mfbaa * (     vz2 + vvz) * c1o2;
-               mfbaa = m0;
-               mfbab = m1;
-               mfbac = m2;
-               /////////b//////////////////////////////////////////////////////////////////////////
-               m0 =  mfbbc * c1o2 +      mfbbb * (vvz - c1o2) + mfbba * (     vz2 - vvz) * c1o2;
-               m1 = -mfbbc        - c2o1 * mfbbb *  vvz         + mfbba * (c1o1 - vz2);
-               m2 =  mfbbc * c1o2 +      mfbbb * (vvz + c1o2) + mfbba * (     vz2 + vvz) * c1o2;
-               mfbba = m0;
-               mfbbb = m1;
-               mfbbc = m2;
-               /////////b//////////////////////////////////////////////////////////////////////////
-               m0 =  mfbcc * c1o2 +      mfbcb * (vvz - c1o2) + mfbca * (     vz2 - vvz) * c1o2;
-               m1 = -mfbcc        - c2o1 * mfbcb *  vvz         + mfbca * (c1o1 - vz2);
-               m2 =  mfbcc * c1o2 +      mfbcb * (vvz + c1o2) + mfbca * (     vz2 + vvz) * c1o2;
-               mfbca = m0;
-               mfbcb = m1;
-               mfbcc = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 =  mfcac * c1o2 +      mfcab * (vvz - c1o2) + (mfcaa + c1o3 * oMdrho) * (     vz2 - vvz) * c1o2;
-               m1 = -mfcac        - c2o1 * mfcab *  vvz         +  mfcaa                  * (c1o1 - vz2)              - c1o3 * oMdrho * vz2;
-               m2 =  mfcac * c1o2 +      mfcab * (vvz + c1o2) + (mfcaa + c1o3 * oMdrho) * (     vz2 + vvz) * c1o2;
-               mfcaa = m0;
-               mfcab = m1;
-               mfcac = m2;
-               /////////c//////////////////////////////////////////////////////////////////////////
-               m0 =  mfcbc * c1o2 +      mfcbb * (vvz - c1o2) + mfcba * (     vz2 - vvz) * c1o2;
-               m1 = -mfcbc        - c2o1 * mfcbb *  vvz         + mfcba * (c1o1 - vz2);
-               m2 =  mfcbc * c1o2 +      mfcbb * (vvz + c1o2) + mfcba * (     vz2 + vvz) * c1o2;
-               mfcba = m0;
-               mfcbb = m1;
-               mfcbc = m2;
-               /////////c//////////////////////////////////////////////////////////////////////////
-               m0 =  mfccc * c1o2 +      mfccb * (vvz - c1o2) + (mfcca + c1o9 * oMdrho) * (     vz2 - vvz) * c1o2;
-               m1 = -mfccc        - c2o1 * mfccb *  vvz         +  mfcca                  * (c1o1 - vz2)              - c1o9 * oMdrho * vz2;
-               m2 =  mfccc * c1o2 +      mfccb * (vvz + c1o2) + (mfcca + c1o9 * oMdrho) * (     vz2 + vvz) * 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 * (vvy - c1o2) + (mfaaa + c1o6 * oMdrho) * (     vy2 - vvy) * c1o2;
-               m1 = -mfaca        - c2o1 * mfaba *  vvy         +  mfaaa                  * (c1o1 - vy2)              - c1o6 * oMdrho * vy2;
-               m2 =  mfaca * c1o2 +      mfaba * (vvy + c1o2) + (mfaaa + c1o6 * oMdrho) * (     vy2 + vvy) * c1o2;
-               mfaaa = m0;
-               mfaba = m1;
-               mfaca = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 =  mfacb * c1o2 +      mfabb * (vvy - c1o2) + (mfaab + c2o3 * oMdrho) * (     vy2 - vvy) * c1o2;
-               m1 = -mfacb        - c2o1 * mfabb *  vvy         +  mfaab                  * (c1o1 - vy2)              - c2o3 * oMdrho * vy2;
-               m2 =  mfacb * c1o2 +      mfabb * (vvy + c1o2) + (mfaab + c2o3 * oMdrho) * (     vy2 + vvy) * c1o2;
-               mfaab = m0;
-               mfabb = m1;
-               mfacb = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 =  mfacc * c1o2 +      mfabc * (vvy - c1o2) + (mfaac + c1o6 * oMdrho) * (     vy2 - vvy) * c1o2;
-               m1 = -mfacc        - c2o1 * mfabc *  vvy         +  mfaac                  * (c1o1 - vy2)              - c1o6 * oMdrho * vy2;
-               m2 =  mfacc * c1o2 +      mfabc * (vvy + c1o2) + (mfaac + c1o6 * oMdrho) * (     vy2 + vvy) * c1o2;
-               mfaac = m0;
-               mfabc = m1;
-               mfacc = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 =  mfbca * c1o2 +      mfbba * (vvy - c1o2) + mfbaa * (     vy2 - vvy) * c1o2;
-               m1 = -mfbca        - c2o1 * mfbba *  vvy         + mfbaa * (c1o1 - vy2);
-               m2 =  mfbca * c1o2 +      mfbba * (vvy + c1o2) + mfbaa * (     vy2 + vvy) * c1o2;
-               mfbaa = m0;
-               mfbba = m1;
-               mfbca = m2;
-               /////////b//////////////////////////////////////////////////////////////////////////
-               m0 =  mfbcb * c1o2 +      mfbbb * (vvy - c1o2) + mfbab * (     vy2 - vvy) * c1o2;
-               m1 = -mfbcb        - c2o1 * mfbbb *  vvy         + mfbab * (c1o1 - vy2);
-               m2 =  mfbcb * c1o2 +      mfbbb * (vvy + c1o2) + mfbab * (     vy2 + vvy) * c1o2;
-               mfbab = m0;
-               mfbbb = m1;
-               mfbcb = m2;
-               /////////b//////////////////////////////////////////////////////////////////////////
-               m0 =  mfbcc * c1o2 +      mfbbc * (vvy - c1o2) + mfbac * (     vy2 - vvy) * c1o2;
-               m1 = -mfbcc        - c2o1 * mfbbc *  vvy         + mfbac * (c1o1 - vy2);
-               m2 =  mfbcc * c1o2 +      mfbbc * (vvy + c1o2) + mfbac * (     vy2 + vvy) * c1o2;
-               mfbac = m0;
-               mfbbc = m1;
-               mfbcc = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 =  mfcca * c1o2 +      mfcba * (vvy - c1o2) + (mfcaa + c1o18 * oMdrho) * (     vy2 - vvy) * c1o2;
-               m1 = -mfcca        - c2o1 * mfcba *  vvy         +  mfcaa                   * (c1o1 - vy2)              - c1o18 * oMdrho * vy2;
-               m2 =  mfcca * c1o2 +      mfcba * (vvy + c1o2) + (mfcaa + c1o18 * oMdrho) * (     vy2 + vvy) * c1o2;
-               mfcaa = m0;
-               mfcba = m1;
-               mfcca = m2;
-               /////////c//////////////////////////////////////////////////////////////////////////
-               m0 =  mfccb * c1o2 +      mfcbb * (vvy - c1o2) + (mfcab + c2o9 * oMdrho) * (     vy2 - vvy) * c1o2;
-               m1 = -mfccb        - c2o1 * mfcbb *  vvy         +  mfcab                  * (c1o1 - vy2)              - c2o9 * oMdrho * vy2;
-               m2 =  mfccb * c1o2 +      mfcbb * (vvy + c1o2) + (mfcab + c2o9 * oMdrho) * (     vy2 + vvy) * c1o2;
-               mfcab = m0;
-               mfcbb = m1;
-               mfccb = m2;
-               /////////c//////////////////////////////////////////////////////////////////////////
-               m0 =  mfccc * c1o2 +      mfcbc * (vvy - c1o2) + (mfcac + c1o18 * oMdrho) * (     vy2 - vvy) * c1o2;
-               m1 = -mfccc        - c2o1 * mfcbc *  vvy         +  mfcac                   * (c1o1 - vy2)              - c1o18 * oMdrho * vy2;
-               m2 =  mfccc * c1o2 +      mfcbc * (vvy + c1o2) + (mfcac + c1o18 * oMdrho) * (     vy2 + vvy) * 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 * (vvx - c1o2) + (mfaaa + c1o36 * oMdrho) * (     vx2 - vvx) * c1o2;
-               m1 = -mfcaa        - c2o1 * mfbaa *  vvx         +  mfaaa                   * (c1o1 - vx2)              - c1o36 * oMdrho * vx2;
-               m2 =  mfcaa * c1o2 +      mfbaa * (vvx + c1o2) + (mfaaa + c1o36 * oMdrho) * (     vx2 + vvx) * c1o2;
-               mfaaa = m0;
-               mfbaa = m1;
-               mfcaa = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 =  mfcba * c1o2 +      mfbba * (vvx - c1o2) + (mfaba + c1o9 * oMdrho) * (     vx2 - vvx) * c1o2;
-               m1 = -mfcba        - c2o1 * mfbba *  vvx         +  mfaba                  * (c1o1 - vx2)              - c1o9 * oMdrho * vx2;
-               m2 =  mfcba * c1o2 +      mfbba * (vvx + c1o2) + (mfaba + c1o9 * oMdrho) * (     vx2 + vvx) * c1o2;
-               mfaba = m0;
-               mfbba = m1;
-               mfcba = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 =  mfcca * c1o2 +      mfbca * (vvx - c1o2) + (mfaca + c1o36 * oMdrho) * (     vx2 - vvx) * c1o2;
-               m1 = -mfcca        - c2o1 * mfbca *  vvx         +  mfaca                   * (c1o1 - vx2)              - c1o36 * oMdrho * vx2;
-               m2 =  mfcca * c1o2 +      mfbca * (vvx + c1o2) + (mfaca + c1o36 * oMdrho) * (     vx2 + vvx) * c1o2;
-               mfaca = m0;
-               mfbca = m1;
-               mfcca = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 =  mfcab * c1o2 +      mfbab * (vvx - c1o2) + (mfaab + c1o9 * oMdrho) * (     vx2 - vvx) * c1o2;
-               m1 = -mfcab        - c2o1 * mfbab *  vvx         +  mfaab                  * (c1o1 - vx2)              - c1o9 * oMdrho * vx2;
-               m2 =  mfcab * c1o2 +      mfbab * (vvx + c1o2) + (mfaab + c1o9 * oMdrho) * (     vx2 + vvx) * c1o2;
-               mfaab = m0;
-               mfbab = m1;
-               mfcab = m2;
-               ///////////b////////////////////////////////////////////////////////////////////////
-               m0 =  mfcbb * c1o2 +      mfbbb * (vvx - c1o2) + (mfabb + c4o9 * oMdrho) * (     vx2 - vvx) * c1o2;
-               m1 = -mfcbb        - c2o1 * mfbbb *  vvx         +  mfabb                  * (c1o1 - vx2)              - c4o9 * oMdrho * vx2;
-               m2 =  mfcbb * c1o2 +      mfbbb * (vvx + c1o2) + (mfabb + c4o9 * oMdrho) * (     vx2 + vvx) * c1o2;
-               mfabb = m0;
-               mfbbb = m1;
-               mfcbb = m2;
-               ///////////b////////////////////////////////////////////////////////////////////////
-               m0 =  mfccb * c1o2 +      mfbcb * (vvx - c1o2) + (mfacb + c1o9 * oMdrho) * (     vx2 - vvx) * c1o2;
-               m1 = -mfccb        - c2o1 * mfbcb *  vvx         +  mfacb                  * (c1o1 - vx2)              - c1o9 * oMdrho * vx2;
-               m2 =  mfccb * c1o2 +      mfbcb * (vvx + c1o2) + (mfacb + c1o9 * oMdrho) * (     vx2 + vvx) * c1o2;
-               mfacb = m0;
-               mfbcb = m1;
-               mfccb = m2;
-               ////////////////////////////////////////////////////////////////////////////////////
-               ////////////////////////////////////////////////////////////////////////////////////
-               m0 =  mfcac * c1o2 +      mfbac * (vvx - c1o2) + (mfaac + c1o36 * oMdrho) * (     vx2 - vvx) * c1o2;
-               m1 = -mfcac        - c2o1 * mfbac *  vvx         +  mfaac                   * (c1o1 - vx2)              - c1o36 * oMdrho * vx2;
-               m2 =  mfcac * c1o2 +      mfbac * (vvx + c1o2) + (mfaac + c1o36 * oMdrho) * (     vx2 + vvx) * c1o2;
-               mfaac = m0;
-               mfbac = m1;
-               mfcac = m2;
-               ///////////c////////////////////////////////////////////////////////////////////////
-               m0 =  mfcbc * c1o2 +      mfbbc * (vvx - c1o2) + (mfabc + c1o9 * oMdrho) * (     vx2 - vvx) * c1o2;
-               m1 = -mfcbc        - c2o1 * mfbbc *  vvx         +  mfabc                  * (c1o1 - vx2)              - c1o9 * oMdrho * vx2;
-               m2 =  mfcbc * c1o2 +      mfbbc * (vvx + c1o2) + (mfabc + c1o9 * oMdrho) * (     vx2 + vvx) * c1o2;
-               mfabc = m0;
-               mfbbc = m1;
-               mfcbc = m2;
-               ///////////c////////////////////////////////////////////////////////////////////////
-               m0 =  mfccc * c1o2 +      mfbcc * (vvx - c1o2) + (mfacc + c1o36 * oMdrho) * (     vx2 - vvx) * c1o2;
-               m1 = -mfccc        - c2o1 * mfbcc *  vvx         +  mfacc                   * (c1o1 - vx2)              - c1o36 * oMdrho * vx2;
-               m2 =  mfccc * c1o2 +      mfbcc * (vvx + c1o2) + (mfacc + c1o36 * oMdrho) * (     vx2 + vvx) * c1o2;
-               mfacc = m0;
-               mfbcc = m1;
-               mfccc = m2;
-
-               //////////////////////////////////////////////////////////////////////////
-               //proof correctness
-               //////////////////////////////////////////////////////////////////////////
-#ifdef  PROOF_CORRECTNESS
-               real 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 dif = fabs(rho - rho_post);
-               real 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)
-                     +" in " + block.lock()->toString()+" step = "+UbSystem::toString(step)));
-               }
-#endif
-               //////////////////////////////////////////////////////////////////////////
-               //write distribution
-               //////////////////////////////////////////////////////////////////////////
-               (*this->localDistributions)(D3Q27System::ET_E,x1,  x2,  x3)    = mfabb;
-               (*this->localDistributions)(D3Q27System::ET_N,x1,  x2,  x3)    = mfbab;
-               (*this->localDistributions)(D3Q27System::ET_T,x1,  x2,  x3)    = mfbba;
-               (*this->localDistributions)(D3Q27System::ET_NE,x1,  x2,  x3)   = mfaab;
-               (*this->localDistributions)(D3Q27System::ET_NW,x1p,x2,  x3)   = mfcab;
-               (*this->localDistributions)(D3Q27System::ET_TE,x1,  x2,  x3)   = mfaba;
-               (*this->localDistributions)(D3Q27System::ET_TW,x1p,x2,  x3)   = mfcba;
-               (*this->localDistributions)(D3Q27System::ET_TN,x1,  x2,  x3)   = mfbaa;
-               (*this->localDistributions)(D3Q27System::ET_TS,x1,  x2p,x3)   = mfbca;
-               (*this->localDistributions)(D3Q27System::ET_TNE,x1,  x2,  x3)  = mfaaa;
-               (*this->localDistributions)(D3Q27System::ET_TNW,x1p,x2,  x3)  = mfcaa;
-               (*this->localDistributions)(D3Q27System::ET_TSE,x1,  x2p,x3)  = mfaca;
-               (*this->localDistributions)(D3Q27System::ET_TSW,x1p,x2p,x3)  = mfcca;
-
-               (*this->nonLocalDistributions)(D3Q27System::ET_W,x1p,x2,  x3    ) = mfcbb;
-               (*this->nonLocalDistributions)(D3Q27System::ET_S,x1,  x2p,x3    ) = mfbcb;
-               (*this->nonLocalDistributions)(D3Q27System::ET_B,x1,  x2,  x3p  ) = mfbbc;
-               (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1p,x2p,x3   ) = mfccb;
-               (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1,  x2p,x3   ) = mfacb;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1p,x2,  x3p ) = mfcbc;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1,  x2,  x3p ) = mfabc;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1,  x2p,x3p ) = mfbcc;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1,  x2,  x3p ) = mfbac;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1p,x2p,x3p) = mfccc;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1,  x2p,x3p) = mfacc;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1p,x2,  x3p) = mfcac;
-               (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1,  x2,  x3p) = mfaac;
-
-               (*this->zeroDistributions)(x1,x2,x3) = mfbbb;
-               //////////////////////////////////////////////////////////////////////////
-
-               collFactor = collFactor0;
-
-            }
-         }
-      }
-   }
-}
-
diff --git a/src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h b/src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h
deleted file mode 100644
index 760ad30fb..000000000
--- a/src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h
+++ /dev/null
@@ -1,42 +0,0 @@
-#ifndef IncompressibleCumulantWithSpongeLayerLBMKernel_H
-#define IncompressibleCumulantWithSpongeLayerLBMKernel_H
-
-#include "IncompressibleCumulantLBMKernel.h"
-
-//! \brief   Cascaded Cumulant LBM kernel. 
-//! \details CFD solver with sponge layer that use Cascaded Cumulant Lattice Boltzmann method for D3Q27 model <br>
-//! variable spongeFactor is depending on funktion in muSpongeLayer and varies between 1 (do nothing) und 0.5 (collFactor about 1);
-//! Initialization in test case (example): <br>
-//! \code{.cpp}
-//! int sizeSP=8; //width of sponge layer in blocks 
-//! mu::Parser spongeLayer;
-//! spongeLayer.SetExpr("x1>=(sizeX-sizeSP)/dt ? (sizeX-(x1+1))/sizeSP/2.0 + 0.5 : 1.0");
-//! spongeLayer.DefineConst("sizeX", nx[0]*blocknx[0]); // width of grid for X in coarse nodes
-//! spongeLayer.DefineConst("sizeSP", sizeSP*blocknx[0]); // width of sponge layer in coarse nodes
-//! kernel->setWithSpongeLayer(true);
-//! kernel->setSpongeLayer(spongeLayer);
-//! \endcode
-//! \author  K. Kucher, M. Geier, A. Karanchuk
-class IncompressibleCumulantWithSpongeLayerLBMKernel :  public IncompressibleCumulantLBMKernel
-{
-public:
-   IncompressibleCumulantWithSpongeLayerLBMKernel();
-   ~IncompressibleCumulantWithSpongeLayerLBMKernel() override;
-   SPtr<LBMKernel> clone() override;
-   void calculate(int step) override;
-   void initRelaxFactor(int vdir, real vL1, real vdx, real vSP);
-   //! \param vdir where the sponge layer is placed
-   //! \param vL1 length of simulation domain
-   //! \param vdx subgrid space 
-   //! \param vSP length of sponge layer
-   void setRelaxFactorParam(int vdir, real vL1, real vdx, real vSP);
-protected:
-  void initDataSet() override;
-  real OxyyMxzz;
-  int direction;
-  real L1;
-  real dx;
-  real SP;
-};
-
-#endif
diff --git a/src/cpu/core/LBM/InitDensityLBMKernel.cpp b/src/cpu/core/LBM/InitDensityLBMKernel.cpp
deleted file mode 100644
index 734e2e33f..000000000
--- a/src/cpu/core/LBM/InitDensityLBMKernel.cpp
+++ /dev/null
@@ -1,1075 +0,0 @@
-#include "InitDensityLBMKernel.h"
-#include "D3Q27EsoTwist3DSplittedVector.h"
-#include "BCSet.h"
-#include "DataSet3D.h"
-#include "BCArray3D.h"
-#include "basics/constants/NumericConstants.h"
-
-//using namespace UbMath;
-using namespace vf::basics::constant;
-
-InitDensityLBMKernel::InitDensityLBMKernel()
-{
-   this->compressible = false;
-}
-
-InitDensityLBMKernel::~InitDensityLBMKernel()
-= default;
-
-void InitDensityLBMKernel::initDataSet()
-{
-   SPtr<DistributionArray3D> d(new D3Q27EsoTwist3DSplittedVector(nx[0]+2, nx[1]+2, nx[2]+2, -999.9));
-   dataSet->setFdistributions(d);
-   v.resize(3, nx[0]+2, nx[1]+2, nx[2]+2);
-
-}
-
-SPtr<LBMKernel> InitDensityLBMKernel::clone()
-{
-   SPtr<LBMKernel> kernel(new InitDensityLBMKernel());
-   kernel->setNX(nx);
-   dynamicPointerCast<InitDensityLBMKernel>(kernel)->initDataSet();
-   kernel->setCollisionFactor(this->collFactor);
-   kernel->setBCSet(bcSet->clone(kernel));
-   kernel->setWithForcing(withForcing);
-   kernel->setForcingX1(muForcingX1);
-   kernel->setForcingX2(muForcingX2);
-   kernel->setForcingX3(muForcingX3);
-   kernel->setIndex(ix1, ix2, ix3);
-   kernel->setDeltaT(deltaT);
-//   dynamicPointerCast<InitDensityLBMKernel>(kernel)->OxyyMxzz = 1.0;
-   return kernel;
-}
-
-void InitDensityLBMKernel::setVelocity(int x1, int x2, int x3, real vvx, real vvy, real vvz)
-{
-   v(0, x1, x2, x3) = vvx;
-   v(1, x1, x2, x3) = vvy;
-   v(2, x1, x2, x3) = vvz;
-}
-
-real InitDensityLBMKernel::getCalculationTime()
-{
-   return 0;
-}
-
-//void InitDensityLBMKernel::collideAll()
-//{
-//   using namespace D3Q27System;
-//
-//   localDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions();
-//   nonLocalDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions();
-//   zeroDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions();
-//
-//   BCArray3D<D3Q27BoundaryCondition>& bcArray = dynamicPointerCast<D3Q27ETBCSet>(this->getBCSet())->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 = 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 distribution
-//               ////////////////////////////////////////////////////////////////////////////
-//               //////////////////////////////////////////////////////////////////////////
-//
-//               //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
-//
-//               LBMReal mfcbb = (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3);
-//               LBMReal mfbcb = (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3);
-//               LBMReal mfbbc = (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3);
-//               LBMReal mfccb = (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3);
-//               LBMReal mfacb = (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3);
-//               LBMReal mfcbc = (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3);
-//               LBMReal mfabc = (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3);
-//               LBMReal mfbcc = (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3);
-//               LBMReal mfbac = (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3);
-//               LBMReal mfccc = (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3);
-//               LBMReal mfacc = (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3);
-//               LBMReal mfcac = (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3);
-//               LBMReal mfaac = (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3);
-//
-//               LBMReal mfabb = (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3);
-//               LBMReal mfbab = (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3);
-//               LBMReal mfbba = (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p);
-//               LBMReal mfaab = (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3);
-//               LBMReal mfcab = (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3);
-//               LBMReal mfaba = (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p);
-//               LBMReal mfcba = (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p);
-//               LBMReal mfbaa = (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p);
-//               LBMReal mfbca = (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p);
-//               LBMReal mfaaa = (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p);
-//               LBMReal mfcaa = (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p);
-//               LBMReal mfaca = (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p);
-//               LBMReal mfcca = (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p);
-//
-//               LBMReal mfbbb = (*this->zeroDistributions)(x1, x2, x3);
-//
-//               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 vvx = v(0,x1,x2,x3);
-//               LBMReal vvy = v(1,x1,x2,x3);
-//               LBMReal vvz = v(2,x1,x2,x3);
-//               //LBMReal rho = v(3,x1,x2,x3);
-//          
-//               LBMReal 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;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               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 * vvz;
-//               mfaac = m2-2. *   m1 * vvz+vz2 * m0;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               m2 = mfaba+mfabc;
-//               m1 = mfabc-mfaba;
-//               m0 = m2+mfabb;
-//               mfaba = m0;
-//               m0 += 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 += 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 += 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 += 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 += 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 += 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 += 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 += 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 += 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 += 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 += 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 += 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 += 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 += 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 += 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 += 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 += 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 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);
-//
-//               //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 * collFactor *(mxxMyy+mxxMzz)+c1o2 * OxxPyyPzz*(mfaaa-mxxPyyPzz);
-//               LBMReal dyuy = dxux+collFactor * c3o2 * mxxMyy;
-//               LBMReal dzuz = dxux+collFactor * c3o2 * mxxMzz;
-//
-//               //relax
-//               mxxPyyPzz += OxxPyyPzz*(mfaaa-mxxPyyPzz)-3. * (1.-c1o2 * OxxPyyPzz) * (vx2 * dxux+vy2 * dyuy+vz2 * dzuz);
-//               mxxMyy += collFactor * (-mxxMyy)-3. * (1.-c1o2 * collFactor) * (vx2 * dxux-vy2 * dyuy);
-//               mxxMzz += collFactor * (-mxxMzz)-3. * (1.-c1o2 * collFactor) * (vx2 * dxux-vz2 * dzuz);
-//
-//               mfabb += collFactor * (-mfabb);
-//               mfbab += collFactor * (-mfbab);
-//               mfbba += collFactor * (-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;
-//
-//               //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;
-//
-//               mfaab = 0.0;
-//               mfaba = 0.0;
-//               mfbaa = 0.0;
-//
-//               //mfaab *= -0.5;
-//               //mfaba *= -0.5;
-//               //mfbaa *= -0.5;
-//
-//
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               //back
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               //mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9   Konditionieren
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               // Z - Dir
-//               m0 = mfaac * c1o2+mfaab * (vvz-c1o2)+(mfaaa+1. * oMdrho) * (vz2-vvz) * c1o2;
-//               m1 = -mfaac-2. * mfaab *  vvz+mfaaa                * (1.-vz2)-1. * oMdrho * vz2;
-//               m2 = mfaac * c1o2+mfaab * (vvz+c1o2)+(mfaaa+1. * oMdrho) * (vz2+vvz) * c1o2;
-//               mfaaa = m0;
-//               mfaab = m1;
-//               mfaac = m2;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               m0 = mfabc * c1o2+mfabb * (vvz-c1o2)+mfaba * (vz2-vvz) * c1o2;
-//               m1 = -mfabc-2. * mfabb *  vvz+mfaba * (1.-vz2);
-//               m2 = mfabc * c1o2+mfabb * (vvz+c1o2)+mfaba * (vz2+vvz) * c1o2;
-//               mfaba = m0;
-//               mfabb = m1;
-//               mfabc = m2;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               m0 = mfacc * c1o2+mfacb * (vvz-c1o2)+(mfaca+c1o3 * oMdrho) * (vz2-vvz) * c1o2;
-//               m1 = -mfacc-2. * mfacb *  vvz+mfaca                  * (1.-vz2)-c1o3 * oMdrho * vz2;
-//               m2 = mfacc * c1o2+mfacb * (vvz+c1o2)+(mfaca+c1o3 * oMdrho) * (vz2+vvz) * c1o2;
-//               mfaca = m0;
-//               mfacb = m1;
-//               mfacc = m2;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               m0 = mfbac * c1o2+mfbab * (vvz-c1o2)+mfbaa * (vz2-vvz) * c1o2;
-//               m1 = -mfbac-2. * mfbab *  vvz+mfbaa * (1.-vz2);
-//               m2 = mfbac * c1o2+mfbab * (vvz+c1o2)+mfbaa * (vz2+vvz) * c1o2;
-//               mfbaa = m0;
-//               mfbab = m1;
-//               mfbac = m2;
-//               /////////b//////////////////////////////////////////////////////////////////////////
-//               m0 = mfbbc * c1o2+mfbbb * (vvz-c1o2)+mfbba * (vz2-vvz) * c1o2;
-//               m1 = -mfbbc-2. * mfbbb *  vvz+mfbba * (1.-vz2);
-//               m2 = mfbbc * c1o2+mfbbb * (vvz+c1o2)+mfbba * (vz2+vvz) * c1o2;
-//               mfbba = m0;
-//               mfbbb = m1;
-//               mfbbc = m2;
-//               /////////b//////////////////////////////////////////////////////////////////////////
-//               m0 = mfbcc * c1o2+mfbcb * (vvz-c1o2)+mfbca * (vz2-vvz) * c1o2;
-//               m1 = -mfbcc-2. * mfbcb *  vvz+mfbca * (1.-vz2);
-//               m2 = mfbcc * c1o2+mfbcb * (vvz+c1o2)+mfbca * (vz2+vvz) * c1o2;
-//               mfbca = m0;
-//               mfbcb = m1;
-//               mfbcc = m2;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               m0 = mfcac * c1o2+mfcab * (vvz-c1o2)+(mfcaa+c1o3 * oMdrho) * (vz2-vvz) * c1o2;
-//               m1 = -mfcac-2. * mfcab *  vvz+mfcaa                  * (1.-vz2)-c1o3 * oMdrho * vz2;
-//               m2 = mfcac * c1o2+mfcab * (vvz+c1o2)+(mfcaa+c1o3 * oMdrho) * (vz2+vvz) * c1o2;
-//               mfcaa = m0;
-//               mfcab = m1;
-//               mfcac = m2;
-//               /////////c//////////////////////////////////////////////////////////////////////////
-//               m0 = mfcbc * c1o2+mfcbb * (vvz-c1o2)+mfcba * (vz2-vvz) * c1o2;
-//               m1 = -mfcbc-2. * mfcbb *  vvz+mfcba * (1.-vz2);
-//               m2 = mfcbc * c1o2+mfcbb * (vvz+c1o2)+mfcba * (vz2+vvz) * c1o2;
-//               mfcba = m0;
-//               mfcbb = m1;
-//               mfcbc = m2;
-//               /////////c//////////////////////////////////////////////////////////////////////////
-//               m0 = mfccc * c1o2+mfccb * (vvz-c1o2)+(mfcca+c1o9 * oMdrho) * (vz2-vvz) * c1o2;
-//               m1 = -mfccc-2. * mfccb *  vvz+mfcca                  * (1.-vz2)-c1o9 * oMdrho * vz2;
-//               m2 = mfccc * c1o2+mfccb * (vvz+c1o2)+(mfcca+c1o9 * oMdrho) * (vz2+vvz) * 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 * (vvy-c1o2)+(mfaaa+c1o6 * oMdrho) * (vy2-vvy) * c1o2;
-//               m1 = -mfaca-2. * mfaba *  vvy+mfaaa                  * (1.-vy2)-c1o6 * oMdrho * vy2;
-//               m2 = mfaca * c1o2+mfaba * (vvy+c1o2)+(mfaaa+c1o6 * oMdrho) * (vy2+vvy) * c1o2;
-//               mfaaa = m0;
-//               mfaba = m1;
-//               mfaca = m2;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               m0 = mfacb * c1o2+mfabb * (vvy-c1o2)+(mfaab+c2o3 * oMdrho) * (vy2-vvy) * c1o2;
-//               m1 = -mfacb-2. * mfabb *  vvy+mfaab                  * (1.-vy2)-c2o3 * oMdrho * vy2;
-//               m2 = mfacb * c1o2+mfabb * (vvy+c1o2)+(mfaab+c2o3 * oMdrho) * (vy2+vvy) * c1o2;
-//               mfaab = m0;
-//               mfabb = m1;
-//               mfacb = m2;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               m0 = mfacc * c1o2+mfabc * (vvy-c1o2)+(mfaac+c1o6 * oMdrho) * (vy2-vvy) * c1o2;
-//               m1 = -mfacc-2. * mfabc *  vvy+mfaac                  * (1.-vy2)-c1o6 * oMdrho * vy2;
-//               m2 = mfacc * c1o2+mfabc * (vvy+c1o2)+(mfaac+c1o6 * oMdrho) * (vy2+vvy) * c1o2;
-//               mfaac = m0;
-//               mfabc = m1;
-//               mfacc = m2;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               m0 = mfbca * c1o2+mfbba * (vvy-c1o2)+mfbaa * (vy2-vvy) * c1o2;
-//               m1 = -mfbca-2. * mfbba *  vvy+mfbaa * (1.-vy2);
-//               m2 = mfbca * c1o2+mfbba * (vvy+c1o2)+mfbaa * (vy2+vvy) * c1o2;
-//               mfbaa = m0;
-//               mfbba = m1;
-//               mfbca = m2;
-//               /////////b//////////////////////////////////////////////////////////////////////////
-//               m0 = mfbcb * c1o2+mfbbb * (vvy-c1o2)+mfbab * (vy2-vvy) * c1o2;
-//               m1 = -mfbcb-2. * mfbbb *  vvy+mfbab * (1.-vy2);
-//               m2 = mfbcb * c1o2+mfbbb * (vvy+c1o2)+mfbab * (vy2+vvy) * c1o2;
-//               mfbab = m0;
-//               mfbbb = m1;
-//               mfbcb = m2;
-//               /////////b//////////////////////////////////////////////////////////////////////////
-//               m0 = mfbcc * c1o2+mfbbc * (vvy-c1o2)+mfbac * (vy2-vvy) * c1o2;
-//               m1 = -mfbcc-2. * mfbbc *  vvy+mfbac * (1.-vy2);
-//               m2 = mfbcc * c1o2+mfbbc * (vvy+c1o2)+mfbac * (vy2+vvy) * c1o2;
-//               mfbac = m0;
-//               mfbbc = m1;
-//               mfbcc = m2;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               m0 = mfcca * c1o2+mfcba * (vvy-c1o2)+(mfcaa+c1o18 * oMdrho) * (vy2-vvy) * c1o2;
-//               m1 = -mfcca-2. * mfcba *  vvy+mfcaa                   * (1.-vy2)-c1o18 * oMdrho * vy2;
-//               m2 = mfcca * c1o2+mfcba * (vvy+c1o2)+(mfcaa+c1o18 * oMdrho) * (vy2+vvy) * c1o2;
-//               mfcaa = m0;
-//               mfcba = m1;
-//               mfcca = m2;
-//               /////////c//////////////////////////////////////////////////////////////////////////
-//               m0 = mfccb * c1o2+mfcbb * (vvy-c1o2)+(mfcab+c2o9 * oMdrho) * (vy2-vvy) * c1o2;
-//               m1 = -mfccb-2. * mfcbb *  vvy+mfcab                  * (1.-vy2)-c2o9 * oMdrho * vy2;
-//               m2 = mfccb * c1o2+mfcbb * (vvy+c1o2)+(mfcab+c2o9 * oMdrho) * (vy2+vvy) * c1o2;
-//               mfcab = m0;
-//               mfcbb = m1;
-//               mfccb = m2;
-//               /////////c//////////////////////////////////////////////////////////////////////////
-//               m0 = mfccc * c1o2+mfcbc * (vvy-c1o2)+(mfcac+c1o18 * oMdrho) * (vy2-vvy) * c1o2;
-//               m1 = -mfccc-2. * mfcbc *  vvy+mfcac                   * (1.-vy2)-c1o18 * oMdrho * vy2;
-//               m2 = mfccc * c1o2+mfcbc * (vvy+c1o2)+(mfcac+c1o18 * oMdrho) * (vy2+vvy) * 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 * (vvx-c1o2)+(mfaaa+c1o36 * oMdrho) * (vx2-vvx) * c1o2;
-//               m1 = -mfcaa-2. * mfbaa *  vvx+mfaaa                   * (1.-vx2)-c1o36 * oMdrho * vx2;
-//               m2 = mfcaa * c1o2+mfbaa * (vvx+c1o2)+(mfaaa+c1o36 * oMdrho) * (vx2+vvx) * c1o2;
-//               mfaaa = m0;
-//               mfbaa = m1;
-//               mfcaa = m2;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               m0 = mfcba * c1o2+mfbba * (vvx-c1o2)+(mfaba+c1o9 * oMdrho) * (vx2-vvx) * c1o2;
-//               m1 = -mfcba-2. * mfbba *  vvx+mfaba                  * (1.-vx2)-c1o9 * oMdrho * vx2;
-//               m2 = mfcba * c1o2+mfbba * (vvx+c1o2)+(mfaba+c1o9 * oMdrho) * (vx2+vvx) * c1o2;
-//               mfaba = m0;
-//               mfbba = m1;
-//               mfcba = m2;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               m0 = mfcca * c1o2+mfbca * (vvx-c1o2)+(mfaca+c1o36 * oMdrho) * (vx2-vvx) * c1o2;
-//               m1 = -mfcca-2. * mfbca *  vvx+mfaca                   * (1.-vx2)-c1o36 * oMdrho * vx2;
-//               m2 = mfcca * c1o2+mfbca * (vvx+c1o2)+(mfaca+c1o36 * oMdrho) * (vx2+vvx) * c1o2;
-//               mfaca = m0;
-//               mfbca = m1;
-//               mfcca = m2;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               m0 = mfcab * c1o2+mfbab * (vvx-c1o2)+(mfaab+c1o9 * oMdrho) * (vx2-vvx) * c1o2;
-//               m1 = -mfcab-2. * mfbab *  vvx+mfaab                  * (1.-vx2)-c1o9 * oMdrho * vx2;
-//               m2 = mfcab * c1o2+mfbab * (vvx+c1o2)+(mfaab+c1o9 * oMdrho) * (vx2+vvx) * c1o2;
-//               mfaab = m0;
-//               mfbab = m1;
-//               mfcab = m2;
-//               ///////////b////////////////////////////////////////////////////////////////////////
-//               m0 = mfcbb * c1o2+mfbbb * (vvx-c1o2)+(mfabb+c4o9 * oMdrho) * (vx2-vvx) * c1o2;
-//               m1 = -mfcbb-2. * mfbbb *  vvx+mfabb                  * (1.-vx2)-c4o9 * oMdrho * vx2;
-//               m2 = mfcbb * c1o2+mfbbb * (vvx+c1o2)+(mfabb+c4o9 * oMdrho) * (vx2+vvx) * c1o2;
-//               mfabb = m0;
-//               mfbbb = m1;
-//               mfcbb = m2;
-//               ///////////b////////////////////////////////////////////////////////////////////////
-//               m0 = mfccb * c1o2+mfbcb * (vvx-c1o2)+(mfacb+c1o9 * oMdrho) * (vx2-vvx) * c1o2;
-//               m1 = -mfccb-2. * mfbcb *  vvx+mfacb                  * (1.-vx2)-c1o9 * oMdrho * vx2;
-//               m2 = mfccb * c1o2+mfbcb * (vvx+c1o2)+(mfacb+c1o9 * oMdrho) * (vx2+vvx) * c1o2;
-//               mfacb = m0;
-//               mfbcb = m1;
-//               mfccb = m2;
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               ////////////////////////////////////////////////////////////////////////////////////
-//               m0 = mfcac * c1o2+mfbac * (vvx-c1o2)+(mfaac+c1o36 * oMdrho) * (vx2-vvx) * c1o2;
-//               m1 = -mfcac-2. * mfbac *  vvx+mfaac                   * (1.-vx2)-c1o36 * oMdrho * vx2;
-//               m2 = mfcac * c1o2+mfbac * (vvx+c1o2)+(mfaac+c1o36 * oMdrho) * (vx2+vvx) * c1o2;
-//               mfaac = m0;
-//               mfbac = m1;
-//               mfcac = m2;
-//               ///////////c////////////////////////////////////////////////////////////////////////
-//               m0 = mfcbc * c1o2+mfbbc * (vvx-c1o2)+(mfabc+c1o9 * oMdrho) * (vx2-vvx) * c1o2;
-//               m1 = -mfcbc-2. * mfbbc *  vvx+mfabc                  * (1.-vx2)-c1o9 * oMdrho * vx2;
-//               m2 = mfcbc * c1o2+mfbbc * (vvx+c1o2)+(mfabc+c1o9 * oMdrho) * (vx2+vvx) * c1o2;
-//               mfabc = m0;
-//               mfbbc = m1;
-//               mfcbc = m2;
-//               ///////////c////////////////////////////////////////////////////////////////////////
-//               m0 = mfccc * c1o2+mfbcc * (vvx-c1o2)+(mfacc+c1o36 * oMdrho) * (vx2-vvx) * c1o2;
-//               m1 = -mfccc-2. * mfbcc *  vvx+mfacc                   * (1.-vx2)-c1o36 * oMdrho * vx2;
-//               m2 = mfccc * c1o2+mfbcc * (vvx+c1o2)+(mfacc+c1o36 * oMdrho) * (vx2+vvx) * 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 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,"LBMKernel3DCCLB::collideAll(): rho is not correct for node "+UbSystem::toString(x1)+","+UbSystem::toString(x2)+","+UbSystem::toString(x3));
-//                  //exit(EXIT_FAILURE);
-//               }
-//#endif
-//               ////////////////////////////////////////////////////////////////////////////
-//               ////write distribution
-//               ////////////////////////////////////////////////////////////////////////////
-//               (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = mfabb;
-//               (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = mfbab;
-//               (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = mfbba;
-//               (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = mfaab;
-//               (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3) = mfcab;
-//               (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = mfaba;
-//               (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3) = mfcba;
-//               (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = mfbaa;
-//               (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3) = mfbca;
-//               (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = mfaaa;
-//               (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3) = mfcaa;
-//               (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3) = mfaca;
-//               (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3) = mfcca;
-//
-//               (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3) = mfcbb;
-//               (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3) = mfbcb;
-//               (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p) = mfbbc;
-//               (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3) = mfccb;
-//               (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3) = mfacb;
-//               (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p) = mfcbc;
-//               (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p) = mfabc;
-//               (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p) = mfbcc;
-//               (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p) = mfbac;
-//               (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p) = mfccc;
-//               (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p) = mfacc;
-//               (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p) = mfcac;
-//               (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p) = mfaac;
-//
-//               (*this->zeroDistributions)(x1, x2, x3) = mfbbb;
-//               ////////////////////////////////////////////////////////////////////////////
-//
-//            }
-//         }
-//      }
-//   }
-//
-//}
-
-
-
-
-void InitDensityLBMKernel::calculate(int  /*step*/)
-{
-   using namespace D3Q27System;
-   using namespace vf::lbm::dir;
-
-   localDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions();
-   nonLocalDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions();
-   zeroDistributions = dynamicPointerCast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions();
-
-   SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray();
-   SPtr<BoundaryConditions> bcPtr;
-   real f[D3Q27System::ENDF+1];
-   real feq[D3Q27System::ENDF+1];
-   real drho, vx1, vx2, vx3;
-   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;
-
-   //collFactor = 1.0/(1.0/2.0+1.0/sqrt(6.0));
-   collFactor = 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 distribution
-               ////////////////////////////////////////////////////////////////////////////
-               f[d000] = (*this->zeroDistributions)(x1, x2, x3);
-
-               f[dP00] = (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3);
-               f[d0P0] = (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3);
-               f[d00P] = (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3);
-               f[dPP0] = (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3);
-               f[dMP0] = (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3);
-               f[dP0P] = (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3);
-               f[dM0P] = (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3);
-               f[d0PP] = (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3);
-               f[d0MP] = (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3);
-               f[dPPP] = (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3);
-               f[dMPP] = (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3);
-               f[dPMP] = (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3);
-               f[dMMP] = (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3);
-
-               f[dM00] = (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3);
-               f[d0M0] = (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3);
-               f[d00M] = (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p);
-               f[dMM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3);
-               f[dPM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3);
-               f[dM0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p);
-               f[dP0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p);
-               f[d0MM] = (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p);
-               f[d0PM] = (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p);
-               f[dMMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p);
-               f[dPMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p);
-               f[dMPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p);
-               f[dPPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p);
-               //////////////////////////////////////////////////////////////////////////
-
-               drho = ((f[dPPP]+f[dMMM])+(f[dPMP]+f[dMPM]))+((f[dPMM]+f[dMPP])+(f[dMMP]+f[dPPM]))
-                  +(((f[dPP0]+f[dMM0])+(f[dPM0]+f[dMP0]))+((f[dP0P]+f[dM0M])+(f[dP0M]+f[dM0P]))
-                     +((f[d0PM]+f[d0MP])+(f[d0PP]+f[d0MM])))+((f[dP00]+f[dM00])+(f[d0P0]+f[d0M0])
-                        +(f[d00P]+f[d00M]))+f[d000];
-
-               //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[dP00]-f[W]));
-
-               //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]));
-
-               //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]));
-
-               vx1 = v(0,x1,x2,x3);
-               vx2 = v(1,x1,x2,x3);
-               vx3 = v(2,x1,x2,x3);
-
-               //LBMReal vvx = v(0,x1,x2,x3);
-               //LBMReal vvy = v(1,x1,x2,x3);
-               //LBMReal vvz = v(2,x1,x2,x3);
-
-               //vx1 = vx1+(vvx-vx1);
-               //vx2 = vx2+(vvy-vx2);
-               //vx3 = vx3+(vvz-vx3);
-
-               real cu_sq = c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
-
-               feq[d000] = c8o27*(drho-cu_sq);
-               feq[dP00] = c2o27*(drho+c3o1*(vx1)+c9o2*(vx1)*(vx1)-cu_sq);
-               feq[dM00] = c2o27*(drho+c3o1*(-vx1)+c9o2*(-vx1)*(-vx1)-cu_sq);
-               feq[d0P0] = c2o27*(drho+c3o1*(vx2)+c9o2*(vx2)*(vx2)-cu_sq);
-               feq[d0M0] = c2o27*(drho+c3o1*(-vx2)+c9o2*(-vx2)*(-vx2)-cu_sq);
-               feq[d00P] = c2o27*(drho+c3o1*(vx3)+c9o2*(vx3)*(vx3)-cu_sq);
-               feq[d00M] = c2o27*(drho+c3o1*(-vx3)+c9o2*(-vx3)*(-vx3)-cu_sq);
-               feq[dPP0] = c1o54*(drho+c3o1*(vx1+vx2)+c9o2*(vx1+vx2)*(vx1+vx2)-cu_sq);
-               feq[dMM0] = c1o54*(drho+c3o1*(-vx1-vx2)+c9o2*(-vx1-vx2)*(-vx1-vx2)-cu_sq);
-               feq[dPM0] = c1o54*(drho+c3o1*(vx1-vx2)+c9o2*(vx1-vx2)*(vx1-vx2)-cu_sq);
-               feq[dMP0] = c1o54*(drho+c3o1*(-vx1+vx2)+c9o2*(-vx1+vx2)*(-vx1+vx2)-cu_sq);
-               feq[dP0P] = c1o54*(drho+c3o1*(vx1+vx3)+c9o2*(vx1+vx3)*(vx1+vx3)-cu_sq);
-               feq[dM0M] = c1o54*(drho+c3o1*(-vx1-vx3)+c9o2*(-vx1-vx3)*(-vx1-vx3)-cu_sq);
-               feq[dP0M] = c1o54*(drho+c3o1*(vx1-vx3)+c9o2*(vx1-vx3)*(vx1-vx3)-cu_sq);
-               feq[dM0P] = c1o54*(drho+c3o1*(-vx1+vx3)+c9o2*(-vx1+vx3)*(-vx1+vx3)-cu_sq);
-               feq[d0PP] = c1o54*(drho+c3o1*(vx2+vx3)+c9o2*(vx2+vx3)*(vx2+vx3)-cu_sq);
-               feq[d0MM] = c1o54*(drho+c3o1*(-vx2-vx3)+c9o2*(-vx2-vx3)*(-vx2-vx3)-cu_sq);
-               feq[d0PM] = c1o54*(drho+c3o1*(vx2-vx3)+c9o2*(vx2-vx3)*(vx2-vx3)-cu_sq);
-               feq[d0MP] = c1o54*(drho+c3o1*(-vx2+vx3)+c9o2*(-vx2+vx3)*(-vx2+vx3)-cu_sq);
-               feq[dPPP] = c1o216*(drho+c3o1*(vx1+vx2+vx3)+c9o2*(vx1+vx2+vx3)*(vx1+vx2+vx3)-cu_sq);
-               feq[dMMM] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-               feq[dPPM] = c1o216*(drho+c3o1*(vx1+vx2-vx3)+c9o2*(vx1+vx2-vx3)*(vx1+vx2-vx3)-cu_sq);
-               feq[dMMP] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-               feq[dPMP] = c1o216*(drho+c3o1*(vx1-vx2+vx3)+c9o2*(vx1-vx2+vx3)*(vx1-vx2+vx3)-cu_sq);
-               feq[dMPM] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-               feq[dPMM] = c1o216*(drho+c3o1*(vx1-vx2-vx3)+c9o2*(vx1-vx2-vx3)*(vx1-vx2-vx3)-cu_sq);
-               feq[dMPP] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
-
-               //Relaxation
-               f[d000] += (feq[d000]-f[d000])*collFactor;
-               f[dP00] += (feq[dP00]-f[dP00])*collFactor;
-               f[dM00] += (feq[dM00]-f[dM00])*collFactor;
-               f[d0P0] += (feq[d0P0]-f[d0P0])*collFactor;
-               f[d0M0] += (feq[d0M0]-f[d0M0])*collFactor;
-               f[d00P] += (feq[d00P]-f[d00P])*collFactor;
-               f[d00M] += (feq[d00M]-f[d00M])*collFactor;
-               f[dPP0] += (feq[dPP0]-f[dPP0])*collFactor;
-               f[dMM0] += (feq[dMM0]-f[dMM0])*collFactor;
-               f[dPM0] += (feq[dPM0]-f[dPM0])*collFactor;
-               f[dMP0] += (feq[dMP0]-f[dMP0])*collFactor;
-               f[dP0P] += (feq[dP0P]-f[dP0P])*collFactor;
-               f[dM0M] += (feq[dM0M]-f[dM0M])*collFactor;
-               f[dP0M] += (feq[dP0M]-f[dP0M])*collFactor;
-               f[dM0P] += (feq[dM0P]-f[dM0P])*collFactor;
-               f[d0PP] += (feq[d0PP]-f[d0PP])*collFactor;
-               f[d0MM] += (feq[d0MM]-f[d0MM])*collFactor;
-               f[d0PM] += (feq[d0PM]-f[d0PM])*collFactor;
-               f[d0MP] += (feq[d0MP]-f[d0MP])*collFactor;
-
-               f[dPPP] += (feq[dPPP]-f[dPPP])*collFactor;
-               f[dMMM] += (feq[dMMM]-f[dMMM])*collFactor;
-               f[dPPM] += (feq[dPPM]-f[dPPM])*collFactor;
-               f[dMMP] += (feq[dMMP]-f[dMMP])*collFactor;
-               f[dPMP] += (feq[dPMP]-f[dPMP])*collFactor;
-               f[dMPM] += (feq[dMPM]-f[dMPM])*collFactor;
-               f[dPMM] += (feq[dPMM]-f[dPMM])*collFactor;
-               f[dMPP] += (feq[dMPP]-f[dMPP])*collFactor;
-
-               //////////////////////////////////////////////////////////////////////////
-#ifdef  PROOF_CORRECTNESS
-               real rho_post = f[REST]+f[dP00]+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];
-               real dif = drho-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 is not correct"));
-               }
-#endif
-               //////////////////////////////////////////////////////////////////////////
-               //write distribution
-               //////////////////////////////////////////////////////////////////////////
-               (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = f[iP00];
-               (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = f[i0P0];
-               (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = f[i00P];
-               (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = f[iPP0];
-               (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3) = f[iMP0];
-               (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = f[iP0P];
-               (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3) = f[iM0P];
-               (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = f[i0PP];
-               (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3) = f[i0MP];
-               (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = f[iPPP];
-               (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3) = f[iMPP];
-               (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3) = f[iPMP];
-               (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3) = f[iMMP];
-
-               (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3) = f[iM00];
-               (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3) = f[i0M0];
-               (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p) = f[i00M];
-               (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3) = f[iMM0];
-               (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3) = f[iPM0];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p) = f[iM0M];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p) = f[iP0M];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p) = f[i0MM];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p) = f[i0PM];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p) = f[iMMM];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p) = f[iPMM];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p) = f[iMPM];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p) = f[iPPM];
-
-               (*this->zeroDistributions)(x1, x2, x3) = f[d000];
-               //////////////////////////////////////////////////////////////////////////
-
-
-            }
-         }
-      }
-   }
-}
\ No newline at end of file
diff --git a/src/cpu/core/LBM/InitDensityLBMKernel.h b/src/cpu/core/LBM/InitDensityLBMKernel.h
deleted file mode 100644
index 33255f8f5..000000000
--- a/src/cpu/core/LBM/InitDensityLBMKernel.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef InitDensityLBMKernel_h__
-#define InitDensityLBMKernel_h__
-
-#include "LBMKernel.h"
-#include "basics/utilities/UbTiming.h"
-#include "CbArray4D.h"
-#include "D3Q27System.h"
-#include "CbArray3D.h"
-
-class InitDensityLBMKernel :  public LBMKernel
-{
-public:
-   InitDensityLBMKernel();
-   ~InitDensityLBMKernel() override;
-   void calculate(int step) override;
-   SPtr<LBMKernel> clone() override;
-   void setVelocity(int x1, int x2, int x3, real vvx, real vvy, real vvz);
-   real getCalculationTime() override;
-protected:
-   void initDataSet();
-private:
-//   real f[D3Q27System::ENDF+1];
-   CbArray4D<real, IndexerX4X3X2X1>::CbArray4DPtr localDistributions;
-   CbArray4D<real, IndexerX4X3X2X1>::CbArray4DPtr nonLocalDistributions;
-   CbArray3D<real, IndexerX3X2X1>::CbArray3DPtr   zeroDistributions;
-//   LBMReal OxyyMxzz;
-   CbArray4D<real, IndexerX4X3X2X1> v;
-};
-
-#endif // InitDensityLBMKernel_h__
-
diff --git a/src/cpu/core/LBM/ICell.h b/src/cpu/core/LBM/Interpolation/ICell.h
similarity index 100%
rename from src/cpu/core/LBM/ICell.h
rename to src/cpu/core/LBM/Interpolation/ICell.h
diff --git a/src/cpu/core/LBM/CompressibleCumulantLBMKernel.cpp b/src/cpu/core/LBM/K15CompressibleNavierStokes.cpp
similarity index 84%
rename from src/cpu/core/LBM/CompressibleCumulantLBMKernel.cpp
rename to src/cpu/core/LBM/K15CompressibleNavierStokes.cpp
index ded8dff43..7594364ad 100644
--- a/src/cpu/core/LBM/CompressibleCumulantLBMKernel.cpp
+++ b/src/cpu/core/LBM/K15CompressibleNavierStokes.cpp
@@ -1,4 +1,4 @@
-#include "CompressibleCumulantLBMKernel.h"
+#include "K15CompressibleNavierStokes.h"
 #include "D3Q27System.h"
 #include "Interpolator.h"
 #include "D3Q27EsoTwist3DSplittedVector.h"
@@ -11,29 +11,29 @@
 using namespace vf::basics::constant;
 
 //////////////////////////////////////////////////////////////////////////
-CompressibleCumulantLBMKernel::CompressibleCumulantLBMKernel()
+K15CompressibleNavierStokes::K15CompressibleNavierStokes()
 {
    this->compressible = true;
-   this->parameter = CompressibleCumulantLBMKernel::NORMAL;
+   this->parameter = K15CompressibleNavierStokes::NORMAL;
    this->OxyyMxzz = c1o1;
    this->bulkOmegaToOmega = false;
    this->OxxPyyPzz = c1o1;
 }
 //////////////////////////////////////////////////////////////////////////
-CompressibleCumulantLBMKernel::~CompressibleCumulantLBMKernel(void)
+K15CompressibleNavierStokes::~K15CompressibleNavierStokes(void)
 = default;
 //////////////////////////////////////////////////////////////////////////
-void CompressibleCumulantLBMKernel::initDataSet()
+void K15CompressibleNavierStokes::initDataSet()
 {
    SPtr<DistributionArray3D> d(new D3Q27EsoTwist3DSplittedVector(nx[0]+2, nx[1]+2, nx[2]+2, -999.9));
    dataSet->setFdistributions(d);
 }
 //////////////////////////////////////////////////////////////////////////
-SPtr<LBMKernel> CompressibleCumulantLBMKernel::clone()
+SPtr<LBMKernel> K15CompressibleNavierStokes::clone()
 {
-   SPtr<LBMKernel> kernel(new CompressibleCumulantLBMKernel());
+   SPtr<LBMKernel> kernel(new K15CompressibleNavierStokes());
    kernel->setNX(nx);
-   dynamicPointerCast<CompressibleCumulantLBMKernel>(kernel)->initDataSet();
+   dynamicPointerCast<K15CompressibleNavierStokes>(kernel)->initDataSet();
    kernel->setCollisionFactor(this->collFactor);
    kernel->setBCSet(bcSet->clone(kernel));
    kernel->setWithForcing(withForcing);
@@ -47,25 +47,25 @@ SPtr<LBMKernel> CompressibleCumulantLBMKernel::clone()
    switch (parameter)
    {
    case NORMAL:
-      dynamicPointerCast<CompressibleCumulantLBMKernel>(kernel)->OxyyMxzz = c1o1;
+      dynamicPointerCast<K15CompressibleNavierStokes>(kernel)->OxyyMxzz = c1o1;
       break;
    case MAGIC:
-      dynamicPointerCast<CompressibleCumulantLBMKernel>(kernel)->OxyyMxzz = c2o1 +(-collFactor);
+      dynamicPointerCast<K15CompressibleNavierStokes>(kernel)->OxyyMxzz = c2o1 +(-collFactor);
       break;
    }
 
    if (bulkOmegaToOmega)
    {
-      dynamicPointerCast<CompressibleCumulantLBMKernel>(kernel)->OxxPyyPzz = collFactor;
+      dynamicPointerCast<K15CompressibleNavierStokes>(kernel)->OxxPyyPzz = collFactor;
    }
    else
    {
-      dynamicPointerCast<CompressibleCumulantLBMKernel>(kernel)->OxxPyyPzz = c1o1;
+      dynamicPointerCast<K15CompressibleNavierStokes>(kernel)->OxxPyyPzz = c1o1;
    }
    return kernel;
 }
 //////////////////////////////////////////////////////////////////////////
-void CompressibleCumulantLBMKernel::calculate(int step)
+void K15CompressibleNavierStokes::calculate(int step)
 {
    using namespace D3Q27System;
    using namespace std;
@@ -116,13 +116,6 @@ void CompressibleCumulantLBMKernel::calculate(int step)
 
    real omega = collFactor;
 
-
-   //#pragma omp parallel num_threads(8)
-   {
-      //   int i = omp_get_thread_num();
-      //   printf_s("Hello from thread %d\n", i);
-      //}
-   //#pragma omp for 
       for (int x3 = minX3; x3 < maxX3; x3++)
       {
          for (int x2 = minX2; x2 < maxX2; x2++)
@@ -231,14 +224,6 @@ void CompressibleCumulantLBMKernel::calculate(int step)
                   vy2 = vvy*vvy;
                   vz2 = vvz*vvz;
                   ////////////////////////////////////////////////////////////////////////////////////
-                  //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
@@ -478,27 +463,7 @@ void CompressibleCumulantLBMKernel::calculate(int step)
                   ////////////////////////////////////////////////////////////
                   //3.
                   //////////////////////////////
-                  real OxyyPxzz = c1o1;//three  * (two - omega) / (three  - omega);//
-                  //LBMReal OxyyMxzz = one;//six    * (two - omega) / (six    - omega);//
-//                  LBMReal Oxyz = one;//twelve * (two - omega) / (twelve + omega);//
-                  //////////////////////////////
-                  //LBMReal OxyyPxzz  = two-omega;//
-                  //LBMReal OxyyMxzz  = two-omega;//
-                  //////////////////////////////
-                  //LBMReal OxyyPxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
-                  //LBMReal OxyyMxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
-                  //////////////////////////////
-                  //LBMReal OxyyPxzz  = omega;//BGK
-                  //LBMReal OxyyMxzz  = omega;//BGK
-                  //////////////////////////////
-                  //LBMReal OxyyPxzz  = (one + omega) / two;//1P5
-                  //LBMReal OxyyMxzz  = (one + omega) / two;//1P5
-                  //////////////////////////////
-                  //LBMReal OxyyPxzz  = (three - omega) / two;//0P5
-                  //LBMReal OxyyMxzz  = (three - omega) / two;//0P5
-                  //////////////////////////////
-                  //LBMReal OxyyPxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
-                  //LBMReal OxyyMxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
+                  real OxyyPxzz = c1o1;
                   ////////////////////////////////////////////////////////////
                   //4.
                   //////////////////////////////
@@ -556,41 +521,6 @@ void CompressibleCumulantLBMKernel::calculate(int step)
                   real mxxMyy = mfcaa-mfaca;
                   real mxxMzz = mfcaa-mfaac;
 
-                  //////////////////////////////////////////////////////////////////////////
-         // 			LBMReal magicBulk=(CUMacc+CUMcac+CUMcca)*(one/OxxPyyPzz-c1o2)*c3o2*8.;
-
-                  //////////////////////////////////////////////////////////////////////////
-                  //limiter-Scheise Teil 1
-                  //LBMReal oxxyy,oxxzz,oxy,oxz,oyz;
-                  //LBMReal smag=0.001;
-                  //oxxyy    = omega+(one-omega)*fabs(mxxMyy)/(fabs(mxxMyy)+smag);
-                  //oxxzz    = omega+(one-omega)*fabs(mxxMzz)/(fabs(mxxMzz)+smag);
-                  //oxy      = omega+(one-omega)*fabs(mfbba)/(fabs(mfbba)+smag);
-                  //oxz      = omega+(one-omega)*fabs(mfbab)/(fabs(mfbab)+smag);
-                  //oyz      = omega+(one-omega)*fabs(mfabb)/(fabs(mfabb)+smag);
-
-                  ////////////////////////////////////////////////////////////////////////////
-                  ////Teil 1b
-                  //LBMReal constante = 1000.0;
-                  //LBMReal nuEddi = constante * fabs(mxxPyyPzz);
-                  //LBMReal omegaLimit = one / (one / omega + three * nuEddi);
-
-                  //{
-                  //	LBMReal dxux = c1o2 * (-omegaLimit) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-                  //	LBMReal dyuy = dxux + omegaLimit * c3o2 * mxxMyy;
-                  //	LBMReal dzuz = dxux + omegaLimit * c3o2 * mxxMzz;
-
-                     ////relax
-                     //mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
-                     //mxxMyy    += omegaLimit * (-mxxMyy) - three * (one + c1o2 * (-omegaLimit)) * (vx2 * dxux + vy2 * dyuy);
-                     //mxxMzz    += omegaLimit * (-mxxMzz) - three * (one + c1o2 * (-omegaLimit)) * (vx2 * dxux + vz2 * dzuz);
-
-                  //}
-                  //mfabb     += omegaLimit * (-mfabb);
-                  //mfbab     += omegaLimit * (-mfbab);
-                  //mfbba     += omegaLimit * (-mfbba);
-                  ////////////////////////////////////////////////////////////////////////////
-
                   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                   //incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
                   {
@@ -603,32 +533,13 @@ void CompressibleCumulantLBMKernel::calculate(int step)
                      mxxMyy += omega * (-mxxMyy)- c3o1 * (c1o1+c1o2 * (-omega)) * (vx2 * dxux-vy2 * dyuy);
                      mxxMzz += omega * (-mxxMzz)- c3o1 * (c1o1+c1o2 * (-omega)) * (vx2 * dxux-vz2 * dzuz);
 
-                     //////////////////////////////////////////////////////////////////////////
-                     //limiter-Scheise Teil 2
-                     //mxxMyy    += oxxyy * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux + vy2 * dyuy);
-                     //mxxMzz    += oxxzz * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux + vz2 * dzuz);
-                     //////////////////////////////////////////////////////////////////////////
-
                   }
-                  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
-                  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-                  ////no correction
-                  //mxxPyyPzz += OxxPyyPzz*(mfaaa-mxxPyyPzz);//-magicBulk*OxxPyyPzz;
-                  //mxxMyy    += -(-omega) * (-mxxMyy);
-                  //mxxMzz    += -(-omega) * (-mxxMzz);
                   /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                   mfabb += omega * (-mfabb);
                   mfbab += omega * (-mfbab);
                   mfbba += omega * (-mfbba);
 
-                  //////////////////////////////////////////////////////////////////////////
-                  //limiter-Scheise Teil 3
-                  //mfabb     += oyz * (-mfabb);
-                  //mfbab     += oxz * (-mfbab);
-                  //mfbba     += oxy * (-mfbba);
-                  //////////////////////////////////////////////////////////////////////////
-
                   // linear combinations back
                   mfcaa = c1o3 * (mxxMyy+mxxMzz+mxxPyyPzz);
                   mfaca = c1o3 * (-c2o1*  mxxMyy+mxxMzz+mxxPyyPzz);
@@ -648,22 +559,6 @@ void CompressibleCumulantLBMKernel::calculate(int step)
 
                   //relax
                   //////////////////////////////////////////////////////////////////////////
-                  //das ist der limiter
-                  //wadjust = Oxyz+(one-Oxyz)*fabs(mfbbb)/(fabs(mfbbb)+qudricLimitD);
-                  //mfbbb += wadjust * (-mfbbb);
-                  //wadjust = OxyyPxzz+(one-OxyyPxzz)*fabs(mxxyPyzz)/(fabs(mxxyPyzz)+qudricLimitP);
-                  //mxxyPyzz += wadjust * (-mxxyPyzz);
-                  //wadjust = OxyyMxzz+(one-OxyyMxzz)*fabs(mxxyMyzz)/(fabs(mxxyMyzz)+qudricLimitM);
-                  //mxxyMyzz += wadjust * (-mxxyMyzz);
-                  //wadjust = OxyyPxzz+(one-OxyyPxzz)*fabs(mxxzPyyz)/(fabs(mxxzPyyz)+qudricLimitP);
-                  //mxxzPyyz += wadjust * (-mxxzPyyz);
-                  //wadjust = OxyyMxzz+(one-OxyyMxzz)*fabs(mxxzMyyz)/(fabs(mxxzMyyz)+qudricLimitM);
-                  //mxxzMyyz += wadjust * (-mxxzMyyz);
-                  //wadjust = OxyyPxzz+(one-OxyyPxzz)*fabs(mxyyPxzz)/(fabs(mxyyPxzz)+qudricLimitP);
-                  //mxyyPxzz += wadjust * (-mxyyPxzz);
-                  //wadjust = OxyyMxzz+(one-OxyyMxzz)*fabs(mxyyMxzz)/(fabs(mxyyMxzz)+qudricLimitM);
-                  //mxyyMxzz += wadjust * (-mxyyMxzz);
-                  //////////////////////////////////////////////////////////////////////////
                   //ohne limiter
                   mfbbb     += OxyyMxzz * (-mfbbb);
                   mxxyPyzz  += OxyyPxzz * (-mxxyPyzz);
@@ -684,21 +579,6 @@ void CompressibleCumulantLBMKernel::calculate(int step)
 
                   //4.
                   //////////////////////////////////////////////////////////////////////////
-                  //mit limiter
-               //	wadjust    = O4+(one-O4)*fabs(CUMacc)/(fabs(CUMacc)+qudricLimit);
-                  //CUMacc    += wadjust * (-CUMacc);
-               //	wadjust    = O4+(one-O4)*fabs(CUMcac)/(fabs(CUMcac)+qudricLimit);
-                  //CUMcac    += wadjust * (-CUMcac); 
-               //	wadjust    = O4+(one-O4)*fabs(CUMcca)/(fabs(CUMcca)+qudricLimit);
-                  //CUMcca    += wadjust * (-CUMcca); 
-
-               //	wadjust    = O4+(one-O4)*fabs(CUMbbc)/(fabs(CUMbbc)+qudricLimit);
-                  //CUMbbc    += wadjust * (-CUMbbc); 
-               //	wadjust    = O4+(one-O4)*fabs(CUMbcb)/(fabs(CUMbcb)+qudricLimit);
-                  //CUMbcb    += wadjust * (-CUMbcb); 
-               //	wadjust    = O4+(one-O4)*fabs(CUMcbb)/(fabs(CUMcbb)+qudricLimit);
-                  //CUMcbb    += wadjust * (-CUMcbb); 
-                  //////////////////////////////////////////////////////////////////////////
                   //ohne limiter
                   CUMacc += O4 * (-CUMacc);
                   CUMcac += O4 * (-CUMcac);
@@ -1026,23 +906,23 @@ void CompressibleCumulantLBMKernel::calculate(int step)
          }
       }
 
-   }
+
 
    //timer.stop();
 }
 //////////////////////////////////////////////////////////////////////////
-real CompressibleCumulantLBMKernel::getCalculationTime()
+real K15CompressibleNavierStokes::getCalculationTime()
 {
    //return timer.getDuration();
    return timer.getTotalTime();
 }
 //////////////////////////////////////////////////////////////////////////
-void CompressibleCumulantLBMKernel::setBulkOmegaToOmega(bool value)
+void K15CompressibleNavierStokes::setBulkOmegaToOmega(bool value)
 {
    bulkOmegaToOmega = value;
 }
 //////////////////////////////////////////////////////////////////////////
-void CompressibleCumulantLBMKernel::setRelaxationParameter(Parameter p)
+void K15CompressibleNavierStokes::setRelaxationParameter(Parameter p)
 {
    parameter = p;
 }
diff --git a/src/cpu/core/LBM/CompressibleCumulantLBMKernel.h b/src/cpu/core/LBM/K15CompressibleNavierStokes.h
similarity index 85%
rename from src/cpu/core/LBM/CompressibleCumulantLBMKernel.h
rename to src/cpu/core/LBM/K15CompressibleNavierStokes.h
index 84910ef26..a2e82b469 100644
--- a/src/cpu/core/LBM/CompressibleCumulantLBMKernel.h
+++ b/src/cpu/core/LBM/K15CompressibleNavierStokes.h
@@ -1,5 +1,5 @@
-#ifndef CompressibleCumulantLBMKernel_h__
-#define CompressibleCumulantLBMKernel_h__
+#ifndef K15CompressibleNavierStokes_h__
+#define K15CompressibleNavierStokes_h__
 
 #include "LBMKernel.h"
 #include "BCSet.h"
@@ -11,14 +11,14 @@
 //! \brief   compressible cumulant LBM kernel. 
 //! \details CFD solver that use Cascaded Cumulant Lattice Boltzmann method for D3Q27 model
 //! \author  K. Kutscher, M. Geier
-class CompressibleCumulantLBMKernel :  public LBMKernel
+class K15CompressibleNavierStokes :  public LBMKernel
 {
 public:
    //! This option set relaxation parameter: NORMAL  
    enum Parameter{NORMAL, MAGIC};
 public:
-   CompressibleCumulantLBMKernel();
-   ~CompressibleCumulantLBMKernel() override;
+   K15CompressibleNavierStokes();
+   ~K15CompressibleNavierStokes() override;
    void calculate(int step) override;
    SPtr<LBMKernel> clone() override;
    real getCalculationTime() override;
diff --git a/src/cpu/core/LBM/IncompressibleCumulantLBMKernel.cpp b/src/cpu/core/LBM/K16IncompressibleNavierStokes.cpp
similarity index 98%
rename from src/cpu/core/LBM/IncompressibleCumulantLBMKernel.cpp
rename to src/cpu/core/LBM/K16IncompressibleNavierStokes.cpp
index 39d6fd268..ca08ce35b 100644
--- a/src/cpu/core/LBM/IncompressibleCumulantLBMKernel.cpp
+++ b/src/cpu/core/LBM/K16IncompressibleNavierStokes.cpp
@@ -1,4 +1,4 @@
-#include "IncompressibleCumulantLBMKernel.h"
+#include "K16IncompressibleNavierStokes.h"
 #include "D3Q27System.h"
 #include "Interpolator.h"
 #include "D3Q27EsoTwist3DSplittedVector.h"
@@ -12,27 +12,27 @@
 using namespace vf::basics::constant;
 
 //////////////////////////////////////////////////////////////////////////
-IncompressibleCumulantLBMKernel::IncompressibleCumulantLBMKernel()
+K16IncompressibleNavierStokes::K16IncompressibleNavierStokes()
 {
    this->parameter = NORMAL;
    this->OxyyMxzz = c1o1;
    this->compressible = false;
 }
 //////////////////////////////////////////////////////////////////////////
-IncompressibleCumulantLBMKernel::~IncompressibleCumulantLBMKernel(void)
+K16IncompressibleNavierStokes::~K16IncompressibleNavierStokes(void)
 = default;
 //////////////////////////////////////////////////////////////////////////
-void IncompressibleCumulantLBMKernel::initDataSet()
+void K16IncompressibleNavierStokes::initDataSet()
 {
    SPtr<DistributionArray3D> d(new D3Q27EsoTwist3DSplittedVector(nx[0]+2, nx[1]+2, nx[2]+2, -999.9));
    dataSet->setFdistributions(d);
 }
 //////////////////////////////////////////////////////////////////////////
-SPtr<LBMKernel> IncompressibleCumulantLBMKernel::clone()
+SPtr<LBMKernel> K16IncompressibleNavierStokes::clone()
 {
-   SPtr<LBMKernel> kernel(new IncompressibleCumulantLBMKernel());
+   SPtr<LBMKernel> kernel(new K16IncompressibleNavierStokes());
    kernel->setNX(nx);
-   dynamicPointerCast<IncompressibleCumulantLBMKernel>(kernel)->initDataSet();
+   dynamicPointerCast<K16IncompressibleNavierStokes>(kernel)->initDataSet();
    kernel->setCollisionFactor(this->collFactor);
    kernel->setBCSet(bcSet->clone(kernel));
    kernel->setWithForcing(withForcing);
@@ -46,16 +46,16 @@ SPtr<LBMKernel> IncompressibleCumulantLBMKernel::clone()
    switch (parameter)
    {
    case NORMAL:
-      dynamicPointerCast<IncompressibleCumulantLBMKernel>(kernel)->OxyyMxzz = c1o1;
+      dynamicPointerCast<K16IncompressibleNavierStokes>(kernel)->OxyyMxzz = c1o1;
       break;
    case MAGIC:
-      dynamicPointerCast<IncompressibleCumulantLBMKernel>(kernel)->OxyyMxzz = c2o1 +(-collFactor);
+      dynamicPointerCast<K16IncompressibleNavierStokes>(kernel)->OxyyMxzz = c2o1 +(-collFactor);
       break;
    }
    return kernel;
 }
 //////////////////////////////////////////////////////////////////////////
-void IncompressibleCumulantLBMKernel::calculate(int step)
+void K16IncompressibleNavierStokes::calculate(int step)
 {
    using namespace D3Q27System;
    using namespace std;
@@ -890,13 +890,13 @@ void IncompressibleCumulantLBMKernel::calculate(int step)
    //timer.stop();
 }
 //////////////////////////////////////////////////////////////////////////
-real IncompressibleCumulantLBMKernel::getCalculationTime()
+real K16IncompressibleNavierStokes::getCalculationTime()
 {
    //return timer.getDuration();
    return timer.getTotalTime();
 }
 //////////////////////////////////////////////////////////////////////////
-void IncompressibleCumulantLBMKernel::setRelaxationParameter(Parameter p)
+void K16IncompressibleNavierStokes::setRelaxationParameter(Parameter p)
 {
    parameter = p;
 }
diff --git a/src/cpu/core/LBM/IncompressibleCumulantLBMKernel.h b/src/cpu/core/LBM/K16IncompressibleNavierStokes.h
similarity index 83%
rename from src/cpu/core/LBM/IncompressibleCumulantLBMKernel.h
rename to src/cpu/core/LBM/K16IncompressibleNavierStokes.h
index 99e64ce0c..a67b06178 100644
--- a/src/cpu/core/LBM/IncompressibleCumulantLBMKernel.h
+++ b/src/cpu/core/LBM/K16IncompressibleNavierStokes.h
@@ -1,7 +1,7 @@
 //Cascaded Cumulant LBM
 
-#ifndef IncompressibleCumulantLBMKernel_H
-#define IncompressibleCumulantLBMKernel_H
+#ifndef K16IncompressibleNavierStokes_H
+#define K16IncompressibleNavierStokes_H
 
 #include "LBMKernel.h"
 #include "BCSet.h"
@@ -13,14 +13,14 @@
 //! \brief   Cascaded Cumulant LBM kernel. 
 //! \details CFD solver that use Cascaded Cumulant Lattice Boltzmann method for D3Q27 model
 //! \author  K. Kutscher, M. Geier
-class IncompressibleCumulantLBMKernel :  public LBMKernel
+class K16IncompressibleNavierStokes :  public LBMKernel
 {
 public:
    //! This option set relaxation parameter: NORMAL  
    enum Parameter{NORMAL, MAGIC};
 public:
-   IncompressibleCumulantLBMKernel();
-   ~IncompressibleCumulantLBMKernel() override;
+   K16IncompressibleNavierStokes();
+   ~K16IncompressibleNavierStokes() override;
    void calculate(int step) override;
    SPtr<LBMKernel> clone() override;
    real getCalculationTime() override;
diff --git a/src/cpu/core/LBM/LBMKernelETD3Q27BGK.cpp b/src/cpu/core/LBM/LBMKernelETD3Q27BGK.cpp
deleted file mode 100644
index a154ee477..000000000
--- a/src/cpu/core/LBM/LBMKernelETD3Q27BGK.cpp
+++ /dev/null
@@ -1,303 +0,0 @@
-#include "LBMKernelETD3Q27BGK.h"
-#include "D3Q27System.h"
-#include "D3Q27EsoTwist3DSplittedVector.h"
-#include "D3Q27EsoTwist3DSoA.h"
-#include "DataSet3D.h"
-#include "BCSet.h"
-#include "BCArray3D.h"
-#include "basics/constants/NumericConstants.h"
-
-using namespace vf::basics::constant;
-//using namespace UbMath;
-
-//#define PROOF_CORRECTNESS
-
-
-//////////////////////////////////////////////////////////////////////////
-LBMKernelETD3Q27BGK::LBMKernelETD3Q27BGK() 
-{
-   this->compressible = false;
-}
-//////////////////////////////////////////////////////////////////////////
-LBMKernelETD3Q27BGK::~LBMKernelETD3Q27BGK(void)
-= default;
-//////////////////////////////////////////////////////////////////////////
-void LBMKernelETD3Q27BGK::initDataSet()
-{
-   SPtr<DistributionArray3D> d(new D3Q27EsoTwist3DSplittedVector(nx[0]+2, nx[1]+2, nx[2]+2, -999.9));
-   dataSet->setFdistributions(d);
-}
-//////////////////////////////////////////////////////////////////////////
-SPtr<LBMKernel> LBMKernelETD3Q27BGK::clone()
-{
-   SPtr<LBMKernel> kernel(new LBMKernelETD3Q27BGK());
-   std::dynamic_pointer_cast<LBMKernelETD3Q27BGK>(kernel)->initDataSet();
-   kernel->setCollisionFactor(this->collFactor);
-   kernel->setBCSet(bcSet->clone(kernel));
-   kernel->setWithForcing(withForcing);
-   kernel->setForcingX1(muForcingX1);
-   kernel->setForcingX2(muForcingX2);
-   kernel->setForcingX3(muForcingX3);
-   kernel->setIndex(ix1, ix2, ix3);
-   return kernel;
-}
-//////////////////////////////////////////////////////////////////////////
-void LBMKernelETD3Q27BGK::calculate(int  /*step*/)
-{
-   using namespace D3Q27System;
-   using namespace vf::lbm::dir;
-
-   //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);
-      forcingX1 = c0o1;
-      forcingX2 = c0o1;
-      forcingX3 = c0o1;
-   }
-   /////////////////////////////////////
-
-   localDistributions = std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions();
-   nonLocalDistributions = std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions();
-   zeroDistributions = std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions();
-
-   SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray();
-   real f[D3Q27System::ENDF+1];
-   real feq[D3Q27System::ENDF+1];
-   real drho,vx1,vx2,vx3;
-   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 = 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 distribution
-               ////////////////////////////////////////////////////////////////////////////
-               f[d000] = (*this->zeroDistributions)(x1,x2,x3);
-
-               f[dP00] = (*this->localDistributions)(D3Q27System::ET_E, x1,x2,x3);
-               f[d0P0] = (*this->localDistributions)(D3Q27System::ET_N,x1,x2,x3);
-               f[d00P] = (*this->localDistributions)(D3Q27System::ET_T,x1,x2,x3);
-               f[dPP0] = (*this->localDistributions)(D3Q27System::ET_NE,x1,x2,x3);
-               f[dMP0] = (*this->localDistributions)(D3Q27System::ET_NW,x1p,x2,x3);
-               f[dP0P] = (*this->localDistributions)(D3Q27System::ET_TE,x1,x2,x3);
-               f[dM0P] = (*this->localDistributions)(D3Q27System::ET_TW, x1p,x2,x3);
-               f[d0PP] = (*this->localDistributions)(D3Q27System::ET_TN,x1,x2,x3);
-               f[d0MP] = (*this->localDistributions)(D3Q27System::ET_TS,x1,x2p,x3);
-               f[dPPP] = (*this->localDistributions)(D3Q27System::ET_TNE,x1,x2,x3);
-               f[dMPP] = (*this->localDistributions)(D3Q27System::ET_TNW,x1p,x2,x3);
-               f[dPMP] = (*this->localDistributions)(D3Q27System::ET_TSE,x1,x2p,x3);
-               f[dMMP] = (*this->localDistributions)(D3Q27System::ET_TSW,x1p,x2p,x3);
-
-               f[dM00] = (*this->nonLocalDistributions)(D3Q27System::ET_W,x1p,x2,x3  );
-               f[d0M0] = (*this->nonLocalDistributions)(D3Q27System::ET_S,x1,x2p,x3  );
-               f[d00M] = (*this->nonLocalDistributions)(D3Q27System::ET_B,x1,x2,x3p  );
-               f[dMM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1p,x2p,x3 );
-               f[dPM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1,x2p,x3 );
-               f[dM0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1p,x2,x3p );
-               f[dP0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1,x2,x3p );
-               f[d0MM] = (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1,x2p,x3p );
-               f[d0PM] = (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1,x2,x3p );
-               f[dMMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1p,x2p,x3p);
-               f[dPMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1,x2p,x3p);
-               f[dMPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1p,x2,x3p);
-               f[dPPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1,x2,x3p);
-               //////////////////////////////////////////////////////////////////////////
-
-               drho = f[d000] + f[dP00] + f[dM00] + f[d0P0] + f[d0M0] + f[d00P] + f[d00M]
-               + f[dPP0] + f[dMM0] + f[dPM0] + f[dMP0] + f[dP0P] + f[dM0M] + f[dP0M]
-               + f[dM0P] + f[d0PP] + f[d0MM] + f[d0PM] + f[d0MP] + f[dPPP] + f[dMMP]
-               + f[dPMP] + f[dMPP] + f[dPPM] + f[dMMM] + f[dPMM] + f[dMPM];
-
-               vx1 = f[dP00] - f[dM00] + f[dPP0] - f[dMM0] + f[dPM0] - f[dMP0] + f[dP0P] - f[dM0M]
-               + f[dP0M] - f[dM0P] + f[dPPP] - f[dMMP] + f[dPMP] - f[dMPP] + f[dPPM] - f[dMMM]
-               + f[dPMM] - f[dMPM]; 
-
-               vx2 = f[d0P0] - f[d0M0] + f[dPP0] - f[dMM0] - f[dPM0] + f[dMP0] + f[d0PP] - f[d0MM] + f[d0PM]
-               - f[d0MP] + f[dPPP] - f[dMMP] - f[dPMP] + f[dMPP] + f[dPPM] - f[dMMM] - f[dPMM] 
-               + f[dMPM]; 
-
-               vx3 = f[d00P] - f[d00M] + f[dP0P] - f[dM0M] - f[dP0M] + f[dM0P] + f[d0PP] - f[d0MM] - f[d0PM]
-               + f[d0MP] + f[dPPP] + f[dMMP] + f[dPMP] + f[dMPP] - f[dPPM] - f[dMMM] - f[dPMM] 
-               - f[dMPM];
-
-               real cu_sq= c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
-
-               feq[d000] =  c8o27*(drho-cu_sq);
-               feq[dP00] =  c2o27*(drho+c3o1*( vx1   )+c9o2*( vx1   )*( vx1   )-cu_sq);
-               feq[dM00] =  c2o27*(drho+c3o1*(-vx1   )+c9o2*(-vx1   )*(-vx1   )-cu_sq);
-               feq[d0P0] =  c2o27*(drho+c3o1*(    vx2)+c9o2*(    vx2)*(    vx2)-cu_sq);
-               feq[d0M0] =  c2o27*(drho+c3o1*(   -vx2)+c9o2*(   -vx2)*(   -vx2)-cu_sq);
-               feq[d00P] =  c2o27*(drho+c3o1*( vx3   )+c9o2*(    vx3)*(    vx3)-cu_sq);
-               feq[d00M] =  c2o27*(drho+c3o1*(   -vx3)+c9o2*(   -vx3)*(   -vx3)-cu_sq);
-               feq[dPP0] = c1o54*(drho+c3o1*( vx1+vx2)+c9o2*( vx1+vx2)*( vx1+vx2)-cu_sq);
-               feq[dMM0] = c1o54*(drho+c3o1*(-vx1-vx2)+c9o2*(-vx1-vx2)*(-vx1-vx2)-cu_sq);
-               feq[dPM0] = c1o54*(drho+c3o1*( vx1-vx2)+c9o2*( vx1-vx2)*( vx1-vx2)-cu_sq);
-               feq[dMP0] = c1o54*(drho+c3o1*(-vx1+vx2)+c9o2*(-vx1+vx2)*(-vx1+vx2)-cu_sq);
-               feq[dP0P] = c1o54*(drho+c3o1*( vx1+vx3)+c9o2*( vx1+vx3)*( vx1+vx3)-cu_sq);
-               feq[dM0M] = c1o54*(drho+c3o1*(-vx1-vx3)+c9o2*(-vx1-vx3)*(-vx1-vx3)-cu_sq);
-               feq[dP0M] = c1o54*(drho+c3o1*( vx1-vx3)+c9o2*( vx1-vx3)*( vx1-vx3)-cu_sq);
-               feq[dM0P] = c1o54*(drho+c3o1*(-vx1+vx3)+c9o2*(-vx1+vx3)*(-vx1+vx3)-cu_sq);
-               feq[d0PP] = c1o54*(drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq);
-               feq[d0MM] = c1o54*(drho+c3o1*(-vx2-vx3)+c9o2*(-vx2-vx3)*(-vx2-vx3)-cu_sq);
-               feq[d0PM] = c1o54*(drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq);
-               feq[d0MP] = c1o54*(drho+c3o1*(-vx2+vx3)+c9o2*(-vx2+vx3)*(-vx2+vx3)-cu_sq);
-               feq[dPPP]= c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-               feq[dMMM]= c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-               feq[dPPM]= c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-               feq[dMMP]= c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-               feq[dPMP]= c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-               feq[dMPM]= c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-               feq[dPMM]= c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-               feq[dMPP]= c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
-
-               //Relaxation
-               f[d000] += (feq[d000]-f[d000])*collFactor;
-               f[dP00] += (feq[dP00]-f[dP00])*collFactor;
-               f[dM00] += (feq[dM00]-f[dM00])*collFactor;
-               f[d0P0] += (feq[d0P0]-f[d0P0])*collFactor;
-               f[d0M0] += (feq[d0M0]-f[d0M0])*collFactor;
-               f[d00P] += (feq[d00P]-f[d00P])*collFactor;
-               f[d00M] += (feq[d00M]-f[d00M])*collFactor;
-               f[dPP0] += (feq[dPP0]-f[dPP0])*collFactor;
-               f[dMM0] += (feq[dMM0]-f[dMM0])*collFactor;
-               f[dPM0] += (feq[dPM0]-f[dPM0])*collFactor;
-               f[dMP0] += (feq[dMP0]-f[dMP0])*collFactor;
-               f[dP0P] += (feq[dP0P]-f[dP0P])*collFactor;
-               f[dM0M] += (feq[dM0M]-f[dM0M])*collFactor;
-               f[dP0M] += (feq[dP0M]-f[dP0M])*collFactor;
-               f[dM0P] += (feq[dM0P]-f[dM0P])*collFactor;
-               f[d0PP] += (feq[d0PP]-f[d0PP])*collFactor;
-               f[d0MM] += (feq[d0MM]-f[d0MM])*collFactor;
-               f[d0PM] += (feq[d0PM]-f[d0PM])*collFactor;
-               f[d0MP] += (feq[d0MP]-f[d0MP])*collFactor;
-
-               f[dPPP] += (feq[dPPP]-f[dPPP])*collFactor;
-               f[dMMM] += (feq[dMMM]-f[dMMM])*collFactor;
-               f[dPPM] += (feq[dPPM]-f[dPPM])*collFactor;
-               f[dMMP] += (feq[dMMP]-f[dMMP])*collFactor;
-               f[dPMP] += (feq[dPMP]-f[dPMP])*collFactor;
-               f[dMPM] += (feq[dMPM]-f[dMPM])*collFactor;
-               f[dPMM] += (feq[dPMM]-f[dPMM])*collFactor;
-               f[dMPP] += (feq[dMPP]-f[dMPP])*collFactor;
-
-               //////////////////////////////////////////////////////////////////////////
-               //forcing
-               if (withForcing)
-               {
-                  muX1 = x1+ix1*bcArrayMaxX1;
-                  muX2 = x2+ix2*bcArrayMaxX2;
-                  muX3 = x3+ix3*bcArrayMaxX3;
-
-                  forcingX1 = muForcingX1.Eval();
-                  forcingX2 = muForcingX2.Eval();
-                  forcingX3 = muForcingX3.Eval();
-
-                  f[d000] += c0o1;
-                  f[dP00] +=  c3o1*c2o27  *  (forcingX1)                    ;
-                  f[dM00] +=  c3o1*c2o27  *  (-forcingX1)                   ;
-                  f[d0P0] +=  c3o1*c2o27  *             (forcingX2)         ;
-                  f[d0M0] +=  c3o1*c2o27  *             (-forcingX2)        ;
-                  f[d00P] +=  c3o1*c2o27  *                     (forcingX3) ;
-                  f[d00M] +=  c3o1*c2o27  *                     (-forcingX3);
-                  f[dPP0] +=  c3o1*c1o54 * ( forcingX1+forcingX2          ) ;
-                  f[dMM0 ] +=  c3o1*c1o54 * (-forcingX1-forcingX2          ) ;
-                  f[dPM0 ] +=  c3o1*c1o54 * ( forcingX1-forcingX2          ) ;
-                  f[dMP0 ] +=  c3o1*c1o54 * (-forcingX1+forcingX2          ) ;
-                  f[dP0P ] +=  c3o1*c1o54 * ( forcingX1          +forcingX3) ;
-                  f[dM0M ] +=  c3o1*c1o54 * (-forcingX1          -forcingX3) ;
-                  f[dP0M ] +=  c3o1*c1o54 * ( forcingX1          -forcingX3) ;
-                  f[dM0P ] +=  c3o1*c1o54 * (-forcingX1          +forcingX3) ;
-                  f[d0PP ] +=  c3o1*c1o54 * (           forcingX2+forcingX3) ;
-                  f[d0MM ] +=  c3o1*c1o54 * (          -forcingX2-forcingX3) ;
-                  f[d0PM ] +=  c3o1*c1o54 * (           forcingX2-forcingX3) ;
-                  f[d0MP ] +=  c3o1*c1o54 * (          -forcingX2+forcingX3) ;
-                  f[dPPP] +=  c3o1*c1o216* ( forcingX1+forcingX2+forcingX3) ;
-                  f[dMMM] +=  c3o1*c1o216* (-forcingX1-forcingX2-forcingX3) ;
-                  f[dPPM] +=  c3o1*c1o216* ( forcingX1+forcingX2-forcingX3) ;
-                  f[dMMP] +=  c3o1*c1o216* (-forcingX1-forcingX2+forcingX3) ;
-                  f[dPMP] +=  c3o1*c1o216* ( forcingX1-forcingX2+forcingX3) ;
-                  f[dMPM] +=  c3o1*c1o216* (-forcingX1+forcingX2-forcingX3) ;
-                  f[dPMM] +=  c3o1*c1o216* ( forcingX1-forcingX2-forcingX3) ;
-                  f[dMPP] +=  c3o1*c1o216* (-forcingX1+forcingX2+forcingX3) ;
-               }
-               //////////////////////////////////////////////////////////////////////////
-#ifdef  PROOF_CORRECTNESS
-               real rho_post = f[REST] + f[dP00] + 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];
-               real dif = drho - 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 is not correct"));
-               }
-#endif
-               //////////////////////////////////////////////////////////////////////////
-               //write distribution
-               //////////////////////////////////////////////////////////////////////////
-               (*this->localDistributions)(D3Q27System::ET_E,x1,  x2,  x3) = f[iP00];
-               (*this->localDistributions)(D3Q27System::ET_N,x1,  x2,  x3) = f[i0P0];
-               (*this->localDistributions)(D3Q27System::ET_T,x1,  x2,  x3) = f[i00P];
-               (*this->localDistributions)(D3Q27System::ET_NE,x1,  x2,  x3) = f[iPP0];
-               (*this->localDistributions)(D3Q27System::ET_NW,x1p,x2,  x3) = f[iMP0];
-               (*this->localDistributions)(D3Q27System::ET_TE,x1,  x2,  x3) = f[iP0P];
-               (*this->localDistributions)(D3Q27System::ET_TW,x1p,x2,  x3) = f[iM0P];
-               (*this->localDistributions)(D3Q27System::ET_TN,x1,  x2,  x3) = f[i0PP];
-               (*this->localDistributions)(D3Q27System::ET_TS,x1,  x2p,x3) = f[i0MP];
-               (*this->localDistributions)(D3Q27System::ET_TNE,x1,  x2,  x3) = f[iPPP];
-               (*this->localDistributions)(D3Q27System::ET_TNW,x1p,x2,  x3) = f[iMPP];
-               (*this->localDistributions)(D3Q27System::ET_TSE,x1,  x2p,x3) = f[iPMP];
-               (*this->localDistributions)(D3Q27System::ET_TSW,x1p,x2p,x3) = f[iMMP];
-
-               (*this->nonLocalDistributions)(D3Q27System::ET_W,x1p,x2,  x3    ) = f[iM00 ];
-               (*this->nonLocalDistributions)(D3Q27System::ET_S,x1,  x2p,x3    ) = f[i0M0 ];
-               (*this->nonLocalDistributions)(D3Q27System::ET_B,x1,  x2,  x3p  ) = f[i00M ];
-               (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1p,x2p,x3   ) = f[iMM0];
-               (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1,  x2p,x3   ) = f[iPM0];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1p,x2,  x3p ) = f[iM0M];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1,  x2,  x3p ) = f[iP0M];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1,  x2p,x3p ) = f[i0MM];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1,  x2,  x3p ) = f[i0PM];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1p,x2p,x3p) = f[iMMM];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1,  x2p,x3p) = f[iPMM];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1p,x2,  x3p) = f[iMPM];
-               (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1,  x2,  x3p) = f[iPPM];
-
-               (*this->zeroDistributions)(x1,x2,x3) = f[d000];
-               //////////////////////////////////////////////////////////////////////////
-
-
-            }
-         }
-      }
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-real LBMKernelETD3Q27BGK::getCalculationTime()
-{
-   return c0o1;
-}
diff --git a/src/cpu/core/LBM/LBMKernelETD3Q27BGK.h b/src/cpu/core/LBM/LBMKernelETD3Q27BGK.h
deleted file mode 100644
index c02725698..000000000
--- a/src/cpu/core/LBM/LBMKernelETD3Q27BGK.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef LBMKERNELETD3Q27BGK_H
-#define LBMKERNELETD3Q27BGK_H
-
-#include "LBMKernel.h"
-#include "basics/container/CbArray4D.h"
-#include "basics/container/CbArray3D.h"
-
-
-
-class LBMKernelETD3Q27BGK :  public LBMKernel
-{
-public:
-   LBMKernelETD3Q27BGK();
-   ~LBMKernelETD3Q27BGK() override;
-   void calculate(int step)override;
-   SPtr<LBMKernel> clone()override;
-   real getCalculationTime() override;
-
-private:
-   void initDataSet();
-   //void collideAllCompressible();
-   //void collideAllIncompressible();
-
-   CbArray4D<real,IndexerX4X3X2X1>::CbArray4DPtr localDistributions;
-   CbArray4D<real,IndexerX4X3X2X1>::CbArray4DPtr nonLocalDistributions;
-   CbArray3D<real,IndexerX3X2X1>::CbArray3DPtr   zeroDistributions;
-
-   mu::value_type muX1,muX2,muX3;
-   real forcingX1;
-   real forcingX2;
-   real forcingX3;
-
-
-};
-
-#endif
diff --git a/src/cpu/core/Visitors/InitDistributionsFromFileBlockVisitor.cpp b/src/cpu/core/Visitors/InitDistributionsFromFileBlockVisitor.cpp
deleted file mode 100644
index e3e058b28..000000000
--- a/src/cpu/core/Visitors/InitDistributionsFromFileBlockVisitor.cpp
+++ /dev/null
@@ -1,241 +0,0 @@
-#include "InitDistributionsFromFileBlockVisitor.h"
-#include "BCArray3D.h"
-#include "BCSet.h"
-#include "Block3D.h"
-#include "DataSet3D.h"
-#include "EsoTwist3D.h"
-#include "Grid3D.h"
-#include "D3Q27System.h"
-#include "InitDensityLBMKernel.h"
-#include "LBMKernel.h"
-#include <basics/utilities/UbFileInputASCII.h>
-
-InitDistributionsFromFileBlockVisitor::InitDistributionsFromFileBlockVisitor(/*LBMReal nu, */ real rho,
-                                                                             std::string filename)
-    : Block3DVisitor(0, D3Q27System::MAXLEVEL), /*nu(nu),*/ rho(rho)
-{
-    UbFileInputASCII in(filename);
-    if (!in) {
-        throw UbException(UB_EXARGS, "could not open file " + filename);
-    }
-
-    int nodesX1 = in.readInteger();
-    int nodesX2 = in.readInteger();
-    int nodesX3 = in.readInteger();
-
-    matrix = CbArray4D<real, IndexerX4X3X2X1>(3, nodesX1, nodesX2, nodesX3, 0);
-
-    for (int x3 = 0; x3 < nodesX3; x3++)
-        for (int x2 = 0; x2 < nodesX2; x2++)
-            for (int x1 = 0; x1 < nodesX1; x1++) {
-                // for (int x1 = 0; x1<nodesX1; x1++)
-                //   for (int x2 = 0; x2<nodesX2; x2++)
-                //      for (int x3 = 0; x3<nodesX3; x3++)
-                //      {
-                matrix(Vx1, x1, x2, x3) = in.readDouble();
-                matrix(Vx2, x1, x2, x3) = in.readDouble();
-                matrix(Vx3, x1, x2, x3) = in.readDouble();
-            }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void InitDistributionsFromFileBlockVisitor::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());
-
-    // Funktionszeiger
-    typedef void (*CalcFeqsFct)(real *const & /*feq[27]*/, const real & /*(d)rho*/, const real & /*vx1*/,
-                                const real & /*vx2*/, const real & /*vx3*/);
-    CalcFeqsFct calcFeqsFct = NULL;
-
-    real vx1, vx2, vx3;
-
-    int gridRank  = grid->getRank();
-    int blockRank = block->getRank();
-
-    if (blockRank == gridRank && block->isActive()) {
-        SPtr<ILBMKernel> kernel = 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->getBCSet()->getBCArray();
-        SPtr<EsoTwist3D> distributions = dynamicPointerCast<EsoTwist3D>(kernel->getDataSet()->getFdistributions());
-
-        real f[D3Q27System::ENDF + 1];
-
-        //      size_t nx1 = distributions->getNX1();
-        //      size_t nx2 = distributions->getNX2();
-        //      size_t nx3 = distributions->getNX3();
-
-        int minX1 = 0;
-        int minX2 = 0;
-        //      int minX3 = 0;
-
-        int maxX1 = (int)bcArray->getNX1();
-        int maxX2 = (int)bcArray->getNX2();
-        int maxX3 = (int)bcArray->getNX3();
-
-        int maxMX1 = (int)matrix.getNX2();
-        int maxMX2 = (int)matrix.getNX3();
-        int maxMX3 = (int)matrix.getNX4();
-
-        int blockix1 = block->getX1();
-        int blockix2 = block->getX2();
-        int blockix3 = block->getX3();
-
-        UbTupleInt3 blockNx = grid->getBlockNX();
-
-        for (int ix3 = minX1; ix3 < maxX3; ix3++)
-            for (int ix2 = minX2; ix2 < maxX2; ix2++)
-                for (int ix1 = minX1; ix1 < maxX1; ix1++) {
-                    int x1 = blockix1 * val<1>(blockNx) + ix1 - 1;
-                    int x2 = blockix2 * val<2>(blockNx) + ix2 - 1;
-                    int x3 = blockix3 * val<3>(blockNx) + ix3 - 1;
-
-                    if (x1 == -1) {
-                        x1 = maxMX1 - 1;
-                    }
-                    if (x2 == -1) {
-                        x2 = maxMX2 - 1;
-                    }
-                    if (x3 == -1) {
-                        x3 = maxMX3 - 1;
-                    }
-
-                    if (x1 == maxMX1) {
-                        x1 = 1;
-                    }
-                    if (x2 == maxMX2) {
-                        x2 = 1;
-                    }
-                    if (x3 == maxMX3) {
-                        x3 = 1;
-                    }
-
-                    vx1 = matrix(Vx1, x1, x2, x3);
-                    vx2 = matrix(Vx2, x1, x2, x3);
-                    vx3 = matrix(Vx3, x1, x2, x3);
-
-                    // int x1p, x2p, x3p;
-
-                    ////x-derivative
-                    // if (x1+1 >= maxMX1) x1p = x1;
-                    // else  x1p = x1+1;
-                    // double vx1Plusx1 = matrix(Vx1, x1p, x2, x3);
-                    // double vx2Plusx1 = matrix(Vx2, x1p, x2, x3);
-                    // double vx3Plusx1 = matrix(Vx3, x1p, x2, x3);
-
-                    // if (x1-1 < minX1) x1p = x1;
-                    // else  x1p = x1-1;
-                    // double vx1Minusx1 = matrix(Vx1, x1p, x2, x3);
-                    // double vx2Minusx1 = matrix(Vx2, x1p, x2, x3);
-                    // double vx3Minusx1 = matrix(Vx3, x1p, x2, x3);
-
-                    ////y-derivative
-                    // if (x2+1 >= maxMX2) x2p = x2;
-                    // else  x2p = x2+1;
-                    // double vx1Plusx2 = matrix(Vx1, x1, x2p, x3);
-                    // double vx2Plusx2 = matrix(Vx2, x1, x2p, x3);
-                    // double vx3Plusx2 = matrix(Vx3, x1, x2p, x3);
-
-                    // if (x2-1 < minX2) x2p = x2;
-                    // else  x2p = x2-1;
-                    // double vx1Minusx2 = matrix(Vx1, x1, x2p, x3);
-                    // double vx2Minusx2 = matrix(Vx2, x1, x2p, x3);
-                    // double vx3Minusx2 = matrix(Vx3, x1, x2p, x3);
-
-                    ////z-derivative
-                    // if (x3+1 >= maxMX3) x3p = x3;
-                    // else  x3p = x3+1;
-                    // double vx1Plusx3 = matrix(Vx1, x1, x2, x3p);
-                    // double vx2Plusx3 = matrix(Vx2, x1, x2, x3p);
-                    // double vx3Plusx3 = matrix(Vx3, x1, x2, x3p);
-
-                    // if (x3-1 < minX3) x3p = x3;
-                    // else  x3p = x3-1;
-                    // double vx1Minusx3 = matrix(Vx1, x1, x2, x3);
-                    // double vx2Minusx3 = matrix(Vx2, x1, x2, x3);
-                    // double vx3Minusx3 = matrix(Vx3, x1, x2, x3);
-
-                    // double ax = (vx1Plusx1 - vx1Minusx1) / (2.0);
-                    // double bx = (vx2Plusx1 - vx2Minusx1) / (2.0);
-                    // double cx = (vx3Plusx1 - vx3Minusx1) / (2.0);
-
-                    // double ay = (vx1Plusx2 - vx1Minusx2) / (2.0);
-                    // double by = (vx2Plusx2 - vx2Minusx2) / (2.0);
-                    // double cy = (vx3Plusx2 - vx3Minusx2) / (2.0);
-
-                    // double az = (vx1Plusx3 - vx1Minusx3) / (2.0);
-                    // double bz = (vx2Plusx3 - vx2Minusx3) / (2.0);
-                    // double cz = (vx3Plusx3 - vx3Minusx3) / (2.0);
-                    // double eps_new = 1.0;
-                    // LBMReal op = 1.;
-
-                    // LBMReal feq[27];
-
-                    // calcFeqsFct(feq, rho, vx1, vx2, vx3);
-
-                    // 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[dP00] = f_E + feq[dP00];
-                    // 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];
-
-                    calcFeqsFct(f, rho, vx1, vx2, vx3);
-
-                    distributions->setPostCollisionDistribution(f, ix1, ix2, ix3);
-                    distributions->setPreCollisionDistribution(f, ix1, ix2, ix3);
-                    dynamicPointerCast<InitDensityLBMKernel>(kernel)->setVelocity(ix1, ix2, ix3, vx1, vx2, vx3);
-                }
-    }
-}
-//////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/core/Visitors/InitDistributionsFromFileBlockVisitor.h b/src/cpu/core/Visitors/InitDistributionsFromFileBlockVisitor.h
deleted file mode 100644
index cc7acc395..000000000
--- a/src/cpu/core/Visitors/InitDistributionsFromFileBlockVisitor.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef InitDistributionsFromFileBlockVisitor_h__
-#define InitDistributionsFromFileBlockVisitor_h__
-
-#include "Block3DVisitor.h"
-#include "LBMSystem.h"
-
-#include "CbArray4D.h"
-
-class Grid3D;
-class Block3D;
-
-class InitDistributionsFromFileBlockVisitor : public Block3DVisitor
-{
-public:
-    InitDistributionsFromFileBlockVisitor(/*real nu, */ real rho, std::string file);
-
-    void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override;
-
-private:
-    CbArray4D<real, IndexerX4X3X2X1> matrix;
-    enum Velocity { Vx1, Vx2, Vx3 };
-    //   LBMReal nu;
-    real rho;
-};
-#endif // InitDistributionsFromFileBlockVisitor_h__
-- 
GitLab