From 51e6a805e2b2c292db01bb72ac516749211eb0f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Sch=C3=B6nherr?= <schoen@irmb.tu-bs.de>
Date: Thu, 29 Nov 2018 14:30:05 +0100
Subject: [PATCH] added new kernels with chimera transformation and added new
 lbm and scaling kernels for F3

---
 .../Calculation/UpdateGrid27.cpp              |  144 +-
 .../GridReaderFiles/GridReader.cpp            |    7 +-
 .../GridReaderGenerator/GridGenerator.cpp     |    3 +-
 src/VirtualFluids_GPU/GPU/Cumulant27.cu       | 1127 +--
 src/VirtualFluids_GPU/GPU/Cumulant27chim.cu   | 2383 +++++
 src/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu   | 2112 ++++
 src/VirtualFluids_GPU/GPU/GPU_Interface.h     |  106 +
 src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh     |  107 +
 src/VirtualFluids_GPU/GPU/LBMKernel.cu        |  311 +-
 src/VirtualFluids_GPU/GPU/ScaleCF27.cu        | 4276 +-------
 src/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu    | 8624 +++++++++++++++++
 src/VirtualFluids_GPU/GPU/ScaleFC27.cu        | 1248 +--
 src/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu    | 2497 +++++
 src/VirtualFluids_GPU/Init/InitLattice.cpp    |   52 +-
 src/VirtualFluids_GPU/LBM/Simulation.cpp      |  104 +-
 targets/apps/LBM/lbmTest/main.cpp             |   54 +-
 16 files changed, 16408 insertions(+), 6747 deletions(-)
 create mode 100644 src/VirtualFluids_GPU/GPU/Cumulant27chim.cu
 create mode 100644 src/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu
 create mode 100644 src/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu
 create mode 100644 src/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu

diff --git a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp
index 94d738c66..da0c3703b 100644
--- a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp
+++ b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp
@@ -120,20 +120,34 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev
 		 //					   para->getParD(level)->evenOrOdd); 
 		 //getLastCudaError("KernelBGKPlusSP27 execution failed");
 		 //printf("Level: %d \n", level);
-		 KernelKumNewCompSP27(para->getParD(level)->numberofthreads,       
-							  para->getParD(level)->omega, 
-							  para->getParD(level)->geoSP, 
-							  para->getParD(level)->neighborX_SP, 
-							  para->getParD(level)->neighborY_SP, 
-							  para->getParD(level)->neighborZ_SP,
-							  para->getParD(level)->d0SP.f[0],    
-							  para->getParD(level)->size_Mat_SP,  
-							  para->getParD(level)->size_Array_SP,
-							  level,
-							  para->getForcesDev(),
-							  para->getParD(level)->evenOrOdd); 
-		 getLastCudaError("KernelKumNewCompSP27 execution failed");
+		 //KernelKumNewCompSP27(para->getParD(level)->numberofthreads,       
+			//				  para->getParD(level)->omega, 
+			//				  para->getParD(level)->geoSP, 
+			//				  para->getParD(level)->neighborX_SP, 
+			//				  para->getParD(level)->neighborY_SP, 
+			//				  para->getParD(level)->neighborZ_SP,
+			//				  para->getParD(level)->d0SP.f[0],    
+			//				  para->getParD(level)->size_Mat_SP,  
+			//				  para->getParD(level)->size_Array_SP,
+			//				  level,
+			//				  para->getForcesDev(),
+			//				  para->getParD(level)->evenOrOdd); 
+		 //getLastCudaError("KernelKumNewCompSP27 execution failed");
  			//F3
+			KernelCumulantD3Q27F3_2018( para->getParD(level)->numberofthreads,
+										para->getParD(level)->omega, 
+										para->getParD(level)->geoSP, 
+										para->getParD(level)->neighborX_SP, 
+										para->getParD(level)->neighborY_SP, 
+										para->getParD(level)->neighborZ_SP,
+										para->getParD(level)->d0SP.f[0],    
+										para->getParD(level)->g6.g[0],    
+										para->getParD(level)->size_Mat_SP,
+										level,
+										para->getForcesDev(),
+										para->getParD(level)->evenOrOdd);
+			getLastCudaError("KernelCumulantD3Q27F3_2018 execution failed");
+
 			//KernelCumulantD3Q27F3(para->getParD(level)->numberofthreads,
 			//					  para->getParD(level)->omega, 
 			//					  para->getParD(level)->geoSP, 
@@ -1102,19 +1116,35 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev
 			 //					   para->getParD(level)->evenOrOdd); 
 			 //getLastCudaError("KernelBGKPlusSP27 execution failed");
 			 //printf("Level: %d \n", level);
-			 KernelKumNewCompSP27(para->getParD(level)->numberofthreads,       
-								  para->getParD(level)->omega, 
-								  para->getParD(level)->geoSP, 
-								  para->getParD(level)->neighborX_SP, 
-								  para->getParD(level)->neighborY_SP, 
-								  para->getParD(level)->neighborZ_SP,
-								  para->getParD(level)->d0SP.f[0],    
-								  para->getParD(level)->size_Mat_SP,
-								  para->getParD(level)->size_Array_SP,
-								  level,
-								  para->getForcesDev(),
-								  para->getParD(level)->evenOrOdd); 
-			 getLastCudaError("KernelKumNewCompSP27 execution failed");
+			 //KernelKumNewCompSP27(para->getParD(level)->numberofthreads,       
+				//				  para->getParD(level)->omega, 
+				//				  para->getParD(level)->geoSP, 
+				//				  para->getParD(level)->neighborX_SP, 
+				//				  para->getParD(level)->neighborY_SP, 
+				//				  para->getParD(level)->neighborZ_SP,
+				//				  para->getParD(level)->d0SP.f[0],    
+				//				  para->getParD(level)->size_Mat_SP,
+				//				  para->getParD(level)->size_Array_SP,
+				//				  level,
+				//				  para->getForcesDev(),
+				//				  para->getParD(level)->evenOrOdd); 
+			 //getLastCudaError("KernelKumNewCompSP27 execution failed");
+
+			//F3
+			KernelCumulantD3Q27F3_2018( para->getParD(level)->numberofthreads,
+										para->getParD(level)->omega, 
+										para->getParD(level)->geoSP, 
+										para->getParD(level)->neighborX_SP, 
+										para->getParD(level)->neighborY_SP, 
+										para->getParD(level)->neighborZ_SP,
+										para->getParD(level)->d0SP.f[0],    
+										para->getParD(level)->g6.g[0],    
+										para->getParD(level)->size_Mat_SP,
+										level,
+										para->getForcesDev(),
+										para->getParD(level)->evenOrOdd);
+			getLastCudaError("KernelCumulantD3Q27F3_2018 execution failed");
+
 			//KernelCumulantD3Q27F3(para->getParD(level)->numberofthreads,
 			//					  para->getParD(level)->omega, 
 			//					  para->getParD(level)->geoSP, 
@@ -1705,6 +1735,17 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev
 
 		 ////////////////////////////////////////////////////////////////////////////////
 		 //fine to coarse interpolation
+			 ScaleFC_comp_D3Q27F3_2018( para->getParD(level)->d0SP.f[0],      para->getParD(level+1)->d0SP.f[0],     para->getParD(level)->g6.g[0],
+										para->getParD(level)->neighborX_SP,   para->getParD(level)->neighborY_SP,    para->getParD(level)->neighborZ_SP,
+										para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP,  para->getParD(level+1)->neighborZ_SP,
+										para->getParD(level)->size_Mat_SP,    para->getParD(level+1)->size_Mat_SP,   para->getParD(level)->evenOrOdd,
+										para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, 
+										para->getParD(level)->K_FC,           para->getParD(level)->omega,           para->getParD(level+1)->omega,
+										para->getParD(level)->vis,            para->getParD(level)->nx,              para->getParD(level)->ny,
+										para->getParD(level+1)->nx,           para->getParD(level+1)->ny,            para->getParD(level)->numberofthreads,
+										para->getParD(level)->offFC);
+            getLastCudaError("ScaleFC_comp_D3Q27F3_2018 execution failed");
+			////////////////////////////////////////////////////////////////////////////////
 			 //ScaleFC_comp_D3Q27F3(para->getParD(level)->d0SP.f[0],      para->getParD(level+1)->d0SP.f[0],     para->getParD(level)->g6.g[0],
 				//			      para->getParD(level)->neighborX_SP,   para->getParD(level)->neighborY_SP,    para->getParD(level)->neighborZ_SP,
 				//			      para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP,  para->getParD(level+1)->neighborZ_SP,
@@ -1737,16 +1778,16 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev
 									//	para->getParD(level)->offFC);
          //getLastCudaError("ScaleFC_RhoSq_3rdMom_comp_27 execution failed");
 		 ////////////////////////////////////////////////////////////////////////////////
-         ScaleFC_RhoSq_comp_27(	para->getParD(level)->d0SP.f[0],      para->getParD(level+1)->d0SP.f[0], 
-								para->getParD(level)->neighborX_SP,   para->getParD(level)->neighborY_SP,    para->getParD(level)->neighborZ_SP, 
-								para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP,  para->getParD(level+1)->neighborZ_SP, 
-								para->getParD(level)->size_Mat_SP,    para->getParD(level+1)->size_Mat_SP,   para->getParD(level)->evenOrOdd,
-								para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, 
-								para->getParD(level)->K_FC,           para->getParD(level)->omega,           para->getParD(level+1)->omega, 
-								para->getParD(level)->vis,            para->getParD(level)->nx,              para->getParD(level)->ny, 
-								para->getParD(level+1)->nx,           para->getParD(level+1)->ny,            para->getParD(level)->numberofthreads,
-								para->getParD(level)->offFC);
-         getLastCudaError("ScaleFC27_RhoSq_comp execution failed");
+        // ScaleFC_RhoSq_comp_27(	para->getParD(level)->d0SP.f[0],      para->getParD(level+1)->d0SP.f[0], 
+								//para->getParD(level)->neighborX_SP,   para->getParD(level)->neighborY_SP,    para->getParD(level)->neighborZ_SP, 
+								//para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP,  para->getParD(level+1)->neighborZ_SP, 
+								//para->getParD(level)->size_Mat_SP,    para->getParD(level+1)->size_Mat_SP,   para->getParD(level)->evenOrOdd,
+								//para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, 
+								//para->getParD(level)->K_FC,           para->getParD(level)->omega,           para->getParD(level+1)->omega, 
+								//para->getParD(level)->vis,            para->getParD(level)->nx,              para->getParD(level)->ny, 
+								//para->getParD(level+1)->nx,           para->getParD(level+1)->ny,            para->getParD(level)->numberofthreads,
+								//para->getParD(level)->offFC);
+        // getLastCudaError("ScaleFC27_RhoSq_comp execution failed");
 		 ////////////////////////////////////////////////////////////////////////////////
 		 //data exchange
 		 if (para->getNumprocs() > 1)
@@ -1774,6 +1815,17 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev
 		 }
 		 //////////////////////////////////////////////////////////////////////////////////
 		 ////coarse to fine interpolation
+			 ScaleCF_comp_D3Q27F3_2018( para->getParD(level)->d0SP.f[0],      para->getParD(level+1)->d0SP.f[0],     para->getParD(level+1)->g6.g[0],
+										para->getParD(level)->neighborX_SP,   para->getParD(level)->neighborY_SP,    para->getParD(level)->neighborZ_SP,
+										para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP,  para->getParD(level+1)->neighborZ_SP,
+										para->getParD(level)->size_Mat_SP,    para->getParD(level+1)->size_Mat_SP,   para->getParD(level)->evenOrOdd,
+										para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, 			   
+										para->getParD(level)->K_CF,           para->getParD(level)->omega,           para->getParD(level+1)->omega, 
+										para->getParD(level)->vis,            para->getParD(level)->nx,              para->getParD(level)->ny, 
+										para->getParD(level+1)->nx,           para->getParD(level+1)->ny,            para->getParD(level)->numberofthreads,
+										para->getParD(level)->offCF);
+            getLastCudaError("ScaleCF_comp_D3Q27F3_2018 execution failed");
+			////////////////////////////////////////////////////////////////////////
 			 //ScaleCF_comp_D3Q27F3(para->getParD(level)->d0SP.f[0],      para->getParD(level+1)->d0SP.f[0],     para->getParD(level+1)->g6.g[0],
 				//			      para->getParD(level)->neighborX_SP,   para->getParD(level)->neighborY_SP,    para->getParD(level)->neighborZ_SP,
 				//			      para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP,  para->getParD(level+1)->neighborZ_SP,
@@ -1796,16 +1848,16 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev
 			//				     para->getParD(level)->offCF);
    //         getLastCudaError("ScaleCF_0817_comp_27 execution failed");
 		    ////////////////////////////////////////////////////////////////////////
-         ScaleCF_RhoSq_comp_27(	para->getParD(level)->d0SP.f[0],      para->getParD(level+1)->d0SP.f[0],                
-								para->getParD(level)->neighborX_SP,   para->getParD(level)->neighborY_SP,    para->getParD(level)->neighborZ_SP,
-								para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP,  para->getParD(level+1)->neighborZ_SP,
-								para->getParD(level)->size_Mat_SP,    para->getParD(level+1)->size_Mat_SP,   para->getParD(level)->evenOrOdd,
-								para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, 
-								para->getParD(level)->K_CF,           para->getParD(level)->omega,           para->getParD(level+1)->omega, 
-								para->getParD(level)->vis,            para->getParD(level)->nx,              para->getParD(level)->ny, 
-								para->getParD(level+1)->nx,           para->getParD(level+1)->ny,            para->getParD(level)->numberofthreads,
-								para->getParD(level)->offCF);
-         getLastCudaError("ScaleCF27_RhoSq_comp execution failed");
+        // ScaleCF_RhoSq_comp_27(	para->getParD(level)->d0SP.f[0],      para->getParD(level+1)->d0SP.f[0],                
+								//para->getParD(level)->neighborX_SP,   para->getParD(level)->neighborY_SP,    para->getParD(level)->neighborZ_SP,
+								//para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP,  para->getParD(level+1)->neighborZ_SP,
+								//para->getParD(level)->size_Mat_SP,    para->getParD(level+1)->size_Mat_SP,   para->getParD(level)->evenOrOdd,
+								//para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, 
+								//para->getParD(level)->K_CF,           para->getParD(level)->omega,           para->getParD(level+1)->omega, 
+								//para->getParD(level)->vis,            para->getParD(level)->nx,              para->getParD(level)->ny, 
+								//para->getParD(level+1)->nx,           para->getParD(level+1)->ny,            para->getParD(level)->numberofthreads,
+								//para->getParD(level)->offCF);
+        // getLastCudaError("ScaleCF27_RhoSq_comp execution failed");
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          //ScaleCF_RhoSq_3rdMom_comp_27(	para->getParD(level)->d0SP.f[0],      para->getParD(level+1)->d0SP.f[0],                
 									//	para->getParD(level)->neighborX_SP,   para->getParD(level)->neighborY_SP,    para->getParD(level)->neighborZ_SP,
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp
index 46d08c639..cb3f19a23 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp
@@ -106,12 +106,9 @@ void GridReader::allocArrays_CoordNeighborGeo()
 
         cudaMemoryManager->cudaAllocCoord(level);
 		cudaMemoryManager->cudaAllocSP(level);
-        cudaMemoryManager->cudaAllocNeighborWSB(level);
+		para->cudaAllocF3SP(level);
+		cudaMemoryManager->cudaAllocNeighborWSB(level);
 
-        ///////////////////////////
-        //F3
-        para->cudaAllocF3SP(level);
-        ///////////////////////////
         if (para->getCalcMedian())
             para->cudaAllocMedianSP(level);
         if (para->getCalcParticle() || para->getUseWale())
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp
index d9ec7c2f3..b9bae16d9 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp
@@ -62,7 +62,8 @@ void GridGenerator::allocArrays_CoordNeighborGeo()
 	
 		cudaMemoryManager->cudaAllocCoord(level);
         cudaMemoryManager->cudaAllocSP(level);
-        cudaMemoryManager->cudaAllocNeighborWSB(level);
+		para->cudaAllocF3SP(level);
+		cudaMemoryManager->cudaAllocNeighborWSB(level);
 
 		builder->getNodeValues(
 			para->getParH(level)->coordX_SP,
diff --git a/src/VirtualFluids_GPU/GPU/Cumulant27.cu b/src/VirtualFluids_GPU/GPU/Cumulant27.cu
index fd9164eb7..065ca90cc 100644
--- a/src/VirtualFluids_GPU/GPU/Cumulant27.cu
+++ b/src/VirtualFluids_GPU/GPU/Cumulant27.cu
@@ -1,3 +1,10 @@
+//  _    ___      __              __________      _     __        ______________   __
+// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____   /  ___/ __  / /  / /
+// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/  / /___/ /_/ / /  / /
+// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )  / /_) / ____/ /__/ / 
+// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/   \____/_/    \_____/
+//
+//////////////////////////////////////////////////////////////////////////
 /* Device code */
 #include "LBM/D3Q27.h"
 #include "math.h"
@@ -1108,1126 +1115,6 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(real omega,
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	real omega,
-														unsigned int* bcMatD,
-														unsigned int* neighborX,
-														unsigned int* neighborY,
-														unsigned int* neighborZ,
-														real* DDStart,
-														real* G6,
-														int size_Mat,
-														int level,
-														real* forces,
-														bool EvenOrOdd)
-{
-	////////////////////////////////////////////////////////////////////////////////
-	const unsigned  x = threadIdx.x;  // Globaler x-Index 
-	const unsigned  y = blockIdx.x;   // Globaler y-Index 
-	const unsigned  z = blockIdx.y;   // Globaler z-Index 
-
-	const unsigned nx = blockDim.x;
-	const unsigned ny = gridDim.x;
-
-	const unsigned k = nx*(ny*z + y) + x;
-	//////////////////////////////////////////////////////////////////////////
-
-	if (k < size_Mat)
-	{
-		////////////////////////////////////////////////////////////////////////////////
-		unsigned int BC;
-		BC = bcMatD[k];
-
-		if ((BC != GEO_SOLID) && (BC != GEO_VOID))
-		{
-			Distributions27 D;
-			if (EvenOrOdd == true)
-			{
-				D.f[dirE] = &DDStart[dirE   *size_Mat];
-				D.f[dirW] = &DDStart[dirW   *size_Mat];
-				D.f[dirN] = &DDStart[dirN   *size_Mat];
-				D.f[dirS] = &DDStart[dirS   *size_Mat];
-				D.f[dirT] = &DDStart[dirT   *size_Mat];
-				D.f[dirB] = &DDStart[dirB   *size_Mat];
-				D.f[dirNE] = &DDStart[dirNE  *size_Mat];
-				D.f[dirSW] = &DDStart[dirSW  *size_Mat];
-				D.f[dirSE] = &DDStart[dirSE  *size_Mat];
-				D.f[dirNW] = &DDStart[dirNW  *size_Mat];
-				D.f[dirTE] = &DDStart[dirTE  *size_Mat];
-				D.f[dirBW] = &DDStart[dirBW  *size_Mat];
-				D.f[dirBE] = &DDStart[dirBE  *size_Mat];
-				D.f[dirTW] = &DDStart[dirTW  *size_Mat];
-				D.f[dirTN] = &DDStart[dirTN  *size_Mat];
-				D.f[dirBS] = &DDStart[dirBS  *size_Mat];
-				D.f[dirBN] = &DDStart[dirBN  *size_Mat];
-				D.f[dirTS] = &DDStart[dirTS  *size_Mat];
-				D.f[dirZERO] = &DDStart[dirZERO*size_Mat];
-				D.f[dirTNE] = &DDStart[dirTNE *size_Mat];
-				D.f[dirTSW] = &DDStart[dirTSW *size_Mat];
-				D.f[dirTSE] = &DDStart[dirTSE *size_Mat];
-				D.f[dirTNW] = &DDStart[dirTNW *size_Mat];
-				D.f[dirBNE] = &DDStart[dirBNE *size_Mat];
-				D.f[dirBSW] = &DDStart[dirBSW *size_Mat];
-				D.f[dirBSE] = &DDStart[dirBSE *size_Mat];
-				D.f[dirBNW] = &DDStart[dirBNW *size_Mat];
-			}
-			else
-			{
-				D.f[dirW] = &DDStart[dirE   *size_Mat];
-				D.f[dirE] = &DDStart[dirW   *size_Mat];
-				D.f[dirS] = &DDStart[dirN   *size_Mat];
-				D.f[dirN] = &DDStart[dirS   *size_Mat];
-				D.f[dirB] = &DDStart[dirT   *size_Mat];
-				D.f[dirT] = &DDStart[dirB   *size_Mat];
-				D.f[dirSW] = &DDStart[dirNE  *size_Mat];
-				D.f[dirNE] = &DDStart[dirSW  *size_Mat];
-				D.f[dirNW] = &DDStart[dirSE  *size_Mat];
-				D.f[dirSE] = &DDStart[dirNW  *size_Mat];
-				D.f[dirBW] = &DDStart[dirTE  *size_Mat];
-				D.f[dirTE] = &DDStart[dirBW  *size_Mat];
-				D.f[dirTW] = &DDStart[dirBE  *size_Mat];
-				D.f[dirBE] = &DDStart[dirTW  *size_Mat];
-				D.f[dirBS] = &DDStart[dirTN  *size_Mat];
-				D.f[dirTN] = &DDStart[dirBS  *size_Mat];
-				D.f[dirTS] = &DDStart[dirBN  *size_Mat];
-				D.f[dirBN] = &DDStart[dirTS  *size_Mat];
-				D.f[dirZERO] = &DDStart[dirZERO*size_Mat];
-				D.f[dirBSW] = &DDStart[dirTNE *size_Mat];
-				D.f[dirBNE] = &DDStart[dirTSW *size_Mat];
-				D.f[dirBNW] = &DDStart[dirTSE *size_Mat];
-				D.f[dirBSE] = &DDStart[dirTNW *size_Mat];
-				D.f[dirTSW] = &DDStart[dirBNE *size_Mat];
-				D.f[dirTNE] = &DDStart[dirBSW *size_Mat];
-				D.f[dirTNW] = &DDStart[dirBSE *size_Mat];
-				D.f[dirTSE] = &DDStart[dirBNW *size_Mat];
-			}
-
-			Distributions6 G;
-			if (EvenOrOdd == true)
-			{
-				G.g[dirE] = &G6[dirE   *size_Mat];
-				G.g[dirW] = &G6[dirW   *size_Mat];
-				G.g[dirN] = &G6[dirN   *size_Mat];
-				G.g[dirS] = &G6[dirS   *size_Mat];
-				G.g[dirT] = &G6[dirT   *size_Mat];
-				G.g[dirB] = &G6[dirB   *size_Mat];
-			}
-			else
-			{
-				G.g[dirW] = &G6[dirE   *size_Mat];
-				G.g[dirE] = &G6[dirW   *size_Mat];
-				G.g[dirS] = &G6[dirN   *size_Mat];
-				G.g[dirN] = &G6[dirS   *size_Mat];
-				G.g[dirB] = &G6[dirT   *size_Mat];
-				G.g[dirT] = &G6[dirB   *size_Mat];
-			}
-
-			////////////////////////////////////////////////////////////////////////////////
-			//index
-			//unsigned int kzero= k;
-			//unsigned int ke   = k;
-			unsigned int kw = neighborX[k];
-			//unsigned int kn   = k;
-			unsigned int ks = neighborY[k];
-			//unsigned int kt   = k;
-			unsigned int kb = neighborZ[k];
-			unsigned int ksw = neighborY[kw];
-			//unsigned int kne  = k;
-			//unsigned int kse  = ks;
-			//unsigned int knw  = kw;
-			unsigned int kbw = neighborZ[kw];
-			//unsigned int kte  = k;
-			//unsigned int kbe  = kb;
-			//unsigned int ktw  = kw;
-			unsigned int kbs = neighborZ[ks];
-			//unsigned int ktn  = k;
-			//unsigned int kbn  = kb;
-			//unsigned int kts  = ks;
-			//unsigned int ktse = ks;
-			//unsigned int kbnw = kbw;
-			//unsigned int ktnw = kw;
-			//unsigned int kbse = kbs;
-			//unsigned int ktsw = ksw;
-			//unsigned int kbne = kb;
-			//unsigned int ktne = k;
-			unsigned int kbsw = neighborZ[ksw];
-
-			//unsigned int kzero= k;
-			//unsigned int ke   = k;
-			//unsigned int kw   = neighborX[k];
-			//unsigned int kn   = k;
-			//unsigned int ks   = neighborY[k];
-			//unsigned int kt   = k;
-			//unsigned int kb   = neighborZ[k];
-			//unsigned int ksw  = neighborY[kw];
-			//unsigned int kne  = k;
-			//unsigned int kse  = ks;
-			//unsigned int knw  = kw;
-			//unsigned int kbw  = neighborZ[kw];
-			//unsigned int kte  = k;
-			//unsigned int kbe  = kb;
-			//unsigned int ktw  = kw;
-			//unsigned int kbs  = neighborZ[ks];
-			//unsigned int ktn  = k;
-			//unsigned int kbn  = kb;
-			//unsigned int kts  = ks;
-			//unsigned int ktse = ks;
-			//unsigned int kbnw = kbw;
-			//unsigned int ktnw = kw;
-			//unsigned int kbse = kbs;
-			//unsigned int ktsw = ksw;
-			//unsigned int kbne = kb;
-			//unsigned int ktne = k;
-			//unsigned int kbsw = neighborZ[ksw];
-			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			real mgcbb = (G.g[dirE])[k];
-			real mgabb = (G.g[dirW])[kw];
-			real mgbcb = (G.g[dirN])[k];
-			real mgbab = (G.g[dirS])[ks];
-			real mgbbc = (G.g[dirT])[k];
-			real mgbba = (G.g[dirB])[kb];
-			real dxxux = c1o2 * (-mgcbb + mgabb);
-			real dyyuy = c1o2 * (-mgbcb + mgbab);
-			real dzzuz = c1o2 * (-mgbbc + mgbba);
-			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			real mfcbb = (D.f[dirE])[k];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			real mfabb = (D.f[dirW])[kw];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			real mfbcb = (D.f[dirN])[k];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			real mfbab = (D.f[dirS])[ks];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			real mfbbc = (D.f[dirT])[k];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			real mfbba = (D.f[dirB])[kb];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			real mfccb = (D.f[dirNE])[k];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			real mfaab = (D.f[dirSW])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			real mfcab = (D.f[dirSE])[ks];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			real mfacb = (D.f[dirNW])[kw];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			real mfcbc = (D.f[dirTE])[k];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			real mfaba = (D.f[dirBW])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			real mfcba = (D.f[dirBE])[kb];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			real mfabc = (D.f[dirTW])[kw];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			real mfbcc = (D.f[dirTN])[k];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			real mfbaa = (D.f[dirBS])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			real mfbca = (D.f[dirBN])[kb];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			real mfbac = (D.f[dirTS])[ks];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			real mfbbb = (D.f[dirZERO])[k];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			real mfccc = (D.f[dirTNE])[k];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			real mfcac = (D.f[dirTSE])[ks];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			real mfcca = (D.f[dirBNE])[kb];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
-			////////////////////////////////////////////////////////////////////////////////////
-			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 = one + drho;
-			////////////////////////////////////////////////////////////////////////////////////
-			//slow
-			//real oMdrho = one - ((((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)));//fehlt mfbbb
-			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;
-			////////////////////////////////////////////////////////////////////////////////////
-			//the force be with you
-			real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
-			real fy = forces[1] / (pow(two, level)); //zero;
-			real fz = forces[2] / (pow(two, level)); //zero;
-			vvx += fx;
-			vvy += fy;
-			vvz += fz;
-			////////////////////////////////////////////////////////////////////////////////////
-			//real omega = omega_in;
-			////////////////////////////////////////////////////////////////////////////////////
-			//fast
-			real oMdrho = one; // comp special
-								  //real oMdrho = one - (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);//fehlt mfbbb nicht mehr
-								  //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;
-								  ////////////////////////////////////////////////////////////////////////////////////
-								  // oMdrho assembler style -------> faaaaaastaaaa
-								  // or much sloooowaaaa ... it depändssssss on sadaku
-			real m0, m1, m2;
-			//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 = one - (oMdrho + m0);
-			//}
-			//real vvx;
-			real vx2;
-			//{
-			//	vvx = mfccc-mfaaa;
-			//	m0  = mfcac-mfaca;
-			//	m1  = mfcaa-mfacc;
-			//	m2  = mfcca-mfaac;
-			//	vvx+= m0;
-			//	m1 += m2;
-			//	vvx+= m1;
-			//	vx2 = mfcba-mfabc;
-			//	m0  = mfcbc-mfaba;
-			//	m1  = mfcab-mfacb;
-			//	m2  = mfccb-mfaab;
-			//	vx2+= m0;
-			//	m1 += m2;
-			//	vx2+= m1;
-			//	vvx+= vx2;
-			//	vx2 = mfcbb-mfabb;
-			//	vvx+= vx2;
-			//}
-			//real vvy;
-			real vy2;
-			//{
-			//	vvy = mfccc-mfaaa;
-			//	m0  = mfaca-mfcac;
-			//	m1  = mfacc-mfcaa;
-			//	m2  = mfcca-mfaac;
-			//	vvy+= m0;
-			//	m1 += m2;
-			//	vvy+= m1;
-			//	vy2 = mfbca-mfbac;
-			//	m0  = mfbcc-mfbaa;
-			//	m1  = mfacb-mfcab;
-			//	m2  = mfccb-mfaab;
-			//	vy2+= m0;
-			//	m1 += m2;
-			//	vy2+= m1;
-			//	vvy+= vy2;
-			//	vy2 = mfbcb-mfbab;
-			//	vvy+= vy2;
-			//}
-			//real vvz;
-			real vz2;
-			//{
-			//	vvz = mfccc-mfaaa;
-			//	m0  = mfcac-mfaca;
-			//	m1  = mfacc-mfcaa;
-			//	m2  = mfaac-mfcca;
-			//	vvz+= m0;
-			//	m1 += m2;
-			//	vvz+= m1;
-			//	vz2 = mfbac-mfbca;
-			//	m0  = mfbcc-mfbaa;
-			//	m1  = mfabc-mfcba;
-			//	m2  = mfcbc-mfaba;
-			//	vz2+= m0;
-			//	m1 += m2;
-			//	vz2+= m1;
-			//	vvz+= vz2;
-			//	vz2 = mfbbc-mfbba;
-			//	vvz+= vz2;
-			//}
-			vx2 = vvx*vvx;
-			vy2 = vvy*vvy;
-			vz2 = vvz*vvz;
-			////////////////////////////////////////////////////////////////////////////////////
-			real wadjust;
-			real qudricLimitP = 0.01f;// * 0.0001f;
-			real qudricLimitM = 0.01f;// * 0.0001f;
-			real qudricLimitD = 0.01f;// * 0.001f;
-										 ////////////////////////////////////////////////////////////////////////////////////
-										 //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
-			////////////////////////////////////////////////////////////////////////////////////
-			real OxxPyyPzz = one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
-
-			////////////////////////////////////////////////////////////
-			//3.
-			//////////////////////////////
-			real OxyyPxzz = eight*(-two + omega)*(one + two*omega) / (-eight - fourteen*omega + seven*omega*omega);//one;
-			real OxyyMxzz = eight*(-two + omega)*(-seven + four*omega) / (fiftysix - fifty*omega + nine*omega*omega);//one;
-			real Oxyz = twentyfour*(-two + omega)*(-two - seven*omega + three*omega*omega) / (fourtyeight + c152*omega - c130*omega*omega + twentynine*omega*omega*omega);//one;
-			////////////////////////////////////////////////////////////
-			//4.
-			//////////////////////////////
-			real O4 = one;
-			//////////////////////////////
-			//real O4        = omega;//TRT
-			////////////////////////////////////////////////////////////
-			//5.
-			//////////////////////////////
-			real O5 = one;
-			////////////////////////////////////////////////////////////
-			//6.
-			//////////////////////////////
-			real O6 = one;
-			////////////////////////////////////////////////////////////
-
-
-			//central moments to cumulants
-			//4.
-			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
-			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
-			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
-
-			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
-			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
-			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
-
-			//5.
-			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
-			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
-			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
-
-			//6.
-
-			real 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)));
-
-			//2.
-			// linear combinations
-			real mxxPyyPzz = mfcaa + mfaca + mfaac;
-			real mxxMyy = mfcaa - mfaca;
-			real mxxMzz = mfcaa - mfaac;
-
-			////////////////////////////////////////////////////////////////////////////
-			real Dxy = -three*omega*mfbba;
-			real Dxz = -three*omega*mfbab;
-			real Dyz = -three*omega*mfabb;
-
-			//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;
-
-			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			//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;
-
-			mgabb = dxux;
-			mgbab = dyuy;
-			mgbba = dzuz;
-			
-			mgcbb = dxux;
-			mgbcb = dyuy;
-			mgbbc = dzuz;
-
-			//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);
-			mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz) - three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz)
-					  + (six - three * (omega + OxxPyyPzz) + omega * OxxPyyPzz) / (three * omega) * ((dxux * dxux + dyuy * dyuy + dzuz * dzuz) / rho + vvx * dxxux + vvy * dyyuy + vvz * dzzuz);
-			mxxMyy += omega * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy)
-				      +  omega * (two*(one / omega - c1o2) * (one / omega - c1o2) - c1o6) * ((dxux * dxux - dyuy * dyuy) / rho + vvx * dxxux - vvy * dyyuy);
-			mxxMzz += omega * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz)
-					  + omega * (two*(one / omega - c1o2) * (one / omega - c1o2) - c1o6) * ((dxux * dxux - dzuz * dzuz) / rho + vvx * dxxux - vvz * dzzuz);
-
-			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			////no correction
-			//mxxPyyPzz += OxxPyyPzz*(mfaaa-mxxPyyPzz);//-magicBulk*OxxPyyPzz;
-			//mxxMyy    += -(-omega) * (-mxxMyy);
-			//mxxMzz    += -(-omega) * (-mxxMzz);
-			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			mfabb += omega * (-mfabb);
-			mfbab += omega * (-mfbab);
-			mfbba += omega * (-mfbba);
-			//////////////////////////////////////////////////////////////////////////
-
-			// linear combinations back
-			mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz);
-			mfaca = c1o3 * (-two*  mxxMyy + mxxMzz + mxxPyyPzz);
-			mfaac = c1o3 * (mxxMyy - two* mxxMzz + mxxPyyPzz);
-
-
-			//relax
-			//////////////////////////////////////////////////////////////////////////
-			//das ist der limiter
-			wadjust = Oxyz + (one - Oxyz)*abs(mfbbb) / (abs(mfbbb) + qudricLimitD);
-			mfbbb += wadjust * (-mfbbb);
-			wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxxyPyzz) / (abs(mxxyPyzz) + qudricLimitP);
-			mxxyPyzz += wadjust * (-mxxyPyzz);
-			wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxxyMyzz) / (abs(mxxyMyzz) + qudricLimitM);
-			mxxyMyzz += wadjust * (-mxxyMyzz);
-			wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxxzPyyz) / (abs(mxxzPyyz) + qudricLimitP);
-			mxxzPyyz += wadjust * (-mxxzPyyz);
-			wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxxzMyyz) / (abs(mxxzMyyz) + qudricLimitM);
-			mxxzMyyz += wadjust * (-mxxzMyyz);
-			wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxyyPxzz) / (abs(mxyyPxzz) + qudricLimitP);
-			mxyyPxzz += wadjust * (-mxyyPxzz);
-			wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxyyMxzz) / (abs(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)*abs(CUMacc)/(abs(CUMacc)+qudricLimit);
-			//CUMacc    += wadjust * (-CUMacc);
-			//	wadjust    = O4+(one-O4)*abs(CUMcac)/(abs(CUMcac)+qudricLimit);
-			//CUMcac    += wadjust * (-CUMcac); 
-			//	wadjust    = O4+(one-O4)*abs(CUMcca)/(abs(CUMcca)+qudricLimit);
-			//CUMcca    += wadjust * (-CUMcca); 
-
-			//	wadjust    = O4+(one-O4)*abs(CUMbbc)/(abs(CUMbbc)+qudricLimit);
-			//CUMbbc    += wadjust * (-CUMbbc); 
-			//	wadjust    = O4+(one-O4)*abs(CUMbcb)/(abs(CUMbcb)+qudricLimit);
-			//CUMbcb    += wadjust * (-CUMbcb); 
-			//	wadjust    = O4+(one-O4)*abs(CUMcbb)/(abs(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*(one / omega - c1o2)*(dyuy + dzuz)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMacc);
-			CUMcac = -O4*(one / omega - c1o2)*(dxux + dzuz)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMcac);
-			CUMcca = -O4*(one / omega - c1o2)*(dyuy + dxux)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMcca);
-			CUMbbc = -O4*(one / omega - c1o2)*Dxy*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbbc);
-			CUMbcb = -O4*(one / omega - c1o2)*Dxz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbcb);
-			CUMcbb = -O4*(one / omega - c1o2)*Dyz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - 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));
-			mfcac = CUMcac + (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
-			mfacc = CUMacc + (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
-
-			//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)));
-			////////////////////////////////////////////////////////////////////////////////////
-
-			////////////////////////////////////////////////////////////////////////////////////
-			//the force be with you
-			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;
-			////////////////////////////////////////////////////////////////////////////////////
-
-			////////////////////////////////////////////////////////////////////////////////////
-			(D.f[dirE])[k] = mfabb;//(D.f[ dirE   ])[ke   ] = mfabb;// -  c2over27 ;  (D.f[ dirE   ])[k   ]                                                                     
-			(D.f[dirW])[kw] = mfcbb;//(D.f[ dirW   ])[kw   ] = mfcbb;// -  c2over27 ;  (D.f[ dirW   ])[kw  ]                                                                   
-			(D.f[dirN])[k] = mfbab;//(D.f[ dirN   ])[kn   ] = mfbab;// -  c2over27 ;	 (D.f[ dirN   ])[k   ]
-			(D.f[dirS])[ks] = mfbcb;//(D.f[ dirS   ])[ks   ] = mfbcb;// -  c2over27 ;	 (D.f[ dirS   ])[ks  ]
-			(D.f[dirT])[k] = mfbba;//(D.f[ dirT   ])[kt   ] = mfbba;// -  c2over27 ;	 (D.f[ dirT   ])[k   ]
-			(D.f[dirB])[kb] = mfbbc;//(D.f[ dirB   ])[kb   ] = mfbbc;// -  c2over27 ;	 (D.f[ dirB   ])[kb  ]
-			(D.f[dirNE])[k] = mfaab;//(D.f[ dirNE  ])[kne  ] = mfaab;// -  c1over54 ;	 (D.f[ dirNE  ])[k   ]
-			(D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW  ])[ksw  ] = mfccb;// -  c1over54 ;	 (D.f[ dirSW  ])[ksw ]
-			(D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE  ])[kse  ] = mfacb;// -  c1over54 ;	 (D.f[ dirSE  ])[ks  ]
-			(D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW  ])[knw  ] = mfcab;// -  c1over54 ;	 (D.f[ dirNW  ])[kw  ]
-			(D.f[dirTE])[k] = mfaba;//(D.f[ dirTE  ])[kte  ] = mfaba;// -  c1over54 ;	 (D.f[ dirTE  ])[k   ]
-			(D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW  ])[kbw  ] = mfcbc;// -  c1over54 ;	 (D.f[ dirBW  ])[kbw ]
-			(D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE  ])[kbe  ] = mfabc;// -  c1over54 ;	 (D.f[ dirBE  ])[kb  ]
-			(D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW  ])[ktw  ] = mfcba;// -  c1over54 ;	 (D.f[ dirTW  ])[kw  ]
-			(D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN  ])[ktn  ] = mfbaa;// -  c1over54 ;	 (D.f[ dirTN  ])[k   ]
-			(D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS  ])[kbs  ] = mfbcc;// -  c1over54 ;	 (D.f[ dirBS  ])[kbs ]
-			(D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN  ])[kbn  ] = mfbac;// -  c1over54 ;	 (D.f[ dirBN  ])[kb  ]
-			(D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS  ])[kts  ] = mfbca;// -  c1over54 ;	 (D.f[ dirTS  ])[ks  ]
-			(D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// -  c8over27 ;	 (D.f[ dirZERO])[k   ]
-			(D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// -  c1over216;	 (D.f[ dirTNE ])[k   ]
-			(D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// -  c1over216;	 (D.f[ dirTSE ])[ks  ]
-			(D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// -  c1over216;	 (D.f[ dirBNE ])[kb  ]
-			(D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// -  c1over216;	 (D.f[ dirBSE ])[kbs ]
-			(D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// -  c1over216;	 (D.f[ dirTNW ])[kw  ]
-			(D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// -  c1over216;	 (D.f[ dirTSW ])[ksw ]
-			(D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// -  c1over216;	 (D.f[ dirBNW ])[kbw ]
-			(D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// -  c1over216;	 (D.f[ dirBSW ])[kbsw]
-			////////////////////////////////////////////////////////////////////////////////////
-
-			(G.g[dirE])[k]  = mgabb;                                                               
-			(G.g[dirW])[kw] = mgcbb;                                                              
-			(G.g[dirN])[k]  = mgbab;
-			(G.g[dirS])[ks] = mgbcb;
-			(G.g[dirT])[k]  = mgbba;
-			(G.g[dirB])[kb] = mgbbc;
-		}
-	}
-}
-////////////////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 
 
 
diff --git a/src/VirtualFluids_GPU/GPU/Cumulant27chim.cu b/src/VirtualFluids_GPU/GPU/Cumulant27chim.cu
new file mode 100644
index 000000000..8f35e1580
--- /dev/null
+++ b/src/VirtualFluids_GPU/GPU/Cumulant27chim.cu
@@ -0,0 +1,2383 @@
+//  _    ___      __              __________      _     __        ______________   __
+// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____   /  ___/ __  / /  / /
+// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/  / /___/ /_/ / /  / /
+// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )  / /_) / ____/ /__/ / 
+// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/   \____/_/    \_____/
+//
+//////////////////////////////////////////////////////////////////////////
+/* Device code */
+#include "LBM/D3Q27.h"
+#include "math.h"
+#include "GPU/constant.h"
+
+
+////////////////////////////////////////////////////////////////////////////////
+////helper
+
+inline __device__ void forwardChimeraWithK(real &mfa, real &mfb, real &mfc, real vv, real v2, real K) {
+
+	real m2 = mfa + mfc;
+	real m1 = mfc - mfa;
+	real m0 = m2 + mfb;
+	mfa = m0;
+	m0 += K;
+	mfb = m1 - m0 * vv;
+	mfc = m2 - two*	m1 * vv + v2 * m0;
+}
+
+inline __device__ void forwardChimera(real &mfa, real &mfb, real &mfc, real vv, real v2) {
+	real m1 = (mfa + mfc) + mfb;
+	real m2 = mfc - mfa;
+	mfc = (mfc + mfa) + (v2*m1 - two*vv*m2);
+	mfb = m2 - vv*m1;
+	mfa = m1;
+}
+
+
+inline __device__ void backwardChimera(real &mfa, real &mfb, real &mfc, real vv, real v2) {
+	real ma = (mfc + mfa*(v2 - vv))*c1o2 + mfb*(vv - c1o2);
+	real mb = ((mfa - mfc) - mfa*v2) - two*mfb*vv;
+	mfc = (mfc + mfa*(v2 + vv))*c1o2 + mfb*(vv + c1o2);
+	mfb = mb;
+	mfa = ma;
+}
+
+
+inline __device__ void backwardChimeraWithK(real &mfa, real &mfb, real &mfc, real vv, real v2, real K) {
+	real  m0 = (mfc - mfb)* c1o2 + mfb * (vv)+(mfa + K) * (v2 - vv) * c1o2;
+	real m1 = (mfa - mfc) - two* mfb * vv + (mfa + K) * (-v2);
+	mfc = (mfc + mfb)* c1o2 + mfb * (vv)+(mfa + K) * (v2 + vv) * c1o2;
+	mfa = m0;
+	mfb = m1;
+
+}
+
+
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+extern "C" __global__ void Cumulant_One_preconditioned_errorDiffusion_chim_Comp_SP_27(
+	real omega,
+	unsigned int* bcMatD,
+	unsigned int* neighborX,
+	unsigned int* neighborY,
+	unsigned int* neighborZ,
+	real* DDStart,
+	int size_Mat,
+	int level,
+	real* forces,
+	bool EvenOrOdd)
+{
+	////////////////////////////////////////////////////////////////////////////////
+	const unsigned  x = threadIdx.x;  // Globaler x-Index 
+	const unsigned  y = blockIdx.x;   // Globaler y-Index 
+	const unsigned  z = blockIdx.y;   // Globaler z-Index 
+
+	const unsigned nx = blockDim.x;
+	const unsigned ny = gridDim.x;
+
+	const unsigned k = nx*(ny*z + y) + x;
+	//////////////////////////////////////////////////////////////////////////
+
+	if (k<size_Mat)
+	{
+		////////////////////////////////////////////////////////////////////////////////
+		unsigned int BC;
+		BC = bcMatD[k];
+
+		if (BC >= GEO_FLUID/*(BC != GEO_SOLID) && (BC != GEO_VOID)*/)
+		{
+			Distributions27 D;
+			if (EvenOrOdd == true)
+			{
+				D.f[dirE] = &DDStart[dirE   *size_Mat];
+				D.f[dirW] = &DDStart[dirW   *size_Mat];
+				D.f[dirN] = &DDStart[dirN   *size_Mat];
+				D.f[dirS] = &DDStart[dirS   *size_Mat];
+				D.f[dirT] = &DDStart[dirT   *size_Mat];
+				D.f[dirB] = &DDStart[dirB   *size_Mat];
+				D.f[dirNE] = &DDStart[dirNE  *size_Mat];
+				D.f[dirSW] = &DDStart[dirSW  *size_Mat];
+				D.f[dirSE] = &DDStart[dirSE  *size_Mat];
+				D.f[dirNW] = &DDStart[dirNW  *size_Mat];
+				D.f[dirTE] = &DDStart[dirTE  *size_Mat];
+				D.f[dirBW] = &DDStart[dirBW  *size_Mat];
+				D.f[dirBE] = &DDStart[dirBE  *size_Mat];
+				D.f[dirTW] = &DDStart[dirTW  *size_Mat];
+				D.f[dirTN] = &DDStart[dirTN  *size_Mat];
+				D.f[dirBS] = &DDStart[dirBS  *size_Mat];
+				D.f[dirBN] = &DDStart[dirBN  *size_Mat];
+				D.f[dirTS] = &DDStart[dirTS  *size_Mat];
+				D.f[dirZERO] = &DDStart[dirZERO*size_Mat];
+				D.f[dirTNE] = &DDStart[dirTNE *size_Mat];
+				D.f[dirTSW] = &DDStart[dirTSW *size_Mat];
+				D.f[dirTSE] = &DDStart[dirTSE *size_Mat];
+				D.f[dirTNW] = &DDStart[dirTNW *size_Mat];
+				D.f[dirBNE] = &DDStart[dirBNE *size_Mat];
+				D.f[dirBSW] = &DDStart[dirBSW *size_Mat];
+				D.f[dirBSE] = &DDStart[dirBSE *size_Mat];
+				D.f[dirBNW] = &DDStart[dirBNW *size_Mat];
+			}
+			else
+			{
+				D.f[dirW] = &DDStart[dirE   *size_Mat];
+				D.f[dirE] = &DDStart[dirW   *size_Mat];
+				D.f[dirS] = &DDStart[dirN   *size_Mat];
+				D.f[dirN] = &DDStart[dirS   *size_Mat];
+				D.f[dirB] = &DDStart[dirT   *size_Mat];
+				D.f[dirT] = &DDStart[dirB   *size_Mat];
+				D.f[dirSW] = &DDStart[dirNE  *size_Mat];
+				D.f[dirNE] = &DDStart[dirSW  *size_Mat];
+				D.f[dirNW] = &DDStart[dirSE  *size_Mat];
+				D.f[dirSE] = &DDStart[dirNW  *size_Mat];
+				D.f[dirBW] = &DDStart[dirTE  *size_Mat];
+				D.f[dirTE] = &DDStart[dirBW  *size_Mat];
+				D.f[dirTW] = &DDStart[dirBE  *size_Mat];
+				D.f[dirBE] = &DDStart[dirTW  *size_Mat];
+				D.f[dirBS] = &DDStart[dirTN  *size_Mat];
+				D.f[dirTN] = &DDStart[dirBS  *size_Mat];
+				D.f[dirTS] = &DDStart[dirBN  *size_Mat];
+				D.f[dirBN] = &DDStart[dirTS  *size_Mat];
+				D.f[dirZERO] = &DDStart[dirZERO*size_Mat];
+				D.f[dirBSW] = &DDStart[dirTNE *size_Mat];
+				D.f[dirBNE] = &DDStart[dirTSW *size_Mat];
+				D.f[dirBNW] = &DDStart[dirTSE *size_Mat];
+				D.f[dirBSE] = &DDStart[dirTNW *size_Mat];
+				D.f[dirTSW] = &DDStart[dirBNE *size_Mat];
+				D.f[dirTNE] = &DDStart[dirBSW *size_Mat];
+				D.f[dirTNW] = &DDStart[dirBSE *size_Mat];
+				D.f[dirTSE] = &DDStart[dirBNW *size_Mat];
+			}
+
+			////////////////////////////////////////////////////////////////////////////////
+			//index
+			//unsigned int kzero= k;
+			//unsigned int ke   = k;
+			unsigned int kw = neighborX[k];
+			//unsigned int kn   = k;
+			unsigned int ks = neighborY[k];
+			//unsigned int kt   = k;
+			unsigned int kb = neighborZ[k];
+			unsigned int ksw = neighborY[kw];
+			//unsigned int kne  = k;
+			//unsigned int kse  = ks;
+			//unsigned int knw  = kw;
+			unsigned int kbw = neighborZ[kw];
+			//unsigned int kte  = k;
+			//unsigned int kbe  = kb;
+			//unsigned int ktw  = kw;
+			unsigned int kbs = neighborZ[ks];
+			//unsigned int ktn  = k;
+			//unsigned int kbn  = kb;
+			//unsigned int kts  = ks;
+			//unsigned int ktse = ks;
+			//unsigned int kbnw = kbw;
+			//unsigned int ktnw = kw;
+			//unsigned int kbse = kbs;
+			//unsigned int ktsw = ksw;
+			//unsigned int kbne = kb;
+			//unsigned int ktne = k;
+			unsigned int kbsw = neighborZ[ksw];
+
+
+
+			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			real mfcbb = (D.f[dirE])[k];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW])[kw];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN])[k];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS])[ks];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT])[k];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB])[kb];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE])[k];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE])[ks];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW])[kw];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE])[k];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE])[kb];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW])[kw];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN])[k];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN])[kb];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS])[ks];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE])[k];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE])[ks];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE])[kb];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+											   ////////////////////////////////////////////////////////////////////////////////////
+			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 = one + 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;
+			////////////////////////////////////////////////////////////////////////////////////
+			//the force be with you
+			real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+			real fy = forces[1] / (pow(two, level)); //zero;
+			real fz = forces[2] / (pow(two, level)); //zero;
+			vvx += fx*c1o2;
+			vvy += fy*c1o2;
+			vvz += fz*c1o2;
+			////////////////////////////////////////////////////////////////////////////////////
+			//real omega = omega_in;
+			////////////////////////////////////////////////////////////////////////////////////
+			//fast
+			real oMdrho = one; // 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;
+			//real s9 = minusomega;
+			//test
+			//s9 = 0.;
+
+
+			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			real EQcbb = zero;
+			real EQabb = zero;
+			real EQbcb = zero;
+			real EQbab = zero;
+			real EQbbc = zero;
+			real EQbba = zero;
+			real EQccb = zero;
+			real EQaab = zero;
+			real EQcab = zero;
+			real EQacb = zero;
+			real EQcbc = zero;
+			real EQaba = zero;
+			real EQcba = zero;
+			real EQabc = zero;
+			real EQbcc = zero;
+			real EQbaa = zero;
+			real EQbca = zero;
+			real EQbac = zero;
+			real EQbbb = zero;
+			real EQccc = drho * c1o27;
+			real EQaac = drho * c1o3;
+			real EQcac = drho * c1o9;
+			real EQacc = drho * c1o9;
+			real EQcca = drho * c1o9;
+			real EQaaa = drho;
+			real EQcaa = drho * c1o3;
+			real EQaca = drho * c1o3;
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(EQaaa, EQaab, EQaac, vvz, vz2, one);
+			backwardChimeraWithK(EQaca, EQacb, EQacc, vvz, vz2, c1o3);
+			///////////////////////////////////////////////////////////
+			EQcaa = EQaca; EQcab = EQacb; EQcac = EQacc;
+			///////////////////////////////////////////////////////////
+			backwardChimeraWithK(EQcca, EQccb, EQccc, vvz, vz2, c1o9);
+
+			backwardChimeraWithK(EQaaa, EQaba, EQaca, vvy, vy2, c1o6);
+			backwardChimeraWithK(EQaab, EQabb, EQacb, vvy, vy2, c2o3);
+			backwardChimeraWithK(EQaac, EQabc, EQacc, vvy, vy2, c1o6);
+			backwardChimeraWithK(EQcaa, EQcba, EQcca, vvy, vy2, c1o18);
+			backwardChimeraWithK(EQcab, EQcbb, EQccb, vvy, vy2, c2o9);
+			backwardChimeraWithK(EQcac, EQcbc, EQccc, vvy, vy2, c1o18);
+
+			backwardChimeraWithK(EQaaa, EQbaa, EQcaa, vvx, vx2, c1o36);
+			backwardChimeraWithK(EQaab, EQbab, EQcab, vvx, vx2, c1o9);
+			backwardChimeraWithK(EQaac, EQbac, EQcac, vvx, vx2, c1o36);
+			backwardChimeraWithK(EQaba, EQbba, EQcba, vvx, vx2, c1o9);
+			backwardChimeraWithK(EQabb, EQbbb, EQcbb, vvx, vx2, c4o9);
+			backwardChimeraWithK(EQabc, EQbbc, EQcbc, vvx, vx2, c1o9);
+			backwardChimeraWithK(EQaca, EQbca, EQcca, vvx, vx2, c1o36);
+			backwardChimeraWithK(EQacb, EQbcb, EQccb, vvx, vx2, c1o9);
+			backwardChimeraWithK(EQacc, EQbcc, EQccc, vvx, vx2, c1o36);
+
+			////////////////////////////////////////////////////////////////////////////////////
+			//Pre-condition
+			mfcbb -= EQcbb;
+			mfabb -= EQabb;
+			mfbcb -= EQbcb;
+			mfbab -= EQbab;
+			mfbbc -= EQbbc;
+			mfbba -= EQbba;
+			mfccb -= EQccb;
+			mfaab -= EQaab;
+			mfcab -= EQcab;
+			mfacb -= EQacb;
+			mfcbc -= EQcbc;
+			mfaba -= EQaba;
+			mfcba -= EQcba;
+			mfabc -= EQabc;
+			mfbcc -= EQbcc;
+			mfbaa -= EQbaa;
+			mfbca -= EQbca;
+			mfbac -= EQbac;
+			mfbbb -= EQbbb;
+			mfccc -= EQccc;
+			mfaac -= EQaac;
+			mfcac -= EQcac;
+			mfacc -= EQacc;
+			mfcca -= EQcca;
+			mfaaa -= EQaaa;
+			mfcaa -= EQcaa;
+			mfaca -= EQaca;
+
+			////////////////////////////////////////////////////////////////////////////////////
+			//Hin
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimera(mfaaa, mfaab, mfaac, vvz, vz2);
+			forwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
+			forwardChimera(mfaca, mfacb, mfacc, vvz, vz2);
+			forwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
+			forwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
+			forwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
+			forwardChimera(mfcaa, mfcab, mfcac, vvz, vz2);
+			forwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
+			forwardChimera(mfcca, mfccb, mfccc, vvz, vz2);
+
+			forwardChimera(mfaaa, mfaba, mfaca, vvy, vy2);
+			forwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
+			forwardChimera(mfaac, mfabc, mfacc, vvy, vy2);
+			forwardChimera(mfbaa, mfbba, mfbca, vvy, vy2);
+			forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
+			forwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2);
+			forwardChimera(mfcaa, mfcba, mfcca, vvy, vy2);
+			forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
+			forwardChimera(mfcac, mfcbc, mfccc, vvy, vy2);
+
+			forwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2);
+			forwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
+			forwardChimera(mfaac, mfbac, mfcac, vvx, vx2);
+			forwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
+			forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
+			forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
+			forwardChimera(mfaca, mfbca, mfcca, vvx, vx2);
+			forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
+			forwardChimera(mfacc, mfbcc, mfccc, vvx, vx2);
+
+			//////////////////////////////////////////////////////////////////////////////////////
+			////Hin
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36  Konditionieren
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// Z - Dir
+			//forwardChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2, c4o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// mit  1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// Y - Dir
+			//forwardChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c1o6);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c1o18);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2, c2o3);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2, c2o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c1o6);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c1o18);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// mit     1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9		Konditionieren
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// X - Dir
+			//forwardChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, one);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c1o3);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c1o3);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+
+
+			////////////////////////////////////////////////////////////////////////////////////
+			// Cumulants
+			////////////////////////////////////////////////////////////////////////////////////
+			real OxxPyyPzz = one; //omega; // one;	//set the bulk viscosity one is high / two is very low and zero is (too) high
+
+			////////////////////////////////////////////////////////////
+			//3.
+			//////////////////////////////
+			real OxyyPxzz = one;
+			real OxyyMxzz = one;
+			real Oxyz = one;
+			////////////////////////////////////////////////////////////
+			//4.
+			//////////////////////////////
+			real O4 = one;
+			////////////////////////////////////////////////////////////
+			//5.
+			//////////////////////////////
+			real O5 = one;
+			////////////////////////////////////////////////////////////
+			//6.
+			//////////////////////////////
+			real O6 = one;
+			////////////////////////////////////////////////////////////
+
+
+			//central moments to cumulants
+			//4.
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
+
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+			//5.
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
+
+			//6.
+
+			real 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)));
+
+
+
+
+			//2.
+			// linear combinations
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy = mfcaa - mfaca;
+			real mxxMzz = mfcaa - mfaac;
+
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			//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) - 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);
+
+			}
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			////no correction
+			//mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz);//-magicBulk*OxxPyyPzz;
+			//mxxMyy += -(-omega) * (-mxxMyy);
+			//mxxMzz += -(-omega) * (-mxxMzz);
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			mfabb += omega * (-mfabb);
+			mfbab += omega * (-mfbab);
+			mfbba += omega * (-mfbba);
+
+			//////////////////////////////////////////////////////////////////////////
+
+			// linear combinations back
+			mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz);
+			mfaca = c1o3 * (-two*  mxxMyy + mxxMzz + mxxPyyPzz);
+			mfaac = c1o3 * (mxxMyy - two* 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
+			//////////////////////////////////////////////////////////////////////////
+			mfbbb += OxyyMxzz * (-mfbbb);
+			mxxyPyzz += OxyyPxzz * (-mxxyPyzz);
+			mxxyMyzz += OxyyMxzz * (-mxxyMyzz);
+			mxxzPyyz += OxyyPxzz * (-mxxzPyyz);
+			mxxzMyyz += OxyyMxzz * (-mxxzMyyz);
+			mxyyPxzz += OxyyPxzz * (-mxyyPxzz);
+			mxyyMxzz += OxyyMxzz * (-mxyyMxzz);
+			//////////////////////////////////////////////////////////////////////////
+
+			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) * 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));
+			mfcac = CUMcac + (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+			mfacc = CUMacc + (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+			//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)));
+
+			////////////////////////////////////////////////////////////////////////////////////
+			//the force be with you
+			mfbaa = -mfbaa;
+			mfaba = -mfaba;
+			mfaab = -mfaab;
+			////////////////////////////////////////////////////////////////////////////////////
+
+
+			////////////////////////////////////////////////////////////////////////////////////
+			//back
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimera(mfaaa, mfaab, mfaac, vvz, vz2);
+			backwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
+			backwardChimera(mfaca, mfacb, mfacc, vvz, vz2);
+			backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
+			backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
+			backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
+			backwardChimera(mfcaa, mfcab, mfcac, vvz, vz2);
+			backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
+			backwardChimera(mfcca, mfccb, mfccc, vvz, vz2);
+
+			backwardChimera(mfaaa, mfaba, mfaca, vvy, vy2);
+			backwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
+			backwardChimera(mfaac, mfabc, mfacc, vvy, vy2);
+			backwardChimera(mfbaa, mfbba, mfbca, vvy, vy2);
+			backwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
+			backwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2);
+			backwardChimera(mfcaa, mfcba, mfcca, vvy, vy2);
+			backwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
+			backwardChimera(mfcac, mfcbc, mfccc, vvy, vy2);
+
+			backwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2);
+			backwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
+			backwardChimera(mfaac, mfbac, mfcac, vvx, vx2);
+			backwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
+			backwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
+			backwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
+			backwardChimera(mfaca, mfbca, mfcca, vvx, vx2);
+			backwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
+			backwardChimera(mfacc, mfbcc, mfccc, vvx, vx2);
+
+			////////////////////////////////////////////////////////////////////////////////////
+			//mfcbb += EQcbb;
+			//mfabb += EQabb;
+			//mfbcb += EQbcb;
+			//mfbab += EQbab;
+			//mfbbc += EQbbc;
+			//mfbba += EQbba;
+			//mfccb += EQccb;
+			//mfaab += EQaab;
+			//mfcab += EQcab;
+			//mfacb += EQacb;
+			//mfcbc += EQcbc;
+			//mfaba += EQaba;
+			//mfcba += EQcba;
+			//mfabc += EQabc;
+			//mfbcc += EQbcc;
+			//mfbaa += EQbaa;
+			//mfbca += EQbca;
+			//mfbac += EQbac;
+			//mfbbb += EQbbb;
+			//mfccc += EQccc;
+			//mfaac += EQaac;
+			//mfcac += EQcac;
+			//mfacc += EQacc;
+			//mfcca += EQcca;
+			//mfaaa += EQaaa;
+			//mfcaa += EQcaa;
+			//mfaca += EQaca;
+			////////////////////////////////////////////////////////////////////////////////////
+			////Error diffusion
+			real fTEMP = mfbbb + EQbbb;
+			real delta0 = mfbbb - (fTEMP - EQbbb);
+			delta0 *= c1o4;
+			mfbbb = fTEMP;
+
+
+			fTEMP = mfcbb + EQcbb;
+			real deltacbb = mfcbb - (fTEMP - EQcbb);
+			mfcbb = fTEMP;
+			//mfcbb+=EQcbb;
+
+			fTEMP = mfabb + EQabb;
+			real deltaabb = mfabb - (fTEMP - EQabb);
+			mfabb = fTEMP;
+			//mfabb+=EQabb;
+
+			fTEMP = mfbcb + EQbcb;
+			real deltabcb = mfbcb - (fTEMP - EQbcb);
+			mfbcb = fTEMP;
+			//mfbcb+=EQbcb;
+
+			fTEMP = mfbab + EQbab;
+			real deltabab = mfbab - (fTEMP - EQbab);
+			mfbab = fTEMP;
+			//mfbab+=EQbab;
+
+			fTEMP = mfbbc + EQbbc;
+			real deltabbc = mfbbc - (fTEMP - EQbbc);
+			mfbbc = fTEMP;
+			//mfbbc+=EQbbc;
+
+			fTEMP = mfbba + EQbba;
+			real deltabba = mfbba - (fTEMP - EQbba);
+			mfbba = fTEMP;
+			//mfbba+=EQbba;
+
+			EQccb += (delta0 + c1o2*(deltacbb + deltabcb));
+			fTEMP = mfccb + EQccb;
+			real deltaccb = mfccb - (fTEMP - EQccb);
+			mfccb = fTEMP;
+			//mfccb+=EQccb+(delta0+c1o2*(deltacbb+deltabcb));
+
+			EQaab += (delta0 + c1o2*(deltaabb + deltabab));
+			fTEMP = mfaab + EQaab;
+			real deltaaab = mfaab - (fTEMP - EQaab);
+			mfaab = fTEMP;
+			//mfaab+=EQaab+(delta0+c1o2*(deltaabb+deltabab));
+
+			EQcab += (delta0 + c1o2*(deltacbb + deltabab));
+			fTEMP = mfcab + EQcab;
+			real deltacab = mfcab - (fTEMP - EQcab);
+			mfcab = fTEMP;
+			//mfcab+=EQcab+(delta0+c1o2*(deltacbb+deltabab));
+
+			EQacb += (delta0 + c1o2*(deltaabb + deltabcb));
+			fTEMP = mfacb + EQacb;
+			real deltaacb = mfacb - (fTEMP - EQacb);
+			mfacb = fTEMP;
+			//mfacb+=EQacb+(delta0+c1o2*(deltaabb+deltabcb));
+
+			EQcbc += (delta0 + c1o2*(deltacbb + deltabbc));
+			fTEMP = mfcbc + EQcbc;
+			real deltacbc = mfcbc - (fTEMP - EQcbc);
+			mfcbc = fTEMP;
+			//mfcbc+=EQcbc+(delta0+c1o2*(deltacbb+deltabbc));
+
+			EQaba += (delta0 + c1o2*(deltaabb + deltabba));
+			fTEMP = mfaba + EQaba;
+			real deltaaba = mfaba - (fTEMP - EQaba);
+			mfaba = fTEMP;
+			//mfaba+=EQaba+(delta0+c1o2*(deltaabb+deltabba));
+
+			EQcba += (delta0 + c1o2*(deltacbb + deltabba));
+			fTEMP = mfcba + EQcba;
+			real deltacba = mfcba - (fTEMP - EQcba);
+			mfcba = fTEMP;
+			//mfcba+=EQcba+(delta0+c1o2*(deltacbb+deltabba));
+
+			EQabc += (delta0 + c1o2*(deltaabb + deltabbc));
+			fTEMP = mfabc + EQabc;
+			real deltaabc = mfabc - (fTEMP - EQabc);
+			mfabc = fTEMP;
+			//mfabc+=EQabc+(delta0+c1o2*(deltaabb+deltabbc));
+
+			EQbcc += (delta0 + c1o2*(deltabcb + deltabbc));
+			fTEMP = mfbcc + EQbcc;
+			real deltabcc = mfbcc - (fTEMP - EQbcc);
+			mfbcc = fTEMP;
+			//mfbcc+=EQbcc+(delta0+c1o2*(deltabcb+deltabbc));
+
+			EQbaa += (delta0 + c1o2*(deltabab + deltabba));
+			fTEMP = mfbaa + EQbaa;
+			real deltabaa = mfbaa - (fTEMP - EQbaa);
+			mfbaa = fTEMP;
+			//mfbaa+=EQbaa+(delta0+c1o2*(deltabab+deltabba));
+
+			EQbca += (delta0 + c1o2*(deltabcb + deltabba));
+			fTEMP = mfbca + EQbca;
+			real deltabca = mfbca - (fTEMP - EQbca);
+			mfbca = fTEMP;
+			//mfbca+=EQbca+(delta0+c1o2*(deltabcb+deltabba));
+
+			EQbac += (delta0 + c1o2*(deltabab + deltabbc));
+			fTEMP = mfbac + EQbac;
+			real deltabac = mfbac - (fTEMP - EQbac);
+			mfbac = fTEMP;
+			//mfbac+=EQbac+(delta0+c1o2*(deltabab+deltabbc));
+
+			mfccc += EQccc - (delta0 + c1o4*(deltacbb + deltabcb + deltabbc) - c1o2*(deltabcc + deltacbc + deltaccb));
+			mfaac += EQaac - (delta0 + c1o4*(deltaabb + deltabab + deltabbc) - c1o2*(deltabac + deltaabc + deltaaab));
+			mfcac += EQcac - (delta0 + c1o4*(deltacbb + deltabab + deltabbc) - c1o2*(deltabac + deltacbc + deltacab));
+			mfacc += EQacc - (delta0 + c1o4*(deltaabb + deltabcb + deltabbc) - c1o2*(deltabcc + deltaabc + deltaacb));
+			mfcca += EQcca - (delta0 + c1o4*(deltacbb + deltabcb + deltabba) - c1o2*(deltabca + deltacba + deltaccb));
+			mfaaa += EQaaa - (delta0 + c1o4*(deltaabb + deltabab + deltabba) - c1o2*(deltabaa + deltaaba + deltaaab));
+			mfcaa += EQcaa - (delta0 + c1o4*(deltacbb + deltabab + deltabba) - c1o2*(deltabaa + deltacba + deltacab));
+			mfaca += EQaca - (delta0 + c1o4*(deltaabb + deltabcb + deltabba) - c1o2*(deltabca + deltaaba + deltaacb));
+
+
+
+			//////////////////////////////////////////////////////////////////////////////////////
+			////back
+			//////////////////////////////////////////////////////////////////////////////////////
+			////mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9   Konditionieren
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// Z - Dir
+			//backwardChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, one);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c1o3);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
+			///////////b//////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
+			///////////b//////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c1o3);
+			///////////c//////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
+			///////////c//////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			////mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18   Konditionieren
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// Y - Dir
+			//backwardChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c1o6);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaab, mfabb, mfacb, vvy, vy2, c2o3);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c1o6);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfbaa, mfbba, mfbca, vvz, vz2);
+			///////////b//////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfbab, mfbbb, mfbcb, vvz, vz2);
+			///////////b//////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfbac, mfbbc, mfbcc, vvz, vz2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c1o18);
+			///////////c//////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfcab, mfcbb, mfccb, vvy, vy2, c2o9);
+			///////////c//////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c1o18);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			////mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// X - Dir
+			//backwardChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaba, mfbba, mfcba, vvx, vx2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaab, mfbab, mfcab, vvx, vx2, c1o9);
+			/////////////b////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfabb, mfbbb, mfcbb, vvx, vx2, c4o9);
+			/////////////b////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfacb, mfbcb, mfccb, vvx, vx2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c1o36);
+			/////////////c////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfabc, mfbbc, mfcbc, vvx, vx2, c1o9);
+			/////////////c////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+
+			////////////////////////////////////////////////////////////////////////////////////////
+			//real drhoPost =
+			//	((((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;
+			//mfbbb += drho - drhoPost;
+			////////////////////////////////////////////////////////////////////////////////////
+			(D.f[dirE])[k] = mfabb;//(D.f[ dirE   ])[ke   ] = mfabb;// -  c2over27 ;  (D.f[ dirE   ])[k   ]                                                                     
+			(D.f[dirW])[kw] = mfcbb;//(D.f[ dirW   ])[kw   ] = mfcbb;// -  c2over27 ;  (D.f[ dirW   ])[kw  ]                                                                   
+			(D.f[dirN])[k] = mfbab;//(D.f[ dirN   ])[kn   ] = mfbab;// -  c2over27 ;	 (D.f[ dirN   ])[k   ]
+			(D.f[dirS])[ks] = mfbcb;//(D.f[ dirS   ])[ks   ] = mfbcb;// -  c2over27 ;	 (D.f[ dirS   ])[ks  ]
+			(D.f[dirT])[k] = mfbba;//(D.f[ dirT   ])[kt   ] = mfbba;// -  c2over27 ;	 (D.f[ dirT   ])[k   ]
+			(D.f[dirB])[kb] = mfbbc;//(D.f[ dirB   ])[kb   ] = mfbbc;// -  c2over27 ;	 (D.f[ dirB   ])[kb  ]
+			(D.f[dirNE])[k] = mfaab;//(D.f[ dirNE  ])[kne  ] = mfaab;// -  c1over54 ;	 (D.f[ dirNE  ])[k   ]
+			(D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW  ])[ksw  ] = mfccb;// -  c1over54 ;	 (D.f[ dirSW  ])[ksw ]
+			(D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE  ])[kse  ] = mfacb;// -  c1over54 ;	 (D.f[ dirSE  ])[ks  ]
+			(D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW  ])[knw  ] = mfcab;// -  c1over54 ;	 (D.f[ dirNW  ])[kw  ]
+			(D.f[dirTE])[k] = mfaba;//(D.f[ dirTE  ])[kte  ] = mfaba;// -  c1over54 ;	 (D.f[ dirTE  ])[k   ]
+			(D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW  ])[kbw  ] = mfcbc;// -  c1over54 ;	 (D.f[ dirBW  ])[kbw ]
+			(D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE  ])[kbe  ] = mfabc;// -  c1over54 ;	 (D.f[ dirBE  ])[kb  ]
+			(D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW  ])[ktw  ] = mfcba;// -  c1over54 ;	 (D.f[ dirTW  ])[kw  ]
+			(D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN  ])[ktn  ] = mfbaa;// -  c1over54 ;	 (D.f[ dirTN  ])[k   ]
+			(D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS  ])[kbs  ] = mfbcc;// -  c1over54 ;	 (D.f[ dirBS  ])[kbs ]
+			(D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN  ])[kbn  ] = mfbac;// -  c1over54 ;	 (D.f[ dirBN  ])[kb  ]
+			(D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS  ])[kts  ] = mfbca;// -  c1over54 ;	 (D.f[ dirTS  ])[ks  ]
+			(D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// -  c8over27 ;	 (D.f[ dirZERO])[k   ]
+			(D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// -  c1over216;	 (D.f[ dirTNE ])[k   ]
+			(D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// -  c1over216;	 (D.f[ dirTSE ])[ks  ]
+			(D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// -  c1over216;	 (D.f[ dirBNE ])[kb  ]
+			(D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// -  c1over216;	 (D.f[ dirBSE ])[kbs ]
+			(D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// -  c1over216;	 (D.f[ dirTNW ])[kw  ]
+			(D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// -  c1over216;	 (D.f[ dirTSW ])[ksw ]
+			(D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// -  c1over216;	 (D.f[ dirBNW ])[kbw ]
+			(D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// -  c1over216;	 (D.f[ dirBSW ])[kbsw]
+										////////////////////////////////////////////////////////////////////////////////////
+		}
+	}
+}
+////////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+extern "C" __global__ void Cumulant_One_preconditioned_chim_Comp_SP_27(
+	real omega,
+	unsigned int* bcMatD,
+	unsigned int* neighborX,
+	unsigned int* neighborY,
+	unsigned int* neighborZ,
+	real* DDStart,
+	int size_Mat,
+	int level,
+	real* forces,
+	bool EvenOrOdd)
+{
+	////////////////////////////////////////////////////////////////////////////////
+	const unsigned  x = threadIdx.x;  // Globaler x-Index 
+	const unsigned  y = blockIdx.x;   // Globaler y-Index 
+	const unsigned  z = blockIdx.y;   // Globaler z-Index 
+
+	const unsigned nx = blockDim.x;
+	const unsigned ny = gridDim.x;
+
+	const unsigned k = nx*(ny*z + y) + x;
+	//////////////////////////////////////////////////////////////////////////
+
+	if (k<size_Mat)
+	{
+		////////////////////////////////////////////////////////////////////////////////
+		unsigned int BC;
+		BC = bcMatD[k];
+
+		if (BC >= GEO_FLUID/*(BC != GEO_SOLID) && (BC != GEO_VOID)*/)
+		{
+			Distributions27 D;
+			if (EvenOrOdd == true)
+			{
+				D.f[dirE] = &DDStart[dirE   *size_Mat];
+				D.f[dirW] = &DDStart[dirW   *size_Mat];
+				D.f[dirN] = &DDStart[dirN   *size_Mat];
+				D.f[dirS] = &DDStart[dirS   *size_Mat];
+				D.f[dirT] = &DDStart[dirT   *size_Mat];
+				D.f[dirB] = &DDStart[dirB   *size_Mat];
+				D.f[dirNE] = &DDStart[dirNE  *size_Mat];
+				D.f[dirSW] = &DDStart[dirSW  *size_Mat];
+				D.f[dirSE] = &DDStart[dirSE  *size_Mat];
+				D.f[dirNW] = &DDStart[dirNW  *size_Mat];
+				D.f[dirTE] = &DDStart[dirTE  *size_Mat];
+				D.f[dirBW] = &DDStart[dirBW  *size_Mat];
+				D.f[dirBE] = &DDStart[dirBE  *size_Mat];
+				D.f[dirTW] = &DDStart[dirTW  *size_Mat];
+				D.f[dirTN] = &DDStart[dirTN  *size_Mat];
+				D.f[dirBS] = &DDStart[dirBS  *size_Mat];
+				D.f[dirBN] = &DDStart[dirBN  *size_Mat];
+				D.f[dirTS] = &DDStart[dirTS  *size_Mat];
+				D.f[dirZERO] = &DDStart[dirZERO*size_Mat];
+				D.f[dirTNE] = &DDStart[dirTNE *size_Mat];
+				D.f[dirTSW] = &DDStart[dirTSW *size_Mat];
+				D.f[dirTSE] = &DDStart[dirTSE *size_Mat];
+				D.f[dirTNW] = &DDStart[dirTNW *size_Mat];
+				D.f[dirBNE] = &DDStart[dirBNE *size_Mat];
+				D.f[dirBSW] = &DDStart[dirBSW *size_Mat];
+				D.f[dirBSE] = &DDStart[dirBSE *size_Mat];
+				D.f[dirBNW] = &DDStart[dirBNW *size_Mat];
+			}
+			else
+			{
+				D.f[dirW] = &DDStart[dirE   *size_Mat];
+				D.f[dirE] = &DDStart[dirW   *size_Mat];
+				D.f[dirS] = &DDStart[dirN   *size_Mat];
+				D.f[dirN] = &DDStart[dirS   *size_Mat];
+				D.f[dirB] = &DDStart[dirT   *size_Mat];
+				D.f[dirT] = &DDStart[dirB   *size_Mat];
+				D.f[dirSW] = &DDStart[dirNE  *size_Mat];
+				D.f[dirNE] = &DDStart[dirSW  *size_Mat];
+				D.f[dirNW] = &DDStart[dirSE  *size_Mat];
+				D.f[dirSE] = &DDStart[dirNW  *size_Mat];
+				D.f[dirBW] = &DDStart[dirTE  *size_Mat];
+				D.f[dirTE] = &DDStart[dirBW  *size_Mat];
+				D.f[dirTW] = &DDStart[dirBE  *size_Mat];
+				D.f[dirBE] = &DDStart[dirTW  *size_Mat];
+				D.f[dirBS] = &DDStart[dirTN  *size_Mat];
+				D.f[dirTN] = &DDStart[dirBS  *size_Mat];
+				D.f[dirTS] = &DDStart[dirBN  *size_Mat];
+				D.f[dirBN] = &DDStart[dirTS  *size_Mat];
+				D.f[dirZERO] = &DDStart[dirZERO*size_Mat];
+				D.f[dirBSW] = &DDStart[dirTNE *size_Mat];
+				D.f[dirBNE] = &DDStart[dirTSW *size_Mat];
+				D.f[dirBNW] = &DDStart[dirTSE *size_Mat];
+				D.f[dirBSE] = &DDStart[dirTNW *size_Mat];
+				D.f[dirTSW] = &DDStart[dirBNE *size_Mat];
+				D.f[dirTNE] = &DDStart[dirBSW *size_Mat];
+				D.f[dirTNW] = &DDStart[dirBSE *size_Mat];
+				D.f[dirTSE] = &DDStart[dirBNW *size_Mat];
+			}
+
+			////////////////////////////////////////////////////////////////////////////////
+			//index
+			//unsigned int kzero= k;
+			//unsigned int ke   = k;
+			unsigned int kw = neighborX[k];
+			//unsigned int kn   = k;
+			unsigned int ks = neighborY[k];
+			//unsigned int kt   = k;
+			unsigned int kb = neighborZ[k];
+			unsigned int ksw = neighborY[kw];
+			//unsigned int kne  = k;
+			//unsigned int kse  = ks;
+			//unsigned int knw  = kw;
+			unsigned int kbw = neighborZ[kw];
+			//unsigned int kte  = k;
+			//unsigned int kbe  = kb;
+			//unsigned int ktw  = kw;
+			unsigned int kbs = neighborZ[ks];
+			//unsigned int ktn  = k;
+			//unsigned int kbn  = kb;
+			//unsigned int kts  = ks;
+			//unsigned int ktse = ks;
+			//unsigned int kbnw = kbw;
+			//unsigned int ktnw = kw;
+			//unsigned int kbse = kbs;
+			//unsigned int ktsw = ksw;
+			//unsigned int kbne = kb;
+			//unsigned int ktne = k;
+			unsigned int kbsw = neighborZ[ksw];
+
+
+
+			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			real mfcbb = (D.f[dirE])[k];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW])[kw];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN])[k];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS])[ks];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT])[k];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB])[kb];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE])[k];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE])[ks];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW])[kw];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE])[k];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE])[kb];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW])[kw];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN])[k];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN])[kb];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS])[ks];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE])[k];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE])[ks];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE])[kb];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+											   ////////////////////////////////////////////////////////////////////////////////////
+			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 = one + 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;
+			////////////////////////////////////////////////////////////////////////////////////
+			//the force be with you
+			real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+			real fy = forces[1] / (pow(two, level)); //zero;
+			real fz = forces[2] / (pow(two, level)); //zero;
+			vvx += fx*c1o2;
+			vvy += fy*c1o2;
+			vvz += fz*c1o2;
+			////////////////////////////////////////////////////////////////////////////////////
+			//real omega = omega_in;
+			////////////////////////////////////////////////////////////////////////////////////
+			//fast
+			real oMdrho = one; // 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;
+			//real s9 = minusomega;
+			//test
+			//s9 = 0.;
+
+
+			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			real EQcbb = zero;
+			real EQabb = zero;
+			real EQbcb = zero;
+			real EQbab = zero;
+			real EQbbc = zero;
+			real EQbba = zero;
+			real EQccb = zero;
+			real EQaab = zero;
+			real EQcab = zero;
+			real EQacb = zero;
+			real EQcbc = zero;
+			real EQaba = zero;
+			real EQcba = zero;
+			real EQabc = zero;
+			real EQbcc = zero;
+			real EQbaa = zero;
+			real EQbca = zero;
+			real EQbac = zero;
+			real EQbbb = zero;
+			real EQccc = drho * c1o27;
+			real EQaac = drho * c1o3;
+			real EQcac = drho * c1o9;
+			real EQacc = drho * c1o9;
+			real EQcca = drho * c1o9;
+			real EQaaa = drho;
+			real EQcaa = drho * c1o3;
+			real EQaca = drho * c1o3;
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(EQaaa, EQaab, EQaac, vvz, vz2, one);
+			backwardChimeraWithK(EQaca, EQacb, EQacc, vvz, vz2, c1o3);
+			///////////////////////////////////////////////////////////
+			EQcaa = EQaca; EQcab = EQacb; EQcac = EQacc;
+			///////////////////////////////////////////////////////////
+			backwardChimeraWithK(EQcca, EQccb, EQccc, vvz, vz2, c1o9);
+
+			backwardChimeraWithK(EQaaa, EQaba, EQaca, vvy, vy2, c1o6);
+			backwardChimeraWithK(EQaab, EQabb, EQacb, vvy, vy2, c2o3);
+			backwardChimeraWithK(EQaac, EQabc, EQacc, vvy, vy2, c1o6);
+			backwardChimeraWithK(EQcaa, EQcba, EQcca, vvy, vy2, c1o18);
+			backwardChimeraWithK(EQcab, EQcbb, EQccb, vvy, vy2, c2o9);
+			backwardChimeraWithK(EQcac, EQcbc, EQccc, vvy, vy2, c1o18);
+
+			backwardChimeraWithK(EQaaa, EQbaa, EQcaa, vvx, vx2, c1o36);
+			backwardChimeraWithK(EQaab, EQbab, EQcab, vvx, vx2, c1o9);
+			backwardChimeraWithK(EQaac, EQbac, EQcac, vvx, vx2, c1o36);
+			backwardChimeraWithK(EQaba, EQbba, EQcba, vvx, vx2, c1o9);
+			backwardChimeraWithK(EQabb, EQbbb, EQcbb, vvx, vx2, c4o9);
+			backwardChimeraWithK(EQabc, EQbbc, EQcbc, vvx, vx2, c1o9);
+			backwardChimeraWithK(EQaca, EQbca, EQcca, vvx, vx2, c1o36);
+			backwardChimeraWithK(EQacb, EQbcb, EQccb, vvx, vx2, c1o9);
+			backwardChimeraWithK(EQacc, EQbcc, EQccc, vvx, vx2, c1o36);
+
+			////////////////////////////////////////////////////////////////////////////////////
+			//Pre-condition
+			mfcbb -= EQcbb;
+			mfabb -= EQabb;
+			mfbcb -= EQbcb;
+			mfbab -= EQbab;
+			mfbbc -= EQbbc;
+			mfbba -= EQbba;
+			mfccb -= EQccb;
+			mfaab -= EQaab;
+			mfcab -= EQcab;
+			mfacb -= EQacb;
+			mfcbc -= EQcbc;
+			mfaba -= EQaba;
+			mfcba -= EQcba;
+			mfabc -= EQabc;
+			mfbcc -= EQbcc;
+			mfbaa -= EQbaa;
+			mfbca -= EQbca;
+			mfbac -= EQbac;
+			mfbbb -= EQbbb;
+			mfccc -= EQccc;
+			mfaac -= EQaac;
+			mfcac -= EQcac;
+			mfacc -= EQacc;
+			mfcca -= EQcca;
+			mfaaa -= EQaaa;
+			mfcaa -= EQcaa;
+			mfaca -= EQaca;
+
+			////////////////////////////////////////////////////////////////////////////////////
+			//Hin
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimera(mfaaa, mfaab, mfaac, vvz, vz2);
+			forwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
+			forwardChimera(mfaca, mfacb, mfacc, vvz, vz2);
+			forwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
+			forwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
+			forwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
+			forwardChimera(mfcaa, mfcab, mfcac, vvz, vz2);
+			forwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
+			forwardChimera(mfcca, mfccb, mfccc, vvz, vz2);
+
+			forwardChimera(mfaaa, mfaba, mfaca, vvy, vy2);
+			forwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
+			forwardChimera(mfaac, mfabc, mfacc, vvy, vy2);
+			forwardChimera(mfbaa, mfbba, mfbca, vvy, vy2);
+			forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
+			forwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2);
+			forwardChimera(mfcaa, mfcba, mfcca, vvy, vy2);
+			forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
+			forwardChimera(mfcac, mfcbc, mfccc, vvy, vy2);
+
+			forwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2);
+			forwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
+			forwardChimera(mfaac, mfbac, mfcac, vvx, vx2);
+			forwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
+			forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
+			forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
+			forwardChimera(mfaca, mfbca, mfcca, vvx, vx2);
+			forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
+			forwardChimera(mfacc, mfbcc, mfccc, vvx, vx2);
+
+			//////////////////////////////////////////////////////////////////////////////////////
+			////Hin
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36  Konditionieren
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// Z - Dir
+			//forwardChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2, c4o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// mit  1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// Y - Dir
+			//forwardChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c1o6);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c1o18);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2, c2o3);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2, c2o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c1o6);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c1o18);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// mit     1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9		Konditionieren
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// X - Dir
+			//forwardChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, one);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c1o3);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c1o3);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//forwardChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+
+
+			////////////////////////////////////////////////////////////////////////////////////
+			// Cumulants
+			////////////////////////////////////////////////////////////////////////////////////
+			real OxxPyyPzz = one; //omega; // one;	//set the bulk viscosity one is high / two is very low and zero is (too) high
+
+			////////////////////////////////////////////////////////////
+			//3.
+			//////////////////////////////
+			real OxyyPxzz = one;
+			real OxyyMxzz = one;
+			real Oxyz = one;
+			////////////////////////////////////////////////////////////
+			//4.
+			//////////////////////////////
+			real O4 = one;
+			////////////////////////////////////////////////////////////
+			//5.
+			//////////////////////////////
+			real O5 = one;
+			////////////////////////////////////////////////////////////
+			//6.
+			//////////////////////////////
+			real O6 = one;
+			////////////////////////////////////////////////////////////
+
+
+			//central moments to cumulants
+			//4.
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
+
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+			//5.
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
+
+			//6.
+
+			real 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)));
+
+
+
+
+			//2.
+			// linear combinations
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy = mfcaa - mfaca;
+			real mxxMzz = mfcaa - mfaac;
+
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			//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) - 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);
+
+			}
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			////no correction
+			//mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz);//-magicBulk*OxxPyyPzz;
+			//mxxMyy += -(-omega) * (-mxxMyy);
+			//mxxMzz += -(-omega) * (-mxxMzz);
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			mfabb += omega * (-mfabb);
+			mfbab += omega * (-mfbab);
+			mfbba += omega * (-mfbba);
+
+			//////////////////////////////////////////////////////////////////////////
+
+			// linear combinations back
+			mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz);
+			mfaca = c1o3 * (-two*  mxxMyy + mxxMzz + mxxPyyPzz);
+			mfaac = c1o3 * (mxxMyy - two* 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
+			//////////////////////////////////////////////////////////////////////////
+			mfbbb += OxyyMxzz * (-mfbbb);
+			mxxyPyzz += OxyyPxzz * (-mxxyPyzz);
+			mxxyMyzz += OxyyMxzz * (-mxxyMyzz);
+			mxxzPyyz += OxyyPxzz * (-mxxzPyyz);
+			mxxzMyyz += OxyyMxzz * (-mxxzMyyz);
+			mxyyPxzz += OxyyPxzz * (-mxyyPxzz);
+			mxyyMxzz += OxyyMxzz * (-mxyyMxzz);
+			//////////////////////////////////////////////////////////////////////////
+
+			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) * 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));
+			mfcac = CUMcac + (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+			mfacc = CUMacc + (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+			//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)));
+
+			////////////////////////////////////////////////////////////////////////////////////
+			//the force be with you
+			mfbaa = -mfbaa;
+			mfaba = -mfaba;
+			mfaab = -mfaab;
+			////////////////////////////////////////////////////////////////////////////////////
+
+
+			////////////////////////////////////////////////////////////////////////////////////
+			//back
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimera(mfaaa, mfaab, mfaac, vvz, vz2);
+			backwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
+			backwardChimera(mfaca, mfacb, mfacc, vvz, vz2);
+			backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
+			backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
+			backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
+			backwardChimera(mfcaa, mfcab, mfcac, vvz, vz2);
+			backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
+			backwardChimera(mfcca, mfccb, mfccc, vvz, vz2);
+
+			backwardChimera(mfaaa, mfaba, mfaca, vvy, vy2);
+			backwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
+			backwardChimera(mfaac, mfabc, mfacc, vvy, vy2);
+			backwardChimera(mfbaa, mfbba, mfbca, vvy, vy2);
+			backwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
+			backwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2);
+			backwardChimera(mfcaa, mfcba, mfcca, vvy, vy2);
+			backwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
+			backwardChimera(mfcac, mfcbc, mfccc, vvy, vy2);
+
+			backwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2);
+			backwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
+			backwardChimera(mfaac, mfbac, mfcac, vvx, vx2);
+			backwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
+			backwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
+			backwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
+			backwardChimera(mfaca, mfbca, mfcca, vvx, vx2);
+			backwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
+			backwardChimera(mfacc, mfbcc, mfccc, vvx, vx2);
+
+			////////////////////////////////////////////////////////////////////////////////////
+			mfcbb+=EQcbb;
+			mfabb+=EQabb;
+			mfbcb+=EQbcb;
+			mfbab+=EQbab;
+			mfbbc+=EQbbc;
+			mfbba+=EQbba;
+			mfccb+=EQccb;
+			mfaab+=EQaab;
+			mfcab+=EQcab;
+			mfacb+=EQacb;
+			mfcbc+=EQcbc;
+			mfaba+=EQaba;
+			mfcba+=EQcba;
+			mfabc+=EQabc;
+			mfbcc+=EQbcc;
+			mfbaa+=EQbaa;
+			mfbca+=EQbca;
+			mfbac+=EQbac;
+			mfbbb+=EQbbb;
+			mfccc+=EQccc;
+			mfaac+=EQaac;
+			mfcac+=EQcac;
+			mfacc+=EQacc;
+			mfcca+=EQcca;
+			mfaaa+=EQaaa;
+			mfcaa+=EQcaa;
+			mfaca+=EQaca;
+
+
+			//////////////////////////////////////////////////////////////////////////////////////
+			////back
+			//////////////////////////////////////////////////////////////////////////////////////
+			////mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9   Konditionieren
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// Z - Dir
+			//backwardChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, one);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c1o3);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
+			///////////b//////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
+			///////////b//////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c1o3);
+			///////////c//////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
+			///////////c//////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			////mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18   Konditionieren
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// Y - Dir
+			//backwardChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c1o6);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaab, mfabb, mfacb, vvy, vy2, c2o3);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c1o6);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfbaa, mfbba, mfbca, vvz, vz2);
+			///////////b//////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfbab, mfbbb, mfbcb, vvz, vz2);
+			///////////b//////////////////////////////////////////////////////////////////////////
+			//backwardChimera(mfbac, mfbbc, mfbcc, vvz, vz2);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c1o18);
+			///////////c//////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfcab, mfcbb, mfccb, vvy, vy2, c2o9);
+			///////////c//////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c1o18);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			////mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren
+			//////////////////////////////////////////////////////////////////////////////////////
+			//// X - Dir
+			//backwardChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaba, mfbba, mfcba, vvx, vx2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaab, mfbab, mfcab, vvx, vx2, c1o9);
+			/////////////b////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfabb, mfbbb, mfcbb, vvx, vx2, c4o9);
+			/////////////b////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfacb, mfbcb, mfccb, vvx, vx2, c1o9);
+			//////////////////////////////////////////////////////////////////////////////////////
+			//////////////////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c1o36);
+			/////////////c////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfabc, mfbbc, mfcbc, vvx, vx2, c1o9);
+			/////////////c////////////////////////////////////////////////////////////////////////
+			//backwardChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c1o36);
+			//////////////////////////////////////////////////////////////////////////////////////
+
+			//////////////////////////////////////////////////////////////////////////////////////
+			real drhoPost =
+				((((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;
+			mfbbb += drho - drhoPost;
+			////////////////////////////////////////////////////////////////////////////////////
+			(D.f[dirE])[k] = mfabb;//(D.f[ dirE   ])[ke   ] = mfabb;// -  c2over27 ;  (D.f[ dirE   ])[k   ]                                                                     
+			(D.f[dirW])[kw] = mfcbb;//(D.f[ dirW   ])[kw   ] = mfcbb;// -  c2over27 ;  (D.f[ dirW   ])[kw  ]                                                                   
+			(D.f[dirN])[k] = mfbab;//(D.f[ dirN   ])[kn   ] = mfbab;// -  c2over27 ;	 (D.f[ dirN   ])[k   ]
+			(D.f[dirS])[ks] = mfbcb;//(D.f[ dirS   ])[ks   ] = mfbcb;// -  c2over27 ;	 (D.f[ dirS   ])[ks  ]
+			(D.f[dirT])[k] = mfbba;//(D.f[ dirT   ])[kt   ] = mfbba;// -  c2over27 ;	 (D.f[ dirT   ])[k   ]
+			(D.f[dirB])[kb] = mfbbc;//(D.f[ dirB   ])[kb   ] = mfbbc;// -  c2over27 ;	 (D.f[ dirB   ])[kb  ]
+			(D.f[dirNE])[k] = mfaab;//(D.f[ dirNE  ])[kne  ] = mfaab;// -  c1over54 ;	 (D.f[ dirNE  ])[k   ]
+			(D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW  ])[ksw  ] = mfccb;// -  c1over54 ;	 (D.f[ dirSW  ])[ksw ]
+			(D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE  ])[kse  ] = mfacb;// -  c1over54 ;	 (D.f[ dirSE  ])[ks  ]
+			(D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW  ])[knw  ] = mfcab;// -  c1over54 ;	 (D.f[ dirNW  ])[kw  ]
+			(D.f[dirTE])[k] = mfaba;//(D.f[ dirTE  ])[kte  ] = mfaba;// -  c1over54 ;	 (D.f[ dirTE  ])[k   ]
+			(D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW  ])[kbw  ] = mfcbc;// -  c1over54 ;	 (D.f[ dirBW  ])[kbw ]
+			(D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE  ])[kbe  ] = mfabc;// -  c1over54 ;	 (D.f[ dirBE  ])[kb  ]
+			(D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW  ])[ktw  ] = mfcba;// -  c1over54 ;	 (D.f[ dirTW  ])[kw  ]
+			(D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN  ])[ktn  ] = mfbaa;// -  c1over54 ;	 (D.f[ dirTN  ])[k   ]
+			(D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS  ])[kbs  ] = mfbcc;// -  c1over54 ;	 (D.f[ dirBS  ])[kbs ]
+			(D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN  ])[kbn  ] = mfbac;// -  c1over54 ;	 (D.f[ dirBN  ])[kb  ]
+			(D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS  ])[kts  ] = mfbca;// -  c1over54 ;	 (D.f[ dirTS  ])[ks  ]
+			(D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// -  c8over27 ;	 (D.f[ dirZERO])[k   ]
+			(D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// -  c1over216;	 (D.f[ dirTNE ])[k   ]
+			(D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// -  c1over216;	 (D.f[ dirTSE ])[ks  ]
+			(D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// -  c1over216;	 (D.f[ dirBNE ])[kb  ]
+			(D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// -  c1over216;	 (D.f[ dirBSE ])[kbs ]
+			(D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// -  c1over216;	 (D.f[ dirTNW ])[kw  ]
+			(D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// -  c1over216;	 (D.f[ dirTSW ])[ksw ]
+			(D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// -  c1over216;	 (D.f[ dirBNW ])[kbw ]
+			(D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// -  c1over216;	 (D.f[ dirBSW ])[kbsw]
+			////////////////////////////////////////////////////////////////////////////////////
+		}
+	}
+}
+////////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+extern "C" __global__ void Cumulant_One_chim_Comp_SP_27(
+	real omega,
+	unsigned int* bcMatD,
+	unsigned int* neighborX,
+	unsigned int* neighborY,
+	unsigned int* neighborZ,
+	real* DDStart,
+	int size_Mat,
+	int level,
+	real* forces,
+	bool EvenOrOdd)
+{
+	////////////////////////////////////////////////////////////////////////////////
+	const unsigned  x = threadIdx.x;  // Globaler x-Index 
+	const unsigned  y = blockIdx.x;   // Globaler y-Index 
+	const unsigned  z = blockIdx.y;   // Globaler z-Index 
+
+	const unsigned nx = blockDim.x;
+	const unsigned ny = gridDim.x;
+
+	const unsigned k = nx*(ny*z + y) + x;
+	//////////////////////////////////////////////////////////////////////////
+
+	if (k<size_Mat)
+	{
+		////////////////////////////////////////////////////////////////////////////////
+		unsigned int BC;
+		BC = bcMatD[k];
+
+		if (BC >= GEO_FLUID/*(BC != GEO_SOLID) && (BC != GEO_VOID)*/)
+		{
+			Distributions27 D;
+			if (EvenOrOdd == true)
+			{
+				D.f[dirE] = &DDStart[dirE   *size_Mat];
+				D.f[dirW] = &DDStart[dirW   *size_Mat];
+				D.f[dirN] = &DDStart[dirN   *size_Mat];
+				D.f[dirS] = &DDStart[dirS   *size_Mat];
+				D.f[dirT] = &DDStart[dirT   *size_Mat];
+				D.f[dirB] = &DDStart[dirB   *size_Mat];
+				D.f[dirNE] = &DDStart[dirNE  *size_Mat];
+				D.f[dirSW] = &DDStart[dirSW  *size_Mat];
+				D.f[dirSE] = &DDStart[dirSE  *size_Mat];
+				D.f[dirNW] = &DDStart[dirNW  *size_Mat];
+				D.f[dirTE] = &DDStart[dirTE  *size_Mat];
+				D.f[dirBW] = &DDStart[dirBW  *size_Mat];
+				D.f[dirBE] = &DDStart[dirBE  *size_Mat];
+				D.f[dirTW] = &DDStart[dirTW  *size_Mat];
+				D.f[dirTN] = &DDStart[dirTN  *size_Mat];
+				D.f[dirBS] = &DDStart[dirBS  *size_Mat];
+				D.f[dirBN] = &DDStart[dirBN  *size_Mat];
+				D.f[dirTS] = &DDStart[dirTS  *size_Mat];
+				D.f[dirZERO] = &DDStart[dirZERO*size_Mat];
+				D.f[dirTNE] = &DDStart[dirTNE *size_Mat];
+				D.f[dirTSW] = &DDStart[dirTSW *size_Mat];
+				D.f[dirTSE] = &DDStart[dirTSE *size_Mat];
+				D.f[dirTNW] = &DDStart[dirTNW *size_Mat];
+				D.f[dirBNE] = &DDStart[dirBNE *size_Mat];
+				D.f[dirBSW] = &DDStart[dirBSW *size_Mat];
+				D.f[dirBSE] = &DDStart[dirBSE *size_Mat];
+				D.f[dirBNW] = &DDStart[dirBNW *size_Mat];
+			}
+			else
+			{
+				D.f[dirW] = &DDStart[dirE   *size_Mat];
+				D.f[dirE] = &DDStart[dirW   *size_Mat];
+				D.f[dirS] = &DDStart[dirN   *size_Mat];
+				D.f[dirN] = &DDStart[dirS   *size_Mat];
+				D.f[dirB] = &DDStart[dirT   *size_Mat];
+				D.f[dirT] = &DDStart[dirB   *size_Mat];
+				D.f[dirSW] = &DDStart[dirNE  *size_Mat];
+				D.f[dirNE] = &DDStart[dirSW  *size_Mat];
+				D.f[dirNW] = &DDStart[dirSE  *size_Mat];
+				D.f[dirSE] = &DDStart[dirNW  *size_Mat];
+				D.f[dirBW] = &DDStart[dirTE  *size_Mat];
+				D.f[dirTE] = &DDStart[dirBW  *size_Mat];
+				D.f[dirTW] = &DDStart[dirBE  *size_Mat];
+				D.f[dirBE] = &DDStart[dirTW  *size_Mat];
+				D.f[dirBS] = &DDStart[dirTN  *size_Mat];
+				D.f[dirTN] = &DDStart[dirBS  *size_Mat];
+				D.f[dirTS] = &DDStart[dirBN  *size_Mat];
+				D.f[dirBN] = &DDStart[dirTS  *size_Mat];
+				D.f[dirZERO] = &DDStart[dirZERO*size_Mat];
+				D.f[dirBSW] = &DDStart[dirTNE *size_Mat];
+				D.f[dirBNE] = &DDStart[dirTSW *size_Mat];
+				D.f[dirBNW] = &DDStart[dirTSE *size_Mat];
+				D.f[dirBSE] = &DDStart[dirTNW *size_Mat];
+				D.f[dirTSW] = &DDStart[dirBNE *size_Mat];
+				D.f[dirTNE] = &DDStart[dirBSW *size_Mat];
+				D.f[dirTNW] = &DDStart[dirBSE *size_Mat];
+				D.f[dirTSE] = &DDStart[dirBNW *size_Mat];
+			}
+
+			////////////////////////////////////////////////////////////////////////////////
+			//index
+			//unsigned int kzero= k;
+			//unsigned int ke   = k;
+			unsigned int kw = neighborX[k];
+			//unsigned int kn   = k;
+			unsigned int ks = neighborY[k];
+			//unsigned int kt   = k;
+			unsigned int kb = neighborZ[k];
+			unsigned int ksw = neighborY[kw];
+			//unsigned int kne  = k;
+			//unsigned int kse  = ks;
+			//unsigned int knw  = kw;
+			unsigned int kbw = neighborZ[kw];
+			//unsigned int kte  = k;
+			//unsigned int kbe  = kb;
+			//unsigned int ktw  = kw;
+			unsigned int kbs = neighborZ[ks];
+			//unsigned int ktn  = k;
+			//unsigned int kbn  = kb;
+			//unsigned int kts  = ks;
+			//unsigned int ktse = ks;
+			//unsigned int kbnw = kbw;
+			//unsigned int ktnw = kw;
+			//unsigned int kbse = kbs;
+			//unsigned int ktsw = ksw;
+			//unsigned int kbne = kb;
+			//unsigned int ktne = k;
+			unsigned int kbsw = neighborZ[ksw];
+
+			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			real mfcbb = (D.f[dirE])[k];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW])[kw];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN])[k];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS])[ks];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT])[k];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB])[kb];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE])[k];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE])[ks];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW])[kw];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE])[k];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE])[kb];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW])[kw];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN])[k];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN])[kb];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS])[ks];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE])[k];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE])[ks];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE])[kb];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			////////////////////////////////////////////////////////////////////////////////////
+			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 = one + 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;
+			////////////////////////////////////////////////////////////////////////////////////
+			//the force be with you
+			real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+			real fy = forces[1] / (pow(two, level)); //zero;
+			real fz = forces[2] / (pow(two, level)); //zero;
+			vvx += fx*c1o2;
+			vvy += fy*c1o2;
+			vvz += fz*c1o2;
+			////////////////////////////////////////////////////////////////////////////////////
+			//real omega = omega_in;
+			////////////////////////////////////////////////////////////////////////////////////
+			//fast
+			real oMdrho = one; // 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;
+			//real 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
+			forwardChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, c1o36);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2, c1o9);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c1o36);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2, c1o9);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2, c4o9);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2, c1o9);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c1o36);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2, c1o9);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c1o36);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			// mit  1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren
+			////////////////////////////////////////////////////////////////////////////////////
+			// Y - Dir
+			forwardChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c1o6);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c1o18);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2, c2o3);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2, c2o9);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c1o6);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c1o18);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			// mit     1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9		Konditionieren
+			////////////////////////////////////////////////////////////////////////////////////
+			// X - Dir
+			forwardChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, one);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c1o3);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c1o3);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
+			////////////////////////////////////////////////////////////////////////////////////
+			forwardChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c1o9);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+
+
+			////////////////////////////////////////////////////////////////////////////////////
+			// Cumulants
+			////////////////////////////////////////////////////////////////////////////////////
+			real OxxPyyPzz = one; //omega; // one;	//set the bulk viscosity one is high / two is very low and zero is (too) high
+
+			////////////////////////////////////////////////////////////
+			//3.
+			//////////////////////////////
+			real OxyyPxzz = one;
+			real OxyyMxzz = one;
+			real Oxyz = one;
+			////////////////////////////////////////////////////////////
+			//4.
+			//////////////////////////////
+			real O4 = one;
+			////////////////////////////////////////////////////////////
+			//5.
+			//////////////////////////////
+			real O5 = one;
+			////////////////////////////////////////////////////////////
+			//6.
+			//////////////////////////////
+			real O6 = one;
+			////////////////////////////////////////////////////////////
+
+
+			//central moments to cumulants
+			//4.
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
+
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+			//5.
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
+
+			//6.
+
+			real 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)));
+
+
+
+
+			//2.
+			// linear combinations
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy = mfcaa - mfaca;
+			real mxxMzz = mfcaa - mfaac;
+
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			//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)- 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);
+
+			}
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			////no correction
+			//mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz);//-magicBulk*OxxPyyPzz;
+			//mxxMyy += -(-omega) * (-mxxMyy);
+			//mxxMzz += -(-omega) * (-mxxMzz);
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			mfabb += omega * (-mfabb);
+			mfbab += omega * (-mfbab);
+			mfbba += omega * (-mfbba);
+
+			//////////////////////////////////////////////////////////////////////////
+
+			// linear combinations back
+			mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz);
+			mfaca = c1o3 * (-two*  mxxMyy + mxxMzz + mxxPyyPzz);
+			mfaac = c1o3 * (mxxMyy - two* 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
+			//////////////////////////////////////////////////////////////////////////
+			mfbbb     += OxyyMxzz * (-mfbbb);
+			mxxyPyzz  += OxyyPxzz * (-mxxyPyzz);
+			mxxyMyzz  += OxyyMxzz * (-mxxyMyzz);
+			mxxzPyyz  += OxyyPxzz * (-mxxzPyyz);
+			mxxzMyyz  += OxyyMxzz * (-mxxzMyyz);
+			mxyyPxzz  += OxyyPxzz * (-mxyyPxzz);
+			mxyyMxzz  += OxyyMxzz * (-mxyyMxzz);
+			//////////////////////////////////////////////////////////////////////////
+
+			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) * 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));
+			mfcac = CUMcac + (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+			mfacc = CUMacc + (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+			//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)));
+
+			////////////////////////////////////////////////////////////////////////////////////
+			//the force be with you
+			mfbaa = -mfbaa;
+			mfaba = -mfaba;
+			mfaab = -mfaab;
+			////////////////////////////////////////////////////////////////////////////////////
+
+
+			////////////////////////////////////////////////////////////////////////////////////
+			//back
+			////////////////////////////////////////////////////////////////////////////////////
+			//mit 1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9   Konditionieren
+			////////////////////////////////////////////////////////////////////////////////////
+			// Z - Dir
+			backwardChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, one);
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c1o3);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
+			/////////b//////////////////////////////////////////////////////////////////////////
+			backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
+			/////////b//////////////////////////////////////////////////////////////////////////
+			backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c1o3);
+			/////////c//////////////////////////////////////////////////////////////////////////
+			backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
+			/////////c//////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c1o9);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			//mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18   Konditionieren
+			////////////////////////////////////////////////////////////////////////////////////
+			// Y - Dir
+			backwardChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, c1o6);
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfaab, mfabb, mfacb, vvy, vy2, c2o3);
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c1o6);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimera(mfbaa, mfbba, mfbca, vvz, vz2);
+			/////////b//////////////////////////////////////////////////////////////////////////
+			backwardChimera(mfbab, mfbbb, mfbcb, vvz, vz2);
+			/////////b//////////////////////////////////////////////////////////////////////////
+			backwardChimera(mfbac, mfbbc, mfbcc, vvz, vz2);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, c1o18);
+			/////////c//////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfcab, mfcbb, mfccb, vvy, vy2, c2o9);
+			/////////c//////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c1o18);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			//mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren
+			////////////////////////////////////////////////////////////////////////////////////
+			// X - Dir
+			backwardChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o36);
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfaba, mfbba, mfcba, vvx, vx2, c1o9);
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c1o36);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfaab, mfbab, mfcab, vvx, vx2, c1o9);
+			///////////b////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfabb, mfbbb, mfcbb, vvx, vx2, c4o9);
+			///////////b////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfacb, mfbcb, mfccb, vvx, vx2, c1o9);
+			////////////////////////////////////////////////////////////////////////////////////
+			////////////////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c1o36);
+			///////////c////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfabc, mfbbc, mfcbc, vvx, vx2, c1o9);
+			///////////c////////////////////////////////////////////////////////////////////////
+			backwardChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c1o36);
+			////////////////////////////////////////////////////////////////////////////////////
+
+			//////////////////////////////////////////////////////////////////////////////////////
+			real drhoPost =
+				((((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;
+			mfbbb += drho - drhoPost;
+			////////////////////////////////////////////////////////////////////////////////////
+			(D.f[dirE])[k] = mfabb;//(D.f[ dirE   ])[ke   ] = mfabb;// -  c2over27 ;  (D.f[ dirE   ])[k   ]                                                                     
+			(D.f[dirW])[kw] = mfcbb;//(D.f[ dirW   ])[kw   ] = mfcbb;// -  c2over27 ;  (D.f[ dirW   ])[kw  ]                                                                   
+			(D.f[dirN])[k] = mfbab;//(D.f[ dirN   ])[kn   ] = mfbab;// -  c2over27 ;	 (D.f[ dirN   ])[k   ]
+			(D.f[dirS])[ks] = mfbcb;//(D.f[ dirS   ])[ks   ] = mfbcb;// -  c2over27 ;	 (D.f[ dirS   ])[ks  ]
+			(D.f[dirT])[k] = mfbba;//(D.f[ dirT   ])[kt   ] = mfbba;// -  c2over27 ;	 (D.f[ dirT   ])[k   ]
+			(D.f[dirB])[kb] = mfbbc;//(D.f[ dirB   ])[kb   ] = mfbbc;// -  c2over27 ;	 (D.f[ dirB   ])[kb  ]
+			(D.f[dirNE])[k] = mfaab;//(D.f[ dirNE  ])[kne  ] = mfaab;// -  c1over54 ;	 (D.f[ dirNE  ])[k   ]
+			(D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW  ])[ksw  ] = mfccb;// -  c1over54 ;	 (D.f[ dirSW  ])[ksw ]
+			(D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE  ])[kse  ] = mfacb;// -  c1over54 ;	 (D.f[ dirSE  ])[ks  ]
+			(D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW  ])[knw  ] = mfcab;// -  c1over54 ;	 (D.f[ dirNW  ])[kw  ]
+			(D.f[dirTE])[k] = mfaba;//(D.f[ dirTE  ])[kte  ] = mfaba;// -  c1over54 ;	 (D.f[ dirTE  ])[k   ]
+			(D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW  ])[kbw  ] = mfcbc;// -  c1over54 ;	 (D.f[ dirBW  ])[kbw ]
+			(D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE  ])[kbe  ] = mfabc;// -  c1over54 ;	 (D.f[ dirBE  ])[kb  ]
+			(D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW  ])[ktw  ] = mfcba;// -  c1over54 ;	 (D.f[ dirTW  ])[kw  ]
+			(D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN  ])[ktn  ] = mfbaa;// -  c1over54 ;	 (D.f[ dirTN  ])[k   ]
+			(D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS  ])[kbs  ] = mfbcc;// -  c1over54 ;	 (D.f[ dirBS  ])[kbs ]
+			(D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN  ])[kbn  ] = mfbac;// -  c1over54 ;	 (D.f[ dirBN  ])[kb  ]
+			(D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS  ])[kts  ] = mfbca;// -  c1over54 ;	 (D.f[ dirTS  ])[ks  ]
+			(D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// -  c8over27 ;	 (D.f[ dirZERO])[k   ]
+			(D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// -  c1over216;	 (D.f[ dirTNE ])[k   ]
+			(D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// -  c1over216;	 (D.f[ dirTSE ])[ks  ]
+			(D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// -  c1over216;	 (D.f[ dirBNE ])[kb  ]
+			(D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// -  c1over216;	 (D.f[ dirBSE ])[kbs ]
+			(D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// -  c1over216;	 (D.f[ dirTNW ])[kw  ]
+			(D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// -  c1over216;	 (D.f[ dirTSW ])[ksw ]
+			(D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// -  c1over216;	 (D.f[ dirBNW ])[kbw ]
+			(D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// -  c1over216;	 (D.f[ dirBSW ])[kbsw]
+			////////////////////////////////////////////////////////////////////////////////////
+		}
+	}
+}
+////////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu b/src/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu
new file mode 100644
index 000000000..bc2b4f0d4
--- /dev/null
+++ b/src/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu
@@ -0,0 +1,2112 @@
+//  _    ___      __              __________      _     __        ______________   __
+// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____   /  ___/ __  / /  / /
+// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/  / /___/ /_/ / /  / /
+// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )  / /_) / ____/ /__/ / 
+// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/   \____/_/    \_____/
+//
+//////////////////////////////////////////////////////////////////////////
+/* Device code */
+#include "LBM/D3Q27.h"
+#include "math.h"
+#include "GPU/constant.h"
+
+/////////////////////////////////////////////////////////////////////////////////
+extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3_2018(	real omega,
+															unsigned int* bcMatD,
+															unsigned int* neighborX,
+															unsigned int* neighborY,
+															unsigned int* neighborZ,
+															real* DDStart,
+															real* G6,
+															int size_Mat,
+															int level,
+															real* forces,
+															bool EvenOrOdd)
+{
+	////////////////////////////////////////////////////////////////////////////////
+	const unsigned  x = threadIdx.x;  // Globaler x-Index 
+	const unsigned  y = blockIdx.x;   // Globaler y-Index 
+	const unsigned  z = blockIdx.y;   // Globaler z-Index 
+
+	const unsigned nx = blockDim.x;
+	const unsigned ny = gridDim.x;
+
+	const unsigned k = nx*(ny*z + y) + x;
+	//////////////////////////////////////////////////////////////////////////
+
+	if (k < size_Mat)
+	{
+		////////////////////////////////////////////////////////////////////////////////
+		unsigned int BC;
+		BC = bcMatD[k];
+
+		if ((BC != GEO_SOLID) && (BC != GEO_VOID))
+		{
+			Distributions27 D;
+			if (EvenOrOdd == true)
+			{
+				D.f[dirE] = &DDStart[dirE   *size_Mat];
+				D.f[dirW] = &DDStart[dirW   *size_Mat];
+				D.f[dirN] = &DDStart[dirN   *size_Mat];
+				D.f[dirS] = &DDStart[dirS   *size_Mat];
+				D.f[dirT] = &DDStart[dirT   *size_Mat];
+				D.f[dirB] = &DDStart[dirB   *size_Mat];
+				D.f[dirNE] = &DDStart[dirNE  *size_Mat];
+				D.f[dirSW] = &DDStart[dirSW  *size_Mat];
+				D.f[dirSE] = &DDStart[dirSE  *size_Mat];
+				D.f[dirNW] = &DDStart[dirNW  *size_Mat];
+				D.f[dirTE] = &DDStart[dirTE  *size_Mat];
+				D.f[dirBW] = &DDStart[dirBW  *size_Mat];
+				D.f[dirBE] = &DDStart[dirBE  *size_Mat];
+				D.f[dirTW] = &DDStart[dirTW  *size_Mat];
+				D.f[dirTN] = &DDStart[dirTN  *size_Mat];
+				D.f[dirBS] = &DDStart[dirBS  *size_Mat];
+				D.f[dirBN] = &DDStart[dirBN  *size_Mat];
+				D.f[dirTS] = &DDStart[dirTS  *size_Mat];
+				D.f[dirZERO] = &DDStart[dirZERO*size_Mat];
+				D.f[dirTNE] = &DDStart[dirTNE *size_Mat];
+				D.f[dirTSW] = &DDStart[dirTSW *size_Mat];
+				D.f[dirTSE] = &DDStart[dirTSE *size_Mat];
+				D.f[dirTNW] = &DDStart[dirTNW *size_Mat];
+				D.f[dirBNE] = &DDStart[dirBNE *size_Mat];
+				D.f[dirBSW] = &DDStart[dirBSW *size_Mat];
+				D.f[dirBSE] = &DDStart[dirBSE *size_Mat];
+				D.f[dirBNW] = &DDStart[dirBNW *size_Mat];
+			}
+			else
+			{
+				D.f[dirW] = &DDStart[dirE   *size_Mat];
+				D.f[dirE] = &DDStart[dirW   *size_Mat];
+				D.f[dirS] = &DDStart[dirN   *size_Mat];
+				D.f[dirN] = &DDStart[dirS   *size_Mat];
+				D.f[dirB] = &DDStart[dirT   *size_Mat];
+				D.f[dirT] = &DDStart[dirB   *size_Mat];
+				D.f[dirSW] = &DDStart[dirNE  *size_Mat];
+				D.f[dirNE] = &DDStart[dirSW  *size_Mat];
+				D.f[dirNW] = &DDStart[dirSE  *size_Mat];
+				D.f[dirSE] = &DDStart[dirNW  *size_Mat];
+				D.f[dirBW] = &DDStart[dirTE  *size_Mat];
+				D.f[dirTE] = &DDStart[dirBW  *size_Mat];
+				D.f[dirTW] = &DDStart[dirBE  *size_Mat];
+				D.f[dirBE] = &DDStart[dirTW  *size_Mat];
+				D.f[dirBS] = &DDStart[dirTN  *size_Mat];
+				D.f[dirTN] = &DDStart[dirBS  *size_Mat];
+				D.f[dirTS] = &DDStart[dirBN  *size_Mat];
+				D.f[dirBN] = &DDStart[dirTS  *size_Mat];
+				D.f[dirZERO] = &DDStart[dirZERO*size_Mat];
+				D.f[dirBSW] = &DDStart[dirTNE *size_Mat];
+				D.f[dirBNE] = &DDStart[dirTSW *size_Mat];
+				D.f[dirBNW] = &DDStart[dirTSE *size_Mat];
+				D.f[dirBSE] = &DDStart[dirTNW *size_Mat];
+				D.f[dirTSW] = &DDStart[dirBNE *size_Mat];
+				D.f[dirTNE] = &DDStart[dirBSW *size_Mat];
+				D.f[dirTNW] = &DDStart[dirBSE *size_Mat];
+				D.f[dirTSE] = &DDStart[dirBNW *size_Mat];
+			}
+
+			Distributions6 G;
+			if (EvenOrOdd == true)
+			{
+				G.g[dirE] = &G6[dirE   *size_Mat];
+				G.g[dirW] = &G6[dirW   *size_Mat];
+				G.g[dirN] = &G6[dirN   *size_Mat];
+				G.g[dirS] = &G6[dirS   *size_Mat];
+				G.g[dirT] = &G6[dirT   *size_Mat];
+				G.g[dirB] = &G6[dirB   *size_Mat];
+			}
+			else
+			{
+				G.g[dirW] = &G6[dirE   *size_Mat];
+				G.g[dirE] = &G6[dirW   *size_Mat];
+				G.g[dirS] = &G6[dirN   *size_Mat];
+				G.g[dirN] = &G6[dirS   *size_Mat];
+				G.g[dirB] = &G6[dirT   *size_Mat];
+				G.g[dirT] = &G6[dirB   *size_Mat];
+			}
+
+			////////////////////////////////////////////////////////////////////////////////
+			//index
+			//unsigned int kzero= k;
+			//unsigned int ke   = k;
+			unsigned int kw = neighborX[k];
+			//unsigned int kn   = k;
+			unsigned int ks = neighborY[k];
+			//unsigned int kt   = k;
+			unsigned int kb = neighborZ[k];
+			unsigned int ksw = neighborY[kw];
+			//unsigned int kne  = k;
+			//unsigned int kse  = ks;
+			//unsigned int knw  = kw;
+			unsigned int kbw = neighborZ[kw];
+			//unsigned int kte  = k;
+			//unsigned int kbe  = kb;
+			//unsigned int ktw  = kw;
+			unsigned int kbs = neighborZ[ks];
+			//unsigned int ktn  = k;
+			//unsigned int kbn  = kb;
+			//unsigned int kts  = ks;
+			//unsigned int ktse = ks;
+			//unsigned int kbnw = kbw;
+			//unsigned int ktnw = kw;
+			//unsigned int kbse = kbs;
+			//unsigned int ktsw = ksw;
+			//unsigned int kbne = kb;
+			//unsigned int ktne = k;
+			unsigned int kbsw = neighborZ[ksw];
+			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			real mgcbb = (G.g[dirE])[k];
+			real mgabb = (G.g[dirW])[kw];
+			real mgbcb = (G.g[dirN])[k];
+			real mgbab = (G.g[dirS])[ks];
+			real mgbbc = (G.g[dirT])[k];
+			real mgbba = (G.g[dirB])[kb];
+			real dxuxdxux = c1o2 * (-mgcbb + mgabb);
+			real dyuydyuy = c1o2 * (-mgbcb + mgbab);
+			real dzuzdzuz = c1o2 * (-mgbbc + mgbba);
+			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			real mfcbb = (D.f[dirE])[k];
+			real mfabb = (D.f[dirW])[kw];
+			real mfbcb = (D.f[dirN])[k];
+			real mfbab = (D.f[dirS])[ks];
+			real mfbbc = (D.f[dirT])[k];
+			real mfbba = (D.f[dirB])[kb];
+			real mfccb = (D.f[dirNE])[k];
+			real mfaab = (D.f[dirSW])[ksw];
+			real mfcab = (D.f[dirSE])[ks];
+			real mfacb = (D.f[dirNW])[kw];
+			real mfcbc = (D.f[dirTE])[k];
+			real mfaba = (D.f[dirBW])[kbw];
+			real mfcba = (D.f[dirBE])[kb];
+			real mfabc = (D.f[dirTW])[kw];
+			real mfbcc = (D.f[dirTN])[k];
+			real mfbaa = (D.f[dirBS])[kbs];
+			real mfbca = (D.f[dirBN])[kb];
+			real mfbac = (D.f[dirTS])[ks];
+			real mfbbb = (D.f[dirZERO])[k];
+			real mfccc = (D.f[dirTNE])[k];
+			real mfaac = (D.f[dirTSW])[ksw];
+			real mfcac = (D.f[dirTSE])[ks];
+			real mfacc = (D.f[dirTNW])[kw];
+			real mfcca = (D.f[dirBNE])[kb];
+			real mfaaa = (D.f[dirBSW])[kbsw];
+			real mfcaa = (D.f[dirBSE])[kbs];
+			real mfaca = (D.f[dirBNW])[kbw];
+			////////////////////////////////////////////////////////////////////////////////////
+			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 = one + 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;
+			////////////////////////////////////////////////////////////////////////////////////
+			//the force be with you
+			real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+			real fy = forces[1] / (pow(two, level)); //zero;
+			real fz = forces[2] / (pow(two, level)); //zero;
+			vvx += fx;
+			vvy += fy;
+			vvz += fz;
+			////////////////////////////////////////////////////////////////////////////////////
+			real oMdrho = one; // 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 = 0.01f;// * 0.0001f;
+			real qudricLimitM = 0.01f;// * 0.0001f;
+			real qudricLimitD = 0.01f;// * 0.001f;
+			////////////////////////////////////////////////////////////////////////////////////
+			//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
+			////////////////////////////////////////////////////////////////////////////////////
+			real OxxPyyPzz = one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
+
+			////////////////////////////////////////////////////////////
+			//3.
+			//////////////////////////////
+			real OxyyPxzz = eight*(-two + omega)*(one + two*omega) / (-eight - fourteen*omega + seven*omega*omega);//one;
+			real OxyyMxzz = eight*(-two + omega)*(-seven + four*omega) / (fiftysix - fifty*omega + nine*omega*omega);//one;
+			real Oxyz = twentyfour*(-two + omega)*(-two - seven*omega + three*omega*omega) / (fourtyeight + c152*omega - c130*omega*omega + twentynine*omega*omega*omega);//one;
+			////////////////////////////////////////////////////////////
+			//4.
+			//////////////////////////////
+			real O4 = one;
+			//////////////////////////////
+			//real O4        = omega;//TRT
+			////////////////////////////////////////////////////////////
+			//5.
+			//////////////////////////////
+			real O5 = one;
+			////////////////////////////////////////////////////////////
+			//6.
+			//////////////////////////////
+			real O6 = one;
+			////////////////////////////////////////////////////////////
+
+
+			//central moments to cumulants
+			//4.
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
+
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+			//5.
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
+
+			//6.
+
+			real 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)));
+
+			//2.
+			// linear combinations
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy = mfcaa - mfaca;
+			real mxxMzz = mfcaa - mfaac;
+
+			////////////////////////////////////////////////////////////////////////////
+			real Dxy = -three*omega*mfbba;
+			real Dxz = -three*omega*mfbab;
+			real Dyz = -three*omega*mfabb;
+
+			//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;
+
+			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			//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;
+
+			mgabb = vvx*dxux;
+			mgbab = vvy*dyuy;
+			mgbba = vvz*dzuz;
+			
+			mgcbb = vvx*dxux;
+			mgbcb = vvy*dyuy;
+			mgbbc = vvz*dzuz;
+
+			//relax
+			mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz) - three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz)
+				+ (six - three * (omega + OxxPyyPzz) + omega * OxxPyyPzz) / (three * omega) *
+				(dxuxdxux+ dyuydyuy+ dzuzdzuz);
+			mxxMyy += omega * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy)
+				      +  omega * (two*(one / omega - c1o2) * (one / omega - c1o2) - c1o6) * (dxuxdxux - dyuydyuy );
+			mxxMzz += omega * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz)
+					  + omega * (two*(one / omega - c1o2) * (one / omega - c1o2) - c1o6) *(dxuxdxux - dzuzdzuz);
+
+			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			////no correction
+			//mxxPyyPzz += OxxPyyPzz*(mfaaa-mxxPyyPzz);//-magicBulk*OxxPyyPzz;
+			//mxxMyy    += -(-omega) * (-mxxMyy);
+			//mxxMzz    += -(-omega) * (-mxxMzz);
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			mfabb += omega * (-mfabb);
+			mfbab += omega * (-mfbab);
+			mfbba += omega * (-mfbba);
+			//////////////////////////////////////////////////////////////////////////
+
+			// linear combinations back
+			mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz);
+			mfaca = c1o3 * (-two*  mxxMyy + mxxMzz + mxxPyyPzz);
+			mfaac = c1o3 * (mxxMyy - two* mxxMzz + mxxPyyPzz);
+
+
+			//relax
+			//////////////////////////////////////////////////////////////////////////
+			//das ist der limiter
+			wadjust = Oxyz + (one - Oxyz)*abs(mfbbb) / (abs(mfbbb) + qudricLimitD);
+			mfbbb += wadjust * (-mfbbb);
+			wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxxyPyzz) / (abs(mxxyPyzz) + qudricLimitP);
+			mxxyPyzz += wadjust * (-mxxyPyzz);
+			wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxxyMyzz) / (abs(mxxyMyzz) + qudricLimitM);
+			mxxyMyzz += wadjust * (-mxxyMyzz);
+			wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxxzPyyz) / (abs(mxxzPyyz) + qudricLimitP);
+			mxxzPyyz += wadjust * (-mxxzPyyz);
+			wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxxzMyyz) / (abs(mxxzMyyz) + qudricLimitM);
+			mxxzMyyz += wadjust * (-mxxzMyyz);
+			wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxyyPxzz) / (abs(mxyyPxzz) + qudricLimitP);
+			mxyyPxzz += wadjust * (-mxyyPxzz);
+			wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxyyMxzz) / (abs(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)*abs(CUMacc)/(abs(CUMacc)+qudricLimit);
+			//CUMacc    += wadjust * (-CUMacc);
+			//	wadjust    = O4+(one-O4)*abs(CUMcac)/(abs(CUMcac)+qudricLimit);
+			//CUMcac    += wadjust * (-CUMcac); 
+			//	wadjust    = O4+(one-O4)*abs(CUMcca)/(abs(CUMcca)+qudricLimit);
+			//CUMcca    += wadjust * (-CUMcca); 
+
+			//	wadjust    = O4+(one-O4)*abs(CUMbbc)/(abs(CUMbbc)+qudricLimit);
+			//CUMbbc    += wadjust * (-CUMbbc); 
+			//	wadjust    = O4+(one-O4)*abs(CUMbcb)/(abs(CUMbcb)+qudricLimit);
+			//CUMbcb    += wadjust * (-CUMbcb); 
+			//	wadjust    = O4+(one-O4)*abs(CUMcbb)/(abs(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*(one / omega - c1o2)*(dyuy + dzuz)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMacc);
+			CUMcac = -O4*(one / omega - c1o2)*(dxux + dzuz)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMcac);
+			CUMcca = -O4*(one / omega - c1o2)*(dyuy + dxux)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMcca);
+			CUMbbc = -O4*(one / omega - c1o2)*Dxy*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbbc);
+			CUMbcb = -O4*(one / omega - c1o2)*Dxz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbcb);
+			CUMcbb = -O4*(one / omega - c1o2)*Dyz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - 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));
+			mfcac = CUMcac + (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+			mfacc = CUMacc + (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+			//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)));
+			////////////////////////////////////////////////////////////////////////////////////
+
+			////////////////////////////////////////////////////////////////////////////////////
+			//the force be with you
+			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;
+			////////////////////////////////////////////////////////////////////////////////////
+
+			////////////////////////////////////////////////////////////////////////////////////
+			(D.f[dirE])[k] = mfabb;   
+			(D.f[dirW])[kw] = mfcbb;  
+			(D.f[dirN])[k] = mfbab;   
+			(D.f[dirS])[ks] = mfbcb;  
+			(D.f[dirT])[k] = mfbba;   
+			(D.f[dirB])[kb] = mfbbc;  
+			(D.f[dirNE])[k] = mfaab;  
+			(D.f[dirSW])[ksw] = mfccb;
+			(D.f[dirSE])[ks] = mfacb; 
+			(D.f[dirNW])[kw] = mfcab; 
+			(D.f[dirTE])[k] = mfaba;  
+			(D.f[dirBW])[kbw] = mfcbc;
+			(D.f[dirBE])[kb] = mfabc; 
+			(D.f[dirTW])[kw] = mfcba; 
+			(D.f[dirTN])[k] = mfbaa;  
+			(D.f[dirBS])[kbs] = mfbcc;
+			(D.f[dirBN])[kb] = mfbac; 
+			(D.f[dirTS])[ks] = mfbca; 
+			(D.f[dirZERO])[k] = mfbbb;
+			(D.f[dirTNE])[k] = mfaaa; 
+			(D.f[dirTSE])[ks] = mfaca;
+			(D.f[dirBNE])[kb] = mfaac;
+			(D.f[dirBSE])[kbs] = mfacc;
+			(D.f[dirTNW])[kw] = mfcaa;
+			(D.f[dirTSW])[ksw] = mfcca;
+			(D.f[dirBNW])[kbw] = mfcac;
+			(D.f[dirBSW])[kbsw] = mfccc;
+			////////////////////////////////////////////////////////////////////////////////////
+
+			(G.g[dirE])[k]  = mgabb;                                                               
+			(G.g[dirW])[kw] = mgcbb;                                                              
+			(G.g[dirN])[k]  = mgbab;
+			(G.g[dirS])[ks] = mgbcb;
+			(G.g[dirT])[k]  = mgbba;
+			(G.g[dirB])[kb] = mgbbc;
+		}
+	}
+}
+////////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	real omega,
+														unsigned int* bcMatD,
+														unsigned int* neighborX,
+														unsigned int* neighborY,
+														unsigned int* neighborZ,
+														real* DDStart,
+														real* G6,
+														int size_Mat,
+														int level,
+														real* forces,
+														bool EvenOrOdd)
+{
+	////////////////////////////////////////////////////////////////////////////////
+	const unsigned  x = threadIdx.x;  // Globaler x-Index 
+	const unsigned  y = blockIdx.x;   // Globaler y-Index 
+	const unsigned  z = blockIdx.y;   // Globaler z-Index 
+
+	const unsigned nx = blockDim.x;
+	const unsigned ny = gridDim.x;
+
+	const unsigned k = nx*(ny*z + y) + x;
+	//////////////////////////////////////////////////////////////////////////
+
+	if (k < size_Mat)
+	{
+		////////////////////////////////////////////////////////////////////////////////
+		unsigned int BC;
+		BC = bcMatD[k];
+
+		if ((BC != GEO_SOLID) && (BC != GEO_VOID))
+		{
+			Distributions27 D;
+			if (EvenOrOdd == true)
+			{
+				D.f[dirE] = &DDStart[dirE   *size_Mat];
+				D.f[dirW] = &DDStart[dirW   *size_Mat];
+				D.f[dirN] = &DDStart[dirN   *size_Mat];
+				D.f[dirS] = &DDStart[dirS   *size_Mat];
+				D.f[dirT] = &DDStart[dirT   *size_Mat];
+				D.f[dirB] = &DDStart[dirB   *size_Mat];
+				D.f[dirNE] = &DDStart[dirNE  *size_Mat];
+				D.f[dirSW] = &DDStart[dirSW  *size_Mat];
+				D.f[dirSE] = &DDStart[dirSE  *size_Mat];
+				D.f[dirNW] = &DDStart[dirNW  *size_Mat];
+				D.f[dirTE] = &DDStart[dirTE  *size_Mat];
+				D.f[dirBW] = &DDStart[dirBW  *size_Mat];
+				D.f[dirBE] = &DDStart[dirBE  *size_Mat];
+				D.f[dirTW] = &DDStart[dirTW  *size_Mat];
+				D.f[dirTN] = &DDStart[dirTN  *size_Mat];
+				D.f[dirBS] = &DDStart[dirBS  *size_Mat];
+				D.f[dirBN] = &DDStart[dirBN  *size_Mat];
+				D.f[dirTS] = &DDStart[dirTS  *size_Mat];
+				D.f[dirZERO] = &DDStart[dirZERO*size_Mat];
+				D.f[dirTNE] = &DDStart[dirTNE *size_Mat];
+				D.f[dirTSW] = &DDStart[dirTSW *size_Mat];
+				D.f[dirTSE] = &DDStart[dirTSE *size_Mat];
+				D.f[dirTNW] = &DDStart[dirTNW *size_Mat];
+				D.f[dirBNE] = &DDStart[dirBNE *size_Mat];
+				D.f[dirBSW] = &DDStart[dirBSW *size_Mat];
+				D.f[dirBSE] = &DDStart[dirBSE *size_Mat];
+				D.f[dirBNW] = &DDStart[dirBNW *size_Mat];
+			}
+			else
+			{
+				D.f[dirW] = &DDStart[dirE   *size_Mat];
+				D.f[dirE] = &DDStart[dirW   *size_Mat];
+				D.f[dirS] = &DDStart[dirN   *size_Mat];
+				D.f[dirN] = &DDStart[dirS   *size_Mat];
+				D.f[dirB] = &DDStart[dirT   *size_Mat];
+				D.f[dirT] = &DDStart[dirB   *size_Mat];
+				D.f[dirSW] = &DDStart[dirNE  *size_Mat];
+				D.f[dirNE] = &DDStart[dirSW  *size_Mat];
+				D.f[dirNW] = &DDStart[dirSE  *size_Mat];
+				D.f[dirSE] = &DDStart[dirNW  *size_Mat];
+				D.f[dirBW] = &DDStart[dirTE  *size_Mat];
+				D.f[dirTE] = &DDStart[dirBW  *size_Mat];
+				D.f[dirTW] = &DDStart[dirBE  *size_Mat];
+				D.f[dirBE] = &DDStart[dirTW  *size_Mat];
+				D.f[dirBS] = &DDStart[dirTN  *size_Mat];
+				D.f[dirTN] = &DDStart[dirBS  *size_Mat];
+				D.f[dirTS] = &DDStart[dirBN  *size_Mat];
+				D.f[dirBN] = &DDStart[dirTS  *size_Mat];
+				D.f[dirZERO] = &DDStart[dirZERO*size_Mat];
+				D.f[dirBSW] = &DDStart[dirTNE *size_Mat];
+				D.f[dirBNE] = &DDStart[dirTSW *size_Mat];
+				D.f[dirBNW] = &DDStart[dirTSE *size_Mat];
+				D.f[dirBSE] = &DDStart[dirTNW *size_Mat];
+				D.f[dirTSW] = &DDStart[dirBNE *size_Mat];
+				D.f[dirTNE] = &DDStart[dirBSW *size_Mat];
+				D.f[dirTNW] = &DDStart[dirBSE *size_Mat];
+				D.f[dirTSE] = &DDStart[dirBNW *size_Mat];
+			}
+
+			Distributions6 G;
+			if (EvenOrOdd == true)
+			{
+				G.g[dirE] = &G6[dirE   *size_Mat];
+				G.g[dirW] = &G6[dirW   *size_Mat];
+				G.g[dirN] = &G6[dirN   *size_Mat];
+				G.g[dirS] = &G6[dirS   *size_Mat];
+				G.g[dirT] = &G6[dirT   *size_Mat];
+				G.g[dirB] = &G6[dirB   *size_Mat];
+			}
+			else
+			{
+				G.g[dirW] = &G6[dirE   *size_Mat];
+				G.g[dirE] = &G6[dirW   *size_Mat];
+				G.g[dirS] = &G6[dirN   *size_Mat];
+				G.g[dirN] = &G6[dirS   *size_Mat];
+				G.g[dirB] = &G6[dirT   *size_Mat];
+				G.g[dirT] = &G6[dirB   *size_Mat];
+			}
+
+			////////////////////////////////////////////////////////////////////////////////
+			//index
+			//unsigned int kzero= k;
+			//unsigned int ke   = k;
+			unsigned int kw = neighborX[k];
+			//unsigned int kn   = k;
+			unsigned int ks = neighborY[k];
+			//unsigned int kt   = k;
+			unsigned int kb = neighborZ[k];
+			unsigned int ksw = neighborY[kw];
+			//unsigned int kne  = k;
+			//unsigned int kse  = ks;
+			//unsigned int knw  = kw;
+			unsigned int kbw = neighborZ[kw];
+			//unsigned int kte  = k;
+			//unsigned int kbe  = kb;
+			//unsigned int ktw  = kw;
+			unsigned int kbs = neighborZ[ks];
+			//unsigned int ktn  = k;
+			//unsigned int kbn  = kb;
+			//unsigned int kts  = ks;
+			//unsigned int ktse = ks;
+			//unsigned int kbnw = kbw;
+			//unsigned int ktnw = kw;
+			//unsigned int kbse = kbs;
+			//unsigned int ktsw = ksw;
+			//unsigned int kbne = kb;
+			//unsigned int ktne = k;
+			unsigned int kbsw = neighborZ[ksw];
+
+			//unsigned int kzero= k;
+			//unsigned int ke   = k;
+			//unsigned int kw   = neighborX[k];
+			//unsigned int kn   = k;
+			//unsigned int ks   = neighborY[k];
+			//unsigned int kt   = k;
+			//unsigned int kb   = neighborZ[k];
+			//unsigned int ksw  = neighborY[kw];
+			//unsigned int kne  = k;
+			//unsigned int kse  = ks;
+			//unsigned int knw  = kw;
+			//unsigned int kbw  = neighborZ[kw];
+			//unsigned int kte  = k;
+			//unsigned int kbe  = kb;
+			//unsigned int ktw  = kw;
+			//unsigned int kbs  = neighborZ[ks];
+			//unsigned int ktn  = k;
+			//unsigned int kbn  = kb;
+			//unsigned int kts  = ks;
+			//unsigned int ktse = ks;
+			//unsigned int kbnw = kbw;
+			//unsigned int ktnw = kw;
+			//unsigned int kbse = kbs;
+			//unsigned int ktsw = ksw;
+			//unsigned int kbne = kb;
+			//unsigned int ktne = k;
+			//unsigned int kbsw = neighborZ[ksw];
+			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			real mgcbb = (G.g[dirE])[k];
+			real mgabb = (G.g[dirW])[kw];
+			real mgbcb = (G.g[dirN])[k];
+			real mgbab = (G.g[dirS])[ks];
+			real mgbbc = (G.g[dirT])[k];
+			real mgbba = (G.g[dirB])[kb];
+			real dxxux = c1o2 * (-mgcbb + mgabb);
+			real dyyuy = c1o2 * (-mgbcb + mgbab);
+			real dzzuz = c1o2 * (-mgbbc + mgbba);
+			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			real mfcbb = (D.f[dirE])[k];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW])[kw];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN])[k];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS])[ks];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT])[k];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB])[kb];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE])[k];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE])[ks];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW])[kw];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE])[k];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE])[kb];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW])[kw];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN])[k];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN])[kb];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS])[ks];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE])[k];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE])[ks];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE])[kb];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			////////////////////////////////////////////////////////////////////////////////////
+			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 = one + drho;
+			////////////////////////////////////////////////////////////////////////////////////
+			//slow
+			//real oMdrho = one - ((((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)));//fehlt mfbbb
+			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;
+			////////////////////////////////////////////////////////////////////////////////////
+			//the force be with you
+			real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+			real fy = forces[1] / (pow(two, level)); //zero;
+			real fz = forces[2] / (pow(two, level)); //zero;
+			vvx += fx;
+			vvy += fy;
+			vvz += fz;
+			////////////////////////////////////////////////////////////////////////////////////
+			//real omega = omega_in;
+			////////////////////////////////////////////////////////////////////////////////////
+			//fast
+			real oMdrho = one; // comp special
+								  //real oMdrho = one - (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);//fehlt mfbbb nicht mehr
+								  //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;
+								  ////////////////////////////////////////////////////////////////////////////////////
+								  // oMdrho assembler style -------> faaaaaastaaaa
+								  // or much sloooowaaaa ... it depändssssss on sadaku
+			real m0, m1, m2;
+			//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 = one - (oMdrho + m0);
+			//}
+			//real vvx;
+			real vx2;
+			//{
+			//	vvx = mfccc-mfaaa;
+			//	m0  = mfcac-mfaca;
+			//	m1  = mfcaa-mfacc;
+			//	m2  = mfcca-mfaac;
+			//	vvx+= m0;
+			//	m1 += m2;
+			//	vvx+= m1;
+			//	vx2 = mfcba-mfabc;
+			//	m0  = mfcbc-mfaba;
+			//	m1  = mfcab-mfacb;
+			//	m2  = mfccb-mfaab;
+			//	vx2+= m0;
+			//	m1 += m2;
+			//	vx2+= m1;
+			//	vvx+= vx2;
+			//	vx2 = mfcbb-mfabb;
+			//	vvx+= vx2;
+			//}
+			//real vvy;
+			real vy2;
+			//{
+			//	vvy = mfccc-mfaaa;
+			//	m0  = mfaca-mfcac;
+			//	m1  = mfacc-mfcaa;
+			//	m2  = mfcca-mfaac;
+			//	vvy+= m0;
+			//	m1 += m2;
+			//	vvy+= m1;
+			//	vy2 = mfbca-mfbac;
+			//	m0  = mfbcc-mfbaa;
+			//	m1  = mfacb-mfcab;
+			//	m2  = mfccb-mfaab;
+			//	vy2+= m0;
+			//	m1 += m2;
+			//	vy2+= m1;
+			//	vvy+= vy2;
+			//	vy2 = mfbcb-mfbab;
+			//	vvy+= vy2;
+			//}
+			//real vvz;
+			real vz2;
+			//{
+			//	vvz = mfccc-mfaaa;
+			//	m0  = mfcac-mfaca;
+			//	m1  = mfacc-mfcaa;
+			//	m2  = mfaac-mfcca;
+			//	vvz+= m0;
+			//	m1 += m2;
+			//	vvz+= m1;
+			//	vz2 = mfbac-mfbca;
+			//	m0  = mfbcc-mfbaa;
+			//	m1  = mfabc-mfcba;
+			//	m2  = mfcbc-mfaba;
+			//	vz2+= m0;
+			//	m1 += m2;
+			//	vz2+= m1;
+			//	vvz+= vz2;
+			//	vz2 = mfbbc-mfbba;
+			//	vvz+= vz2;
+			//}
+			vx2 = vvx*vvx;
+			vy2 = vvy*vvy;
+			vz2 = vvz*vvz;
+			////////////////////////////////////////////////////////////////////////////////////
+			real wadjust;
+			real qudricLimitP = 0.01f;// * 0.0001f;
+			real qudricLimitM = 0.01f;// * 0.0001f;
+			real qudricLimitD = 0.01f;// * 0.001f;
+										 ////////////////////////////////////////////////////////////////////////////////////
+										 //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
+			////////////////////////////////////////////////////////////////////////////////////
+			real OxxPyyPzz = one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
+
+			////////////////////////////////////////////////////////////
+			//3.
+			//////////////////////////////
+			real OxyyPxzz = eight*(-two + omega)*(one + two*omega) / (-eight - fourteen*omega + seven*omega*omega);//one;
+			real OxyyMxzz = eight*(-two + omega)*(-seven + four*omega) / (fiftysix - fifty*omega + nine*omega*omega);//one;
+			real Oxyz = twentyfour*(-two + omega)*(-two - seven*omega + three*omega*omega) / (fourtyeight + c152*omega - c130*omega*omega + twentynine*omega*omega*omega);//one;
+			////////////////////////////////////////////////////////////
+			//4.
+			//////////////////////////////
+			real O4 = one;
+			//////////////////////////////
+			//real O4        = omega;//TRT
+			////////////////////////////////////////////////////////////
+			//5.
+			//////////////////////////////
+			real O5 = one;
+			////////////////////////////////////////////////////////////
+			//6.
+			//////////////////////////////
+			real O6 = one;
+			////////////////////////////////////////////////////////////
+
+
+			//central moments to cumulants
+			//4.
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
+
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+			//5.
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
+
+			//6.
+
+			real 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)));
+
+			//2.
+			// linear combinations
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy = mfcaa - mfaca;
+			real mxxMzz = mfcaa - mfaac;
+
+			////////////////////////////////////////////////////////////////////////////
+			real Dxy = -three*omega*mfbba;
+			real Dxz = -three*omega*mfbab;
+			real Dyz = -three*omega*mfabb;
+
+			//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;
+
+			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			//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;
+
+			mgabb = dxux;
+			mgbab = dyuy;
+			mgbba = dzuz;
+			
+			mgcbb = dxux;
+			mgbcb = dyuy;
+			mgbbc = dzuz;
+
+			//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);
+			mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz) - three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz)
+					  + (six - three * (omega + OxxPyyPzz) + omega * OxxPyyPzz) / (three * omega) * ((dxux * dxux + dyuy * dyuy + dzuz * dzuz) / rho + vvx * dxxux + vvy * dyyuy + vvz * dzzuz);
+			mxxMyy += omega * (-mxxMyy) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy)
+				      +  omega * (two*(one / omega - c1o2) * (one / omega - c1o2) - c1o6) * ((dxux * dxux - dyuy * dyuy) / rho + vvx * dxxux - vvy * dyyuy);
+			mxxMzz += omega * (-mxxMzz) - three * (one + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz)
+					  + omega * (two*(one / omega - c1o2) * (one / omega - c1o2) - c1o6) * ((dxux * dxux - dzuz * dzuz) / rho + vvx * dxxux - vvz * dzzuz);
+
+			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			////no correction
+			//mxxPyyPzz += OxxPyyPzz*(mfaaa-mxxPyyPzz);//-magicBulk*OxxPyyPzz;
+			//mxxMyy    += -(-omega) * (-mxxMyy);
+			//mxxMzz    += -(-omega) * (-mxxMzz);
+			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+			mfabb += omega * (-mfabb);
+			mfbab += omega * (-mfbab);
+			mfbba += omega * (-mfbba);
+			//////////////////////////////////////////////////////////////////////////
+
+			// linear combinations back
+			mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz);
+			mfaca = c1o3 * (-two*  mxxMyy + mxxMzz + mxxPyyPzz);
+			mfaac = c1o3 * (mxxMyy - two* mxxMzz + mxxPyyPzz);
+
+
+			//relax
+			//////////////////////////////////////////////////////////////////////////
+			//das ist der limiter
+			wadjust = Oxyz + (one - Oxyz)*abs(mfbbb) / (abs(mfbbb) + qudricLimitD);
+			mfbbb += wadjust * (-mfbbb);
+			wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxxyPyzz) / (abs(mxxyPyzz) + qudricLimitP);
+			mxxyPyzz += wadjust * (-mxxyPyzz);
+			wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxxyMyzz) / (abs(mxxyMyzz) + qudricLimitM);
+			mxxyMyzz += wadjust * (-mxxyMyzz);
+			wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxxzPyyz) / (abs(mxxzPyyz) + qudricLimitP);
+			mxxzPyyz += wadjust * (-mxxzPyyz);
+			wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxxzMyyz) / (abs(mxxzMyyz) + qudricLimitM);
+			mxxzMyyz += wadjust * (-mxxzMyyz);
+			wadjust = OxyyPxzz + (one - OxyyPxzz)*abs(mxyyPxzz) / (abs(mxyyPxzz) + qudricLimitP);
+			mxyyPxzz += wadjust * (-mxyyPxzz);
+			wadjust = OxyyMxzz + (one - OxyyMxzz)*abs(mxyyMxzz) / (abs(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)*abs(CUMacc)/(abs(CUMacc)+qudricLimit);
+			//CUMacc    += wadjust * (-CUMacc);
+			//	wadjust    = O4+(one-O4)*abs(CUMcac)/(abs(CUMcac)+qudricLimit);
+			//CUMcac    += wadjust * (-CUMcac); 
+			//	wadjust    = O4+(one-O4)*abs(CUMcca)/(abs(CUMcca)+qudricLimit);
+			//CUMcca    += wadjust * (-CUMcca); 
+
+			//	wadjust    = O4+(one-O4)*abs(CUMbbc)/(abs(CUMbbc)+qudricLimit);
+			//CUMbbc    += wadjust * (-CUMbbc); 
+			//	wadjust    = O4+(one-O4)*abs(CUMbcb)/(abs(CUMbcb)+qudricLimit);
+			//CUMbcb    += wadjust * (-CUMbcb); 
+			//	wadjust    = O4+(one-O4)*abs(CUMcbb)/(abs(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*(one / omega - c1o2)*(dyuy + dzuz)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMacc);
+			CUMcac = -O4*(one / omega - c1o2)*(dxux + dzuz)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMcac);
+			CUMcca = -O4*(one / omega - c1o2)*(dyuy + dxux)*c2o3 *(four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega) + (one - O4) * (CUMcca);
+			CUMbbc = -O4*(one / omega - c1o2)*Dxy*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbbc);
+			CUMbcb = -O4*(one / omega - c1o2)*Dxz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbcb);
+			CUMcbb = -O4*(one / omega - c1o2)*Dyz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - 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));
+			mfcac = CUMcac + (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+			mfacc = CUMacc + (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+			//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)));
+			////////////////////////////////////////////////////////////////////////////////////
+
+			////////////////////////////////////////////////////////////////////////////////////
+			//the force be with you
+			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;
+			////////////////////////////////////////////////////////////////////////////////////
+
+			////////////////////////////////////////////////////////////////////////////////////
+			(D.f[dirE])[k] = mfabb;//(D.f[ dirE   ])[ke   ] = mfabb;// -  c2over27 ;  (D.f[ dirE   ])[k   ]                                                                     
+			(D.f[dirW])[kw] = mfcbb;//(D.f[ dirW   ])[kw   ] = mfcbb;// -  c2over27 ;  (D.f[ dirW   ])[kw  ]                                                                   
+			(D.f[dirN])[k] = mfbab;//(D.f[ dirN   ])[kn   ] = mfbab;// -  c2over27 ;	 (D.f[ dirN   ])[k   ]
+			(D.f[dirS])[ks] = mfbcb;//(D.f[ dirS   ])[ks   ] = mfbcb;// -  c2over27 ;	 (D.f[ dirS   ])[ks  ]
+			(D.f[dirT])[k] = mfbba;//(D.f[ dirT   ])[kt   ] = mfbba;// -  c2over27 ;	 (D.f[ dirT   ])[k   ]
+			(D.f[dirB])[kb] = mfbbc;//(D.f[ dirB   ])[kb   ] = mfbbc;// -  c2over27 ;	 (D.f[ dirB   ])[kb  ]
+			(D.f[dirNE])[k] = mfaab;//(D.f[ dirNE  ])[kne  ] = mfaab;// -  c1over54 ;	 (D.f[ dirNE  ])[k   ]
+			(D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW  ])[ksw  ] = mfccb;// -  c1over54 ;	 (D.f[ dirSW  ])[ksw ]
+			(D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE  ])[kse  ] = mfacb;// -  c1over54 ;	 (D.f[ dirSE  ])[ks  ]
+			(D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW  ])[knw  ] = mfcab;// -  c1over54 ;	 (D.f[ dirNW  ])[kw  ]
+			(D.f[dirTE])[k] = mfaba;//(D.f[ dirTE  ])[kte  ] = mfaba;// -  c1over54 ;	 (D.f[ dirTE  ])[k   ]
+			(D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW  ])[kbw  ] = mfcbc;// -  c1over54 ;	 (D.f[ dirBW  ])[kbw ]
+			(D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE  ])[kbe  ] = mfabc;// -  c1over54 ;	 (D.f[ dirBE  ])[kb  ]
+			(D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW  ])[ktw  ] = mfcba;// -  c1over54 ;	 (D.f[ dirTW  ])[kw  ]
+			(D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN  ])[ktn  ] = mfbaa;// -  c1over54 ;	 (D.f[ dirTN  ])[k   ]
+			(D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS  ])[kbs  ] = mfbcc;// -  c1over54 ;	 (D.f[ dirBS  ])[kbs ]
+			(D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN  ])[kbn  ] = mfbac;// -  c1over54 ;	 (D.f[ dirBN  ])[kb  ]
+			(D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS  ])[kts  ] = mfbca;// -  c1over54 ;	 (D.f[ dirTS  ])[ks  ]
+			(D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// -  c8over27 ;	 (D.f[ dirZERO])[k   ]
+			(D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// -  c1over216;	 (D.f[ dirTNE ])[k   ]
+			(D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// -  c1over216;	 (D.f[ dirTSE ])[ks  ]
+			(D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// -  c1over216;	 (D.f[ dirBNE ])[kb  ]
+			(D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// -  c1over216;	 (D.f[ dirBSE ])[kbs ]
+			(D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// -  c1over216;	 (D.f[ dirTNW ])[kw  ]
+			(D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// -  c1over216;	 (D.f[ dirTSW ])[ksw ]
+			(D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// -  c1over216;	 (D.f[ dirBNW ])[kbw ]
+			(D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// -  c1over216;	 (D.f[ dirBSW ])[kbsw]
+			////////////////////////////////////////////////////////////////////////////////////
+
+			(G.g[dirE])[k]  = mgabb;                                                               
+			(G.g[dirW])[kw] = mgcbb;                                                              
+			(G.g[dirN])[k]  = mgbab;
+			(G.g[dirS])[ks] = mgbcb;
+			(G.g[dirT])[k]  = mgbba;
+			(G.g[dirB])[kb] = mgbbc;
+		}
+	}
+}
+////////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/VirtualFluids_GPU/GPU/GPU_Interface.h b/src/VirtualFluids_GPU/GPU/GPU_Interface.h
index 4e6fd7fd1..143e67ca5 100644
--- a/src/VirtualFluids_GPU/GPU/GPU_Interface.h
+++ b/src/VirtualFluids_GPU/GPU/GPU_Interface.h
@@ -138,6 +138,19 @@ extern "C" void KernelCumulantD3Q27All4(unsigned int numberOfThreads,
 									    real* forces,
 									    bool EvenOrOdd);
 
+extern "C" void KernelCumulantD3Q27F3_2018( unsigned int numberOfThreads,
+											real s9,
+											unsigned int* bcMatD,
+											unsigned int* neighborX,
+											unsigned int* neighborY,
+											unsigned int* neighborZ,
+											real* DD,
+											real* F3,
+											int size_Mat,
+											int level,
+											real* forces,
+											bool EvenOrOdd);
+
 extern "C" void KernelCumulantD3Q27F3(unsigned int numberOfThreads,
 									  real s9,
 									  unsigned int* bcMatD,
@@ -259,6 +272,49 @@ extern "C" void KernelKumNewCompSP27(   unsigned int numberOfThreads,
 										real* forces,
 										bool EvenOrOdd);
 
+extern "C" void CumulantOnePreconditionedErrorDiffusionChimCompSP27(
+	unsigned int numberOfThreads,
+	real s9,
+	unsigned int* bcMatD,
+	unsigned int* neighborX,
+	unsigned int* neighborY,
+	unsigned int* neighborZ,
+	real* DD,
+	int size_Mat,
+	int size_Array,
+	int level,
+	real* forces,
+	bool EvenOrOdd);
+
+extern "C" void CumulantOnePreconditionedChimCompSP27(
+	unsigned int numberOfThreads,
+	real s9,
+	unsigned int* bcMatD,
+	unsigned int* neighborX,
+	unsigned int* neighborY,
+	unsigned int* neighborZ,
+	real* DD,
+	int size_Mat,
+	int size_Array,
+	int level,
+	real* forces,
+	bool EvenOrOdd);
+
+extern "C" void CumulantOneChimCompSP27(
+	unsigned int numberOfThreads,
+	real s9,
+	unsigned int* bcMatD,
+	unsigned int* neighborX,
+	unsigned int* neighborY,
+	unsigned int* neighborZ,
+	real* DD,
+	int size_Mat,
+	int size_Array,
+	int level,
+	real* forces,
+	bool EvenOrOdd);
+
+
 extern "C" void KernelKumIsoTestSP27(unsigned int numberOfThreads, 
 									 real s9,
 									 unsigned int* bcMatD,
@@ -1918,6 +1974,31 @@ extern "C" void ScaleCF_0817_comp_27(  real* DC,
 									   unsigned int numberOfThreads,
 									   OffCF offCF);
 
+extern "C" void ScaleCF_comp_D3Q27F3_2018(	real* DC,
+											real* DF,
+											real* G6, 
+											unsigned int* neighborCX,
+											unsigned int* neighborCY,
+											unsigned int* neighborCZ,
+											unsigned int* neighborFX,
+											unsigned int* neighborFY,
+											unsigned int* neighborFZ,
+											unsigned int size_MatC, 
+											unsigned int size_MatF, 
+											bool evenOrOdd,
+											unsigned int* posCSWB, 
+											unsigned int* posFSWB, 
+											unsigned int kCF, 
+											real omCoarse, 
+											real omFine, 
+											real nu, 
+											unsigned int nxC, 
+											unsigned int nyC, 
+											unsigned int nxF, 
+											unsigned int nyF,
+											unsigned int numberOfThreads,
+											OffCF offCF);
+
 extern "C" void ScaleCF_comp_D3Q27F3(real* DC,
 									 real* DF,
 									 real* G6, 
@@ -2135,6 +2216,31 @@ extern "C" void ScaleFC_0817_comp_27(  real* DC,
 									   unsigned int numberOfThreads,
 									   OffFC offFC);
 
+extern "C" void ScaleFC_comp_D3Q27F3_2018(real* DC,
+										  real* DF,
+										  real* G6,
+										  unsigned int* neighborCX,
+										  unsigned int* neighborCY,
+										  unsigned int* neighborCZ,
+										  unsigned int* neighborFX,
+										  unsigned int* neighborFY,
+										  unsigned int* neighborFZ,
+										  unsigned int size_MatC, 
+										  unsigned int size_MatF, 
+										  bool evenOrOdd,
+										  unsigned int* posC, 
+										  unsigned int* posFSWB, 
+										  unsigned int kFC, 
+										  real omCoarse, 
+										  real omFine, 
+										  real nu, 
+										  unsigned int nxC, 
+										  unsigned int nyC, 
+										  unsigned int nxF, 
+										  unsigned int nyF,
+										  unsigned int numberOfThreads,
+										  OffFC offFC);
+
 extern "C" void ScaleFC_comp_D3Q27F3( real* DC,
 									  real* DF,
 									  real* G6,
diff --git a/src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh b/src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh
index f41c0b4a9..6ffcadf4a 100644
--- a/src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh
+++ b/src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh
@@ -122,6 +122,18 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(real omega,
 														real* forces,
 														bool EvenOrOdd);
 
+extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3_2018(	real omega,
+															unsigned int* bcMatD,
+															unsigned int* neighborX,
+															unsigned int* neighborY,
+															unsigned int* neighborZ,
+															real* DDStart,
+															real* F3,
+															int size_Mat,
+															int level,
+															real* forces,
+															bool EvenOrOdd);
+
 extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	real omega,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
@@ -253,6 +265,53 @@ extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27(real s9,
 													int size_Mat,
 													bool EvenOrOdd);
 
+
+extern "C" __global__ void Cumulant_One_preconditioned_errorDiffusion_chim_Comp_SP_27(
+	real omega,
+	unsigned int* bcMatD,
+	unsigned int* neighborX,
+	unsigned int* neighborY,
+	unsigned int* neighborZ,
+	real* DDStart,
+	int size_Mat,
+	int level,
+	real* forces,
+	bool EvenOrOdd);
+
+extern "C" __global__ void Cumulant_One_preconditioned_chim_Comp_SP_27(
+	real omega,
+	unsigned int* bcMatD,
+	unsigned int* neighborX,
+	unsigned int* neighborY,
+	unsigned int* neighborZ,
+	real* DDStart,
+	int size_Mat,
+	int level,
+	real* forces,
+	bool EvenOrOdd);
+	
+extern "C" __global__ void Cumulant_One_chim_Comp_SP_27(
+	real omega,
+	unsigned int* bcMatD,
+	unsigned int* neighborX,
+	unsigned int* neighborY,
+	unsigned int* neighborZ,
+	real* DDStart,
+	int size_Mat,
+	int level,
+	real* forces,
+	bool EvenOrOdd);
+
+inline __device__ void forwardChimeraWithK(real &mfa, real &mfb, real &mfc, real vv, real v2, real K);
+
+inline __device__ void forwardChimera(real &mfa, real &mfb, real &mfc, real vv, real v2);
+
+inline __device__ void backwardChimera(real &mfa, real &mfb, real &mfc, real vv, real v2);
+
+inline __device__ void backwardChimeraWithK(real &mfa, real &mfb, real &mfc, real vv, real v2, real K);
+
+
+
 extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(real omega,
 															 unsigned int* bcMatD,
 															 unsigned int* neighborX,
@@ -1713,6 +1772,30 @@ extern "C" __global__ void scaleCF_0817_comp_27(  real* DC,
 												  unsigned int nyF,
 												  OffCF offCF);
 
+extern "C" __global__ void scaleCF_comp_D3Q27F3_2018( real* DC,
+													  real* DF,
+													  real* G6,
+													  unsigned int* neighborCX,
+													  unsigned int* neighborCY,
+													  unsigned int* neighborCZ,
+													  unsigned int* neighborFX,
+													  unsigned int* neighborFY,
+													  unsigned int* neighborFZ,
+													  unsigned int size_MatC, 
+													  unsigned int size_MatF, 
+													  bool evenOrOdd,
+													  unsigned int* posCSWB, 
+													  unsigned int* posFSWB, 
+													  unsigned int kCF, 
+													  real omCoarse, 
+													  real omFine, 
+													  real nu, 
+													  unsigned int nxC, 
+													  unsigned int nyC, 
+													  unsigned int nxF, 
+													  unsigned int nyF,
+													  OffCF offCF);
+
 extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC,
 												 real* DF,
 												 real* G6,
@@ -2073,6 +2156,30 @@ extern "C" __global__ void scaleFC_0817_comp_27(  real* DC,
 												  unsigned int nyF,
 												  OffFC offFC);
 
+extern "C" __global__ void scaleFC_comp_D3Q27F3_2018( real* DC,
+													  real* DF,
+													  real* G6,
+													  unsigned int* neighborCX,
+													  unsigned int* neighborCY,
+													  unsigned int* neighborCZ,
+													  unsigned int* neighborFX,
+													  unsigned int* neighborFY,
+													  unsigned int* neighborFZ,
+													  unsigned int size_MatC, 
+													  unsigned int size_MatF, 
+													  bool evenOrOdd,
+													  unsigned int* posC, 
+													  unsigned int* posFSWB, 
+													  unsigned int kFC, 
+													  real omCoarse, 
+													  real omFine, 
+													  real nu, 
+													  unsigned int nxC, 
+													  unsigned int nyC, 
+													  unsigned int nxF, 
+													  unsigned int nyF,
+													  OffFC offFC);
+
 extern "C" __global__ void scaleFC_comp_D3Q27F3( real* DC,
 												 real* DF,
 												 real* G6,
diff --git a/src/VirtualFluids_GPU/GPU/LBMKernel.cu b/src/VirtualFluids_GPU/GPU/LBMKernel.cu
index 27fe37027..bf44e0995 100644
--- a/src/VirtualFluids_GPU/GPU/LBMKernel.cu
+++ b/src/VirtualFluids_GPU/GPU/LBMKernel.cu
@@ -438,6 +438,48 @@ extern "C" void KernelCumulantD3Q27All4(unsigned int numberOfThreads,
 		getLastCudaError("LB_Kernel_Cumulant_D3Q27All4 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
+extern "C" void KernelCumulantD3Q27F3_2018( unsigned int numberOfThreads,
+											real s9,
+											unsigned int* bcMatD,
+											unsigned int* neighborX,
+											unsigned int* neighborY,
+											unsigned int* neighborZ,
+											real* DD,
+											real* F3,
+											int size_Mat,
+											int level,
+											real* forces,
+											bool EvenOrOdd)
+{
+	int Grid = (size_Mat / numberOfThreads)+1;
+	int Grid1, Grid2;
+	if (Grid>512)
+	{
+		Grid1 = 512;
+		Grid2 = (Grid/Grid1)+1;
+	} 
+	else
+	{
+		Grid1 = 1;
+		Grid2 = Grid;
+	}
+	dim3 grid(Grid1, Grid2);
+	dim3 threads(numberOfThreads, 1, 1 );
+
+	LB_Kernel_Cumulant_D3Q27F3_2018 <<< grid, threads >>>(  s9,
+															bcMatD,
+															neighborX,
+															neighborY,
+															neighborZ,
+															DD,
+															F3,
+															size_Mat,
+															level,
+															forces,
+															EvenOrOdd); 
+		getLastCudaError("LB_Kernel_Cumulant_D3Q27F3_2018 execution failed"); 
+}
+//////////////////////////////////////////////////////////////////////////
 extern "C" void KernelCumulantD3Q27F3(unsigned int numberOfThreads,
 									  real s9,
 									  unsigned int* bcMatD,
@@ -831,6 +873,141 @@ extern "C" void KernelKumNewCompSP27(unsigned int numberOfThreads,
 		getLastCudaError("LB_Kernel_Kum_New_Comp_SP_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
+extern "C" void CumulantOnePreconditionedErrorDiffusionChimCompSP27(unsigned int numberOfThreads,
+																	real s9,
+																	unsigned int* bcMatD,
+																	unsigned int* neighborX,
+																	unsigned int* neighborY,
+																	unsigned int* neighborZ,
+																	real* DD,
+																	int size_Mat,
+																	int size_Array,
+																	int level,
+																	real* forces,
+																	bool EvenOrOdd)
+{
+	//int Grid = size_Array / numberOfThreads;
+	//dim3 grid(Grid, 1, 1);
+	//dim3 threads(numberOfThreads, 1, 1 );
+
+	int Grid = (size_Mat / numberOfThreads) + 1;
+	int Grid1, Grid2;
+	if (Grid > 512)
+	{
+		Grid1 = 512;
+		Grid2 = (Grid / Grid1) + 1;
+	}
+	else
+	{
+		Grid1 = 1;
+		Grid2 = Grid;
+	}
+	dim3 grid(Grid1, Grid2, 1);
+	dim3 threads(numberOfThreads, 1, 1);
+
+	Cumulant_One_preconditioned_errorDiffusion_chim_Comp_SP_27 <<< grid, threads >>>(	s9,
+																						bcMatD,
+																						neighborX,
+																						neighborY,
+																						neighborZ,
+																						DD,
+																						size_Mat,
+																						level,
+																						forces,
+																						EvenOrOdd); 
+		getLastCudaError("Cumulant_One_preconditioned_chim_Comp_SP_27 execution failed"); 
+}
+//////////////////////////////////////////////////////////////////////////
+extern "C" void CumulantOnePreconditionedChimCompSP27(  unsigned int numberOfThreads,
+														real s9,
+														unsigned int* bcMatD,
+														unsigned int* neighborX,
+														unsigned int* neighborY,
+														unsigned int* neighborZ,
+														real* DD,
+														int size_Mat,
+														int size_Array,
+														int level,
+														real* forces,
+														bool EvenOrOdd)
+{
+	//int Grid = size_Array / numberOfThreads;
+	//dim3 grid(Grid, 1, 1);
+	//dim3 threads(numberOfThreads, 1, 1 );
+
+	int Grid = (size_Mat / numberOfThreads) + 1;
+	int Grid1, Grid2;
+	if (Grid > 512)
+	{
+		Grid1 = 512;
+		Grid2 = (Grid / Grid1) + 1;
+	}
+	else
+	{
+		Grid1 = 1;
+		Grid2 = Grid;
+	}
+	dim3 grid(Grid1, Grid2, 1);
+	dim3 threads(numberOfThreads, 1, 1);
+
+	Cumulant_One_preconditioned_chim_Comp_SP_27 <<< grid, threads >>>(	s9,
+																		bcMatD,
+																		neighborX,
+																		neighborY,
+																		neighborZ,
+																		DD,
+																		size_Mat,
+																		level,
+																		forces,
+																		EvenOrOdd); 
+		getLastCudaError("Cumulant_One_preconditioned_chim_Comp_SP_27 execution failed"); 
+}
+//////////////////////////////////////////////////////////////////////////
+extern "C" void CumulantOneChimCompSP27(unsigned int numberOfThreads,
+										real s9,
+										unsigned int* bcMatD,
+										unsigned int* neighborX,
+										unsigned int* neighborY,
+										unsigned int* neighborZ,
+										real* DD,
+										int size_Mat,
+										int size_Array,
+										int level,
+										real* forces,
+										bool EvenOrOdd)
+{
+	//int Grid = size_Array / numberOfThreads;
+	//dim3 grid(Grid, 1, 1);
+	//dim3 threads(numberOfThreads, 1, 1 );
+
+	int Grid = (size_Mat / numberOfThreads) + 1;
+	int Grid1, Grid2;
+	if (Grid > 512)
+	{
+		Grid1 = 512;
+		Grid2 = (Grid / Grid1) + 1;
+	}
+	else
+	{
+		Grid1 = 1;
+		Grid2 = Grid;
+	}
+	dim3 grid(Grid1, Grid2, 1);
+	dim3 threads(numberOfThreads, 1, 1);
+
+	Cumulant_One_chim_Comp_SP_27 <<< grid, threads >>>(	s9,
+														bcMatD,
+														neighborX,
+														neighborY,
+														neighborZ,
+														DD,
+														size_Mat,
+														level,
+														forces,
+														EvenOrOdd); 
+		getLastCudaError("Cumulant_One_chim_Comp_SP_27 execution failed"); 
+}
+//////////////////////////////////////////////////////////////////////////
 extern "C" void KernelKumIsoTestSP27(unsigned int numberOfThreads, 
 									 real s9,
 									 unsigned int* bcMatD,
@@ -5514,6 +5691,72 @@ extern "C" void ScaleCF_0817_comp_27(real* DC,
       getLastCudaError("scaleCF_0817_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
+extern "C" void ScaleCF_comp_D3Q27F3_2018(real* DC,
+										  real* DF,
+										  real* G6, 
+										  unsigned int* neighborCX,
+										  unsigned int* neighborCY,
+										  unsigned int* neighborCZ,
+										  unsigned int* neighborFX,
+										  unsigned int* neighborFY,
+										  unsigned int* neighborFZ,
+										  unsigned int size_MatC, 
+										  unsigned int size_MatF, 
+										  bool evenOrOdd,
+										  unsigned int* posCSWB, 
+										  unsigned int* posFSWB, 
+										  unsigned int kCF, 
+										  real omCoarse, 
+										  real omFine, 
+										  real nu, 
+										  unsigned int nxC, 
+										  unsigned int nyC, 
+										  unsigned int nxF, 
+										  unsigned int nyF,
+										  unsigned int numberOfThreads,
+										  OffCF offCF)
+{
+   int Grid = (kCF / numberOfThreads)+1;
+   int Grid1, Grid2;
+   if (Grid>512)
+   {
+      Grid1 = 512;
+      Grid2 = (Grid/Grid1)+1;
+   } 
+   else
+   {
+      Grid1 = 1;
+      Grid2 = Grid;
+   }
+   dim3 gridINT_CF(Grid1, Grid2);
+   dim3 threads(numberOfThreads, 1, 1 );
+
+      scaleCF_comp_D3Q27F3_2018 <<< gridINT_CF, threads >>>(DC,
+															DF,
+															G6,
+															neighborCX,
+															neighborCY,
+															neighborCZ,
+															neighborFX,
+															neighborFY,
+															neighborFZ,
+															size_MatC, 
+															size_MatF, 
+															evenOrOdd,
+															posCSWB, 
+															posFSWB, 
+															kCF, 
+															omCoarse, 
+															omFine, 
+															nu, 
+															nxC, 
+															nyC, 
+															nxF, 
+															nyF,
+															offCF);
+      getLastCudaError("scaleCF_comp_D3Q27F3_2018 execution failed"); 
+}
+//////////////////////////////////////////////////////////////////////////
 extern "C" void ScaleCF_comp_D3Q27F3(real* DC,
 									 real* DF,
 									 real* G6, 
@@ -5577,7 +5820,7 @@ extern "C" void ScaleCF_comp_D3Q27F3(real* DC,
 														nxF, 
 														nyF,
 														offCF);
-      getLastCudaError("scaleCF_0817_27 execution failed"); 
+      getLastCudaError("scaleCF_comp_D3Q27F3 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void ScaleCF_staggered_time_comp_27(  real* DC, 
@@ -6518,6 +6761,72 @@ extern "C" void ScaleFC_0817_comp_27( real* DC,
       getLastCudaError("scaleFC_0817_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
+extern "C" void ScaleFC_comp_D3Q27F3_2018( real* DC,
+										   real* DF,
+										   real* G6,
+										   unsigned int* neighborCX,
+										   unsigned int* neighborCY,
+										   unsigned int* neighborCZ,
+										   unsigned int* neighborFX,
+										   unsigned int* neighborFY,
+										   unsigned int* neighborFZ,
+										   unsigned int size_MatC, 
+										   unsigned int size_MatF, 
+										   bool evenOrOdd,
+										   unsigned int* posC, 
+										   unsigned int* posFSWB, 
+										   unsigned int kFC, 
+										   real omCoarse, 
+										   real omFine, 
+										   real nu, 
+										   unsigned int nxC, 
+										   unsigned int nyC, 
+										   unsigned int nxF, 
+										   unsigned int nyF,
+										   unsigned int numberOfThreads,
+										   OffFC offFC)
+{
+   int Grid = (kFC / numberOfThreads)+1;
+   int Grid1, Grid2;
+   if (Grid>512)
+   {
+      Grid1 = 512;
+      Grid2 = (Grid/Grid1)+1;
+   } 
+   else
+   {
+      Grid1 = 1;
+      Grid2 = Grid;
+   }
+   dim3 gridINT_FC(Grid1, Grid2);
+   dim3 threads(numberOfThreads, 1, 1 );
+
+     scaleFC_comp_D3Q27F3_2018 <<< gridINT_FC, threads >>> (DC,
+															DF,
+															G6,
+															neighborCX,
+															neighborCY,
+															neighborCZ,
+															neighborFX,
+															neighborFY,
+															neighborFZ,
+															size_MatC, 
+															size_MatF, 
+															evenOrOdd,
+															posC, 
+															posFSWB, 
+															kFC, 
+															omCoarse, 
+															omFine, 
+															nu, 
+															nxC, 
+															nyC, 
+															nxF, 
+															nyF,
+															offFC);
+      getLastCudaError("scaleFC_comp_D3Q27F3_2018 execution failed"); 
+}
+//////////////////////////////////////////////////////////////////////////
 extern "C" void ScaleFC_comp_D3Q27F3( real* DC,
 									  real* DF,
 									  real* G6,
diff --git a/src/VirtualFluids_GPU/GPU/ScaleCF27.cu b/src/VirtualFluids_GPU/GPU/ScaleCF27.cu
index 9b7eb38be..f8c114c92 100644
--- a/src/VirtualFluids_GPU/GPU/ScaleCF27.cu
+++ b/src/VirtualFluids_GPU/GPU/ScaleCF27.cu
@@ -1,4275 +1,13 @@
+//  _    ___      __              __________      _     __        ______________   __
+// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____   /  ___/ __  / /  / /
+// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/  / /___/ /_/ / /  / /
+// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )  / /_) / ____/ /__/ / 
+// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/   \____/_/    \_____/
+//
+//////////////////////////////////////////////////////////////////////////
 /* Device code */
 #include "LBM/D3Q27.h"
-//#include "LBM/LB.h"
 #include "GPU/constant.h"
-
-//////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC,
-												 real* DF,
-												 real* G6,
-												 unsigned int* neighborCX,
-												 unsigned int* neighborCY,
-												 unsigned int* neighborCZ,
-												 unsigned int* neighborFX,
-												 unsigned int* neighborFY,
-												 unsigned int* neighborFZ,
-												 unsigned int size_MatC, 
-												 unsigned int size_MatF, 
-												 bool evenOrOdd,
-												 unsigned int* posCSWB, 
-												 unsigned int* posFSWB, 
-												 unsigned int kCF, 
-												 real omCoarse, 
-												 real omFine, 
-												 real nu, 
-												 unsigned int nxC, 
-												 unsigned int nyC, 
-												 unsigned int nxF, 
-												 unsigned int nyF,
-												 OffCF offCF)
-{
-	real
-		*fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest,
-		*fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest,
-		*f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest;
-
-
-	fP00dest = &DF[dirE   *size_MatF];
-	fM00dest = &DF[dirW   *size_MatF];
-	f0P0dest = &DF[dirN   *size_MatF];
-	f0M0dest = &DF[dirS   *size_MatF];
-	f00Pdest = &DF[dirT   *size_MatF];
-	f00Mdest = &DF[dirB   *size_MatF];
-	fPP0dest = &DF[dirNE  *size_MatF];
-	fMM0dest = &DF[dirSW  *size_MatF];
-	fPM0dest = &DF[dirSE  *size_MatF];
-	fMP0dest = &DF[dirNW  *size_MatF];
-	fP0Pdest = &DF[dirTE  *size_MatF];
-	fM0Mdest = &DF[dirBW  *size_MatF];
-	fP0Mdest = &DF[dirBE  *size_MatF];
-	fM0Pdest = &DF[dirTW  *size_MatF];
-	f0PPdest = &DF[dirTN  *size_MatF];
-	f0MMdest = &DF[dirBS  *size_MatF];
-	f0PMdest = &DF[dirBN  *size_MatF];
-	f0MPdest = &DF[dirTS  *size_MatF];
-	f000dest = &DF[dirZERO*size_MatF];
-	fMMMdest = &DF[dirBSW *size_MatF];
-	fMMPdest = &DF[dirTSW *size_MatF];
-	fMPPdest = &DF[dirTNW *size_MatF];
-	fMPMdest = &DF[dirBNW *size_MatF];
-	fPPMdest = &DF[dirBNE *size_MatF];
-	fPPPdest = &DF[dirTNE *size_MatF];
-	fPMPdest = &DF[dirTSE *size_MatF];
-	fPMMdest = &DF[dirBSE *size_MatF];
-
-	real
-		*fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source,
-		*fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource,
-		*f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource;
-
-	if (evenOrOdd == true)
-	{
-		fP00source = &DC[dirE   *size_MatC];
-		fM00source = &DC[dirW   *size_MatC];
-		f0P0source = &DC[dirN   *size_MatC];
-		f0M0source = &DC[dirS   *size_MatC];
-		f00Psource = &DC[dirT   *size_MatC];
-		f00Msource = &DC[dirB   *size_MatC];
-		fPP0source = &DC[dirNE  *size_MatC];
-		fMM0source = &DC[dirSW  *size_MatC];
-		fPM0source = &DC[dirSE  *size_MatC];
-		fMP0source = &DC[dirNW  *size_MatC];
-		fP0Psource = &DC[dirTE  *size_MatC];
-		fM0Msource = &DC[dirBW  *size_MatC];
-		fP0Msource = &DC[dirBE  *size_MatC];
-		fM0Psource = &DC[dirTW  *size_MatC];
-		f0PPsource = &DC[dirTN  *size_MatC];
-		f0MMsource = &DC[dirBS  *size_MatC];
-		f0PMsource = &DC[dirBN  *size_MatC];
-		f0MPsource = &DC[dirTS  *size_MatC];
-		f000source = &DC[dirZERO*size_MatC];
-		fMMMsource = &DC[dirBSW *size_MatC];
-		fMMPsource = &DC[dirTSW *size_MatC];
-		fMPPsource = &DC[dirTNW *size_MatC];
-		fMPMsource = &DC[dirBNW *size_MatC];
-		fPPMsource = &DC[dirBNE *size_MatC];
-		fPPPsource = &DC[dirTNE *size_MatC];
-		fPMPsource = &DC[dirTSE *size_MatC];
-		fPMMsource = &DC[dirBSE *size_MatC];
-	}
-	else
-	{
-		fP00source = &DC[dirW   *size_MatC];
-		fM00source = &DC[dirE   *size_MatC];
-		f0P0source = &DC[dirS   *size_MatC];
-		f0M0source = &DC[dirN   *size_MatC];
-		f00Psource = &DC[dirB   *size_MatC];
-		f00Msource = &DC[dirT   *size_MatC];
-		fPP0source = &DC[dirSW  *size_MatC];
-		fMM0source = &DC[dirNE  *size_MatC];
-		fPM0source = &DC[dirNW  *size_MatC];
-		fMP0source = &DC[dirSE  *size_MatC];
-		fP0Psource = &DC[dirBW  *size_MatC];
-		fM0Msource = &DC[dirTE  *size_MatC];
-		fP0Msource = &DC[dirTW  *size_MatC];
-		fM0Psource = &DC[dirBE  *size_MatC];
-		f0PPsource = &DC[dirBS  *size_MatC];
-		f0MMsource = &DC[dirTN  *size_MatC];
-		f0PMsource = &DC[dirTS  *size_MatC];
-		f0MPsource = &DC[dirBN  *size_MatC];
-		f000source = &DC[dirZERO*size_MatC];
-		fMMMsource = &DC[dirTNE *size_MatC];
-		fMMPsource = &DC[dirBNE *size_MatC];
-		fMPPsource = &DC[dirBSE *size_MatC];
-		fMPMsource = &DC[dirTSE *size_MatC];
-		fPPMsource = &DC[dirTSW *size_MatC];
-		fPPPsource = &DC[dirBSW *size_MatC];
-		fPMPsource = &DC[dirBNW *size_MatC];
-		fPMMsource = &DC[dirTNW *size_MatC];
-	}
-
-	Distributions6 G;
-	G.g[dirE] = &G6[dirE   *size_MatF];
-	G.g[dirW] = &G6[dirW   *size_MatF];
-	G.g[dirN] = &G6[dirN   *size_MatF];
-	G.g[dirS] = &G6[dirS   *size_MatF];
-	G.g[dirT] = &G6[dirT   *size_MatF];
-	G.g[dirB] = &G6[dirB   *size_MatF];
-
-	////////////////////////////////////////////////////////////////////////////////
-   const unsigned  ix = threadIdx.x;  // Globaler x-Index 
-   const unsigned  iy = blockIdx.x;   // Globaler y-Index 
-   const unsigned  iz = blockIdx.y;   // Globaler z-Index 
-
-   const unsigned nx = blockDim.x;
-   const unsigned ny = gridDim.x;
-
-   const unsigned k = nx*(ny*iz + iy) + ix;
-   //////////////////////////////////////////////////////////////////////////
-
-   ////////////////////////////////////////////////////////////////////////////////
-   real eps_new = c1o2;
-   real omegaS = omCoarse;//-omCoarse;
-   real o  = omFine;//-omFine;
-   real oP = o;//:(
-   //real op = one;
-   //real cu_sq;
-
-   real xoff,    yoff,    zoff;
-   real xoff_sq, yoff_sq, zoff_sq;
-
-   real        vvx, vvy, vvz, vx2, vy2, vz2, drho;
-   real        press;//,drho,vx1,vx2,vx3;
-   real        /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP;
-   real        /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP;
-   real        /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP;
-   real        /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP;
-   real        /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM;
-   real        /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM;
-   real        /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM;
-   real        /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM;
-   real        fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM;
-   //real        feqP00,feqM00,feq0P0,feq0M0,feq00P,feq00M,feqPP0,feqMM0,feqPM0,feqMP0,feqP0P,feqM0M,feqP0M,feqM0P,feq0PP,feq0MM,feq0PM,feq0MP,feq000,feqPPP, feqMMP, feqPMP, feqMPP, feqPPM, feqMMM, feqPMM, feqMPM;
-   real        kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP;
-   real        kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP;
-   real        kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP;
-   real        kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP;
-   real        kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM;
-   real        kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM;
-   real        kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM;
-   real        kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM;
-   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
-   real        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
-
-   real x,y,z;
-
-
-   if(k<kCF)
-   {
-      //////////////////////////////////////////////////////////////////////////
-      xoff    = offCF.xOffCF[k];
-      yoff    = offCF.yOffCF[k];
-      zoff    = offCF.zOffCF[k];
-      xoff_sq = xoff * xoff;
-      yoff_sq = yoff * yoff;
-      zoff_sq = zoff * zoff;
-      //////////////////////////////////////////////////////////////////////////
-      //SWB//
-      //////////////////////////////////////////////////////////////////////////
-      //index 0
-      unsigned int k000base = posCSWB[k];
-      unsigned int kM00base = neighborCX[k000base];
-      unsigned int k0M0base = neighborCY[k000base];
-      unsigned int k00Mbase = neighborCZ[k000base];
-      unsigned int kMM0base = neighborCY[kM00base];
-      unsigned int kM0Mbase = neighborCZ[kM00base];
-      unsigned int k0MMbase = neighborCZ[k0M0base];
-      unsigned int kMMMbase = neighborCZ[kMM0base];
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      unsigned int k000 = k000base;
-      unsigned int kM00 = kM00base;   
-      unsigned int k0M0 = k0M0base;   
-      unsigned int k00M = k00Mbase;   
-      unsigned int kMM0 = kMM0base;  
-      unsigned int kM0M = kM0Mbase;  
-      unsigned int k0MM = k0MMbase;  
-      unsigned int kMMM = kMMMbase; 
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoMMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1MMM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMM);
-	  vx2MMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMM);
-	  vx3MMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMM);
-
-	  kxyFromfcNEQMMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx2MMM)));
-	  kyzFromfcNEQMMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMM) - ((vx2MMM*vx3MMM)));
-	  kxzFromfcNEQMMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx3MMM)));
-	  kxxMyyFromfcNEQMMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx2MMM*vx2MMM)));
-	  kxxMzzFromfcNEQMMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx3MMM*vx3MMM)));
-	  kyyMzzFromfcNEQMMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMM) - ((vx2MMM*vx2MMM - vx3MMM*vx3MMM)));
-
-	  //////////////////////////////////////////////////////////////////////////
-      //SWT//
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k000 = k00M;
-      kM00 = kM0M;   
-      k0M0 = k0MM;   
-      k00M = neighborCZ[k00M];   
-      kMM0 = kMMM;  
-      kM0M = neighborCZ[kM0M];  
-      k0MM = neighborCZ[k0MM];  
-      kMMM = neighborCZ[kMMM]; 
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoMMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1MMP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMP);
-	  vx2MMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMP);
-	  vx3MMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMP);
-
-	  kxyFromfcNEQMMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx2MMP)));
-	  kyzFromfcNEQMMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMP) - ((vx2MMP*vx3MMP)));
-	  kxzFromfcNEQMMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx3MMP)));
-	  kxxMyyFromfcNEQMMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx2MMP*vx2MMP)));
-	  kxxMzzFromfcNEQMMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx3MMP*vx3MMP)));
-	  kyyMzzFromfcNEQMMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMP) - ((vx2MMP*vx2MMP - vx3MMP*vx3MMP)));
-
-      //////////////////////////////////////////////////////////////////////////
-      //SET//
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k000 = kM00;
-      kM00 = neighborCX[kM00];   
-      k0M0 = kMM0;   
-      k00M = kM0M;   
-      kMM0 = neighborCX[kMM0];  
-      kM0M = neighborCX[kM0M];  
-      k0MM = kMMM;  
-      kMMM = neighborCX[kMMM]; 
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoPMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1PMP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMP);
-	  vx2PMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMP);
-	  vx3PMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMP);
-
-	  kxyFromfcNEQPMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx2PMP)));
-	  kyzFromfcNEQPMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMP) - ((vx2PMP*vx3PMP)));
-	  kxzFromfcNEQPMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx3PMP)));
-	  kxxMyyFromfcNEQPMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx2PMP*vx2PMP)));
-	  kxxMzzFromfcNEQPMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx3PMP*vx3PMP)));
-	  kyyMzzFromfcNEQPMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMP) - ((vx2PMP*vx2PMP - vx3PMP*vx3PMP)));
-	  
-	  //////////////////////////////////////////////////////////////////////////
-      //SEB//
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k00M = k000;   
-      kM0M = kM00;  
-      k0MM = k0M0;  
-      kMMM = kMM0; 
-      k000 = kM00base;
-      kM00 = neighborCX[kM00base];   
-      k0M0 = kMM0base;   
-      kMM0 = neighborCX[kMM0base];  
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoPMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1PMM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMM);
-	  vx2PMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMM);
-	  vx3PMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMM);
-
-	  kxyFromfcNEQPMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx2PMM)));
-	  kyzFromfcNEQPMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMM) - ((vx2PMM*vx3PMM)));
-	  kxzFromfcNEQPMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx3PMM)));
-	  kxxMyyFromfcNEQPMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx2PMM*vx2PMM)));
-	  kxxMzzFromfcNEQPMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx3PMM*vx3PMM)));
-	  kyyMzzFromfcNEQPMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMM) - ((vx2PMM*vx2PMM - vx3PMM*vx3PMM)));
-
-      //////////////////////////////////////////////////////////////////////////
-      //NWB//
-      //////////////////////////////////////////////////////////////////////////
-      //index 0
-      k000base = k0M0base;
-      kM00base = kMM0base;
-      k0M0base = neighborCY[k0M0base];
-      k00Mbase = k0MMbase;
-      kMM0base = neighborCY[kMM0base];
-      kM0Mbase = kMMMbase;
-      k0MMbase = neighborCY[k0MMbase];
-      kMMMbase = neighborCY[kMMMbase];
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k000 = k000base;
-      kM00 = kM00base;   
-      k0M0 = k0M0base;   
-      k00M = k00Mbase;   
-      kMM0 = kMM0base;  
-      kM0M = kM0Mbase;  
-      k0MM = k0MMbase;  
-      kMMM = kMMMbase; 
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoMPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1MPM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPM);
-	  vx2MPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPM);
-	  vx3MPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPM);
-
-	  kxyFromfcNEQMPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx2MPM)));
-	  kyzFromfcNEQMPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPM) - ((vx2MPM*vx3MPM)));
-	  kxzFromfcNEQMPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx3MPM)));
-	  kxxMyyFromfcNEQMPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx2MPM*vx2MPM)));
-	  kxxMzzFromfcNEQMPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx3MPM*vx3MPM)));
-	  kyyMzzFromfcNEQMPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPM) - ((vx2MPM*vx2MPM - vx3MPM*vx3MPM)));
-
-      //////////////////////////////////////////////////////////////////////////
-      //NWT//
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k000 = k00M;
-      kM00 = kM0M;   
-      k0M0 = k0MM;   
-      k00M = neighborCZ[k00M];   
-      kMM0 = kMMM;  
-      kM0M = neighborCZ[kM0M];  
-      k0MM = neighborCZ[k0MM];  
-      kMMM = neighborCZ[kMMM]; 
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoMPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1MPP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPP);
-	  vx2MPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPP);
-	  vx3MPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPP);
-
-	  kxyFromfcNEQMPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx2MPP)));
-	  kyzFromfcNEQMPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPP) - ((vx2MPP*vx3MPP)));
-	  kxzFromfcNEQMPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx3MPP)));
-	  kxxMyyFromfcNEQMPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx2MPP*vx2MPP)));
-	  kxxMzzFromfcNEQMPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx3MPP*vx3MPP)));
-	  kyyMzzFromfcNEQMPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPP) - ((vx2MPP*vx2MPP - vx3MPP*vx3MPP)));
-
-      //////////////////////////////////////////////////////////////////////////
-      //NET//
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k000 = kM00;
-      kM00 = neighborCX[kM00];   
-      k0M0 = kMM0;   
-      k00M = kM0M;   
-      kMM0 = neighborCX[kMM0];  
-      kM0M = neighborCX[kM0M];  
-      k0MM = kMMM;  
-      kMMM = neighborCX[kMMM]; 
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoPPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1PPP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPP);
-	  vx2PPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPP);
-	  vx3PPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPP);
-
-	  kxyFromfcNEQPPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx2PPP)));
-	  kyzFromfcNEQPPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPP) - ((vx2PPP*vx3PPP)));
-	  kxzFromfcNEQPPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx3PPP)));
-	  kxxMyyFromfcNEQPPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx2PPP*vx2PPP)));
-	  kxxMzzFromfcNEQPPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx3PPP*vx3PPP)));
-	  kyyMzzFromfcNEQPPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPP) - ((vx2PPP*vx2PPP - vx3PPP*vx3PPP)));
-
-      //////////////////////////////////////////////////////////////////////////
-      //NEB//
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k00M = k000;   
-      kM0M = kM00;  
-      k0MM = k0M0;  
-      kMMM = kMM0; 
-      k000 = kM00base;
-      kM00 = neighborCX[kM00base];   
-      k0M0 = kMM0base;   
-      kMM0 = neighborCX[kMM0base];  
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoPPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1PPM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPM);
-	  vx2PPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPM);
-	  vx3PPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPM);
-
-	  kxyFromfcNEQPPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx2PPM)));
-	  kyzFromfcNEQPPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPM) - ((vx2PPM*vx3PPM)));
-	  kxzFromfcNEQPPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx3PPM)));
-	  kxxMyyFromfcNEQPPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx2PPM*vx2PPM)));
-	  kxxMzzFromfcNEQPPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx3PPM*vx3PPM)));
-	  kyyMzzFromfcNEQPPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPM) - ((vx2PPM*vx2PPM - vx3PPM*vx3PPM)));
-
-      //////////////////////////////////////////////////////////////////////////
-      //3
-      //////////////////////////////////////////////////////////////////////////
-	  a0 = c1o8*(((vx1PPM + vx1PPP) + (vx1MPM + vx1MPP)) + ((vx1PMM + vx1PMP) + (vx1MMM + vx1MMP)));
-	  ax = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1PMM - vx1MPP)));
-	  ay = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1MPP - vx1PMM)));
-	  az = c1o4*(((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1MPP - vx1PMM)));
-	  axy = c1o2*(((vx1PPM - vx1PMP) + (vx1MMM - vx1MPP)) + ((vx1MMP - vx1MPM) + (vx1PPP - vx1PMM)));
-	  axz = c1o2*(((vx1PMP - vx1PPM) + (vx1MMM - vx1MPP)) + ((vx1MPM - vx1MMP) + (vx1PPP - vx1PMM)));
-	  ayz = c1o2*(((vx1PPP - vx1MPM) + (vx1PMM - vx1MMP)) + ((vx1MPP - vx1PPM) + (vx1MMM - vx1PMP)));
-	  axyz=		  ((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1PMM - vx1MPP)) ;
-	  b0 = c1o8*(((vx2PPM + vx2PPP) + (vx2MPM + vx2MPP)) + ((vx2PMM + vx2PMP) + (vx2MMM + vx2MMP)));
-	  bx = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2PMM - vx2MPP)));
-	  by = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2MPP - vx2PMM)));
-	  bz = c1o4*(((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2MPP - vx2PMM)));
-	  bxy = c1o2*(((vx2PPM - vx2MPP) + (vx2MMM - vx2PMP)) + ((vx2MMP - vx2PMM) + (vx2PPP - vx2MPM)));
-	  bxz = c1o2*(((vx2MMM - vx2PPM) + (vx2PMP - vx2MPP)) + ((vx2MPM - vx2PMM) + (vx2PPP - vx2MMP)));
-	  byz = c1o2*(((vx2MPP - vx2PPM) + (vx2MMM - vx2PMP)) + ((vx2PMM - vx2MMP) + (vx2PPP - vx2MPM)));
-	  bxyz=		  ((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2PMM - vx2MPP)) ;
-	  c0 = c1o8*(((vx3PPM + vx3PPP) + (vx3MPM + vx3MPP)) + ((vx3PMM + vx3PMP) + (vx3MMM + vx3MMP)));
-	  cx = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3PMM - vx3MPP)));
-	  cy = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3MPP - vx3PMM)));
-	  cz = c1o4*(((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3MPP - vx3PMM)));
-	  cxy = c1o2*(((vx3PPM - vx3PMP) + (vx3MMM - vx3MPP)) + ((vx3MMP - vx3MPM) + (vx3PPP - vx3PMM)));
-	  cxz = c1o2*(((vx3MMM - vx3PPM) + (vx3PMP - vx3MPP)) + ((vx3MPM - vx3PMM) + (vx3PPP - vx3MMP)));
-	  cyz = c1o2*(((vx3MMM - vx3PPM) + (vx3MPP - vx3PMP)) + ((vx3PMM - vx3MPM) + (vx3PPP - vx3MMP)));
-	  cxyz=		  ((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3PMM - vx3MPP)) ;
-
-	  //bxx = zero;
-	  //cxx = zero;
-	  //ayy = zero;
-	  //cyy = zero;
-	  //azz = zero;
-	  //bzz = zero;
-	  //axx = zero;
-	  //byy = zero;
-	  //czz = zero;
-
-	  bxx = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPMM - kxyFromfcNEQMPP)) + ((kxyFromfcNEQPMP - kxyFromfcNEQMPM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP))) - c1o2*axy;
-	  cxx = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) + (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) + (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*axz;
-
-	  ayy = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP)) - ((kxyFromfcNEQPMM - kxyFromfcNEQMPP) + (kxyFromfcNEQPMP - kxyFromfcNEQMPM))) - c1o2*bxy;
-	  cyy = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) + (kyzFromfcNEQPPM - kyzFromfcNEQMMP)) - ((kyzFromfcNEQPMM - kyzFromfcNEQMPP) + (kyzFromfcNEQPMP - kyzFromfcNEQMPM))) - c1o2*byz;
-
-	  azz = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) - (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) - (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*cxz;
-	  bzz = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) - (kyzFromfcNEQPMM - kyzFromfcNEQMPP)) + ((kyzFromfcNEQPMP - kyzFromfcNEQMPM) - (kyzFromfcNEQPPM - kyzFromfcNEQMMP))) - c1o2*cyz;
-
-	  axx = (c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) + (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM) + (kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP))) - c1o4*bxy)
-		  + (c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) + (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) + ((kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM) + (kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP))) - c1o4*cxz);
-
-	  byy = (-c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) - (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP) - (kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM))) - c1o4*axy)
-		  + (c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) + ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*cyz);
-
-	  czz = (-c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) - (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) - ((kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP) - (kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM))) - c1o4*axz)
-		  + (c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) - ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*byz);
-
-	  a0 -= c1o4*(axx + ayy + azz);
-	  b0 -= c1o4*(bxx + byy + bzz);
-	  c0 -= c1o4*(cxx + cyy + czz);
-      //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  real kxyAverage = zero;
-	  real kyzAverage = zero;
-	  real kxzAverage = zero;
-	  real kxxMyyAverage = zero;
-	  real kxxMzzAverage = zero;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //Press
-	  //d0   = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8;
-	  //dx   = ( pressPPM + pressPPP - pressMPM - pressMPP + pressPMM + pressPMP - pressMMM - pressMMP) * c1o4;
-	  //dy   = ( pressPPM + pressPPP + pressMPM + pressMPP - pressPMM - pressPMP - pressMMM - pressMMP) * c1o4;
-	  //dz   = (-pressPPM + pressPPP - pressMPM + pressMPP - pressPMM + pressPMP - pressMMM + pressMMP) * c1o4;
-	  //dxy  = ( pressPPM + pressPPP - pressMPM - pressMPP - pressPMM - pressPMP + pressMMM + pressMMP) * c1o2;
-	  //dxz  = (-pressPPM + pressPPP + pressMPM - pressMPP - pressPMM + pressPMP + pressMMM - pressMMP) * c1o2;
-	  //dyz  = (-pressPPM + pressPPP - pressMPM + pressMPP + pressPMM - pressPMP + pressMMM - pressMMP) * c1o2;
-	  //dxyz =  -pressPPM + pressPPP + pressMPM - pressMPP + pressPMM - pressPMP - pressMMM + pressMMP;
-	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //drho
-	  d0   = ( ((drhoPPM + drhoMMP) + (drhoMPM + drhoPMP)) + ((drhoPMM + drhoMPP) + (drhoMMM + drhoPPP))) * c1o8;
-	  dx   = ( ((drhoPPM - drhoMMP) + (drhoPMM - drhoMPP)) + ((drhoPMP - drhoMPM) + (drhoPPP - drhoMMM))) * c1o4;
-	  dy   = ( ((drhoPPM - drhoMMP) + (drhoMPP - drhoPMM)) + ((drhoMPM - drhoPMP) + (drhoPPP - drhoMMM))) * c1o4;
-	  dz   = ( ((drhoMMP - drhoPPM) + (drhoPPP - drhoMMM)) + ((drhoPMP - drhoMPM) + (drhoMPP - drhoPMM))) * c1o4;
-	  dxy  = ( ((drhoPPM - drhoPMP) + (drhoPPP - drhoPMM)) + ((drhoMMP - drhoMPM) + (drhoMMM - drhoMPP))) * c1o2;
-	  dxz  = ( ((drhoMMM - drhoPPM) + (drhoPPP - drhoMMP)) + ((drhoMPM - drhoPMM) + (drhoPMP - drhoMPP))) * c1o2;
-	  dyz  = ( ((drhoMPP - drhoPPM) + (drhoPPP - drhoMPM)) + ((drhoPMM - drhoMMP) + (drhoMMM - drhoPMP))) * c1o2;
-     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      //
-      // Bernd das Brot
-      //
-	  // X------X
-	  // |      | x---x	
-	  // |	 ---+-+-> |    ----> off-vector
-	  // |		| x---x 
-	  // X------X   
-	  //			
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      a0 = a0 + xoff * ax + yoff * ay + zoff * az + xoff_sq * axx + yoff_sq * ayy + zoff_sq * azz + xoff*yoff*axy + xoff*zoff*axz + yoff*zoff*ayz;
-      ax = ax + two * xoff * axx + yoff * axy + zoff * axz;
-      ay = ay + two * yoff * ayy + xoff * axy + zoff * ayz;
-      az = az + two * zoff * azz + xoff * axz + yoff * ayz;
-      b0 = b0 + xoff * bx + yoff * by + zoff * bz + xoff_sq * bxx + yoff_sq * byy + zoff_sq * bzz + xoff*yoff*bxy + xoff*zoff*bxz + yoff*zoff*byz;
-      bx = bx + two * xoff * bxx + yoff * bxy + zoff * bxz;
-      by = by + two * yoff * byy + xoff * bxy + zoff * byz;
-      bz = bz + two * zoff * bzz + xoff * bxz + yoff * byz;
-      c0 = c0 + xoff * cx + yoff * cy + zoff * cz + xoff_sq * cxx + yoff_sq * cyy + zoff_sq * czz + xoff*yoff*cxy + xoff*zoff*cxz + yoff*zoff*cyz;
-      cx = cx + two * xoff * cxx + yoff * cxy + zoff * cxz;
-      cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz;
-      cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz;
-	  d0 = d0 + xoff * dx + yoff * dy + zoff * dz + xoff*yoff*dxy + xoff*zoff*dxz + yoff*zoff*dyz;
-	  dx = dx + yoff * dxy + zoff * dxz;
-	  dy = dy + xoff * dxy + zoff * dyz;
-	  dz = dz + xoff * dxz + yoff * dyz;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	  
-	  real mfcbb = zero;
-	  real mfabb = zero;
-	  real mfbcb = zero;
-	  real mfbab = zero;
-	  real mfbbc = zero;
-	  real mfbba = zero;
-	  real mfccb = zero;
-	  real mfaab = zero;
-	  real mfcab = zero;
-	  real mfacb = zero;
-	  real mfcbc = zero;
-	  real mfaba = zero;
-	  real mfcba = zero;
-	  real mfabc = zero;
-	  real mfbcc = zero;
-	  real mfbaa = zero;
-	  real mfbca = zero;
-	  real mfbac = zero;
-	  real mfbbb = zero;
-	  real mfccc = zero;
-	  real mfaac = zero;
-	  real mfcac = zero;
-	  real mfacc = zero;
-	  real mfcca = zero;
-	  real mfaaa = zero;
-	  real mfcaa = zero;
-	  real mfaca = zero;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  real mgcbb = zero;
-	  real mgabb = zero;
-	  real mgbcb = zero;
-	  real mgbab = zero;
-	  real mgbbc = zero;
-	  real mgbba = zero;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  real m0, m1, m2, oMdrho;
-	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  //real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  //real O3 = two - o;
-	  //real residu, residutmp;
-	  //residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //
-	  //Position SWB -0.25f, -0.25f, -0.25f
-	  //
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  x = -c1o4;
-	  y = -c1o4;
-	  z = -c1o4;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //real mxoff = -xoff;
-	  //real myoff = -yoff;
-	  //real mzoff = -zoff;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //drho = c3o64*drho_NEB+c1o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c27o64*drho_SWB+c9o64*drho_SWT;
-	  //press = press_SWT * (c9o64  + c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + 
-			//  press_NWT * (c3o64  + c1o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + 
-			//  press_SET * (c3o64  - c3o16 * mxoff + c1o16 * myoff - c3o16 * mzoff) + 
-			//  press_NET * (c1o64  - c1o16 * mxoff - c1o16 * myoff - c1o16 * mzoff) + 
-			//  press_NEB * (c3o64  - c3o16 * mxoff - c3o16 * myoff + c1o16 * mzoff) + 
-			//  press_NWB * (c9o64  + c3o16 * mxoff - c9o16 * myoff + c3o16 * mzoff) + 
-			//  press_SEB * (c9o64  - c9o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + 
-			//  press_SWB * (c27o64 + c9o16 * mxoff + c9o16 * myoff + c9o16 * mzoff);
-	  //drho  = drho_SWT * (c9o64 + c3o16 * xoff + c3o16 * yoff - c9o16 * zoff) + 
-			//  drho_NWT * (c3o64 + c1o16 * xoff - c3o16 * yoff - c3o16 * zoff) + 
-			//  drho_SET * (c3o64 - c3o16 * xoff + c1o16 * yoff - c3o16 * zoff) + 
-			//  drho_NET * (c1o64 - c1o16 * xoff - c1o16 * yoff - c1o16 * zoff) + 
-			//  drho_NEB * (c3o64 - c3o16 * xoff - c3o16 * yoff + c1o16 * zoff) + 
-			//  drho_NWB * (c9o64 + c3o16 * xoff - c9o16 * yoff + c3o16 * zoff) + 
-			//  drho_SEB * (c9o64 - c9o16 * xoff + c3o16 * yoff + c3o16 * zoff) + 
-			//  drho_SWB * (c27o64 + c9o16 * xoff + c9o16 * yoff + c9o16 * zoff);
-	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
-	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
-	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
-	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
-	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
-	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
-	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
-
-	  //mfaaa = drho;
-	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
-	  mfaaa = press; // if drho is interpolated directly
-
-	  vx2 = vvx*vvx;
-	  vy2 = vvy*vvy;
-	  vz2 = vvz*vvz;
-	  oMdrho = one;
-	  //oMdrho = one - mfaaa;
-	  
-	  //2.f
-	  // linear combinations
-	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z )*eps_new / oP* (one + press);
-	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
-	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
-	 
-	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
-	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
-	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
-
-  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
-	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
-	 
-	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
-	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
-	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
-
-	  // linear combinations back
-	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
-
-	  //three
-	  // linear combinations
-	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
-	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mfbbb = zero;
-
-	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
-	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
-	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
-	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyPyzz = zero;
-
-	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
-	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
-	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyMyzz = zero;
-
-	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
-	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
-	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzPyyz = zero;
-
-	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
-	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
-	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzMyyz = zero;
-
-	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
-	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
-	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
-	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyPxzz =  zero;
-
-	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyMxzz = zero;
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  // D3Q27F 
-	  mgcbb = (ax - axx) * eps_new;
-	  mgabb = (ax + axx) * eps_new;
-	  mgbcb = (by - byy) * eps_new;
-	  mgbab = (by + byy) * eps_new;
-	  mgbbc = (cz - czz) * eps_new;
-	  mgbba = (cz + czz) * eps_new;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  // 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.f
-	  mfacc = mfaaa*c1o9; 
-	  mfcac = mfacc; 
-	  mfcca = mfacc; 
-	  //5.
-
-	  //6.
-	  mfccc = mfaaa*c1o27;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  //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;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  //////////////////////////////////////////////////////////////////////////
-	  //index 0
-	  k000base = posFSWB[k];
-	  kM00base = neighborFX[k000base];
-	  k0M0base = neighborFY[k000base];
-	  k00Mbase = neighborFZ[k000base];
-	  kMM0base = neighborFY[kM00base];
-	  kM0Mbase = neighborFZ[kM00base];
-	  k0MMbase = neighborFZ[k0M0base];
-	  kMMMbase = neighborFZ[kMM0base];
-	  //////////////////////////////////////////////////////////////////////////
-	  //index 
-	  k000 = k000base;
-	  kM00 = kM00base;
-	  k0M0 = k0M0base;
-	  k00M = k00Mbase;
-	  kMM0 = kMM0base;
-	  kM0M = kM0Mbase;
-	  k0MM = k0MMbase;
-	  kMMM = kMMMbase;
-	  ////////////////////////////////////////////////////////////////////////////////
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  (G.g[dirE])[k000] = mgcbb;
-	  (G.g[dirW])[kM00] = mgabb;
-	  (G.g[dirN])[k000] = mgbcb;
-	  (G.g[dirS])[k0M0] = mgbab;
-	  (G.g[dirT])[k000] = mgbbc;
-	  (G.g[dirB])[k00M] = mgbba;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  fP00dest[k000] = mfcbb;
-	  fM00dest[kM00] = mfabb;
-	  f0P0dest[k000] = mfbcb;
-	  f0M0dest[k0M0] = mfbab;
-	  f00Pdest[k000] = mfbbc;
-	  f00Mdest[k00M] = mfbba;
-	  fPP0dest[k000] = mfccb;
-	  fMM0dest[kMM0] = mfaab;
-	  fPM0dest[k0M0] = mfcab;
-	  fMP0dest[kM00] = mfacb;
-	  fP0Pdest[k000] = mfcbc;
-	  fM0Mdest[kM0M] = mfaba;
-	  fP0Mdest[k00M] = mfcba;
-	  fM0Pdest[kM00] = mfabc;
-	  f0PPdest[k000] = mfbcc;
-	  f0MMdest[k0MM] = mfbaa;
-	  f0PMdest[k00M] = mfbca;
-	  f0MPdest[k0M0] = mfbac;
-	  f000dest[k000] = mfbbb;
-	  fMMMdest[kMMM] = mfaaa;
-	  fMMPdest[kMM0] = mfaac;
-	  fMPPdest[kM00] = mfacc;
-	  fMPMdest[kM0M] = mfaca;
-	  fPPMdest[k00M] = mfcca;
-	  fPPPdest[k000] = mfccc;
-	  fPMPdest[k0M0] = mfcac;
-	  fPMMdest[k0MM] = mfcaa;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  
-	  //reset
-	  mfcbb = zero;
-	  mfabb = zero;
-	  mfbcb = zero;
-	  mfbab = zero;
-	  mfbbc = zero;
-	  mfbba = zero;
-	  mfccb = zero;
-	  mfaab = zero;
-	  mfcab = zero;
-	  mfacb = zero;
-	  mfcbc = zero;
-	  mfaba = zero;
-	  mfcba = zero;
-	  mfabc = zero;
-	  mfbcc = zero;
-	  mfbaa = zero;
-	  mfbca = zero;
-	  mfbac = zero;
-	  mfbbb = zero;
-	  mfccc = zero;
-	  mfaac = zero;
-	  mfcac = zero;
-	  mfacc = zero;
-	  mfcca = zero;
-	  mfaaa = zero;
-	  mfcaa = zero;
-	  mfaca = zero;
-	  /////////////
-	  mgcbb = zero;
-	  mgabb = zero;
-	  mgbcb = zero;
-	  mgbab = zero;
-	  mgbbc = zero;
-	  mgbba = zero;
-
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //
-	  //Position SWT -0.25f, -0.25f, 0.25f
-	  //
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  x = -c1o4;
-	  y = -c1o4;
-	  z =  c1o4;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //drho = c1o64*drho_NEB+c3o64*drho_NET+c3o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c9o64*drho_SET+c9o64*drho_SWB+c27o64*drho_SWT;
-	  //press = press_SWT * (c27o64 + c9o16 * mxoff + c9o16 * myoff - c9o16 * mzoff) + 
-			//  press_NWT * (c9o64  + c3o16 * mxoff - c9o16 * myoff - c3o16 * mzoff) + 
-			//  press_SET * (c9o64  - c9o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + 
-			//  press_NET * (c3o64  - c3o16 * mxoff - c3o16 * myoff - c1o16 * mzoff) + 
-			//  press_NEB * (c1o64  - c1o16 * mxoff - c1o16 * myoff + c1o16 * mzoff) + 
-			//  press_NWB * (c3o64  + c1o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + 
-			//  press_SEB * (c3o64  - c3o16 * mxoff + c1o16 * myoff + c3o16 * mzoff) + 
-			//  press_SWB * (c9o64  + c3o16 * mxoff + c3o16 * myoff + c9o16 * mzoff);
-	  //drho  = drho_SWT * (c27o64 + c9o16 * xoff + c9o16 * yoff - c9o16 * zoff) + 
-			//  drho_NWT * (c9o64 + c3o16 * xoff - c9o16 * yoff - c3o16 * zoff) + 
-			//  drho_SET * (c9o64 - c9o16 * xoff + c3o16 * yoff - c3o16 * zoff) + 
-			//  drho_NET * (c3o64 - c3o16 * xoff - c3o16 * yoff - c1o16 * zoff) + 
-			//  drho_NEB * (c1o64 - c1o16 * xoff - c1o16 * yoff + c1o16 * zoff) + 
-			//  drho_NWB * (c3o64 + c1o16 * xoff - c3o16 * yoff + c3o16 * zoff) + 
-			//  drho_SEB * (c3o64 - c3o16 * xoff + c1o16 * yoff + c3o16 * zoff) + 
-			//  drho_SWB * (c9o64 + c3o16 * xoff + c3o16 * yoff + c9o16 * zoff);
-	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
-	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
-	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
-	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
-	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
-	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
-	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
-
-	  //mfaaa = drho;
-	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
-	  mfaaa = press; // if drho is interpolated directly
-
-	  vx2 = vvx*vvx;
-	  vy2 = vvy*vvy;
-	  vz2 = vvz*vvz;
-	  oMdrho = one;
-	  //oMdrho = one - mfaaa;
-	  
-	  //2.f
-	  // linear combinations
-	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
-	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
-	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
-	 
-	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
-	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
-	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
-
-  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
-	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
-	 
-	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
-	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
-	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
-
-	  // linear combinations back
-	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
-
-	  //three
-	  // linear combinations
-	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
-	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mfbbb = zero;
-
-	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
-	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
-	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
-	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyPyzz = zero;
-
-	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
-	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
-	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyMyzz = zero;
-
-	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
-	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
-	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzPyyz = zero;
-
-	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
-	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
-	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzMyyz = zero;
-
-	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
-	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
-	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
-	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyPxzz =  zero;
-
-	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyMxzz = zero;
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  // D3Q27F 
-	  mgcbb = (ax - axx) * eps_new;
-	  mgabb = (ax + axx) * eps_new;
-	  mgbcb = (by - byy) * eps_new;
-	  mgbab = (by + byy) * eps_new;
-	  mgbbc = (cz - czz) * eps_new;
-	  mgbba = (cz + czz) * eps_new;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  // 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.f
-	  mfacc = mfaaa*c1o9; 
-	  mfcac = mfacc; 
-	  mfcca = mfacc; 
-	  //5.
-
-	  //6.
-	  mfccc = mfaaa*c1o27;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  //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;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  //index 
-	  k000 = k00M;
-	  kM00 = kM0M;
-	  k0M0 = k0MM;
-	  k00M = neighborFZ[k00M];
-	  kMM0 = kMMM;
-	  kM0M = neighborFZ[kM0M];
-	  k0MM = neighborFZ[k0MM];
-	  kMMM = neighborFZ[kMMM];
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  (G.g[dirE])[k000] = mgcbb;
-	  (G.g[dirW])[kM00] = mgabb;
-	  (G.g[dirN])[k000] = mgbcb;
-	  (G.g[dirS])[k0M0] = mgbab;
-	  (G.g[dirT])[k000] = mgbbc;
-	  (G.g[dirB])[k00M] = mgbba;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  fP00dest[k000] = mfcbb;
-	  fM00dest[kM00] = mfabb;
-	  f0P0dest[k000] = mfbcb;
-	  f0M0dest[k0M0] = mfbab;
-	  f00Pdest[k000] = mfbbc;
-	  f00Mdest[k00M] = mfbba;
-	  fPP0dest[k000] = mfccb;
-	  fMM0dest[kMM0] = mfaab;
-	  fPM0dest[k0M0] = mfcab;
-	  fMP0dest[kM00] = mfacb;
-	  fP0Pdest[k000] = mfcbc;
-	  fM0Mdest[kM0M] = mfaba;
-	  fP0Mdest[k00M] = mfcba;
-	  fM0Pdest[kM00] = mfabc;
-	  f0PPdest[k000] = mfbcc;
-	  f0MMdest[k0MM] = mfbaa;
-	  f0PMdest[k00M] = mfbca;
-	  f0MPdest[k0M0] = mfbac;
-	  f000dest[k000] = mfbbb;
-	  fMMMdest[kMMM] = mfaaa;
-	  fMMPdest[kMM0] = mfaac;
-	  fMPPdest[kM00] = mfacc;
-	  fMPMdest[kM0M] = mfaca;
-	  fPPMdest[k00M] = mfcca;
-	  fPPPdest[k000] = mfccc;
-	  fPMPdest[k0M0] = mfcac;
-	  fPMMdest[k0MM] = mfcaa;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-
-	  //reset
-	  mfcbb = zero;
-	  mfabb = zero;
-	  mfbcb = zero;
-	  mfbab = zero;
-	  mfbbc = zero;
-	  mfbba = zero;
-	  mfccb = zero;
-	  mfaab = zero;
-	  mfcab = zero;
-	  mfacb = zero;
-	  mfcbc = zero;
-	  mfaba = zero;
-	  mfcba = zero;
-	  mfabc = zero;
-	  mfbcc = zero;
-	  mfbaa = zero;
-	  mfbca = zero;
-	  mfbac = zero;
-	  mfbbb = zero;
-	  mfccc = zero;
-	  mfaac = zero;
-	  mfcac = zero;
-	  mfacc = zero;
-	  mfcca = zero;
-	  mfaaa = zero;
-	  mfcaa = zero;
-	  mfaca = zero;
-	  /////////////
-	  mgcbb = zero;
-	  mgabb = zero;
-	  mgbcb = zero;
-	  mgbab = zero;
-	  mgbbc = zero;
-	  mgbba = zero;
-
-
-
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //
-	  //Position SET 0.25f, -0.25f, 0.25f
-	  //
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  x =  c1o4;
-	  y = -c1o4;
-	  z =  c1o4;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //drho =c3o64*drho_NEB+c9o64*drho_NET+c1o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c27o64*drho_SET+c3o64*drho_SWB+c9o64*drho_SWT;
-	  //press = press_SET * (c27o64 - c9o16 * mxoff + c9o16 * myoff - c9o16 * mzoff) + 
-			//  press_NET * (c9o64  - c3o16 * mxoff - c9o16 * myoff - c3o16 * mzoff) + 
-			//  press_SWT * (c9o64  + c9o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + 
-			//  press_NWT * (c3o64  + c3o16 * mxoff - c3o16 * myoff - c1o16 * mzoff) + 
-			//  press_NWB * (c1o64  + c1o16 * mxoff - c1o16 * myoff + c1o16 * mzoff) + 
-			//  press_NEB * (c3o64  - c1o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + 
-			//  press_SWB * (c3o64  + c3o16 * mxoff + c1o16 * myoff + c3o16 * mzoff) + 
-			//  press_SEB * (c9o64  - c3o16 * mxoff + c3o16 * myoff + c9o16 * mzoff);
-	  //drho  = drho_SET * (c27o64 - c9o16 * xoff + c9o16 * yoff - c9o16 * zoff) + 
-			//  drho_NET * (c9o64 - c3o16 * xoff - c9o16 * yoff - c3o16 * zoff) + 
-			//  drho_SWT * (c9o64 + c9o16 * xoff + c3o16 * yoff - c3o16 * zoff) + 
-			//  drho_NWT * (c3o64 + c3o16 * xoff - c3o16 * yoff - c1o16 * zoff) + 
-			//  drho_NWB * (c1o64 + c1o16 * xoff - c1o16 * yoff + c1o16 * zoff) + 
-			//  drho_NEB * (c3o64 - c1o16 * xoff - c3o16 * yoff + c3o16 * zoff) + 
-			//  drho_SWB * (c3o64 + c3o16 * xoff + c1o16 * yoff + c3o16 * zoff) + 
-			//  drho_SEB * (c9o64 - c3o16 * xoff + c3o16 * yoff + c9o16 * zoff);
-	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
-	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
-	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
-	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
-	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
-	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
-	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
-
-	  //mfaaa = drho;
-	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
-	  mfaaa = press; // if drho is interpolated directly
-
-	  vx2 = vvx*vvx;
-	  vy2 = vvy*vvy;
-	  vz2 = vvz*vvz;
-	  oMdrho = one;
-	  //oMdrho = one - mfaaa;
-	  
-	  //2.f
-	  // linear combinations
-	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
-	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
-	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
-	 
-	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
-	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
-	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
-
-  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
-	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
-	 
-	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
-	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
-	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
-
-	  // linear combinations back
-	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
-
-	  //three
-	  // linear combinations
-	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
-	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mfbbb = zero;
-
-	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
-	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
-	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
-	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyPyzz = zero;
-
-	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
-	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
-	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyMyzz = zero;
-
-	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
-	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
-	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzPyyz = zero;
-
-	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
-	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
-	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzMyyz = zero;
-
-	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
-	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
-	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
-	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyPxzz =  zero;
-
-	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyMxzz = zero;
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  // D3Q27F 
-	  mgcbb = (ax - axx) * eps_new;
-	  mgabb = (ax + axx) * eps_new;
-	  mgbcb = (by - byy) * eps_new;
-	  mgbab = (by + byy) * eps_new;
-	  mgbbc = (cz - czz) * eps_new;
-	  mgbba = (cz + czz) * eps_new;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  // 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.f
-	  mfacc = mfaaa*c1o9; 
-	  mfcac = mfacc; 
-	  mfcca = mfacc; 
-	  //5.
-
-	  //6.
-	  mfccc = mfaaa*c1o27;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  //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;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  //////////////////////////////////////////////////////////////////////////
-	  //index 
-	  k000 = kM00;
-	  kM00 = neighborFX[kM00];
-	  k0M0 = kMM0;
-	  k00M = kM0M;
-	  kMM0 = neighborFX[kMM0];
-	  kM0M = neighborFX[kM0M];
-	  k0MM = kMMM;
-	  kMMM = neighborFX[kMMM];
-	  ////////////////////////////////////////////////////////////////////////////////
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  (G.g[dirE])[k000] = mgcbb;
-	  (G.g[dirW])[kM00] = mgabb;
-	  (G.g[dirN])[k000] = mgbcb;
-	  (G.g[dirS])[k0M0] = mgbab;
-	  (G.g[dirT])[k000] = mgbbc;
-	  (G.g[dirB])[k00M] = mgbba;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  fP00dest[k000] = mfcbb;
-	  fM00dest[kM00] = mfabb;
-	  f0P0dest[k000] = mfbcb;
-	  f0M0dest[k0M0] = mfbab;
-	  f00Pdest[k000] = mfbbc;
-	  f00Mdest[k00M] = mfbba;
-	  fPP0dest[k000] = mfccb;
-	  fMM0dest[kMM0] = mfaab;
-	  fPM0dest[k0M0] = mfcab;
-	  fMP0dest[kM00] = mfacb;
-	  fP0Pdest[k000] = mfcbc;
-	  fM0Mdest[kM0M] = mfaba;
-	  fP0Mdest[k00M] = mfcba;
-	  fM0Pdest[kM00] = mfabc;
-	  f0PPdest[k000] = mfbcc;
-	  f0MMdest[k0MM] = mfbaa;
-	  f0PMdest[k00M] = mfbca;
-	  f0MPdest[k0M0] = mfbac;
-	  f000dest[k000] = mfbbb;
-	  fMMMdest[kMMM] = mfaaa;
-	  fMMPdest[kMM0] = mfaac;
-	  fMPPdest[kM00] = mfacc;
-	  fMPMdest[kM0M] = mfaca;
-	  fPPMdest[k00M] = mfcca;
-	  fPPPdest[k000] = mfccc;
-	  fPMPdest[k0M0] = mfcac;
-	  fPMMdest[k0MM] = mfcaa;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  //reset
-	  mfcbb = zero;
-	  mfabb = zero;
-	  mfbcb = zero;
-	  mfbab = zero;
-	  mfbbc = zero;
-	  mfbba = zero;
-	  mfccb = zero;
-	  mfaab = zero;
-	  mfcab = zero;
-	  mfacb = zero;
-	  mfcbc = zero;
-	  mfaba = zero;
-	  mfcba = zero;
-	  mfabc = zero;
-	  mfbcc = zero;
-	  mfbaa = zero;
-	  mfbca = zero;
-	  mfbac = zero;
-	  mfbbb = zero;
-	  mfccc = zero;
-	  mfaac = zero;
-	  mfcac = zero;
-	  mfacc = zero;
-	  mfcca = zero;
-	  mfaaa = zero;
-	  mfcaa = zero;
-	  mfaca = zero;
-	  /////////////
-	  mgcbb = zero;
-	  mgabb = zero;
-	  mgbcb = zero;
-	  mgbab = zero;
-	  mgbbc = zero;
-	  mgbba = zero;
-
-
-
-
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //
-	  //Position SEB 0.25f, -0.25f, -0.25f
-	  //
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  x =  c1o4;
-	  y = -c1o4;
-	  z = -c1o4;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //drho =c9o64*drho_NEB+c3o64*drho_NET+c3o64*drho_NWB+c1o64*drho_NWT+c27o64*drho_SEB+c9o64*drho_SET+c9o64*drho_SWB+c3o64*drho_SWT;
-	  //press = press_SET * (c9o64  - c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + 
-			//  press_NET * (c3o64  - c1o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + 
-			//  press_SWT * (c3o64  + c3o16 * mxoff + c1o16 * myoff - c3o16 * mzoff) + 
-			//  press_NWT * (c1o64  + c1o16 * mxoff - c1o16 * myoff - c1o16 * mzoff) + 
-			//  press_NWB * (c3o64  + c3o16 * mxoff - c3o16 * myoff + c1o16 * mzoff) + 
-			//  press_NEB * (c9o64  - c3o16 * mxoff - c9o16 * myoff + c3o16 * mzoff) + 
-			//  press_SWB * (c9o64  + c9o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + 
-			//  press_SEB * (c27o64 - c9o16 * mxoff + c9o16 * myoff + c9o16 * mzoff);
-	  //drho =  drho_SET * (c9o64 - c3o16 * xoff + c3o16 * yoff - c9o16 * zoff) + 
-			//  drho_NET * (c3o64 - c1o16 * xoff - c3o16 * yoff - c3o16 * zoff) + 
-			//  drho_SWT * (c3o64 + c3o16 * xoff + c1o16 * yoff - c3o16 * zoff) + 
-			//  drho_NWT * (c1o64 + c1o16 * xoff - c1o16 * yoff - c1o16 * zoff) + 
-			//  drho_NWB * (c3o64 + c3o16 * xoff - c3o16 * yoff + c1o16 * zoff) + 
-			//  drho_NEB * (c9o64 - c3o16 * xoff - c9o16 * yoff + c3o16 * zoff) + 
-			//  drho_SWB * (c9o64 + c9o16 * xoff + c3o16 * yoff + c3o16 * zoff) + 
-			//  drho_SEB * (c27o64 - c9o16 * xoff + c9o16 * yoff + c9o16 * zoff);
-	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
-	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
-	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
-	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
-	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
-	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
-	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
-
-	  //mfaaa = drho;
-	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
-	  mfaaa = press; // if drho is interpolated directly
-
-	  vx2 = vvx*vvx;
-	  vy2 = vvy*vvy;
-	  vz2 = vvz*vvz;
-	  oMdrho = one;
-	  //oMdrho = one - mfaaa;
-	  
-	  //2.f
-	  // linear combinations
-	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
-	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
-	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
-	 
-	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
-	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
-	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
-
-  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
-	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
-	 
-	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
-	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
-	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
-
-	  // linear combinations back
-	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
-
-	  //three
-	  // linear combinations
-	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
-	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mfbbb = zero;
-
-	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
-	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
-	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
-	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyPyzz = zero;
-
-	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
-	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
-	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyMyzz = zero;
-
-	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
-	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
-	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzPyyz = zero;
-
-	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
-	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
-	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzMyyz = zero;
-
-	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
-	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
-	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
-	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyPxzz =  zero;
-
-	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyMxzz = zero;
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  // D3Q27F 
-	  mgcbb = (ax - axx) * eps_new;
-	  mgabb = (ax + axx) * eps_new;
-	  mgbcb = (by - byy) * eps_new;
-	  mgbab = (by + byy) * eps_new;
-	  mgbbc = (cz - czz) * eps_new;
-	  mgbba = (cz + czz) * eps_new;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  // 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.f
-	  mfacc = mfaaa*c1o9; 
-	  mfcac = mfacc; 
-	  mfcca = mfacc; 
-	  //5.
-
-	  //6.
-	  mfccc = mfaaa*c1o27;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  //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;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  //////////////////////////////////////////////////////////////////////////
-	  //index 
-	  k00M = k000;
-	  kM0M = kM00;
-	  k0MM = k0M0;
-	  kMMM = kMM0;
-	  k000 = kM00base;
-	  kM00 = neighborFX[kM00base];
-	  k0M0 = kMM0base;
-	  kMM0 = neighborFX[kMM0base];
-	  ////////////////////////////////////////////////////////////////////////////////
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  (G.g[dirE])[k000] = mgcbb;
-	  (G.g[dirW])[kM00] = mgabb;
-	  (G.g[dirN])[k000] = mgbcb;
-	  (G.g[dirS])[k0M0] = mgbab;
-	  (G.g[dirT])[k000] = mgbbc;
-	  (G.g[dirB])[k00M] = mgbba;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  fP00dest[k000] = mfcbb;
-	  fM00dest[kM00] = mfabb;
-	  f0P0dest[k000] = mfbcb;
-	  f0M0dest[k0M0] = mfbab;
-	  f00Pdest[k000] = mfbbc;
-	  f00Mdest[k00M] = mfbba;
-	  fPP0dest[k000] = mfccb;
-	  fMM0dest[kMM0] = mfaab;
-	  fPM0dest[k0M0] = mfcab;
-	  fMP0dest[kM00] = mfacb;
-	  fP0Pdest[k000] = mfcbc;
-	  fM0Mdest[kM0M] = mfaba;
-	  fP0Mdest[k00M] = mfcba;
-	  fM0Pdest[kM00] = mfabc;
-	  f0PPdest[k000] = mfbcc;
-	  f0MMdest[k0MM] = mfbaa;
-	  f0PMdest[k00M] = mfbca;
-	  f0MPdest[k0M0] = mfbac;
-	  f000dest[k000] = mfbbb;
-	  fMMMdest[kMMM] = mfaaa;
-	  fMMPdest[kMM0] = mfaac;
-	  fMPPdest[kM00] = mfacc;
-	  fMPMdest[kM0M] = mfaca;
-	  fPPMdest[k00M] = mfcca;
-	  fPPPdest[k000] = mfccc;
-	  fPMPdest[k0M0] = mfcac;
-	  fPMMdest[k0MM] = mfcaa;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-
-	  //reset
-	  mfcbb = zero;
-	  mfabb = zero;
-	  mfbcb = zero;
-	  mfbab = zero;
-	  mfbbc = zero;
-	  mfbba = zero;
-	  mfccb = zero;
-	  mfaab = zero;
-	  mfcab = zero;
-	  mfacb = zero;
-	  mfcbc = zero;
-	  mfaba = zero;
-	  mfcba = zero;
-	  mfabc = zero;
-	  mfbcc = zero;
-	  mfbaa = zero;
-	  mfbca = zero;
-	  mfbac = zero;
-	  mfbbb = zero;
-	  mfccc = zero;
-	  mfaac = zero;
-	  mfcac = zero;
-	  mfacc = zero;
-	  mfcca = zero;
-	  mfaaa = zero;
-	  mfcaa = zero;
-	  mfaca = zero;
-	  /////////////
-	  mgcbb = zero;
-	  mgabb = zero;
-	  mgbcb = zero;
-	  mgbab = zero;
-	  mgbbc = zero;
-	  mgbba = zero;
-
-
-
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //
-	  //Position NWB -0.25f, 0.25f, -0.25f
-	  //
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  x = -c1o4;
-	  y =  c1o4;
-	  z = -c1o4;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //drho = c9o64*drho_NEB+c3o64*drho_NET+c27o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c1o64*drho_SET+c9o64*drho_SWB+c3o64*drho_SWT;
-	  //press = press_NWT * (c9o64  + c3o16 * mxoff - c3o16 * myoff - c9o16 * mzoff) + 
-			//  press_NET * (c3o64  - c3o16 * mxoff - c1o16 * myoff - c3o16 * mzoff) + 
-			//  press_SWT * (c3o64  + c1o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + 
-			//  press_SET * (c1o64  - c1o16 * mxoff + c1o16 * myoff - c1o16 * mzoff) + 
-			//  press_SEB * (c3o64  - c3o16 * mxoff + c3o16 * myoff + c1o16 * mzoff) + 
-			//  press_NEB * (c9o64  - c9o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + 
-			//  press_SWB * (c9o64  + c3o16 * mxoff + c9o16 * myoff + c3o16 * mzoff) + 
-			//  press_NWB * (c27o64 + c9o16 * mxoff - c9o16 * myoff + c9o16 * mzoff);
-	  //drho  = drho_NWT * (c9o64 + c3o16 * xoff - c3o16 * yoff - c9o16 * zoff) + 
-			//  drho_NET * (c3o64 - c3o16 * xoff - c1o16 * yoff - c3o16 * zoff) + 
-			//  drho_SWT * (c3o64 + c1o16 * xoff + c3o16 * yoff - c3o16 * zoff) + 
-			//  drho_SET * (c1o64 - c1o16 * xoff + c1o16 * yoff - c1o16 * zoff) + 
-			//  drho_SEB * (c3o64 - c3o16 * xoff + c3o16 * yoff + c1o16 * zoff) + 
-			//  drho_NEB * (c9o64 - c9o16 * xoff - c3o16 * yoff + c3o16 * zoff) + 
-			//  drho_SWB * (c9o64 + c3o16 * xoff + c9o16 * yoff + c3o16 * zoff) + 
-			//  drho_NWB * (c27o64 + c9o16 * xoff - c9o16 * yoff + c9o16 * zoff);
-	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
-	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
-	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
-	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
-	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
-	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
-	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
-
-	  //mfaaa = drho;
-	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
-	  mfaaa = press; // if drho is interpolated directly
-
-	  vx2 = vvx*vvx;
-	  vy2 = vvy*vvy;
-	  vz2 = vvz*vvz;
-	  oMdrho = one;
-	  //oMdrho = one - mfaaa;
-	  
-	  //2.f
-	  // linear combinations
-	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
-	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
-	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
-	 
-	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
-	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
-	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
-
-  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
-	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
-	 
-	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
-	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
-	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
-
-	  // linear combinations back
-	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
-
-	  //three
-	  // linear combinations
-	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
-	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mfbbb = zero;
-
-	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
-	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
-	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
-	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyPyzz = zero;
-
-	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
-	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
-	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyMyzz = zero;
-
-	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
-	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
-	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzPyyz = zero;
-
-	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
-	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
-	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzMyyz = zero;
-
-	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
-	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
-	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
-	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyPxzz =  zero;
-
-	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyMxzz = zero;
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  // D3Q27F 
-	  mgcbb = (ax - axx) * eps_new;
-	  mgabb = (ax + axx) * eps_new;
-	  mgbcb = (by - byy) * eps_new;
-	  mgbab = (by + byy) * eps_new;
-	  mgbbc = (cz - czz) * eps_new;
-	  mgbba = (cz + czz) * eps_new;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  // 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.f
-	  mfacc = mfaaa*c1o9; 
-	  mfcac = mfacc; 
-	  mfcca = mfacc; 
-	  //5.
-
-	  //6.
-	  mfccc = mfaaa*c1o27;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  //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;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  //////////////////////////////////////////////////////////////////////////
-	  //index 0
-	  k000base = k0M0base;
-	  kM00base = kMM0base;
-	  k0M0base = neighborFY[k0M0base];
-	  k00Mbase = k0MMbase;
-	  kMM0base = neighborFY[kMM0base];
-	  kM0Mbase = kMMMbase;
-	  k0MMbase = neighborFY[k0MMbase];
-	  kMMMbase = neighborFY[kMMMbase];
-	  //////////////////////////////////////////////////////////////////////////
-	  //index 
-	  k000 = k000base;
-	  kM00 = kM00base;
-	  k0M0 = k0M0base;
-	  k00M = k00Mbase;
-	  kMM0 = kMM0base;
-	  kM0M = kM0Mbase;
-	  k0MM = k0MMbase;
-	  kMMM = kMMMbase;
-	  ////////////////////////////////////////////////////////////////////////////////
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  (G.g[dirE])[k000] = mgcbb;
-	  (G.g[dirW])[kM00] = mgabb;
-	  (G.g[dirN])[k000] = mgbcb;
-	  (G.g[dirS])[k0M0] = mgbab;
-	  (G.g[dirT])[k000] = mgbbc;
-	  (G.g[dirB])[k00M] = mgbba;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  fP00dest[k000] = mfcbb;
-	  fM00dest[kM00] = mfabb;
-	  f0P0dest[k000] = mfbcb;
-	  f0M0dest[k0M0] = mfbab;
-	  f00Pdest[k000] = mfbbc;
-	  f00Mdest[k00M] = mfbba;
-	  fPP0dest[k000] = mfccb;
-	  fMM0dest[kMM0] = mfaab;
-	  fPM0dest[k0M0] = mfcab;
-	  fMP0dest[kM00] = mfacb;
-	  fP0Pdest[k000] = mfcbc;
-	  fM0Mdest[kM0M] = mfaba;
-	  fP0Mdest[k00M] = mfcba;
-	  fM0Pdest[kM00] = mfabc;
-	  f0PPdest[k000] = mfbcc;
-	  f0MMdest[k0MM] = mfbaa;
-	  f0PMdest[k00M] = mfbca;
-	  f0MPdest[k0M0] = mfbac;
-	  f000dest[k000] = mfbbb;
-	  fMMMdest[kMMM] = mfaaa;
-	  fMMPdest[kMM0] = mfaac;
-	  fMPPdest[kM00] = mfacc;
-	  fMPMdest[kM0M] = mfaca;
-	  fPPMdest[k00M] = mfcca;
-	  fPPPdest[k000] = mfccc;
-	  fPMPdest[k0M0] = mfcac;
-	  fPMMdest[k0MM] = mfcaa;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-
-	  //reset
-	  mfcbb = zero;
-	  mfabb = zero;
-	  mfbcb = zero;
-	  mfbab = zero;
-	  mfbbc = zero;
-	  mfbba = zero;
-	  mfccb = zero;
-	  mfaab = zero;
-	  mfcab = zero;
-	  mfacb = zero;
-	  mfcbc = zero;
-	  mfaba = zero;
-	  mfcba = zero;
-	  mfabc = zero;
-	  mfbcc = zero;
-	  mfbaa = zero;
-	  mfbca = zero;
-	  mfbac = zero;
-	  mfbbb = zero;
-	  mfccc = zero;
-	  mfaac = zero;
-	  mfcac = zero;
-	  mfacc = zero;
-	  mfcca = zero;
-	  mfaaa = zero;
-	  mfcaa = zero;
-	  mfaca = zero;
-	  /////////////
-	  mgcbb = zero;
-	  mgabb = zero;
-	  mgbcb = zero;
-	  mgbab = zero;
-	  mgbbc = zero;
-	  mgbba = zero;
-
-
-
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //
-	  //Position NWT -0.25f, 0.25f, 0.25f
-	  //
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  x = -c1o4;
-	  y =  c1o4;
-	  z =  c1o4;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //drho = c3o64*drho_NEB+c9o64*drho_NET+c9o64*drho_NWB+c27o64*drho_NWT+c1o64*drho_SEB+c3o64*drho_SET+c3o64*drho_SWB+c9o64*drho_SWT;
-	  //press = press_NWT * (c27o64 + c9o16 * mxoff - c9o16 * myoff - c9o16 * mzoff) + 
-			//  press_NET * (c9o64  - c9o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + 
-			//  press_SWT * (c9o64  + c3o16 * mxoff + c9o16 * myoff - c3o16 * mzoff) + 
-			//  press_SET * (c3o64  - c3o16 * mxoff + c3o16 * myoff - c1o16 * mzoff) + 
-			//  press_SEB * (c1o64  - c1o16 * mxoff + c1o16 * myoff + c1o16 * mzoff) + 
-			//  press_NEB * (c3o64  - c3o16 * mxoff - c1o16 * myoff + c3o16 * mzoff) + 
-			//  press_SWB * (c3o64  + c1o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + 
-			//  press_NWB * (c9o64  + c3o16 * mxoff - c3o16 * myoff + c9o16 * mzoff);
-	  //drho  = drho_NWT * (c27o64 + c9o16 * xoff - c9o16 * yoff - c9o16 * zoff) + 
-			//  drho_NET * (c9o64 - c9o16 * xoff - c3o16 * yoff - c3o16 * zoff) + 
-			//  drho_SWT * (c9o64 + c3o16 * xoff + c9o16 * yoff - c3o16 * zoff) + 
-			//  drho_SET * (c3o64 - c3o16 * xoff + c3o16 * yoff - c1o16 * zoff) + 
-			//  drho_SEB * (c1o64 - c1o16 * xoff + c1o16 * yoff + c1o16 * zoff) + 
-			//  drho_NEB * (c3o64 - c3o16 * xoff - c1o16 * yoff + c3o16 * zoff) + 
-			//  drho_SWB * (c3o64 + c1o16 * xoff + c3o16 * yoff + c3o16 * zoff) + 
-			//  drho_NWB * (c9o64 + c3o16 * xoff - c3o16 * yoff + c9o16 * zoff);
-	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
-	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
-	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
-	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
-	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
-	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
-	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
-
-	  //mfaaa = drho;
-	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
-	  mfaaa = press; // if drho is interpolated directly
-
-	  vx2 = vvx*vvx;
-	  vy2 = vvy*vvy;
-	  vz2 = vvz*vvz;
-	  oMdrho = one;
-	  //oMdrho = one - mfaaa;
-	  
-	  //2.f
-	  // linear combinations
-	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
-	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
-	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
-	 
-	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
-	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
-	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
-
-  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
-	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
-	 
-	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
-	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
-	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
-
-	  // linear combinations back
-	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
-
-	  //three
-	  // linear combinations
-	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
-	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mfbbb = zero;
-
-	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
-	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
-	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
-	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyPyzz = zero;
-
-	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
-	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
-	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyMyzz = zero;
-
-	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
-	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
-	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzPyyz = zero;
-
-	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
-	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
-	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzMyyz = zero;
-
-	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
-	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
-	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
-	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyPxzz =  zero;
-
-	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyMxzz = zero;
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  // D3Q27F 
-	  mgcbb = (ax - axx) * eps_new;
-	  mgabb = (ax + axx) * eps_new;
-	  mgbcb = (by - byy) * eps_new;
-	  mgbab = (by + byy) * eps_new;
-	  mgbbc = (cz - czz) * eps_new;
-	  mgbba = (cz + czz) * eps_new;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  // 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.f
-	  mfacc = mfaaa*c1o9; 
-	  mfcac = mfacc; 
-	  mfcca = mfacc; 
-	  //5.
-
-	  //6.
-	  mfccc = mfaaa*c1o27;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  //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;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  //////////////////////////////////////////////////////////////////////////
-	  //index 
-	  k000 = k00M;
-	  kM00 = kM0M;
-	  k0M0 = k0MM;
-	  k00M = neighborFZ[k00M];
-	  kMM0 = kMMM;
-	  kM0M = neighborFZ[kM0M];
-	  k0MM = neighborFZ[k0MM];
-	  kMMM = neighborFZ[kMMM];
-	  ////////////////////////////////////////////////////////////////////////////////
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  (G.g[dirE])[k000] = mgcbb;
-	  (G.g[dirW])[kM00] = mgabb;
-	  (G.g[dirN])[k000] = mgbcb;
-	  (G.g[dirS])[k0M0] = mgbab;
-	  (G.g[dirT])[k000] = mgbbc;
-	  (G.g[dirB])[k00M] = mgbba;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  fP00dest[k000] = mfcbb;
-	  fM00dest[kM00] = mfabb;
-	  f0P0dest[k000] = mfbcb;
-	  f0M0dest[k0M0] = mfbab;
-	  f00Pdest[k000] = mfbbc;
-	  f00Mdest[k00M] = mfbba;
-	  fPP0dest[k000] = mfccb;
-	  fMM0dest[kMM0] = mfaab;
-	  fPM0dest[k0M0] = mfcab;
-	  fMP0dest[kM00] = mfacb;
-	  fP0Pdest[k000] = mfcbc;
-	  fM0Mdest[kM0M] = mfaba;
-	  fP0Mdest[k00M] = mfcba;
-	  fM0Pdest[kM00] = mfabc;
-	  f0PPdest[k000] = mfbcc;
-	  f0MMdest[k0MM] = mfbaa;
-	  f0PMdest[k00M] = mfbca;
-	  f0MPdest[k0M0] = mfbac;
-	  f000dest[k000] = mfbbb;
-	  fMMMdest[kMMM] = mfaaa;
-	  fMMPdest[kMM0] = mfaac;
-	  fMPPdest[kM00] = mfacc;
-	  fMPMdest[kM0M] = mfaca;
-	  fPPMdest[k00M] = mfcca;
-	  fPPPdest[k000] = mfccc;
-	  fPMPdest[k0M0] = mfcac;
-	  fPMMdest[k0MM] = mfcaa;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-
-	  //reset
-	  mfcbb = zero;
-	  mfabb = zero;
-	  mfbcb = zero;
-	  mfbab = zero;
-	  mfbbc = zero;
-	  mfbba = zero;
-	  mfccb = zero;
-	  mfaab = zero;
-	  mfcab = zero;
-	  mfacb = zero;
-	  mfcbc = zero;
-	  mfaba = zero;
-	  mfcba = zero;
-	  mfabc = zero;
-	  mfbcc = zero;
-	  mfbaa = zero;
-	  mfbca = zero;
-	  mfbac = zero;
-	  mfbbb = zero;
-	  mfccc = zero;
-	  mfaac = zero;
-	  mfcac = zero;
-	  mfacc = zero;
-	  mfcca = zero;
-	  mfaaa = zero;
-	  mfcaa = zero;
-	  mfaca = zero;
-	  /////////////
-	  mgcbb = zero;
-	  mgabb = zero;
-	  mgbcb = zero;
-	  mgbab = zero;
-	  mgbbc = zero;
-	  mgbba = zero;
-
-
-
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //
-	  //Position NET 0.25f, 0.25f, 0.25f
-	  //
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  x = c1o4;
-	  y = c1o4;
-	  z = c1o4;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //drho = c9o64*drho_NEB+c27o64*drho_NET+c3o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c9o64*drho_SET+c1o64*drho_SWB+c3o64*drho_SWT;
-	  //press = press_NET * (c27o64 - c9o16 * mxoff - c9o16 * myoff - c9o16 * mzoff) + 
-			//  press_NWT * (c9o64  + c9o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + 
-			//  press_SET * (c9o64  - c3o16 * mxoff + c9o16 * myoff - c3o16 * mzoff) + 
-			//  press_SWT * (c3o64  + c3o16 * mxoff + c3o16 * myoff - c1o16 * mzoff) + 
-			//  press_SWB * (c1o64  + c1o16 * mxoff + c1o16 * myoff + c1o16 * mzoff) + 
-			//  press_NWB * (c3o64  + c3o16 * mxoff - c1o16 * myoff + c3o16 * mzoff) + 
-			//  press_SEB * (c3o64  - c1o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + 
-			//  press_NEB * (c9o64  - c3o16 * mxoff - c3o16 * myoff + c9o16 * mzoff);
-	  //drho  = drho_NET * (c27o64 - c9o16 * xoff - c9o16 * yoff - c9o16 * zoff) + 
-			//  drho_NWT * (c9o64 + c9o16 * xoff - c3o16 * yoff - c3o16 * zoff) + 
-			//  drho_SET * (c9o64 - c3o16 * xoff + c9o16 * yoff - c3o16 * zoff) + 
-			//  drho_SWT * (c3o64 + c3o16 * xoff + c3o16 * yoff - c1o16 * zoff) + 
-			//  drho_SWB * (c1o64 + c1o16 * xoff + c1o16 * yoff + c1o16 * zoff) + 
-			//  drho_NWB * (c3o64 + c3o16 * xoff - c1o16 * yoff + c3o16 * zoff) + 
-			//  drho_SEB * (c3o64 - c1o16 * xoff + c3o16 * yoff + c3o16 * zoff) + 
-			//  drho_NEB * (c9o64 - c3o16 * xoff - c3o16 * yoff + c9o16 * zoff);
-	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
-	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
-	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
-	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
-	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
-	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
-	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
-
-	  //mfaaa = drho;
-	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
-	  mfaaa = press; // if drho is interpolated directly
-
-	  vx2 = vvx*vvx;
-	  vy2 = vvy*vvy;
-	  vz2 = vvz*vvz;
-	  oMdrho = one;
-	  //oMdrho = one - mfaaa;
-	  
-	  //2.f
-	  // linear combinations
-	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
-	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
-	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
-	 
-	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
-	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
-	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
-
-  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
-	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
-	 
-	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
-	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
-	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
-
-	  // linear combinations back
-	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
-
-	  //three
-	  // linear combinations
-	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
-	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mfbbb = zero;
-
-	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
-	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
-	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
-	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyPyzz = zero;
-
-	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
-	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
-	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyMyzz = zero;
-
-	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
-	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
-	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzPyyz = zero;
-
-	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
-	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
-	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzMyyz = zero;
-
-	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
-	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
-	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
-	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyPxzz =  zero;
-
-	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyMxzz = zero;
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  // D3Q27F 
-	  mgcbb = (ax - axx) * eps_new;
-	  mgabb = (ax + axx) * eps_new;
-	  mgbcb = (by - byy) * eps_new;
-	  mgbab = (by + byy) * eps_new;
-	  mgbbc = (cz - czz) * eps_new;
-	  mgbba = (cz + czz) * eps_new;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  // 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.f
-	  mfacc = mfaaa*c1o9; 
-	  mfcac = mfacc; 
-	  mfcca = mfacc; 
-	  //5.
-
-	  //6.
-	  mfccc = mfaaa*c1o27;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  //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;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  //////////////////////////////////////////////////////////////////////////
-	  //index 
-	  k000 = kM00;
-	  kM00 = neighborFX[kM00];
-	  k0M0 = kMM0;
-	  k00M = kM0M;
-	  kMM0 = neighborFX[kMM0];
-	  kM0M = neighborFX[kM0M];
-	  k0MM = kMMM;
-	  kMMM = neighborFX[kMMM];
-	  ////////////////////////////////////////////////////////////////////////////////
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  (G.g[dirE])[k000] = mgcbb;
-	  (G.g[dirW])[kM00] = mgabb;
-	  (G.g[dirN])[k000] = mgbcb;
-	  (G.g[dirS])[k0M0] = mgbab;
-	  (G.g[dirT])[k000] = mgbbc;
-	  (G.g[dirB])[k00M] = mgbba;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  fP00dest[k000] = mfcbb;
-	  fM00dest[kM00] = mfabb;
-	  f0P0dest[k000] = mfbcb;
-	  f0M0dest[k0M0] = mfbab;
-	  f00Pdest[k000] = mfbbc;
-	  f00Mdest[k00M] = mfbba;
-	  fPP0dest[k000] = mfccb;
-	  fMM0dest[kMM0] = mfaab;
-	  fPM0dest[k0M0] = mfcab;
-	  fMP0dest[kM00] = mfacb;
-	  fP0Pdest[k000] = mfcbc;
-	  fM0Mdest[kM0M] = mfaba;
-	  fP0Mdest[k00M] = mfcba;
-	  fM0Pdest[kM00] = mfabc;
-	  f0PPdest[k000] = mfbcc;
-	  f0MMdest[k0MM] = mfbaa;
-	  f0PMdest[k00M] = mfbca;
-	  f0MPdest[k0M0] = mfbac;
-	  f000dest[k000] = mfbbb;
-	  fMMMdest[kMMM] = mfaaa;
-	  fMMPdest[kMM0] = mfaac;
-	  fMPPdest[kM00] = mfacc;
-	  fMPMdest[kM0M] = mfaca;
-	  fPPMdest[k00M] = mfcca;
-	  fPPPdest[k000] = mfccc;
-	  fPMPdest[k0M0] = mfcac;
-	  fPMMdest[k0MM] = mfcaa;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-
-	  //reset
-	  mfcbb = zero;
-	  mfabb = zero;
-	  mfbcb = zero;
-	  mfbab = zero;
-	  mfbbc = zero;
-	  mfbba = zero;
-	  mfccb = zero;
-	  mfaab = zero;
-	  mfcab = zero;
-	  mfacb = zero;
-	  mfcbc = zero;
-	  mfaba = zero;
-	  mfcba = zero;
-	  mfabc = zero;
-	  mfbcc = zero;
-	  mfbaa = zero;
-	  mfbca = zero;
-	  mfbac = zero;
-	  mfbbb = zero;
-	  mfccc = zero;
-	  mfaac = zero;
-	  mfcac = zero;
-	  mfacc = zero;
-	  mfcca = zero;
-	  mfaaa = zero;
-	  mfcaa = zero;
-	  mfaca = zero;
-	  /////////////
-	  mgcbb = zero;
-	  mgabb = zero;
-	  mgbcb = zero;
-	  mgbab = zero;
-	  mgbbc = zero;
-	  mgbba = zero;
-
-
-
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //
-	  //Position NEB 0.25f, 0.25f, -0.25f
-	  //
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  x =  c1o4;
-	  y =  c1o4;
-	  z = -c1o4;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //drho = c27o64*drho_NEB+c9o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c3o64*drho_SWB+c1o64*drho_SWT;
-	  //press = press_NET * (c9o64  - c3o16 * mxoff - c3o16 * myoff - c9o16 * mzoff) + 
-			//  press_NWT * (c3o64  + c3o16 * mxoff - c1o16 * myoff - c3o16 * mzoff) + 
-			//  press_SET * (c3o64  - c1o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + 
-			//  press_SWT * (c1o64  + c1o16 * mxoff + c1o16 * myoff - c1o16 * mzoff) + 
-			//  press_SWB * (c3o64  + c3o16 * mxoff + c3o16 * myoff + c1o16 * mzoff) + 
-			//  press_NWB * (c9o64  + c9o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + 
-			//  press_SEB * (c9o64  - c3o16 * mxoff + c9o16 * myoff + c3o16 * mzoff) + 
-			//  press_NEB * (c27o64 - c9o16 * mxoff - c9o16 * myoff + c9o16 * mzoff);
-	  //drho  = drho_NET * (c9o64 - c3o16 * xoff - c3o16 * yoff - c9o16 * zoff) + 
-			//  drho_NWT * (c3o64 + c3o16 * xoff - c1o16 * yoff - c3o16 * zoff) + 
-			//  drho_SET * (c3o64 - c1o16 * xoff + c3o16 * yoff - c3o16 * zoff) + 
-			//  drho_SWT * (c1o64 + c1o16 * xoff + c1o16 * yoff - c1o16 * zoff) + 
-			//  drho_SWB * (c3o64 + c3o16 * xoff + c3o16 * yoff + c1o16 * zoff) + 
-			//  drho_NWB * (c9o64 + c9o16 * xoff - c3o16 * yoff + c3o16 * zoff) + 
-			//  drho_SEB * (c9o64 - c3o16 * xoff + c9o16 * yoff + c3o16 * zoff) + 
-			//  drho_NEB * (c27o64 - c9o16 * xoff - c9o16 * yoff + c9o16 * zoff);
-	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
-	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
-	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
-	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
-	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
-	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
-	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
-
-	  //mfaaa = drho;
-	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
-	  mfaaa = press; // if drho is interpolated directly
-
-	  vx2 = vvx*vvx;
-	  vy2 = vvy*vvy;
-	  vz2 = vvz*vvz;
-	  oMdrho = one;
-	  //oMdrho = one - mfaaa;
-	  
-	  //2.f
-	  // linear combinations
-	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
-	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
-	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
-	 
-	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
-	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
-	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
-
-  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
-	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
-	 
-	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
-	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
-	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
-
-	  // linear combinations back
-	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
-
-	  //three
-	  // linear combinations
-	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
-	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mfbbb = zero;
-
-	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
-	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
-	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
-	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyPyzz = zero;
-
-	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
-	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
-	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyMyzz = zero;
-
-	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
-	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
-	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
-	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzPyyz = zero;
-
-	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
-	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
-	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzMyyz = zero;
-
-	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
-	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
-	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
-	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyPxzz =  zero;
-
-	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
-	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyMxzz = zero;
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  // D3Q27F 
-	  mgcbb = (ax - axx) * eps_new;
-	  mgabb = (ax + axx) * eps_new;
-	  mgbcb = (by - byy) * eps_new;
-	  mgbab = (by + byy) * eps_new;
-	  mgbbc = (cz - czz) * eps_new;
-	  mgbba = (cz + czz) * eps_new;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  // 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.f
-	  mfacc = mfaaa*c1o9; 
-	  mfcac = mfacc; 
-	  mfcca = mfacc; 
-	  //5.
-
-	  //6.
-	  mfccc = mfaaa*c1o27;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  //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;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  //////////////////////////////////////////////////////////////////////////
-	  //index 
-	  k00M = k000;   
-	  kM0M = kM00;
-	  k0MM = k0M0;
-	  kMMM = kMM0;
-	  k000 = kM00base;
-	  kM00 = neighborFX[kM00base];
-	  k0M0 = kMM0base;
-	  kMM0 = neighborFX[kMM0base];
-	  ////////////////////////////////////////////////////////////////////////////////
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  (G.g[dirE])[k000] = mgcbb;
-	  (G.g[dirW])[kM00] = mgabb;
-	  (G.g[dirN])[k000] = mgbcb;
-	  (G.g[dirS])[k0M0] = mgbab;
-	  (G.g[dirT])[k000] = mgbbc;
-	  (G.g[dirB])[k00M] = mgbba;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  fP00dest[k000] = mfcbb;
-	  fM00dest[kM00] = mfabb;
-	  f0P0dest[k000] = mfbcb;
-	  f0M0dest[k0M0] = mfbab;
-	  f00Pdest[k000] = mfbbc;
-	  f00Mdest[k00M] = mfbba;
-	  fPP0dest[k000] = mfccb;
-	  fMM0dest[kMM0] = mfaab;
-	  fPM0dest[k0M0] = mfcab;
-	  fMP0dest[kM00] = mfacb;
-	  fP0Pdest[k000] = mfcbc;
-	  fM0Mdest[kM0M] = mfaba;
-	  fP0Mdest[k00M] = mfcba;
-	  fM0Pdest[kM00] = mfabc;
-	  f0PPdest[k000] = mfbcc;
-	  f0MMdest[k0MM] = mfbaa;
-	  f0PMdest[k00M] = mfbca;
-	  f0MPdest[k0M0] = mfbac;
-	  f000dest[k000] = mfbbb;
-	  fMMMdest[kMMM] = mfaaa;
-	  fMMPdest[kMM0] = mfaac;
-	  fMPPdest[kM00] = mfacc;
-	  fMPMdest[kM0M] = mfaca;
-	  fPPMdest[k00M] = mfcca;
-	  fPPPdest[k000] = mfccc;
-	  fPMPdest[k0M0] = mfcac;
-	  fPMMdest[k0MM] = mfcaa;
-	  ////////////////////////////////////////////////////////////////////////////////////
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 
 //////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void scaleCF_0817_comp_27( real* DC, 
diff --git a/src/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu b/src/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu
new file mode 100644
index 000000000..f2d312908
--- /dev/null
+++ b/src/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu
@@ -0,0 +1,8624 @@
+//  _    ___      __              __________      _     __        ______________   __
+// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____   /  ___/ __  / /  / /
+// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/  / /___/ /_/ / /  / /
+// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )  / /_) / ____/ /__/ / 
+// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/   \____/_/    \_____/
+//
+//////////////////////////////////////////////////////////////////////////
+/* Device code */
+#include "LBM/D3Q27.h"
+#include "GPU/constant.h"
+
+//////////////////////////////////////////////////////////////////////////
+extern "C" __global__ void scaleCF_comp_D3Q27F3_2018(real* DC,
+													 real* DF,
+													 real* G6,
+													 unsigned int* neighborCX,
+													 unsigned int* neighborCY,
+													 unsigned int* neighborCZ,
+													 unsigned int* neighborFX,
+													 unsigned int* neighborFY,
+													 unsigned int* neighborFZ,
+													 unsigned int size_MatC, 
+													 unsigned int size_MatF, 
+													 bool evenOrOdd,
+													 unsigned int* posCSWB, 
+													 unsigned int* posFSWB, 
+													 unsigned int kCF, 
+													 real omCoarse, 
+													 real omFine, 
+													 real nu, 
+													 unsigned int nxC, 
+													 unsigned int nyC, 
+													 unsigned int nxF, 
+													 unsigned int nyF,
+													 OffCF offCF)
+{
+	real
+		*fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest,
+		*fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest,
+		*f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest;
+
+
+	fP00dest = &DF[dirE   *size_MatF];
+	fM00dest = &DF[dirW   *size_MatF];
+	f0P0dest = &DF[dirN   *size_MatF];
+	f0M0dest = &DF[dirS   *size_MatF];
+	f00Pdest = &DF[dirT   *size_MatF];
+	f00Mdest = &DF[dirB   *size_MatF];
+	fPP0dest = &DF[dirNE  *size_MatF];
+	fMM0dest = &DF[dirSW  *size_MatF];
+	fPM0dest = &DF[dirSE  *size_MatF];
+	fMP0dest = &DF[dirNW  *size_MatF];
+	fP0Pdest = &DF[dirTE  *size_MatF];
+	fM0Mdest = &DF[dirBW  *size_MatF];
+	fP0Mdest = &DF[dirBE  *size_MatF];
+	fM0Pdest = &DF[dirTW  *size_MatF];
+	f0PPdest = &DF[dirTN  *size_MatF];
+	f0MMdest = &DF[dirBS  *size_MatF];
+	f0PMdest = &DF[dirBN  *size_MatF];
+	f0MPdest = &DF[dirTS  *size_MatF];
+	f000dest = &DF[dirZERO*size_MatF];
+	fMMMdest = &DF[dirBSW *size_MatF];
+	fMMPdest = &DF[dirTSW *size_MatF];
+	fMPPdest = &DF[dirTNW *size_MatF];
+	fMPMdest = &DF[dirBNW *size_MatF];
+	fPPMdest = &DF[dirBNE *size_MatF];
+	fPPPdest = &DF[dirTNE *size_MatF];
+	fPMPdest = &DF[dirTSE *size_MatF];
+	fPMMdest = &DF[dirBSE *size_MatF];
+
+	real
+		*fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source,
+		*fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource,
+		*f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource;
+
+	if (evenOrOdd == true)
+	{
+		fP00source = &DC[dirE   *size_MatC];
+		fM00source = &DC[dirW   *size_MatC];
+		f0P0source = &DC[dirN   *size_MatC];
+		f0M0source = &DC[dirS   *size_MatC];
+		f00Psource = &DC[dirT   *size_MatC];
+		f00Msource = &DC[dirB   *size_MatC];
+		fPP0source = &DC[dirNE  *size_MatC];
+		fMM0source = &DC[dirSW  *size_MatC];
+		fPM0source = &DC[dirSE  *size_MatC];
+		fMP0source = &DC[dirNW  *size_MatC];
+		fP0Psource = &DC[dirTE  *size_MatC];
+		fM0Msource = &DC[dirBW  *size_MatC];
+		fP0Msource = &DC[dirBE  *size_MatC];
+		fM0Psource = &DC[dirTW  *size_MatC];
+		f0PPsource = &DC[dirTN  *size_MatC];
+		f0MMsource = &DC[dirBS  *size_MatC];
+		f0PMsource = &DC[dirBN  *size_MatC];
+		f0MPsource = &DC[dirTS  *size_MatC];
+		f000source = &DC[dirZERO*size_MatC];
+		fMMMsource = &DC[dirBSW *size_MatC];
+		fMMPsource = &DC[dirTSW *size_MatC];
+		fMPPsource = &DC[dirTNW *size_MatC];
+		fMPMsource = &DC[dirBNW *size_MatC];
+		fPPMsource = &DC[dirBNE *size_MatC];
+		fPPPsource = &DC[dirTNE *size_MatC];
+		fPMPsource = &DC[dirTSE *size_MatC];
+		fPMMsource = &DC[dirBSE *size_MatC];
+	}
+	else
+	{
+		fP00source = &DC[dirW   *size_MatC];
+		fM00source = &DC[dirE   *size_MatC];
+		f0P0source = &DC[dirS   *size_MatC];
+		f0M0source = &DC[dirN   *size_MatC];
+		f00Psource = &DC[dirB   *size_MatC];
+		f00Msource = &DC[dirT   *size_MatC];
+		fPP0source = &DC[dirSW  *size_MatC];
+		fMM0source = &DC[dirNE  *size_MatC];
+		fPM0source = &DC[dirNW  *size_MatC];
+		fMP0source = &DC[dirSE  *size_MatC];
+		fP0Psource = &DC[dirBW  *size_MatC];
+		fM0Msource = &DC[dirTE  *size_MatC];
+		fP0Msource = &DC[dirTW  *size_MatC];
+		fM0Psource = &DC[dirBE  *size_MatC];
+		f0PPsource = &DC[dirBS  *size_MatC];
+		f0MMsource = &DC[dirTN  *size_MatC];
+		f0PMsource = &DC[dirTS  *size_MatC];
+		f0MPsource = &DC[dirBN  *size_MatC];
+		f000source = &DC[dirZERO*size_MatC];
+		fMMMsource = &DC[dirTNE *size_MatC];
+		fMMPsource = &DC[dirBNE *size_MatC];
+		fMPPsource = &DC[dirBSE *size_MatC];
+		fMPMsource = &DC[dirTSE *size_MatC];
+		fPPMsource = &DC[dirTSW *size_MatC];
+		fPPPsource = &DC[dirBSW *size_MatC];
+		fPMPsource = &DC[dirBNW *size_MatC];
+		fPMMsource = &DC[dirTNW *size_MatC];
+	}
+
+	Distributions6 G;
+	G.g[dirE] = &G6[dirE   *size_MatF];
+	G.g[dirW] = &G6[dirW   *size_MatF];
+	G.g[dirN] = &G6[dirN   *size_MatF];
+	G.g[dirS] = &G6[dirS   *size_MatF];
+	G.g[dirT] = &G6[dirT   *size_MatF];
+	G.g[dirB] = &G6[dirB   *size_MatF];
+
+	////////////////////////////////////////////////////////////////////////////////
+   const unsigned  ix = threadIdx.x;  // Globaler x-Index 
+   const unsigned  iy = blockIdx.x;   // Globaler y-Index 
+   const unsigned  iz = blockIdx.y;   // Globaler z-Index 
+
+   const unsigned nx = blockDim.x;
+   const unsigned ny = gridDim.x;
+
+   const unsigned k = nx*(ny*iz + iy) + ix;
+   //////////////////////////////////////////////////////////////////////////
+
+   ////////////////////////////////////////////////////////////////////////////////
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   real oP = o;//:(
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        vvx, vvy, vvz, vx2, vy2, vz2, drho;
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP;
+   real        /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP;
+   real        /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP;
+   real        /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP;
+   real        /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM;
+   real        /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM;
+   real        /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM;
+   real        /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM;
+   real        fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM;
+   //real        feqP00,feqM00,feq0P0,feq0M0,feq00P,feq00M,feqPP0,feqMM0,feqPM0,feqMP0,feqP0P,feqM0M,feqP0M,feqM0P,feq0PP,feq0MM,feq0PM,feq0MP,feq000,feqPPP, feqMMP, feqPMP, feqMPP, feqPPM, feqMMM, feqPMM, feqMPM;
+   real        kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP;
+   real        kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP;
+   real        kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP;
+   real        kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP;
+   real        kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM;
+   real        kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM;
+   real        kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM;
+   real        kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+   real        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
+
+   real x,y,z;
+
+
+   if(k<kCF)
+   {
+      //////////////////////////////////////////////////////////////////////////
+      xoff    = offCF.xOffCF[k];
+      yoff    = offCF.yOffCF[k];
+      zoff    = offCF.zOffCF[k];
+      xoff_sq = xoff * xoff;
+      yoff_sq = yoff * yoff;
+      zoff_sq = zoff * zoff;
+      //////////////////////////////////////////////////////////////////////////
+      //SWB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 0
+      unsigned int k000base = posCSWB[k];
+      unsigned int kM00base = neighborCX[k000base];
+      unsigned int k0M0base = neighborCY[k000base];
+      unsigned int k00Mbase = neighborCZ[k000base];
+      unsigned int kMM0base = neighborCY[kM00base];
+      unsigned int kM0Mbase = neighborCZ[kM00base];
+      unsigned int k0MMbase = neighborCZ[k0M0base];
+      unsigned int kMMMbase = neighborCZ[kMM0base];
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      unsigned int k000 = k000base;
+      unsigned int kM00 = kM00base;   
+      unsigned int k0M0 = k0M0base;   
+      unsigned int k00M = k00Mbase;   
+      unsigned int kMM0 = kMM0base;  
+      unsigned int kM0M = kM0Mbase;  
+      unsigned int k0MM = k0MMbase;  
+      unsigned int kMMM = kMMMbase; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MMM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMM);
+	  vx2MMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMM);
+	  vx3MMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMM);
+
+	  kxyFromfcNEQMMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx2MMM)));
+	  kyzFromfcNEQMMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMM) - ((vx2MMM*vx3MMM)));
+	  kxzFromfcNEQMMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx3MMM)));
+	  kxxMyyFromfcNEQMMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx2MMM*vx2MMM)));
+	  kxxMzzFromfcNEQMMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx3MMM*vx3MMM)));
+	  kyyMzzFromfcNEQMMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMM) - ((vx2MMM*vx2MMM - vx3MMM*vx3MMM)));
+
+	  //////////////////////////////////////////////////////////////////////////
+      //SWT//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = k00M;
+      kM00 = kM0M;   
+      k0M0 = k0MM;   
+      k00M = neighborCZ[k00M];   
+      kMM0 = kMMM;  
+      kM0M = neighborCZ[kM0M];  
+      k0MM = neighborCZ[k0MM];  
+      kMMM = neighborCZ[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MMP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMP);
+	  vx2MMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMP);
+	  vx3MMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMP);
+
+	  kxyFromfcNEQMMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx2MMP)));
+	  kyzFromfcNEQMMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMP) - ((vx2MMP*vx3MMP)));
+	  kxzFromfcNEQMMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx3MMP)));
+	  kxxMyyFromfcNEQMMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx2MMP*vx2MMP)));
+	  kxxMzzFromfcNEQMMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx3MMP*vx3MMP)));
+	  kyyMzzFromfcNEQMMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMP) - ((vx2MMP*vx2MMP - vx3MMP*vx3MMP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //SET//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = kM00;
+      kM00 = neighborCX[kM00];   
+      k0M0 = kMM0;   
+      k00M = kM0M;   
+      kMM0 = neighborCX[kMM0];  
+      kM0M = neighborCX[kM0M];  
+      k0MM = kMMM;  
+      kMMM = neighborCX[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PMP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMP);
+	  vx2PMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMP);
+	  vx3PMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMP);
+
+	  kxyFromfcNEQPMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx2PMP)));
+	  kyzFromfcNEQPMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMP) - ((vx2PMP*vx3PMP)));
+	  kxzFromfcNEQPMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx3PMP)));
+	  kxxMyyFromfcNEQPMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx2PMP*vx2PMP)));
+	  kxxMzzFromfcNEQPMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx3PMP*vx3PMP)));
+	  kyyMzzFromfcNEQPMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMP) - ((vx2PMP*vx2PMP - vx3PMP*vx3PMP)));
+	  
+	  //////////////////////////////////////////////////////////////////////////
+      //SEB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k00M = k000;   
+      kM0M = kM00;  
+      k0MM = k0M0;  
+      kMMM = kMM0; 
+      k000 = kM00base;
+      kM00 = neighborCX[kM00base];   
+      k0M0 = kMM0base;   
+      kMM0 = neighborCX[kMM0base];  
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PMM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMM);
+	  vx2PMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMM);
+	  vx3PMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMM);
+
+	  kxyFromfcNEQPMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx2PMM)));
+	  kyzFromfcNEQPMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMM) - ((vx2PMM*vx3PMM)));
+	  kxzFromfcNEQPMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx3PMM)));
+	  kxxMyyFromfcNEQPMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx2PMM*vx2PMM)));
+	  kxxMzzFromfcNEQPMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx3PMM*vx3PMM)));
+	  kyyMzzFromfcNEQPMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMM) - ((vx2PMM*vx2PMM - vx3PMM*vx3PMM)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NWB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 0
+      k000base = k0M0base;
+      kM00base = kMM0base;
+      k0M0base = neighborCY[k0M0base];
+      k00Mbase = k0MMbase;
+      kMM0base = neighborCY[kMM0base];
+      kM0Mbase = kMMMbase;
+      k0MMbase = neighborCY[k0MMbase];
+      kMMMbase = neighborCY[kMMMbase];
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = k000base;
+      kM00 = kM00base;   
+      k0M0 = k0M0base;   
+      k00M = k00Mbase;   
+      kMM0 = kMM0base;  
+      kM0M = kM0Mbase;  
+      k0MM = k0MMbase;  
+      kMMM = kMMMbase; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MPM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPM);
+	  vx2MPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPM);
+	  vx3MPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPM);
+
+	  kxyFromfcNEQMPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx2MPM)));
+	  kyzFromfcNEQMPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPM) - ((vx2MPM*vx3MPM)));
+	  kxzFromfcNEQMPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx3MPM)));
+	  kxxMyyFromfcNEQMPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx2MPM*vx2MPM)));
+	  kxxMzzFromfcNEQMPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx3MPM*vx3MPM)));
+	  kyyMzzFromfcNEQMPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPM) - ((vx2MPM*vx2MPM - vx3MPM*vx3MPM)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NWT//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = k00M;
+      kM00 = kM0M;   
+      k0M0 = k0MM;   
+      k00M = neighborCZ[k00M];   
+      kMM0 = kMMM;  
+      kM0M = neighborCZ[kM0M];  
+      k0MM = neighborCZ[k0MM];  
+      kMMM = neighborCZ[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MPP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPP);
+	  vx2MPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPP);
+	  vx3MPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPP);
+
+	  kxyFromfcNEQMPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx2MPP)));
+	  kyzFromfcNEQMPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPP) - ((vx2MPP*vx3MPP)));
+	  kxzFromfcNEQMPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx3MPP)));
+	  kxxMyyFromfcNEQMPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx2MPP*vx2MPP)));
+	  kxxMzzFromfcNEQMPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx3MPP*vx3MPP)));
+	  kyyMzzFromfcNEQMPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPP) - ((vx2MPP*vx2MPP - vx3MPP*vx3MPP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NET//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = kM00;
+      kM00 = neighborCX[kM00];   
+      k0M0 = kMM0;   
+      k00M = kM0M;   
+      kMM0 = neighborCX[kMM0];  
+      kM0M = neighborCX[kM0M];  
+      k0MM = kMMM;  
+      kMMM = neighborCX[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PPP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPP);
+	  vx2PPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPP);
+	  vx3PPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPP);
+
+	  kxyFromfcNEQPPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx2PPP)));
+	  kyzFromfcNEQPPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPP) - ((vx2PPP*vx3PPP)));
+	  kxzFromfcNEQPPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx3PPP)));
+	  kxxMyyFromfcNEQPPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx2PPP*vx2PPP)));
+	  kxxMzzFromfcNEQPPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx3PPP*vx3PPP)));
+	  kyyMzzFromfcNEQPPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPP) - ((vx2PPP*vx2PPP - vx3PPP*vx3PPP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NEB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k00M = k000;   
+      kM0M = kM00;  
+      k0MM = k0M0;  
+      kMMM = kMM0; 
+      k000 = kM00base;
+      kM00 = neighborCX[kM00base];   
+      k0M0 = kMM0base;   
+      kMM0 = neighborCX[kMM0base];  
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PPM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPM);
+	  vx2PPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPM);
+	  vx3PPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPM);
+
+	  kxyFromfcNEQPPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx2PPM)));
+	  kyzFromfcNEQPPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPM) - ((vx2PPM*vx3PPM)));
+	  kxzFromfcNEQPPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx3PPM)));
+	  kxxMyyFromfcNEQPPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx2PPM*vx2PPM)));
+	  kxxMzzFromfcNEQPPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx3PPM*vx3PPM)));
+	  kyyMzzFromfcNEQPPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPM) - ((vx2PPM*vx2PPM - vx3PPM*vx3PPM)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //3
+      //////////////////////////////////////////////////////////////////////////
+	  a0 = c1o8*(((vx1PPM + vx1PPP) + (vx1MPM + vx1MPP)) + ((vx1PMM + vx1PMP) + (vx1MMM + vx1MMP)));
+	  ax = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1PMM - vx1MPP)));
+	  ay = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1MPP - vx1PMM)));
+	  az = c1o4*(((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1MPP - vx1PMM)));
+	  axy = c1o2*(((vx1PPM - vx1PMP) + (vx1MMM - vx1MPP)) + ((vx1MMP - vx1MPM) + (vx1PPP - vx1PMM)));
+	  axz = c1o2*(((vx1PMP - vx1PPM) + (vx1MMM - vx1MPP)) + ((vx1MPM - vx1MMP) + (vx1PPP - vx1PMM)));
+	  ayz = c1o2*(((vx1PPP - vx1MPM) + (vx1PMM - vx1MMP)) + ((vx1MPP - vx1PPM) + (vx1MMM - vx1PMP)));
+	  axyz=		  ((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1PMM - vx1MPP)) ;
+	  b0 = c1o8*(((vx2PPM + vx2PPP) + (vx2MPM + vx2MPP)) + ((vx2PMM + vx2PMP) + (vx2MMM + vx2MMP)));
+	  bx = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2PMM - vx2MPP)));
+	  by = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2MPP - vx2PMM)));
+	  bz = c1o4*(((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2MPP - vx2PMM)));
+	  bxy = c1o2*(((vx2PPM - vx2MPP) + (vx2MMM - vx2PMP)) + ((vx2MMP - vx2PMM) + (vx2PPP - vx2MPM)));
+	  bxz = c1o2*(((vx2MMM - vx2PPM) + (vx2PMP - vx2MPP)) + ((vx2MPM - vx2PMM) + (vx2PPP - vx2MMP)));
+	  byz = c1o2*(((vx2MPP - vx2PPM) + (vx2MMM - vx2PMP)) + ((vx2PMM - vx2MMP) + (vx2PPP - vx2MPM)));
+	  bxyz=		  ((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2PMM - vx2MPP)) ;
+	  c0 = c1o8*(((vx3PPM + vx3PPP) + (vx3MPM + vx3MPP)) + ((vx3PMM + vx3PMP) + (vx3MMM + vx3MMP)));
+	  cx = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3PMM - vx3MPP)));
+	  cy = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3MPP - vx3PMM)));
+	  cz = c1o4*(((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3MPP - vx3PMM)));
+	  cxy = c1o2*(((vx3PPM - vx3PMP) + (vx3MMM - vx3MPP)) + ((vx3MMP - vx3MPM) + (vx3PPP - vx3PMM)));
+	  cxz = c1o2*(((vx3MMM - vx3PPM) + (vx3PMP - vx3MPP)) + ((vx3MPM - vx3PMM) + (vx3PPP - vx3MMP)));
+	  cyz = c1o2*(((vx3MMM - vx3PPM) + (vx3MPP - vx3PMP)) + ((vx3PMM - vx3MPM) + (vx3PPP - vx3MMP)));
+	  cxyz=		  ((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3PMM - vx3MPP)) ;
+
+	  //bxx = zero;
+	  //cxx = zero;
+	  //ayy = zero;
+	  //cyy = zero;
+	  //azz = zero;
+	  //bzz = zero;
+	  //axx = zero;
+	  //byy = zero;
+	  //czz = zero;
+
+	  bxx = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPMM - kxyFromfcNEQMPP)) + ((kxyFromfcNEQPMP - kxyFromfcNEQMPM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP))) - c1o2*axy;
+	  cxx = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) + (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) + (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*axz;
+
+	  ayy = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP)) - ((kxyFromfcNEQPMM - kxyFromfcNEQMPP) + (kxyFromfcNEQPMP - kxyFromfcNEQMPM))) - c1o2*bxy;
+	  cyy = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) + (kyzFromfcNEQPPM - kyzFromfcNEQMMP)) - ((kyzFromfcNEQPMM - kyzFromfcNEQMPP) + (kyzFromfcNEQPMP - kyzFromfcNEQMPM))) - c1o2*byz;
+
+	  azz = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) - (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) - (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*cxz;
+	  bzz = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) - (kyzFromfcNEQPMM - kyzFromfcNEQMPP)) + ((kyzFromfcNEQPMP - kyzFromfcNEQMPM) - (kyzFromfcNEQPPM - kyzFromfcNEQMMP))) - c1o2*cyz;
+
+	  axx = (c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) + (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM) + (kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP))) - c1o4*bxy)
+		  + (c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) + (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) + ((kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM) + (kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP))) - c1o4*cxz);
+
+	  byy = (-c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) - (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP) - (kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM))) - c1o4*axy)
+		  + (c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) + ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*cyz);
+
+	  czz = (-c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) - (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) - ((kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP) - (kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM))) - c1o4*axz)
+		  + (c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) - ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*byz);
+
+	  a0 -= c1o4*(axx + ayy + azz);
+	  b0 -= c1o4*(bxx + byy + bzz);
+	  c0 -= c1o4*(cxx + cyy + czz);
+      //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real kxyAverage = zero;
+	  real kyzAverage = zero;
+	  real kxzAverage = zero;
+	  real kxxMyyAverage = zero;
+	  real kxxMzzAverage = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //Press
+	  //d0   = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8;
+	  //dx   = ( pressPPM + pressPPP - pressMPM - pressMPP + pressPMM + pressPMP - pressMMM - pressMMP) * c1o4;
+	  //dy   = ( pressPPM + pressPPP + pressMPM + pressMPP - pressPMM - pressPMP - pressMMM - pressMMP) * c1o4;
+	  //dz   = (-pressPPM + pressPPP - pressMPM + pressMPP - pressPMM + pressPMP - pressMMM + pressMMP) * c1o4;
+	  //dxy  = ( pressPPM + pressPPP - pressMPM - pressMPP - pressPMM - pressPMP + pressMMM + pressMMP) * c1o2;
+	  //dxz  = (-pressPPM + pressPPP + pressMPM - pressMPP - pressPMM + pressPMP + pressMMM - pressMMP) * c1o2;
+	  //dyz  = (-pressPPM + pressPPP - pressMPM + pressMPP + pressPMM - pressPMP + pressMMM - pressMMP) * c1o2;
+	  //dxyz =  -pressPPM + pressPPP + pressMPM - pressMPP + pressPMM - pressPMP - pressMMM + pressMMP;
+	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho
+	  d0   = ( ((drhoPPM + drhoMMP) + (drhoMPM + drhoPMP)) + ((drhoPMM + drhoMPP) + (drhoMMM + drhoPPP))) * c1o8;
+	  dx   = ( ((drhoPPM - drhoMMP) + (drhoPMM - drhoMPP)) + ((drhoPMP - drhoMPM) + (drhoPPP - drhoMMM))) * c1o4;
+	  dy   = ( ((drhoPPM - drhoMMP) + (drhoMPP - drhoPMM)) + ((drhoMPM - drhoPMP) + (drhoPPP - drhoMMM))) * c1o4;
+	  dz   = ( ((drhoMMP - drhoPPM) + (drhoPPP - drhoMMM)) + ((drhoPMP - drhoMPM) + (drhoMPP - drhoPMM))) * c1o4;
+	  dxy  = ( ((drhoPPM - drhoPMP) + (drhoPPP - drhoPMM)) + ((drhoMMP - drhoMPM) + (drhoMMM - drhoMPP))) * c1o2;
+	  dxz  = ( ((drhoMMM - drhoPPM) + (drhoPPP - drhoMMP)) + ((drhoMPM - drhoPMM) + (drhoPMP - drhoMPP))) * c1o2;
+	  dyz  = ( ((drhoMPP - drhoPPM) + (drhoPPP - drhoMPM)) + ((drhoPMM - drhoMMP) + (drhoMMM - drhoPMP))) * c1o2;
+     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+      //
+      // Bernd das Brot
+      //
+	  // X------X
+	  // |      | x---x	
+	  // |	 ---+-+-> |    ----> off-vector
+	  // |		| x---x 
+	  // X------X   
+	  //			
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+      a0 = a0 + xoff * ax + yoff * ay + zoff * az + xoff_sq * axx + yoff_sq * ayy + zoff_sq * azz + xoff*yoff*axy + xoff*zoff*axz + yoff*zoff*ayz;
+      ax = ax + two * xoff * axx + yoff * axy + zoff * axz;
+      ay = ay + two * yoff * ayy + xoff * axy + zoff * ayz;
+      az = az + two * zoff * azz + xoff * axz + yoff * ayz;
+      b0 = b0 + xoff * bx + yoff * by + zoff * bz + xoff_sq * bxx + yoff_sq * byy + zoff_sq * bzz + xoff*yoff*bxy + xoff*zoff*bxz + yoff*zoff*byz;
+      bx = bx + two * xoff * bxx + yoff * bxy + zoff * bxz;
+      by = by + two * yoff * byy + xoff * bxy + zoff * byz;
+      bz = bz + two * zoff * bzz + xoff * bxz + yoff * byz;
+      c0 = c0 + xoff * cx + yoff * cy + zoff * cz + xoff_sq * cxx + yoff_sq * cyy + zoff_sq * czz + xoff*yoff*cxy + xoff*zoff*cxz + yoff*zoff*cyz;
+      cx = cx + two * xoff * cxx + yoff * cxy + zoff * cxz;
+      cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz;
+      cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz;
+	  d0 = d0 + xoff * dx + yoff * dy + zoff * dz + xoff*yoff*dxy + xoff*zoff*dxz + yoff*zoff*dyz;
+	  dx = dx + yoff * dxy + zoff * dxz;
+	  dy = dy + xoff * dxy + zoff * dyz;
+	  dz = dz + xoff * dxz + yoff * dyz;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	  
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real mgcbb = zero;
+	  real mgabb = zero;
+	  real mgbcb = zero;
+	  real mgbab = zero;
+	  real mgbbc = zero;
+	  real mgbba = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real m0, m1, m2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  //real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  //real O3 = two - o;
+	  //real residu, residutmp;
+	  //residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  real dxux;
+	  real dyuy;
+	  real dzuz;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position SWB -0.25f, -0.25f, -0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x = -c1o4;
+	  y = -c1o4;
+	  z = -c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho = c3o64*drho_NEB+c1o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c27o64*drho_SWB+c9o64*drho_SWT;
+	  //press = press_SWT * (c9o64  + c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + 
+			//  press_NWT * (c3o64  + c1o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_SET * (c3o64  - c3o16 * mxoff + c1o16 * myoff - c3o16 * mzoff) + 
+			//  press_NET * (c1o64  - c1o16 * mxoff - c1o16 * myoff - c1o16 * mzoff) + 
+			//  press_NEB * (c3o64  - c3o16 * mxoff - c3o16 * myoff + c1o16 * mzoff) + 
+			//  press_NWB * (c9o64  + c3o16 * mxoff - c9o16 * myoff + c3o16 * mzoff) + 
+			//  press_SEB * (c9o64  - c9o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_SWB * (c27o64 + c9o16 * mxoff + c9o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_SWT * (c9o64 + c3o16 * xoff + c3o16 * yoff - c9o16 * zoff) + 
+			//  drho_NWT * (c3o64 + c1o16 * xoff - c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_SET * (c3o64 - c3o16 * xoff + c1o16 * yoff - c3o16 * zoff) + 
+			//  drho_NET * (c1o64 - c1o16 * xoff - c1o16 * yoff - c1o16 * zoff) + 
+			//  drho_NEB * (c3o64 - c3o16 * xoff - c3o16 * yoff + c1o16 * zoff) + 
+			//  drho_NWB * (c9o64 + c3o16 * xoff - c9o16 * yoff + c3o16 * zoff) + 
+			//  drho_SEB * (c9o64 - c9o16 * xoff + c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_SWB * (c27o64 + c9o16 * xoff + c9o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z )*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z);
+	  dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z);
+	  dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y);
+	  mgcbb =  (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgbcb =  (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbbc =  (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  //mgcbb = zero;
+	  //mgabb = zero;
+	  //mgbcb = zero;
+	  //mgbab = zero;
+	  //mgbbc = zero;
+	  //mgbba = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 0
+	  k000base = posFSWB[k];
+	  kM00base = neighborFX[k000base];
+	  k0M0base = neighborFY[k000base];
+	  k00Mbase = neighborFZ[k000base];
+	  kMM0base = neighborFY[kM00base];
+	  kM0Mbase = neighborFZ[kM00base];
+	  k0MMbase = neighborFZ[k0M0base];
+	  kMMMbase = neighborFZ[kMM0base];
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k000 = k000base;
+	  kM00 = kM00base;
+	  k0M0 = k0M0base;
+	  k00M = k00Mbase;
+	  kMM0 = kMM0base;
+	  kM0M = kM0Mbase;
+	  k0MM = k0MMbase;
+	  kMMM = kMMMbase;
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position SWT -0.25f, -0.25f, 0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x = -c1o4;
+	  y = -c1o4;
+	  z =  c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho = c1o64*drho_NEB+c3o64*drho_NET+c3o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c9o64*drho_SET+c9o64*drho_SWB+c27o64*drho_SWT;
+	  //press = press_SWT * (c27o64 + c9o16 * mxoff + c9o16 * myoff - c9o16 * mzoff) + 
+			//  press_NWT * (c9o64  + c3o16 * mxoff - c9o16 * myoff - c3o16 * mzoff) + 
+			//  press_SET * (c9o64  - c9o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_NET * (c3o64  - c3o16 * mxoff - c3o16 * myoff - c1o16 * mzoff) + 
+			//  press_NEB * (c1o64  - c1o16 * mxoff - c1o16 * myoff + c1o16 * mzoff) + 
+			//  press_NWB * (c3o64  + c1o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_SEB * (c3o64  - c3o16 * mxoff + c1o16 * myoff + c3o16 * mzoff) + 
+			//  press_SWB * (c9o64  + c3o16 * mxoff + c3o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_SWT * (c27o64 + c9o16 * xoff + c9o16 * yoff - c9o16 * zoff) + 
+			//  drho_NWT * (c9o64 + c3o16 * xoff - c9o16 * yoff - c3o16 * zoff) + 
+			//  drho_SET * (c9o64 - c9o16 * xoff + c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_NET * (c3o64 - c3o16 * xoff - c3o16 * yoff - c1o16 * zoff) + 
+			//  drho_NEB * (c1o64 - c1o16 * xoff - c1o16 * yoff + c1o16 * zoff) + 
+			//  drho_NWB * (c3o64 + c1o16 * xoff - c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_SEB * (c3o64 - c3o16 * xoff + c1o16 * yoff + c3o16 * zoff) + 
+			//  drho_SWB * (c9o64 + c3o16 * xoff + c3o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z);
+	  dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z);
+	  dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y);
+	  mgcbb =  (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgbcb =  (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbbc =  (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  //mgcbb = zero;
+	  //mgabb = zero;
+	  //mgbcb = zero;
+	  //mgbab = zero;
+	  //mgbbc = zero;
+	  //mgbba = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k000 = k00M;
+	  kM00 = kM0M;
+	  k0M0 = k0MM;
+	  k00M = neighborFZ[k00M];
+	  kMM0 = kMMM;
+	  kM0M = neighborFZ[kM0M];
+	  k0MM = neighborFZ[k0MM];
+	  kMMM = neighborFZ[kMMM];
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position SET 0.25f, -0.25f, 0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x =  c1o4;
+	  y = -c1o4;
+	  z =  c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho =c3o64*drho_NEB+c9o64*drho_NET+c1o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c27o64*drho_SET+c3o64*drho_SWB+c9o64*drho_SWT;
+	  //press = press_SET * (c27o64 - c9o16 * mxoff + c9o16 * myoff - c9o16 * mzoff) + 
+			//  press_NET * (c9o64  - c3o16 * mxoff - c9o16 * myoff - c3o16 * mzoff) + 
+			//  press_SWT * (c9o64  + c9o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_NWT * (c3o64  + c3o16 * mxoff - c3o16 * myoff - c1o16 * mzoff) + 
+			//  press_NWB * (c1o64  + c1o16 * mxoff - c1o16 * myoff + c1o16 * mzoff) + 
+			//  press_NEB * (c3o64  - c1o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_SWB * (c3o64  + c3o16 * mxoff + c1o16 * myoff + c3o16 * mzoff) + 
+			//  press_SEB * (c9o64  - c3o16 * mxoff + c3o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_SET * (c27o64 - c9o16 * xoff + c9o16 * yoff - c9o16 * zoff) + 
+			//  drho_NET * (c9o64 - c3o16 * xoff - c9o16 * yoff - c3o16 * zoff) + 
+			//  drho_SWT * (c9o64 + c9o16 * xoff + c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_NWT * (c3o64 + c3o16 * xoff - c3o16 * yoff - c1o16 * zoff) + 
+			//  drho_NWB * (c1o64 + c1o16 * xoff - c1o16 * yoff + c1o16 * zoff) + 
+			//  drho_NEB * (c3o64 - c1o16 * xoff - c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_SWB * (c3o64 + c3o16 * xoff + c1o16 * yoff + c3o16 * zoff) + 
+			//  drho_SEB * (c9o64 - c3o16 * xoff + c3o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z);
+	  dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z);
+	  dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y);
+	  mgcbb =  (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgbcb =  (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbbc =  (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  //mgcbb = zero;
+	  //mgabb = zero;
+	  //mgbcb = zero;
+	  //mgbab = zero;
+	  //mgbbc = zero;
+	  //mgbba = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k000 = kM00;
+	  kM00 = neighborFX[kM00];
+	  k0M0 = kMM0;
+	  k00M = kM0M;
+	  kMM0 = neighborFX[kMM0];
+	  kM0M = neighborFX[kM0M];
+	  k0MM = kMMM;
+	  kMMM = neighborFX[kMMM];
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+
+
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position SEB 0.25f, -0.25f, -0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x =  c1o4;
+	  y = -c1o4;
+	  z = -c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho =c9o64*drho_NEB+c3o64*drho_NET+c3o64*drho_NWB+c1o64*drho_NWT+c27o64*drho_SEB+c9o64*drho_SET+c9o64*drho_SWB+c3o64*drho_SWT;
+	  //press = press_SET * (c9o64  - c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + 
+			//  press_NET * (c3o64  - c1o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_SWT * (c3o64  + c3o16 * mxoff + c1o16 * myoff - c3o16 * mzoff) + 
+			//  press_NWT * (c1o64  + c1o16 * mxoff - c1o16 * myoff - c1o16 * mzoff) + 
+			//  press_NWB * (c3o64  + c3o16 * mxoff - c3o16 * myoff + c1o16 * mzoff) + 
+			//  press_NEB * (c9o64  - c3o16 * mxoff - c9o16 * myoff + c3o16 * mzoff) + 
+			//  press_SWB * (c9o64  + c9o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_SEB * (c27o64 - c9o16 * mxoff + c9o16 * myoff + c9o16 * mzoff);
+	  //drho =  drho_SET * (c9o64 - c3o16 * xoff + c3o16 * yoff - c9o16 * zoff) + 
+			//  drho_NET * (c3o64 - c1o16 * xoff - c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_SWT * (c3o64 + c3o16 * xoff + c1o16 * yoff - c3o16 * zoff) + 
+			//  drho_NWT * (c1o64 + c1o16 * xoff - c1o16 * yoff - c1o16 * zoff) + 
+			//  drho_NWB * (c3o64 + c3o16 * xoff - c3o16 * yoff + c1o16 * zoff) + 
+			//  drho_NEB * (c9o64 - c3o16 * xoff - c9o16 * yoff + c3o16 * zoff) + 
+			//  drho_SWB * (c9o64 + c9o16 * xoff + c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_SEB * (c27o64 - c9o16 * xoff + c9o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z);
+	  dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z);
+	  dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y);
+	  mgcbb =  (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgbcb =  (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbbc =  (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  //mgcbb = zero;
+	  //mgabb = zero;
+	  //mgbcb = zero;
+	  //mgbab = zero;
+	  //mgbbc = zero;
+	  //mgbba = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k00M = k000;
+	  kM0M = kM00;
+	  k0MM = k0M0;
+	  kMMM = kMM0;
+	  k000 = kM00base;
+	  kM00 = neighborFX[kM00base];
+	  k0M0 = kMM0base;
+	  kMM0 = neighborFX[kMM0base];
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position NWB -0.25f, 0.25f, -0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x = -c1o4;
+	  y =  c1o4;
+	  z = -c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho = c9o64*drho_NEB+c3o64*drho_NET+c27o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c1o64*drho_SET+c9o64*drho_SWB+c3o64*drho_SWT;
+	  //press = press_NWT * (c9o64  + c3o16 * mxoff - c3o16 * myoff - c9o16 * mzoff) + 
+			//  press_NET * (c3o64  - c3o16 * mxoff - c1o16 * myoff - c3o16 * mzoff) + 
+			//  press_SWT * (c3o64  + c1o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_SET * (c1o64  - c1o16 * mxoff + c1o16 * myoff - c1o16 * mzoff) + 
+			//  press_SEB * (c3o64  - c3o16 * mxoff + c3o16 * myoff + c1o16 * mzoff) + 
+			//  press_NEB * (c9o64  - c9o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_SWB * (c9o64  + c3o16 * mxoff + c9o16 * myoff + c3o16 * mzoff) + 
+			//  press_NWB * (c27o64 + c9o16 * mxoff - c9o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_NWT * (c9o64 + c3o16 * xoff - c3o16 * yoff - c9o16 * zoff) + 
+			//  drho_NET * (c3o64 - c3o16 * xoff - c1o16 * yoff - c3o16 * zoff) + 
+			//  drho_SWT * (c3o64 + c1o16 * xoff + c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_SET * (c1o64 - c1o16 * xoff + c1o16 * yoff - c1o16 * zoff) + 
+			//  drho_SEB * (c3o64 - c3o16 * xoff + c3o16 * yoff + c1o16 * zoff) + 
+			//  drho_NEB * (c9o64 - c9o16 * xoff - c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_SWB * (c9o64 + c3o16 * xoff + c9o16 * yoff + c3o16 * zoff) + 
+			//  drho_NWB * (c27o64 + c9o16 * xoff - c9o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z);
+	  dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z);
+	  dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y);
+	  mgcbb =  (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgbcb =  (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbbc =  (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  //mgcbb = zero;
+	  //mgabb = zero;
+	  //mgbcb = zero;
+	  //mgbab = zero;
+	  //mgbbc = zero;
+	  //mgbba = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 0
+	  k000base = k0M0base;
+	  kM00base = kMM0base;
+	  k0M0base = neighborFY[k0M0base];
+	  k00Mbase = k0MMbase;
+	  kMM0base = neighborFY[kMM0base];
+	  kM0Mbase = kMMMbase;
+	  k0MMbase = neighborFY[k0MMbase];
+	  kMMMbase = neighborFY[kMMMbase];
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k000 = k000base;
+	  kM00 = kM00base;
+	  k0M0 = k0M0base;
+	  k00M = k00Mbase;
+	  kMM0 = kMM0base;
+	  kM0M = kM0Mbase;
+	  k0MM = k0MMbase;
+	  kMMM = kMMMbase;
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position NWT -0.25f, 0.25f, 0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x = -c1o4;
+	  y =  c1o4;
+	  z =  c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho = c3o64*drho_NEB+c9o64*drho_NET+c9o64*drho_NWB+c27o64*drho_NWT+c1o64*drho_SEB+c3o64*drho_SET+c3o64*drho_SWB+c9o64*drho_SWT;
+	  //press = press_NWT * (c27o64 + c9o16 * mxoff - c9o16 * myoff - c9o16 * mzoff) + 
+			//  press_NET * (c9o64  - c9o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_SWT * (c9o64  + c3o16 * mxoff + c9o16 * myoff - c3o16 * mzoff) + 
+			//  press_SET * (c3o64  - c3o16 * mxoff + c3o16 * myoff - c1o16 * mzoff) + 
+			//  press_SEB * (c1o64  - c1o16 * mxoff + c1o16 * myoff + c1o16 * mzoff) + 
+			//  press_NEB * (c3o64  - c3o16 * mxoff - c1o16 * myoff + c3o16 * mzoff) + 
+			//  press_SWB * (c3o64  + c1o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_NWB * (c9o64  + c3o16 * mxoff - c3o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_NWT * (c27o64 + c9o16 * xoff - c9o16 * yoff - c9o16 * zoff) + 
+			//  drho_NET * (c9o64 - c9o16 * xoff - c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_SWT * (c9o64 + c3o16 * xoff + c9o16 * yoff - c3o16 * zoff) + 
+			//  drho_SET * (c3o64 - c3o16 * xoff + c3o16 * yoff - c1o16 * zoff) + 
+			//  drho_SEB * (c1o64 - c1o16 * xoff + c1o16 * yoff + c1o16 * zoff) + 
+			//  drho_NEB * (c3o64 - c3o16 * xoff - c1o16 * yoff + c3o16 * zoff) + 
+			//  drho_SWB * (c3o64 + c1o16 * xoff + c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_NWB * (c9o64 + c3o16 * xoff - c3o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z);
+	  dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z);
+	  dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y);
+	  mgcbb =  (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgbcb =  (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbbc =  (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  //mgcbb = zero;
+	  //mgabb = zero;
+	  //mgbcb = zero;
+	  //mgbab = zero;
+	  //mgbbc = zero;
+	  //mgbba = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k000 = k00M;
+	  kM00 = kM0M;
+	  k0M0 = k0MM;
+	  k00M = neighborFZ[k00M];
+	  kMM0 = kMMM;
+	  kM0M = neighborFZ[kM0M];
+	  k0MM = neighborFZ[k0MM];
+	  kMMM = neighborFZ[kMMM];
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position NET 0.25f, 0.25f, 0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x = c1o4;
+	  y = c1o4;
+	  z = c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho = c9o64*drho_NEB+c27o64*drho_NET+c3o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c9o64*drho_SET+c1o64*drho_SWB+c3o64*drho_SWT;
+	  //press = press_NET * (c27o64 - c9o16 * mxoff - c9o16 * myoff - c9o16 * mzoff) + 
+			//  press_NWT * (c9o64  + c9o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_SET * (c9o64  - c3o16 * mxoff + c9o16 * myoff - c3o16 * mzoff) + 
+			//  press_SWT * (c3o64  + c3o16 * mxoff + c3o16 * myoff - c1o16 * mzoff) + 
+			//  press_SWB * (c1o64  + c1o16 * mxoff + c1o16 * myoff + c1o16 * mzoff) + 
+			//  press_NWB * (c3o64  + c3o16 * mxoff - c1o16 * myoff + c3o16 * mzoff) + 
+			//  press_SEB * (c3o64  - c1o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_NEB * (c9o64  - c3o16 * mxoff - c3o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_NET * (c27o64 - c9o16 * xoff - c9o16 * yoff - c9o16 * zoff) + 
+			//  drho_NWT * (c9o64 + c9o16 * xoff - c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_SET * (c9o64 - c3o16 * xoff + c9o16 * yoff - c3o16 * zoff) + 
+			//  drho_SWT * (c3o64 + c3o16 * xoff + c3o16 * yoff - c1o16 * zoff) + 
+			//  drho_SWB * (c1o64 + c1o16 * xoff + c1o16 * yoff + c1o16 * zoff) + 
+			//  drho_NWB * (c3o64 + c3o16 * xoff - c1o16 * yoff + c3o16 * zoff) + 
+			//  drho_SEB * (c3o64 - c1o16 * xoff + c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_NEB * (c9o64 - c3o16 * xoff - c3o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z);
+	  dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z);
+	  dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y);
+	  mgcbb =  (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgbcb =  (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbbc =  (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  //mgcbb = zero;
+	  //mgabb = zero;
+	  //mgbcb = zero;
+	  //mgbab = zero;
+	  //mgbbc = zero;
+	  //mgbba = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k000 = kM00;
+	  kM00 = neighborFX[kM00];
+	  k0M0 = kMM0;
+	  k00M = kM0M;
+	  kMM0 = neighborFX[kMM0];
+	  kM0M = neighborFX[kM0M];
+	  k0MM = kMMM;
+	  kMMM = neighborFX[kMMM];
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position NEB 0.25f, 0.25f, -0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x =  c1o4;
+	  y =  c1o4;
+	  z = -c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho = c27o64*drho_NEB+c9o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c3o64*drho_SWB+c1o64*drho_SWT;
+	  //press = press_NET * (c9o64  - c3o16 * mxoff - c3o16 * myoff - c9o16 * mzoff) + 
+			//  press_NWT * (c3o64  + c3o16 * mxoff - c1o16 * myoff - c3o16 * mzoff) + 
+			//  press_SET * (c3o64  - c1o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_SWT * (c1o64  + c1o16 * mxoff + c1o16 * myoff - c1o16 * mzoff) + 
+			//  press_SWB * (c3o64  + c3o16 * mxoff + c3o16 * myoff + c1o16 * mzoff) + 
+			//  press_NWB * (c9o64  + c9o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_SEB * (c9o64  - c3o16 * mxoff + c9o16 * myoff + c3o16 * mzoff) + 
+			//  press_NEB * (c27o64 - c9o16 * mxoff - c9o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_NET * (c9o64 - c3o16 * xoff - c3o16 * yoff - c9o16 * zoff) + 
+			//  drho_NWT * (c3o64 + c3o16 * xoff - c1o16 * yoff - c3o16 * zoff) + 
+			//  drho_SET * (c3o64 - c1o16 * xoff + c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_SWT * (c1o64 + c1o16 * xoff + c1o16 * yoff - c1o16 * zoff) + 
+			//  drho_SWB * (c3o64 + c3o16 * xoff + c3o16 * yoff + c1o16 * zoff) + 
+			//  drho_NWB * (c9o64 + c9o16 * xoff - c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_SEB * (c9o64 - c3o16 * xoff + c9o16 * yoff + c3o16 * zoff) + 
+			//  drho_NEB * (c27o64 - c9o16 * xoff - c9o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  dxux = (ax + two*axx*x + axy*y + axz*z + axyz*y*z);
+	  dyuy = (by + bxy*x + two*byy*y + byz*z + bxyz*x*z);
+	  dzuz = (cz - cxz*x + cyz*y + two*czz*z + cxyz*x*y);
+	  mgcbb =  (vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgabb = -(vvx * axx + dxux * dxux) * (eps_new * eps_new) * (one + press);
+	  mgbcb =  (vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbab = -(vvy * byy + dyuy * dyuy) * (eps_new * eps_new) * (one + press);
+	  mgbbc =  (vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  mgbba = -(vvz * czz + dzuz * dzuz) * (eps_new * eps_new) * (one + press);
+	  //mgcbb = zero;
+	  //mgabb = zero;
+	  //mgbcb = zero;
+	  //mgbab = zero;
+	  //mgbbc = zero;
+	  //mgbba = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k00M = k000;   
+	  kM0M = kM00;
+	  k0MM = k0M0;
+	  kMMM = kMM0;
+	  k000 = kM00base;
+	  kM00 = neighborFX[kM00base];
+	  k0M0 = kMM0base;
+	  kMM0 = neighborFX[kMM0base];
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+   }
+}
+//////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////
+extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC,
+												 real* DF,
+												 real* G6,
+												 unsigned int* neighborCX,
+												 unsigned int* neighborCY,
+												 unsigned int* neighborCZ,
+												 unsigned int* neighborFX,
+												 unsigned int* neighborFY,
+												 unsigned int* neighborFZ,
+												 unsigned int size_MatC, 
+												 unsigned int size_MatF, 
+												 bool evenOrOdd,
+												 unsigned int* posCSWB, 
+												 unsigned int* posFSWB, 
+												 unsigned int kCF, 
+												 real omCoarse, 
+												 real omFine, 
+												 real nu, 
+												 unsigned int nxC, 
+												 unsigned int nyC, 
+												 unsigned int nxF, 
+												 unsigned int nyF,
+												 OffCF offCF)
+{
+	real
+		*fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest,
+		*fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest,
+		*f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest;
+
+
+	fP00dest = &DF[dirE   *size_MatF];
+	fM00dest = &DF[dirW   *size_MatF];
+	f0P0dest = &DF[dirN   *size_MatF];
+	f0M0dest = &DF[dirS   *size_MatF];
+	f00Pdest = &DF[dirT   *size_MatF];
+	f00Mdest = &DF[dirB   *size_MatF];
+	fPP0dest = &DF[dirNE  *size_MatF];
+	fMM0dest = &DF[dirSW  *size_MatF];
+	fPM0dest = &DF[dirSE  *size_MatF];
+	fMP0dest = &DF[dirNW  *size_MatF];
+	fP0Pdest = &DF[dirTE  *size_MatF];
+	fM0Mdest = &DF[dirBW  *size_MatF];
+	fP0Mdest = &DF[dirBE  *size_MatF];
+	fM0Pdest = &DF[dirTW  *size_MatF];
+	f0PPdest = &DF[dirTN  *size_MatF];
+	f0MMdest = &DF[dirBS  *size_MatF];
+	f0PMdest = &DF[dirBN  *size_MatF];
+	f0MPdest = &DF[dirTS  *size_MatF];
+	f000dest = &DF[dirZERO*size_MatF];
+	fMMMdest = &DF[dirBSW *size_MatF];
+	fMMPdest = &DF[dirTSW *size_MatF];
+	fMPPdest = &DF[dirTNW *size_MatF];
+	fMPMdest = &DF[dirBNW *size_MatF];
+	fPPMdest = &DF[dirBNE *size_MatF];
+	fPPPdest = &DF[dirTNE *size_MatF];
+	fPMPdest = &DF[dirTSE *size_MatF];
+	fPMMdest = &DF[dirBSE *size_MatF];
+
+	real
+		*fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source,
+		*fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource,
+		*f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource;
+
+	if (evenOrOdd == true)
+	{
+		fP00source = &DC[dirE   *size_MatC];
+		fM00source = &DC[dirW   *size_MatC];
+		f0P0source = &DC[dirN   *size_MatC];
+		f0M0source = &DC[dirS   *size_MatC];
+		f00Psource = &DC[dirT   *size_MatC];
+		f00Msource = &DC[dirB   *size_MatC];
+		fPP0source = &DC[dirNE  *size_MatC];
+		fMM0source = &DC[dirSW  *size_MatC];
+		fPM0source = &DC[dirSE  *size_MatC];
+		fMP0source = &DC[dirNW  *size_MatC];
+		fP0Psource = &DC[dirTE  *size_MatC];
+		fM0Msource = &DC[dirBW  *size_MatC];
+		fP0Msource = &DC[dirBE  *size_MatC];
+		fM0Psource = &DC[dirTW  *size_MatC];
+		f0PPsource = &DC[dirTN  *size_MatC];
+		f0MMsource = &DC[dirBS  *size_MatC];
+		f0PMsource = &DC[dirBN  *size_MatC];
+		f0MPsource = &DC[dirTS  *size_MatC];
+		f000source = &DC[dirZERO*size_MatC];
+		fMMMsource = &DC[dirBSW *size_MatC];
+		fMMPsource = &DC[dirTSW *size_MatC];
+		fMPPsource = &DC[dirTNW *size_MatC];
+		fMPMsource = &DC[dirBNW *size_MatC];
+		fPPMsource = &DC[dirBNE *size_MatC];
+		fPPPsource = &DC[dirTNE *size_MatC];
+		fPMPsource = &DC[dirTSE *size_MatC];
+		fPMMsource = &DC[dirBSE *size_MatC];
+	}
+	else
+	{
+		fP00source = &DC[dirW   *size_MatC];
+		fM00source = &DC[dirE   *size_MatC];
+		f0P0source = &DC[dirS   *size_MatC];
+		f0M0source = &DC[dirN   *size_MatC];
+		f00Psource = &DC[dirB   *size_MatC];
+		f00Msource = &DC[dirT   *size_MatC];
+		fPP0source = &DC[dirSW  *size_MatC];
+		fMM0source = &DC[dirNE  *size_MatC];
+		fPM0source = &DC[dirNW  *size_MatC];
+		fMP0source = &DC[dirSE  *size_MatC];
+		fP0Psource = &DC[dirBW  *size_MatC];
+		fM0Msource = &DC[dirTE  *size_MatC];
+		fP0Msource = &DC[dirTW  *size_MatC];
+		fM0Psource = &DC[dirBE  *size_MatC];
+		f0PPsource = &DC[dirBS  *size_MatC];
+		f0MMsource = &DC[dirTN  *size_MatC];
+		f0PMsource = &DC[dirTS  *size_MatC];
+		f0MPsource = &DC[dirBN  *size_MatC];
+		f000source = &DC[dirZERO*size_MatC];
+		fMMMsource = &DC[dirTNE *size_MatC];
+		fMMPsource = &DC[dirBNE *size_MatC];
+		fMPPsource = &DC[dirBSE *size_MatC];
+		fMPMsource = &DC[dirTSE *size_MatC];
+		fPPMsource = &DC[dirTSW *size_MatC];
+		fPPPsource = &DC[dirBSW *size_MatC];
+		fPMPsource = &DC[dirBNW *size_MatC];
+		fPMMsource = &DC[dirTNW *size_MatC];
+	}
+
+	Distributions6 G;
+	G.g[dirE] = &G6[dirE   *size_MatF];
+	G.g[dirW] = &G6[dirW   *size_MatF];
+	G.g[dirN] = &G6[dirN   *size_MatF];
+	G.g[dirS] = &G6[dirS   *size_MatF];
+	G.g[dirT] = &G6[dirT   *size_MatF];
+	G.g[dirB] = &G6[dirB   *size_MatF];
+
+	////////////////////////////////////////////////////////////////////////////////
+   const unsigned  ix = threadIdx.x;  // Globaler x-Index 
+   const unsigned  iy = blockIdx.x;   // Globaler y-Index 
+   const unsigned  iz = blockIdx.y;   // Globaler z-Index 
+
+   const unsigned nx = blockDim.x;
+   const unsigned ny = gridDim.x;
+
+   const unsigned k = nx*(ny*iz + iy) + ix;
+   //////////////////////////////////////////////////////////////////////////
+
+   ////////////////////////////////////////////////////////////////////////////////
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   real oP = o;//:(
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        vvx, vvy, vvz, vx2, vy2, vz2, drho;
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP;
+   real        /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP;
+   real        /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP;
+   real        /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP;
+   real        /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM;
+   real        /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM;
+   real        /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM;
+   real        /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM;
+   real        fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM;
+   //real        feqP00,feqM00,feq0P0,feq0M0,feq00P,feq00M,feqPP0,feqMM0,feqPM0,feqMP0,feqP0P,feqM0M,feqP0M,feqM0P,feq0PP,feq0MM,feq0PM,feq0MP,feq000,feqPPP, feqMMP, feqPMP, feqMPP, feqPPM, feqMMM, feqPMM, feqMPM;
+   real        kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP;
+   real        kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP;
+   real        kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP;
+   real        kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP;
+   real        kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM;
+   real        kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM;
+   real        kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM;
+   real        kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+   real        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
+
+   real x,y,z;
+
+
+   if(k<kCF)
+   {
+      //////////////////////////////////////////////////////////////////////////
+      xoff    = offCF.xOffCF[k];
+      yoff    = offCF.yOffCF[k];
+      zoff    = offCF.zOffCF[k];
+      xoff_sq = xoff * xoff;
+      yoff_sq = yoff * yoff;
+      zoff_sq = zoff * zoff;
+      //////////////////////////////////////////////////////////////////////////
+      //SWB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 0
+      unsigned int k000base = posCSWB[k];
+      unsigned int kM00base = neighborCX[k000base];
+      unsigned int k0M0base = neighborCY[k000base];
+      unsigned int k00Mbase = neighborCZ[k000base];
+      unsigned int kMM0base = neighborCY[kM00base];
+      unsigned int kM0Mbase = neighborCZ[kM00base];
+      unsigned int k0MMbase = neighborCZ[k0M0base];
+      unsigned int kMMMbase = neighborCZ[kMM0base];
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      unsigned int k000 = k000base;
+      unsigned int kM00 = kM00base;   
+      unsigned int k0M0 = k0M0base;   
+      unsigned int k00M = k00Mbase;   
+      unsigned int kMM0 = kMM0base;  
+      unsigned int kM0M = kM0Mbase;  
+      unsigned int k0MM = k0MMbase;  
+      unsigned int kMMM = kMMMbase; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MMM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMM);
+	  vx2MMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMM);
+	  vx3MMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMM);
+
+	  kxyFromfcNEQMMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx2MMM)));
+	  kyzFromfcNEQMMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMM) - ((vx2MMM*vx3MMM)));
+	  kxzFromfcNEQMMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx3MMM)));
+	  kxxMyyFromfcNEQMMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx2MMM*vx2MMM)));
+	  kxxMzzFromfcNEQMMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx3MMM*vx3MMM)));
+	  kyyMzzFromfcNEQMMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMM) - ((vx2MMM*vx2MMM - vx3MMM*vx3MMM)));
+
+	  //////////////////////////////////////////////////////////////////////////
+      //SWT//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = k00M;
+      kM00 = kM0M;   
+      k0M0 = k0MM;   
+      k00M = neighborCZ[k00M];   
+      kMM0 = kMMM;  
+      kM0M = neighborCZ[kM0M];  
+      k0MM = neighborCZ[k0MM];  
+      kMMM = neighborCZ[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MMP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMP);
+	  vx2MMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMP);
+	  vx3MMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMP);
+
+	  kxyFromfcNEQMMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx2MMP)));
+	  kyzFromfcNEQMMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMP) - ((vx2MMP*vx3MMP)));
+	  kxzFromfcNEQMMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx3MMP)));
+	  kxxMyyFromfcNEQMMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx2MMP*vx2MMP)));
+	  kxxMzzFromfcNEQMMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx3MMP*vx3MMP)));
+	  kyyMzzFromfcNEQMMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMP) - ((vx2MMP*vx2MMP - vx3MMP*vx3MMP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //SET//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = kM00;
+      kM00 = neighborCX[kM00];   
+      k0M0 = kMM0;   
+      k00M = kM0M;   
+      kMM0 = neighborCX[kMM0];  
+      kM0M = neighborCX[kM0M];  
+      k0MM = kMMM;  
+      kMMM = neighborCX[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PMP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMP);
+	  vx2PMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMP);
+	  vx3PMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMP);
+
+	  kxyFromfcNEQPMP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx2PMP)));
+	  kyzFromfcNEQPMP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMP) - ((vx2PMP*vx3PMP)));
+	  kxzFromfcNEQPMP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx3PMP)));
+	  kxxMyyFromfcNEQPMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx2PMP*vx2PMP)));
+	  kxxMzzFromfcNEQPMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx3PMP*vx3PMP)));
+	  kyyMzzFromfcNEQPMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMP) - ((vx2PMP*vx2PMP - vx3PMP*vx3PMP)));
+	  
+	  //////////////////////////////////////////////////////////////////////////
+      //SEB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k00M = k000;   
+      kM0M = kM00;  
+      k0MM = k0M0;  
+      kMMM = kMM0; 
+      k000 = kM00base;
+      kM00 = neighborCX[kM00base];   
+      k0M0 = kMM0base;   
+      kMM0 = neighborCX[kMM0base];  
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PMM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMM);
+	  vx2PMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMM);
+	  vx3PMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMM);
+
+	  kxyFromfcNEQPMM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx2PMM)));
+	  kyzFromfcNEQPMM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMM) - ((vx2PMM*vx3PMM)));
+	  kxzFromfcNEQPMM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx3PMM)));
+	  kxxMyyFromfcNEQPMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx2PMM*vx2PMM)));
+	  kxxMzzFromfcNEQPMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx3PMM*vx3PMM)));
+	  kyyMzzFromfcNEQPMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMM) - ((vx2PMM*vx2PMM - vx3PMM*vx3PMM)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NWB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 0
+      k000base = k0M0base;
+      kM00base = kMM0base;
+      k0M0base = neighborCY[k0M0base];
+      k00Mbase = k0MMbase;
+      kMM0base = neighborCY[kMM0base];
+      kM0Mbase = kMMMbase;
+      k0MMbase = neighborCY[k0MMbase];
+      kMMMbase = neighborCY[kMMMbase];
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = k000base;
+      kM00 = kM00base;   
+      k0M0 = k0M0base;   
+      k00M = k00Mbase;   
+      kMM0 = kMM0base;  
+      kM0M = kM0Mbase;  
+      k0MM = k0MMbase;  
+      kMMM = kMMMbase; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MPM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPM);
+	  vx2MPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPM);
+	  vx3MPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPM);
+
+	  kxyFromfcNEQMPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx2MPM)));
+	  kyzFromfcNEQMPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPM) - ((vx2MPM*vx3MPM)));
+	  kxzFromfcNEQMPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx3MPM)));
+	  kxxMyyFromfcNEQMPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx2MPM*vx2MPM)));
+	  kxxMzzFromfcNEQMPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx3MPM*vx3MPM)));
+	  kyyMzzFromfcNEQMPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPM) - ((vx2MPM*vx2MPM - vx3MPM*vx3MPM)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NWT//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = k00M;
+      kM00 = kM0M;   
+      k0M0 = k0MM;   
+      k00M = neighborCZ[k00M];   
+      kMM0 = kMMM;  
+      kM0M = neighborCZ[kM0M];  
+      k0MM = neighborCZ[k0MM];  
+      kMMM = neighborCZ[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MPP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPP);
+	  vx2MPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPP);
+	  vx3MPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPP);
+
+	  kxyFromfcNEQMPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx2MPP)));
+	  kyzFromfcNEQMPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPP) - ((vx2MPP*vx3MPP)));
+	  kxzFromfcNEQMPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx3MPP)));
+	  kxxMyyFromfcNEQMPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx2MPP*vx2MPP)));
+	  kxxMzzFromfcNEQMPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx3MPP*vx3MPP)));
+	  kyyMzzFromfcNEQMPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPP) - ((vx2MPP*vx2MPP - vx3MPP*vx3MPP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NET//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = kM00;
+      kM00 = neighborCX[kM00];   
+      k0M0 = kMM0;   
+      k00M = kM0M;   
+      kMM0 = neighborCX[kMM0];  
+      kM0M = neighborCX[kM0M];  
+      k0MM = kMMM;  
+      kMMM = neighborCX[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PPP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPP);
+	  vx2PPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPP);
+	  vx3PPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPP);
+
+	  kxyFromfcNEQPPP = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx2PPP)));
+	  kyzFromfcNEQPPP = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPP) - ((vx2PPP*vx3PPP)));
+	  kxzFromfcNEQPPP = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx3PPP)));
+	  kxxMyyFromfcNEQPPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx2PPP*vx2PPP)));
+	  kxxMzzFromfcNEQPPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx3PPP*vx3PPP)));
+	  kyyMzzFromfcNEQPPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPP) - ((vx2PPP*vx2PPP - vx3PPP*vx3PPP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NEB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k00M = k000;   
+      kM0M = kM00;  
+      k0MM = k0M0;  
+      kMMM = kMM0; 
+      k000 = kM00base;
+      kM00 = neighborCX[kM00base];   
+      k0M0 = kMM0base;   
+      kMM0 = neighborCX[kMM0base];  
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PPM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPM);
+	  vx2PPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPM);
+	  vx3PPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPM);
+
+	  kxyFromfcNEQPPM = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx2PPM)));
+	  kyzFromfcNEQPPM = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPM) - ((vx2PPM*vx3PPM)));
+	  kxzFromfcNEQPPM = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx3PPM)));
+	  kxxMyyFromfcNEQPPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx2PPM*vx2PPM)));
+	  kxxMzzFromfcNEQPPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx3PPM*vx3PPM)));
+	  kyyMzzFromfcNEQPPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPM) - ((vx2PPM*vx2PPM - vx3PPM*vx3PPM)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //3
+      //////////////////////////////////////////////////////////////////////////
+	  a0 = c1o8*(((vx1PPM + vx1PPP) + (vx1MPM + vx1MPP)) + ((vx1PMM + vx1PMP) + (vx1MMM + vx1MMP)));
+	  ax = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1PMM - vx1MPP)));
+	  ay = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1MPP - vx1PMM)));
+	  az = c1o4*(((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1MPP - vx1PMM)));
+	  axy = c1o2*(((vx1PPM - vx1PMP) + (vx1MMM - vx1MPP)) + ((vx1MMP - vx1MPM) + (vx1PPP - vx1PMM)));
+	  axz = c1o2*(((vx1PMP - vx1PPM) + (vx1MMM - vx1MPP)) + ((vx1MPM - vx1MMP) + (vx1PPP - vx1PMM)));
+	  ayz = c1o2*(((vx1PPP - vx1MPM) + (vx1PMM - vx1MMP)) + ((vx1MPP - vx1PPM) + (vx1MMM - vx1PMP)));
+	  axyz=		  ((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1PMM - vx1MPP)) ;
+	  b0 = c1o8*(((vx2PPM + vx2PPP) + (vx2MPM + vx2MPP)) + ((vx2PMM + vx2PMP) + (vx2MMM + vx2MMP)));
+	  bx = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2PMM - vx2MPP)));
+	  by = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2MPP - vx2PMM)));
+	  bz = c1o4*(((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2MPP - vx2PMM)));
+	  bxy = c1o2*(((vx2PPM - vx2MPP) + (vx2MMM - vx2PMP)) + ((vx2MMP - vx2PMM) + (vx2PPP - vx2MPM)));
+	  bxz = c1o2*(((vx2MMM - vx2PPM) + (vx2PMP - vx2MPP)) + ((vx2MPM - vx2PMM) + (vx2PPP - vx2MMP)));
+	  byz = c1o2*(((vx2MPP - vx2PPM) + (vx2MMM - vx2PMP)) + ((vx2PMM - vx2MMP) + (vx2PPP - vx2MPM)));
+	  bxyz=		  ((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2PMM - vx2MPP)) ;
+	  c0 = c1o8*(((vx3PPM + vx3PPP) + (vx3MPM + vx3MPP)) + ((vx3PMM + vx3PMP) + (vx3MMM + vx3MMP)));
+	  cx = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3PMM - vx3MPP)));
+	  cy = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3MPP - vx3PMM)));
+	  cz = c1o4*(((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3MPP - vx3PMM)));
+	  cxy = c1o2*(((vx3PPM - vx3PMP) + (vx3MMM - vx3MPP)) + ((vx3MMP - vx3MPM) + (vx3PPP - vx3PMM)));
+	  cxz = c1o2*(((vx3MMM - vx3PPM) + (vx3PMP - vx3MPP)) + ((vx3MPM - vx3PMM) + (vx3PPP - vx3MMP)));
+	  cyz = c1o2*(((vx3MMM - vx3PPM) + (vx3MPP - vx3PMP)) + ((vx3PMM - vx3MPM) + (vx3PPP - vx3MMP)));
+	  cxyz=		  ((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3PMM - vx3MPP)) ;
+
+	  //bxx = zero;
+	  //cxx = zero;
+	  //ayy = zero;
+	  //cyy = zero;
+	  //azz = zero;
+	  //bzz = zero;
+	  //axx = zero;
+	  //byy = zero;
+	  //czz = zero;
+
+	  bxx = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPMM - kxyFromfcNEQMPP)) + ((kxyFromfcNEQPMP - kxyFromfcNEQMPM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP))) - c1o2*axy;
+	  cxx = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) + (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) + (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*axz;
+
+	  ayy = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP)) - ((kxyFromfcNEQPMM - kxyFromfcNEQMPP) + (kxyFromfcNEQPMP - kxyFromfcNEQMPM))) - c1o2*bxy;
+	  cyy = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) + (kyzFromfcNEQPPM - kyzFromfcNEQMMP)) - ((kyzFromfcNEQPMM - kyzFromfcNEQMPP) + (kyzFromfcNEQPMP - kyzFromfcNEQMPM))) - c1o2*byz;
+
+	  azz = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) - (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) - (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*cxz;
+	  bzz = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) - (kyzFromfcNEQPMM - kyzFromfcNEQMPP)) + ((kyzFromfcNEQPMP - kyzFromfcNEQMPM) - (kyzFromfcNEQPPM - kyzFromfcNEQMMP))) - c1o2*cyz;
+
+	  axx = (c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) + (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM) + (kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP))) - c1o4*bxy)
+		  + (c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) + (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) + ((kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM) + (kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP))) - c1o4*cxz);
+
+	  byy = (-c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) - (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP) - (kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM))) - c1o4*axy)
+		  + (c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) + ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*cyz);
+
+	  czz = (-c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) - (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) - ((kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP) - (kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM))) - c1o4*axz)
+		  + (c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) - ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*byz);
+
+	  a0 -= c1o4*(axx + ayy + azz);
+	  b0 -= c1o4*(bxx + byy + bzz);
+	  c0 -= c1o4*(cxx + cyy + czz);
+      //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real kxyAverage = zero;
+	  real kyzAverage = zero;
+	  real kxzAverage = zero;
+	  real kxxMyyAverage = zero;
+	  real kxxMzzAverage = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //Press
+	  //d0   = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8;
+	  //dx   = ( pressPPM + pressPPP - pressMPM - pressMPP + pressPMM + pressPMP - pressMMM - pressMMP) * c1o4;
+	  //dy   = ( pressPPM + pressPPP + pressMPM + pressMPP - pressPMM - pressPMP - pressMMM - pressMMP) * c1o4;
+	  //dz   = (-pressPPM + pressPPP - pressMPM + pressMPP - pressPMM + pressPMP - pressMMM + pressMMP) * c1o4;
+	  //dxy  = ( pressPPM + pressPPP - pressMPM - pressMPP - pressPMM - pressPMP + pressMMM + pressMMP) * c1o2;
+	  //dxz  = (-pressPPM + pressPPP + pressMPM - pressMPP - pressPMM + pressPMP + pressMMM - pressMMP) * c1o2;
+	  //dyz  = (-pressPPM + pressPPP - pressMPM + pressMPP + pressPMM - pressPMP + pressMMM - pressMMP) * c1o2;
+	  //dxyz =  -pressPPM + pressPPP + pressMPM - pressMPP + pressPMM - pressPMP - pressMMM + pressMMP;
+	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho
+	  d0   = ( ((drhoPPM + drhoMMP) + (drhoMPM + drhoPMP)) + ((drhoPMM + drhoMPP) + (drhoMMM + drhoPPP))) * c1o8;
+	  dx   = ( ((drhoPPM - drhoMMP) + (drhoPMM - drhoMPP)) + ((drhoPMP - drhoMPM) + (drhoPPP - drhoMMM))) * c1o4;
+	  dy   = ( ((drhoPPM - drhoMMP) + (drhoMPP - drhoPMM)) + ((drhoMPM - drhoPMP) + (drhoPPP - drhoMMM))) * c1o4;
+	  dz   = ( ((drhoMMP - drhoPPM) + (drhoPPP - drhoMMM)) + ((drhoPMP - drhoMPM) + (drhoMPP - drhoPMM))) * c1o4;
+	  dxy  = ( ((drhoPPM - drhoPMP) + (drhoPPP - drhoPMM)) + ((drhoMMP - drhoMPM) + (drhoMMM - drhoMPP))) * c1o2;
+	  dxz  = ( ((drhoMMM - drhoPPM) + (drhoPPP - drhoMMP)) + ((drhoMPM - drhoPMM) + (drhoPMP - drhoMPP))) * c1o2;
+	  dyz  = ( ((drhoMPP - drhoPPM) + (drhoPPP - drhoMPM)) + ((drhoPMM - drhoMMP) + (drhoMMM - drhoPMP))) * c1o2;
+     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+      //
+      // Bernd das Brot
+      //
+	  // X------X
+	  // |      | x---x	
+	  // |	 ---+-+-> |    ----> off-vector
+	  // |		| x---x 
+	  // X------X   
+	  //			
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+      a0 = a0 + xoff * ax + yoff * ay + zoff * az + xoff_sq * axx + yoff_sq * ayy + zoff_sq * azz + xoff*yoff*axy + xoff*zoff*axz + yoff*zoff*ayz;
+      ax = ax + two * xoff * axx + yoff * axy + zoff * axz;
+      ay = ay + two * yoff * ayy + xoff * axy + zoff * ayz;
+      az = az + two * zoff * azz + xoff * axz + yoff * ayz;
+      b0 = b0 + xoff * bx + yoff * by + zoff * bz + xoff_sq * bxx + yoff_sq * byy + zoff_sq * bzz + xoff*yoff*bxy + xoff*zoff*bxz + yoff*zoff*byz;
+      bx = bx + two * xoff * bxx + yoff * bxy + zoff * bxz;
+      by = by + two * yoff * byy + xoff * bxy + zoff * byz;
+      bz = bz + two * zoff * bzz + xoff * bxz + yoff * byz;
+      c0 = c0 + xoff * cx + yoff * cy + zoff * cz + xoff_sq * cxx + yoff_sq * cyy + zoff_sq * czz + xoff*yoff*cxy + xoff*zoff*cxz + yoff*zoff*cyz;
+      cx = cx + two * xoff * cxx + yoff * cxy + zoff * cxz;
+      cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz;
+      cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz;
+	  d0 = d0 + xoff * dx + yoff * dy + zoff * dz + xoff*yoff*dxy + xoff*zoff*dxz + yoff*zoff*dyz;
+	  dx = dx + yoff * dxy + zoff * dxz;
+	  dy = dy + xoff * dxy + zoff * dyz;
+	  dz = dz + xoff * dxz + yoff * dyz;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	  
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real mgcbb = zero;
+	  real mgabb = zero;
+	  real mgbcb = zero;
+	  real mgbab = zero;
+	  real mgbbc = zero;
+	  real mgbba = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real m0, m1, m2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  //real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  //real O3 = two - o;
+	  //real residu, residutmp;
+	  //residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position SWB -0.25f, -0.25f, -0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x = -c1o4;
+	  y = -c1o4;
+	  z = -c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho = c3o64*drho_NEB+c1o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c27o64*drho_SWB+c9o64*drho_SWT;
+	  //press = press_SWT * (c9o64  + c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + 
+			//  press_NWT * (c3o64  + c1o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_SET * (c3o64  - c3o16 * mxoff + c1o16 * myoff - c3o16 * mzoff) + 
+			//  press_NET * (c1o64  - c1o16 * mxoff - c1o16 * myoff - c1o16 * mzoff) + 
+			//  press_NEB * (c3o64  - c3o16 * mxoff - c3o16 * myoff + c1o16 * mzoff) + 
+			//  press_NWB * (c9o64  + c3o16 * mxoff - c9o16 * myoff + c3o16 * mzoff) + 
+			//  press_SEB * (c9o64  - c9o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_SWB * (c27o64 + c9o16 * mxoff + c9o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_SWT * (c9o64 + c3o16 * xoff + c3o16 * yoff - c9o16 * zoff) + 
+			//  drho_NWT * (c3o64 + c1o16 * xoff - c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_SET * (c3o64 - c3o16 * xoff + c1o16 * yoff - c3o16 * zoff) + 
+			//  drho_NET * (c1o64 - c1o16 * xoff - c1o16 * yoff - c1o16 * zoff) + 
+			//  drho_NEB * (c3o64 - c3o16 * xoff - c3o16 * yoff + c1o16 * zoff) + 
+			//  drho_NWB * (c9o64 + c3o16 * xoff - c9o16 * yoff + c3o16 * zoff) + 
+			//  drho_SEB * (c9o64 - c9o16 * xoff + c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_SWB * (c27o64 + c9o16 * xoff + c9o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z )*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  mgcbb = (ax - axx) * eps_new;
+	  mgabb = (ax + axx) * eps_new;
+	  mgbcb = (by - byy) * eps_new;
+	  mgbab = (by + byy) * eps_new;
+	  mgbbc = (cz - czz) * eps_new;
+	  mgbba = (cz + czz) * eps_new;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 0
+	  k000base = posFSWB[k];
+	  kM00base = neighborFX[k000base];
+	  k0M0base = neighborFY[k000base];
+	  k00Mbase = neighborFZ[k000base];
+	  kMM0base = neighborFY[kM00base];
+	  kM0Mbase = neighborFZ[kM00base];
+	  k0MMbase = neighborFZ[k0M0base];
+	  kMMMbase = neighborFZ[kMM0base];
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k000 = k000base;
+	  kM00 = kM00base;
+	  k0M0 = k0M0base;
+	  k00M = k00Mbase;
+	  kMM0 = kMM0base;
+	  kM0M = kM0Mbase;
+	  k0MM = k0MMbase;
+	  kMMM = kMMMbase;
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position SWT -0.25f, -0.25f, 0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x = -c1o4;
+	  y = -c1o4;
+	  z =  c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho = c1o64*drho_NEB+c3o64*drho_NET+c3o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c9o64*drho_SET+c9o64*drho_SWB+c27o64*drho_SWT;
+	  //press = press_SWT * (c27o64 + c9o16 * mxoff + c9o16 * myoff - c9o16 * mzoff) + 
+			//  press_NWT * (c9o64  + c3o16 * mxoff - c9o16 * myoff - c3o16 * mzoff) + 
+			//  press_SET * (c9o64  - c9o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_NET * (c3o64  - c3o16 * mxoff - c3o16 * myoff - c1o16 * mzoff) + 
+			//  press_NEB * (c1o64  - c1o16 * mxoff - c1o16 * myoff + c1o16 * mzoff) + 
+			//  press_NWB * (c3o64  + c1o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_SEB * (c3o64  - c3o16 * mxoff + c1o16 * myoff + c3o16 * mzoff) + 
+			//  press_SWB * (c9o64  + c3o16 * mxoff + c3o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_SWT * (c27o64 + c9o16 * xoff + c9o16 * yoff - c9o16 * zoff) + 
+			//  drho_NWT * (c9o64 + c3o16 * xoff - c9o16 * yoff - c3o16 * zoff) + 
+			//  drho_SET * (c9o64 - c9o16 * xoff + c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_NET * (c3o64 - c3o16 * xoff - c3o16 * yoff - c1o16 * zoff) + 
+			//  drho_NEB * (c1o64 - c1o16 * xoff - c1o16 * yoff + c1o16 * zoff) + 
+			//  drho_NWB * (c3o64 + c1o16 * xoff - c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_SEB * (c3o64 - c3o16 * xoff + c1o16 * yoff + c3o16 * zoff) + 
+			//  drho_SWB * (c9o64 + c3o16 * xoff + c3o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  mgcbb = (ax - axx) * eps_new;
+	  mgabb = (ax + axx) * eps_new;
+	  mgbcb = (by - byy) * eps_new;
+	  mgbab = (by + byy) * eps_new;
+	  mgbbc = (cz - czz) * eps_new;
+	  mgbba = (cz + czz) * eps_new;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k000 = k00M;
+	  kM00 = kM0M;
+	  k0M0 = k0MM;
+	  k00M = neighborFZ[k00M];
+	  kMM0 = kMMM;
+	  kM0M = neighborFZ[kM0M];
+	  k0MM = neighborFZ[k0MM];
+	  kMMM = neighborFZ[kMMM];
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position SET 0.25f, -0.25f, 0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x =  c1o4;
+	  y = -c1o4;
+	  z =  c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho =c3o64*drho_NEB+c9o64*drho_NET+c1o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c27o64*drho_SET+c3o64*drho_SWB+c9o64*drho_SWT;
+	  //press = press_SET * (c27o64 - c9o16 * mxoff + c9o16 * myoff - c9o16 * mzoff) + 
+			//  press_NET * (c9o64  - c3o16 * mxoff - c9o16 * myoff - c3o16 * mzoff) + 
+			//  press_SWT * (c9o64  + c9o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_NWT * (c3o64  + c3o16 * mxoff - c3o16 * myoff - c1o16 * mzoff) + 
+			//  press_NWB * (c1o64  + c1o16 * mxoff - c1o16 * myoff + c1o16 * mzoff) + 
+			//  press_NEB * (c3o64  - c1o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_SWB * (c3o64  + c3o16 * mxoff + c1o16 * myoff + c3o16 * mzoff) + 
+			//  press_SEB * (c9o64  - c3o16 * mxoff + c3o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_SET * (c27o64 - c9o16 * xoff + c9o16 * yoff - c9o16 * zoff) + 
+			//  drho_NET * (c9o64 - c3o16 * xoff - c9o16 * yoff - c3o16 * zoff) + 
+			//  drho_SWT * (c9o64 + c9o16 * xoff + c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_NWT * (c3o64 + c3o16 * xoff - c3o16 * yoff - c1o16 * zoff) + 
+			//  drho_NWB * (c1o64 + c1o16 * xoff - c1o16 * yoff + c1o16 * zoff) + 
+			//  drho_NEB * (c3o64 - c1o16 * xoff - c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_SWB * (c3o64 + c3o16 * xoff + c1o16 * yoff + c3o16 * zoff) + 
+			//  drho_SEB * (c9o64 - c3o16 * xoff + c3o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  mgcbb = (ax - axx) * eps_new;
+	  mgabb = (ax + axx) * eps_new;
+	  mgbcb = (by - byy) * eps_new;
+	  mgbab = (by + byy) * eps_new;
+	  mgbbc = (cz - czz) * eps_new;
+	  mgbba = (cz + czz) * eps_new;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k000 = kM00;
+	  kM00 = neighborFX[kM00];
+	  k0M0 = kMM0;
+	  k00M = kM0M;
+	  kMM0 = neighborFX[kMM0];
+	  kM0M = neighborFX[kM0M];
+	  k0MM = kMMM;
+	  kMMM = neighborFX[kMMM];
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+
+
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position SEB 0.25f, -0.25f, -0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x =  c1o4;
+	  y = -c1o4;
+	  z = -c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho =c9o64*drho_NEB+c3o64*drho_NET+c3o64*drho_NWB+c1o64*drho_NWT+c27o64*drho_SEB+c9o64*drho_SET+c9o64*drho_SWB+c3o64*drho_SWT;
+	  //press = press_SET * (c9o64  - c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + 
+			//  press_NET * (c3o64  - c1o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_SWT * (c3o64  + c3o16 * mxoff + c1o16 * myoff - c3o16 * mzoff) + 
+			//  press_NWT * (c1o64  + c1o16 * mxoff - c1o16 * myoff - c1o16 * mzoff) + 
+			//  press_NWB * (c3o64  + c3o16 * mxoff - c3o16 * myoff + c1o16 * mzoff) + 
+			//  press_NEB * (c9o64  - c3o16 * mxoff - c9o16 * myoff + c3o16 * mzoff) + 
+			//  press_SWB * (c9o64  + c9o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_SEB * (c27o64 - c9o16 * mxoff + c9o16 * myoff + c9o16 * mzoff);
+	  //drho =  drho_SET * (c9o64 - c3o16 * xoff + c3o16 * yoff - c9o16 * zoff) + 
+			//  drho_NET * (c3o64 - c1o16 * xoff - c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_SWT * (c3o64 + c3o16 * xoff + c1o16 * yoff - c3o16 * zoff) + 
+			//  drho_NWT * (c1o64 + c1o16 * xoff - c1o16 * yoff - c1o16 * zoff) + 
+			//  drho_NWB * (c3o64 + c3o16 * xoff - c3o16 * yoff + c1o16 * zoff) + 
+			//  drho_NEB * (c9o64 - c3o16 * xoff - c9o16 * yoff + c3o16 * zoff) + 
+			//  drho_SWB * (c9o64 + c9o16 * xoff + c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_SEB * (c27o64 - c9o16 * xoff + c9o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  mgcbb = (ax - axx) * eps_new;
+	  mgabb = (ax + axx) * eps_new;
+	  mgbcb = (by - byy) * eps_new;
+	  mgbab = (by + byy) * eps_new;
+	  mgbbc = (cz - czz) * eps_new;
+	  mgbba = (cz + czz) * eps_new;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k00M = k000;
+	  kM0M = kM00;
+	  k0MM = k0M0;
+	  kMMM = kMM0;
+	  k000 = kM00base;
+	  kM00 = neighborFX[kM00base];
+	  k0M0 = kMM0base;
+	  kMM0 = neighborFX[kMM0base];
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position NWB -0.25f, 0.25f, -0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x = -c1o4;
+	  y =  c1o4;
+	  z = -c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho = c9o64*drho_NEB+c3o64*drho_NET+c27o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c1o64*drho_SET+c9o64*drho_SWB+c3o64*drho_SWT;
+	  //press = press_NWT * (c9o64  + c3o16 * mxoff - c3o16 * myoff - c9o16 * mzoff) + 
+			//  press_NET * (c3o64  - c3o16 * mxoff - c1o16 * myoff - c3o16 * mzoff) + 
+			//  press_SWT * (c3o64  + c1o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_SET * (c1o64  - c1o16 * mxoff + c1o16 * myoff - c1o16 * mzoff) + 
+			//  press_SEB * (c3o64  - c3o16 * mxoff + c3o16 * myoff + c1o16 * mzoff) + 
+			//  press_NEB * (c9o64  - c9o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_SWB * (c9o64  + c3o16 * mxoff + c9o16 * myoff + c3o16 * mzoff) + 
+			//  press_NWB * (c27o64 + c9o16 * mxoff - c9o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_NWT * (c9o64 + c3o16 * xoff - c3o16 * yoff - c9o16 * zoff) + 
+			//  drho_NET * (c3o64 - c3o16 * xoff - c1o16 * yoff - c3o16 * zoff) + 
+			//  drho_SWT * (c3o64 + c1o16 * xoff + c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_SET * (c1o64 - c1o16 * xoff + c1o16 * yoff - c1o16 * zoff) + 
+			//  drho_SEB * (c3o64 - c3o16 * xoff + c3o16 * yoff + c1o16 * zoff) + 
+			//  drho_NEB * (c9o64 - c9o16 * xoff - c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_SWB * (c9o64 + c3o16 * xoff + c9o16 * yoff + c3o16 * zoff) + 
+			//  drho_NWB * (c27o64 + c9o16 * xoff - c9o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  mgcbb = (ax - axx) * eps_new;
+	  mgabb = (ax + axx) * eps_new;
+	  mgbcb = (by - byy) * eps_new;
+	  mgbab = (by + byy) * eps_new;
+	  mgbbc = (cz - czz) * eps_new;
+	  mgbba = (cz + czz) * eps_new;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 0
+	  k000base = k0M0base;
+	  kM00base = kMM0base;
+	  k0M0base = neighborFY[k0M0base];
+	  k00Mbase = k0MMbase;
+	  kMM0base = neighborFY[kMM0base];
+	  kM0Mbase = kMMMbase;
+	  k0MMbase = neighborFY[k0MMbase];
+	  kMMMbase = neighborFY[kMMMbase];
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k000 = k000base;
+	  kM00 = kM00base;
+	  k0M0 = k0M0base;
+	  k00M = k00Mbase;
+	  kMM0 = kMM0base;
+	  kM0M = kM0Mbase;
+	  k0MM = k0MMbase;
+	  kMMM = kMMMbase;
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position NWT -0.25f, 0.25f, 0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x = -c1o4;
+	  y =  c1o4;
+	  z =  c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho = c3o64*drho_NEB+c9o64*drho_NET+c9o64*drho_NWB+c27o64*drho_NWT+c1o64*drho_SEB+c3o64*drho_SET+c3o64*drho_SWB+c9o64*drho_SWT;
+	  //press = press_NWT * (c27o64 + c9o16 * mxoff - c9o16 * myoff - c9o16 * mzoff) + 
+			//  press_NET * (c9o64  - c9o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_SWT * (c9o64  + c3o16 * mxoff + c9o16 * myoff - c3o16 * mzoff) + 
+			//  press_SET * (c3o64  - c3o16 * mxoff + c3o16 * myoff - c1o16 * mzoff) + 
+			//  press_SEB * (c1o64  - c1o16 * mxoff + c1o16 * myoff + c1o16 * mzoff) + 
+			//  press_NEB * (c3o64  - c3o16 * mxoff - c1o16 * myoff + c3o16 * mzoff) + 
+			//  press_SWB * (c3o64  + c1o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_NWB * (c9o64  + c3o16 * mxoff - c3o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_NWT * (c27o64 + c9o16 * xoff - c9o16 * yoff - c9o16 * zoff) + 
+			//  drho_NET * (c9o64 - c9o16 * xoff - c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_SWT * (c9o64 + c3o16 * xoff + c9o16 * yoff - c3o16 * zoff) + 
+			//  drho_SET * (c3o64 - c3o16 * xoff + c3o16 * yoff - c1o16 * zoff) + 
+			//  drho_SEB * (c1o64 - c1o16 * xoff + c1o16 * yoff + c1o16 * zoff) + 
+			//  drho_NEB * (c3o64 - c3o16 * xoff - c1o16 * yoff + c3o16 * zoff) + 
+			//  drho_SWB * (c3o64 + c1o16 * xoff + c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_NWB * (c9o64 + c3o16 * xoff - c3o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  mgcbb = (ax - axx) * eps_new;
+	  mgabb = (ax + axx) * eps_new;
+	  mgbcb = (by - byy) * eps_new;
+	  mgbab = (by + byy) * eps_new;
+	  mgbbc = (cz - czz) * eps_new;
+	  mgbba = (cz + czz) * eps_new;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k000 = k00M;
+	  kM00 = kM0M;
+	  k0M0 = k0MM;
+	  k00M = neighborFZ[k00M];
+	  kMM0 = kMMM;
+	  kM0M = neighborFZ[kM0M];
+	  k0MM = neighborFZ[k0MM];
+	  kMMM = neighborFZ[kMMM];
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position NET 0.25f, 0.25f, 0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x = c1o4;
+	  y = c1o4;
+	  z = c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho = c9o64*drho_NEB+c27o64*drho_NET+c3o64*drho_NWB+c9o64*drho_NWT+c3o64*drho_SEB+c9o64*drho_SET+c1o64*drho_SWB+c3o64*drho_SWT;
+	  //press = press_NET * (c27o64 - c9o16 * mxoff - c9o16 * myoff - c9o16 * mzoff) + 
+			//  press_NWT * (c9o64  + c9o16 * mxoff - c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_SET * (c9o64  - c3o16 * mxoff + c9o16 * myoff - c3o16 * mzoff) + 
+			//  press_SWT * (c3o64  + c3o16 * mxoff + c3o16 * myoff - c1o16 * mzoff) + 
+			//  press_SWB * (c1o64  + c1o16 * mxoff + c1o16 * myoff + c1o16 * mzoff) + 
+			//  press_NWB * (c3o64  + c3o16 * mxoff - c1o16 * myoff + c3o16 * mzoff) + 
+			//  press_SEB * (c3o64  - c1o16 * mxoff + c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_NEB * (c9o64  - c3o16 * mxoff - c3o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_NET * (c27o64 - c9o16 * xoff - c9o16 * yoff - c9o16 * zoff) + 
+			//  drho_NWT * (c9o64 + c9o16 * xoff - c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_SET * (c9o64 - c3o16 * xoff + c9o16 * yoff - c3o16 * zoff) + 
+			//  drho_SWT * (c3o64 + c3o16 * xoff + c3o16 * yoff - c1o16 * zoff) + 
+			//  drho_SWB * (c1o64 + c1o16 * xoff + c1o16 * yoff + c1o16 * zoff) + 
+			//  drho_NWB * (c3o64 + c3o16 * xoff - c1o16 * yoff + c3o16 * zoff) + 
+			//  drho_SEB * (c3o64 - c1o16 * xoff + c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_NEB * (c9o64 - c3o16 * xoff - c3o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  mgcbb = (ax - axx) * eps_new;
+	  mgabb = (ax + axx) * eps_new;
+	  mgbcb = (by - byy) * eps_new;
+	  mgbab = (by + byy) * eps_new;
+	  mgbbc = (cz - czz) * eps_new;
+	  mgbba = (cz + czz) * eps_new;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k000 = kM00;
+	  kM00 = neighborFX[kM00];
+	  k0M0 = kMM0;
+	  k00M = kM0M;
+	  kMM0 = neighborFX[kMM0];
+	  kM0M = neighborFX[kM0M];
+	  k0MM = kMMM;
+	  kMMM = neighborFX[kMMM];
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+
+	  //reset
+	  mfcbb = zero;
+	  mfabb = zero;
+	  mfbcb = zero;
+	  mfbab = zero;
+	  mfbbc = zero;
+	  mfbba = zero;
+	  mfccb = zero;
+	  mfaab = zero;
+	  mfcab = zero;
+	  mfacb = zero;
+	  mfcbc = zero;
+	  mfaba = zero;
+	  mfcba = zero;
+	  mfabc = zero;
+	  mfbcc = zero;
+	  mfbaa = zero;
+	  mfbca = zero;
+	  mfbac = zero;
+	  mfbbb = zero;
+	  mfccc = zero;
+	  mfaac = zero;
+	  mfcac = zero;
+	  mfacc = zero;
+	  mfcca = zero;
+	  mfaaa = zero;
+	  mfcaa = zero;
+	  mfaca = zero;
+	  /////////////
+	  mgcbb = zero;
+	  mgabb = zero;
+	  mgbcb = zero;
+	  mgbab = zero;
+	  mgbbc = zero;
+	  mgbba = zero;
+
+
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position NEB 0.25f, 0.25f, -0.25f
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  x =  c1o4;
+	  y =  c1o4;
+	  z = -c1o4;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho = c27o64*drho_NEB+c9o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c3o64*drho_SWB+c1o64*drho_SWT;
+	  //press = press_NET * (c9o64  - c3o16 * mxoff - c3o16 * myoff - c9o16 * mzoff) + 
+			//  press_NWT * (c3o64  + c3o16 * mxoff - c1o16 * myoff - c3o16 * mzoff) + 
+			//  press_SET * (c3o64  - c1o16 * mxoff + c3o16 * myoff - c3o16 * mzoff) + 
+			//  press_SWT * (c1o64  + c1o16 * mxoff + c1o16 * myoff - c1o16 * mzoff) + 
+			//  press_SWB * (c3o64  + c3o16 * mxoff + c3o16 * myoff + c1o16 * mzoff) + 
+			//  press_NWB * (c9o64  + c9o16 * mxoff - c3o16 * myoff + c3o16 * mzoff) + 
+			//  press_SEB * (c9o64  - c3o16 * mxoff + c9o16 * myoff + c3o16 * mzoff) + 
+			//  press_NEB * (c27o64 - c9o16 * mxoff - c9o16 * myoff + c9o16 * mzoff);
+	  //drho  = drho_NET * (c9o64 - c3o16 * xoff - c3o16 * yoff - c9o16 * zoff) + 
+			//  drho_NWT * (c3o64 + c3o16 * xoff - c1o16 * yoff - c3o16 * zoff) + 
+			//  drho_SET * (c3o64 - c1o16 * xoff + c3o16 * yoff - c3o16 * zoff) + 
+			//  drho_SWT * (c1o64 + c1o16 * xoff + c1o16 * yoff - c1o16 * zoff) + 
+			//  drho_SWB * (c3o64 + c3o16 * xoff + c3o16 * yoff + c1o16 * zoff) + 
+			//  drho_NWB * (c9o64 + c9o16 * xoff - c3o16 * yoff + c3o16 * zoff) + 
+			//  drho_SEB * (c9o64 - c3o16 * xoff + c9o16 * yoff + c3o16 * zoff) + 
+			//  drho_NEB * (c27o64 - c9o16 * xoff - c9o16 * yoff + c9o16 * zoff);
+	  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
+	  vvx = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
+	  vvy = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
+	  vvz = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
+	  //vvx = a0 + c1o4*(-ax - ay - az) + c1o16*(axx + axy + axz + ayy + ayz + azz) + c1o64*(-axyz);
+	  //vvy = b0 + c1o4*(-bx - by - bz) + c1o16*(bxx + bxy + bxz + byy + byz + bzz) + c1o64*(-bxyz);
+	  //vvz = c0 + c1o4*(-cx - cy - cz) + c1o16*(cxx + cxy + cxz + cyy + cyz + czz) + c1o64*(-cxyz);
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (two*axx*x+axy*y+axz*z+axyz*y*z+ax + two*byy*y+bxy*x+byz*z+bxyz*x*z+by + two*czz*z+cxz*x+cyz*y+cxyz*x*y+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+	  
+	  //2.f
+	  // linear combinations
+	  mxxPyyPzz = mfaaa - c2o3*(ax + by + two*axx*x + bxy*x + axy*y + two*byy*y + axz*z + byz*z + bxyz*x*z + axyz*y*z + cz - cxz*x + cyz*y + cxyz*x*y + two*czz*z)*eps_new / oP* (one + press);
+	  //mxxMyy    = -c2o3*(ax - by + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o;
+	 
+	  //mfabb     = -c1o3 * (bz + cy + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o;
+
+  	  mxxMyy    = -c2o3*(ax - by + kxxMyyAverage + two*axx*x - bxy*x + axy*y - two*byy*y + axz*z - byz*z - bxyz*x*z + axyz*y*z)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*(ax - cz + kxxMzzAverage + two*axx*x - cxz*x + axy*y - cyz*y - cxyz*x*y + axz*z - two*czz*z + axyz*y*z)*eps_new/o * (one + press);
+	 
+	  mfabb     = -c1o3 * (bz + cy + kyzAverage + bxz*x + cxy*x + byz*y + two*cyy*y + bxyz*x*y + two*bzz*z + cyz*z + cxyz*x*z)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * (az + cx + kxzAverage + axz*x + two*cxx*x + ayz*y + cxy*y + axyz*x*y + two*azz*z + cxz*z + cxyz*y*z)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * (ay + bx + kxyAverage + axy*x + two*bxx*x + two*ayy*y + bxy*y + ayz*z + bxz*z + axyz*x*z + bxyz*y*z)*eps_new/o * (one + press);
+
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //three
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy + axyz*x + bxyz*y + cxyz*z);
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz + cxyz*x + axyz*z);
+	  //OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
+	  //residu =  -(one/o-c1o2)*c2o9*(bxx + bzz + (axy+axyz*z+cyz+cxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz + cxyz*x + axyz*z));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz - cxyz*x + axyz*z);
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz - cxyz*x + axyz*z);
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy + bxyz*x + axyz*y);
+	  //residu =  -(one/o-c1o2)*c2o9*(cxx + cyy + (axz+axyz*y+byz+bxyz*x)*two )*eps_new*eps_new;
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy + bxyz*x + axyz*y));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy - bxyz*x + axyz*y);
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy - bxyz*x + axyz*y);
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz + cxyz*y + bxyz*z);
+	  //residu =  -(one/o-c1o2)*c2o9*(ayy + azz + (bxy+bxyz*z+cxz+cxyz*y)*two )*eps_new*eps_new;
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz - cxyz*y - bxyz*z);
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz =  zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz - cxyz*y + bxyz*z);
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  mgcbb = (ax - axx) * eps_new;
+	  mgabb = (ax + axx) * eps_new;
+	  mgbcb = (by - byy) * eps_new;
+	  mgbab = (by + byy) * eps_new;
+	  mgbbc = (cz - czz) * eps_new;
+	  mgbba = (cz + czz) * eps_new;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.f
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  //////////////////////////////////////////////////////////////////////////
+	  //index 
+	  k00M = k000;   
+	  kM0M = kM00;
+	  k0MM = k0M0;
+	  kMMM = kMM0;
+	  k000 = kM00base;
+	  kM00 = neighborFX[kM00base];
+	  k0M0 = kMM0base;
+	  kMM0 = neighborFX[kMM0base];
+	  ////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;
+	  fM00dest[kM00] = mfabb;
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+   }
+}
+//////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/VirtualFluids_GPU/GPU/ScaleFC27.cu b/src/VirtualFluids_GPU/GPU/ScaleFC27.cu
index 354494d34..85f67cc91 100644
--- a/src/VirtualFluids_GPU/GPU/ScaleFC27.cu
+++ b/src/VirtualFluids_GPU/GPU/ScaleFC27.cu
@@ -1,1247 +1,13 @@
+//  _    ___      __              __________      _     __        ______________   __
+// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____   /  ___/ __  / /  / /
+// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/  / /___/ /_/ / /  / /
+// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )  / /_) / ____/ /__/ / 
+// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/   \____/_/    \_____/
+//
+//////////////////////////////////////////////////////////////////////////
 /* Device code */
 #include "LBM/D3Q27.h"
-//#include "LBM/LB.h"
 #include "GPU/constant.h"
-
-//////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFC_comp_D3Q27F3( real* DC,
-												 real* DF,
-												 real* G6,
-												 unsigned int* neighborCX,
-												 unsigned int* neighborCY,
-												 unsigned int* neighborCZ,
-												 unsigned int* neighborFX,
-												 unsigned int* neighborFY,
-												 unsigned int* neighborFZ,
-												 unsigned int size_MatC, 
-												 unsigned int size_MatF, 
-												 bool evenOrOdd,
-												 unsigned int* posC, 
-												 unsigned int* posFSWB, 
-												 unsigned int kFC, 
-												 real omCoarse, 
-												 real omFine, 
-												 real nu, 
-												 unsigned int nxC, 
-												 unsigned int nyC, 
-												 unsigned int nxF, 
-												 unsigned int nyF,
-												 OffFC offFC)
-{
-   real 
-	   *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source,
-	   *fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource,
-	   *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource;
-
-
-   fP00source = &DF[dirE   *size_MatF];
-   fM00source = &DF[dirW   *size_MatF];
-   f0P0source = &DF[dirN   *size_MatF];
-   f0M0source = &DF[dirS   *size_MatF];
-   f00Psource = &DF[dirT   *size_MatF];
-   f00Msource = &DF[dirB   *size_MatF];
-   fPP0source = &DF[dirNE  *size_MatF];
-   fMM0source = &DF[dirSW  *size_MatF];
-   fPM0source = &DF[dirSE  *size_MatF];
-   fMP0source = &DF[dirNW  *size_MatF];
-   fP0Psource = &DF[dirTE  *size_MatF];
-   fM0Msource = &DF[dirBW  *size_MatF];
-   fP0Msource = &DF[dirBE  *size_MatF];
-   fM0Psource = &DF[dirTW  *size_MatF];
-   f0PPsource = &DF[dirTN  *size_MatF];
-   f0MMsource = &DF[dirBS  *size_MatF];
-   f0PMsource = &DF[dirBN  *size_MatF];
-   f0MPsource = &DF[dirTS  *size_MatF];
-   f000source = &DF[dirZERO*size_MatF];
-   fMMMsource = &DF[dirBSW *size_MatF];
-   fMMPsource = &DF[dirTSW *size_MatF];
-   fMPPsource = &DF[dirTNW *size_MatF];
-   fMPMsource = &DF[dirBNW *size_MatF];
-   fPPMsource = &DF[dirBNE *size_MatF];
-   fPPPsource = &DF[dirTNE *size_MatF];
-   fPMPsource = &DF[dirTSE *size_MatF];
-   fPMMsource = &DF[dirBSE *size_MatF];
-
-   real
-	   *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest,
-	   *fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest,
-	   *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest;
-
-   if (evenOrOdd==true)
-   {
-	   fP00dest = &DC[dirE   *size_MatC];
-	   fM00dest = &DC[dirW   *size_MatC];
-	   f0P0dest = &DC[dirN   *size_MatC];
-	   f0M0dest = &DC[dirS   *size_MatC];
-	   f00Pdest = &DC[dirT   *size_MatC];
-	   f00Mdest = &DC[dirB   *size_MatC];
-	   fPP0dest = &DC[dirNE  *size_MatC];
-	   fMM0dest = &DC[dirSW  *size_MatC];
-	   fPM0dest = &DC[dirSE  *size_MatC];
-	   fMP0dest = &DC[dirNW  *size_MatC];
-	   fP0Pdest = &DC[dirTE  *size_MatC];
-	   fM0Mdest = &DC[dirBW  *size_MatC];
-	   fP0Mdest = &DC[dirBE  *size_MatC];
-	   fM0Pdest = &DC[dirTW  *size_MatC];
-	   f0PPdest = &DC[dirTN  *size_MatC];
-	   f0MMdest = &DC[dirBS  *size_MatC];
-	   f0PMdest = &DC[dirBN  *size_MatC];
-	   f0MPdest = &DC[dirTS  *size_MatC];
-	   f000dest = &DC[dirZERO*size_MatC];
-	   fMMMdest = &DC[dirBSW *size_MatC];
-	   fMMPdest = &DC[dirTSW *size_MatC];
-	   fMPPdest = &DC[dirTNW *size_MatC];
-	   fMPMdest = &DC[dirBNW *size_MatC];
-	   fPPMdest = &DC[dirBNE *size_MatC];
-	   fPPPdest = &DC[dirTNE *size_MatC];
-	   fPMPdest = &DC[dirTSE *size_MatC];
-	   fPMMdest = &DC[dirBSE *size_MatC];
-   } 
-   else
-   {
-	   fP00dest = &DC[dirW   *size_MatC];
-	   fM00dest = &DC[dirE   *size_MatC];
-	   f0P0dest = &DC[dirS   *size_MatC];
-	   f0M0dest = &DC[dirN   *size_MatC];
-	   f00Pdest = &DC[dirB   *size_MatC];
-	   f00Mdest = &DC[dirT   *size_MatC];
-	   fPP0dest = &DC[dirSW  *size_MatC];
-	   fMM0dest = &DC[dirNE  *size_MatC];
-	   fPM0dest = &DC[dirNW  *size_MatC];
-	   fMP0dest = &DC[dirSE  *size_MatC];
-	   fP0Pdest = &DC[dirBW  *size_MatC];
-	   fM0Mdest = &DC[dirTE  *size_MatC];
-	   fP0Mdest = &DC[dirTW  *size_MatC];
-	   fM0Pdest = &DC[dirBE  *size_MatC];
-	   f0PPdest = &DC[dirBS  *size_MatC];
-	   f0MMdest = &DC[dirTN  *size_MatC];
-	   f0PMdest = &DC[dirTS  *size_MatC];
-	   f0MPdest = &DC[dirBN  *size_MatC];
-	   f000dest = &DC[dirZERO*size_MatC];
-	   fMMMdest = &DC[dirTNE *size_MatC];
-	   fMMPdest = &DC[dirBNE *size_MatC];
-	   fMPPdest = &DC[dirBSE *size_MatC];
-	   fMPMdest = &DC[dirTSE *size_MatC];
-	   fPPMdest = &DC[dirTSW *size_MatC];
-	   fPPPdest = &DC[dirBSW *size_MatC];
-	   fPMPdest = &DC[dirBNW *size_MatC];
-	   fPMMdest = &DC[dirTNW *size_MatC];
-   }
-
-   Distributions6 G;
-   if (evenOrOdd == true)
-   {
-	   G.g[dirE] = &G6[dirE   *size_MatC];
-	   G.g[dirW] = &G6[dirW   *size_MatC];
-	   G.g[dirN] = &G6[dirN   *size_MatC];
-	   G.g[dirS] = &G6[dirS   *size_MatC];
-	   G.g[dirT] = &G6[dirT   *size_MatC];
-	   G.g[dirB] = &G6[dirB   *size_MatC];
-   }
-   else
-   {
-	   G.g[dirW] = &G6[dirE   *size_MatC];
-	   G.g[dirE] = &G6[dirW   *size_MatC];
-	   G.g[dirS] = &G6[dirN   *size_MatC];
-	   G.g[dirN] = &G6[dirS   *size_MatC];
-	   G.g[dirB] = &G6[dirT   *size_MatC];
-	   G.g[dirT] = &G6[dirB   *size_MatC];
-   }
-
-   ////////////////////////////////////////////////////////////////////////////////
-   const unsigned  ix = threadIdx.x;  // Globaler x-Index 
-   const unsigned  iy = blockIdx.x;   // Globaler y-Index 
-   const unsigned  iz = blockIdx.y;   // Globaler z-Index 
-
-   const unsigned nx = blockDim.x;
-   const unsigned ny = gridDim.x;
-
-   const unsigned k = nx*(ny*iz + iy) + ix;
-   //////////////////////////////////////////////////////////////////////////
-
-   ////////////////////////////////////////////////////////////////////////////////
-   real eps_new = two;
-   real omegaS = omFine;//-omFine;
-   real o  = omCoarse;//-omCoarse;
-   //real op = one;
-   //real cu_sq;
-
-   real xoff,    yoff,    zoff;
-   real xoff_sq, yoff_sq, zoff_sq;
-
-   real        vvx, vvy, vvz, vx2, vy2, vz2, drho;
-   real        press;//,drho,vx1,vx2,vx3;
-   real        /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM;
-   real        /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP;
-   real        /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP;
-   real        /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM;
-   real        /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM;
-   real        /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP;
-   real        /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP;
-   real        /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM;
-   real        fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM;
-   real        kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM;
-   real        kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP;
-   real        kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP;
-   real        kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM;
-   real        kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM;
-   real        kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP;
-   real        kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP;
-   real        kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM;
-   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
-   real        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
-
-   if(k<kFC)
-   {
-      //////////////////////////////////////////////////////////////////////////
-      xoff = offFC.xOffFC[k];
-      yoff = offFC.yOffFC[k];
-      zoff = offFC.zOffFC[k];      
-      xoff_sq = xoff * xoff;
-      yoff_sq = yoff * yoff;
-      zoff_sq = zoff * zoff;
-      //////////////////////////////////////////////////////////////////////////
-      //SWB//
-      //////////////////////////////////////////////////////////////////////////
-      //index 0
-      unsigned int k000base = posFSWB[k];
-      unsigned int kM00base = neighborFX[k000base];
-      unsigned int k0M0base = neighborFY[k000base];
-      unsigned int k00Mbase = neighborFZ[k000base];
-      unsigned int kMM0base = neighborFY[kM00base];
-      unsigned int kM0Mbase = neighborFZ[kM00base];
-      unsigned int k0MMbase = neighborFZ[k0M0base];
-      unsigned int kMMMbase = neighborFZ[kMM0base];
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      unsigned int k000 = k000base;
-      unsigned int kM00 = kM00base;   
-      unsigned int k0M0 = k0M0base;   
-      unsigned int k00M = k00Mbase;   
-      unsigned int kMM0 = kMM0base;  
-      unsigned int kM0M = kM0Mbase;  
-      unsigned int k0MM = k0MMbase;  
-      unsigned int kMMM = kMMMbase; 
-      ////////////////////////////////////////////////////////////////////////////////
-      fP00 = fP00source[k000];
-      fM00 = fM00source[kM00];
-      f0P0 = f0P0source[k000];
-      f0M0 = f0M0source[k0M0];
-      f00P = f00Psource[k000];
-      f00M = f00Msource[k00M];
-      fPP0 = fPP0source[k000];
-      fMM0 = fMM0source[kMM0];
-      fPM0 = fPM0source[k0M0];
-      fMP0 = fMP0source[kM00];
-      fP0P = fP0Psource[k000];
-      fM0M = fM0Msource[kM0M];
-      fP0M = fP0Msource[k00M];
-      fM0P = fM0Psource[kM00];
-      f0PP = f0PPsource[k000];
-      f0MM = f0MMsource[k0MM];
-      f0PM = f0PMsource[k00M];
-      f0MP = f0MPsource[k0M0];
-      f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-      fPMP = fPMPsource[k0M0];
-      fPMM = fPMMsource[k0MM];
-
-      drhoMMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1MMM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMM);
-	  vx2MMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMM);
-	  vx3MMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMM);
-
-	  kxyFromfcNEQMMM    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx2MMM)));
-	  kyzFromfcNEQMMM    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMM) - ((vx2MMM*vx3MMM)));
-	  kxzFromfcNEQMMM    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx3MMM)));
-	  kxxMyyFromfcNEQMMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx2MMM*vx2MMM)));
-	  kxxMzzFromfcNEQMMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx3MMM*vx3MMM)));
-	  kyyMzzFromfcNEQMMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMM) - ((vx2MMM*vx2MMM - vx3MMM*vx3MMM)));
-
-      //////////////////////////////////////////////////////////////////////////
-      //SWT//
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k000 = k00M;
-      kM00 = kM0M;   
-      k0M0 = k0MM;   
-      k00M = neighborFZ[k00M];   
-      kMM0 = kMMM;  
-      kM0M = neighborFZ[kM0M];  
-      k0MM = neighborFZ[k0MM];  
-      kMMM = neighborFZ[kMMM]; 
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoMMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1MMP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMP);
-	  vx2MMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMP);
-	  vx3MMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMP);
-
-	  kxyFromfcNEQMMP    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx2MMP)));
-	  kyzFromfcNEQMMP    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMP) - ((vx2MMP*vx3MMP)));
-	  kxzFromfcNEQMMP    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx3MMP)));
-	  kxxMyyFromfcNEQMMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx2MMP*vx2MMP)));
-	  kxxMzzFromfcNEQMMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx3MMP*vx3MMP)));
-	  kyyMzzFromfcNEQMMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMP) - ((vx2MMP*vx2MMP - vx3MMP*vx3MMP)));
-
-      //////////////////////////////////////////////////////////////////////////
-      //SET//
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k000 = kM00;
-      kM00 = neighborFX[kM00];   
-      k0M0 = kMM0;   
-      k00M = kM0M;   
-      kMM0 = neighborFX[kMM0];  
-      kM0M = neighborFX[kM0M];  
-      k0MM = kMMM;  
-      kMMM = neighborFX[kMMM]; 
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoPMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1PMP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMP);
-	  vx2PMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMP);
-	  vx3PMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMP);
-
-	  kxyFromfcNEQPMP    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx2PMP)));
-	  kyzFromfcNEQPMP    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMP) - ((vx2PMP*vx3PMP)));
-	  kxzFromfcNEQPMP    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx3PMP)));
-	  kxxMyyFromfcNEQPMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx2PMP*vx2PMP)));
-	  kxxMzzFromfcNEQPMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx3PMP*vx3PMP)));
-	  kyyMzzFromfcNEQPMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMP) - ((vx2PMP*vx2PMP - vx3PMP*vx3PMP)));
-
-      //////////////////////////////////////////////////////////////////////////
-      //SEB//
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k00M = k000;   
-      kM0M = kM00;  
-      k0MM = k0M0;  
-      kMMM = kMM0; 
-      k000 = kM00base;
-      kM00 = neighborFX[kM00base];   
-      k0M0 = kMM0base;   
-      kMM0 = neighborFX[kMM0base];  
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoPMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1PMM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMM);
-	  vx2PMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMM);
-	  vx3PMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMM);
-
-	  kxyFromfcNEQPMM    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx2PMM)));
-	  kyzFromfcNEQPMM    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMM) - ((vx2PMM*vx3PMM)));
-	  kxzFromfcNEQPMM    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx3PMM)));
-	  kxxMyyFromfcNEQPMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx2PMM*vx2PMM)));
-	  kxxMzzFromfcNEQPMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx3PMM*vx3PMM)));
-	  kyyMzzFromfcNEQPMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMM) - ((vx2PMM*vx2PMM - vx3PMM*vx3PMM)));
-
-      //////////////////////////////////////////////////////////////////////////
-      //NWB//
-      //////////////////////////////////////////////////////////////////////////
-      //index 0
-      k000base = k0M0base;
-      kM00base = kMM0base;
-      k0M0base = neighborFY[k0M0base];
-      k00Mbase = k0MMbase;
-      kMM0base = neighborFY[kMM0base];
-      kM0Mbase = kMMMbase;
-      k0MMbase = neighborFY[k0MMbase];
-      kMMMbase = neighborFY[kMMMbase];
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k000 = k000base;
-      kM00 = kM00base;   
-      k0M0 = k0M0base;   
-      k00M = k00Mbase;   
-      kMM0 = kMM0base;  
-      kM0M = kM0Mbase;  
-      k0MM = k0MMbase;  
-      kMMM = kMMMbase; 
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoMPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1MPM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPM);
-	  vx2MPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPM);
-	  vx3MPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPM);
-
-	  kxyFromfcNEQMPM    = -three*omegaS*   ((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx2MPM)));
-	  kyzFromfcNEQMPM    = -three*omegaS*   ((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPM) - ((vx2MPM*vx3MPM)));
-	  kxzFromfcNEQMPM    = -three*omegaS*   ((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx3MPM)));
-	  kxxMyyFromfcNEQMPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx2MPM*vx2MPM)));
-	  kxxMzzFromfcNEQMPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx3MPM*vx3MPM)));
-	  kyyMzzFromfcNEQMPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPM) - ((vx2MPM*vx2MPM - vx3MPM*vx3MPM)));
-
-	  //////////////////////////////////////////////////////////////////////////
-      //NWT//
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k000 = k00M;
-      kM00 = kM0M;   
-      k0M0 = k0MM;   
-      k00M = neighborFZ[k00M];   
-      kMM0 = kMMM;  
-      kM0M = neighborFZ[kM0M];  
-      k0MM = neighborFZ[k0MM];  
-      kMMM = neighborFZ[kMMM]; 
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoMPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1MPP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPP);
-	  vx2MPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPP);
-	  vx3MPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPP);
-
-	  kxyFromfcNEQMPP    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx2MPP)));
-	  kyzFromfcNEQMPP    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPP) - ((vx2MPP*vx3MPP)));
-	  kxzFromfcNEQMPP    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx3MPP)));
-	  kxxMyyFromfcNEQMPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx2MPP*vx2MPP)));
-	  kxxMzzFromfcNEQMPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx3MPP*vx3MPP)));
-	  kyyMzzFromfcNEQMPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPP) - ((vx2MPP*vx2MPP - vx3MPP*vx3MPP)));
-
-      //////////////////////////////////////////////////////////////////////////
-      //NET//
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k000 = kM00;
-      kM00 = neighborFX[kM00];   
-      k0M0 = kMM0;   
-      k00M = kM0M;   
-      kMM0 = neighborFX[kMM0];  
-      kM0M = neighborFX[kM0M];  
-      k0MM = kMMM;  
-      kMMM = neighborFX[kMMM]; 
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoPPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1PPP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPP);
-	  vx2PPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPP);
-	  vx3PPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPP);
-
-	  kxyFromfcNEQPPP    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx2PPP)));
-	  kyzFromfcNEQPPP    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPP) - ((vx2PPP*vx3PPP)));
-	  kxzFromfcNEQPPP    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx3PPP)));
-	  kxxMyyFromfcNEQPPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx2PPP*vx2PPP)));
-	  kxxMzzFromfcNEQPPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx3PPP*vx3PPP)));
-	  kyyMzzFromfcNEQPPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPP) - ((vx2PPP*vx2PPP - vx3PPP*vx3PPP)));
-
-      //////////////////////////////////////////////////////////////////////////
-      //NEB//
-      //////////////////////////////////////////////////////////////////////////
-      //index 
-      k00M = k000;   
-      kM0M = kM00;  
-      k0MM = k0M0;  
-      kMMM = kMM0; 
-      k000 = kM00base;
-      kM00 = neighborFX[kM00base];   
-      k0M0 = kMM0base;   
-      kMM0 = neighborFX[kMM0base];  
-      ////////////////////////////////////////////////////////////////////////////////
-	  fP00 = fP00source[k000];
-	  fM00 = fM00source[kM00];
-	  f0P0 = f0P0source[k000];
-	  f0M0 = f0M0source[k0M0];
-	  f00P = f00Psource[k000];
-	  f00M = f00Msource[k00M];
-	  fPP0 = fPP0source[k000];
-	  fMM0 = fMM0source[kMM0];
-	  fPM0 = fPM0source[k0M0];
-	  fMP0 = fMP0source[kM00];
-	  fP0P = fP0Psource[k000];
-	  fM0M = fM0Msource[kM0M];
-	  fP0M = fP0Msource[k00M];
-	  fM0P = fM0Psource[kM00];
-	  f0PP = f0PPsource[k000];
-	  f0MM = f0MMsource[k0MM];
-	  f0PM = f0PMsource[k00M];
-	  f0MP = f0MPsource[k0M0];
-	  f000 = f000source[k000];
-	  fMMM = fMMMsource[kMMM];
-	  fMMP = fMMPsource[kMM0];
-	  fMPP = fMPPsource[kM00];
-	  fMPM = fMPMsource[kM0M];
-	  fPPM = fPPMsource[k00M];
-	  fPPP = fPPPsource[k000];
-	  fPMP = fPMPsource[k0M0];
-	  fPMM = fPMMsource[k0MM];
-
-      drhoPPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
-      vx1PPM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPM);
-	  vx2PPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPM);
-	  vx3PPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPM);
-
-	  kxyFromfcNEQPPM    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx2PPM)));
-	  kyzFromfcNEQPPM    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPM) - ((vx2PPM*vx3PPM)));
-	  kxzFromfcNEQPPM    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx3PPM)));
-	  kxxMyyFromfcNEQPPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx2PPM*vx2PPM)));
-	  kxxMzzFromfcNEQPPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx3PPM*vx3PPM)));
-	  kyyMzzFromfcNEQPPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPM) - ((vx2PPM*vx2PPM - vx3PPM*vx3PPM)));
-
-      //////////////////////////////////////////////////////////////////////////
-      //3
-      //////////////////////////////////////////////////////////////////////////
-	  a0  = c1o8*(((vx1PPM + vx1MMP) + (vx1MPM + vx1PMP)) + ((vx1PMM + vx1MPP) + (vx1MMM + vx1PPP)));
-	  ax  = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1PMM - vx1MPP)));
-	  ay  = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1MPP - vx1PMM)));
-	  az  = c1o4*(((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1MPP - vx1PMM)));
-	  axy = c1o2*(((vx1PPM - vx1PMP) + (vx1MMM - vx1MPP)) + ((vx1MMP - vx1MPM) + (vx1PPP - vx1PMM)));
-	  axz = c1o2*(((vx1PMP - vx1PPM) + (vx1MMM - vx1MPP)) + ((vx1MPM - vx1MMP) + (vx1PPP - vx1PMM)));
-	  ayz = c1o2*(((vx1PPP - vx1MPM) + (vx1PMM - vx1MMP)) + ((vx1MPP - vx1PPM) + (vx1MMM - vx1PMP)));
-	  //axyz=		  ((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1PMM - vx1MPP)) ;
-	  b0  = c1o8*(((vx2PPM + vx2MMP) + (vx2MPM + vx2PMP)) + ((vx2PMM + vx2MPP) + (vx2MMM + vx2PPP)));
-	  bx  = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2PMM - vx2MPP)));
-	  by  = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2MPP - vx2PMM)));
-	  bz  = c1o4*(((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2MPP - vx2PMM)));
-	  bxy = c1o2*(((vx2PPM - vx2MPP) + (vx2MMM - vx2PMP)) + ((vx2MMP - vx2PMM) + (vx2PPP - vx2MPM)));
-	  bxz = c1o2*(((vx2MMM - vx2PPM) + (vx2PMP - vx2MPP)) + ((vx2MPM - vx2PMM) + (vx2PPP - vx2MMP)));
-	  byz = c1o2*(((vx2MPP - vx2PPM) + (vx2MMM - vx2PMP)) + ((vx2PMM - vx2MMP) + (vx2PPP - vx2MPM)));
-	  //bxyz=		  ((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2PMM - vx2MPP)) ;
-	  c0  = c1o8*(((vx3PPM + vx3MMP) + (vx3MPM + vx3PMP)) + ((vx3PMM + vx3MPP) + (vx3MMM + vx3PPP)));
-	  cx  = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3PMM - vx3MPP)));
-	  cy  = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3MPP - vx3PMM)));
-	  cz  = c1o4*(((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3MPP - vx3PMM)));
-	  cxy = c1o2*(((vx3PPM - vx3PMP) + (vx3MMM - vx3MPP)) + ((vx3MMP - vx3MPM) + (vx3PPP - vx3PMM)));
-	  cxz = c1o2*(((vx3MMM - vx3PPM) + (vx3PMP - vx3MPP)) + ((vx3MPM - vx3PMM) + (vx3PPP - vx3MMP)));
-	  cyz = c1o2*(((vx3MMM - vx3PPM) + (vx3MPP - vx3PMP)) + ((vx3PMM - vx3MPM) + (vx3PPP - vx3MMP)));
-	  //cxyz=		  ((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3PMM - vx3MPP)) ;
-
-	  //bxx = zero;
-	  //cxx = zero;
-	  //ayy = zero;
-	  //cyy = zero;
-	  //azz = zero;
-	  //bzz = zero;
-	  //axx = zero;
-	  //byy = zero;
-	  //czz = zero;
-
-	  bxx = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPMM - kxyFromfcNEQMPP)) + ((kxyFromfcNEQPMP - kxyFromfcNEQMPM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP))) - c1o2*axy;
-	  cxx = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) + (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) + (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*axz;
-
-	  ayy = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP)) - ((kxyFromfcNEQPMM - kxyFromfcNEQMPP) + (kxyFromfcNEQPMP - kxyFromfcNEQMPM))) - c1o2*bxy;
-	  cyy = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) + (kyzFromfcNEQPPM - kyzFromfcNEQMMP)) - ((kyzFromfcNEQPMM - kyzFromfcNEQMPP) + (kyzFromfcNEQPMP - kyzFromfcNEQMPM))) - c1o2*byz;
-
-	  azz = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) - (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) - (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*cxz;
-	  bzz = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) - (kyzFromfcNEQPMM - kyzFromfcNEQMPP)) + ((kyzFromfcNEQPMP - kyzFromfcNEQMPM) - (kyzFromfcNEQPPM - kyzFromfcNEQMMP))) - c1o2*cyz;
-
-	  axx = ( c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) + (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM) + (kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP))) - c1o4*bxy)
-		  + ( c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) + (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) + ((kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM) + (kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP))) - c1o4*cxz);
-
-	  byy = (-c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) - (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP) - (kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM))) - c1o4*axy)
-		  + ( c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) + ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*cyz);
-
-	  czz = (-c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) - (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) - ((kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP) - (kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM))) - c1o4*axz)
-		  + ( c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) - ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*byz);
-
-	  a0 -= c1o4*(axx + ayy + azz);
-	  b0 -= c1o4*(bxx + byy + bzz);
-	  c0 -= c1o4*(cxx + cyy + czz);
-
-	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  real kxyAverage = zero;
-	  real kyzAverage = zero;
-	  real kxzAverage = zero;
-	  real kxxMyyAverage = zero;
-	  real kxxMzzAverage = zero;
-	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  ////Press
-	  //d0   = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8;
-	  //dx   = ( pressPPM + pressPPP - pressMPM - pressMPP + pressPMM + pressPMP - pressMMM - pressMMP) * c1o4;
-	  //dy   = ( pressPPM + pressPPP + pressMPM + pressMPP - pressPMM - pressPMP - pressMMM - pressMMP) * c1o4;
-	  //dz   = (-pressPPM + pressPPP - pressMPM + pressMPP - pressPMM + pressPMP - pressMMM + pressMMP) * c1o4;
-	  //dxy  = ( pressPPM + pressPPP - pressMPM - pressMPP - pressPMM - pressPMP + pressMMM + pressMMP) * c1o2;
-	  //dxz  = (-pressPPM + pressPPP + pressMPM - pressMPP - pressPMM + pressPMP + pressMMM - pressMMP) * c1o2;
-	  //dyz  = (-pressPPM + pressPPP - pressMPM + pressMPP + pressPMM - pressPMP + pressMMM - pressMMP) * c1o2;
-	  //dxyz =  -pressPPM + pressPPP + pressMPM - pressMPP + pressPMM - pressPMP - pressMMM + pressMMP;
-	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //drho
-	  d0   = ( ((drhoPPM + drhoMMP) + (drhoMPM + drhoPMP)) + ((drhoPMM + drhoMPP) + (drhoMMM + drhoPPP))) * c1o8;
-	  dx   = ( ((drhoPPM - drhoMMP) + (drhoPMM - drhoMPP)) + ((drhoPMP - drhoMPM) + (drhoPPP - drhoMMM))) * c1o4;
-	  dy   = ( ((drhoPPM - drhoMMP) + (drhoMPP - drhoPMM)) + ((drhoMPM - drhoPMP) + (drhoPPP - drhoMMM))) * c1o4;
-	  dz   = ( ((drhoMMP - drhoPPM) + (drhoPPP - drhoMMM)) + ((drhoPMP - drhoMPM) + (drhoMPP - drhoPMM))) * c1o4;
-	  dxy  = ( ((drhoPPM - drhoPMP) + (drhoPPP - drhoPMM)) + ((drhoMMP - drhoMPM) + (drhoMMM - drhoMPP))) * c1o2;
-	  dxz  = ( ((drhoMMM - drhoPPM) + (drhoPPP - drhoMMP)) + ((drhoMPM - drhoPMM) + (drhoPMP - drhoMPP))) * c1o2;
-	  dyz  = ( ((drhoMPP - drhoPPM) + (drhoPPP - drhoMPM)) + ((drhoPMM - drhoMMP) + (drhoMMM - drhoPMP))) * c1o2;
-      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      //
-      // Bernd das Brot 
-	  //
-      //
-	  // x------x
-	  // |      |
-	  // |	 ---+--->X
-	  // |		|  \
-	  // x------x   \
-	  //			off-vector
-      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      a0 = a0 + xoff * ax + yoff * ay + zoff * az + xoff_sq * axx + yoff_sq * ayy + zoff_sq * azz + xoff*yoff*axy + xoff*zoff*axz + yoff*zoff*ayz;
-      ax = ax + two * xoff * axx + yoff * axy + zoff * axz;
-      ay = ay + two * yoff * ayy + xoff * axy + zoff * ayz;
-      az = az + two * zoff * azz + xoff * axz + yoff * ayz;
-      b0 = b0 + xoff * bx + yoff * by + zoff * bz + xoff_sq * bxx + yoff_sq * byy + zoff_sq * bzz + xoff*yoff*bxy + xoff*zoff*bxz + yoff*zoff*byz;
-      bx = bx + two * xoff * bxx + yoff * bxy + zoff * bxz;
-      by = by + two * yoff * byy + xoff * bxy + zoff * byz;
-      bz = bz + two * zoff * bzz + xoff * bxz + yoff * byz;
-      c0 = c0 + xoff * cx + yoff * cy + zoff * cz + xoff_sq * cxx + yoff_sq * cyy + zoff_sq * czz + xoff*yoff*cxy + xoff*zoff*cxz + yoff*zoff*cyz;
-      cx = cx + two * xoff * cxx + yoff * cxy + zoff * cxz;
-      cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz;
-      cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz;
-	  d0 = d0 + xoff * dx + yoff * dy + zoff * dz + xoff*yoff*dxy + xoff*zoff*dxz + yoff*zoff*dyz;
-      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  real mfcbb = zero;
-	  real mfabb = zero;
-	  real mfbcb = zero;
-	  real mfbab = zero;
-	  real mfbbc = zero;
-	  real mfbba = zero;
-	  real mfccb = zero;
-	  real mfaab = zero;
-	  real mfcab = zero;
-	  real mfacb = zero;
-	  real mfcbc = zero;
-	  real mfaba = zero;
-	  real mfcba = zero;
-	  real mfabc = zero;
-	  real mfbcc = zero;
-	  real mfbaa = zero;
-	  real mfbca = zero;
-	  real mfbac = zero;
-	  real mfbbb = zero;
-	  real mfccc = zero;
-	  real mfaac = zero;
-	  real mfcac = zero;
-	  real mfacc = zero;
-	  real mfcca = zero;
-	  real mfaaa = zero;
-	  real mfcaa = zero;
-	  real mfaca = zero;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  real mgcbb = zero;
-	  real mgabb = zero;
-	  real mgbcb = zero;
-	  real mgbab = zero;
-	  real mgbbc = zero;
-	  real mgbba = zero;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  real m0, m1, m2, oMdrho;
-	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  real O3 = two - o;
-	  real residu, residutmp;
-	  residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //
-	  //Position C 0., 0., 0.
-	  //
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //x = 0.;
-	  //y = 0.;
-	  //z = 0.;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //real mxoff = -xoff;
-	  //real myoff = -yoff;
-	  //real mzoff = -zoff;
-	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //press = pressPPP * (c1o8 - c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
-			//  pressMPP * (c1o8 + c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
-			//  pressPMP * (c1o8 - c1o4 * mxoff + c1o4 * myoff - c1o4 * mzoff) + 
-			//  pressMMP * (c1o8 + c1o4 * mxoff + c1o4 * myoff - c1o4 * mzoff) + 
-			//  pressPPM * (c1o8 - c1o4 * mxoff - c1o4 * myoff + c1o4 * mzoff) + 
-			//  pressMPM * (c1o8 + c1o4 * mxoff - c1o4 * myoff + c1o4 * mzoff) + 
-			//  pressPMM * (c1o8 - c1o4 * mxoff + c1o4 * myoff + c1o4 * mzoff) + 
-			//  pressMMM * (c1o8 + c1o4 * mxoff + c1o4 * myoff + c1o4 * mzoff);
-	  //drho  = drhoPPP * (c1o8 - c1o4 * xoff - c1o4 * yoff - c1o4 * zoff) + 
-			//  drhoMPP * (c1o8 + c1o4 * xoff - c1o4 * yoff - c1o4 * zoff) + 
-			//  drhoPMP * (c1o8 - c1o4 * xoff + c1o4 * yoff - c1o4 * zoff) + 
-			//  drhoMMP * (c1o8 + c1o4 * xoff + c1o4 * yoff - c1o4 * zoff) + 
-			//  drhoPPM * (c1o8 - c1o4 * xoff - c1o4 * yoff + c1o4 * zoff) + 
-			//  drhoMPM * (c1o8 + c1o4 * xoff - c1o4 * yoff + c1o4 * zoff) + 
-			//  drhoPMM * (c1o8 - c1o4 * xoff + c1o4 * yoff + c1o4 * zoff) + 
-			//  drhoMMM * (c1o8 + c1o4 * xoff + c1o4 * yoff + c1o4 * zoff);
-	  press = d0;
-	  vvx   = a0;
-	  vvy   = b0;
-	  vvz   = c0;
-
-	  //mfaaa = drho;
-	  //mfaaa = press + (ax+by+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
-	  mfaaa = press; // if drho is interpolated directly
-
-	  vx2 = vvx*vvx;
-	  vy2 = vvy*vvy;
-	  vz2 = vvz*vvz;
-	  oMdrho = one;
-	  //oMdrho = one - mfaaa;
-
-	  //two
-	  // linear combinations
-	  real oP = o;// :(
-	  mxxPyyPzz = mfaaa    -c2o3*(ax+by+cz)*eps_new/oP*(one+press); 
-	  //mxxMyy    = -c2o3*(ax - by)*eps_new/o;
-	  //mxxMzz    = -c2o3*(ax - cz)*eps_new/o;
-
-	  //mfabb     = -c1o3 * (bz + cy)*eps_new/o;
-	  //mfbab     = -c1o3 * (az + cx)*eps_new/o;
-	  //mfbba     = -c1o3 * (ay + bx)*eps_new/o;
-	  mxxMyy    = -c2o3*((ax - by)+kxxMyyAverage)*eps_new/o * (one + press);
-	  mxxMzz    = -c2o3*((ax - cz)+kxxMzzAverage)*eps_new/o * (one + press);
-
-	  mfabb     = -c1o3 * ((bz + cy)+kyzAverage)*eps_new/o * (one + press);
-	  mfbab     = -c1o3 * ((az + cx)+kxzAverage)*eps_new/o * (one + press);
-	  mfbba     = -c1o3 * ((ay + bx)+kxyAverage)*eps_new/o * (one + press);
-
-	  
-	  // linear combinations back
-	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
-	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
-
-	  //3.
-	  // linear combinations
-	  //residu = residutmp * (ayz + bxz + cxy );
-	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mfbbb = zero;
-
-	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz );
-	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz ));
-	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyPyzz = zero;
-
-	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz );
-	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz );
-	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxyMyzz = zero;
-
-	  //residu = residutmp * (axz + byz + two*cxx + two*cyy );
-	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy ));
-	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzPyyz = zero;
-
-	  //residu = residutmp * (axz - byz + two*cxx - two*cyy );
-	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy );
-	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxxzMyyz = zero;
-
-	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz );
-	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz );
-	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyPxzz = zero;
-
-	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz );
-	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz );
-	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
-	  mxyyMxzz = zero;
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  // D3Q27F 
-	  mgcbb = (ax - four * axx) * eps_new;
-	  mgabb = (ax + four * axx) * eps_new;
-	  mgbcb = (by - four * byy) * eps_new;
-	  mgbab = (by + four * byy) * eps_new;
-	  mgbbc = (cz - four * czz) * eps_new;
-	  mgbba = (cz + four * czz) * eps_new;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  // 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.
-	  mfacc = mfaaa*c1o9; 
-	  mfcac = mfacc; 
-	  mfcca = mfacc; 
-	  //5.
-
-	  //6.
-	  mfccc = mfaaa*c1o27;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  //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;
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  //index 0
-	  k000 = posC[k];
-	  kM00 = neighborCX[k000];
-	  k0M0 = neighborCY[k000];
-	  k00M = neighborCZ[k000];
-	  kMM0 = neighborCY[kM00];
-	  kM0M = neighborCZ[kM00];
-	  k0MM = neighborCZ[k0M0];
-	  kMMM = neighborCZ[kMM0];
-	  ////////////////////////////////////////////////////////////////////////////////////
-
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  (G.g[dirE])[k000] = mgcbb;
-	  (G.g[dirW])[kM00] = mgabb;
-	  (G.g[dirN])[k000] = mgbcb;
-	  (G.g[dirS])[k0M0] = mgbab;
-	  (G.g[dirT])[k000] = mgbbc;
-	  (G.g[dirB])[k00M] = mgbba;
-	  ////////////////////////////////////////////////////////////////////////////////////
-	  fP00dest[k000] = mfcbb;                                                                 
-	  fM00dest[kM00] = mfabb;                                                               
-	  f0P0dest[k000] = mfbcb;
-	  f0M0dest[k0M0] = mfbab;
-	  f00Pdest[k000] = mfbbc;
-	  f00Mdest[k00M] = mfbba;
-	  fPP0dest[k000] = mfccb;
-	  fMM0dest[kMM0] = mfaab;
-	  fPM0dest[k0M0] = mfcab;
-	  fMP0dest[kM00] = mfacb;
-	  fP0Pdest[k000] = mfcbc;
-	  fM0Mdest[kM0M] = mfaba;
-	  fP0Mdest[k00M] = mfcba;
-	  fM0Pdest[kM00] = mfabc;
-	  f0PPdest[k000] = mfbcc;
-	  f0MMdest[k0MM] = mfbaa;
-	  f0PMdest[k00M] = mfbca;
-	  f0MPdest[k0M0] = mfbac;
-	  f000dest[k000] = mfbbb;
-	  fMMMdest[kMMM] = mfaaa;
-	  fMMPdest[kMM0] = mfaac;
-	  fMPPdest[kM00] = mfacc;
-	  fMPMdest[kM0M] = mfaca;
-	  fPPMdest[k00M] = mfcca;
-	  fPPPdest[k000] = mfccc;
-	  fPMPdest[k0M0] = mfcac;
-	  fPMMdest[k0MM] = mfcaa;
-	  ////////////////////////////////////////////////////////////////////////////////////
-   }
-}
-//////////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 
 //////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void scaleFC_0817_comp_27( real* DC, 
diff --git a/src/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu b/src/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu
new file mode 100644
index 000000000..09a84b912
--- /dev/null
+++ b/src/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu
@@ -0,0 +1,2497 @@
+//  _    ___      __              __________      _     __        ______________   __
+// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____   /  ___/ __  / /  / /
+// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/  / /___/ /_/ / /  / /
+// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )  / /_) / ____/ /__/ / 
+// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/   \____/_/    \_____/
+//
+//////////////////////////////////////////////////////////////////////////
+/* Device code */
+#include "LBM/D3Q27.h"
+#include "GPU/constant.h"
+
+//////////////////////////////////////////////////////////////////////////
+extern "C" __global__ void scaleFC_comp_D3Q27F3_2018(real* DC,
+													 real* DF,
+													 real* G6,
+													 unsigned int* neighborCX,
+													 unsigned int* neighborCY,
+													 unsigned int* neighborCZ,
+													 unsigned int* neighborFX,
+													 unsigned int* neighborFY,
+													 unsigned int* neighborFZ,
+													 unsigned int size_MatC, 
+													 unsigned int size_MatF, 
+													 bool evenOrOdd,
+													 unsigned int* posC, 
+													 unsigned int* posFSWB, 
+													 unsigned int kFC, 
+													 real omCoarse, 
+													 real omFine, 
+													 real nu, 
+													 unsigned int nxC, 
+													 unsigned int nyC, 
+													 unsigned int nxF, 
+													 unsigned int nyF,
+													 OffFC offFC)
+{
+   real 
+	   *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source,
+	   *fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource,
+	   *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource;
+
+
+   fP00source = &DF[dirE   *size_MatF];
+   fM00source = &DF[dirW   *size_MatF];
+   f0P0source = &DF[dirN   *size_MatF];
+   f0M0source = &DF[dirS   *size_MatF];
+   f00Psource = &DF[dirT   *size_MatF];
+   f00Msource = &DF[dirB   *size_MatF];
+   fPP0source = &DF[dirNE  *size_MatF];
+   fMM0source = &DF[dirSW  *size_MatF];
+   fPM0source = &DF[dirSE  *size_MatF];
+   fMP0source = &DF[dirNW  *size_MatF];
+   fP0Psource = &DF[dirTE  *size_MatF];
+   fM0Msource = &DF[dirBW  *size_MatF];
+   fP0Msource = &DF[dirBE  *size_MatF];
+   fM0Psource = &DF[dirTW  *size_MatF];
+   f0PPsource = &DF[dirTN  *size_MatF];
+   f0MMsource = &DF[dirBS  *size_MatF];
+   f0PMsource = &DF[dirBN  *size_MatF];
+   f0MPsource = &DF[dirTS  *size_MatF];
+   f000source = &DF[dirZERO*size_MatF];
+   fMMMsource = &DF[dirBSW *size_MatF];
+   fMMPsource = &DF[dirTSW *size_MatF];
+   fMPPsource = &DF[dirTNW *size_MatF];
+   fMPMsource = &DF[dirBNW *size_MatF];
+   fPPMsource = &DF[dirBNE *size_MatF];
+   fPPPsource = &DF[dirTNE *size_MatF];
+   fPMPsource = &DF[dirTSE *size_MatF];
+   fPMMsource = &DF[dirBSE *size_MatF];
+
+   real
+	   *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest,
+	   *fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest,
+	   *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest;
+
+   if (evenOrOdd==true)
+   {
+	   fP00dest = &DC[dirE   *size_MatC];
+	   fM00dest = &DC[dirW   *size_MatC];
+	   f0P0dest = &DC[dirN   *size_MatC];
+	   f0M0dest = &DC[dirS   *size_MatC];
+	   f00Pdest = &DC[dirT   *size_MatC];
+	   f00Mdest = &DC[dirB   *size_MatC];
+	   fPP0dest = &DC[dirNE  *size_MatC];
+	   fMM0dest = &DC[dirSW  *size_MatC];
+	   fPM0dest = &DC[dirSE  *size_MatC];
+	   fMP0dest = &DC[dirNW  *size_MatC];
+	   fP0Pdest = &DC[dirTE  *size_MatC];
+	   fM0Mdest = &DC[dirBW  *size_MatC];
+	   fP0Mdest = &DC[dirBE  *size_MatC];
+	   fM0Pdest = &DC[dirTW  *size_MatC];
+	   f0PPdest = &DC[dirTN  *size_MatC];
+	   f0MMdest = &DC[dirBS  *size_MatC];
+	   f0PMdest = &DC[dirBN  *size_MatC];
+	   f0MPdest = &DC[dirTS  *size_MatC];
+	   f000dest = &DC[dirZERO*size_MatC];
+	   fMMMdest = &DC[dirBSW *size_MatC];
+	   fMMPdest = &DC[dirTSW *size_MatC];
+	   fMPPdest = &DC[dirTNW *size_MatC];
+	   fMPMdest = &DC[dirBNW *size_MatC];
+	   fPPMdest = &DC[dirBNE *size_MatC];
+	   fPPPdest = &DC[dirTNE *size_MatC];
+	   fPMPdest = &DC[dirTSE *size_MatC];
+	   fPMMdest = &DC[dirBSE *size_MatC];
+   } 
+   else
+   {
+	   fP00dest = &DC[dirW   *size_MatC];
+	   fM00dest = &DC[dirE   *size_MatC];
+	   f0P0dest = &DC[dirS   *size_MatC];
+	   f0M0dest = &DC[dirN   *size_MatC];
+	   f00Pdest = &DC[dirB   *size_MatC];
+	   f00Mdest = &DC[dirT   *size_MatC];
+	   fPP0dest = &DC[dirSW  *size_MatC];
+	   fMM0dest = &DC[dirNE  *size_MatC];
+	   fPM0dest = &DC[dirNW  *size_MatC];
+	   fMP0dest = &DC[dirSE  *size_MatC];
+	   fP0Pdest = &DC[dirBW  *size_MatC];
+	   fM0Mdest = &DC[dirTE  *size_MatC];
+	   fP0Mdest = &DC[dirTW  *size_MatC];
+	   fM0Pdest = &DC[dirBE  *size_MatC];
+	   f0PPdest = &DC[dirBS  *size_MatC];
+	   f0MMdest = &DC[dirTN  *size_MatC];
+	   f0PMdest = &DC[dirTS  *size_MatC];
+	   f0MPdest = &DC[dirBN  *size_MatC];
+	   f000dest = &DC[dirZERO*size_MatC];
+	   fMMMdest = &DC[dirTNE *size_MatC];
+	   fMMPdest = &DC[dirBNE *size_MatC];
+	   fMPPdest = &DC[dirBSE *size_MatC];
+	   fMPMdest = &DC[dirTSE *size_MatC];
+	   fPPMdest = &DC[dirTSW *size_MatC];
+	   fPPPdest = &DC[dirBSW *size_MatC];
+	   fPMPdest = &DC[dirBNW *size_MatC];
+	   fPMMdest = &DC[dirTNW *size_MatC];
+   }
+
+   Distributions6 G;
+   if (evenOrOdd == true)
+   {
+	   G.g[dirE] = &G6[dirE   *size_MatC];
+	   G.g[dirW] = &G6[dirW   *size_MatC];
+	   G.g[dirN] = &G6[dirN   *size_MatC];
+	   G.g[dirS] = &G6[dirS   *size_MatC];
+	   G.g[dirT] = &G6[dirT   *size_MatC];
+	   G.g[dirB] = &G6[dirB   *size_MatC];
+   }
+   else
+   {
+	   G.g[dirW] = &G6[dirE   *size_MatC];
+	   G.g[dirE] = &G6[dirW   *size_MatC];
+	   G.g[dirS] = &G6[dirN   *size_MatC];
+	   G.g[dirN] = &G6[dirS   *size_MatC];
+	   G.g[dirB] = &G6[dirT   *size_MatC];
+	   G.g[dirT] = &G6[dirB   *size_MatC];
+   }
+
+   ////////////////////////////////////////////////////////////////////////////////
+   const unsigned  ix = threadIdx.x;  // Globaler x-Index 
+   const unsigned  iy = blockIdx.x;   // Globaler y-Index 
+   const unsigned  iz = blockIdx.y;   // Globaler z-Index 
+
+   const unsigned nx = blockDim.x;
+   const unsigned ny = gridDim.x;
+
+   const unsigned k = nx*(ny*iz + iy) + ix;
+   //////////////////////////////////////////////////////////////////////////
+
+   ////////////////////////////////////////////////////////////////////////////////
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        vvx, vvy, vvz, vx2, vy2, vz2, drho;
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM;
+   real        /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP;
+   real        /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP;
+   real        /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM;
+   real        /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM;
+   real        /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP;
+   real        /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP;
+   real        /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM;
+   real        fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM;
+   real        kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM;
+   real        kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP;
+   real        kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP;
+   real        kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM;
+   real        kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM;
+   real        kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP;
+   real        kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP;
+   real        kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
+   real        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
+
+   if(k<kFC)
+   {
+      //////////////////////////////////////////////////////////////////////////
+      xoff = offFC.xOffFC[k];
+      yoff = offFC.yOffFC[k];
+      zoff = offFC.zOffFC[k];      
+      xoff_sq = xoff * xoff;
+      yoff_sq = yoff * yoff;
+      zoff_sq = zoff * zoff;
+      //////////////////////////////////////////////////////////////////////////
+      //SWB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 0
+      unsigned int k000base = posFSWB[k];
+      unsigned int kM00base = neighborFX[k000base];
+      unsigned int k0M0base = neighborFY[k000base];
+      unsigned int k00Mbase = neighborFZ[k000base];
+      unsigned int kMM0base = neighborFY[kM00base];
+      unsigned int kM0Mbase = neighborFZ[kM00base];
+      unsigned int k0MMbase = neighborFZ[k0M0base];
+      unsigned int kMMMbase = neighborFZ[kMM0base];
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      unsigned int k000 = k000base;
+      unsigned int kM00 = kM00base;   
+      unsigned int k0M0 = k0M0base;   
+      unsigned int k00M = k00Mbase;   
+      unsigned int kMM0 = kMM0base;  
+      unsigned int kM0M = kM0Mbase;  
+      unsigned int k0MM = k0MMbase;  
+      unsigned int kMMM = kMMMbase; 
+      ////////////////////////////////////////////////////////////////////////////////
+      fP00 = fP00source[k000];
+      fM00 = fM00source[kM00];
+      f0P0 = f0P0source[k000];
+      f0M0 = f0M0source[k0M0];
+      f00P = f00Psource[k000];
+      f00M = f00Msource[k00M];
+      fPP0 = fPP0source[k000];
+      fMM0 = fMM0source[kMM0];
+      fPM0 = fPM0source[k0M0];
+      fMP0 = fMP0source[kM00];
+      fP0P = fP0Psource[k000];
+      fM0M = fM0Msource[kM0M];
+      fP0M = fP0Msource[k00M];
+      fM0P = fM0Psource[kM00];
+      f0PP = f0PPsource[k000];
+      f0MM = f0MMsource[k0MM];
+      f0PM = f0PMsource[k00M];
+      f0MP = f0MPsource[k0M0];
+      f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+      fPMP = fPMPsource[k0M0];
+      fPMM = fPMMsource[k0MM];
+
+      drhoMMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MMM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMM);
+	  vx2MMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMM);
+	  vx3MMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMM);
+
+	  kxyFromfcNEQMMM    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx2MMM)));
+	  kyzFromfcNEQMMM    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMM) - ((vx2MMM*vx3MMM)));
+	  kxzFromfcNEQMMM    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx3MMM)));
+	  kxxMyyFromfcNEQMMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx2MMM*vx2MMM)));
+	  kxxMzzFromfcNEQMMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx3MMM*vx3MMM)));
+	  kyyMzzFromfcNEQMMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMM) - ((vx2MMM*vx2MMM - vx3MMM*vx3MMM)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //SWT//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = k00M;
+      kM00 = kM0M;   
+      k0M0 = k0MM;   
+      k00M = neighborFZ[k00M];   
+      kMM0 = kMMM;  
+      kM0M = neighborFZ[kM0M];  
+      k0MM = neighborFZ[k0MM];  
+      kMMM = neighborFZ[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MMP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMP);
+	  vx2MMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMP);
+	  vx3MMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMP);
+
+	  kxyFromfcNEQMMP    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx2MMP)));
+	  kyzFromfcNEQMMP    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMP) - ((vx2MMP*vx3MMP)));
+	  kxzFromfcNEQMMP    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx3MMP)));
+	  kxxMyyFromfcNEQMMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx2MMP*vx2MMP)));
+	  kxxMzzFromfcNEQMMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx3MMP*vx3MMP)));
+	  kyyMzzFromfcNEQMMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMP) - ((vx2MMP*vx2MMP - vx3MMP*vx3MMP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //SET//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = kM00;
+      kM00 = neighborFX[kM00];   
+      k0M0 = kMM0;   
+      k00M = kM0M;   
+      kMM0 = neighborFX[kMM0];  
+      kM0M = neighborFX[kM0M];  
+      k0MM = kMMM;  
+      kMMM = neighborFX[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PMP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMP);
+	  vx2PMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMP);
+	  vx3PMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMP);
+
+	  kxyFromfcNEQPMP    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx2PMP)));
+	  kyzFromfcNEQPMP    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMP) - ((vx2PMP*vx3PMP)));
+	  kxzFromfcNEQPMP    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx3PMP)));
+	  kxxMyyFromfcNEQPMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx2PMP*vx2PMP)));
+	  kxxMzzFromfcNEQPMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx3PMP*vx3PMP)));
+	  kyyMzzFromfcNEQPMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMP) - ((vx2PMP*vx2PMP - vx3PMP*vx3PMP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //SEB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k00M = k000;   
+      kM0M = kM00;  
+      k0MM = k0M0;  
+      kMMM = kMM0; 
+      k000 = kM00base;
+      kM00 = neighborFX[kM00base];   
+      k0M0 = kMM0base;   
+      kMM0 = neighborFX[kMM0base];  
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PMM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMM);
+	  vx2PMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMM);
+	  vx3PMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMM);
+
+	  kxyFromfcNEQPMM    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx2PMM)));
+	  kyzFromfcNEQPMM    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMM) - ((vx2PMM*vx3PMM)));
+	  kxzFromfcNEQPMM    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx3PMM)));
+	  kxxMyyFromfcNEQPMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx2PMM*vx2PMM)));
+	  kxxMzzFromfcNEQPMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx3PMM*vx3PMM)));
+	  kyyMzzFromfcNEQPMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMM) - ((vx2PMM*vx2PMM - vx3PMM*vx3PMM)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NWB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 0
+      k000base = k0M0base;
+      kM00base = kMM0base;
+      k0M0base = neighborFY[k0M0base];
+      k00Mbase = k0MMbase;
+      kMM0base = neighborFY[kMM0base];
+      kM0Mbase = kMMMbase;
+      k0MMbase = neighborFY[k0MMbase];
+      kMMMbase = neighborFY[kMMMbase];
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = k000base;
+      kM00 = kM00base;   
+      k0M0 = k0M0base;   
+      k00M = k00Mbase;   
+      kMM0 = kMM0base;  
+      kM0M = kM0Mbase;  
+      k0MM = k0MMbase;  
+      kMMM = kMMMbase; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MPM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPM);
+	  vx2MPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPM);
+	  vx3MPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPM);
+
+	  kxyFromfcNEQMPM    = -three*omegaS*   ((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx2MPM)));
+	  kyzFromfcNEQMPM    = -three*omegaS*   ((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPM) - ((vx2MPM*vx3MPM)));
+	  kxzFromfcNEQMPM    = -three*omegaS*   ((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx3MPM)));
+	  kxxMyyFromfcNEQMPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx2MPM*vx2MPM)));
+	  kxxMzzFromfcNEQMPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx3MPM*vx3MPM)));
+	  kyyMzzFromfcNEQMPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPM) - ((vx2MPM*vx2MPM - vx3MPM*vx3MPM)));
+
+	  //////////////////////////////////////////////////////////////////////////
+      //NWT//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = k00M;
+      kM00 = kM0M;   
+      k0M0 = k0MM;   
+      k00M = neighborFZ[k00M];   
+      kMM0 = kMMM;  
+      kM0M = neighborFZ[kM0M];  
+      k0MM = neighborFZ[k0MM];  
+      kMMM = neighborFZ[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MPP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPP);
+	  vx2MPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPP);
+	  vx3MPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPP);
+
+	  kxyFromfcNEQMPP    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx2MPP)));
+	  kyzFromfcNEQMPP    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPP) - ((vx2MPP*vx3MPP)));
+	  kxzFromfcNEQMPP    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx3MPP)));
+	  kxxMyyFromfcNEQMPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx2MPP*vx2MPP)));
+	  kxxMzzFromfcNEQMPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx3MPP*vx3MPP)));
+	  kyyMzzFromfcNEQMPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPP) - ((vx2MPP*vx2MPP - vx3MPP*vx3MPP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NET//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = kM00;
+      kM00 = neighborFX[kM00];   
+      k0M0 = kMM0;   
+      k00M = kM0M;   
+      kMM0 = neighborFX[kMM0];  
+      kM0M = neighborFX[kM0M];  
+      k0MM = kMMM;  
+      kMMM = neighborFX[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PPP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPP);
+	  vx2PPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPP);
+	  vx3PPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPP);
+
+	  kxyFromfcNEQPPP    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx2PPP)));
+	  kyzFromfcNEQPPP    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPP) - ((vx2PPP*vx3PPP)));
+	  kxzFromfcNEQPPP    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx3PPP)));
+	  kxxMyyFromfcNEQPPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx2PPP*vx2PPP)));
+	  kxxMzzFromfcNEQPPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx3PPP*vx3PPP)));
+	  kyyMzzFromfcNEQPPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPP) - ((vx2PPP*vx2PPP - vx3PPP*vx3PPP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NEB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k00M = k000;   
+      kM0M = kM00;  
+      k0MM = k0M0;  
+      kMMM = kMM0; 
+      k000 = kM00base;
+      kM00 = neighborFX[kM00base];   
+      k0M0 = kMM0base;   
+      kMM0 = neighborFX[kMM0base];  
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PPM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPM);
+	  vx2PPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPM);
+	  vx3PPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPM);
+
+	  kxyFromfcNEQPPM    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx2PPM)));
+	  kyzFromfcNEQPPM    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPM) - ((vx2PPM*vx3PPM)));
+	  kxzFromfcNEQPPM    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx3PPM)));
+	  kxxMyyFromfcNEQPPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx2PPM*vx2PPM)));
+	  kxxMzzFromfcNEQPPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx3PPM*vx3PPM)));
+	  kyyMzzFromfcNEQPPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPM) - ((vx2PPM*vx2PPM - vx3PPM*vx3PPM)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //3
+      //////////////////////////////////////////////////////////////////////////
+	  a0  = c1o8*(((vx1PPM + vx1MMP) + (vx1MPM + vx1PMP)) + ((vx1PMM + vx1MPP) + (vx1MMM + vx1PPP)));
+	  ax  = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1PMM - vx1MPP)));
+	  ay  = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1MPP - vx1PMM)));
+	  az  = c1o4*(((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1MPP - vx1PMM)));
+	  axy = c1o2*(((vx1PPM - vx1PMP) + (vx1MMM - vx1MPP)) + ((vx1MMP - vx1MPM) + (vx1PPP - vx1PMM)));
+	  axz = c1o2*(((vx1PMP - vx1PPM) + (vx1MMM - vx1MPP)) + ((vx1MPM - vx1MMP) + (vx1PPP - vx1PMM)));
+	  ayz = c1o2*(((vx1PPP - vx1MPM) + (vx1PMM - vx1MMP)) + ((vx1MPP - vx1PPM) + (vx1MMM - vx1PMP)));
+	  //axyz=		  ((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1PMM - vx1MPP)) ;
+	  b0  = c1o8*(((vx2PPM + vx2MMP) + (vx2MPM + vx2PMP)) + ((vx2PMM + vx2MPP) + (vx2MMM + vx2PPP)));
+	  bx  = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2PMM - vx2MPP)));
+	  by  = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2MPP - vx2PMM)));
+	  bz  = c1o4*(((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2MPP - vx2PMM)));
+	  bxy = c1o2*(((vx2PPM - vx2MPP) + (vx2MMM - vx2PMP)) + ((vx2MMP - vx2PMM) + (vx2PPP - vx2MPM)));
+	  bxz = c1o2*(((vx2MMM - vx2PPM) + (vx2PMP - vx2MPP)) + ((vx2MPM - vx2PMM) + (vx2PPP - vx2MMP)));
+	  byz = c1o2*(((vx2MPP - vx2PPM) + (vx2MMM - vx2PMP)) + ((vx2PMM - vx2MMP) + (vx2PPP - vx2MPM)));
+	  //bxyz=		  ((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2PMM - vx2MPP)) ;
+	  c0  = c1o8*(((vx3PPM + vx3MMP) + (vx3MPM + vx3PMP)) + ((vx3PMM + vx3MPP) + (vx3MMM + vx3PPP)));
+	  cx  = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3PMM - vx3MPP)));
+	  cy  = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3MPP - vx3PMM)));
+	  cz  = c1o4*(((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3MPP - vx3PMM)));
+	  cxy = c1o2*(((vx3PPM - vx3PMP) + (vx3MMM - vx3MPP)) + ((vx3MMP - vx3MPM) + (vx3PPP - vx3PMM)));
+	  cxz = c1o2*(((vx3MMM - vx3PPM) + (vx3PMP - vx3MPP)) + ((vx3MPM - vx3PMM) + (vx3PPP - vx3MMP)));
+	  cyz = c1o2*(((vx3MMM - vx3PPM) + (vx3MPP - vx3PMP)) + ((vx3PMM - vx3MPM) + (vx3PPP - vx3MMP)));
+	  //cxyz=		  ((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3PMM - vx3MPP)) ;
+
+	  //bxx = zero;
+	  //cxx = zero;
+	  //ayy = zero;
+	  //cyy = zero;
+	  //azz = zero;
+	  //bzz = zero;
+	  //axx = zero;
+	  //byy = zero;
+	  //czz = zero;
+
+	  bxx = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPMM - kxyFromfcNEQMPP)) + ((kxyFromfcNEQPMP - kxyFromfcNEQMPM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP))) - c1o2*axy;
+	  cxx = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) + (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) + (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*axz;
+
+	  ayy = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP)) - ((kxyFromfcNEQPMM - kxyFromfcNEQMPP) + (kxyFromfcNEQPMP - kxyFromfcNEQMPM))) - c1o2*bxy;
+	  cyy = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) + (kyzFromfcNEQPPM - kyzFromfcNEQMMP)) - ((kyzFromfcNEQPMM - kyzFromfcNEQMPP) + (kyzFromfcNEQPMP - kyzFromfcNEQMPM))) - c1o2*byz;
+
+	  azz = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) - (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) - (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*cxz;
+	  bzz = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) - (kyzFromfcNEQPMM - kyzFromfcNEQMPP)) + ((kyzFromfcNEQPMP - kyzFromfcNEQMPM) - (kyzFromfcNEQPPM - kyzFromfcNEQMMP))) - c1o2*cyz;
+
+	  axx = ( c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) + (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM) + (kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP))) - c1o4*bxy)
+		  + ( c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) + (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) + ((kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM) + (kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP))) - c1o4*cxz);
+
+	  byy = (-c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) - (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP) - (kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM))) - c1o4*axy)
+		  + ( c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) + ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*cyz);
+
+	  czz = (-c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) - (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) - ((kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP) - (kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM))) - c1o4*axz)
+		  + ( c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) - ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*byz);
+
+	  a0 -= c1o4*(axx + ayy + azz);
+	  b0 -= c1o4*(bxx + byy + bzz);
+	  c0 -= c1o4*(cxx + cyy + czz);
+
+	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real kxyAverage = zero;
+	  real kyzAverage = zero;
+	  real kxzAverage = zero;
+	  real kxxMyyAverage = zero;
+	  real kxxMzzAverage = zero;
+	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  ////Press
+	  //d0   = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8;
+	  //dx   = ( pressPPM + pressPPP - pressMPM - pressMPP + pressPMM + pressPMP - pressMMM - pressMMP) * c1o4;
+	  //dy   = ( pressPPM + pressPPP + pressMPM + pressMPP - pressPMM - pressPMP - pressMMM - pressMMP) * c1o4;
+	  //dz   = (-pressPPM + pressPPP - pressMPM + pressMPP - pressPMM + pressPMP - pressMMM + pressMMP) * c1o4;
+	  //dxy  = ( pressPPM + pressPPP - pressMPM - pressMPP - pressPMM - pressPMP + pressMMM + pressMMP) * c1o2;
+	  //dxz  = (-pressPPM + pressPPP + pressMPM - pressMPP - pressPMM + pressPMP + pressMMM - pressMMP) * c1o2;
+	  //dyz  = (-pressPPM + pressPPP - pressMPM + pressMPP + pressPMM - pressPMP + pressMMM - pressMMP) * c1o2;
+	  //dxyz =  -pressPPM + pressPPP + pressMPM - pressMPP + pressPMM - pressPMP - pressMMM + pressMMP;
+	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho
+	  d0   = ( ((drhoPPM + drhoMMP) + (drhoMPM + drhoPMP)) + ((drhoPMM + drhoMPP) + (drhoMMM + drhoPPP))) * c1o8;
+	  dx   = ( ((drhoPPM - drhoMMP) + (drhoPMM - drhoMPP)) + ((drhoPMP - drhoMPM) + (drhoPPP - drhoMMM))) * c1o4;
+	  dy   = ( ((drhoPPM - drhoMMP) + (drhoMPP - drhoPMM)) + ((drhoMPM - drhoPMP) + (drhoPPP - drhoMMM))) * c1o4;
+	  dz   = ( ((drhoMMP - drhoPPM) + (drhoPPP - drhoMMM)) + ((drhoPMP - drhoMPM) + (drhoMPP - drhoPMM))) * c1o4;
+	  dxy  = ( ((drhoPPM - drhoPMP) + (drhoPPP - drhoPMM)) + ((drhoMMP - drhoMPM) + (drhoMMM - drhoMPP))) * c1o2;
+	  dxz  = ( ((drhoMMM - drhoPPM) + (drhoPPP - drhoMMP)) + ((drhoMPM - drhoPMM) + (drhoPMP - drhoMPP))) * c1o2;
+	  dyz  = ( ((drhoMPP - drhoPPM) + (drhoPPP - drhoMPM)) + ((drhoPMM - drhoMMP) + (drhoMMM - drhoPMP))) * c1o2;
+      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+      //
+      // Bernd das Brot 
+	  //
+      //
+	  // x------x
+	  // |      |
+	  // |	 ---+--->X
+	  // |		|  \
+	  // x------x   \
+	  //			off-vector
+      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+      a0 = a0 + xoff * ax + yoff * ay + zoff * az + xoff_sq * axx + yoff_sq * ayy + zoff_sq * azz + xoff*yoff*axy + xoff*zoff*axz + yoff*zoff*ayz;
+      ax = ax + two * xoff * axx + yoff * axy + zoff * axz;
+      ay = ay + two * yoff * ayy + xoff * axy + zoff * ayz;
+      az = az + two * zoff * azz + xoff * axz + yoff * ayz;
+      b0 = b0 + xoff * bx + yoff * by + zoff * bz + xoff_sq * bxx + yoff_sq * byy + zoff_sq * bzz + xoff*yoff*bxy + xoff*zoff*bxz + yoff*zoff*byz;
+      bx = bx + two * xoff * bxx + yoff * bxy + zoff * bxz;
+      by = by + two * yoff * byy + xoff * bxy + zoff * byz;
+      bz = bz + two * zoff * bzz + xoff * bxz + yoff * byz;
+      c0 = c0 + xoff * cx + yoff * cy + zoff * cz + xoff_sq * cxx + yoff_sq * cyy + zoff_sq * czz + xoff*yoff*cxy + xoff*zoff*cxz + yoff*zoff*cyz;
+      cx = cx + two * xoff * cxx + yoff * cxy + zoff * cxz;
+      cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz;
+      cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz;
+	  d0 = d0 + xoff * dx + yoff * dy + zoff * dz + xoff*yoff*dxy + xoff*zoff*dxz + yoff*zoff*dyz;
+      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real mgcbb = zero;
+	  real mgabb = zero;
+	  real mgbcb = zero;
+	  real mgbab = zero;
+	  real mgbbc = zero;
+	  real mgbba = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real m0, m1, m2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  real O3 = two - o;
+	  real residu, residutmp;
+	  residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position C 0., 0., 0.
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //x = 0.;
+	  //y = 0.;
+	  //z = 0.;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //press = pressPPP * (c1o8 - c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
+			//  pressMPP * (c1o8 + c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
+			//  pressPMP * (c1o8 - c1o4 * mxoff + c1o4 * myoff - c1o4 * mzoff) + 
+			//  pressMMP * (c1o8 + c1o4 * mxoff + c1o4 * myoff - c1o4 * mzoff) + 
+			//  pressPPM * (c1o8 - c1o4 * mxoff - c1o4 * myoff + c1o4 * mzoff) + 
+			//  pressMPM * (c1o8 + c1o4 * mxoff - c1o4 * myoff + c1o4 * mzoff) + 
+			//  pressPMM * (c1o8 - c1o4 * mxoff + c1o4 * myoff + c1o4 * mzoff) + 
+			//  pressMMM * (c1o8 + c1o4 * mxoff + c1o4 * myoff + c1o4 * mzoff);
+	  //drho  = drhoPPP * (c1o8 - c1o4 * xoff - c1o4 * yoff - c1o4 * zoff) + 
+			//  drhoMPP * (c1o8 + c1o4 * xoff - c1o4 * yoff - c1o4 * zoff) + 
+			//  drhoPMP * (c1o8 - c1o4 * xoff + c1o4 * yoff - c1o4 * zoff) + 
+			//  drhoMMP * (c1o8 + c1o4 * xoff + c1o4 * yoff - c1o4 * zoff) + 
+			//  drhoPPM * (c1o8 - c1o4 * xoff - c1o4 * yoff + c1o4 * zoff) + 
+			//  drhoMPM * (c1o8 + c1o4 * xoff - c1o4 * yoff + c1o4 * zoff) + 
+			//  drhoPMM * (c1o8 - c1o4 * xoff + c1o4 * yoff + c1o4 * zoff) + 
+			//  drhoMMM * (c1o8 + c1o4 * xoff + c1o4 * yoff + c1o4 * zoff);
+	  press = d0;
+	  vvx   = a0;
+	  vvy   = b0;
+	  vvz   = c0;
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (ax+by+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+
+	  //two
+	  // linear combinations
+	  real oP = o;// :(
+	  mxxPyyPzz = mfaaa    -c2o3*(ax+by+cz)*eps_new/oP*(one+press); 
+	  //mxxMyy    = -c2o3*(ax - by)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz)*eps_new/o;
+
+	  //mfabb     = -c1o3 * (bz + cy)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx)*eps_new/o;
+	  mxxMyy    = -c2o3*((ax - by)+kxxMyyAverage)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*((ax - cz)+kxxMzzAverage)*eps_new/o * (one + press);
+
+	  mfabb     = -c1o3 * ((bz + cy)+kyzAverage)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * ((az + cx)+kxzAverage)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * ((ay + bx)+kxyAverage)*eps_new/o * (one + press);
+
+	  
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //3.
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy );
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz );
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz ));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz );
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz );
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy );
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy ));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy );
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy );
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz );
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz );
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz = zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz );
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz );
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  mgcbb =  (vvx * axx + ax * ax) * (eps_new * eps_new) * (one + press);
+	  mgabb = -(vvx * axx + ax * ax) * (eps_new * eps_new) * (one + press);
+	  mgbcb =  (vvy * byy + by * by) * (eps_new * eps_new) * (one + press);
+	  mgbab = -(vvy * byy + by * by) * (eps_new * eps_new) * (one + press);
+	  mgbbc =  (vvz * czz + cz * cz) * (eps_new * eps_new) * (one + press);
+	  mgbba = -(vvz * czz + cz * cz) * (eps_new * eps_new) * (one + press);
+	  //mgcbb = zero;
+	  //mgabb = zero;
+	  //mgbcb = zero;
+	  //mgbab = zero;
+	  //mgbbc = zero;
+	  //mgbba = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //index 0
+	  k000 = posC[k];
+	  kM00 = neighborCX[k000];
+	  k0M0 = neighborCY[k000];
+	  k00M = neighborCZ[k000];
+	  kMM0 = neighborCY[kM00];
+	  kM0M = neighborCZ[kM00];
+	  k0MM = neighborCZ[k0M0];
+	  kMMM = neighborCZ[kMM0];
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;                                                                 
+	  fM00dest[kM00] = mfabb;                                                               
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+   }
+}
+//////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////
+extern "C" __global__ void scaleFC_comp_D3Q27F3( real* DC,
+												 real* DF,
+												 real* G6,
+												 unsigned int* neighborCX,
+												 unsigned int* neighborCY,
+												 unsigned int* neighborCZ,
+												 unsigned int* neighborFX,
+												 unsigned int* neighborFY,
+												 unsigned int* neighborFZ,
+												 unsigned int size_MatC, 
+												 unsigned int size_MatF, 
+												 bool evenOrOdd,
+												 unsigned int* posC, 
+												 unsigned int* posFSWB, 
+												 unsigned int kFC, 
+												 real omCoarse, 
+												 real omFine, 
+												 real nu, 
+												 unsigned int nxC, 
+												 unsigned int nyC, 
+												 unsigned int nxF, 
+												 unsigned int nyF,
+												 OffFC offFC)
+{
+   real 
+	   *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source,
+	   *fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource,
+	   *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource;
+
+
+   fP00source = &DF[dirE   *size_MatF];
+   fM00source = &DF[dirW   *size_MatF];
+   f0P0source = &DF[dirN   *size_MatF];
+   f0M0source = &DF[dirS   *size_MatF];
+   f00Psource = &DF[dirT   *size_MatF];
+   f00Msource = &DF[dirB   *size_MatF];
+   fPP0source = &DF[dirNE  *size_MatF];
+   fMM0source = &DF[dirSW  *size_MatF];
+   fPM0source = &DF[dirSE  *size_MatF];
+   fMP0source = &DF[dirNW  *size_MatF];
+   fP0Psource = &DF[dirTE  *size_MatF];
+   fM0Msource = &DF[dirBW  *size_MatF];
+   fP0Msource = &DF[dirBE  *size_MatF];
+   fM0Psource = &DF[dirTW  *size_MatF];
+   f0PPsource = &DF[dirTN  *size_MatF];
+   f0MMsource = &DF[dirBS  *size_MatF];
+   f0PMsource = &DF[dirBN  *size_MatF];
+   f0MPsource = &DF[dirTS  *size_MatF];
+   f000source = &DF[dirZERO*size_MatF];
+   fMMMsource = &DF[dirBSW *size_MatF];
+   fMMPsource = &DF[dirTSW *size_MatF];
+   fMPPsource = &DF[dirTNW *size_MatF];
+   fMPMsource = &DF[dirBNW *size_MatF];
+   fPPMsource = &DF[dirBNE *size_MatF];
+   fPPPsource = &DF[dirTNE *size_MatF];
+   fPMPsource = &DF[dirTSE *size_MatF];
+   fPMMsource = &DF[dirBSE *size_MatF];
+
+   real
+	   *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest,
+	   *fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest,
+	   *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest;
+
+   if (evenOrOdd==true)
+   {
+	   fP00dest = &DC[dirE   *size_MatC];
+	   fM00dest = &DC[dirW   *size_MatC];
+	   f0P0dest = &DC[dirN   *size_MatC];
+	   f0M0dest = &DC[dirS   *size_MatC];
+	   f00Pdest = &DC[dirT   *size_MatC];
+	   f00Mdest = &DC[dirB   *size_MatC];
+	   fPP0dest = &DC[dirNE  *size_MatC];
+	   fMM0dest = &DC[dirSW  *size_MatC];
+	   fPM0dest = &DC[dirSE  *size_MatC];
+	   fMP0dest = &DC[dirNW  *size_MatC];
+	   fP0Pdest = &DC[dirTE  *size_MatC];
+	   fM0Mdest = &DC[dirBW  *size_MatC];
+	   fP0Mdest = &DC[dirBE  *size_MatC];
+	   fM0Pdest = &DC[dirTW  *size_MatC];
+	   f0PPdest = &DC[dirTN  *size_MatC];
+	   f0MMdest = &DC[dirBS  *size_MatC];
+	   f0PMdest = &DC[dirBN  *size_MatC];
+	   f0MPdest = &DC[dirTS  *size_MatC];
+	   f000dest = &DC[dirZERO*size_MatC];
+	   fMMMdest = &DC[dirBSW *size_MatC];
+	   fMMPdest = &DC[dirTSW *size_MatC];
+	   fMPPdest = &DC[dirTNW *size_MatC];
+	   fMPMdest = &DC[dirBNW *size_MatC];
+	   fPPMdest = &DC[dirBNE *size_MatC];
+	   fPPPdest = &DC[dirTNE *size_MatC];
+	   fPMPdest = &DC[dirTSE *size_MatC];
+	   fPMMdest = &DC[dirBSE *size_MatC];
+   } 
+   else
+   {
+	   fP00dest = &DC[dirW   *size_MatC];
+	   fM00dest = &DC[dirE   *size_MatC];
+	   f0P0dest = &DC[dirS   *size_MatC];
+	   f0M0dest = &DC[dirN   *size_MatC];
+	   f00Pdest = &DC[dirB   *size_MatC];
+	   f00Mdest = &DC[dirT   *size_MatC];
+	   fPP0dest = &DC[dirSW  *size_MatC];
+	   fMM0dest = &DC[dirNE  *size_MatC];
+	   fPM0dest = &DC[dirNW  *size_MatC];
+	   fMP0dest = &DC[dirSE  *size_MatC];
+	   fP0Pdest = &DC[dirBW  *size_MatC];
+	   fM0Mdest = &DC[dirTE  *size_MatC];
+	   fP0Mdest = &DC[dirTW  *size_MatC];
+	   fM0Pdest = &DC[dirBE  *size_MatC];
+	   f0PPdest = &DC[dirBS  *size_MatC];
+	   f0MMdest = &DC[dirTN  *size_MatC];
+	   f0PMdest = &DC[dirTS  *size_MatC];
+	   f0MPdest = &DC[dirBN  *size_MatC];
+	   f000dest = &DC[dirZERO*size_MatC];
+	   fMMMdest = &DC[dirTNE *size_MatC];
+	   fMMPdest = &DC[dirBNE *size_MatC];
+	   fMPPdest = &DC[dirBSE *size_MatC];
+	   fMPMdest = &DC[dirTSE *size_MatC];
+	   fPPMdest = &DC[dirTSW *size_MatC];
+	   fPPPdest = &DC[dirBSW *size_MatC];
+	   fPMPdest = &DC[dirBNW *size_MatC];
+	   fPMMdest = &DC[dirTNW *size_MatC];
+   }
+
+   Distributions6 G;
+   if (evenOrOdd == true)
+   {
+	   G.g[dirE] = &G6[dirE   *size_MatC];
+	   G.g[dirW] = &G6[dirW   *size_MatC];
+	   G.g[dirN] = &G6[dirN   *size_MatC];
+	   G.g[dirS] = &G6[dirS   *size_MatC];
+	   G.g[dirT] = &G6[dirT   *size_MatC];
+	   G.g[dirB] = &G6[dirB   *size_MatC];
+   }
+   else
+   {
+	   G.g[dirW] = &G6[dirE   *size_MatC];
+	   G.g[dirE] = &G6[dirW   *size_MatC];
+	   G.g[dirS] = &G6[dirN   *size_MatC];
+	   G.g[dirN] = &G6[dirS   *size_MatC];
+	   G.g[dirB] = &G6[dirT   *size_MatC];
+	   G.g[dirT] = &G6[dirB   *size_MatC];
+   }
+
+   ////////////////////////////////////////////////////////////////////////////////
+   const unsigned  ix = threadIdx.x;  // Globaler x-Index 
+   const unsigned  iy = blockIdx.x;   // Globaler y-Index 
+   const unsigned  iz = blockIdx.y;   // Globaler z-Index 
+
+   const unsigned nx = blockDim.x;
+   const unsigned ny = gridDim.x;
+
+   const unsigned k = nx*(ny*iz + iy) + ix;
+   //////////////////////////////////////////////////////////////////////////
+
+   ////////////////////////////////////////////////////////////////////////////////
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        vvx, vvy, vvz, vx2, vy2, vz2, drho;
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM;
+   real        /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP;
+   real        /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP;
+   real        /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM;
+   real        /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM;
+   real        /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP;
+   real        /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP;
+   real        /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM;
+   real        fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM;
+   real        kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM;
+   real        kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP;
+   real        kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP;
+   real        kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM;
+   real        kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM;
+   real        kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP;
+   real        kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP;
+   real        kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
+   real        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
+
+   if(k<kFC)
+   {
+      //////////////////////////////////////////////////////////////////////////
+      xoff = offFC.xOffFC[k];
+      yoff = offFC.yOffFC[k];
+      zoff = offFC.zOffFC[k];      
+      xoff_sq = xoff * xoff;
+      yoff_sq = yoff * yoff;
+      zoff_sq = zoff * zoff;
+      //////////////////////////////////////////////////////////////////////////
+      //SWB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 0
+      unsigned int k000base = posFSWB[k];
+      unsigned int kM00base = neighborFX[k000base];
+      unsigned int k0M0base = neighborFY[k000base];
+      unsigned int k00Mbase = neighborFZ[k000base];
+      unsigned int kMM0base = neighborFY[kM00base];
+      unsigned int kM0Mbase = neighborFZ[kM00base];
+      unsigned int k0MMbase = neighborFZ[k0M0base];
+      unsigned int kMMMbase = neighborFZ[kMM0base];
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      unsigned int k000 = k000base;
+      unsigned int kM00 = kM00base;   
+      unsigned int k0M0 = k0M0base;   
+      unsigned int k00M = k00Mbase;   
+      unsigned int kMM0 = kMM0base;  
+      unsigned int kM0M = kM0Mbase;  
+      unsigned int k0MM = k0MMbase;  
+      unsigned int kMMM = kMMMbase; 
+      ////////////////////////////////////////////////////////////////////////////////
+      fP00 = fP00source[k000];
+      fM00 = fM00source[kM00];
+      f0P0 = f0P0source[k000];
+      f0M0 = f0M0source[k0M0];
+      f00P = f00Psource[k000];
+      f00M = f00Msource[k00M];
+      fPP0 = fPP0source[k000];
+      fMM0 = fMM0source[kMM0];
+      fPM0 = fPM0source[k0M0];
+      fMP0 = fMP0source[kM00];
+      fP0P = fP0Psource[k000];
+      fM0M = fM0Msource[kM0M];
+      fP0M = fP0Msource[k00M];
+      fM0P = fM0Psource[kM00];
+      f0PP = f0PPsource[k000];
+      f0MM = f0MMsource[k0MM];
+      f0PM = f0PMsource[k00M];
+      f0MP = f0MPsource[k0M0];
+      f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+      fPMP = fPMPsource[k0M0];
+      fPMM = fPMMsource[k0MM];
+
+      drhoMMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MMM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMM);
+	  vx2MMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMM);
+	  vx3MMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMM);
+
+	  kxyFromfcNEQMMM    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx2MMM)));
+	  kyzFromfcNEQMMM    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMM) - ((vx2MMM*vx3MMM)));
+	  kxzFromfcNEQMMM    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMM) - ((vx1MMM*vx3MMM)));
+	  kxxMyyFromfcNEQMMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx2MMM*vx2MMM)));
+	  kxxMzzFromfcNEQMMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMM) - ((vx1MMM*vx1MMM - vx3MMM*vx3MMM)));
+	  kyyMzzFromfcNEQMMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMM) - ((vx2MMM*vx2MMM - vx3MMM*vx3MMM)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //SWT//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = k00M;
+      kM00 = kM0M;   
+      k0M0 = k0MM;   
+      k00M = neighborFZ[k00M];   
+      kMM0 = kMMM;  
+      kM0M = neighborFZ[kM0M];  
+      k0MM = neighborFZ[k0MM];  
+      kMMM = neighborFZ[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MMP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMMP);
+	  vx2MMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMMP);
+	  vx3MMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMMP);
+
+	  kxyFromfcNEQMMP    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx2MMP)));
+	  kyzFromfcNEQMMP    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMMP) - ((vx2MMP*vx3MMP)));
+	  kxzFromfcNEQMMP    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMMP) - ((vx1MMP*vx3MMP)));
+	  kxxMyyFromfcNEQMMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx2MMP*vx2MMP)));
+	  kxxMzzFromfcNEQMMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMMP) - ((vx1MMP*vx1MMP - vx3MMP*vx3MMP)));
+	  kyyMzzFromfcNEQMMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMMP) - ((vx2MMP*vx2MMP - vx3MMP*vx3MMP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //SET//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = kM00;
+      kM00 = neighborFX[kM00];   
+      k0M0 = kMM0;   
+      k00M = kM0M;   
+      kMM0 = neighborFX[kMM0];  
+      kM0M = neighborFX[kM0M];  
+      k0MM = kMMM;  
+      kMMM = neighborFX[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPMP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PMP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMP);
+	  vx2PMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMP);
+	  vx3PMP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMP);
+
+	  kxyFromfcNEQPMP    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx2PMP)));
+	  kyzFromfcNEQPMP    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMP) - ((vx2PMP*vx3PMP)));
+	  kxzFromfcNEQPMP    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMP) - ((vx1PMP*vx3PMP)));
+	  kxxMyyFromfcNEQPMP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx2PMP*vx2PMP)));
+	  kxxMzzFromfcNEQPMP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMP) - ((vx1PMP*vx1PMP - vx3PMP*vx3PMP)));
+	  kyyMzzFromfcNEQPMP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMP) - ((vx2PMP*vx2PMP - vx3PMP*vx3PMP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //SEB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k00M = k000;   
+      kM0M = kM00;  
+      k0MM = k0M0;  
+      kMMM = kMM0; 
+      k000 = kM00base;
+      kM00 = neighborFX[kM00base];   
+      k0M0 = kMM0base;   
+      kMM0 = neighborFX[kMM0base];  
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPMM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PMM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPMM);
+	  vx2PMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPMM);
+	  vx3PMM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPMM);
+
+	  kxyFromfcNEQPMM    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx2PMM)));
+	  kyzFromfcNEQPMM    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPMM) - ((vx2PMM*vx3PMM)));
+	  kxzFromfcNEQPMM    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPMM) - ((vx1PMM*vx3PMM)));
+	  kxxMyyFromfcNEQPMM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx2PMM*vx2PMM)));
+	  kxxMzzFromfcNEQPMM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPMM) - ((vx1PMM*vx1PMM - vx3PMM*vx3PMM)));
+	  kyyMzzFromfcNEQPMM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPMM) - ((vx2PMM*vx2PMM - vx3PMM*vx3PMM)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NWB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 0
+      k000base = k0M0base;
+      kM00base = kMM0base;
+      k0M0base = neighborFY[k0M0base];
+      k00Mbase = k0MMbase;
+      kMM0base = neighborFY[kMM0base];
+      kM0Mbase = kMMMbase;
+      k0MMbase = neighborFY[k0MMbase];
+      kMMMbase = neighborFY[kMMMbase];
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = k000base;
+      kM00 = kM00base;   
+      k0M0 = k0M0base;   
+      k00M = k00Mbase;   
+      kMM0 = kMM0base;  
+      kM0M = kM0Mbase;  
+      k0MM = k0MMbase;  
+      kMMM = kMMMbase; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MPM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPM);
+	  vx2MPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPM);
+	  vx3MPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPM);
+
+	  kxyFromfcNEQMPM    = -three*omegaS*   ((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx2MPM)));
+	  kyzFromfcNEQMPM    = -three*omegaS*   ((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPM) - ((vx2MPM*vx3MPM)));
+	  kxzFromfcNEQMPM    = -three*omegaS*   ((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPM) - ((vx1MPM*vx3MPM)));
+	  kxxMyyFromfcNEQMPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx2MPM*vx2MPM)));
+	  kxxMzzFromfcNEQMPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPM) - ((vx1MPM*vx1MPM - vx3MPM*vx3MPM)));
+	  kyyMzzFromfcNEQMPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPM) - ((vx2MPM*vx2MPM - vx3MPM*vx3MPM)));
+
+	  //////////////////////////////////////////////////////////////////////////
+      //NWT//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = k00M;
+      kM00 = kM0M;   
+      k0M0 = k0MM;   
+      k00M = neighborFZ[k00M];   
+      kMM0 = kMMM;  
+      kM0M = neighborFZ[kM0M];  
+      k0MM = neighborFZ[k0MM];  
+      kMMM = neighborFZ[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoMPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1MPP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoMPP);
+	  vx2MPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoMPP);
+	  vx3MPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoMPP);
+
+	  kxyFromfcNEQMPP    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx2MPP)));
+	  kyzFromfcNEQMPP    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoMPP) - ((vx2MPP*vx3MPP)));
+	  kxzFromfcNEQMPP    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoMPP) - ((vx1MPP*vx3MPP)));
+	  kxxMyyFromfcNEQMPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx2MPP*vx2MPP)));
+	  kxxMzzFromfcNEQMPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoMPP) - ((vx1MPP*vx1MPP - vx3MPP*vx3MPP)));
+	  kyyMzzFromfcNEQMPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoMPP) - ((vx2MPP*vx2MPP - vx3MPP*vx3MPP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NET//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k000 = kM00;
+      kM00 = neighborFX[kM00];   
+      k0M0 = kMM0;   
+      k00M = kM0M;   
+      kMM0 = neighborFX[kMM0];  
+      kM0M = neighborFX[kM0M];  
+      k0MM = kMMM;  
+      kMMM = neighborFX[kMMM]; 
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPPP = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PPP  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPP);
+	  vx2PPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPP);
+	  vx3PPP  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPP);
+
+	  kxyFromfcNEQPPP    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx2PPP)));
+	  kyzFromfcNEQPPP    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPP) - ((vx2PPP*vx3PPP)));
+	  kxzFromfcNEQPPP    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPP) - ((vx1PPP*vx3PPP)));
+	  kxxMyyFromfcNEQPPP = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx2PPP*vx2PPP)));
+	  kxxMzzFromfcNEQPPP = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPP) - ((vx1PPP*vx1PPP - vx3PPP*vx3PPP)));
+	  kyyMzzFromfcNEQPPP = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPP) - ((vx2PPP*vx2PPP - vx3PPP*vx3PPP)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //NEB//
+      //////////////////////////////////////////////////////////////////////////
+      //index 
+      k00M = k000;   
+      kM0M = kM00;  
+      k0MM = k0M0;  
+      kMMM = kMM0; 
+      k000 = kM00base;
+      kM00 = neighborFX[kM00base];   
+      k0M0 = kMM0base;   
+      kMM0 = neighborFX[kMM0base];  
+      ////////////////////////////////////////////////////////////////////////////////
+	  fP00 = fP00source[k000];
+	  fM00 = fM00source[kM00];
+	  f0P0 = f0P0source[k000];
+	  f0M0 = f0M0source[k0M0];
+	  f00P = f00Psource[k000];
+	  f00M = f00Msource[k00M];
+	  fPP0 = fPP0source[k000];
+	  fMM0 = fMM0source[kMM0];
+	  fPM0 = fPM0source[k0M0];
+	  fMP0 = fMP0source[kM00];
+	  fP0P = fP0Psource[k000];
+	  fM0M = fM0Msource[kM0M];
+	  fP0M = fP0Msource[k00M];
+	  fM0P = fM0Psource[kM00];
+	  f0PP = f0PPsource[k000];
+	  f0MM = f0MMsource[k0MM];
+	  f0PM = f0PMsource[k00M];
+	  f0MP = f0MPsource[k0M0];
+	  f000 = f000source[k000];
+	  fMMM = fMMMsource[kMMM];
+	  fMMP = fMMPsource[kMM0];
+	  fMPP = fMPPsource[kM00];
+	  fMPM = fMPMsource[kM0M];
+	  fPPM = fPPMsource[k00M];
+	  fPPP = fPPPsource[k000];
+	  fPMP = fPMPsource[k0M0];
+	  fPMM = fPMMsource[k0MM];
+
+      drhoPPM = fP00+fM00+f0P0+f0M0+f00P+f00M+fPP0+fMM0+fPM0+fMP0+fP0P+fM0M+fP0M+fM0P+f0PP+f0MM+f0PM+f0MP+f000+fPPP+fMMP+fPMP+fMPP+fPPM+fMMM+fPMM+fMPM;
+      vx1PPM  = (((fPPP-fMMM)+(fPMP-fMPM)+(fPPM-fMMP)+(fPMM-fMPP)) + (((fPP0-fMM0)+(fP0P-fM0M))+((fPM0-fMP0)+(fP0M-fM0P))) + (fP00-fM00))/(one + drhoPPM);
+	  vx2PPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPPM-fMMP)+(fMPM-fPMP)) + (((fPP0-fMM0)+(f0PP-f0MM))+((f0PM-f0MP)+(fMP0-fPM0))) + (f0P0-f0M0))/(one + drhoPPM);
+	  vx3PPM  = (((fPPP-fMMM)+(fMPP-fPMM)+(fPMP-fMPM)+(fMMP-fPPM)) + (((fP0P-fM0M)+(f0PP-f0MM))+((fM0P-fP0M)+(f0MP-f0PM))) + (f00P-f00M))/(one + drhoPPM);
+
+	  kxyFromfcNEQPPM    = -three*omegaS*((((fMM0 - fPM0) + (fPP0 - fMP0)) + (((fMMM - fPMM) + (fPPM - fMPM)) + ((fMMP - fPMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx2PPM)));
+	  kyzFromfcNEQPPM    = -three*omegaS*((((f0MM - f0MP) + (f0PP - f0PM)) + (((fPMM - fPMP) + (fMMM - fMPM)) + ((fPPP - fPPM) + (fMPP - fMMP)))) / (one + drhoPPM) - ((vx2PPM*vx3PPM)));
+	  kxzFromfcNEQPPM    = -three*omegaS*((((fM0M - fP0M) + (fP0P - fM0P)) + (((fMMM - fPMM) + (fMPM - fPPM)) + ((fPMP - fMMP) + (fPPP - fMPP)))) / (one + drhoPPM) - ((vx1PPM*vx3PPM)));
+	  kxxMyyFromfcNEQPPM = -c3o2*omegaS *(((((fM0M - f0MM) + (fM0P - f0MP)) + ((fP0M - f0PM) + (fP0P - f0PP))) + ((fM00 - f0M0) + (fP00 - f0P0))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx2PPM*vx2PPM)));
+	  kxxMzzFromfcNEQPPM = -c3o2*omegaS *(((((fMM0 - f0MM) + (fMP0 - f0PM)) + ((fPM0 - f0MP) + (fPP0 - f0PP))) + ((fM00 - f00M) + (fP00 - f00P))) / (one + drhoPPM) - ((vx1PPM*vx1PPM - vx3PPM*vx3PPM)));
+	  kyyMzzFromfcNEQPPM = -c3o2*omegaS *(((((fPM0 - fP0M) + (fMM0 - fM0M)) + ((fPP0 - fP0P) + (fMP0 - fM0P))) + ((f0M0 - f00M) + (f0P0 - f00P))) / (one + drhoPPM) - ((vx2PPM*vx2PPM - vx3PPM*vx3PPM)));
+
+      //////////////////////////////////////////////////////////////////////////
+      //3
+      //////////////////////////////////////////////////////////////////////////
+	  a0  = c1o8*(((vx1PPM + vx1MMP) + (vx1MPM + vx1PMP)) + ((vx1PMM + vx1MPP) + (vx1MMM + vx1PPP)));
+	  ax  = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1PMM - vx1MPP)));
+	  ay  = c1o4*(((vx1PPM - vx1MMP) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1MPP - vx1PMM)));
+	  az  = c1o4*(((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1PMP - vx1MPM) + (vx1MPP - vx1PMM)));
+	  axy = c1o2*(((vx1PPM - vx1PMP) + (vx1MMM - vx1MPP)) + ((vx1MMP - vx1MPM) + (vx1PPP - vx1PMM)));
+	  axz = c1o2*(((vx1PMP - vx1PPM) + (vx1MMM - vx1MPP)) + ((vx1MPM - vx1MMP) + (vx1PPP - vx1PMM)));
+	  ayz = c1o2*(((vx1PPP - vx1MPM) + (vx1PMM - vx1MMP)) + ((vx1MPP - vx1PPM) + (vx1MMM - vx1PMP)));
+	  //axyz=		  ((vx1MMP - vx1PPM) + (vx1PPP - vx1MMM)) + ((vx1MPM - vx1PMP) + (vx1PMM - vx1MPP)) ;
+	  b0  = c1o8*(((vx2PPM + vx2MMP) + (vx2MPM + vx2PMP)) + ((vx2PMM + vx2MPP) + (vx2MMM + vx2PPP)));
+	  bx  = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2PMM - vx2MPP)));
+	  by  = c1o4*(((vx2PPM - vx2MMP) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2MPP - vx2PMM)));
+	  bz  = c1o4*(((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2PMP - vx2MPM) + (vx2MPP - vx2PMM)));
+	  bxy = c1o2*(((vx2PPM - vx2MPP) + (vx2MMM - vx2PMP)) + ((vx2MMP - vx2PMM) + (vx2PPP - vx2MPM)));
+	  bxz = c1o2*(((vx2MMM - vx2PPM) + (vx2PMP - vx2MPP)) + ((vx2MPM - vx2PMM) + (vx2PPP - vx2MMP)));
+	  byz = c1o2*(((vx2MPP - vx2PPM) + (vx2MMM - vx2PMP)) + ((vx2PMM - vx2MMP) + (vx2PPP - vx2MPM)));
+	  //bxyz=		  ((vx2MMP - vx2PPM) + (vx2PPP - vx2MMM)) + ((vx2MPM - vx2PMP) + (vx2PMM - vx2MPP)) ;
+	  c0  = c1o8*(((vx3PPM + vx3MMP) + (vx3MPM + vx3PMP)) + ((vx3PMM + vx3MPP) + (vx3MMM + vx3PPP)));
+	  cx  = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3PMM - vx3MPP)));
+	  cy  = c1o4*(((vx3PPM - vx3MMP) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3MPP - vx3PMM)));
+	  cz  = c1o4*(((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3PMP - vx3MPM) + (vx3MPP - vx3PMM)));
+	  cxy = c1o2*(((vx3PPM - vx3PMP) + (vx3MMM - vx3MPP)) + ((vx3MMP - vx3MPM) + (vx3PPP - vx3PMM)));
+	  cxz = c1o2*(((vx3MMM - vx3PPM) + (vx3PMP - vx3MPP)) + ((vx3MPM - vx3PMM) + (vx3PPP - vx3MMP)));
+	  cyz = c1o2*(((vx3MMM - vx3PPM) + (vx3MPP - vx3PMP)) + ((vx3PMM - vx3MPM) + (vx3PPP - vx3MMP)));
+	  //cxyz=		  ((vx3MMP - vx3PPM) + (vx3PPP - vx3MMM)) + ((vx3MPM - vx3PMP) + (vx3PMM - vx3MPP)) ;
+
+	  //bxx = zero;
+	  //cxx = zero;
+	  //ayy = zero;
+	  //cyy = zero;
+	  //azz = zero;
+	  //bzz = zero;
+	  //axx = zero;
+	  //byy = zero;
+	  //czz = zero;
+
+	  bxx = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPMM - kxyFromfcNEQMPP)) + ((kxyFromfcNEQPMP - kxyFromfcNEQMPM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP))) - c1o2*axy;
+	  cxx = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) + (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) + (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*axz;
+
+	  ayy = c1o8*(((kxyFromfcNEQPPP - kxyFromfcNEQMMM) + (kxyFromfcNEQPPM - kxyFromfcNEQMMP)) - ((kxyFromfcNEQPMM - kxyFromfcNEQMPP) + (kxyFromfcNEQPMP - kxyFromfcNEQMPM))) - c1o2*bxy;
+	  cyy = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) + (kyzFromfcNEQPPM - kyzFromfcNEQMMP)) - ((kyzFromfcNEQPMM - kyzFromfcNEQMPP) + (kyzFromfcNEQPMP - kyzFromfcNEQMPM))) - c1o2*byz;
+
+	  azz = c1o8*(((kxzFromfcNEQPPP - kxzFromfcNEQMMM) - (kxzFromfcNEQPMM - kxzFromfcNEQMPP)) + ((kxzFromfcNEQPMP - kxzFromfcNEQMPM) - (kxzFromfcNEQPPM - kxzFromfcNEQMMP))) - c1o2*cxz;
+	  bzz = c1o8*(((kyzFromfcNEQPPP - kyzFromfcNEQMMM) - (kyzFromfcNEQPMM - kyzFromfcNEQMPP)) + ((kyzFromfcNEQPMP - kyzFromfcNEQMPM) - (kyzFromfcNEQPPM - kyzFromfcNEQMMP))) - c1o2*cyz;
+
+	  axx = ( c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) + (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM) + (kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP))) - c1o4*bxy)
+		  + ( c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) + (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) + ((kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM) + (kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP))) - c1o4*cxz);
+
+	  byy = (-c1o16*(((kxxMyyFromfcNEQPPP - kxxMyyFromfcNEQMMM) - (kxxMyyFromfcNEQPMM - kxxMyyFromfcNEQMPP)) + ((kxxMyyFromfcNEQPPM - kxxMyyFromfcNEQMMP) - (kxxMyyFromfcNEQPMP - kxxMyyFromfcNEQMPM))) - c1o4*axy)
+		  + ( c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) + ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*cyz);
+
+	  czz = (-c1o16*(((kxxMzzFromfcNEQPPP - kxxMzzFromfcNEQMMM) - (kxxMzzFromfcNEQPMM - kxxMzzFromfcNEQMPP)) - ((kxxMzzFromfcNEQPPM - kxxMzzFromfcNEQMMP) - (kxxMzzFromfcNEQPMP - kxxMzzFromfcNEQMPM))) - c1o4*axz)
+		  + ( c1o16*(((kyyMzzFromfcNEQPPP - kyyMzzFromfcNEQMMM) - (kyyMzzFromfcNEQPMM - kyyMzzFromfcNEQMPP)) - ((kyyMzzFromfcNEQPPM - kyyMzzFromfcNEQMMP) - (kyyMzzFromfcNEQPMP - kyyMzzFromfcNEQMPM))) - c1o4*byz);
+
+	  a0 -= c1o4*(axx + ayy + azz);
+	  b0 -= c1o4*(bxx + byy + bzz);
+	  c0 -= c1o4*(cxx + cyy + czz);
+
+	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real kxyAverage = zero;
+	  real kyzAverage = zero;
+	  real kxzAverage = zero;
+	  real kxxMyyAverage = zero;
+	  real kxxMzzAverage = zero;
+	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  ////Press
+	  //d0   = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8;
+	  //dx   = ( pressPPM + pressPPP - pressMPM - pressMPP + pressPMM + pressPMP - pressMMM - pressMMP) * c1o4;
+	  //dy   = ( pressPPM + pressPPP + pressMPM + pressMPP - pressPMM - pressPMP - pressMMM - pressMMP) * c1o4;
+	  //dz   = (-pressPPM + pressPPP - pressMPM + pressMPP - pressPMM + pressPMP - pressMMM + pressMMP) * c1o4;
+	  //dxy  = ( pressPPM + pressPPP - pressMPM - pressMPP - pressPMM - pressPMP + pressMMM + pressMMP) * c1o2;
+	  //dxz  = (-pressPPM + pressPPP + pressMPM - pressMPP - pressPMM + pressPMP + pressMMM - pressMMP) * c1o2;
+	  //dyz  = (-pressPPM + pressPPP - pressMPM + pressMPP + pressPMM - pressPMP + pressMMM - pressMMP) * c1o2;
+	  //dxyz =  -pressPPM + pressPPP + pressMPM - pressMPP + pressPMM - pressPMP - pressMMM + pressMMP;
+	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //drho
+	  d0   = ( ((drhoPPM + drhoMMP) + (drhoMPM + drhoPMP)) + ((drhoPMM + drhoMPP) + (drhoMMM + drhoPPP))) * c1o8;
+	  dx   = ( ((drhoPPM - drhoMMP) + (drhoPMM - drhoMPP)) + ((drhoPMP - drhoMPM) + (drhoPPP - drhoMMM))) * c1o4;
+	  dy   = ( ((drhoPPM - drhoMMP) + (drhoMPP - drhoPMM)) + ((drhoMPM - drhoPMP) + (drhoPPP - drhoMMM))) * c1o4;
+	  dz   = ( ((drhoMMP - drhoPPM) + (drhoPPP - drhoMMM)) + ((drhoPMP - drhoMPM) + (drhoMPP - drhoPMM))) * c1o4;
+	  dxy  = ( ((drhoPPM - drhoPMP) + (drhoPPP - drhoPMM)) + ((drhoMMP - drhoMPM) + (drhoMMM - drhoMPP))) * c1o2;
+	  dxz  = ( ((drhoMMM - drhoPPM) + (drhoPPP - drhoMMP)) + ((drhoMPM - drhoPMM) + (drhoPMP - drhoMPP))) * c1o2;
+	  dyz  = ( ((drhoMPP - drhoPPM) + (drhoPPP - drhoMPM)) + ((drhoPMM - drhoMMP) + (drhoMMM - drhoPMP))) * c1o2;
+      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+      //
+      // Bernd das Brot 
+	  //
+      //
+	  // x------x
+	  // |      |
+	  // |	 ---+--->X
+	  // |		|  \
+	  // x------x   \
+	  //			off-vector
+      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+      a0 = a0 + xoff * ax + yoff * ay + zoff * az + xoff_sq * axx + yoff_sq * ayy + zoff_sq * azz + xoff*yoff*axy + xoff*zoff*axz + yoff*zoff*ayz;
+      ax = ax + two * xoff * axx + yoff * axy + zoff * axz;
+      ay = ay + two * yoff * ayy + xoff * axy + zoff * ayz;
+      az = az + two * zoff * azz + xoff * axz + yoff * ayz;
+      b0 = b0 + xoff * bx + yoff * by + zoff * bz + xoff_sq * bxx + yoff_sq * byy + zoff_sq * bzz + xoff*yoff*bxy + xoff*zoff*bxz + yoff*zoff*byz;
+      bx = bx + two * xoff * bxx + yoff * bxy + zoff * bxz;
+      by = by + two * yoff * byy + xoff * bxy + zoff * byz;
+      bz = bz + two * zoff * bzz + xoff * bxz + yoff * byz;
+      c0 = c0 + xoff * cx + yoff * cy + zoff * cz + xoff_sq * cxx + yoff_sq * cyy + zoff_sq * czz + xoff*yoff*cxy + xoff*zoff*cxz + yoff*zoff*cyz;
+      cx = cx + two * xoff * cxx + yoff * cxy + zoff * cxz;
+      cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz;
+      cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz;
+	  d0 = d0 + xoff * dx + yoff * dy + zoff * dz + xoff*yoff*dxy + xoff*zoff*dxz + yoff*zoff*dyz;
+      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real mgcbb = zero;
+	  real mgabb = zero;
+	  real mgbcb = zero;
+	  real mgbab = zero;
+	  real mgbbc = zero;
+	  real mgbba = zero;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  real m0, m1, m2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  real O3 = two - o;
+	  real residu, residutmp;
+	  residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //
+	  //Position C 0., 0., 0.
+	  //
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //x = 0.;
+	  //y = 0.;
+	  //z = 0.;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
+	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	  //press = pressPPP * (c1o8 - c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
+			//  pressMPP * (c1o8 + c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
+			//  pressPMP * (c1o8 - c1o4 * mxoff + c1o4 * myoff - c1o4 * mzoff) + 
+			//  pressMMP * (c1o8 + c1o4 * mxoff + c1o4 * myoff - c1o4 * mzoff) + 
+			//  pressPPM * (c1o8 - c1o4 * mxoff - c1o4 * myoff + c1o4 * mzoff) + 
+			//  pressMPM * (c1o8 + c1o4 * mxoff - c1o4 * myoff + c1o4 * mzoff) + 
+			//  pressPMM * (c1o8 - c1o4 * mxoff + c1o4 * myoff + c1o4 * mzoff) + 
+			//  pressMMM * (c1o8 + c1o4 * mxoff + c1o4 * myoff + c1o4 * mzoff);
+	  //drho  = drhoPPP * (c1o8 - c1o4 * xoff - c1o4 * yoff - c1o4 * zoff) + 
+			//  drhoMPP * (c1o8 + c1o4 * xoff - c1o4 * yoff - c1o4 * zoff) + 
+			//  drhoPMP * (c1o8 - c1o4 * xoff + c1o4 * yoff - c1o4 * zoff) + 
+			//  drhoMMP * (c1o8 + c1o4 * xoff + c1o4 * yoff - c1o4 * zoff) + 
+			//  drhoPPM * (c1o8 - c1o4 * xoff - c1o4 * yoff + c1o4 * zoff) + 
+			//  drhoMPM * (c1o8 + c1o4 * xoff - c1o4 * yoff + c1o4 * zoff) + 
+			//  drhoPMM * (c1o8 - c1o4 * xoff + c1o4 * yoff + c1o4 * zoff) + 
+			//  drhoMMM * (c1o8 + c1o4 * xoff + c1o4 * yoff + c1o4 * zoff);
+	  press = d0;
+	  vvx   = a0;
+	  vvy   = b0;
+	  vvz   = c0;
+
+	  //mfaaa = drho;
+	  //mfaaa = press + (ax+by+cz)/three;  //  1/3 = 2/3*(1/op-1/2)
+	  mfaaa = press; // if drho is interpolated directly
+
+	  vx2 = vvx*vvx;
+	  vy2 = vvy*vvy;
+	  vz2 = vvz*vvz;
+	  oMdrho = one;
+	  //oMdrho = one - mfaaa;
+
+	  //two
+	  // linear combinations
+	  real oP = o;// :(
+	  mxxPyyPzz = mfaaa    -c2o3*(ax+by+cz)*eps_new/oP*(one+press); 
+	  //mxxMyy    = -c2o3*(ax - by)*eps_new/o;
+	  //mxxMzz    = -c2o3*(ax - cz)*eps_new/o;
+
+	  //mfabb     = -c1o3 * (bz + cy)*eps_new/o;
+	  //mfbab     = -c1o3 * (az + cx)*eps_new/o;
+	  //mfbba     = -c1o3 * (ay + bx)*eps_new/o;
+	  mxxMyy    = -c2o3*((ax - by)+kxxMyyAverage)*eps_new/o * (one + press);
+	  mxxMzz    = -c2o3*((ax - cz)+kxxMzzAverage)*eps_new/o * (one + press);
+
+	  mfabb     = -c1o3 * ((bz + cy)+kyzAverage)*eps_new/o * (one + press);
+	  mfbab     = -c1o3 * ((az + cx)+kxzAverage)*eps_new/o * (one + press);
+	  mfbba     = -c1o3 * ((ay + bx)+kxyAverage)*eps_new/o * (one + press);
+
+	  
+	  // linear combinations back
+	  mfcaa = c1o3 * (       mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaca = c1o3 * (-two * mxxMyy +       mxxMzz + mxxPyyPzz) * NeqOn;
+	  mfaac = c1o3 * (       mxxMyy - two * mxxMzz + mxxPyyPzz) * NeqOn;
+
+	  //3.
+	  // linear combinations
+	  //residu = residutmp * (ayz + bxz + cxy );
+	  //mfbbb = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mfbbb = zero;
+
+	  //residu = residutmp * (axy + two*bxx + two*bzz + cyz );
+	  //residu = -(c1o9*(axy - 2*bxx - 2*bzz + cyz ));
+	  //mxxyPyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyPyzz = zero;
+
+	  //residu = residutmp * (axy + two*bxx - two*bzz - cyz );
+	  //residu = c1o9*(axy - 2*bxx + 2*bzz - cyz );
+	  //mxxyMyzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxyMyzz = zero;
+
+	  //residu = residutmp * (axz + byz + two*cxx + two*cyy );
+	  //residu = -(c1o9*(axz + byz - 2*cxx - 2*cyy ));
+	  //mxxzPyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzPyyz = zero;
+
+	  //residu = residutmp * (axz - byz + two*cxx - two*cyy );
+	  //residu = c1o9*(axz - byz - 2*cxx + 2*cyy );
+	  //mxxzMyyz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxxzMyyz = zero;
+
+	  //residu = residutmp * (two*ayy + two*azz + bxy + cxz );
+	  //residu = c1o9*(2*ayy + 2*azz - bxy - cxz );
+	  //mxyyPxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyPxzz = zero;
+
+	  //residu = residutmp * (two*ayy - two*azz + bxy - cxz );
+	  //residu = c1o9*(-2*ayy + 2*azz + bxy - cxz );
+	  //mxyyMxzz = (abs(residu)+qudricLimit) * residu / (qudricLimit * O3 + abs(residu));
+	  mxyyMxzz = zero;
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  // D3Q27F 
+	  mgcbb = (ax - four * axx) * eps_new;
+	  mgabb = (ax + four * axx) * eps_new;
+	  mgbcb = (by - four * byy) * eps_new;
+	  mgbab = (by + four * byy) * eps_new;
+	  mgbbc = (cz - four * czz) * eps_new;
+	  mgbba = (cz + four * czz) * eps_new;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  // 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.
+	  mfacc = mfaaa*c1o9; 
+	  mfcac = mfacc; 
+	  mfcca = mfacc; 
+	  //5.
+
+	  //6.
+	  mfccc = mfaaa*c1o27;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //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;
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  //index 0
+	  k000 = posC[k];
+	  kM00 = neighborCX[k000];
+	  k0M0 = neighborCY[k000];
+	  k00M = neighborCZ[k000];
+	  kMM0 = neighborCY[kM00];
+	  kM0M = neighborCZ[kM00];
+	  k0MM = neighborCZ[k0M0];
+	  kMMM = neighborCZ[kMM0];
+	  ////////////////////////////////////////////////////////////////////////////////////
+
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  (G.g[dirE])[k000] = mgcbb;
+	  (G.g[dirW])[kM00] = mgabb;
+	  (G.g[dirN])[k000] = mgbcb;
+	  (G.g[dirS])[k0M0] = mgbab;
+	  (G.g[dirT])[k000] = mgbbc;
+	  (G.g[dirB])[k00M] = mgbba;
+	  ////////////////////////////////////////////////////////////////////////////////////
+	  fP00dest[k000] = mfcbb;                                                                 
+	  fM00dest[kM00] = mfabb;                                                               
+	  f0P0dest[k000] = mfbcb;
+	  f0M0dest[k0M0] = mfbab;
+	  f00Pdest[k000] = mfbbc;
+	  f00Mdest[k00M] = mfbba;
+	  fPP0dest[k000] = mfccb;
+	  fMM0dest[kMM0] = mfaab;
+	  fPM0dest[k0M0] = mfcab;
+	  fMP0dest[kM00] = mfacb;
+	  fP0Pdest[k000] = mfcbc;
+	  fM0Mdest[kM0M] = mfaba;
+	  fP0Mdest[k00M] = mfcba;
+	  fM0Pdest[kM00] = mfabc;
+	  f0PPdest[k000] = mfbcc;
+	  f0MMdest[k0MM] = mfbaa;
+	  f0PMdest[k00M] = mfbca;
+	  f0MPdest[k0M0] = mfbac;
+	  f000dest[k000] = mfbbb;
+	  fMMMdest[kMMM] = mfaaa;
+	  fMMPdest[kMM0] = mfaac;
+	  fMPPdest[kM00] = mfacc;
+	  fMPMdest[kM0M] = mfaca;
+	  fPPMdest[k00M] = mfcca;
+	  fPPPdest[k000] = mfccc;
+	  fPMPdest[k0M0] = mfcac;
+	  fPMMdest[k0MM] = mfcaa;
+	  ////////////////////////////////////////////////////////////////////////////////////
+   }
+}
+//////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/VirtualFluids_GPU/Init/InitLattice.cpp b/src/VirtualFluids_GPU/Init/InitLattice.cpp
index 0fe9374e0..d0b05a59a 100644
--- a/src/VirtualFluids_GPU/Init/InitLattice.cpp
+++ b/src/VirtualFluids_GPU/Init/InitLattice.cpp
@@ -40,19 +40,19 @@ void initLattice(SPtr<Parameter> para)
 						//para->getParD(lev)->d0SP.f[0],
 						//para->getParD(lev)->evenOrOdd); 
       //  getLastCudaError("Kernel execution failed"); 
-        //InitF3( para->getParD(lev)->numberofthreads, 
-        //        para->getParD(lev)->neighborX_SP, 
-        //        para->getParD(lev)->neighborY_SP, 
-        //        para->getParD(lev)->neighborZ_SP, 
-        //        para->getParD(lev)->geoSP,       
-        //        para->getParD(lev)->rho_SP, 
-        //        para->getParD(lev)->vx_SP, 
-        //        para->getParD(lev)->vy_SP, 
-        //        para->getParD(lev)->vz_SP, 
-        //        para->getParD(lev)->size_Mat_SP, 
-        //        para->getParD(lev)->g6.g[0],
-        //        para->getParD(lev)->evenOrOdd); 
-        //getLastCudaError("Kernel execution failed"); 
+        InitF3( para->getParD(lev)->numberofthreads, 
+                para->getParD(lev)->neighborX_SP, 
+                para->getParD(lev)->neighborY_SP, 
+                para->getParD(lev)->neighborZ_SP, 
+                para->getParD(lev)->geoSP,       
+                para->getParD(lev)->rho_SP, 
+                para->getParD(lev)->vx_SP, 
+                para->getParD(lev)->vy_SP, 
+                para->getParD(lev)->vz_SP, 
+                para->getParD(lev)->size_Mat_SP, 
+                para->getParD(lev)->g6.g[0],
+                para->getParD(lev)->evenOrOdd); 
+        getLastCudaError("Kernel execution failed"); 
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         para->getParD(lev)->evenOrOdd = true;
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -82,19 +82,19 @@ void initLattice(SPtr<Parameter> para)
 						//para->getParD(lev)->d0SP.f[0],
 						//para->getParD(lev)->evenOrOdd); 
       //  getLastCudaError("Kernel execution failed"); 
-        //InitF3( para->getParD(lev)->numberofthreads, 
-        //        para->getParD(lev)->neighborX_SP, 
-        //        para->getParD(lev)->neighborY_SP, 
-        //        para->getParD(lev)->neighborZ_SP, 
-        //        para->getParD(lev)->geoSP,       
-        //        para->getParD(lev)->rho_SP, 
-        //        para->getParD(lev)->vx_SP, 
-        //        para->getParD(lev)->vy_SP, 
-        //        para->getParD(lev)->vz_SP, 
-        //        para->getParD(lev)->size_Mat_SP, 
-        //        para->getParD(lev)->g6.g[0],
-        //        para->getParD(lev)->evenOrOdd); 
-        //getLastCudaError("Kernel execution failed"); 
+        InitF3( para->getParD(lev)->numberofthreads, 
+                para->getParD(lev)->neighborX_SP, 
+                para->getParD(lev)->neighborY_SP, 
+                para->getParD(lev)->neighborZ_SP, 
+                para->getParD(lev)->geoSP,       
+                para->getParD(lev)->rho_SP, 
+                para->getParD(lev)->vx_SP, 
+                para->getParD(lev)->vy_SP, 
+                para->getParD(lev)->vz_SP, 
+                para->getParD(lev)->size_Mat_SP, 
+                para->getParD(lev)->g6.g[0],
+                para->getParD(lev)->evenOrOdd); 
+        getLastCudaError("Kernel execution failed"); 
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         CalcMacSP27(para->getParD(lev)->vx_SP,       
                     para->getParD(lev)->vy_SP,        
diff --git a/src/VirtualFluids_GPU/LBM/Simulation.cpp b/src/VirtualFluids_GPU/LBM/Simulation.cpp
index d53346749..05e364d37 100644
--- a/src/VirtualFluids_GPU/LBM/Simulation.cpp
+++ b/src/VirtualFluids_GPU/LBM/Simulation.cpp
@@ -231,7 +231,7 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std
    //defineGrid(para, comm);
    ////allocateMemory();
    //output << "done.\n";
-
+   
    output << "init lattice..." ;
    initLattice(para);
    output << "done.\n";
@@ -695,19 +695,19 @@ void Simulation::run()
 	}
 	else
 	{
-		KernelKumNewCompSP27(para->getParD(0)->numberofthreads,       
-							 para->getParD(0)->omega,			
-							 para->getParD(0)->geoSP, 
-							 para->getParD(0)->neighborX_SP, 
-							 para->getParD(0)->neighborY_SP, 
-							 para->getParD(0)->neighborZ_SP,
-							 para->getParD(0)->d0SP.f[0],    
-							 para->getParD(0)->size_Mat_SP,
-							 para->getParD(0)->size_Array_SP,
-							 0,
-							 para->getForcesDev(),
-							 para->getParD(0)->evenOrOdd); 
-		getLastCudaError("KernelKumNewCompSP27 execution failed");
+		//KernelKumNewCompSP27(para->getParD(0)->numberofthreads,       
+		//					 para->getParD(0)->omega,			
+		//					 para->getParD(0)->geoSP, 
+		//					 para->getParD(0)->neighborX_SP, 
+		//					 para->getParD(0)->neighborY_SP, 
+		//					 para->getParD(0)->neighborZ_SP,
+		//					 para->getParD(0)->d0SP.f[0],    
+		//					 para->getParD(0)->size_Mat_SP,
+		//					 para->getParD(0)->size_Array_SP,
+		//					 0,
+		//					 para->getForcesDev(),
+		//					 para->getParD(0)->evenOrOdd); 
+		//getLastCudaError("KernelKumNewCompSP27 execution failed");
 
 		//KernelKumAA2016CompSP27(
 		//	para->getParD(0)->numberofthreads,
@@ -737,6 +737,20 @@ void Simulation::run()
 		//getLastCudaError("KernelCumulantD3Q27All4 execution failed");
 
 		//F3
+		KernelCumulantD3Q27F3_2018( para->getParD(0)->numberofthreads,
+									para->getParD(0)->omega, 
+									para->getParD(0)->geoSP, 
+									para->getParD(0)->neighborX_SP, 
+									para->getParD(0)->neighborY_SP, 
+									para->getParD(0)->neighborZ_SP,
+									para->getParD(0)->d0SP.f[0],    
+									para->getParD(0)->g6.g[0],    
+									para->getParD(0)->size_Mat_SP,
+									0,
+									para->getForcesDev(),
+									para->getParD(0)->evenOrOdd); 
+		getLastCudaError("KernelCumulantD3Q27F3_2018 execution failed");
+
 		//KernelCumulantD3Q27F3( para->getParD(0)->numberofthreads,
 		//					 para->getParD(0)->omega, 
 		//					 para->getParD(0)->geoSP, 
@@ -1808,6 +1822,17 @@ void Simulation::run()
 
             //////////////////////////////////////////////////////////////////////////
 			//fine to coarse interpolation
+			 ScaleFC_comp_D3Q27F3_2018( para->getParD(0)->d0SP.f[0],      para->getParD(1)->d0SP.f[0],       para->getParD(0)->g6.g[0],
+										para->getParD(0)->neighborX_SP,   para->getParD(0)->neighborY_SP,    para->getParD(0)->neighborZ_SP, 
+										para->getParD(1)->neighborX_SP,   para->getParD(1)->neighborY_SP,    para->getParD(1)->neighborZ_SP, 
+										para->getParD(0)->size_Mat_SP,    para->getParD(1)->size_Mat_SP,     para->getParD(0)->evenOrOdd,
+										para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, 
+										para->getParD(0)->K_FC,           para->getParD(0)->omega,           para->getParD(1)->omega, 
+										para->getParD(0)->vis,            para->getParD(0)->nx,              para->getParD(0)->ny, 
+										para->getParD(1)->nx,             para->getParD(1)->ny,              para->getParD(0)->numberofthreads,
+										para->getParD(0)->offFC);
+            getLastCudaError("ScaleFC_comp_D3Q27F3_2018 execution failed");
+            ////////////////////////////////////////////////////////////////////////////
 			 //ScaleFC_comp_D3Q27F3(para->getParD(0)->d0SP.f[0],      para->getParD(1)->d0SP.f[0],       para->getParD(0)->g6.g[0],
 				//			      para->getParD(0)->neighborX_SP,   para->getParD(0)->neighborY_SP,    para->getParD(0)->neighborZ_SP, 
 				//			      para->getParD(1)->neighborX_SP,   para->getParD(1)->neighborY_SP,    para->getParD(1)->neighborZ_SP, 
@@ -1842,16 +1867,16 @@ void Simulation::run()
            // getLastCudaError("ScaleFC_Fix_comp_27 execution failed");
             ////////////////////////////////////////////////////////////////////////////
 
-            ScaleFC_RhoSq_comp_27(para->getParD(0)->d0SP.f[0],      para->getParD(1)->d0SP.f[0], 
-							      para->getParD(0)->neighborX_SP,   para->getParD(0)->neighborY_SP,    para->getParD(0)->neighborZ_SP, 
-							      para->getParD(1)->neighborX_SP,   para->getParD(1)->neighborY_SP,    para->getParD(1)->neighborZ_SP, 
-							      para->getParD(0)->size_Mat_SP,    para->getParD(1)->size_Mat_SP,     para->getParD(0)->evenOrOdd,
-							      para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, 
-							      para->getParD(0)->K_FC,           para->getParD(0)->omega,           para->getParD(1)->omega, 
-							      para->getParD(0)->vis,            para->getParD(0)->nx,              para->getParD(0)->ny, 
-							      para->getParD(1)->nx,             para->getParD(1)->ny,              para->getParD(0)->numberofthreads,
-							      para->getParD(0)->offFC);
-            getLastCudaError("ScaleFC_RhoSq_comp_27 execution failed");
+            //ScaleFC_RhoSq_comp_27(para->getParD(0)->d0SP.f[0],      para->getParD(1)->d0SP.f[0], 
+							     // para->getParD(0)->neighborX_SP,   para->getParD(0)->neighborY_SP,    para->getParD(0)->neighborZ_SP, 
+							     // para->getParD(1)->neighborX_SP,   para->getParD(1)->neighborY_SP,    para->getParD(1)->neighborZ_SP, 
+							     // para->getParD(0)->size_Mat_SP,    para->getParD(1)->size_Mat_SP,     para->getParD(0)->evenOrOdd,
+							     // para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, 
+							     // para->getParD(0)->K_FC,           para->getParD(0)->omega,           para->getParD(1)->omega, 
+							     // para->getParD(0)->vis,            para->getParD(0)->nx,              para->getParD(0)->ny, 
+							     // para->getParD(1)->nx,             para->getParD(1)->ny,              para->getParD(0)->numberofthreads,
+							     // para->getParD(0)->offFC);
+            //getLastCudaError("ScaleFC_RhoSq_comp_27 execution failed");
 
 		    //////////////////////////////////////////////////////////////////////////
            // ScaleFC_RhoSq_3rdMom_comp_27(para->getParD(0)->d0SP.f[0],      para->getParD(1)->d0SP.f[0], 
@@ -1902,6 +1927,17 @@ void Simulation::run()
 			 }
 		    //////////////////////////////////////////////////////////////////////////
 		    //coarse to fine interpolation
+			 ScaleCF_comp_D3Q27F3_2018( para->getParD(0)->d0SP.f[0],      para->getParD(1)->d0SP.f[0],       para->getParD(1)->g6.g[0],
+										para->getParD(0)->neighborX_SP,   para->getParD(0)->neighborY_SP,    para->getParD(0)->neighborZ_SP,
+										para->getParD(1)->neighborX_SP,   para->getParD(1)->neighborY_SP,    para->getParD(1)->neighborZ_SP,
+										para->getParD(0)->size_Mat_SP,    para->getParD(1)->size_Mat_SP,     para->getParD(0)->evenOrOdd,
+										para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, 
+										para->getParD(0)->K_CF,           para->getParD(0)->omega,           para->getParD(1)->omega, 
+										para->getParD(0)->vis,            para->getParD(0)->nx,              para->getParD(0)->ny, 
+										para->getParD(1)->nx,             para->getParD(1)->ny,              para->getParD(0)->numberofthreads,
+										para->getParD(0)->offCF);
+            getLastCudaError("ScaleCF_comp_D3Q27F3_2018 execution failed");
+		    ////////////////////////////////////////////////////////////////////////
 			 //ScaleCF_comp_D3Q27F3(para->getParD(0)->d0SP.f[0],      para->getParD(1)->d0SP.f[0],       para->getParD(1)->g6.g[0],
 				//			      para->getParD(0)->neighborX_SP,   para->getParD(0)->neighborY_SP,    para->getParD(0)->neighborZ_SP,
 				//			      para->getParD(1)->neighborX_SP,   para->getParD(1)->neighborY_SP,    para->getParD(1)->neighborZ_SP,
@@ -1935,16 +1971,16 @@ void Simulation::run()
 							    //para->getParD(0)->offCF);
            // getLastCudaError("ScaleCF_Fix_comp_27 execution failed");
 		    ////////////////////////////////////////////////////////////////////////
-			ScaleCF_RhoSq_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0],
-							      para->getParD(0)->neighborX_SP,   para->getParD(0)->neighborY_SP,    para->getParD(0)->neighborZ_SP,
-							      para->getParD(1)->neighborX_SP,   para->getParD(1)->neighborY_SP,    para->getParD(1)->neighborZ_SP,
-							      para->getParD(0)->size_Mat_SP,    para->getParD(1)->size_Mat_SP,     para->getParD(0)->evenOrOdd,
-							      para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, 
-							      para->getParD(0)->K_CF,           para->getParD(0)->omega,           para->getParD(1)->omega, 
-							      para->getParD(0)->vis,            para->getParD(0)->nx,              para->getParD(0)->ny, 
-							      para->getParD(1)->nx,             para->getParD(1)->ny,              para->getParD(0)->numberofthreads,
-							      para->getParD(0)->offCF);
-            getLastCudaError("ScaleCF_RhoSq_comp_27 execution failed");
+			//ScaleCF_RhoSq_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0],
+			//				      para->getParD(0)->neighborX_SP,   para->getParD(0)->neighborY_SP,    para->getParD(0)->neighborZ_SP,
+			//				      para->getParD(1)->neighborX_SP,   para->getParD(1)->neighborY_SP,    para->getParD(1)->neighborZ_SP,
+			//				      para->getParD(0)->size_Mat_SP,    para->getParD(1)->size_Mat_SP,     para->getParD(0)->evenOrOdd,
+			//				      para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, 
+			//				      para->getParD(0)->K_CF,           para->getParD(0)->omega,           para->getParD(1)->omega, 
+			//				      para->getParD(0)->vis,            para->getParD(0)->nx,              para->getParD(0)->ny, 
+			//				      para->getParD(1)->nx,             para->getParD(1)->ny,              para->getParD(0)->numberofthreads,
+			//				      para->getParD(0)->offCF);
+   //         getLastCudaError("ScaleCF_RhoSq_comp_27 execution failed");
 			//////////////////////////////////////////////////////////////////////////
            // ScaleCF_RhoSq_3rdMom_comp_27(para->getParD(0)->d0SP.f[0],      para->getParD(1)->d0SP.f[0],                
 										 //para->getParD(0)->neighborX_SP,   para->getParD(0)->neighborY_SP,    para->getParD(0)->neighborZ_SP,
diff --git a/targets/apps/LBM/lbmTest/main.cpp b/targets/apps/LBM/lbmTest/main.cpp
index 7cb8488b8..df6e1abe7 100644
--- a/targets/apps/LBM/lbmTest/main.cpp
+++ b/targets/apps/LBM/lbmTest/main.cpp
@@ -288,18 +288,64 @@ void multipleLevel(const std::string& configPath)
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
-    bool useGridGenerator = true;
+    bool useGridGenerator = false;
 
     if(useGridGenerator){
 
         enum testCase{ 
-            DrivAer,
+			Sphere,
+			DrivAer,
             DLC,
             MultiGPU
         };
 
-        int testcase = MultiGPU;
+        int testcase = Sphere;
         
+        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+        if( testcase == Sphere)
+        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+        {
+            real dx = 0.2;
+            real vx = 0.05;
+
+            TriangularMesh* SphereSTL = TriangularMesh::make("E:/temp/GridSphere/2018/STL/SphereNotOptimal.stl");
+
+            gridBuilder->addCoarseGrid(- 5.0, -5.0, -5.0,
+                                        10.0,  5.0,  5.0, dx);  // DrivAer
+
+            gridBuilder->setNumberOfLayers(10,8);
+            gridBuilder->addGrid(SphereSTL, 2);
+        
+            gridBuilder->addGeometry(SphereSTL);
+
+            gridBuilder->setPeriodicBoundaryCondition(false, false, false);
+
+            gridBuilder->buildGrids(LBM, true); // buildGrids() has to be called before setting the BCs!!!!
+            //////////////////////////////////////////////////////////////////////////
+            gridBuilder->setVelocityBoundaryCondition(SideType::PY, vx , 0.0, 0.0);
+            gridBuilder->setVelocityBoundaryCondition(SideType::MY, vx , 0.0, 0.0);
+            gridBuilder->setVelocityBoundaryCondition(SideType::PZ, vx , 0.0, 0.0);
+            gridBuilder->setVelocityBoundaryCondition(SideType::MZ, vx , 0.0, 0.0);
+
+            gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0);
+            gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0);
+
+            gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0);
+            
+            //////////////////////////////////////////////////////////////////////////
+            SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1);
+            //////////////////////////////////////////////////////////////////////////
+
+            gridBuilder->writeGridsToVtk("E:/temp/GridSphere/2018/grids/outSphere/DrivAer_Grid");
+            gridBuilder->writeArrows    ("E:/temp/GridSphere/2018/grids/outSphere/DrivAer_Grid_arrow");
+
+            SimulationFileWriter::write("E:/temp/GridSphere/2018/grids/gridSphere/", gridBuilder, FILEFORMAT::BINARY); //FILEFORMAT::ASCII
+
+            //return;
+
+            gridGenerator = GridGenerator::make(gridBuilder, para);
+        }
+
         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         if( testcase == DrivAer )
         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -662,7 +708,7 @@ int main( int argc, char* argv[])
         {
             try
             {
-                multipleLevel("F:/Work/Computations/gridGenerator/inp/configTest.txt");
+                multipleLevel("C:/Users/schoen/Desktop/bin/3D/VirtualFluidsGpuCodes/Sphere/configSphere.txt");
             }
             catch (const std::exception& e)
             {
-- 
GitLab