diff --git a/src/gpu/VirtualFluids_GPU/GPU/Cumulant27chim.cu b/src/gpu/VirtualFluids_GPU/GPU/Cumulant27chim.cu
index 415a2455e6a64ddf7609eb9c9b39da933d1c343d..a8c4b7ce64c98974cee06fef45f154f0eb179b73 100644
--- a/src/gpu/VirtualFluids_GPU/GPU/Cumulant27chim.cu
+++ b/src/gpu/VirtualFluids_GPU/GPU/Cumulant27chim.cu
@@ -1,10 +1,35 @@
-//  _    ___      __              __________      _     __        ______________   __
-// | |  / (_)____/ /___  ______ _/ / ____/ /_  __(_)___/ /____   /  ___/ __  / /  / /
-// | | / / / ___/ __/ / / / __ `/ / /_  / / / / / / __  / ___/  / /___/ /_/ / /  / /
-// | |/ / / /  / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__  )  / /_) / ____/ /__/ / 
-// |___/_/_/   \__/\__,_/\__,_/_/_/   /_/\__,_/_/\__,_/____/   \____/_/    \_____/
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __         
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |        
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |        
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |        
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____    
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|   
+//      \    \  |    |   ________________________________________________________________    
+//       \    \ |    |  |  ______________________________________________________________|   
+//        \    \|    |  |  |         __          __     __     __     ______      _______    
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)   
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______    
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/   
 //
-//////////////////////////////////////////////////////////////////////////
+//  This file is part of VirtualFluids. VirtualFluids is free software: you can 
+//  redistribute it and/or modify it under the terms of the GNU General Public
+//  License as published by the Free Software Foundation, either version 3 of 
+//  the License, or (at your option) any later version.
+//  
+//  VirtualFluids is distributed in the hope that it will be useful, but WITHOUT 
+//  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
+//  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
+//  for more details.
+//  
+//  You should have received a copy of the GNU General Public License along
+//  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
+//
+//! \file Cumulant27chim.cu
+//! \ingroup GPU
+//! \author Martin Schoenherr
+//=======================================================================================
 /* Device code */
 #include "LBM/LB.h" 
 #include "LBM/D3Q27.h"
@@ -12,882 +37,1706 @@
 #include "math.h"
 
 #include <lbm/Chimera.h>
+#include <lbm/CumulantChimera.h>
+
+
+
+__device__ Distributions27 getDistributions27(real* distributions, unsigned int size_Mat, bool isEvenTimestep)
+{
+    Distributions27 dist;
+    if (isEvenTimestep)
+    {
+        dist.f[dirE   ] = &distributions[dirE   *size_Mat];
+        dist.f[dirW   ] = &distributions[dirW   *size_Mat];
+        dist.f[dirN   ] = &distributions[dirN   *size_Mat];
+        dist.f[dirS   ] = &distributions[dirS   *size_Mat];
+        dist.f[dirT   ] = &distributions[dirT   *size_Mat];
+        dist.f[dirB   ] = &distributions[dirB   *size_Mat];
+        dist.f[dirNE  ] = &distributions[dirNE  *size_Mat];
+        dist.f[dirSW  ] = &distributions[dirSW  *size_Mat];
+        dist.f[dirSE  ] = &distributions[dirSE  *size_Mat];
+        dist.f[dirNW  ] = &distributions[dirNW  *size_Mat];
+        dist.f[dirTE  ] = &distributions[dirTE  *size_Mat];
+        dist.f[dirBW  ] = &distributions[dirBW  *size_Mat];
+        dist.f[dirBE  ] = &distributions[dirBE  *size_Mat];
+        dist.f[dirTW  ] = &distributions[dirTW  *size_Mat];
+        dist.f[dirTN  ] = &distributions[dirTN  *size_Mat];
+        dist.f[dirBS  ] = &distributions[dirBS  *size_Mat];
+        dist.f[dirBN  ] = &distributions[dirBN  *size_Mat];
+        dist.f[dirTS  ] = &distributions[dirTS  *size_Mat];
+        dist.f[dirREST] = &distributions[dirREST*size_Mat];
+        dist.f[dirTNE ] = &distributions[dirTNE *size_Mat];
+        dist.f[dirTSW ] = &distributions[dirTSW *size_Mat];
+        dist.f[dirTSE ] = &distributions[dirTSE *size_Mat];
+        dist.f[dirTNW ] = &distributions[dirTNW *size_Mat];
+        dist.f[dirBNE ] = &distributions[dirBNE *size_Mat];
+        dist.f[dirBSW ] = &distributions[dirBSW *size_Mat];
+        dist.f[dirBSE ] = &distributions[dirBSE *size_Mat];
+        dist.f[dirBNW ] = &distributions[dirBNW *size_Mat];
+    }
+    else
+    {
+        dist.f[dirW   ] = &distributions[dirE   *size_Mat];
+        dist.f[dirE   ] = &distributions[dirW   *size_Mat];
+        dist.f[dirS   ] = &distributions[dirN   *size_Mat];
+        dist.f[dirN   ] = &distributions[dirS   *size_Mat];
+        dist.f[dirB   ] = &distributions[dirT   *size_Mat];
+        dist.f[dirT   ] = &distributions[dirB   *size_Mat];
+        dist.f[dirSW  ] = &distributions[dirNE  *size_Mat];
+        dist.f[dirNE  ] = &distributions[dirSW  *size_Mat];
+        dist.f[dirNW  ] = &distributions[dirSE  *size_Mat];
+        dist.f[dirSE  ] = &distributions[dirNW  *size_Mat];
+        dist.f[dirBW  ] = &distributions[dirTE  *size_Mat];
+        dist.f[dirTE  ] = &distributions[dirBW  *size_Mat];
+        dist.f[dirTW  ] = &distributions[dirBE  *size_Mat];
+        dist.f[dirBE  ] = &distributions[dirTW  *size_Mat];
+        dist.f[dirBS  ] = &distributions[dirTN  *size_Mat];
+        dist.f[dirTN  ] = &distributions[dirBS  *size_Mat];
+        dist.f[dirTS  ] = &distributions[dirBN  *size_Mat];
+        dist.f[dirBN  ] = &distributions[dirTS  *size_Mat];
+        dist.f[dirREST] = &distributions[dirREST*size_Mat];
+        dist.f[dirBSW ] = &distributions[dirTNE *size_Mat];
+        dist.f[dirBNE ] = &distributions[dirTSW *size_Mat];
+        dist.f[dirBNW ] = &distributions[dirTSE *size_Mat];
+        dist.f[dirBSE ] = &distributions[dirTNW *size_Mat];
+        dist.f[dirTSW ] = &distributions[dirBNE *size_Mat];
+        dist.f[dirTNE ] = &distributions[dirBSW *size_Mat];
+        dist.f[dirTNW ] = &distributions[dirBSE *size_Mat];
+        dist.f[dirTSE ] = &distributions[dirBNW *size_Mat];
+    }
+    return dist;
+}
+
+struct ABC
+{
+    __device__ ABC(uint k,
+        uint kw,   
+        uint ks,   
+        uint kb,   
+        uint ksw,  
+        uint kbw,  
+        uint kbs,  
+        uint kbsw) :
+        k(k),
+        kw (kw),
+        ks (ks),
+        kb (kb),
+        ksw (ksw),
+        kbw (kbw),
+        kbs (kbs),
+        kbsw (kbsw)
+        {}
+
+    __device__ void read(const Distributions27& dist)
+    {
+        distribution.f[VF::LBM::DIR::PZZ] = (dist.f[dirE   ])[k];
+        distribution.f[VF::LBM::DIR::MZZ] = (dist.f[dirW   ])[kw];
+        distribution.f[VF::LBM::DIR::ZPZ] = (dist.f[dirN   ])[k];
+        distribution.f[VF::LBM::DIR::ZMZ] = (dist.f[dirS   ])[ks];
+        distribution.f[VF::LBM::DIR::ZZP] = (dist.f[dirT   ])[k];
+        distribution.f[VF::LBM::DIR::ZZM] = (dist.f[dirB   ])[kb];
+        distribution.f[VF::LBM::DIR::PPZ] = (dist.f[dirNE  ])[k];
+        distribution.f[VF::LBM::DIR::MMZ] = (dist.f[dirSW  ])[ksw];
+        distribution.f[VF::LBM::DIR::PMZ] = (dist.f[dirSE  ])[ks];
+        distribution.f[VF::LBM::DIR::MPZ] = (dist.f[dirNW  ])[kw];
+        distribution.f[VF::LBM::DIR::PZP] = (dist.f[dirTE  ])[k];
+        distribution.f[VF::LBM::DIR::MZM] = (dist.f[dirBW  ])[kbw];
+        distribution.f[VF::LBM::DIR::PZM] = (dist.f[dirBE  ])[kb];
+        distribution.f[VF::LBM::DIR::MZP] = (dist.f[dirTW  ])[kw];
+        distribution.f[VF::LBM::DIR::ZPP] = (dist.f[dirTN  ])[k];
+        distribution.f[VF::LBM::DIR::ZMM] = (dist.f[dirBS  ])[kbs];
+        distribution.f[VF::LBM::DIR::ZPM] = (dist.f[dirBN  ])[kb];
+        distribution.f[VF::LBM::DIR::ZMP] = (dist.f[dirTS  ])[ks];
+        distribution.f[VF::LBM::DIR::PPP] = (dist.f[dirTNE ])[k];
+        distribution.f[VF::LBM::DIR::MPP] = (dist.f[dirTNW ])[kw];
+        distribution.f[VF::LBM::DIR::PMP] = (dist.f[dirTSE ])[ks];
+        distribution.f[VF::LBM::DIR::MMP] = (dist.f[dirTSW ])[ksw];
+        distribution.f[VF::LBM::DIR::PPM] = (dist.f[dirBNE ])[kb];
+        distribution.f[VF::LBM::DIR::MPM] = (dist.f[dirBNE ])[kb];
+        distribution.f[VF::LBM::DIR::PMM] = (dist.f[dirBSE ])[kbs];
+        distribution.f[VF::LBM::DIR::MMM] = (dist.f[dirBSW ])[kbsw];
+        distribution.f[VF::LBM::DIR::ZZZ] = (dist.f[dirREST])[k];
+    }
+
+    __device__ void write(Distributions27& dist)
+    {
+        (dist.f[dirE   ])[k]    = distribution.f[VF::LBM::DIR::PZZ];
+        (dist.f[dirW   ])[kw]   = distribution.f[VF::LBM::DIR::MZZ];
+        (dist.f[dirN   ])[k]    = distribution.f[VF::LBM::DIR::ZPZ];
+        (dist.f[dirS   ])[ks]   = distribution.f[VF::LBM::DIR::ZMZ];
+        (dist.f[dirT   ])[k]    = distribution.f[VF::LBM::DIR::ZZP];
+        (dist.f[dirB   ])[kb]   = distribution.f[VF::LBM::DIR::ZZM];
+        (dist.f[dirNE  ])[k]    = distribution.f[VF::LBM::DIR::PPZ];
+        (dist.f[dirSW  ])[ksw]  = distribution.f[VF::LBM::DIR::MMZ];
+        (dist.f[dirSE  ])[ks]   = distribution.f[VF::LBM::DIR::PMZ];
+        (dist.f[dirNW  ])[kw]   = distribution.f[VF::LBM::DIR::MPZ];
+        (dist.f[dirTE  ])[k]    = distribution.f[VF::LBM::DIR::PZP];
+        (dist.f[dirBW  ])[kbw]  = distribution.f[VF::LBM::DIR::MZM];
+        (dist.f[dirBE  ])[kb]   = distribution.f[VF::LBM::DIR::PZM];
+        (dist.f[dirTW  ])[kw]   = distribution.f[VF::LBM::DIR::MZP];
+        (dist.f[dirTN  ])[k]    = distribution.f[VF::LBM::DIR::ZPP];
+        (dist.f[dirBS  ])[kbs]  = distribution.f[VF::LBM::DIR::ZMM];
+        (dist.f[dirBN  ])[kb]   = distribution.f[VF::LBM::DIR::ZPM];
+        (dist.f[dirTS  ])[ks]   = distribution.f[VF::LBM::DIR::ZMP];
+        (dist.f[dirTNE ])[k]    = distribution.f[VF::LBM::DIR::PPP];
+        (dist.f[dirTNW ])[kw]   = distribution.f[VF::LBM::DIR::MPP];
+        (dist.f[dirTSE ])[ks]   = distribution.f[VF::LBM::DIR::PMP];
+        (dist.f[dirTSW ])[ksw]  = distribution.f[VF::LBM::DIR::MMP];
+        (dist.f[dirBNE ])[kb]   = distribution.f[VF::LBM::DIR::PPM];
+        (dist.f[dirBNE ])[kb]   = distribution.f[VF::LBM::DIR::MPM];
+        (dist.f[dirBSE ])[kbs]  = distribution.f[VF::LBM::DIR::PMM];
+        (dist.f[dirBSW ])[kbsw] = distribution.f[VF::LBM::DIR::MMM];
+        (dist.f[dirREST])[k]    = distribution.f[VF::LBM::DIR::ZZZ];
+    }
+
+    VF::LBM::Distribution27 distribution;
+
+    const uint k;
+    const uint kw;
+    const uint ks;
+    const uint kb;
+    const uint ksw;
+    const uint kbw;
+    const uint kbs;
+    const uint kbsw;
+};
+
+////////////////////////////////////////////////////////////////////////////////
+extern "C" __global__ void Cumulant_K17_LBM_Device_Kernel(
+    real omega,
+    uint* typeOfGridNode,
+    uint* neighborX,
+    uint* neighborY,
+    uint* neighborZ,
+    real* distributions,
+    int size_Mat,
+    int level,
+    real* forces,
+    bool isEvenTimestep)
+{
+    //////////////////////////////////////////////////////////////////////////
+    //! Cumulant K17 Kernel is based on \ref
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
+    //! and \ref
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.07.004"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.07.004 ]</b></a>
+    //!
+    //! The cumulant kernel is executed in the following steps
+    //!
+    ////////////////////////////////////////////////////////////////////////////////
+    //! - Get node index coordinates from thredIdx, blockIdx, blockDim and gridDim.
+    //!
+    const unsigned  x = threadIdx.x; 
+    const unsigned  y = blockIdx.x;  
+    const unsigned  z = blockIdx.y;  
+
+    const unsigned nx = blockDim.x;
+    const unsigned ny = gridDim.x;
+
+    const unsigned k = nx*(ny*z + y) + x;
+
+    //////////////////////////////////////////////////////////////////////////
+    // run for all indices in size_Mat and fluid nodes
+    if ((k < size_Mat) && (typeOfGridNode[k] == GEO_FLUID))
+    {
+        //////////////////////////////////////////////////////////////////////////
+        //! - Read distributions: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm \ref
+        //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a>
+        //!
+        Distributions27 dist = getDistributions27(distributions, size_Mat, isEvenTimestep);
+
+        // ////////////////////////////////////////////////////////////////////////////////
+        // //! - Set neighbor indices (necessary for indirect addressing) 
+        const uint kw   = neighborX[k];
+        const uint ks   = neighborY[k];
+        const uint kb   = neighborZ[k];
+        const uint ksw  = neighborY[kw];
+        const uint kbw  = neighborZ[kw];
+        const uint kbs  = neighborZ[ks];
+        const uint kbsw = neighborZ[ksw];
+
+        ABC abc = {
+            k,
+            kw  ,
+            ks  ,
+            kb  ,
+            ksw ,
+            kbw ,
+            kbs ,
+            kbsw
+        };
+
+        // ////////////////////////////////////////////////////////////////////////////////////
+        // //! - Set local distributions
+        // //!
+        // VF::LBM::Distribution27 distribution_in;
+
+        // distribution_in.f[VF::LBM::DIR::PZZ] = (dist.f[dirE   ])[k];
+        // distribution_in.f[VF::LBM::DIR::MZZ] = (dist.f[dirW   ])[kw];
+        // distribution_in.f[VF::LBM::DIR::ZPZ] = (dist.f[dirN   ])[k];
+        // distribution_in.f[VF::LBM::DIR::ZMZ] = (dist.f[dirS   ])[ks];
+        // distribution_in.f[VF::LBM::DIR::ZZP] = (dist.f[dirT   ])[k];
+        // distribution_in.f[VF::LBM::DIR::ZZM] = (dist.f[dirB   ])[kb];
+        // distribution_in.f[VF::LBM::DIR::PPZ] = (dist.f[dirNE  ])[k];
+        // distribution_in.f[VF::LBM::DIR::MMZ] = (dist.f[dirSW  ])[ksw];
+        // distribution_in.f[VF::LBM::DIR::PMZ] = (dist.f[dirSE  ])[ks];
+        // distribution_in.f[VF::LBM::DIR::MPZ] = (dist.f[dirNW  ])[kw];
+        // distribution_in.f[VF::LBM::DIR::PZP] = (dist.f[dirTE  ])[k];
+        // distribution_in.f[VF::LBM::DIR::MZM] = (dist.f[dirBW  ])[kbw];
+        // distribution_in.f[VF::LBM::DIR::PZM] = (dist.f[dirBE  ])[kb];
+        // distribution_in.f[VF::LBM::DIR::MZP] = (dist.f[dirTW  ])[kw];
+        // distribution_in.f[VF::LBM::DIR::ZPP] = (dist.f[dirTN  ])[k];
+        // distribution_in.f[VF::LBM::DIR::ZMM] = (dist.f[dirBS  ])[kbs];
+        // distribution_in.f[VF::LBM::DIR::ZPM] = (dist.f[dirBN  ])[kb];
+        // distribution_in.f[VF::LBM::DIR::ZMP] = (dist.f[dirTS  ])[ks];
+        // distribution_in.f[VF::LBM::DIR::PPP] = (dist.f[dirTNE ])[k];
+        // distribution_in.f[VF::LBM::DIR::MPP] = (dist.f[dirTNW ])[kw];
+        // distribution_in.f[VF::LBM::DIR::PMP] = (dist.f[dirTSE ])[ks];
+        // distribution_in.f[VF::LBM::DIR::MMP] = (dist.f[dirTSW ])[ksw];
+        // distribution_in.f[VF::LBM::DIR::PPM] = (dist.f[dirBNE ])[kb];
+        // distribution_in.f[VF::LBM::DIR::MPM] = (dist.f[dirBNE ])[kb];
+        // distribution_in.f[VF::LBM::DIR::PMM] = (dist.f[dirBSE ])[kbs];
+        // distribution_in.f[VF::LBM::DIR::MMM] = (dist.f[dirBSW ])[kbsw];
+        // distribution_in.f[VF::LBM::DIR::ZZZ] = (dist.f[dirREST])[k];
+
+        abc.read(dist);
+
+        real vx = forces[0] / pow((double)c2o1, (double)level);
+        real vy = forces[1] / pow((double)c2o1, (double)level);
+        real vz = forces[2] / pow((double)c2o1, (double)level);
+        real forces[3] {vx, vy, vz};
+
+        // VF::LBM::Distribution27 distribution_out = VF::LBM::cumulantChimera(distribution_in,  omega, forces);
+
+        abc.distribution = VF::LBM::cumulantChimera(abc.distribution,  omega, forces);
+
+        abc.write(dist);
+
+        ////////////////////////////////////////////////////////////////////////////////////
+        //! - Write distributions: style of reading and writing the distributions from/to 
+        //! stored arrays dependent on timestep is based on the esoteric twist algorithm
+        //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a>
+        //!
+        // (dist.f[dirE   ])[k]    = distribution_out.f[VF::LBM::DIR::PZZ];
+        // (dist.f[dirW   ])[kw]   = distribution_out.f[VF::LBM::DIR::MZZ];
+        // (dist.f[dirN   ])[k]    = distribution_out.f[VF::LBM::DIR::ZPZ];
+        // (dist.f[dirS   ])[ks]   = distribution_out.f[VF::LBM::DIR::ZMZ];
+        // (dist.f[dirT   ])[k]    = distribution_out.f[VF::LBM::DIR::ZZP];
+        // (dist.f[dirB   ])[kb]   = distribution_out.f[VF::LBM::DIR::ZZM];
+        // (dist.f[dirNE  ])[k]    = distribution_out.f[VF::LBM::DIR::PPZ];
+        // (dist.f[dirSW  ])[ksw]  = distribution_out.f[VF::LBM::DIR::MMZ];
+        // (dist.f[dirSE  ])[ks]   = distribution_out.f[VF::LBM::DIR::PMZ];
+        // (dist.f[dirNW  ])[kw]   = distribution_out.f[VF::LBM::DIR::MPZ];
+        // (dist.f[dirTE  ])[k]    = distribution_out.f[VF::LBM::DIR::PZP];
+        // (dist.f[dirBW  ])[kbw]  = distribution_out.f[VF::LBM::DIR::MZM];
+        // (dist.f[dirBE  ])[kb]   = distribution_out.f[VF::LBM::DIR::PZM];
+        // (dist.f[dirTW  ])[kw]   = distribution_out.f[VF::LBM::DIR::MZP];
+        // (dist.f[dirTN  ])[k]    = distribution_out.f[VF::LBM::DIR::ZPP];
+        // (dist.f[dirBS  ])[kbs]  = distribution_out.f[VF::LBM::DIR::ZMM];
+        // (dist.f[dirBN  ])[kb]   = distribution_out.f[VF::LBM::DIR::ZPM];
+        // (dist.f[dirTS  ])[ks]   = distribution_out.f[VF::LBM::DIR::ZMP];
+        // (dist.f[dirTNE ])[k]    = distribution_out.f[VF::LBM::DIR::PPP];
+        // (dist.f[dirTNW ])[kw]   = distribution_out.f[VF::LBM::DIR::MPP];
+        // (dist.f[dirTSE ])[ks]   = distribution_out.f[VF::LBM::DIR::PMP];
+        // (dist.f[dirTSW ])[ksw]  = distribution_out.f[VF::LBM::DIR::MMP];
+        // (dist.f[dirBNE ])[kb]   = distribution_out.f[VF::LBM::DIR::PPM];
+        // (dist.f[dirBNE ])[kb]   = distribution_out.f[VF::LBM::DIR::MPM];
+        // (dist.f[dirBSE ])[kbs]  = distribution_out.f[VF::LBM::DIR::PMM];
+        // (dist.f[dirBSW ])[kbsw] = distribution_out.f[VF::LBM::DIR::MMM];
+        // (dist.f[dirREST])[k]    = distribution_out.f[VF::LBM::DIR::ZZZ];
+    }
+}
+////////////////////////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////////////////////////
+extern "C" __global__ void Cumulant_K17_LBM_Device_Kernel_old(
+    real omega,
+    uint* typeOfGridNode,
+    uint* neighborX,
+    uint* neighborY,
+    uint* neighborZ,
+    real* distributions,
+    int size_Mat,
+    int level,
+    real* forces,
+    bool isEvenTimestep)
+{
+    //////////////////////////////////////////////////////////////////////////
+    //! Cumulant K17 Kernel is based on \ref
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
+    //! and \ref
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.07.004"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.07.004 ]</b></a>
+    //!
+    //! The cumulant kernel is executed in the following steps
+    //!
+    ////////////////////////////////////////////////////////////////////////////////
+    //! - Get node index coordinates from thredIdx, blockIdx, blockDim and gridDim.
+    //!
+    const unsigned  x = threadIdx.x; 
+    const unsigned  y = blockIdx.x;  
+    const unsigned  z = blockIdx.y;  
+
+    const unsigned nx = blockDim.x;
+    const unsigned ny = gridDim.x;
+
+    const unsigned k = nx*(ny*z + y) + x;
+
+    //////////////////////////////////////////////////////////////////////////
+    // run for all indices in size_Mat and fluid nodes
+    if ((k < size_Mat) && (typeOfGridNode[k] == GEO_FLUID))
+    {
+        //////////////////////////////////////////////////////////////////////////
+        //! - Read distributions: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm \ref
+        //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a>
+        //!
+        Distributions27 dist;
+        if (isEvenTimestep)
+        {
+            dist.f[dirE   ] = &distributions[dirE   *size_Mat];
+            dist.f[dirW   ] = &distributions[dirW   *size_Mat];
+            dist.f[dirN   ] = &distributions[dirN   *size_Mat];
+            dist.f[dirS   ] = &distributions[dirS   *size_Mat];
+            dist.f[dirT   ] = &distributions[dirT   *size_Mat];
+            dist.f[dirB   ] = &distributions[dirB   *size_Mat];
+            dist.f[dirNE  ] = &distributions[dirNE  *size_Mat];
+            dist.f[dirSW  ] = &distributions[dirSW  *size_Mat];
+            dist.f[dirSE  ] = &distributions[dirSE  *size_Mat];
+            dist.f[dirNW  ] = &distributions[dirNW  *size_Mat];
+            dist.f[dirTE  ] = &distributions[dirTE  *size_Mat];
+            dist.f[dirBW  ] = &distributions[dirBW  *size_Mat];
+            dist.f[dirBE  ] = &distributions[dirBE  *size_Mat];
+            dist.f[dirTW  ] = &distributions[dirTW  *size_Mat];
+            dist.f[dirTN  ] = &distributions[dirTN  *size_Mat];
+            dist.f[dirBS  ] = &distributions[dirBS  *size_Mat];
+            dist.f[dirBN  ] = &distributions[dirBN  *size_Mat];
+            dist.f[dirTS  ] = &distributions[dirTS  *size_Mat];
+            dist.f[dirREST] = &distributions[dirREST*size_Mat];
+            dist.f[dirTNE ] = &distributions[dirTNE *size_Mat];
+            dist.f[dirTSW ] = &distributions[dirTSW *size_Mat];
+            dist.f[dirTSE ] = &distributions[dirTSE *size_Mat];
+            dist.f[dirTNW ] = &distributions[dirTNW *size_Mat];
+            dist.f[dirBNE ] = &distributions[dirBNE *size_Mat];
+            dist.f[dirBSW ] = &distributions[dirBSW *size_Mat];
+            dist.f[dirBSE ] = &distributions[dirBSE *size_Mat];
+            dist.f[dirBNW ] = &distributions[dirBNW *size_Mat];
+        }
+        else
+        {
+            dist.f[dirW   ] = &distributions[dirE   *size_Mat];
+            dist.f[dirE   ] = &distributions[dirW   *size_Mat];
+            dist.f[dirS   ] = &distributions[dirN   *size_Mat];
+            dist.f[dirN   ] = &distributions[dirS   *size_Mat];
+            dist.f[dirB   ] = &distributions[dirT   *size_Mat];
+            dist.f[dirT   ] = &distributions[dirB   *size_Mat];
+            dist.f[dirSW  ] = &distributions[dirNE  *size_Mat];
+            dist.f[dirNE  ] = &distributions[dirSW  *size_Mat];
+            dist.f[dirNW  ] = &distributions[dirSE  *size_Mat];
+            dist.f[dirSE  ] = &distributions[dirNW  *size_Mat];
+            dist.f[dirBW  ] = &distributions[dirTE  *size_Mat];
+            dist.f[dirTE  ] = &distributions[dirBW  *size_Mat];
+            dist.f[dirTW  ] = &distributions[dirBE  *size_Mat];
+            dist.f[dirBE  ] = &distributions[dirTW  *size_Mat];
+            dist.f[dirBS  ] = &distributions[dirTN  *size_Mat];
+            dist.f[dirTN  ] = &distributions[dirBS  *size_Mat];
+            dist.f[dirTS  ] = &distributions[dirBN  *size_Mat];
+            dist.f[dirBN  ] = &distributions[dirTS  *size_Mat];
+            dist.f[dirREST] = &distributions[dirREST*size_Mat];
+            dist.f[dirBSW ] = &distributions[dirTNE *size_Mat];
+            dist.f[dirBNE ] = &distributions[dirTSW *size_Mat];
+            dist.f[dirBNW ] = &distributions[dirTSE *size_Mat];
+            dist.f[dirBSE ] = &distributions[dirTNW *size_Mat];
+            dist.f[dirTSW ] = &distributions[dirBNE *size_Mat];
+            dist.f[dirTNE ] = &distributions[dirBSW *size_Mat];
+            dist.f[dirTNW ] = &distributions[dirBSE *size_Mat];
+            dist.f[dirTSE ] = &distributions[dirBNW *size_Mat];
+        }
+        ////////////////////////////////////////////////////////////////////////////////
+        //! - Set neighbor indices (necessary for indirect addressing) 
+        uint kw   = neighborX[k];
+        uint ks   = neighborY[k];
+        uint kb   = neighborZ[k];
+        uint ksw  = neighborY[kw];
+        uint kbw  = neighborZ[kw];
+        uint kbs  = neighborZ[ks];
+        uint kbsw = neighborZ[ksw];
+        ////////////////////////////////////////////////////////////////////////////////////
+        //! - Set local distributions
+        //!
+        real mfcbb = (dist.f[dirE   ])[k];
+        real mfabb = (dist.f[dirW   ])[kw];
+        real mfbcb = (dist.f[dirN   ])[k];
+        real mfbab = (dist.f[dirS   ])[ks];
+        real mfbbc = (dist.f[dirT   ])[k];
+        real mfbba = (dist.f[dirB   ])[kb];
+        real mfccb = (dist.f[dirNE  ])[k];
+        real mfaab = (dist.f[dirSW  ])[ksw];
+        real mfcab = (dist.f[dirSE  ])[ks];
+        real mfacb = (dist.f[dirNW  ])[kw];
+        real mfcbc = (dist.f[dirTE  ])[k];
+        real mfaba = (dist.f[dirBW  ])[kbw];
+        real mfcba = (dist.f[dirBE  ])[kb];
+        real mfabc = (dist.f[dirTW  ])[kw];
+        real mfbcc = (dist.f[dirTN  ])[k];
+        real mfbaa = (dist.f[dirBS  ])[kbs];
+        real mfbca = (dist.f[dirBN  ])[kb];
+        real mfbac = (dist.f[dirTS  ])[ks];
+        real mfbbb = (dist.f[dirREST])[k];
+        real mfccc = (dist.f[dirTNE ])[k];
+        real mfaac = (dist.f[dirTSW ])[ksw];
+        real mfcac = (dist.f[dirTSE ])[ks];
+        real mfacc = (dist.f[dirTNW ])[kw];
+        real mfcca = (dist.f[dirBNE ])[kb];
+        real mfaaa = (dist.f[dirBSW ])[kbsw];
+        real mfcaa = (dist.f[dirBSE ])[kbs];
+        real mfaca = (dist.f[dirBNW ])[kbw];
+
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Calculate density and velocity using pyramid summation for low round-off errors as in Eq. (J1)-(J3) \ref
+    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa  2015.05.001 ]</b></a>
+    //!
+    real drho =
+        ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) +
+        (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) +
+        ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; 
+    real rho = c1o1 + drho;
+    real OOrho = c1o1 / rho;    
+    real vvx = 
+        ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
+        (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
+        (mfcbb - mfabb)) * OOrho;
+    real vvy = 
+        ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
+        (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
+        (mfbcb - mfbab)) * OOrho;
+    real vvz = 
+        ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
+        (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
+        (mfbbc - mfbba)) * OOrho;
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Add half of the acceleration (body force) to the velocity as in Eq. (42) \ref
+    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa  2015.05.001 ]</b></a>
+    //!
+    vvx += forces[0] * c1o2;
+    vvy += forces[1] * c1o2;
+    vvz += forces[2] * c1o2;
+    ////////////////////////////////////////////////////////////////////////////////////
+    // calculate the square of velocities for this lattice node
+    real vx2 = vvx*vvx;
+    real vy2 = vvy*vvy;
+    real vz2 = vvz*vvz;
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Set relaxation limiters for third order cumulants to default value \f$ \lambda=0.001 \f$ according to section 6 in \ref
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    real wadjust;
+    real qudricLimitP = c1o100;
+    real qudricLimitM = c1o100;
+    real qudricLimitD = c1o100;
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Chimera transform from well conditioned distributions to central moments as defined in Appendix J in \ref
+    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa  2015.05.001 ]</b></a>
+    //! see also Eq. (6)-(14) in \ref
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    ////////////////////////////////////////////////////////////////////////////////////
+    // Z - Dir
+    VF::LBM::forwardInverseChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, c36o1, c1o36);
+    VF::LBM::forwardInverseChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::forwardInverseChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c36o1, c1o36);
+    VF::LBM::forwardInverseChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::forwardInverseChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2,  c9o4,  c4o9);
+    VF::LBM::forwardInverseChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::forwardInverseChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c36o1, c1o36);
+    VF::LBM::forwardInverseChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::forwardInverseChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c36o1, c1o36);   
+    ////////////////////////////////////////////////////////////////////////////////////
+    // Y - Dir
+    VF::LBM::forwardInverseChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2,  c6o1,  c1o6);
+    VF::LBM::forwardChimera(            mfaab, mfabb, mfacb, vvy, vy2);
+    VF::LBM::forwardInverseChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c18o1, c1o18);
+    VF::LBM::forwardInverseChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2,  c3o2,  c2o3);
+    VF::LBM::forwardChimera(            mfbab, mfbbb, mfbcb, vvy, vy2);
+    VF::LBM::forwardInverseChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2,  c9o2,  c2o9);
+    VF::LBM::forwardInverseChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2,  c6o1,  c1o6);
+    VF::LBM::forwardChimera(            mfcab, mfcbb, mfccb, vvy, vy2);
+    VF::LBM::forwardInverseChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c18o1, c1o18);   
+    ////////////////////////////////////////////////////////////////////////////////////
+    // X - Dir
+    VF::LBM::forwardInverseChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o1, c1o1);
+    VF::LBM::forwardChimera(            mfaba, mfbba, mfcba, vvx, vx2);
+    VF::LBM::forwardInverseChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c3o1, c1o3);
+    VF::LBM::forwardChimera(            mfaab, mfbab, mfcab, vvx, vx2);
+    VF::LBM::forwardChimera(            mfabb, mfbbb, mfcbb, vvx, vx2);
+    VF::LBM::forwardChimera(            mfacb, mfbcb, mfccb, vvx, vx2);
+    VF::LBM::forwardInverseChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c3o1, c1o3);
+    VF::LBM::forwardChimera(            mfabc, mfbbc, mfcbc, vvx, vx2);
+    VF::LBM::forwardInverseChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c3o1, c1o9); 
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Setting relaxation rates for non-hydrodynamic cumulants (default values). Variable names and equations    according to
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!  => [NAME IN PAPER]=[NAME IN CODE]=[DEFAULT VALUE].
+    //!  - Trace of second order cumulants \f$ C_{200}+C_{020}+C_{002} \f$ used to adjust bulk  viscosity:\f$\omega_2=OxxPyyPzz=1.0 \f$.
+    //!  - Third order cumulants \f$ C_{120}+C_{102}, C_{210}+C_{012}, C_{201}+C_{021} \f$: \f$ \omega_3=OxyyPxzz   \f$ set according to Eq. (111) with simplifications assuming \f$ \omega_2=1.0\f$.
+    //!  - Third order cumulants \f$ C_{120}-C_{102}, C_{210}-C_{012}, C_{201}-C_{021} \f$: \f$ \omega_4 =  OxyyMxzz \f$ set according to Eq. (112) with simplifications assuming \f$ \omega_2 = 1.0\f$.
+    //!  - Third order cumulants \f$ C_{111} \f$: \f$ \omega_5 = Oxyz \f$ set according to Eq. (113) with   simplifications assuming \f$ \omega_2 = 1.0\f$  (modify for different bulk viscosity).
+    //!  - Fourth order cumulants \f$ C_{220}, C_{202}, C_{022}, C_{211}, C_{121}, C_{112} \f$: for simplification  all set to the same default value \f$ \omega_6=\omega_7=\omega_8=O4=1.0 \f$.
+    //!  - Fifth order cumulants \f$ C_{221}, C_{212}, C_{122}\f$: \f$\omega_9=O5=1.0\f$.
+    //!  - Sixth order cumulant \f$ C_{222}\f$: \f$\omega_{10}=O6=1.0\f$.
+    //!
+    ////////////////////////////////////////////////////////////
+    //2.
+    real OxxPyyPzz = c1o1;
+    ////////////////////////////////////////////////////////////
+    //3.
+    real OxyyPxzz = c8o1  * (-c2o1 + omega) * ( c1o1 + c2o1*omega) / (-c8o1 - c14o1*omega + c7o1*omega*omega);
+    real OxyyMxzz = c8o1  * (-c2o1 + omega) * (-c7o1 + c4o1*omega) / (c56o1 - c50o1*omega + c9o1*omega*omega);
+    real Oxyz     = c24o1 * (-c2o1 + omega) * (-c2o1 - c7o1*omega + c3o1*omega*omega) / (c48o1 + c152o1*omega - c130o1*omega*omega + c29o1*omega*omega*omega);
+    ////////////////////////////////////////////////////////////
+    //4.
+    real O4 = c1o1;
+    ////////////////////////////////////////////////////////////
+    //5.
+    real O5 = c1o1;
+    ////////////////////////////////////////////////////////////
+    //6.
+    real O6 = c1o1; 
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (114) and (115) 
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //! with simplifications assuming \f$ \omega_2 = 1.0 \f$ (modify for different bulk viscosity).
+    //!
+    real A = (c4o1 + c2o1*omega - c3o1*omega*omega) / (c2o1 - c7o1*omega + c5o1*omega*omega);
+    real B = (c4o1 + c28o1*omega - c14o1*omega*omega) / (c6o1 - c21o1*omega + c15o1*omega*omega);   
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Compute cumulants from central moments according to Eq. (20)-(23) in
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    ////////////////////////////////////////////////////////////
+    //4.
+    real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + c2o1 * mfbba * mfbab) * OOrho;
+    real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) * OOrho;
+    real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) * OOrho;  
+    real CUMcca = mfcca - (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) * OOrho - c1o9*(drho   * OOrho));
+    real CUMcac = mfcac - (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) * OOrho - c1o9*(drho   * OOrho));
+    real CUMacc = mfacc - (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) * OOrho - c1o9*(drho   * OOrho));
+    ////////////////////////////////////////////////////////////
+    //5.
+    real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba *  mfabc)) + c1o3 * (mfbca + mfbac)) * OOrho;
+    real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba *  mfbac)) + c1o3 * (mfcba + mfabc)) * OOrho;
+    real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb *  mfcba)) + c1o3 * (mfacb + mfcab)) * OOrho;
+    ////////////////////////////////////////////////////////////
+    //6.
+    real CUMccc = mfccc + ((-c4o1 *  mfbbb * mfbbb
+        - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+        - c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
+        - c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) * OOrho
+        + (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+        + c2o1 * (mfcaa * mfaca * mfaac)
+        + c16o1 *  mfbba * mfbab * mfabb) * OOrho * OOrho
+        - c1o3 * (mfacc + mfcac + mfcca) * OOrho
+        - c1o9 * (mfcaa + mfaca + mfaac) * OOrho
+        + (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+        + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) * OOrho * OOrho  * c2o3
+        + c1o27*((drho * drho - drho) * OOrho * OOrho));    
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Compute linear combinations of second and third order cumulants
+    //!
+    ////////////////////////////////////////////////////////////
+    //2.
+    real mxxPyyPzz = mfcaa + mfaca + mfaac;
+    real mxxMyy = mfcaa - mfaca;
+    real mxxMzz = mfcaa - mfaac;
+    ////////////////////////////////////////////////////////////
+    //3.
+    real mxxyPyzz = mfcba + mfabc;
+    real mxxyMyzz = mfcba - mfabc;  
+    real mxxzPyyz = mfcab + mfacb;
+    real mxxzMyyz = mfcab - mfacb;  
+    real mxyyPxzz = mfbca + mfbac;
+    real mxyyMxzz = mfbca - mfbac;  
+    ////////////////////////////////////////////////////////////////////////////////////
+    //incl. correction
+    ////////////////////////////////////////////////////////////
+    //! - Compute velocity  gradients from second order cumulants according to Eq. (27)-(32)
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //! Further explanations of the correction in viscosity in Appendix H of
+    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa  2015.05.001 ]</b></a>
+    //! Note that the division by rho is omitted here as we need rho times the gradients later.
+    //!
+    real Dxy = -c3o1*omega*mfbba;
+    real Dxz = -c3o1*omega*mfbab;
+    real Dyz = -c3o1*omega*mfabb;
+    real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+    real dyuy = dxux + omega * c3o2 * mxxMyy;
+    real dzuz = dxux + omega * c3o2 * mxxMzz;
+    ////////////////////////////////////////////////////////////
+    //! - Relaxation of second order cumulants with correction terms according to Eq. (33)-(35) in
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz) - c3o1 * (c1o1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2  * dzuz);
+    mxxMyy    += omega * (-mxxMyy) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy);
+    mxxMzz    += omega * (-mxxMzz) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz);   
+    ////////////////////////////////////////////////////////////////////////////////////
+    ////no correction
+    //mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz);
+    //mxxMyy += -(-omega) * (-mxxMyy);
+    //mxxMzz += -(-omega) * (-mxxMzz);
+    //////////////////////////////////////////////////////////////////////////
+    mfabb += omega * (-mfabb);
+    mfbab += omega * (-mfbab);
+    mfbba += omega * (-mfbba);  
+    ////////////////////////////////////////////////////////////////////////////////////
+    //relax
+    //////////////////////////////////////////////////////////////////////////
+    // incl. limiter
+    //! - Relaxation of third order cumulants including limiter according to Eq. (116)-(123)
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    wadjust   = Oxyz + (c1o1 - Oxyz)*abs(mfbbb) / (abs(mfbbb) + qudricLimitD);
+    mfbbb    += wadjust * (-mfbbb);
+    wadjust   = OxyyPxzz + (c1o1 - OxyyPxzz)*abs(mxxyPyzz) / (abs(mxxyPyzz) + qudricLimitP);
+    mxxyPyzz += wadjust * (-mxxyPyzz);
+    wadjust   = OxyyMxzz + (c1o1 - OxyyMxzz)*abs(mxxyMyzz) / (abs(mxxyMyzz) + qudricLimitM);
+    mxxyMyzz += wadjust * (-mxxyMyzz);
+    wadjust   = OxyyPxzz + (c1o1 - OxyyPxzz)*abs(mxxzPyyz) / (abs(mxxzPyyz) + qudricLimitP);
+    mxxzPyyz += wadjust * (-mxxzPyyz);
+    wadjust   = OxyyMxzz + (c1o1 - OxyyMxzz)*abs(mxxzMyyz) / (abs(mxxzMyyz) + qudricLimitM);
+    mxxzMyyz += wadjust * (-mxxzMyyz);
+    wadjust   = OxyyPxzz + (c1o1 - OxyyPxzz)*abs(mxyyPxzz) / (abs(mxyyPxzz) + qudricLimitP);
+    mxyyPxzz += wadjust * (-mxyyPxzz);
+    wadjust   = OxyyMxzz + (c1o1 - OxyyMxzz)*abs(mxyyMxzz) / (abs(mxyyMxzz) + qudricLimitM);
+    mxyyMxzz += wadjust * (-mxyyMxzz);
+    //////////////////////////////////////////////////////////////////////////
+    // no limiter
+    //mfbbb += OxyyMxzz * (-mfbbb);
+    //mxxyPyzz += OxyyPxzz * (-mxxyPyzz);
+    //mxxyMyzz += OxyyMxzz * (-mxxyMyzz);
+    //mxxzPyyz += OxyyPxzz * (-mxxzPyyz);
+    //mxxzMyyz += OxyyMxzz * (-mxxzMyyz);
+    //mxyyPxzz += OxyyPxzz * (-mxyyPxzz);
+    //mxyyMxzz += OxyyMxzz * (-mxyyMxzz);   
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Compute inverse linear combinations of second and third order cumulants
+    //!
+    mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz);
+    mfaca = c1o3 * (-c2o1*  mxxMyy + mxxMzz + mxxPyyPzz);
+    mfaac = c1o3 * (mxxMyy - c2o1* mxxMzz + mxxPyyPzz); 
+    mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2;
+    mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2;
+    mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2;
+    mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2;
+    mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2;
+    mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2;
+    //////////////////////////////////////////////////////////////////////////  
+    //////////////////////////////////////////////////////////////////////////
+    //4.
+    // no limiter
+    //! - Relax fourth order cumulants to modified equilibrium for fourth order convergence of diffusion according  to Eq. (43)-(48)
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    CUMacc = -O4*(c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMacc);
+    CUMcac = -O4*(c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMcac);
+    CUMcca = -O4*(c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * A + (c1o1 - O4) * (CUMcca);
+    CUMbbc = -O4*(c1o1 / omega - c1o2) * Dxy           * c1o3 * B + (c1o1 - O4) * (CUMbbc);
+    CUMbcb = -O4*(c1o1 / omega - c1o2) * Dxz           * c1o3 * B + (c1o1 - O4) * (CUMbcb);
+    CUMcbb = -O4*(c1o1 / omega - c1o2) * Dyz           * c1o3 * B + (c1o1 - O4) * (CUMcbb); 
+    //////////////////////////////////////////////////////////////////////////
+    //5.
+    CUMbcc += O5 * (-CUMbcc);
+    CUMcbc += O5 * (-CUMcbc);
+    CUMccb += O5 * (-CUMccb);   
+    //////////////////////////////////////////////////////////////////////////
+    //6.
+    CUMccc += O6 * (-CUMccc);   
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Compute central moments from post collision cumulants according to Eq. (53)-(56) in
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //! 
+    //////////////////////////////////////////////////////////////////////////
+    //4.
+    mfcbb = CUMcbb + c1o3*((c3o1*mfcaa + c1o1) * mfabb + c6o1 * mfbba * mfbab) * OOrho;
+    mfbcb = CUMbcb + c1o3*((c3o1*mfaca + c1o1) * mfbab + c6o1 * mfbba * mfabb) * OOrho;
+    mfbbc = CUMbbc + c1o3*((c3o1*mfaac + c1o1) * mfbba + c6o1 * mfbab * mfabb) * OOrho; 
+    mfcca = CUMcca + (((mfcaa * mfaca + c2o1 * mfbba * mfbba)*c9o1 + c3o1 * (mfcaa + mfaca)) * OOrho - (drho *  OOrho))*c1o9;
+    mfcac = CUMcac + (((mfcaa * mfaac + c2o1 * mfbab * mfbab)*c9o1 + c3o1 * (mfcaa + mfaac)) * OOrho - (drho *  OOrho))*c1o9;
+    mfacc = CUMacc + (((mfaac * mfaca + c2o1 * mfabb * mfabb)*c9o1 + c3o1 * (mfaac + mfaca)) * OOrho - (drho *  OOrho))*c1o9; 
+    //////////////////////////////////////////////////////////////////////////
+    //5.
+    mfbcc = CUMbcc + c1o3 *(c3o1*(mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb +    mfbba * mfabc)) + (mfbca + mfbac)) * OOrho;
+    mfcbc = CUMcbc + c1o3 *(c3o1*(mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab +    mfbba * mfbac)) + (mfcba + mfabc)) * OOrho;
+    mfccb = CUMccb + c1o3 *(c3o1*(mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca +    mfabb * mfcba)) + (mfacb + mfcab)) * OOrho; 
+    //////////////////////////////////////////////////////////////////////////
+    //6.
+    mfccc =	CUMccc - ((-c4o1 *  mfbbb * mfbbb
+            - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+            - c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
+            - c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) * OOrho
+            + (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+                + c2o1 * (mfcaa * mfaca * mfaac)
+                + c16o1 *  mfbba * mfbab * mfabb) * OOrho * OOrho
+            - c1o3 * (mfacc + mfcac + mfcca) * OOrho
+            - c1o9 * (mfcaa + mfaca + mfaac) * OOrho
+            + (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+                + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) * OOrho * OOrho * c2o3
+            + c1o27*((drho * drho - drho) * OOrho * OOrho));    
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! -  Add acceleration (body force) to first order cumulants according to Eq. (85)-(87) in
+    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa  2015.05.001 ]</b></a>
+    //!
+    mfbaa = -mfbaa;
+    mfaba = -mfaba;
+    mfaab = -mfaab; 
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Chimera transform from central moments to well conditioned distributions as defined in Appendix J in
+    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa  2015.05.001 ]</b></a>
+    //! see also Eq. (88)-(96) in
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    ////////////////////////////////////////////////////////////////////////////////////
+    // X - Dir
+    VF::LBM::backwardInverseChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o1, c1o1);
+    VF::LBM::backwardChimera(            mfaba, mfbba, mfcba, vvx, vx2);
+    VF::LBM::backwardInverseChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c3o1, c1o3);
+    VF::LBM::backwardChimera(            mfaab, mfbab, mfcab, vvx, vx2);
+    VF::LBM::backwardChimera(            mfabb, mfbbb, mfcbb, vvx, vx2);
+    VF::LBM::backwardChimera(            mfacb, mfbcb, mfccb, vvx, vx2);
+    VF::LBM::backwardInverseChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c3o1, c1o3);
+    VF::LBM::backwardChimera(            mfabc, mfbbc, mfcbc, vvx, vx2);
+    VF::LBM::backwardInverseChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c9o1, c1o9);    
+    ////////////////////////////////////////////////////////////////////////////////////
+    // Y - Dir
+    VF::LBM::backwardInverseChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2,  c6o1,  c1o6);
+    VF::LBM::backwardChimera(            mfaab, mfabb, mfacb, vvy, vy2);
+    VF::LBM::backwardInverseChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c18o1, c1o18);
+    VF::LBM::backwardInverseChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2,  c3o2,  c2o3);
+    VF::LBM::backwardChimera(            mfbab, mfbbb, mfbcb, vvy, vy2);
+    VF::LBM::backwardInverseChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2,  c9o2,  c2o9);
+    VF::LBM::backwardInverseChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2,  c6o1,  c1o6);
+    VF::LBM::backwardChimera(            mfcab, mfcbb, mfccb, vvy, vy2);
+    VF::LBM::backwardInverseChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c18o1, c1o18);  
+    ////////////////////////////////////////////////////////////////////////////////////
+    // Z - Dir
+    VF::LBM::backwardInverseChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, c36o1, c1o36);
+    VF::LBM::backwardInverseChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::backwardInverseChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c36o1, c1o36);
+    VF::LBM::backwardInverseChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::backwardInverseChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2,  c9o4,  c4o9);
+    VF::LBM::backwardInverseChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::backwardInverseChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c36o1, c1o36);
+    VF::LBM::backwardInverseChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::backwardInverseChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c36o1, c1o36);
+
+        ////////////////////////////////////////////////////////////////////////////////////
+        //! - Write distributions: style of reading and writing the distributions from/to 
+        //! stored arrays dependent on timestep is based on the esoteric twist algorithm
+        //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a>
+        //!
+        (dist.f[dirE   ])[k   ] = mfabb;
+        (dist.f[dirW   ])[kw  ] = mfcbb;
+        (dist.f[dirN   ])[k   ] = mfbab;
+        (dist.f[dirS   ])[ks  ] = mfbcb;
+        (dist.f[dirT   ])[k   ] = mfbba;
+        (dist.f[dirB   ])[kb  ] = mfbbc;
+        (dist.f[dirNE  ])[k   ] = mfaab;
+        (dist.f[dirSW  ])[ksw ] = mfccb;
+        (dist.f[dirSE  ])[ks  ] = mfacb;
+        (dist.f[dirNW  ])[kw  ] = mfcab;
+        (dist.f[dirTE  ])[k   ] = mfaba;
+        (dist.f[dirBW  ])[kbw ] = mfcbc;
+        (dist.f[dirBE  ])[kb  ] = mfabc;
+        (dist.f[dirTW  ])[kw  ] = mfcba;
+        (dist.f[dirTN  ])[k   ] = mfbaa;
+        (dist.f[dirBS  ])[kbs ] = mfbcc;
+        (dist.f[dirBN  ])[kb  ] = mfbac;
+        (dist.f[dirTS  ])[ks  ] = mfbca;
+        (dist.f[dirREST])[k   ] = mfbbb;
+        (dist.f[dirTNE ])[k   ] = mfaaa;
+        (dist.f[dirTSE ])[ks  ] = mfaca;
+        (dist.f[dirBNE ])[kb  ] = mfaac;
+        (dist.f[dirBSE ])[kbs ] = mfacc;
+        (dist.f[dirTNW ])[kw  ] = mfcaa;
+        (dist.f[dirTSW ])[ksw ] = mfcca;
+        (dist.f[dirBNW ])[kbw ] = mfcac;
+        (dist.f[dirBSW ])[kbsw] = mfccc;
+    }
+}
+////////////////////////////////////////////////////////////////////////////////
 
 
 
 ////////////////////////////////////////////////////////////////////////////////
 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)
+    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 = c1o1 + drho;
-			////////////////////////////////////////////////////////////////////////////////////
-			real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
-				(((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
-				(mfcbb - mfabb)) / rho;
-			real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
-				(((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
-				(mfbcb - mfbab)) / rho;
-			real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
-				(((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
-				(mfbbc - mfbba)) / rho;
-			////////////////////////////////////////////////////////////////////////////////////
-			//the force be with you
-			real fx = forces[0] / (pow((double)c2o1, (double)level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
-			real fy = forces[1] / (pow((double)c2o1, (double)level)); //zero;
-			real fz = forces[2] / (pow((double)c2o1, (double)level)); //zero;
-			vvx += fx*c1o2;
-			vvy += fy*c1o2;
-			vvz += fz*c1o2;
-			////////////////////////////////////////////////////////////////////////////////////
-			//real omega = omega_in;
-			////////////////////////////////////////////////////////////////////////////////////
-			//fast
-			//real oMdrho = c1o1; // comp special
-			//real m0, m1, m2;
-			real vx2;
-			real vy2;
-			real vz2;
-			vx2 = vvx*vvx;
-			vy2 = vvy*vvy;
-			vz2 = vvz*vvz;
-			////////////////////////////////////////////////////////////////////////////////////
-			//real wadjust;
-			//real qudricLimitP = c1o100;// * 0.0001f;
-			//real qudricLimitM = c1o100;// * 0.0001f;
-			//real qudricLimitD = c1o100;// * 0.001f;
-			//real s9 = minusomega;
-			//test
-			//s9 = 0.;
-
-
-			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			real EQcbb = c0o1;
-			real EQabb = c0o1;
-			real EQbcb = c0o1;
-			real EQbab = c0o1;
-			real EQbbc = c0o1;
-			real EQbba = c0o1;
-			real EQccb = c0o1;
-			real EQaab = c0o1;
-			real EQcab = c0o1;
-			real EQacb = c0o1;
-			real EQcbc = c0o1;
-			real EQaba = c0o1;
-			real EQcba = c0o1;
-			real EQabc = c0o1;
-			real EQbcc = c0o1;
-			real EQbaa = c0o1;
-			real EQbca = c0o1;
-			real EQbac = c0o1;
-			real EQbbb = c0o1;
-			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;
-			////////////////////////////////////////////////////////////////////////////////////
-			VF::LBM::backwardChimeraWithK(EQaaa, EQaab, EQaac, vvz, vz2, c1o1);
-			VF::LBM::backwardChimeraWithK(EQaca, EQacb, EQacc, vvz, vz2, c1o3);
-			///////////////////////////////////////////////////////////
-			EQcaa = EQaca; EQcab = EQacb; EQcac = EQacc;
-			///////////////////////////////////////////////////////////
-			VF::LBM::backwardChimeraWithK(EQcca, EQccb, EQccc, vvz, vz2, c1o9);
-
-			VF::LBM::backwardChimeraWithK(EQaaa, EQaba, EQaca, vvy, vy2, c1o6);
-			VF::LBM::backwardChimeraWithK(EQaab, EQabb, EQacb, vvy, vy2, c2o3);
-			VF::LBM::backwardChimeraWithK(EQaac, EQabc, EQacc, vvy, vy2, c1o6);
-			VF::LBM::backwardChimeraWithK(EQcaa, EQcba, EQcca, vvy, vy2, c1o18);
-			VF::LBM::backwardChimeraWithK(EQcab, EQcbb, EQccb, vvy, vy2, c2o9);
-			VF::LBM::backwardChimeraWithK(EQcac, EQcbc, EQccc, vvy, vy2, c1o18);
-
-			VF::LBM::backwardChimeraWithK(EQaaa, EQbaa, EQcaa, vvx, vx2, c1o36);
-			VF::LBM::backwardChimeraWithK(EQaab, EQbab, EQcab, vvx, vx2, c1o9);
-			VF::LBM::backwardChimeraWithK(EQaac, EQbac, EQcac, vvx, vx2, c1o36);
-			VF::LBM::backwardChimeraWithK(EQaba, EQbba, EQcba, vvx, vx2, c1o9);
-			VF::LBM::backwardChimeraWithK(EQabb, EQbbb, EQcbb, vvx, vx2, c4o9);
-			VF::LBM::backwardChimeraWithK(EQabc, EQbbc, EQcbc, vvx, vx2, c1o9);
-			VF::LBM::backwardChimeraWithK(EQaca, EQbca, EQcca, vvx, vx2, c1o36);
-			VF::LBM::backwardChimeraWithK(EQacb, EQbcb, EQccb, vvx, vx2, c1o9);
-			VF::LBM::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
-			////////////////////////////////////////////////////////////////////////////////////
-			VF::LBM::forwardChimera(mfaaa, mfaab, mfaac, vvz, vz2);
-			VF::LBM::forwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
-			VF::LBM::forwardChimera(mfaca, mfacb, mfacc, vvz, vz2);
-			VF::LBM::forwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
-			VF::LBM::forwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
-			VF::LBM::forwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
-			VF::LBM::forwardChimera(mfcaa, mfcab, mfcac, vvz, vz2);
-			VF::LBM::forwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
-			VF::LBM::forwardChimera(mfcca, mfccb, mfccc, vvz, vz2);
-
-			VF::LBM::forwardChimera(mfaaa, mfaba, mfaca, vvy, vy2);
-			VF::LBM::forwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
-			VF::LBM::forwardChimera(mfaac, mfabc, mfacc, vvy, vy2);
-			VF::LBM::forwardChimera(mfbaa, mfbba, mfbca, vvy, vy2);
-			VF::LBM::forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
-			VF::LBM::forwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2);
-			VF::LBM::forwardChimera(mfcaa, mfcba, mfcca, vvy, vy2);
-			VF::LBM::forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
-			VF::LBM::forwardChimera(mfcac, mfcbc, mfccc, vvy, vy2);
-
-			VF::LBM::forwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2);
-			VF::LBM::forwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
-			VF::LBM::forwardChimera(mfaac, mfbac, mfcac, vvx, vx2);
-			VF::LBM::forwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
-			VF::LBM::forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
-			VF::LBM::forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
-			VF::LBM::forwardChimera(mfaca, mfbca, mfcca, vvx, vx2);
-			VF::LBM::forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
-			VF::LBM::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 = c1o1; //omega; // one;	//set the bulk viscosity one is high / two is very low and zero is (too) high
-
-			////////////////////////////////////////////////////////////
-			//3.
-			//////////////////////////////
-			real OxyyPxzz = c1o1;
-			real OxyyMxzz = c1o1;
-			//real Oxyz = c1o1;
-			////////////////////////////////////////////////////////////
-			//4.
-			//////////////////////////////
-			real O4 = c1o1;
-			////////////////////////////////////////////////////////////
-			//5.
-			//////////////////////////////
-			real O5 = c1o1;
-			////////////////////////////////////////////////////////////
-			//6.
-			//////////////////////////////
-			real O6 = c1o1;
-			////////////////////////////////////////////////////////////
-
-
-			//central moments to cumulants
-			//4.
-			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + c2o1 * mfbba * mfbab) / rho;
-			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) / rho;
-			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) / rho;
-
-			real CUMcca = mfcca - (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
-			real CUMcac = mfcac - (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
-			real CUMacc = mfacc - (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
-
-			//5.
-			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
-			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
-			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
-
-			//6.
-
-			real CUMccc = mfccc + ((-c4o1 *  mfbbb * mfbbb
-				- (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-				- c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-				- c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
-				+ (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-					+ c2o1 * (mfcaa * mfaca * mfaac)
-					+ c16o1 *  mfbba * mfbab * mfabb) / (rho * rho)
-				- c1o3 * (mfacc + mfcac + mfcca) / rho
-				- c1o9 * (mfcaa + mfaca + mfaac) / rho
-				+ (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-					+ (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3
-				+ c1o27*((drho * drho - drho) / (rho*rho)));
-
-
-
-
-			//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) - c3o1 * (c1o1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
-				mxxMyy += omega * (-mxxMyy) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy);
-				mxxMzz += omega * (-mxxMzz) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz);
-
-			}
-			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			////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 * (-c2o1*  mxxMyy + mxxMzz + mxxPyyPzz);
-			mfaac = c1o3 * (mxxMyy - c2o1* mxxMzz + mxxPyyPzz);
-
-			//3.
-			// linear combinations
-
-			real mxxyPyzz = mfcba + mfabc;
-			real mxxyMyzz = mfcba - mfabc;
-
-			real mxxzPyyz = mfcab + mfacb;
-			real mxxzMyyz = mfcab - mfacb;
-
-			real mxyyPxzz = mfbca + mfbac;
-			real mxyyMxzz = mfbca - mfbac;
-
-			//relax
-			//////////////////////////////////////////////////////////////////////////
-			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 + c2o1 * mfbba * mfbab) / rho;
-			mfbcb = CUMbcb + ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) / rho;
-			mfbbc = CUMbbc + ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) / rho;
-
-			mfcca = CUMcca + (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
-			mfcac = CUMcac + (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
-			mfacc = CUMacc + (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
-
-			//5.
-			mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
-			mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
-			mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
-
-			//6.
-			mfccc = CUMccc - ((-c4o1 *  mfbbb * mfbbb
-				- (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-				- c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-				- c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
-				+ (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-					+ c2o1 * (mfcaa * mfaca * mfaac)
-					+ c16o1 *  mfbba * mfbab * mfabb) / (rho * rho)
-				- c1o3 * (mfacc + mfcac + mfcca) / rho
-				- c1o9 * (mfcaa + mfaca + mfaac) / rho
-				+ (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-					+ (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3
-				+ c1o27*((drho * drho - drho) / (rho*rho)));
-
-			////////////////////////////////////////////////////////////////////////////////////
-			//the force be with you
-			mfbaa = -mfbaa;
-			mfaba = -mfaba;
-			mfaab = -mfaab;
-			////////////////////////////////////////////////////////////////////////////////////
-
-
-			////////////////////////////////////////////////////////////////////////////////////
-			//back
-			////////////////////////////////////////////////////////////////////////////////////
-			VF::LBM::backwardChimera(mfaaa, mfaab, mfaac, vvz, vz2);
-			VF::LBM::backwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
-			VF::LBM::backwardChimera(mfaca, mfacb, mfacc, vvz, vz2);
-			VF::LBM::backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
-			VF::LBM::backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
-			VF::LBM::backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
-			VF::LBM::backwardChimera(mfcaa, mfcab, mfcac, vvz, vz2);
-			VF::LBM::backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
-			VF::LBM::backwardChimera(mfcca, mfccb, mfccc, vvz, vz2);
-
-			VF::LBM::backwardChimera(mfaaa, mfaba, mfaca, vvy, vy2);
-			VF::LBM::backwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
-			VF::LBM::backwardChimera(mfaac, mfabc, mfacc, vvy, vy2);
-			VF::LBM::backwardChimera(mfbaa, mfbba, mfbca, vvy, vy2);
-			VF::LBM::backwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
-			VF::LBM::backwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2);
-			VF::LBM::backwardChimera(mfcaa, mfcba, mfcca, vvy, vy2);
-			VF::LBM::backwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
-			VF::LBM::backwardChimera(mfcac, mfcbc, mfccc, vvy, vy2);
-
-			VF::LBM::backwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2);
-			VF::LBM::backwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
-			VF::LBM::backwardChimera(mfaac, mfbac, mfcac, vvx, vx2);
-			VF::LBM::backwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
-			VF::LBM::backwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
-			VF::LBM::backwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
-			VF::LBM::backwardChimera(mfaca, mfbca, mfcca, vvx, vx2);
-			VF::LBM::backwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
-			VF::LBM::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]
-										////////////////////////////////////////////////////////////////////////////////////
-		}
-	}
+    ////////////////////////////////////////////////////////////////////////////////
+    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 = c1o1 + drho;
+            ////////////////////////////////////////////////////////////////////////////////////
+            real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
+                (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
+                (mfcbb - mfabb)) / rho;
+            real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
+                (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
+                (mfbcb - mfbab)) / rho;
+            real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
+                (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
+                (mfbbc - mfbba)) / rho;
+            ////////////////////////////////////////////////////////////////////////////////////
+            //the force be with you
+            real fx = forces[0] / (pow((double)c2o1, (double)level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+            real fy = forces[1] / (pow((double)c2o1, (double)level)); //zero;
+            real fz = forces[2] / (pow((double)c2o1, (double)level)); //zero;
+            vvx += fx*c1o2;
+            vvy += fy*c1o2;
+            vvz += fz*c1o2;
+            ////////////////////////////////////////////////////////////////////////////////////
+            //real omega = omega_in;
+            ////////////////////////////////////////////////////////////////////////////////////
+            //fast
+            //real oMdrho = c1o1; // comp special
+            //real m0, m1, m2;
+            real vx2;
+            real vy2;
+            real vz2;
+            vx2 = vvx*vvx;
+            vy2 = vvy*vvy;
+            vz2 = vvz*vvz;
+            ////////////////////////////////////////////////////////////////////////////////////
+            //real wadjust;
+            //real qudricLimitP = c1o100;// * 0.0001f;
+            //real qudricLimitM = c1o100;// * 0.0001f;
+            //real qudricLimitD = c1o100;// * 0.001f;
+            //real s9 = minusomega;
+            //test
+            //s9 = 0.;
+
+
+            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+            real EQcbb = c0o1;
+            real EQabb = c0o1;
+            real EQbcb = c0o1;
+            real EQbab = c0o1;
+            real EQbbc = c0o1;
+            real EQbba = c0o1;
+            real EQccb = c0o1;
+            real EQaab = c0o1;
+            real EQcab = c0o1;
+            real EQacb = c0o1;
+            real EQcbc = c0o1;
+            real EQaba = c0o1;
+            real EQcba = c0o1;
+            real EQabc = c0o1;
+            real EQbcc = c0o1;
+            real EQbaa = c0o1;
+            real EQbca = c0o1;
+            real EQbac = c0o1;
+            real EQbbb = c0o1;
+            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;
+            ////////////////////////////////////////////////////////////////////////////////////
+            VF::LBM::backwardChimeraWithK(EQaaa, EQaab, EQaac, vvz, vz2, c1o1);
+            VF::LBM::backwardChimeraWithK(EQaca, EQacb, EQacc, vvz, vz2, c1o3);
+            ///////////////////////////////////////////////////////////
+            EQcaa = EQaca; EQcab = EQacb; EQcac = EQacc;
+            ///////////////////////////////////////////////////////////
+            VF::LBM::backwardChimeraWithK(EQcca, EQccb, EQccc, vvz, vz2, c1o9);
+
+            VF::LBM::backwardChimeraWithK(EQaaa, EQaba, EQaca, vvy, vy2, c1o6);
+            VF::LBM::backwardChimeraWithK(EQaab, EQabb, EQacb, vvy, vy2, c2o3);
+            VF::LBM::backwardChimeraWithK(EQaac, EQabc, EQacc, vvy, vy2, c1o6);
+            VF::LBM::backwardChimeraWithK(EQcaa, EQcba, EQcca, vvy, vy2, c1o18);
+            VF::LBM::backwardChimeraWithK(EQcab, EQcbb, EQccb, vvy, vy2, c2o9);
+            VF::LBM::backwardChimeraWithK(EQcac, EQcbc, EQccc, vvy, vy2, c1o18);
+
+            VF::LBM::backwardChimeraWithK(EQaaa, EQbaa, EQcaa, vvx, vx2, c1o36);
+            VF::LBM::backwardChimeraWithK(EQaab, EQbab, EQcab, vvx, vx2, c1o9);
+            VF::LBM::backwardChimeraWithK(EQaac, EQbac, EQcac, vvx, vx2, c1o36);
+            VF::LBM::backwardChimeraWithK(EQaba, EQbba, EQcba, vvx, vx2, c1o9);
+            VF::LBM::backwardChimeraWithK(EQabb, EQbbb, EQcbb, vvx, vx2, c4o9);
+            VF::LBM::backwardChimeraWithK(EQabc, EQbbc, EQcbc, vvx, vx2, c1o9);
+            VF::LBM::backwardChimeraWithK(EQaca, EQbca, EQcca, vvx, vx2, c1o36);
+            VF::LBM::backwardChimeraWithK(EQacb, EQbcb, EQccb, vvx, vx2, c1o9);
+            VF::LBM::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
+            ////////////////////////////////////////////////////////////////////////////////////
+            VF::LBM::forwardChimera(mfaaa, mfaab, mfaac, vvz, vz2);
+            VF::LBM::forwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
+            VF::LBM::forwardChimera(mfaca, mfacb, mfacc, vvz, vz2);
+            VF::LBM::forwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
+            VF::LBM::forwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
+            VF::LBM::forwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
+            VF::LBM::forwardChimera(mfcaa, mfcab, mfcac, vvz, vz2);
+            VF::LBM::forwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
+            VF::LBM::forwardChimera(mfcca, mfccb, mfccc, vvz, vz2);
+
+            VF::LBM::forwardChimera(mfaaa, mfaba, mfaca, vvy, vy2);
+            VF::LBM::forwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
+            VF::LBM::forwardChimera(mfaac, mfabc, mfacc, vvy, vy2);
+            VF::LBM::forwardChimera(mfbaa, mfbba, mfbca, vvy, vy2);
+            VF::LBM::forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
+            VF::LBM::forwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2);
+            VF::LBM::forwardChimera(mfcaa, mfcba, mfcca, vvy, vy2);
+            VF::LBM::forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
+            VF::LBM::forwardChimera(mfcac, mfcbc, mfccc, vvy, vy2);
+
+            VF::LBM::forwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2);
+            VF::LBM::forwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
+            VF::LBM::forwardChimera(mfaac, mfbac, mfcac, vvx, vx2);
+            VF::LBM::forwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
+            VF::LBM::forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
+            VF::LBM::forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
+            VF::LBM::forwardChimera(mfaca, mfbca, mfcca, vvx, vx2);
+            VF::LBM::forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
+            VF::LBM::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 = c1o1; //omega; // one;	//set the bulk viscosity one is high / two is very low and zero is (too) high
+
+            ////////////////////////////////////////////////////////////
+            //3.
+            //////////////////////////////
+            real OxyyPxzz = c1o1;
+            real OxyyMxzz = c1o1;
+            //real Oxyz = c1o1;
+            ////////////////////////////////////////////////////////////
+            //4.
+            //////////////////////////////
+            real O4 = c1o1;
+            ////////////////////////////////////////////////////////////
+            //5.
+            //////////////////////////////
+            real O5 = c1o1;
+            ////////////////////////////////////////////////////////////
+            //6.
+            //////////////////////////////
+            real O6 = c1o1;
+            ////////////////////////////////////////////////////////////
+
+
+            //central moments to cumulants
+            //4.
+            real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + c2o1 * mfbba * mfbab) / rho;
+            real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) / rho;
+            real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) / rho;
+
+            real CUMcca = mfcca - (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
+            real CUMcac = mfcac - (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+            real CUMacc = mfacc - (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+            //5.
+            real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
+            real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
+            real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
+
+            //6.
+
+            real CUMccc = mfccc + ((-c4o1 *  mfbbb * mfbbb
+                - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+                - c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
+                - c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
+                + (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+                    + c2o1 * (mfcaa * mfaca * mfaac)
+                    + c16o1 *  mfbba * mfbab * mfabb) / (rho * rho)
+                - c1o3 * (mfacc + mfcac + mfcca) / rho
+                - c1o9 * (mfcaa + mfaca + mfaac) / rho
+                + (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+                    + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3
+                + c1o27*((drho * drho - drho) / (rho*rho)));
+
+
+
+
+            //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) - c3o1 * (c1o1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
+                mxxMyy += omega * (-mxxMyy) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy);
+                mxxMzz += omega * (-mxxMzz) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz);
+
+            }
+            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+            ////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 * (-c2o1*  mxxMyy + mxxMzz + mxxPyyPzz);
+            mfaac = c1o3 * (mxxMyy - c2o1* mxxMzz + mxxPyyPzz);
+
+            //3.
+            // linear combinations
+
+            real mxxyPyzz = mfcba + mfabc;
+            real mxxyMyzz = mfcba - mfabc;
+
+            real mxxzPyyz = mfcab + mfacb;
+            real mxxzMyyz = mfcab - mfacb;
+
+            real mxyyPxzz = mfbca + mfbac;
+            real mxyyMxzz = mfbca - mfbac;
+
+            //relax
+            //////////////////////////////////////////////////////////////////////////
+            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 + c2o1 * mfbba * mfbab) / rho;
+            mfbcb = CUMbcb + ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) / rho;
+            mfbbc = CUMbbc + ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) / rho;
+
+            mfcca = CUMcca + (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
+            mfcac = CUMcac + (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+            mfacc = CUMacc + (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+            //5.
+            mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
+            mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
+            mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
+
+            //6.
+            mfccc = CUMccc - ((-c4o1 *  mfbbb * mfbbb
+                - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+                - c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
+                - c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
+                + (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+                    + c2o1 * (mfcaa * mfaca * mfaac)
+                    + c16o1 *  mfbba * mfbab * mfabb) / (rho * rho)
+                - c1o3 * (mfacc + mfcac + mfcca) / rho
+                - c1o9 * (mfcaa + mfaca + mfaac) / rho
+                + (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+                    + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3
+                + c1o27*((drho * drho - drho) / (rho*rho)));
+
+            ////////////////////////////////////////////////////////////////////////////////////
+            //the force be with you
+            mfbaa = -mfbaa;
+            mfaba = -mfaba;
+            mfaab = -mfaab;
+            ////////////////////////////////////////////////////////////////////////////////////
+
+
+            ////////////////////////////////////////////////////////////////////////////////////
+            //back
+            ////////////////////////////////////////////////////////////////////////////////////
+            VF::LBM::backwardChimera(mfaaa, mfaab, mfaac, vvz, vz2);
+            VF::LBM::backwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
+            VF::LBM::backwardChimera(mfaca, mfacb, mfacc, vvz, vz2);
+            VF::LBM::backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
+            VF::LBM::backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
+            VF::LBM::backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
+            VF::LBM::backwardChimera(mfcaa, mfcab, mfcac, vvz, vz2);
+            VF::LBM::backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
+            VF::LBM::backwardChimera(mfcca, mfccb, mfccc, vvz, vz2);
+
+            VF::LBM::backwardChimera(mfaaa, mfaba, mfaca, vvy, vy2);
+            VF::LBM::backwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
+            VF::LBM::backwardChimera(mfaac, mfabc, mfacc, vvy, vy2);
+            VF::LBM::backwardChimera(mfbaa, mfbba, mfbca, vvy, vy2);
+            VF::LBM::backwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
+            VF::LBM::backwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2);
+            VF::LBM::backwardChimera(mfcaa, mfcba, mfcca, vvy, vy2);
+            VF::LBM::backwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
+            VF::LBM::backwardChimera(mfcac, mfcbc, mfccc, vvy, vy2);
+
+            VF::LBM::backwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2);
+            VF::LBM::backwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
+            VF::LBM::backwardChimera(mfaac, mfbac, mfcac, vvx, vx2);
+            VF::LBM::backwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
+            VF::LBM::backwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
+            VF::LBM::backwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
+            VF::LBM::backwardChimera(mfaca, mfbca, mfcca, vvx, vx2);
+            VF::LBM::backwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
+            VF::LBM::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]
+                                        ////////////////////////////////////////////////////////////////////////////////////
+        }
+    }
 }
 ////////////////////////////////////////////////////////////////////////////////
 
@@ -932,758 +1781,758 @@ extern "C" __global__ void Cumulant_One_preconditioned_errorDiffusion_chim_Comp_
 
 ////////////////////////////////////////////////////////////////////////////////
 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)
+    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 = c1o1 + drho;
-			////////////////////////////////////////////////////////////////////////////////////
-			real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
-				(((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
-				(mfcbb - mfabb)) / rho;
-			real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
-				(((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
-				(mfbcb - mfbab)) / rho;
-			real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
-				(((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
-				(mfbbc - mfbba)) / rho;
-			////////////////////////////////////////////////////////////////////////////////////
-			//the force be with you
-			real fx = forces[0] / (pow((double)c2o1, (double)level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
-			real fy = forces[1] / (pow((double)c2o1, (double)level)); //zero;
-			real fz = forces[2] / (pow((double)c2o1, (double)level)); //zero;
-			vvx += fx*c1o2;
-			vvy += fy*c1o2;
-			vvz += fz*c1o2;
-			////////////////////////////////////////////////////////////////////////////////////
-			//real omega = omega_in;
-			////////////////////////////////////////////////////////////////////////////////////
-			//fast
-			//real oMdrho = c1o1; // comp special
-			//real m0, m1, m2;
-			real vx2;
-			real vy2;
-			real vz2;
-			vx2 = vvx*vvx;
-			vy2 = vvy*vvy;
-			vz2 = vvz*vvz;
-			////////////////////////////////////////////////////////////////////////////////////
-			//real wadjust;
-			//real qudricLimitP = c1o100;// * 0.0001f;
-			//real qudricLimitM = c1o100;// * 0.0001f;
-			//real qudricLimitD = c1o100;// * 0.001f;
-			//real s9 = minusomega;
-			//test
-			//s9 = 0.;
-
-
-			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			real EQcbb = c0o1;
-			real EQabb = c0o1;
-			real EQbcb = c0o1;
-			real EQbab = c0o1;
-			real EQbbc = c0o1;
-			real EQbba = c0o1;
-			real EQccb = c0o1;
-			real EQaab = c0o1;
-			real EQcab = c0o1;
-			real EQacb = c0o1;
-			real EQcbc = c0o1;
-			real EQaba = c0o1;
-			real EQcba = c0o1;
-			real EQabc = c0o1;
-			real EQbcc = c0o1;
-			real EQbaa = c0o1;
-			real EQbca = c0o1;
-			real EQbac = c0o1;
-			real EQbbb = c0o1;
-			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;
-			////////////////////////////////////////////////////////////////////////////////////
-			VF::LBM::backwardChimeraWithK(EQaaa, EQaab, EQaac, vvz, vz2, c1o1);
-			VF::LBM::backwardChimeraWithK(EQaca, EQacb, EQacc, vvz, vz2, c1o3);
-			///////////////////////////////////////////////////////////
-			EQcaa = EQaca; EQcab = EQacb; EQcac = EQacc;
-			///////////////////////////////////////////////////////////
-			VF::LBM::backwardChimeraWithK(EQcca, EQccb, EQccc, vvz, vz2, c1o9);
-
-			VF::LBM::backwardChimeraWithK(EQaaa, EQaba, EQaca, vvy, vy2, c1o6);
-			VF::LBM::backwardChimeraWithK(EQaab, EQabb, EQacb, vvy, vy2, c2o3);
-			VF::LBM::backwardChimeraWithK(EQaac, EQabc, EQacc, vvy, vy2, c1o6);
-			VF::LBM::backwardChimeraWithK(EQcaa, EQcba, EQcca, vvy, vy2, c1o18);
-			VF::LBM::backwardChimeraWithK(EQcab, EQcbb, EQccb, vvy, vy2, c2o9);
-			VF::LBM::backwardChimeraWithK(EQcac, EQcbc, EQccc, vvy, vy2, c1o18);
-
-			VF::LBM::backwardChimeraWithK(EQaaa, EQbaa, EQcaa, vvx, vx2, c1o36);
-			VF::LBM::backwardChimeraWithK(EQaab, EQbab, EQcab, vvx, vx2, c1o9);
-			VF::LBM::backwardChimeraWithK(EQaac, EQbac, EQcac, vvx, vx2, c1o36);
-			VF::LBM::backwardChimeraWithK(EQaba, EQbba, EQcba, vvx, vx2, c1o9);
-			VF::LBM::backwardChimeraWithK(EQabb, EQbbb, EQcbb, vvx, vx2, c4o9);
-			VF::LBM::backwardChimeraWithK(EQabc, EQbbc, EQcbc, vvx, vx2, c1o9);
-			VF::LBM::backwardChimeraWithK(EQaca, EQbca, EQcca, vvx, vx2, c1o36);
-			VF::LBM::backwardChimeraWithK(EQacb, EQbcb, EQccb, vvx, vx2, c1o9);
-			VF::LBM::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
-			////////////////////////////////////////////////////////////////////////////////////
-			VF::LBM::forwardChimera(mfaaa, mfaab, mfaac, vvz, vz2);
-			VF::LBM::forwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
-			VF::LBM::forwardChimera(mfaca, mfacb, mfacc, vvz, vz2);
-			VF::LBM::forwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
-			VF::LBM::forwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
-			VF::LBM::forwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
-			VF::LBM::forwardChimera(mfcaa, mfcab, mfcac, vvz, vz2);
-			VF::LBM::forwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
-			VF::LBM::forwardChimera(mfcca, mfccb, mfccc, vvz, vz2);
-
-			VF::LBM::forwardChimera(mfaaa, mfaba, mfaca, vvy, vy2);
-			VF::LBM::forwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
-			VF::LBM::forwardChimera(mfaac, mfabc, mfacc, vvy, vy2);
-			VF::LBM::forwardChimera(mfbaa, mfbba, mfbca, vvy, vy2);
-			VF::LBM::forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
-			VF::LBM::forwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2);
-			VF::LBM::forwardChimera(mfcaa, mfcba, mfcca, vvy, vy2);
-			VF::LBM::forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
-			VF::LBM::forwardChimera(mfcac, mfcbc, mfccc, vvy, vy2);
-
-			VF::LBM::forwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2);
-			VF::LBM::forwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
-			VF::LBM::forwardChimera(mfaac, mfbac, mfcac, vvx, vx2);
-			VF::LBM::forwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
-			VF::LBM::forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
-			VF::LBM::forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
-			VF::LBM::forwardChimera(mfaca, mfbca, mfcca, vvx, vx2);
-			VF::LBM::forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
-			VF::LBM::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 = c1o1; //omega; // one;	//set the bulk viscosity one is high / two is very low and zero is (too) high
-
-			////////////////////////////////////////////////////////////
-			//3.
-			//////////////////////////////
-			real OxyyPxzz = c1o1;
-			real OxyyMxzz = c1o1;
-			//real Oxyz = c1o1;
-			////////////////////////////////////////////////////////////
-			//4.
-			//////////////////////////////
-			real O4 = c1o1;
-			////////////////////////////////////////////////////////////
-			//5.
-			//////////////////////////////
-			real O5 = c1o1;
-			////////////////////////////////////////////////////////////
-			//6.
-			//////////////////////////////
-			real O6 = c1o1;
-			////////////////////////////////////////////////////////////
-
-
-			//central moments to cumulants
-			//4.
-			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + c2o1 * mfbba * mfbab) / rho;
-			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) / rho;
-			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) / rho;
-
-			real CUMcca = mfcca - (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
-			real CUMcac = mfcac - (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
-			real CUMacc = mfacc - (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
-
-			//5.
-			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
-			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
-			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
-
-			//6.
-
-			real CUMccc = mfccc + ((-c4o1 *  mfbbb * mfbbb
-				- (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-				- c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-				- c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
-				+ (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-					+ c2o1 * (mfcaa * mfaca * mfaac)
-					+ c16o1 *  mfbba * mfbab * mfabb) / (rho * rho)
-				- c1o3 * (mfacc + mfcac + mfcca) / rho
-				- c1o9 * (mfcaa + mfaca + mfaac) / rho
-				+ (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-					+ (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3
-				+ c1o27*((drho * drho - drho) / (rho*rho)));
-
-
-
-
-			//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) - c3o1 * (c1o1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
-				mxxMyy += omega * (-mxxMyy) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy);
-				mxxMzz += omega * (-mxxMzz) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz);
-
-			}
-			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			////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 * (-c2o1*  mxxMyy + mxxMzz + mxxPyyPzz);
-			mfaac = c1o3 * (mxxMyy - c2o1* mxxMzz + mxxPyyPzz);
-
-			//3.
-			// linear combinations
-
-			real mxxyPyzz = mfcba + mfabc;
-			real mxxyMyzz = mfcba - mfabc;
-
-			real mxxzPyyz = mfcab + mfacb;
-			real mxxzMyyz = mfcab - mfacb;
-
-			real mxyyPxzz = mfbca + mfbac;
-			real mxyyMxzz = mfbca - mfbac;
-
-			//relax
-			//////////////////////////////////////////////////////////////////////////
-			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 + c2o1 * mfbba * mfbab) / rho;
-			mfbcb = CUMbcb + ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) / rho;
-			mfbbc = CUMbbc + ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) / rho;
-
-			mfcca = CUMcca + (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
-			mfcac = CUMcac + (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
-			mfacc = CUMacc + (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
-
-			//5.
-			mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
-			mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
-			mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
-
-			//6.
-			mfccc = CUMccc - ((-c4o1 *  mfbbb * mfbbb
-				- (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-				- c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-				- c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
-				+ (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-					+ c2o1 * (mfcaa * mfaca * mfaac)
-					+ c16o1 *  mfbba * mfbab * mfabb) / (rho * rho)
-				- c1o3 * (mfacc + mfcac + mfcca) / rho
-				- c1o9 * (mfcaa + mfaca + mfaac) / rho
-				+ (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-					+ (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3
-				+ c1o27*((drho * drho - drho) / (rho*rho)));
-
-			////////////////////////////////////////////////////////////////////////////////////
-			//the force be with you
-			mfbaa = -mfbaa;
-			mfaba = -mfaba;
-			mfaab = -mfaab;
-			////////////////////////////////////////////////////////////////////////////////////
-
-
-			////////////////////////////////////////////////////////////////////////////////////
-			//back
-			////////////////////////////////////////////////////////////////////////////////////
-			VF::LBM::backwardChimera(mfaaa, mfaab, mfaac, vvz, vz2);
-			VF::LBM::backwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
-			VF::LBM::backwardChimera(mfaca, mfacb, mfacc, vvz, vz2);
-			VF::LBM::backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
-			VF::LBM::backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
-			VF::LBM::backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
-			VF::LBM::backwardChimera(mfcaa, mfcab, mfcac, vvz, vz2);
-			VF::LBM::backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
-			VF::LBM::backwardChimera(mfcca, mfccb, mfccc, vvz, vz2);
-
-			VF::LBM::backwardChimera(mfaaa, mfaba, mfaca, vvy, vy2);
-			VF::LBM::backwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
-			VF::LBM::backwardChimera(mfaac, mfabc, mfacc, vvy, vy2);
-			VF::LBM::backwardChimera(mfbaa, mfbba, mfbca, vvy, vy2);
-			VF::LBM::backwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
-			VF::LBM::backwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2);
-			VF::LBM::backwardChimera(mfcaa, mfcba, mfcca, vvy, vy2);
-			VF::LBM::backwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
-			VF::LBM::backwardChimera(mfcac, mfcbc, mfccc, vvy, vy2);
-
-			VF::LBM::backwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2);
-			VF::LBM::backwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
-			VF::LBM::backwardChimera(mfaac, mfbac, mfcac, vvx, vx2);
-			VF::LBM::backwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
-			VF::LBM::backwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
-			VF::LBM::backwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
-			VF::LBM::backwardChimera(mfaca, mfbca, mfcca, vvx, vx2);
-			VF::LBM::backwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
-			VF::LBM::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]
-			////////////////////////////////////////////////////////////////////////////////////
-		}
-	}
+    ////////////////////////////////////////////////////////////////////////////////
+    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 = c1o1 + drho;
+            ////////////////////////////////////////////////////////////////////////////////////
+            real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
+                (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
+                (mfcbb - mfabb)) / rho;
+            real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
+                (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
+                (mfbcb - mfbab)) / rho;
+            real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
+                (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
+                (mfbbc - mfbba)) / rho;
+            ////////////////////////////////////////////////////////////////////////////////////
+            //the force be with you
+            real fx = forces[0] / (pow((double)c2o1, (double)level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+            real fy = forces[1] / (pow((double)c2o1, (double)level)); //zero;
+            real fz = forces[2] / (pow((double)c2o1, (double)level)); //zero;
+            vvx += fx*c1o2;
+            vvy += fy*c1o2;
+            vvz += fz*c1o2;
+            ////////////////////////////////////////////////////////////////////////////////////
+            //real omega = omega_in;
+            ////////////////////////////////////////////////////////////////////////////////////
+            //fast
+            //real oMdrho = c1o1; // comp special
+            //real m0, m1, m2;
+            real vx2;
+            real vy2;
+            real vz2;
+            vx2 = vvx*vvx;
+            vy2 = vvy*vvy;
+            vz2 = vvz*vvz;
+            ////////////////////////////////////////////////////////////////////////////////////
+            //real wadjust;
+            //real qudricLimitP = c1o100;// * 0.0001f;
+            //real qudricLimitM = c1o100;// * 0.0001f;
+            //real qudricLimitD = c1o100;// * 0.001f;
+            //real s9 = minusomega;
+            //test
+            //s9 = 0.;
+
+
+            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+            real EQcbb = c0o1;
+            real EQabb = c0o1;
+            real EQbcb = c0o1;
+            real EQbab = c0o1;
+            real EQbbc = c0o1;
+            real EQbba = c0o1;
+            real EQccb = c0o1;
+            real EQaab = c0o1;
+            real EQcab = c0o1;
+            real EQacb = c0o1;
+            real EQcbc = c0o1;
+            real EQaba = c0o1;
+            real EQcba = c0o1;
+            real EQabc = c0o1;
+            real EQbcc = c0o1;
+            real EQbaa = c0o1;
+            real EQbca = c0o1;
+            real EQbac = c0o1;
+            real EQbbb = c0o1;
+            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;
+            ////////////////////////////////////////////////////////////////////////////////////
+            VF::LBM::backwardChimeraWithK(EQaaa, EQaab, EQaac, vvz, vz2, c1o1);
+            VF::LBM::backwardChimeraWithK(EQaca, EQacb, EQacc, vvz, vz2, c1o3);
+            ///////////////////////////////////////////////////////////
+            EQcaa = EQaca; EQcab = EQacb; EQcac = EQacc;
+            ///////////////////////////////////////////////////////////
+            VF::LBM::backwardChimeraWithK(EQcca, EQccb, EQccc, vvz, vz2, c1o9);
+
+            VF::LBM::backwardChimeraWithK(EQaaa, EQaba, EQaca, vvy, vy2, c1o6);
+            VF::LBM::backwardChimeraWithK(EQaab, EQabb, EQacb, vvy, vy2, c2o3);
+            VF::LBM::backwardChimeraWithK(EQaac, EQabc, EQacc, vvy, vy2, c1o6);
+            VF::LBM::backwardChimeraWithK(EQcaa, EQcba, EQcca, vvy, vy2, c1o18);
+            VF::LBM::backwardChimeraWithK(EQcab, EQcbb, EQccb, vvy, vy2, c2o9);
+            VF::LBM::backwardChimeraWithK(EQcac, EQcbc, EQccc, vvy, vy2, c1o18);
+
+            VF::LBM::backwardChimeraWithK(EQaaa, EQbaa, EQcaa, vvx, vx2, c1o36);
+            VF::LBM::backwardChimeraWithK(EQaab, EQbab, EQcab, vvx, vx2, c1o9);
+            VF::LBM::backwardChimeraWithK(EQaac, EQbac, EQcac, vvx, vx2, c1o36);
+            VF::LBM::backwardChimeraWithK(EQaba, EQbba, EQcba, vvx, vx2, c1o9);
+            VF::LBM::backwardChimeraWithK(EQabb, EQbbb, EQcbb, vvx, vx2, c4o9);
+            VF::LBM::backwardChimeraWithK(EQabc, EQbbc, EQcbc, vvx, vx2, c1o9);
+            VF::LBM::backwardChimeraWithK(EQaca, EQbca, EQcca, vvx, vx2, c1o36);
+            VF::LBM::backwardChimeraWithK(EQacb, EQbcb, EQccb, vvx, vx2, c1o9);
+            VF::LBM::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
+            ////////////////////////////////////////////////////////////////////////////////////
+            VF::LBM::forwardChimera(mfaaa, mfaab, mfaac, vvz, vz2);
+            VF::LBM::forwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
+            VF::LBM::forwardChimera(mfaca, mfacb, mfacc, vvz, vz2);
+            VF::LBM::forwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
+            VF::LBM::forwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
+            VF::LBM::forwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
+            VF::LBM::forwardChimera(mfcaa, mfcab, mfcac, vvz, vz2);
+            VF::LBM::forwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
+            VF::LBM::forwardChimera(mfcca, mfccb, mfccc, vvz, vz2);
+
+            VF::LBM::forwardChimera(mfaaa, mfaba, mfaca, vvy, vy2);
+            VF::LBM::forwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
+            VF::LBM::forwardChimera(mfaac, mfabc, mfacc, vvy, vy2);
+            VF::LBM::forwardChimera(mfbaa, mfbba, mfbca, vvy, vy2);
+            VF::LBM::forwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
+            VF::LBM::forwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2);
+            VF::LBM::forwardChimera(mfcaa, mfcba, mfcca, vvy, vy2);
+            VF::LBM::forwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
+            VF::LBM::forwardChimera(mfcac, mfcbc, mfccc, vvy, vy2);
+
+            VF::LBM::forwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2);
+            VF::LBM::forwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
+            VF::LBM::forwardChimera(mfaac, mfbac, mfcac, vvx, vx2);
+            VF::LBM::forwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
+            VF::LBM::forwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
+            VF::LBM::forwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
+            VF::LBM::forwardChimera(mfaca, mfbca, mfcca, vvx, vx2);
+            VF::LBM::forwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
+            VF::LBM::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 = c1o1; //omega; // one;	//set the bulk viscosity one is high / two is very low and zero is (too) high
+
+            ////////////////////////////////////////////////////////////
+            //3.
+            //////////////////////////////
+            real OxyyPxzz = c1o1;
+            real OxyyMxzz = c1o1;
+            //real Oxyz = c1o1;
+            ////////////////////////////////////////////////////////////
+            //4.
+            //////////////////////////////
+            real O4 = c1o1;
+            ////////////////////////////////////////////////////////////
+            //5.
+            //////////////////////////////
+            real O5 = c1o1;
+            ////////////////////////////////////////////////////////////
+            //6.
+            //////////////////////////////
+            real O6 = c1o1;
+            ////////////////////////////////////////////////////////////
+
+
+            //central moments to cumulants
+            //4.
+            real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + c2o1 * mfbba * mfbab) / rho;
+            real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) / rho;
+            real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) / rho;
+
+            real CUMcca = mfcca - (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
+            real CUMcac = mfcac - (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+            real CUMacc = mfacc - (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+            //5.
+            real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
+            real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
+            real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
+
+            //6.
+
+            real CUMccc = mfccc + ((-c4o1 *  mfbbb * mfbbb
+                - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+                - c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
+                - c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
+                + (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+                    + c2o1 * (mfcaa * mfaca * mfaac)
+                    + c16o1 *  mfbba * mfbab * mfabb) / (rho * rho)
+                - c1o3 * (mfacc + mfcac + mfcca) / rho
+                - c1o9 * (mfcaa + mfaca + mfaac) / rho
+                + (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+                    + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3
+                + c1o27*((drho * drho - drho) / (rho*rho)));
+
+
+
+
+            //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) - c3o1 * (c1o1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
+                mxxMyy += omega * (-mxxMyy) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy);
+                mxxMzz += omega * (-mxxMzz) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz);
+
+            }
+            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+            ////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 * (-c2o1*  mxxMyy + mxxMzz + mxxPyyPzz);
+            mfaac = c1o3 * (mxxMyy - c2o1* mxxMzz + mxxPyyPzz);
+
+            //3.
+            // linear combinations
+
+            real mxxyPyzz = mfcba + mfabc;
+            real mxxyMyzz = mfcba - mfabc;
+
+            real mxxzPyyz = mfcab + mfacb;
+            real mxxzMyyz = mfcab - mfacb;
+
+            real mxyyPxzz = mfbca + mfbac;
+            real mxyyMxzz = mfbca - mfbac;
+
+            //relax
+            //////////////////////////////////////////////////////////////////////////
+            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 + c2o1 * mfbba * mfbab) / rho;
+            mfbcb = CUMbcb + ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) / rho;
+            mfbbc = CUMbbc + ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) / rho;
+
+            mfcca = CUMcca + (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
+            mfcac = CUMcac + (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+            mfacc = CUMacc + (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+
+            //5.
+            mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
+            mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
+            mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
+
+            //6.
+            mfccc = CUMccc - ((-c4o1 *  mfbbb * mfbbb
+                - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+                - c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
+                - c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
+                + (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+                    + c2o1 * (mfcaa * mfaca * mfaac)
+                    + c16o1 *  mfbba * mfbab * mfabb) / (rho * rho)
+                - c1o3 * (mfacc + mfcac + mfcca) / rho
+                - c1o9 * (mfcaa + mfaca + mfaac) / rho
+                + (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+                    + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) / (rho * rho) * c2o3
+                + c1o27*((drho * drho - drho) / (rho*rho)));
+
+            ////////////////////////////////////////////////////////////////////////////////////
+            //the force be with you
+            mfbaa = -mfbaa;
+            mfaba = -mfaba;
+            mfaab = -mfaab;
+            ////////////////////////////////////////////////////////////////////////////////////
+
+
+            ////////////////////////////////////////////////////////////////////////////////////
+            //back
+            ////////////////////////////////////////////////////////////////////////////////////
+            VF::LBM::backwardChimera(mfaaa, mfaab, mfaac, vvz, vz2);
+            VF::LBM::backwardChimera(mfaba, mfabb, mfabc, vvz, vz2);
+            VF::LBM::backwardChimera(mfaca, mfacb, mfacc, vvz, vz2);
+            VF::LBM::backwardChimera(mfbaa, mfbab, mfbac, vvz, vz2);
+            VF::LBM::backwardChimera(mfbba, mfbbb, mfbbc, vvz, vz2);
+            VF::LBM::backwardChimera(mfbca, mfbcb, mfbcc, vvz, vz2);
+            VF::LBM::backwardChimera(mfcaa, mfcab, mfcac, vvz, vz2);
+            VF::LBM::backwardChimera(mfcba, mfcbb, mfcbc, vvz, vz2);
+            VF::LBM::backwardChimera(mfcca, mfccb, mfccc, vvz, vz2);
+
+            VF::LBM::backwardChimera(mfaaa, mfaba, mfaca, vvy, vy2);
+            VF::LBM::backwardChimera(mfaab, mfabb, mfacb, vvy, vy2);
+            VF::LBM::backwardChimera(mfaac, mfabc, mfacc, vvy, vy2);
+            VF::LBM::backwardChimera(mfbaa, mfbba, mfbca, vvy, vy2);
+            VF::LBM::backwardChimera(mfbab, mfbbb, mfbcb, vvy, vy2);
+            VF::LBM::backwardChimera(mfbac, mfbbc, mfbcc, vvy, vy2);
+            VF::LBM::backwardChimera(mfcaa, mfcba, mfcca, vvy, vy2);
+            VF::LBM::backwardChimera(mfcab, mfcbb, mfccb, vvy, vy2);
+            VF::LBM::backwardChimera(mfcac, mfcbc, mfccc, vvy, vy2);
+
+            VF::LBM::backwardChimera(mfaaa, mfbaa, mfcaa, vvx, vx2);
+            VF::LBM::backwardChimera(mfaab, mfbab, mfcab, vvx, vx2);
+            VF::LBM::backwardChimera(mfaac, mfbac, mfcac, vvx, vx2);
+            VF::LBM::backwardChimera(mfaba, mfbba, mfcba, vvx, vx2);
+            VF::LBM::backwardChimera(mfabb, mfbbb, mfcbb, vvx, vx2);
+            VF::LBM::backwardChimera(mfabc, mfbbc, mfcbc, vvx, vx2);
+            VF::LBM::backwardChimera(mfaca, mfbca, mfcca, vvx, vx2);
+            VF::LBM::backwardChimera(mfacb, mfbcb, mfccb, vvx, vx2);
+            VF::LBM::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]
+            ////////////////////////////////////////////////////////////////////////////////////
+        }
+    }
 }
 ////////////////////////////////////////////////////////////////////////////////
 
@@ -1728,483 +2577,483 @@ extern "C" __global__ void Cumulant_One_preconditioned_chim_Comp_SP_27(
 
 ////////////////////////////////////////////////////////////////////////////////
 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)
+    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 kw = neighborX[k];
-			unsigned int ks = neighborY[k];
-			unsigned int kb = neighborZ[k];
-			unsigned int ksw = neighborY[kw];
-			unsigned int kbw = neighborZ[kw];
-			unsigned int kbs = neighborZ[ks];
-			unsigned int kbsw = neighborZ[ksw];
-			////////////////////////////////////////////////////////////////////////////////////
-			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 = c1o1 + drho;
-			real OOrho = c1o1 / rho;
-			////////////////////////////////////////////////////////////////////////////////////
-			real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
-				(((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
-				(mfcbb - mfabb)) * OOrho;
-			real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
-				(((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
-				(mfbcb - mfbab)) * OOrho;
-			real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
-				(((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
-				(mfbbc - mfbba)) * OOrho;
-			////////////////////////////////////////////////////////////////////////////////////
-			//the force be with you
-			real fx = forces[0] / (pow((double)c2o1, (double)level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
-			real fy = forces[1] / (pow((double)c2o1, (double)level)); //zero;
-			real fz = forces[2] / (pow((double)c2o1, (double)level)); //zero;
-			vvx += fx*c1o2;
-			vvy += fy*c1o2;
-			vvz += fz*c1o2;
-			////////////////////////////////////////////////////////////////////////////////////
-			//real omega = omega_in;
-			////////////////////////////////////////////////////////////////////////////////////
-			//fast
-			//real oMdrho = c1o1; // comp special
-			//real m0, m1, m2;
-			real vx2;
-			real vy2;
-			real vz2;
-			vx2 = vvx*vvx;
-			vy2 = vvy*vvy;
-			vz2 = vvz*vvz;
-			////////////////////////////////////////////////////////////////////////////////////
-			//real wadjust;
-			//real qudricLimitP = c1o100;// * 0.0001f;
-			//real qudricLimitM = c1o100;// * 0.0001f;
-			//real qudricLimitD = c1o100;// * 0.001f;
-			////////////////////////////////////////////////////////////////////////////////////
-			//Hin
-			////////////////////////////////////////////////////////////////////////////////////
-			// mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36  Konditionieren
-			////////////////////////////////////////////////////////////////////////////////////
-			// Z - Dir
-			VF::LBM::forwardInverseChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, 36.0f, c1o36);
-			VF::LBM::forwardInverseChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2, 9.0f , c1o9 );
-			VF::LBM::forwardInverseChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, 36.0f, c1o36);
-			VF::LBM::forwardInverseChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2, 9.0f , c1o9 );
-			VF::LBM::forwardInverseChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2, 2.25f, c4o9 );
-			VF::LBM::forwardInverseChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2, 9.0f , c1o9 );
-			VF::LBM::forwardInverseChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, 36.0f, c1o36);
-			VF::LBM::forwardInverseChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2, 9.0f , c1o9 );
-			VF::LBM::forwardInverseChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, 36.0f, c1o36);
-
-			////////////////////////////////////////////////////////////////////////////////////
-			// mit  1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren
-			////////////////////////////////////////////////////////////////////////////////////
-			// Y - Dir
-			VF::LBM::forwardInverseChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, 6.0f , c1o6 );
-			VF::LBM::forwardChimera(     mfaab, mfabb, mfacb, vvy, vy2);
-			VF::LBM::forwardInverseChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, 18.0f, c1o18);
-			VF::LBM::forwardInverseChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2, 1.5f , c2o3 );
-			VF::LBM::forwardChimera(     mfbab, mfbbb, mfbcb, vvy, vy2);
-			VF::LBM::forwardInverseChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2, 4.5f , c2o9 );
-			VF::LBM::forwardInverseChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, 6.0f , c1o6 );
-			VF::LBM::forwardChimera(     mfcab, mfcbb, mfccb, vvy, vy2);
-			VF::LBM::forwardInverseChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, 18.0f, c1o18);
-
-			////////////////////////////////////////////////////////////////////////////////////
-			// mit     1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9		Konditionieren
-			////////////////////////////////////////////////////////////////////////////////////
-			// X - Dir
-			VF::LBM::forwardInverseChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o1, c1o1);
-			VF::LBM::forwardChimera(     mfaba, mfbba, mfcba, vvx, vx2);
-			VF::LBM::forwardInverseChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, 3.0f, c1o3);
-			VF::LBM::forwardChimera(     mfaab, mfbab, mfcab, vvx, vx2);
-			VF::LBM::forwardChimera(     mfabb, mfbbb, mfcbb, vvx, vx2);
-			VF::LBM::forwardChimera(     mfacb, mfbcb, mfccb, vvx, vx2);
-			VF::LBM::forwardInverseChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, 3.0f, c1o3);
-			VF::LBM::forwardChimera(     mfabc, mfbbc, mfcbc, vvx, vx2);
-			VF::LBM::forwardInverseChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, 9.0f, c1o9);
-
-			////////////////////////////////////////////////////////////////////////////////////
-			// Cumulants
-			////////////////////////////////////////////////////////////////////////////////////
-			real OxxPyyPzz = c1o1;
-			////////////////////////////////////////////////////////////
-			//3.
-			//////////////////////////////
-			real OxyyPxzz = c1o1;
-			real OxyyMxzz = c1o1;
-			//real Oxyz = c1o1;
-			////////////////////////////////////////////////////////////
-			//4.
-			//////////////////////////////
-			real O4 = c1o1;
-			////////////////////////////////////////////////////////////
-			//5.
-			//////////////////////////////
-			real O5 = c1o1;
-			////////////////////////////////////////////////////////////
-			//6.
-			//////////////////////////////
-			real O6 = c1o1;
-			////////////////////////////////////////////////////////////
-
-
-			//central moments to cumulants
-			//4.
-			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + c2o1 * mfbba * mfbab) * OOrho;
-			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) * OOrho;
-			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) * OOrho;
-
-			real CUMcca = mfcca - (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) * OOrho - c1o9*(drho * OOrho));
-			real CUMcac = mfcac - (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) * OOrho - c1o9*(drho * OOrho));
-			real CUMacc = mfacc - (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) * OOrho - c1o9*(drho * OOrho));
-
-			//5.
-			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) * OOrho;
-			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) * OOrho;
-			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) * OOrho;
-
-			//6.
-			real CUMccc = mfccc + ((-c4o1 *  mfbbb * mfbbb
-				- (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-				- c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-				- c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) * OOrho
-				+ (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-				+ c2o1 * (mfcaa * mfaca * mfaac)
-				+ c16o1 *  mfbba * mfbab * mfabb) * OOrho * OOrho
-				- c1o3 * (mfacc + mfcac + mfcca) * OOrho
-				- c1o9 * (mfcaa + mfaca + mfaac) * OOrho
-				+ (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-				+ (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) * OOrho * OOrho  * c2o3
-				+ c1o27*((drho * drho - drho) * OOrho * OOrho ));
-
-
-			//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)- c3o1 * (c1o1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
-				mxxMyy    += omega * (-mxxMyy) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy);
-				mxxMzz    += omega * (-mxxMzz) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz);
-
-			}
-			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			////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 * (-c2o1*  mxxMyy + mxxMzz + mxxPyyPzz);
-			mfaac = c1o3 * (mxxMyy - c2o1* mxxMzz + mxxPyyPzz);
-
-			//3.
-			// linear combinations
-
-			real mxxyPyzz = mfcba + mfabc;
-			real mxxyMyzz = mfcba - mfabc;
-
-			real mxxzPyyz = mfcab + mfacb;
-			real mxxzMyyz = mfcab - mfacb;
-
-			real mxyyPxzz = mfbca + mfbac;
-			real mxyyMxzz = mfbca - mfbac;
-
-			//relax
-			//////////////////////////////////////////////////////////////////////////
-			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 + c1o3*((c3o1*mfcaa + c1o1) * mfabb + c6o1 * mfbba * mfbab) * OOrho; 
-			mfbcb = CUMbcb + c1o3*((c3o1*mfaca + c1o1) * mfbab + c6o1 * mfbba * mfabb) * OOrho;
-			mfbbc = CUMbbc + c1o3*((c3o1*mfaac + c1o1) * mfbba + c6o1 * mfbab * mfabb) * OOrho;
-
-			mfcca = CUMcca + (((mfcaa * mfaca + c2o1 * mfbba * mfbba)*c9o1 + c3o1 * (mfcaa + mfaca)) * OOrho - (drho * OOrho))*c1o9;
-			mfcac = CUMcac + (((mfcaa * mfaac + c2o1 * mfbab * mfbab)*c9o1 + c3o1 * (mfcaa + mfaac)) * OOrho - (drho * OOrho))*c1o9;
-			mfacc = CUMacc + (((mfaac * mfaca + c2o1 * mfabb * mfabb)*c9o1 + c3o1 * (mfaac + mfaca)) * OOrho - (drho * OOrho))*c1o9;
-
-			//5.
-			mfbcc = CUMbcc + c1o3 *(c3o1*(mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + (mfbca + mfbac)) * OOrho;
-			mfcbc = CUMcbc + c1o3 *(c3o1*(mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + (mfcba + mfabc)) * OOrho;
-			mfccb = CUMccb + c1o3 *(c3o1*(mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) +  (mfacb + mfcab)) * OOrho;
-
-			//6.
-			mfccc = 
-				CUMccc - ((-c4o1 *  mfbbb * mfbbb
-				- (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-				- c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-				- c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) * OOrho
-				+ (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-				+ c2o1 * (mfcaa * mfaca * mfaac)
-				+ c16o1 *  mfbba * mfbab * mfabb) * OOrho * OOrho
-				- c1o3 * (mfacc + mfcac + mfcca) * OOrho
-				- c1o9 * (mfcaa + mfaca + mfaac) * OOrho
-				+ (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
-				+ (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) * OOrho * OOrho * c2o3
-				+ c1o27*((drho * drho - drho) * OOrho * OOrho ));
-
-			////////////////////////////////////////////////////////////////////////////////////
-			//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
-			////////////////////////////////////////////////////////////////////////////////////
-			// X - Dir
-			VF::LBM::backwardInverseChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o1, c1o1);
-			VF::LBM::backwardChimera(			mfaba, mfbba, mfcba, vvx, vx2);
-			VF::LBM::backwardInverseChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, 3.0f, c1o3);
-			VF::LBM::backwardChimera(			mfaab, mfbab, mfcab, vvx, vx2);
-			VF::LBM::backwardChimera(			mfabb, mfbbb, mfcbb, vvx, vx2);
-			VF::LBM::backwardChimera(			mfacb, mfbcb, mfccb, vvx, vx2);
-			VF::LBM::backwardInverseChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, 3.0f, c1o3);
-			VF::LBM::backwardChimera(			mfabc, mfbbc, mfcbc, vvx, vx2);
-			VF::LBM::backwardInverseChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, 9.0f, c1o9);
-
-			////////////////////////////////////////////////////////////////////////////////////
-			//mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18   Konditionieren
-			////////////////////////////////////////////////////////////////////////////////////
-			// Y - Dir
-			VF::LBM::backwardInverseChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, 6.0f , c1o6 );
-			VF::LBM::backwardChimera(			mfaab, mfabb, mfacb, vvy, vy2);
-			VF::LBM::backwardInverseChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, 18.0f, c1o18);
-			VF::LBM::backwardInverseChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2, 1.5f , c2o3 );
-			VF::LBM::backwardChimera(			mfbab, mfbbb, mfbcb, vvy, vy2);
-			VF::LBM::backwardInverseChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2, 4.5f , c2o9 );
-			VF::LBM::backwardInverseChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, 6.0f , c1o6 );
-			VF::LBM::backwardChimera(			mfcab, mfcbb, mfccb, vvy, vy2);
-			VF::LBM::backwardInverseChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, 18.0f, c1o18);
-
-			////////////////////////////////////////////////////////////////////////////////////
-			//mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren
-			////////////////////////////////////////////////////////////////////////////////////
-			// Z - Dir
-			VF::LBM::backwardInverseChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, 36.0f, c1o36);
-			VF::LBM::backwardInverseChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2, 9.0f , c1o9 );
-			VF::LBM::backwardInverseChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, 36.0f, c1o36);
-			VF::LBM::backwardInverseChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2, 9.0f , c1o9 );
-			VF::LBM::backwardInverseChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2, 2.25f, c4o9 );
-			VF::LBM::backwardInverseChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2, 9.0f , c1o9 );
-			VF::LBM::backwardInverseChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, 36.0f, c1o36);
-			VF::LBM::backwardInverseChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2, 9.0f , c1o9 );
-			VF::LBM::backwardInverseChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, 36.0f, 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[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;
-		}
-	}
+    ////////////////////////////////////////////////////////////////////////////////
+    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 kw = neighborX[k];
+            unsigned int ks = neighborY[k];
+            unsigned int kb = neighborZ[k];
+            unsigned int ksw = neighborY[kw];
+            unsigned int kbw = neighborZ[kw];
+            unsigned int kbs = neighborZ[ks];
+            unsigned int kbsw = neighborZ[ksw];
+            ////////////////////////////////////////////////////////////////////////////////////
+            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 = c1o1 + drho;
+            real OOrho = c1o1 / rho;
+            ////////////////////////////////////////////////////////////////////////////////////
+            real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
+                (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
+                (mfcbb - mfabb)) * OOrho;
+            real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
+                (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
+                (mfbcb - mfbab)) * OOrho;
+            real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
+                (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
+                (mfbbc - mfbba)) * OOrho;
+            ////////////////////////////////////////////////////////////////////////////////////
+            //the force be with you
+            real fx = forces[0] / (pow((double)c2o1, (double)level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+            real fy = forces[1] / (pow((double)c2o1, (double)level)); //zero;
+            real fz = forces[2] / (pow((double)c2o1, (double)level)); //zero;
+            vvx += fx*c1o2;
+            vvy += fy*c1o2;
+            vvz += fz*c1o2;
+            ////////////////////////////////////////////////////////////////////////////////////
+            //real omega = omega_in;
+            ////////////////////////////////////////////////////////////////////////////////////
+            //fast
+            //real oMdrho = c1o1; // comp special
+            //real m0, m1, m2;
+            real vx2;
+            real vy2;
+            real vz2;
+            vx2 = vvx*vvx;
+            vy2 = vvy*vvy;
+            vz2 = vvz*vvz;
+            ////////////////////////////////////////////////////////////////////////////////////
+            //real wadjust;
+            //real qudricLimitP = c1o100;// * 0.0001f;
+            //real qudricLimitM = c1o100;// * 0.0001f;
+            //real qudricLimitD = c1o100;// * 0.001f;
+            ////////////////////////////////////////////////////////////////////////////////////
+            //Hin
+            ////////////////////////////////////////////////////////////////////////////////////
+            // mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36  Konditionieren
+            ////////////////////////////////////////////////////////////////////////////////////
+            // Z - Dir
+            VF::LBM::forwardInverseChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, 36.0f, c1o36);
+            VF::LBM::forwardInverseChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2, 9.0f , c1o9 );
+            VF::LBM::forwardInverseChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, 36.0f, c1o36);
+            VF::LBM::forwardInverseChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2, 9.0f , c1o9 );
+            VF::LBM::forwardInverseChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2, 2.25f, c4o9 );
+            VF::LBM::forwardInverseChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2, 9.0f , c1o9 );
+            VF::LBM::forwardInverseChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, 36.0f, c1o36);
+            VF::LBM::forwardInverseChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2, 9.0f , c1o9 );
+            VF::LBM::forwardInverseChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, 36.0f, c1o36);
+
+            ////////////////////////////////////////////////////////////////////////////////////
+            // mit  1/6, 0, 1/18, 2/3, 0, 2/9, 1/6, 0, 1/18 Konditionieren
+            ////////////////////////////////////////////////////////////////////////////////////
+            // Y - Dir
+            VF::LBM::forwardInverseChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, 6.0f , c1o6 );
+            VF::LBM::forwardChimera(     mfaab, mfabb, mfacb, vvy, vy2);
+            VF::LBM::forwardInverseChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, 18.0f, c1o18);
+            VF::LBM::forwardInverseChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2, 1.5f , c2o3 );
+            VF::LBM::forwardChimera(     mfbab, mfbbb, mfbcb, vvy, vy2);
+            VF::LBM::forwardInverseChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2, 4.5f , c2o9 );
+            VF::LBM::forwardInverseChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, 6.0f , c1o6 );
+            VF::LBM::forwardChimera(     mfcab, mfcbb, mfccb, vvy, vy2);
+            VF::LBM::forwardInverseChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, 18.0f, c1o18);
+
+            ////////////////////////////////////////////////////////////////////////////////////
+            // mit     1, 0, 1/3, 0, 0, 0, 1/3, 0, 1/9		Konditionieren
+            ////////////////////////////////////////////////////////////////////////////////////
+            // X - Dir
+            VF::LBM::forwardInverseChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o1, c1o1);
+            VF::LBM::forwardChimera(     mfaba, mfbba, mfcba, vvx, vx2);
+            VF::LBM::forwardInverseChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, 3.0f, c1o3);
+            VF::LBM::forwardChimera(     mfaab, mfbab, mfcab, vvx, vx2);
+            VF::LBM::forwardChimera(     mfabb, mfbbb, mfcbb, vvx, vx2);
+            VF::LBM::forwardChimera(     mfacb, mfbcb, mfccb, vvx, vx2);
+            VF::LBM::forwardInverseChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, 3.0f, c1o3);
+            VF::LBM::forwardChimera(     mfabc, mfbbc, mfcbc, vvx, vx2);
+            VF::LBM::forwardInverseChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, 9.0f, c1o9);
+
+            ////////////////////////////////////////////////////////////////////////////////////
+            // Cumulants
+            ////////////////////////////////////////////////////////////////////////////////////
+            real OxxPyyPzz = c1o1;
+            ////////////////////////////////////////////////////////////
+            //3.
+            //////////////////////////////
+            real OxyyPxzz = c1o1;
+            real OxyyMxzz = c1o1;
+            //real Oxyz = c1o1;
+            ////////////////////////////////////////////////////////////
+            //4.
+            //////////////////////////////
+            real O4 = c1o1;
+            ////////////////////////////////////////////////////////////
+            //5.
+            //////////////////////////////
+            real O5 = c1o1;
+            ////////////////////////////////////////////////////////////
+            //6.
+            //////////////////////////////
+            real O6 = c1o1;
+            ////////////////////////////////////////////////////////////
+
+
+            //central moments to cumulants
+            //4.
+            real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + c2o1 * mfbba * mfbab) * OOrho;
+            real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) * OOrho;
+            real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) * OOrho;
+
+            real CUMcca = mfcca - (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) * OOrho - c1o9*(drho * OOrho));
+            real CUMcac = mfcac - (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) * OOrho - c1o9*(drho * OOrho));
+            real CUMacc = mfacc - (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) * OOrho - c1o9*(drho * OOrho));
+
+            //5.
+            real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) * OOrho;
+            real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) * OOrho;
+            real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) * OOrho;
+
+            //6.
+            real CUMccc = mfccc + ((-c4o1 *  mfbbb * mfbbb
+                - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+                - c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
+                - c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) * OOrho
+                + (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+                + c2o1 * (mfcaa * mfaca * mfaac)
+                + c16o1 *  mfbba * mfbab * mfabb) * OOrho * OOrho
+                - c1o3 * (mfacc + mfcac + mfcca) * OOrho
+                - c1o9 * (mfcaa + mfaca + mfaac) * OOrho
+                + (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+                + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) * OOrho * OOrho  * c2o3
+                + c1o27*((drho * drho - drho) * OOrho * OOrho ));
+
+
+            //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)- c3o1 * (c1o1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
+                mxxMyy    += omega * (-mxxMyy) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy);
+                mxxMzz    += omega * (-mxxMzz) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz);
+
+            }
+            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+            ////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 * (-c2o1*  mxxMyy + mxxMzz + mxxPyyPzz);
+            mfaac = c1o3 * (mxxMyy - c2o1* mxxMzz + mxxPyyPzz);
+
+            //3.
+            // linear combinations
+
+            real mxxyPyzz = mfcba + mfabc;
+            real mxxyMyzz = mfcba - mfabc;
+
+            real mxxzPyyz = mfcab + mfacb;
+            real mxxzMyyz = mfcab - mfacb;
+
+            real mxyyPxzz = mfbca + mfbac;
+            real mxyyMxzz = mfbca - mfbac;
+
+            //relax
+            //////////////////////////////////////////////////////////////////////////
+            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 + c1o3*((c3o1*mfcaa + c1o1) * mfabb + c6o1 * mfbba * mfbab) * OOrho; 
+            mfbcb = CUMbcb + c1o3*((c3o1*mfaca + c1o1) * mfbab + c6o1 * mfbba * mfabb) * OOrho;
+            mfbbc = CUMbbc + c1o3*((c3o1*mfaac + c1o1) * mfbba + c6o1 * mfbab * mfabb) * OOrho;
+
+            mfcca = CUMcca + (((mfcaa * mfaca + c2o1 * mfbba * mfbba)*c9o1 + c3o1 * (mfcaa + mfaca)) * OOrho - (drho * OOrho))*c1o9;
+            mfcac = CUMcac + (((mfcaa * mfaac + c2o1 * mfbab * mfbab)*c9o1 + c3o1 * (mfcaa + mfaac)) * OOrho - (drho * OOrho))*c1o9;
+            mfacc = CUMacc + (((mfaac * mfaca + c2o1 * mfabb * mfabb)*c9o1 + c3o1 * (mfaac + mfaca)) * OOrho - (drho * OOrho))*c1o9;
+
+            //5.
+            mfbcc = CUMbcc + c1o3 *(c3o1*(mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + (mfbca + mfbac)) * OOrho;
+            mfcbc = CUMcbc + c1o3 *(c3o1*(mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + (mfcba + mfabc)) * OOrho;
+            mfccb = CUMccb + c1o3 *(c3o1*(mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) +  (mfacb + mfcab)) * OOrho;
+
+            //6.
+            mfccc = 
+                CUMccc - ((-c4o1 *  mfbbb * mfbbb
+                - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+                - c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
+                - c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) * OOrho
+                + (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+                + c2o1 * (mfcaa * mfaca * mfaac)
+                + c16o1 *  mfbba * mfbab * mfabb) * OOrho * OOrho
+                - c1o3 * (mfacc + mfcac + mfcca) * OOrho
+                - c1o9 * (mfcaa + mfaca + mfaac) * OOrho
+                + (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+                + (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) * OOrho * OOrho * c2o3
+                + c1o27*((drho * drho - drho) * OOrho * OOrho ));
+
+            ////////////////////////////////////////////////////////////////////////////////////
+            //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
+            ////////////////////////////////////////////////////////////////////////////////////
+            // X - Dir
+            VF::LBM::backwardInverseChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o1, c1o1);
+            VF::LBM::backwardChimera(			mfaba, mfbba, mfcba, vvx, vx2);
+            VF::LBM::backwardInverseChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, 3.0f, c1o3);
+            VF::LBM::backwardChimera(			mfaab, mfbab, mfcab, vvx, vx2);
+            VF::LBM::backwardChimera(			mfabb, mfbbb, mfcbb, vvx, vx2);
+            VF::LBM::backwardChimera(			mfacb, mfbcb, mfccb, vvx, vx2);
+            VF::LBM::backwardInverseChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, 3.0f, c1o3);
+            VF::LBM::backwardChimera(			mfabc, mfbbc, mfcbc, vvx, vx2);
+            VF::LBM::backwardInverseChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, 9.0f, c1o9);
+
+            ////////////////////////////////////////////////////////////////////////////////////
+            //mit 1/6, 2/3, 1/6, 0, 0, 0, 1/18, 2/9, 1/18   Konditionieren
+            ////////////////////////////////////////////////////////////////////////////////////
+            // Y - Dir
+            VF::LBM::backwardInverseChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2, 6.0f , c1o6 );
+            VF::LBM::backwardChimera(			mfaab, mfabb, mfacb, vvy, vy2);
+            VF::LBM::backwardInverseChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, 18.0f, c1o18);
+            VF::LBM::backwardInverseChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2, 1.5f , c2o3 );
+            VF::LBM::backwardChimera(			mfbab, mfbbb, mfbcb, vvy, vy2);
+            VF::LBM::backwardInverseChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2, 4.5f , c2o9 );
+            VF::LBM::backwardInverseChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2, 6.0f , c1o6 );
+            VF::LBM::backwardChimera(			mfcab, mfcbb, mfccb, vvy, vy2);
+            VF::LBM::backwardInverseChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, 18.0f, c1o18);
+
+            ////////////////////////////////////////////////////////////////////////////////////
+            //mit 1/36, 1/9, 1/36, 1/9, 4/9, 1/9, 1/36, 1/9, 1/36 Konditionieren
+            ////////////////////////////////////////////////////////////////////////////////////
+            // Z - Dir
+            VF::LBM::backwardInverseChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, 36.0f, c1o36);
+            VF::LBM::backwardInverseChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2, 9.0f , c1o9 );
+            VF::LBM::backwardInverseChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, 36.0f, c1o36);
+            VF::LBM::backwardInverseChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2, 9.0f , c1o9 );
+            VF::LBM::backwardInverseChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2, 2.25f, c4o9 );
+            VF::LBM::backwardInverseChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2, 9.0f , c1o9 );
+            VF::LBM::backwardInverseChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, 36.0f, c1o36);
+            VF::LBM::backwardInverseChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2, 9.0f , c1o9 );
+            VF::LBM::backwardInverseChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, 36.0f, 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[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;
+        }
+    }
 }
 ////////////////////////////////////////////////////////////////////////////////
 
diff --git a/src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h b/src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h
index 3589bcea15dd73771ff0f7579401e65da7010389..fb4a0a556d0a998aed87811355cd6743258dfba9 100644
--- a/src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h
+++ b/src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h
@@ -131,6 +131,36 @@ extern "C" void KernelKumNewSP27(   unsigned int numberOfThreads,
 									int size_Mat,
 									bool EvenOrOdd);
 
+//////////////////////////////////////////////////////////////////////////
+//! \brief Cumulant LBM kernel
+extern "C" void CumulantK17LBMDeviceKernel(
+	uint numberOfThreads,
+	real omega,
+	uint* typeOfGridNode,
+	uint* neighborX,
+	uint* neighborY,
+	uint* neighborZ,
+	real* distributions,
+	int size_Mat,
+    int level,
+	real* forces,
+	bool isEvenTimestep);
+
+    //////////////////////////////////////////////////////////////////////////
+//! \brief Cumulant LBM kernel
+extern "C" void CumulantK17LBMDeviceKernel_old(
+	uint numberOfThreads,
+	real omega,
+	uint* typeOfGridNode,
+	uint* neighborX,
+	uint* neighborY,
+	uint* neighborZ,
+	real* distributions,
+	int size_Mat,
+    int level,
+	real* forces,
+	bool isEvenTimestep);
+
 extern "C" void CumulantOnePreconditionedErrorDiffusionChimCompSP27(
 	unsigned int numberOfThreads,
 	real s9,
diff --git a/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh b/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh
index b41724df488f7aea97ed5e9e2bcf9282ff6bc370..069682862398e51365f304b8a3ca04375552df7f 100644
--- a/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh
+++ b/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh
@@ -141,6 +141,35 @@ extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27(real s9,
 													bool EvenOrOdd);
 
 
+/////////////////////////////////////////////////////////////////////////
+//! \brief \ref Cumulant_K17_LBM_Device_Kernel : Cumulant K17 lattice Boltzmann device kernel function 
+extern "C" __global__ void Cumulant_K17_LBM_Device_Kernel(
+	real omega,
+	uint* typeOfGridNode,
+	uint* neighborX,
+	uint* neighborY,
+	uint* neighborZ,
+	real* distributions,
+	int size_Mat,
+    int level,
+	real* forces,
+	bool isEvenTimestep);
+
+    /////////////////////////////////////////////////////////////////////////
+//! \brief \ref Cumulant_K17_LBM_Device_Kernel : Cumulant K17 lattice Boltzmann device kernel function 
+extern "C" __global__ void Cumulant_K17_LBM_Device_Kernel_old(
+	real omega,
+	uint* typeOfGridNode,
+	uint* neighborX,
+	uint* neighborY,
+	uint* neighborZ,
+	real* distributions,
+	int size_Mat,
+    int level,
+	real* forces,
+	bool isEvenTimestep);
+
+
 extern "C" __global__ void Cumulant_One_preconditioned_errorDiffusion_chim_Comp_SP_27(
 	real omega,
 	unsigned int* bcMatD,
diff --git a/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu b/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu
index 41bde987cb1b5f517c6303226966bfd5909702a2..0442a51172f6f716725a747bf5d70018ce4c5073 100644
--- a/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu
+++ b/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu
@@ -353,6 +353,72 @@ extern "C" void KernelKumNewCompSP27(unsigned int numberOfThreads,
 		//													EvenOrOdd); 
 		//getLastCudaError("LB_Kernel_Kum_New_Comp_SP_27 execution failed"); 
 }
+
+//////////////////////////////////////////////////////////////////////////
+extern "C" void CumulantK17LBMDeviceKernel(
+	uint numberOfThreads,
+	real omega,
+	uint* typeOfGridNode,
+	uint* neighborX,
+	uint* neighborY,
+	uint* neighborZ,
+	real* distributions,
+	int size_Mat,
+    int level,
+	real* forces,
+	bool isEvenTimestep)
+{
+	int Grid = (size_Mat / numberOfThreads) + 1;
+	dim3 grid(Grid, 1, 1);
+	dim3 threads(numberOfThreads, 1, 1);
+
+	Cumulant_K17_LBM_Device_Kernel <<< grid, threads >>> (
+		omega,
+		typeOfGridNode,
+		neighborX,
+		neighborY,
+		neighborZ,
+		distributions,
+		size_Mat,
+        level,
+		forces,
+		isEvenTimestep);
+	getLastCudaError("Cumulant_K17_AA2016_chim_Comp_SP_27 execution failed");
+}
+
+
+//////////////////////////////////////////////////////////////////////////
+extern "C" void CumulantK17LBMDeviceKernel_old(
+	uint numberOfThreads,
+	real omega,
+	uint* typeOfGridNode,
+	uint* neighborX,
+	uint* neighborY,
+	uint* neighborZ,
+	real* distributions,
+	int size_Mat,
+    int level,
+	real* forces,
+	bool isEvenTimestep)
+{
+	int Grid = (size_Mat / numberOfThreads) + 1;
+	dim3 grid(Grid, 1, 1);
+	dim3 threads(numberOfThreads, 1, 1);
+
+	Cumulant_K17_LBM_Device_Kernel_old <<< grid, threads >>> (
+		omega,
+		typeOfGridNode,
+		neighborX,
+		neighborY,
+		neighborZ,
+		distributions,
+		size_Mat,
+        level,
+		forces,
+		isEvenTimestep);
+	getLastCudaError("Cumulant_K17_AA2016_chim_Comp_SP_27 execution failed");
+}
+
 //////////////////////////////////////////////////////////////////////////
 extern "C" void CumulantOnePreconditionedErrorDiffusionChimCompSP27(unsigned int numberOfThreads,
 																	real s9,
diff --git a/src/gpu/VirtualFluids_GPU/LBM/D3Q27.h b/src/gpu/VirtualFluids_GPU/LBM/D3Q27.h
index 546dccd463a96ad3173517d09f222acde11e2448..5e769b603e7c6677b7f9e1189f5c4fe27051f795 100644
--- a/src/gpu/VirtualFluids_GPU/LBM/D3Q27.h
+++ b/src/gpu/VirtualFluids_GPU/LBM/D3Q27.h
@@ -21,6 +21,7 @@
 #define dirBN   /*f17*/  16
 #define dirTS   /*f18*/  17
 #define dirZERO /*f0 */  18
+#define dirREST /*f0 */  18
 
 #define dirTNE    /*f */  19
 #define dirBNE    /*f */  20
diff --git a/src/lbm/ChimeraTests.cpp b/src/lbm/ChimeraTests.cpp
index 2b9e13ad7219952d1cf2f02f44db0004aad36cd8..9395cb587d21048bd6d4aea4e23023ba5919b51e 100644
--- a/src/lbm/ChimeraTests.cpp
+++ b/src/lbm/ChimeraTests.cpp
@@ -2,6 +2,12 @@
 
 #include "Chimera.h"
 
+#ifdef VF_DOUBLE_ACCURACY
+#define REAL_EQ(a) testing::DoubleEq(a)
+#else
+#define REAL_EQ(a) testing::FloatEq(a)
+#endif
+
 /*
 * InverseChimeraWithK
 */
@@ -19,9 +25,9 @@ TEST(ChimeraTest, forwardInverseChimeraWithK)
 
     VF::LBM::forwardInverseChimeraWithK(mfa, mfb, mfc, vv, v2, K, Kinverse);
 
-    EXPECT_THAT(mfa, testing::DoubleEq(3.));  // mfa + mfb + mfc
-    EXPECT_THAT(mfb, testing::DoubleEq(-4.)); // -(mfa + mfb + mfc + 1)
-    EXPECT_THAT(mfc, testing::DoubleEq(6.));  // (mfa + mfc) + (mfa + mfb + mfc + 1)
+    EXPECT_THAT(mfa, REAL_EQ(3.));  // mfa + mfb + mfc
+    EXPECT_THAT(mfb, REAL_EQ(-4.)); // -(mfa + mfb + mfc + 1)
+    EXPECT_THAT(mfc, REAL_EQ(6.));  // (mfa + mfc) + (mfa + mfb + mfc + 1)
 }
 
 
@@ -41,9 +47,9 @@ TEST(ChimeraTest, backwardInverseChimeraWithK)
     VF::LBM::backwardInverseChimeraWithK(mfa, mfb, mfc, vv, v2, K, Kinverse);
 
     // resulting in the start values from the test above.
-    EXPECT_THAT(mfa, testing::DoubleEq(1.));
-    EXPECT_THAT(mfb, testing::DoubleEq(1.));
-    EXPECT_THAT(mfc, testing::DoubleEq(1.));
+    EXPECT_THAT(mfa, REAL_EQ(1.));
+    EXPECT_THAT(mfb, REAL_EQ(1.));
+    EXPECT_THAT(mfc, REAL_EQ(1.));
 }
 
 /*
@@ -60,9 +66,9 @@ TEST(ChimeraTest, forwardChimera)
 
     VF::LBM::forwardChimera(mfa, mfb, mfc, vv, v2);
 
-    EXPECT_THAT(mfa, testing::DoubleEq(3.));  // mfa + mfb + mfc
-    EXPECT_THAT(mfb, testing::DoubleEq(-3.)); // -(mfa + mfb + mfc)
-    EXPECT_THAT(mfc, testing::DoubleEq(5.));  // (mfa + mfc) + (mfa + mfb + mfc)
+    EXPECT_THAT(mfa, REAL_EQ(3.));  // mfa + mfb + mfc
+    EXPECT_THAT(mfb, REAL_EQ(-3.)); // -(mfa + mfb + mfc)
+    EXPECT_THAT(mfc, REAL_EQ(5.));  // (mfa + mfc) + (mfa + mfb + mfc)
 }
 
 
@@ -79,9 +85,9 @@ TEST(ChimeraTest, backwardChimera)
     VF::LBM::backwardChimera(mfa, mfb, mfc, vv, v2);
 
     // resulting in the start values from the test above.
-    EXPECT_THAT(mfa, testing::DoubleEq(1.));
-    EXPECT_THAT(mfb, testing::DoubleEq(1.));
-    EXPECT_THAT(mfc, testing::DoubleEq(1.));
+    EXPECT_THAT(mfa, REAL_EQ(1.));
+    EXPECT_THAT(mfb, REAL_EQ(1.));
+    EXPECT_THAT(mfc, REAL_EQ(1.));
 }
 
 /*
@@ -100,9 +106,9 @@ TEST(ChimeraTest, forwardChimeraWithK)
 
     VF::LBM::forwardChimeraWithK(mfa, mfb, mfc, vv, v2, K);
 
-    EXPECT_THAT(mfa, testing::DoubleEq(3.));  // mfa + mfb + mfc
-    EXPECT_THAT(mfb, testing::DoubleEq(-4.)); // -(mfa + mfb + mfc)
-    EXPECT_THAT(mfc, testing::DoubleEq(6.));  // (mfa + mfc) + (mfa + mfb + mfc)
+    EXPECT_THAT(mfa, REAL_EQ(3.));  // mfa + mfb + mfc
+    EXPECT_THAT(mfb, REAL_EQ(-4.)); // -(mfa + mfb + mfc)
+    EXPECT_THAT(mfc, REAL_EQ(6.));  // (mfa + mfc) + (mfa + mfb + mfc)
 }
 
 
@@ -121,7 +127,7 @@ TEST(ChimeraTest, backwardChimeraWithK)
     VF::LBM::backwardChimeraWithK(mfa, mfb, mfc, vv, v2, K);
 
     // resulting in the start values from the test above.
-    EXPECT_THAT(mfa, testing::DoubleEq(1.));
-    EXPECT_THAT(mfb, testing::DoubleEq(1.));
-    EXPECT_THAT(mfc, testing::DoubleEq(1.));
+    EXPECT_THAT(mfa, REAL_EQ(1.));
+    EXPECT_THAT(mfb, REAL_EQ(1.));
+    EXPECT_THAT(mfc, REAL_EQ(1.));
 }
diff --git a/src/lbm/CumulantChimera.h b/src/lbm/CumulantChimera.h
new file mode 100644
index 0000000000000000000000000000000000000000..90c3d53cd4915e0f5a43b392ac0158387b4c2e8b
--- /dev/null
+++ b/src/lbm/CumulantChimera.h
@@ -0,0 +1,435 @@
+#ifndef LBM_CUMULANT_CHIMERA_H
+#define LBM_CUMULANT_CHIMERA_H
+
+#ifndef __host__
+#define __host__
+#endif
+#ifndef __device__
+#define __device__
+#endif
+
+
+#include <basics/Core/DataTypes.h>
+#include <basics/Core/RealConstants.h>
+
+#include "D3Q27.h"
+#include "Chimera.h"
+#include "MacroscopicQuantities.h"
+
+namespace VF
+{
+namespace LBM
+{
+
+struct Distribution27
+{
+   real f[27];
+
+   inline __host__ __device__ real getDensity_() const
+   {
+       return getDensity(f);
+   }
+};
+
+inline __host__ __device__ Distribution27 cumulantChimera(const Distribution27& distribution, real omega, const real* forces)
+{
+    real mfcbb = distribution.f[DIR::PZZ];
+    real mfabb = distribution.f[DIR::MZZ];
+    real mfbcb = distribution.f[DIR::ZPZ];
+    real mfbab = distribution.f[DIR::ZMZ];
+    real mfbbc = distribution.f[DIR::ZZP];
+    real mfbba = distribution.f[DIR::ZZM];
+    real mfccb = distribution.f[DIR::PPZ];
+    real mfaab = distribution.f[DIR::MMZ];
+    real mfcab = distribution.f[DIR::PMZ];
+    real mfacb = distribution.f[DIR::MPZ];
+    real mfcbc = distribution.f[DIR::PZP];
+    real mfaba = distribution.f[DIR::MZM];
+    real mfcba = distribution.f[DIR::PZM];
+    real mfabc = distribution.f[DIR::MZP];
+    real mfbcc = distribution.f[DIR::ZPP];
+    real mfbaa = distribution.f[DIR::ZMM];
+    real mfbca = distribution.f[DIR::ZPM];
+    real mfbac = distribution.f[DIR::ZMP];
+    real mfccc = distribution.f[DIR::PPP];
+    real mfacc = distribution.f[DIR::MPP];
+    real mfcac = distribution.f[DIR::PMP];
+    real mfaac = distribution.f[DIR::MMP];
+    real mfcca = distribution.f[DIR::PPM];
+    real mfaca = distribution.f[DIR::MPM];
+    real mfcaa = distribution.f[DIR::PMM];
+    real mfaaa = distribution.f[DIR::MMM];
+    real mfbbb = distribution.f[DIR::ZZZ];
+
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Calculate density and velocity using pyramid summation for low round-off errors as in Eq. (J1)-(J3) \ref
+    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa  2015.05.001 ]</b></a>
+    //!
+    real drho =
+    	((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) +
+    	(((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) +
+    	((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; 
+    real rho = c1o1 + drho;
+    real OOrho = c1o1 / rho;    
+    real vvx = 
+    	((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
+    	(((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
+    	(mfcbb - mfabb)) * OOrho;
+    real vvy = 
+    	((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
+    	(((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
+    	(mfbcb - mfbab)) * OOrho;
+    real vvz = 
+    	((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
+    	(((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
+    	(mfbbc - mfbba)) * OOrho;
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Add half of the acceleration (body force) to the velocity as in Eq. (42) \ref
+    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa  2015.05.001 ]</b></a>
+    //!
+    vvx += forces[0] * c1o2;
+    vvy += forces[1] * c1o2;
+    vvz += forces[2] * c1o2;
+    ////////////////////////////////////////////////////////////////////////////////////
+    // calculate the square of velocities for this lattice node
+    real vx2 = vvx*vvx;
+    real vy2 = vvy*vvy;
+    real vz2 = vvz*vvz;
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Set relaxation limiters for third order cumulants to default value \f$ \lambda=0.001 \f$ according to section 6 in \ref
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    real wadjust;
+    real qudricLimitP = c1o100;
+    real qudricLimitM = c1o100;
+    real qudricLimitD = c1o100;
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Chimera transform from well conditioned distributions to central moments as defined in Appendix J in \ref
+    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa  2015.05.001 ]</b></a>
+    //! see also Eq. (6)-(14) in \ref
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    ////////////////////////////////////////////////////////////////////////////////////
+    // Z - Dir
+    VF::LBM::forwardInverseChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, c36o1, c1o36);
+    VF::LBM::forwardInverseChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::forwardInverseChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c36o1, c1o36);
+    VF::LBM::forwardInverseChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::forwardInverseChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2,  c9o4,  c4o9);
+    VF::LBM::forwardInverseChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::forwardInverseChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c36o1, c1o36);
+    VF::LBM::forwardInverseChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::forwardInverseChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c36o1, c1o36);   
+    ////////////////////////////////////////////////////////////////////////////////////
+    // Y - Dir
+    VF::LBM::forwardInverseChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2,  c6o1,  c1o6);
+    VF::LBM::forwardChimera(            mfaab, mfabb, mfacb, vvy, vy2);
+    VF::LBM::forwardInverseChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c18o1, c1o18);
+    VF::LBM::forwardInverseChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2,  c3o2,  c2o3);
+    VF::LBM::forwardChimera(            mfbab, mfbbb, mfbcb, vvy, vy2);
+    VF::LBM::forwardInverseChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2,  c9o2,  c2o9);
+    VF::LBM::forwardInverseChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2,  c6o1,  c1o6);
+    VF::LBM::forwardChimera(            mfcab, mfcbb, mfccb, vvy, vy2);
+    VF::LBM::forwardInverseChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c18o1, c1o18);   
+    ////////////////////////////////////////////////////////////////////////////////////
+    // X - Dir
+    VF::LBM::forwardInverseChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o1, c1o1);
+    VF::LBM::forwardChimera(            mfaba, mfbba, mfcba, vvx, vx2);
+    VF::LBM::forwardInverseChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c3o1, c1o3);
+    VF::LBM::forwardChimera(            mfaab, mfbab, mfcab, vvx, vx2);
+    VF::LBM::forwardChimera(            mfabb, mfbbb, mfcbb, vvx, vx2);
+    VF::LBM::forwardChimera(            mfacb, mfbcb, mfccb, vvx, vx2);
+    VF::LBM::forwardInverseChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c3o1, c1o3);
+    VF::LBM::forwardChimera(            mfabc, mfbbc, mfcbc, vvx, vx2);
+    VF::LBM::forwardInverseChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c3o1, c1o9); 
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Setting relaxation rates for non-hydrodynamic cumulants (default values). Variable names and equations    according to
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!  => [NAME IN PAPER]=[NAME IN CODE]=[DEFAULT VALUE].
+    //!  - Trace of second order cumulants \f$ C_{200}+C_{020}+C_{002} \f$ used to adjust bulk  viscosity:\f$\omega_2=OxxPyyPzz=1.0 \f$.
+    //!  - Third order cumulants \f$ C_{120}+C_{102}, C_{210}+C_{012}, C_{201}+C_{021} \f$: \f$ \omega_3=OxyyPxzz   \f$ set according to Eq. (111) with simplifications assuming \f$ \omega_2=1.0\f$.
+    //!  - Third order cumulants \f$ C_{120}-C_{102}, C_{210}-C_{012}, C_{201}-C_{021} \f$: \f$ \omega_4 =  OxyyMxzz \f$ set according to Eq. (112) with simplifications assuming \f$ \omega_2 = 1.0\f$.
+    //!  - Third order cumulants \f$ C_{111} \f$: \f$ \omega_5 = Oxyz \f$ set according to Eq. (113) with   simplifications assuming \f$ \omega_2 = 1.0\f$  (modify for different bulk viscosity).
+    //!  - Fourth order cumulants \f$ C_{220}, C_{202}, C_{022}, C_{211}, C_{121}, C_{112} \f$: for simplification  all set to the same default value \f$ \omega_6=\omega_7=\omega_8=O4=1.0 \f$.
+    //!  - Fifth order cumulants \f$ C_{221}, C_{212}, C_{122}\f$: \f$\omega_9=O5=1.0\f$.
+    //!  - Sixth order cumulant \f$ C_{222}\f$: \f$\omega_{10}=O6=1.0\f$.
+    //!
+    ////////////////////////////////////////////////////////////
+    //2.
+    real OxxPyyPzz = c1o1;
+    ////////////////////////////////////////////////////////////
+    //3.
+    real OxyyPxzz = c8o1  * (-c2o1 + omega) * ( c1o1 + c2o1*omega) / (-c8o1 - c14o1*omega + c7o1*omega*omega);
+    real OxyyMxzz = c8o1  * (-c2o1 + omega) * (-c7o1 + c4o1*omega) / (c56o1 - c50o1*omega + c9o1*omega*omega);
+    real Oxyz     = c24o1 * (-c2o1 + omega) * (-c2o1 - c7o1*omega + c3o1*omega*omega) / (c48o1 + c152o1*omega - c130o1*omega*omega + c29o1*omega*omega*omega);
+    ////////////////////////////////////////////////////////////
+    //4.
+    real O4 = c1o1;
+    ////////////////////////////////////////////////////////////
+    //5.
+    real O5 = c1o1;
+    ////////////////////////////////////////////////////////////
+    //6.
+    real O6 = c1o1; 
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (114) and (115) 
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //! with simplifications assuming \f$ \omega_2 = 1.0 \f$ (modify for different bulk viscosity).
+    //!
+    real A = (c4o1 + c2o1*omega - c3o1*omega*omega) / (c2o1 - c7o1*omega + c5o1*omega*omega);
+    real B = (c4o1 + c28o1*omega - c14o1*omega*omega) / (c6o1 - c21o1*omega + c15o1*omega*omega);   
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Compute cumulants from central moments according to Eq. (20)-(23) in
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    ////////////////////////////////////////////////////////////
+    //4.
+    real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + c2o1 * mfbba * mfbab) * OOrho;
+    real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb) * OOrho;
+    real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + c2o1 * mfbab * mfabb) * OOrho;  
+    real CUMcca = mfcca - (((mfcaa * mfaca + c2o1 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) * OOrho - c1o9*(drho   * OOrho));
+    real CUMcac = mfcac - (((mfcaa * mfaac + c2o1 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) * OOrho - c1o9*(drho   * OOrho));
+    real CUMacc = mfacc - (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) * OOrho - c1o9*(drho   * OOrho));
+    ////////////////////////////////////////////////////////////
+    //5.
+    real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba *  mfabc)) + c1o3 * (mfbca + mfbac)) * OOrho;
+    real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba *  mfbac)) + c1o3 * (mfcba + mfabc)) * OOrho;
+    real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb *  mfcba)) + c1o3 * (mfacb + mfcab)) * OOrho;
+    ////////////////////////////////////////////////////////////
+    //6.
+    real CUMccc = mfccc + ((-c4o1 *  mfbbb * mfbbb
+    	- (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+    	- c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
+    	- c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) * OOrho
+    	+ (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+    	+ c2o1 * (mfcaa * mfaca * mfaac)
+    	+ c16o1 *  mfbba * mfbab * mfabb) * OOrho * OOrho
+    	- c1o3 * (mfacc + mfcac + mfcca) * OOrho
+    	- c1o9 * (mfcaa + mfaca + mfaac) * OOrho
+    	+ (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+    	+ (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) * OOrho * OOrho  * c2o3
+    	+ c1o27*((drho * drho - drho) * OOrho * OOrho));    
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Compute linear combinations of second and third order cumulants
+    //!
+    ////////////////////////////////////////////////////////////
+    //2.
+    real mxxPyyPzz = mfcaa + mfaca + mfaac;
+    real mxxMyy = mfcaa - mfaca;
+    real mxxMzz = mfcaa - mfaac;
+    ////////////////////////////////////////////////////////////
+    //3.
+    real mxxyPyzz = mfcba + mfabc;
+    real mxxyMyzz = mfcba - mfabc;  
+    real mxxzPyyz = mfcab + mfacb;
+    real mxxzMyyz = mfcab - mfacb;  
+    real mxyyPxzz = mfbca + mfbac;
+    real mxyyMxzz = mfbca - mfbac;  
+    ////////////////////////////////////////////////////////////////////////////////////
+    //incl. correction
+    ////////////////////////////////////////////////////////////
+    //! - Compute velocity  gradients from second order cumulants according to Eq. (27)-(32)
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //! Further explanations of the correction in viscosity in Appendix H of
+    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa  2015.05.001 ]</b></a>
+    //! Note that the division by rho is omitted here as we need rho times the gradients later.
+    //!
+    real Dxy = -c3o1*omega*mfbba;
+    real Dxz = -c3o1*omega*mfbab;
+    real Dyz = -c3o1*omega*mfabb;
+    real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+    real dyuy = dxux + omega * c3o2 * mxxMyy;
+    real dzuz = dxux + omega * c3o2 * mxxMzz;
+    ////////////////////////////////////////////////////////////
+    //! - Relaxation of second order cumulants with correction terms according to Eq. (33)-(35) in
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz) - c3o1 * (c1o1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2  * dzuz);
+    mxxMyy    += omega * (-mxxMyy) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy);
+    mxxMzz    += omega * (-mxxMzz) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz);   
+    ////////////////////////////////////////////////////////////////////////////////////
+    ////no correction
+    //mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz);
+    //mxxMyy += -(-omega) * (-mxxMyy);
+    //mxxMzz += -(-omega) * (-mxxMzz);
+    //////////////////////////////////////////////////////////////////////////
+    mfabb += omega * (-mfabb);
+    mfbab += omega * (-mfbab);
+    mfbba += omega * (-mfbba);  
+    ////////////////////////////////////////////////////////////////////////////////////
+    //relax
+    //////////////////////////////////////////////////////////////////////////
+    // incl. limiter
+    //! - Relaxation of third order cumulants including limiter according to Eq. (116)-(123)
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    wadjust   = Oxyz + (c1o1 - Oxyz)*abs(mfbbb) / (abs(mfbbb) + qudricLimitD);
+    mfbbb    += wadjust * (-mfbbb);
+    wadjust   = OxyyPxzz + (c1o1 - OxyyPxzz)*abs(mxxyPyzz) / (abs(mxxyPyzz) + qudricLimitP);
+    mxxyPyzz += wadjust * (-mxxyPyzz);
+    wadjust   = OxyyMxzz + (c1o1 - OxyyMxzz)*abs(mxxyMyzz) / (abs(mxxyMyzz) + qudricLimitM);
+    mxxyMyzz += wadjust * (-mxxyMyzz);
+    wadjust   = OxyyPxzz + (c1o1 - OxyyPxzz)*abs(mxxzPyyz) / (abs(mxxzPyyz) + qudricLimitP);
+    mxxzPyyz += wadjust * (-mxxzPyyz);
+    wadjust   = OxyyMxzz + (c1o1 - OxyyMxzz)*abs(mxxzMyyz) / (abs(mxxzMyyz) + qudricLimitM);
+    mxxzMyyz += wadjust * (-mxxzMyyz);
+    wadjust   = OxyyPxzz + (c1o1 - OxyyPxzz)*abs(mxyyPxzz) / (abs(mxyyPxzz) + qudricLimitP);
+    mxyyPxzz += wadjust * (-mxyyPxzz);
+    wadjust   = OxyyMxzz + (c1o1 - OxyyMxzz)*abs(mxyyMxzz) / (abs(mxyyMxzz) + qudricLimitM);
+    mxyyMxzz += wadjust * (-mxyyMxzz);
+    //////////////////////////////////////////////////////////////////////////
+    // no limiter
+    //mfbbb += OxyyMxzz * (-mfbbb);
+    //mxxyPyzz += OxyyPxzz * (-mxxyPyzz);
+    //mxxyMyzz += OxyyMxzz * (-mxxyMyzz);
+    //mxxzPyyz += OxyyPxzz * (-mxxzPyyz);
+    //mxxzMyyz += OxyyMxzz * (-mxxzMyyz);
+    //mxyyPxzz += OxyyPxzz * (-mxyyPxzz);
+    //mxyyMxzz += OxyyMxzz * (-mxyyMxzz);   
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Compute inverse linear combinations of second and third order cumulants
+    //!
+    mfcaa = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz);
+    mfaca = c1o3 * (-c2o1*  mxxMyy + mxxMzz + mxxPyyPzz);
+    mfaac = c1o3 * (mxxMyy - c2o1* mxxMzz + mxxPyyPzz); 
+    mfcba = ( mxxyMyzz + mxxyPyzz) * c1o2;
+    mfabc = (-mxxyMyzz + mxxyPyzz) * c1o2;
+    mfcab = ( mxxzMyyz + mxxzPyyz) * c1o2;
+    mfacb = (-mxxzMyyz + mxxzPyyz) * c1o2;
+    mfbca = ( mxyyMxzz + mxyyPxzz) * c1o2;
+    mfbac = (-mxyyMxzz + mxyyPxzz) * c1o2;
+    //////////////////////////////////////////////////////////////////////////  
+    //////////////////////////////////////////////////////////////////////////
+    //4.
+    // no limiter
+    //! - Relax fourth order cumulants to modified equilibrium for fourth order convergence of diffusion according  to Eq. (43)-(48)
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    CUMacc = -O4*(c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMacc);
+    CUMcac = -O4*(c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMcac);
+    CUMcca = -O4*(c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * A + (c1o1 - O4) * (CUMcca);
+    CUMbbc = -O4*(c1o1 / omega - c1o2) * Dxy           * c1o3 * B + (c1o1 - O4) * (CUMbbc);
+    CUMbcb = -O4*(c1o1 / omega - c1o2) * Dxz           * c1o3 * B + (c1o1 - O4) * (CUMbcb);
+    CUMcbb = -O4*(c1o1 / omega - c1o2) * Dyz           * c1o3 * B + (c1o1 - O4) * (CUMcbb); 
+    //////////////////////////////////////////////////////////////////////////
+    //5.
+    CUMbcc += O5 * (-CUMbcc);
+    CUMcbc += O5 * (-CUMcbc);
+    CUMccb += O5 * (-CUMccb);   
+    //////////////////////////////////////////////////////////////////////////
+    //6.
+    CUMccc += O6 * (-CUMccc);   
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Compute central moments from post collision cumulants according to Eq. (53)-(56) in
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //! 
+    //////////////////////////////////////////////////////////////////////////
+    //4.
+    mfcbb = CUMcbb + c1o3*((c3o1*mfcaa + c1o1) * mfabb + c6o1 * mfbba * mfbab) * OOrho;
+    mfbcb = CUMbcb + c1o3*((c3o1*mfaca + c1o1) * mfbab + c6o1 * mfbba * mfabb) * OOrho;
+    mfbbc = CUMbbc + c1o3*((c3o1*mfaac + c1o1) * mfbba + c6o1 * mfbab * mfabb) * OOrho; 
+    mfcca = CUMcca + (((mfcaa * mfaca + c2o1 * mfbba * mfbba)*c9o1 + c3o1 * (mfcaa + mfaca)) * OOrho - (drho *  OOrho))*c1o9;
+    mfcac = CUMcac + (((mfcaa * mfaac + c2o1 * mfbab * mfbab)*c9o1 + c3o1 * (mfcaa + mfaac)) * OOrho - (drho *  OOrho))*c1o9;
+    mfacc = CUMacc + (((mfaac * mfaca + c2o1 * mfabb * mfabb)*c9o1 + c3o1 * (mfaac + mfaca)) * OOrho - (drho *  OOrho))*c1o9; 
+    //////////////////////////////////////////////////////////////////////////
+    //5.
+    mfbcc = CUMbcc + c1o3 *(c3o1*(mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb +    mfbba * mfabc)) + (mfbca + mfbac)) * OOrho;
+    mfcbc = CUMcbc + c1o3 *(c3o1*(mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab +    mfbba * mfbac)) + (mfcba + mfabc)) * OOrho;
+    mfccb = CUMccb + c1o3 *(c3o1*(mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca +    mfabb * mfcba)) + (mfacb + mfcab)) * OOrho; 
+    //////////////////////////////////////////////////////////////////////////
+    //6.
+    mfccc =	CUMccc - ((-c4o1 *  mfbbb * mfbbb
+    		- (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
+    		- c4o1 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
+    		- c2o1 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) * OOrho
+    		+ (c4o1 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
+    			+ c2o1 * (mfcaa * mfaca * mfaac)
+    			+ c16o1 *  mfbba * mfbab * mfabb) * OOrho * OOrho
+    		- c1o3 * (mfacc + mfcac + mfcca) * OOrho
+    		- c1o9 * (mfcaa + mfaca + mfaac) * OOrho
+    		+ (c2o1 * (mfbab * mfbab + mfabb * mfabb + mfbba * mfbba)
+    			+ (mfaac * mfaca + mfaac * mfcaa + mfaca * mfcaa) + c1o3 *(mfaac + mfaca + mfcaa)) * OOrho * OOrho * c2o3
+    		+ c1o27*((drho * drho - drho) * OOrho * OOrho));    
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! -  Add acceleration (body force) to first order cumulants according to Eq. (85)-(87) in
+    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa  2015.05.001 ]</b></a>
+    //!
+    mfbaa = -mfbaa;
+    mfaba = -mfaba;
+    mfaab = -mfaab; 
+    ////////////////////////////////////////////////////////////////////////////////////
+    //! - Chimera transform from central moments to well conditioned distributions as defined in Appendix J in
+    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa  2015.05.001 ]</b></a>
+    //! see also Eq. (88)-(96) in
+    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05  040 ]</b></a>
+    //!
+    ////////////////////////////////////////////////////////////////////////////////////
+    // X - Dir
+    VF::LBM::backwardInverseChimeraWithK(mfaaa, mfbaa, mfcaa, vvx, vx2, c1o1, c1o1);
+    VF::LBM::backwardChimera(            mfaba, mfbba, mfcba, vvx, vx2);
+    VF::LBM::backwardInverseChimeraWithK(mfaca, mfbca, mfcca, vvx, vx2, c3o1, c1o3);
+    VF::LBM::backwardChimera(            mfaab, mfbab, mfcab, vvx, vx2);
+    VF::LBM::backwardChimera(            mfabb, mfbbb, mfcbb, vvx, vx2);
+    VF::LBM::backwardChimera(            mfacb, mfbcb, mfccb, vvx, vx2);
+    VF::LBM::backwardInverseChimeraWithK(mfaac, mfbac, mfcac, vvx, vx2, c3o1, c1o3);
+    VF::LBM::backwardChimera(            mfabc, mfbbc, mfcbc, vvx, vx2);
+    VF::LBM::backwardInverseChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c9o1, c1o9);    
+    ////////////////////////////////////////////////////////////////////////////////////
+    // Y - Dir
+    VF::LBM::backwardInverseChimeraWithK(mfaaa, mfaba, mfaca, vvy, vy2,  c6o1,  c1o6);
+    VF::LBM::backwardChimera(            mfaab, mfabb, mfacb, vvy, vy2);
+    VF::LBM::backwardInverseChimeraWithK(mfaac, mfabc, mfacc, vvy, vy2, c18o1, c1o18);
+    VF::LBM::backwardInverseChimeraWithK(mfbaa, mfbba, mfbca, vvy, vy2,  c3o2,  c2o3);
+    VF::LBM::backwardChimera(            mfbab, mfbbb, mfbcb, vvy, vy2);
+    VF::LBM::backwardInverseChimeraWithK(mfbac, mfbbc, mfbcc, vvy, vy2,  c9o2,  c2o9);
+    VF::LBM::backwardInverseChimeraWithK(mfcaa, mfcba, mfcca, vvy, vy2,  c6o1,  c1o6);
+    VF::LBM::backwardChimera(            mfcab, mfcbb, mfccb, vvy, vy2);
+    VF::LBM::backwardInverseChimeraWithK(mfcac, mfcbc, mfccc, vvy, vy2, c18o1, c1o18);  
+    ////////////////////////////////////////////////////////////////////////////////////
+    // Z - Dir
+    VF::LBM::backwardInverseChimeraWithK(mfaaa, mfaab, mfaac, vvz, vz2, c36o1, c1o36);
+    VF::LBM::backwardInverseChimeraWithK(mfaba, mfabb, mfabc, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::backwardInverseChimeraWithK(mfaca, mfacb, mfacc, vvz, vz2, c36o1, c1o36);
+    VF::LBM::backwardInverseChimeraWithK(mfbaa, mfbab, mfbac, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::backwardInverseChimeraWithK(mfbba, mfbbb, mfbbc, vvz, vz2,  c9o4,  c4o9);
+    VF::LBM::backwardInverseChimeraWithK(mfbca, mfbcb, mfbcc, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::backwardInverseChimeraWithK(mfcaa, mfcab, mfcac, vvz, vz2, c36o1, c1o36);
+    VF::LBM::backwardInverseChimeraWithK(mfcba, mfcbb, mfcbc, vvz, vz2,  c9o1,  c1o9);
+    VF::LBM::backwardInverseChimeraWithK(mfcca, mfccb, mfccc, vvz, vz2, c36o1, c1o36);
+
+    Distribution27 distribution_calculated;
+    
+    distribution_calculated.f[DIR::PZZ] = mfcbb;
+    distribution_calculated.f[DIR::MZZ] = mfabb;
+    distribution_calculated.f[DIR::ZPZ] = mfbcb;
+    distribution_calculated.f[DIR::ZMZ] = mfbab;
+    distribution_calculated.f[DIR::ZZP] = mfbbc;
+    distribution_calculated.f[DIR::ZZM] = mfbba;
+    distribution_calculated.f[DIR::PPZ] = mfccb;
+    distribution_calculated.f[DIR::MMZ] = mfaab;
+    distribution_calculated.f[DIR::PMZ] = mfcab;
+    distribution_calculated.f[DIR::MPZ] = mfacb;
+    distribution_calculated.f[DIR::PZP] = mfcbc;
+    distribution_calculated.f[DIR::MZM] = mfaba;
+    distribution_calculated.f[DIR::PZM] = mfcba;
+    distribution_calculated.f[DIR::MZP] = mfabc;
+    distribution_calculated.f[DIR::ZPP] = mfbcc;
+    distribution_calculated.f[DIR::ZMM] = mfbaa;
+    distribution_calculated.f[DIR::ZPM] = mfbca;
+    distribution_calculated.f[DIR::ZMP] = mfbac;
+    distribution_calculated.f[DIR::PPP] = mfccc;
+    distribution_calculated.f[DIR::MPP] = mfacc;
+    distribution_calculated.f[DIR::PMP] = mfcac;
+    distribution_calculated.f[DIR::MMP] = mfaac;
+    distribution_calculated.f[DIR::PPM] = mfcca;
+    distribution_calculated.f[DIR::MPM] = mfaca;
+    distribution_calculated.f[DIR::PMM] = mfcaa;
+    distribution_calculated.f[DIR::MMM] = mfaaa;
+    distribution_calculated.f[DIR::ZZZ] = mfbbb;
+
+    return distribution_calculated;
+}
+
+}
+}
+#endif
diff --git a/src/lbm/D3Q27.h b/src/lbm/D3Q27.h
index b07c0e721ce845c2170709b283947aa2f6220e4c..4eaac9f7fba6edc4c3c3439ed5c299e04f1724df 100644
--- a/src/lbm/D3Q27.h
+++ b/src/lbm/D3Q27.h
@@ -36,6 +36,34 @@ static constexpr int BSE  = 24;
 static constexpr int BSW  = 25;
 static constexpr int REST = 26;
 
+static constexpr int PZZ = 0;
+static constexpr int MZZ = 1;
+static constexpr int ZPZ = 2;
+static constexpr int ZMZ = 3;
+static constexpr int ZZP = 4;
+static constexpr int ZZM = 5;
+static constexpr int PPZ = 6;
+static constexpr int MMZ = 7;
+static constexpr int PMZ = 8;
+static constexpr int MPZ = 9;
+static constexpr int PZP = 10;
+static constexpr int MZM = 11;
+static constexpr int PZM = 12;
+static constexpr int MZP = 13;
+static constexpr int ZPP = 14;
+static constexpr int ZMM = 15;
+static constexpr int ZPM = 16;
+static constexpr int ZMP = 17;
+static constexpr int PPP = 18;
+static constexpr int MPP = 19;
+static constexpr int PMP = 20;
+static constexpr int MMP = 21;
+static constexpr int PPM = 22;
+static constexpr int MPM = 23;
+static constexpr int PMM = 24;
+static constexpr int MMM = 25;
+static constexpr int ZZZ = 26;
+
 }
 }
 }