diff --git a/src/gpu/VirtualFluids_GPU/GPU/BoundaryConditions/QVelDevPlainBB27.cu b/src/gpu/VirtualFluids_GPU/GPU/BoundaryConditions/QVelDevPlainBB27.cu
index aa35fe96096cfc4082c36079ac64900114afa789..fd9dcb17407818d59271b6114ed8c8392e84eb9c 100644
--- a/src/gpu/VirtualFluids_GPU/GPU/BoundaryConditions/QVelDevPlainBB27.cu
+++ b/src/gpu/VirtualFluids_GPU/GPU/BoundaryConditions/QVelDevPlainBB27.cu
@@ -38,18 +38,18 @@
 using namespace vf::lbm::constant;
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QVelDevPlainBB27(
-    real* vx,
-    real* vy,
-    real* vz,
+    real* velocityX,
+    real* velocityY,
+    real* velocityZ,
     real* distributions,
-    int* k_Q,
+    int* subgridDistanceIndices,
     real* subgridDistances,
-    uint sizeQ,
-    int kQ,
+    uint numberOfSubgridIndices,
+    int numberOfBCnodes,
     uint* neighborX,
     uint* neighborY,
     uint* neighborZ,
-    uint size_Mat,
+    uint numberOfLBnodes,
     bool isEvenTimestep)
 {
     //////////////////////////////////////////////////////////////////////////
@@ -68,8 +68,8 @@ extern "C" __global__ void QVelDevPlainBB27(
    const unsigned k = nx*(ny*z + y) + x;
 
    //////////////////////////////////////////////////////////////////////////
-   // run for all indices in size of boundary condition (kQ)
-   if(k<kQ)
+   // run for all indices in size of boundary condition (numberOfBCnodes)
+   if(k < numberOfBCnodes)
    {
        //////////////////////////////////////////////////////////////////////////
        //! - Read distributions: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm \ref
@@ -78,72 +78,72 @@ extern "C" __global__ void QVelDevPlainBB27(
        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];
+          dist.f[dirE   ] = &distributions[dirE   *numberOfLBnodes];
+          dist.f[dirW   ] = &distributions[dirW   *numberOfLBnodes];
+          dist.f[dirN   ] = &distributions[dirN   *numberOfLBnodes];
+          dist.f[dirS   ] = &distributions[dirS   *numberOfLBnodes];
+          dist.f[dirT   ] = &distributions[dirT   *numberOfLBnodes];
+          dist.f[dirB   ] = &distributions[dirB   *numberOfLBnodes];
+          dist.f[dirNE  ] = &distributions[dirNE  *numberOfLBnodes];
+          dist.f[dirSW  ] = &distributions[dirSW  *numberOfLBnodes];
+          dist.f[dirSE  ] = &distributions[dirSE  *numberOfLBnodes];
+          dist.f[dirNW  ] = &distributions[dirNW  *numberOfLBnodes];
+          dist.f[dirTE  ] = &distributions[dirTE  *numberOfLBnodes];
+          dist.f[dirBW  ] = &distributions[dirBW  *numberOfLBnodes];
+          dist.f[dirBE  ] = &distributions[dirBE  *numberOfLBnodes];
+          dist.f[dirTW  ] = &distributions[dirTW  *numberOfLBnodes];
+          dist.f[dirTN  ] = &distributions[dirTN  *numberOfLBnodes];
+          dist.f[dirBS  ] = &distributions[dirBS  *numberOfLBnodes];
+          dist.f[dirBN  ] = &distributions[dirBN  *numberOfLBnodes];
+          dist.f[dirTS  ] = &distributions[dirTS  *numberOfLBnodes];
+          dist.f[dirREST] = &distributions[dirREST*numberOfLBnodes];
+          dist.f[dirTNE ] = &distributions[dirTNE *numberOfLBnodes];
+          dist.f[dirTSW ] = &distributions[dirTSW *numberOfLBnodes];
+          dist.f[dirTSE ] = &distributions[dirTSE *numberOfLBnodes];
+          dist.f[dirTNW ] = &distributions[dirTNW *numberOfLBnodes];
+          dist.f[dirBNE ] = &distributions[dirBNE *numberOfLBnodes];
+          dist.f[dirBSW ] = &distributions[dirBSW *numberOfLBnodes];
+          dist.f[dirBSE ] = &distributions[dirBSE *numberOfLBnodes];
+          dist.f[dirBNW ] = &distributions[dirBNW *numberOfLBnodes];
        }
        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[dirTNE ] = &distributions[dirBSW *size_Mat];
-          dist.f[dirTSW ] = &distributions[dirBNE *size_Mat];
-          dist.f[dirTSE ] = &distributions[dirBNW *size_Mat];
-          dist.f[dirTNW ] = &distributions[dirBSE *size_Mat];
-          dist.f[dirBNE ] = &distributions[dirTSW *size_Mat];
-          dist.f[dirBSW ] = &distributions[dirTNE *size_Mat];
-          dist.f[dirBSE ] = &distributions[dirTNW *size_Mat];
-          dist.f[dirBNW ] = &distributions[dirTSE *size_Mat];
+          dist.f[dirW   ] = &distributions[dirE   *numberOfLBnodes];
+          dist.f[dirE   ] = &distributions[dirW   *numberOfLBnodes];
+          dist.f[dirS   ] = &distributions[dirN   *numberOfLBnodes];
+          dist.f[dirN   ] = &distributions[dirS   *numberOfLBnodes];
+          dist.f[dirB   ] = &distributions[dirT   *numberOfLBnodes];
+          dist.f[dirT   ] = &distributions[dirB   *numberOfLBnodes];
+          dist.f[dirSW  ] = &distributions[dirNE  *numberOfLBnodes];
+          dist.f[dirNE  ] = &distributions[dirSW  *numberOfLBnodes];
+          dist.f[dirNW  ] = &distributions[dirSE  *numberOfLBnodes];
+          dist.f[dirSE  ] = &distributions[dirNW  *numberOfLBnodes];
+          dist.f[dirBW  ] = &distributions[dirTE  *numberOfLBnodes];
+          dist.f[dirTE  ] = &distributions[dirBW  *numberOfLBnodes];
+          dist.f[dirTW  ] = &distributions[dirBE  *numberOfLBnodes];
+          dist.f[dirBE  ] = &distributions[dirTW  *numberOfLBnodes];
+          dist.f[dirBS  ] = &distributions[dirTN  *numberOfLBnodes];
+          dist.f[dirTN  ] = &distributions[dirBS  *numberOfLBnodes];
+          dist.f[dirTS  ] = &distributions[dirBN  *numberOfLBnodes];
+          dist.f[dirBN  ] = &distributions[dirTS  *numberOfLBnodes];
+          dist.f[dirREST] = &distributions[dirREST*numberOfLBnodes];
+          dist.f[dirTNE ] = &distributions[dirBSW *numberOfLBnodes];
+          dist.f[dirTSW ] = &distributions[dirBNE *numberOfLBnodes];
+          dist.f[dirTSE ] = &distributions[dirBNW *numberOfLBnodes];
+          dist.f[dirTNW ] = &distributions[dirBSE *numberOfLBnodes];
+          dist.f[dirBNE ] = &distributions[dirTSW *numberOfLBnodes];
+          dist.f[dirBSW ] = &distributions[dirTNE *numberOfLBnodes];
+          dist.f[dirBSE ] = &distributions[dirTNW *numberOfLBnodes];
+          dist.f[dirBNW ] = &distributions[dirTSE *numberOfLBnodes];
        }
 
 
       ////////////////////////////////////////////////////////////////////////////////
       //! - Set local velocities
       //!
-      real VeloX = vx[k];
-      real VeloY = vy[k];
-      real VeloZ = vz[k];
+      real VeloX = velocityX[k];
+      real VeloY = velocityY[k];
+      real VeloZ = velocityZ[k];
       ////////////////////////////////////////////////////////////////////////////////
       //! - Set local subgrid distances (q's)
       //!
@@ -152,36 +152,36 @@ extern "C" __global__ void QVelDevPlainBB27(
              *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
              *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
              *q_dirBSE, *q_dirBNW;
-      q_dirE   = &subgridDistances[dirE   *sizeQ];
-      q_dirW   = &subgridDistances[dirW   *sizeQ];
-      q_dirN   = &subgridDistances[dirN   *sizeQ];
-      q_dirS   = &subgridDistances[dirS   *sizeQ];
-      q_dirT   = &subgridDistances[dirT   *sizeQ];
-      q_dirB   = &subgridDistances[dirB   *sizeQ];
-      q_dirNE  = &subgridDistances[dirNE  *sizeQ];
-      q_dirSW  = &subgridDistances[dirSW  *sizeQ];
-      q_dirSE  = &subgridDistances[dirSE  *sizeQ];
-      q_dirNW  = &subgridDistances[dirNW  *sizeQ];
-      q_dirTE  = &subgridDistances[dirTE  *sizeQ];
-      q_dirBW  = &subgridDistances[dirBW  *sizeQ];
-      q_dirBE  = &subgridDistances[dirBE  *sizeQ];
-      q_dirTW  = &subgridDistances[dirTW  *sizeQ];
-      q_dirTN  = &subgridDistances[dirTN  *sizeQ];
-      q_dirBS  = &subgridDistances[dirBS  *sizeQ];
-      q_dirBN  = &subgridDistances[dirBN  *sizeQ];
-      q_dirTS  = &subgridDistances[dirTS  *sizeQ];
-      q_dirTNE = &subgridDistances[dirTNE *sizeQ];
-      q_dirTSW = &subgridDistances[dirTSW *sizeQ];
-      q_dirTSE = &subgridDistances[dirTSE *sizeQ];
-      q_dirTNW = &subgridDistances[dirTNW *sizeQ];
-      q_dirBNE = &subgridDistances[dirBNE *sizeQ];
-      q_dirBSW = &subgridDistances[dirBSW *sizeQ];
-      q_dirBSE = &subgridDistances[dirBSE *sizeQ];
-      q_dirBNW = &subgridDistances[dirBNW *sizeQ];
+      q_dirE   = &subgridDistances[dirE   *numberOfSubgridIndices];
+      q_dirW   = &subgridDistances[dirW   *numberOfSubgridIndices];
+      q_dirN   = &subgridDistances[dirN   *numberOfSubgridIndices];
+      q_dirS   = &subgridDistances[dirS   *numberOfSubgridIndices];
+      q_dirT   = &subgridDistances[dirT   *numberOfSubgridIndices];
+      q_dirB   = &subgridDistances[dirB   *numberOfSubgridIndices];
+      q_dirNE  = &subgridDistances[dirNE  *numberOfSubgridIndices];
+      q_dirSW  = &subgridDistances[dirSW  *numberOfSubgridIndices];
+      q_dirSE  = &subgridDistances[dirSE  *numberOfSubgridIndices];
+      q_dirNW  = &subgridDistances[dirNW  *numberOfSubgridIndices];
+      q_dirTE  = &subgridDistances[dirTE  *numberOfSubgridIndices];
+      q_dirBW  = &subgridDistances[dirBW  *numberOfSubgridIndices];
+      q_dirBE  = &subgridDistances[dirBE  *numberOfSubgridIndices];
+      q_dirTW  = &subgridDistances[dirTW  *numberOfSubgridIndices];
+      q_dirTN  = &subgridDistances[dirTN  *numberOfSubgridIndices];
+      q_dirBS  = &subgridDistances[dirBS  *numberOfSubgridIndices];
+      q_dirBN  = &subgridDistances[dirBN  *numberOfSubgridIndices];
+      q_dirTS  = &subgridDistances[dirTS  *numberOfSubgridIndices];
+      q_dirTNE = &subgridDistances[dirTNE *numberOfSubgridIndices];
+      q_dirTSW = &subgridDistances[dirTSW *numberOfSubgridIndices];
+      q_dirTSE = &subgridDistances[dirTSE *numberOfSubgridIndices];
+      q_dirTNW = &subgridDistances[dirTNW *numberOfSubgridIndices];
+      q_dirBNE = &subgridDistances[dirBNE *numberOfSubgridIndices];
+      q_dirBSW = &subgridDistances[dirBSW *numberOfSubgridIndices];
+      q_dirBSE = &subgridDistances[dirBSE *numberOfSubgridIndices];
+      q_dirBNW = &subgridDistances[dirBNW *numberOfSubgridIndices];
       ////////////////////////////////////////////////////////////////////////////////
       //! - Set neighbor indices (necessary for indirect addressing)
       //!
-      uint KQK = k_Q[k];
+      uint KQK = subgridDistanceIndices[k];
       uint ke   = KQK;
       uint kw   = neighborX[KQK];
       uint kn   = KQK;
@@ -246,73 +246,73 @@ extern "C" __global__ void QVelDevPlainBB27(
       //!
       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];
+         dist.f[dirE   ] = &distributions[dirE   *numberOfLBnodes];
+         dist.f[dirW   ] = &distributions[dirW   *numberOfLBnodes];
+         dist.f[dirN   ] = &distributions[dirN   *numberOfLBnodes];
+         dist.f[dirS   ] = &distributions[dirS   *numberOfLBnodes];
+         dist.f[dirT   ] = &distributions[dirT   *numberOfLBnodes];
+         dist.f[dirB   ] = &distributions[dirB   *numberOfLBnodes];
+         dist.f[dirNE  ] = &distributions[dirNE  *numberOfLBnodes];
+         dist.f[dirSW  ] = &distributions[dirSW  *numberOfLBnodes];
+         dist.f[dirSE  ] = &distributions[dirSE  *numberOfLBnodes];
+         dist.f[dirNW  ] = &distributions[dirNW  *numberOfLBnodes];
+         dist.f[dirTE  ] = &distributions[dirTE  *numberOfLBnodes];
+         dist.f[dirBW  ] = &distributions[dirBW  *numberOfLBnodes];
+         dist.f[dirBE  ] = &distributions[dirBE  *numberOfLBnodes];
+         dist.f[dirTW  ] = &distributions[dirTW  *numberOfLBnodes];
+         dist.f[dirTN  ] = &distributions[dirTN  *numberOfLBnodes];
+         dist.f[dirBS  ] = &distributions[dirBS  *numberOfLBnodes];
+         dist.f[dirBN  ] = &distributions[dirBN  *numberOfLBnodes];
+         dist.f[dirTS  ] = &distributions[dirTS  *numberOfLBnodes];
+         dist.f[dirREST] = &distributions[dirREST*numberOfLBnodes];
+         dist.f[dirTNE ] = &distributions[dirTNE *numberOfLBnodes];
+         dist.f[dirTSW ] = &distributions[dirTSW *numberOfLBnodes];
+         dist.f[dirTSE ] = &distributions[dirTSE *numberOfLBnodes];
+         dist.f[dirTNW ] = &distributions[dirTNW *numberOfLBnodes];
+         dist.f[dirBNE ] = &distributions[dirBNE *numberOfLBnodes];
+         dist.f[dirBSW ] = &distributions[dirBSW *numberOfLBnodes];
+         dist.f[dirBSE ] = &distributions[dirBSE *numberOfLBnodes];
+         dist.f[dirBNW ] = &distributions[dirBNW *numberOfLBnodes];
       }
       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[dirTNE ] = &distributions[dirBSW *size_Mat];
-         dist.f[dirTSW ] = &distributions[dirBNE *size_Mat];
-         dist.f[dirTSE ] = &distributions[dirBNW *size_Mat];
-         dist.f[dirTNW ] = &distributions[dirBSE *size_Mat];
-         dist.f[dirBNE ] = &distributions[dirTSW *size_Mat];
-         dist.f[dirBSW ] = &distributions[dirTNE *size_Mat];
-         dist.f[dirBSE ] = &distributions[dirTNW *size_Mat];
-         dist.f[dirBNW ] = &distributions[dirTSE *size_Mat];
+         dist.f[dirW   ] = &distributions[dirE   *numberOfLBnodes];
+         dist.f[dirE   ] = &distributions[dirW   *numberOfLBnodes];
+         dist.f[dirS   ] = &distributions[dirN   *numberOfLBnodes];
+         dist.f[dirN   ] = &distributions[dirS   *numberOfLBnodes];
+         dist.f[dirB   ] = &distributions[dirT   *numberOfLBnodes];
+         dist.f[dirT   ] = &distributions[dirB   *numberOfLBnodes];
+         dist.f[dirSW  ] = &distributions[dirNE  *numberOfLBnodes];
+         dist.f[dirNE  ] = &distributions[dirSW  *numberOfLBnodes];
+         dist.f[dirNW  ] = &distributions[dirSE  *numberOfLBnodes];
+         dist.f[dirSE  ] = &distributions[dirNW  *numberOfLBnodes];
+         dist.f[dirBW  ] = &distributions[dirTE  *numberOfLBnodes];
+         dist.f[dirTE  ] = &distributions[dirBW  *numberOfLBnodes];
+         dist.f[dirTW  ] = &distributions[dirBE  *numberOfLBnodes];
+         dist.f[dirBE  ] = &distributions[dirTW  *numberOfLBnodes];
+         dist.f[dirBS  ] = &distributions[dirTN  *numberOfLBnodes];
+         dist.f[dirTN  ] = &distributions[dirBS  *numberOfLBnodes];
+         dist.f[dirTS  ] = &distributions[dirBN  *numberOfLBnodes];
+         dist.f[dirBN  ] = &distributions[dirTS  *numberOfLBnodes];
+         dist.f[dirREST] = &distributions[dirREST*numberOfLBnodes];
+         dist.f[dirTNE ] = &distributions[dirBSW *numberOfLBnodes];
+         dist.f[dirTSW ] = &distributions[dirBNE *numberOfLBnodes];
+         dist.f[dirTSE ] = &distributions[dirBNW *numberOfLBnodes];
+         dist.f[dirTNW ] = &distributions[dirBSE *numberOfLBnodes];
+         dist.f[dirBNE ] = &distributions[dirTSW *numberOfLBnodes];
+         dist.f[dirBSW ] = &distributions[dirTNE *numberOfLBnodes];
+         dist.f[dirBSE ] = &distributions[dirTNW *numberOfLBnodes];
+         dist.f[dirBNW ] = &distributions[dirTSE *numberOfLBnodes];
       }
       ////////////////////////////////////////////////////////////////////////////////
       //! - rewrite distributions if there is a sub-grid distance (q) in same direction
       real q;
-      q = q_dirE[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirW  ])[kw  ]=f_E   + c4o9  * (-VeloX);
-      q = q_dirW[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirE  ])[ke  ]=f_W   + c4o9  * ( VeloX);
-      q = q_dirN[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirS  ])[ks  ]=f_N   + c4o9  * (-VeloY);
-      q = q_dirS[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirN  ])[kn  ]=f_S   + c4o9  * ( VeloY);
-      q = q_dirT[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirB  ])[kb  ]=f_T   + c4o9  * (-VeloZ);
-      q = q_dirB[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirT  ])[kt  ]=f_B   + c4o9  * ( VeloZ);
+      q = q_dirE[k];     if (q>=c0o1 && q<=c1o1)    (dist.f[dirW  ])[kw  ]=f_E   + c4o9  * (-VeloX);
+      q = q_dirW[k];     if (q>=c0o1 && q<=c1o1)    (dist.f[dirE  ])[ke  ]=f_W   + c4o9  * ( VeloX);
+      q = q_dirN[k];     if (q>=c0o1 && q<=c1o1)    (dist.f[dirS  ])[ks  ]=f_N   + c4o9  * (-VeloY);
+      q = q_dirS[k];     if (q>=c0o1 && q<=c1o1)    (dist.f[dirN  ])[kn  ]=f_S   + c4o9  * ( VeloY);
+      q = q_dirT[k];     if (q>=c0o1 && q<=c1o1)    (dist.f[dirB  ])[kb  ]=f_T   + c4o9  * (-VeloZ);
+      q = q_dirB[k];     if (q>=c0o1 && q<=c1o1)    (dist.f[dirT  ])[kt  ]=f_B   + c4o9  * ( VeloZ);
       q = q_dirNE[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirSW ])[ksw ]=f_NE  + c1o9  * (-VeloX - VeloY);
       q = q_dirSW[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirNE ])[kne ]=f_SW  + c1o9  * ( VeloX + VeloY);
       q = q_dirSE[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirNW ])[knw ]=f_SE  + c1o9  * (-VeloX + VeloY);
@@ -325,14 +325,14 @@ extern "C" __global__ void QVelDevPlainBB27(
       q = q_dirBS[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirTN ])[ktn ]=f_BS  + c1o9  * ( VeloY + VeloZ);
       q = q_dirBN[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirTS ])[kts ]=f_BN  + c1o9  * (-VeloY + VeloZ);
       q = q_dirTS[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirBN ])[kbn ]=f_TS  + c1o9  * ( VeloY - VeloZ);
-      q = q_dirTNE[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirBSW])[kbsw]=f_TNE + c1o36 * (-VeloX - VeloY - VeloZ);
-      q = q_dirBSW[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirTNE])[ktne]=f_BSW + c1o36 * ( VeloX + VeloY + VeloZ);
-      q = q_dirBNE[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirTSW])[ktsw]=f_BNE + c1o36 * (-VeloX - VeloY + VeloZ);
-      q = q_dirTSW[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirBNE])[kbne]=f_TSW + c1o36 * ( VeloX + VeloY - VeloZ);
-      q = q_dirTSE[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirBNW])[kbnw]=f_TSE + c1o36 * (-VeloX + VeloY - VeloZ);
-      q = q_dirBNW[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirTSE])[ktse]=f_BNW + c1o36 * ( VeloX - VeloY + VeloZ);
-      q = q_dirBSE[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirTNW])[ktnw]=f_BSE + c1o36 * (-VeloX + VeloY + VeloZ);
-      q = q_dirTNW[k];    if (q>=c0o1 && q<=c1o1)    (dist.f[dirBSE])[kbse]=f_TNW + c1o36 * ( VeloX - VeloY - VeloZ);
+      q = q_dirTNE[k];   if (q>=c0o1 && q<=c1o1)    (dist.f[dirBSW])[kbsw]=f_TNE + c1o36 * (-VeloX - VeloY - VeloZ);
+      q = q_dirBSW[k];   if (q>=c0o1 && q<=c1o1)    (dist.f[dirTNE])[ktne]=f_BSW + c1o36 * ( VeloX + VeloY + VeloZ);
+      q = q_dirBNE[k];   if (q>=c0o1 && q<=c1o1)    (dist.f[dirTSW])[ktsw]=f_BNE + c1o36 * (-VeloX - VeloY + VeloZ);
+      q = q_dirTSW[k];   if (q>=c0o1 && q<=c1o1)    (dist.f[dirBNE])[kbne]=f_TSW + c1o36 * ( VeloX + VeloY - VeloZ);
+      q = q_dirTSE[k];   if (q>=c0o1 && q<=c1o1)    (dist.f[dirBNW])[kbnw]=f_TSE + c1o36 * (-VeloX + VeloY - VeloZ);
+      q = q_dirBNW[k];   if (q>=c0o1 && q<=c1o1)    (dist.f[dirTSE])[ktse]=f_BNW + c1o36 * ( VeloX - VeloY + VeloZ);
+      q = q_dirBSE[k];   if (q>=c0o1 && q<=c1o1)    (dist.f[dirTNW])[ktnw]=f_BSE + c1o36 * (-VeloX + VeloY + VeloZ);
+      q = q_dirTNW[k];   if (q>=c0o1 && q<=c1o1)    (dist.f[dirBSE])[kbse]=f_TNW + c1o36 * ( VeloX - VeloY - VeloZ);
    }
 }