diff --git a/apps/cpu/LiggghtsApp/LiggghtsApp.cpp b/apps/cpu/LiggghtsApp/LiggghtsApp.cpp
index 634ca28dd4a21a39ae56d57d31e225ba2aba6399..fd892b6b9288b496fc11007ea034a145484d1c5e 100644
--- a/apps/cpu/LiggghtsApp/LiggghtsApp.cpp
+++ b/apps/cpu/LiggghtsApp/LiggghtsApp.cpp
@@ -11,9 +11,8 @@
 //#include "fix_lb_coupling_onetoone.h"
 
 #include "LiggghtsCouplingCoProcessor.h"
-
 #include "LiggghtsCouplingWrapper.h"
-
+#include "IBcumulantK17LBMKernel.h"
 
 using namespace std;
 
@@ -31,9 +30,9 @@ int main(int argc, char *argv[])
 
     double g_maxX1 = 1;
     double g_maxX2 = 1;
-    double g_maxX3 = 2;
+    double g_maxX3 = 1;
 
-    int blockNX[3] = { 10, 10, 20 };
+    int blockNX[3] = { 10, 10, 10 };
 
     double dx = 0.1;
 
@@ -61,7 +60,7 @@ int main(int argc, char *argv[])
     ppblocks->process(0);
     ppblocks.reset();
 
-    SPtr<LBMKernel> kernel = make_shared<IncompressibleCumulantLBMKernel>();
+    SPtr<LBMKernel> kernel   = make_shared<IBcumulantK17LBMKernel>();
     SPtr<BCProcessor> bcProc = make_shared<BCProcessor>();
     kernel->setBCProcessor(bcProc);
 
@@ -78,11 +77,17 @@ int main(int argc, char *argv[])
     MPI_Comm mpi_comm       = *(MPI_Comm*)(comm->getNativeCommunicator());
     LiggghtsCouplingWrapper wrapper(argv, mpi_comm);
 
-    double d_part = 0.1;
+
+    double d_part = 0.3;
+    double r_p       = d_part / 2.0;
+ 
+    // SPtr<LBMUnitConverter> units = std::make_shared<LBMUnitConverter>(r_p, 1.480, 2060, r_p/dx);
+    SPtr<LBMUnitConverter> units = std::make_shared<LBMUnitConverter>(r_p, LBMUnitConverter::WATER, r_p / dx);
+
     double v_frac = 0.1;
-    double dt_phys  = 1; // units.getPhysTime(1);
-    int demSubsteps = 1;
-    double dt_dem   = 1e-1; //dt_phys / (double)demSubsteps;
+    double dt_phys   = units->getFactorTimeLbToW();
+    int demSubsteps = 10;
+    double dt_dem   = dt_phys / (double)demSubsteps;
     int vtkSteps    = 1;
     string demOutDir = "d:/temp/lll2/";
 
@@ -99,8 +104,9 @@ int main(int argc, char *argv[])
     wrapper.execFile((char *)inFile2.c_str());
     //wrapper.runUpto(demSubsteps - 1);
 
+    
     SPtr<LiggghtsCouplingCoProcessor> lcCoProcessor =
-        make_shared<LiggghtsCouplingCoProcessor>(grid, lScheduler, comm, wrapper, demSubsteps);
+        make_shared<LiggghtsCouplingCoProcessor>(grid, lScheduler, comm, wrapper, demSubsteps, units);
 
     // write data for visualization of macroscopic quantities
     SPtr<UbScheduler> visSch(new UbScheduler(vtkSteps));
@@ -108,7 +114,7 @@ int main(int argc, char *argv[])
         new WriteMacroscopicQuantitiesCoProcessor(grid, visSch, outputPath, WbWriterVtkXmlASCII::getInstance(),
                                                   SPtr<LBMUnitConverter>(new LBMUnitConverter()), comm));
 
-    int endTime = 20;
+    int endTime = 1000; //20;
     SPtr<Calculator> calculator(new BasicCalculator(grid, lScheduler, endTime));
     calculator->addCoProcessor(lcCoProcessor);
     calculator->addCoProcessor(writeMQCoProcessor);
diff --git a/apps/cpu/LiggghtsApp/in.lbdem b/apps/cpu/LiggghtsApp/in.lbdem
index f15eab6f821c7b20e88d77077a926ec7317a276e..366f7afd134f76492d3d9756bf6743c5bde0c212 100644
--- a/apps/cpu/LiggghtsApp/in.lbdem
+++ b/apps/cpu/LiggghtsApp/in.lbdem
@@ -9,7 +9,7 @@ boundary	f f f
 newton		off
 
 processors * * 1
-region		box block 0. 1. 0. 1. 0. 2. units box
+region		box block 0. 1. 0. 1. 0. 1. units box
 create_box	1 box
 
 variable	skin equal 0.01
@@ -41,7 +41,7 @@ fix ywalls2 all wall/gran model hertz tangential history primitive type 1 yplane
 fix zwalls1 all wall/gran model hertz tangential history primitive type 1 zplane 0.
 fix zwalls2 all wall/gran model hertz tangential history primitive type 1 zplane 2.
 
-create_atoms 1 single 0.5 0.5 1.75
+create_atoms 1 single 0.5 0.5 0.75
 #create_atoms 1 single 0.38 0.05 0.05
 
 set group all diameter 0.3 density 2400
diff --git a/apps/cpu/LiggghtsApp/in2.lbdem b/apps/cpu/LiggghtsApp/in2.lbdem
index 3e2fa90d2a25e3d4e01e73f32cb2f6f314c9f1bf..7098890cc28ea5f22ef442a388b1f79b4708107c 100644
--- a/apps/cpu/LiggghtsApp/in2.lbdem
+++ b/apps/cpu/LiggghtsApp/in2.lbdem
@@ -18,4 +18,4 @@ variable dmp_fname string ${dmp_dir}d_*.liggghts
 # dump		dmp all custom ${dmp_stp} ${dmp_dir}d_*.liggghts & 
 # 		id type type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius 
 	
-dump   dmp all custom/vtk 1 ${dmp_dir}post/atom_*.vtk id type type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius 	
+dump   dmp all custom/vtk 10 ${dmp_dir}post/atom_*.vtk id type type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius 	
diff --git a/src/cpu/VirtualFluidsCore/LBM/IBcumulantK17LBMKernel.cpp b/src/cpu/LiggghtsCoupling/IBcumulantK17LBMKernel.cpp
similarity index 55%
rename from src/cpu/VirtualFluidsCore/LBM/IBcumulantK17LBMKernel.cpp
rename to src/cpu/LiggghtsCoupling/IBcumulantK17LBMKernel.cpp
index 346a61009b789b2e6bbc043d1e425da49eb1829f..ac0bc35844cb32544d901cbf5a93503d49de4070 100644
--- a/src/cpu/VirtualFluidsCore/LBM/IBcumulantK17LBMKernel.cpp
+++ b/src/cpu/LiggghtsCoupling/IBcumulantK17LBMKernel.cpp
@@ -55,14 +55,14 @@ void IBcumulantK17LBMKernel::initDataSet()
     dataSet->setFdistributions(d);
 
     particleData =
-        std::make_shared<CbArray3D<SPtr<IBdynamicsParticleData>, IndexerX3X2X1>>(nx[0], nx[1], nx[2]);
+        std::make_shared<CbArray3D<SPtr<IBdynamicsParticleData>, IndexerX3X2X1>>(nx[0] + 2, nx[1] + 2, nx[2] + 2);
 
-    int minX1 = ghostLayerWidth;
-    int minX2 = ghostLayerWidth;
-    int minX3 = ghostLayerWidth;
-    int maxX1 = nx[0];
-    int maxX2 = nx[1];
-    int maxX3 = nx[2];
+    int minX1 = 0;
+    int minX2 = 0;
+    int minX3 = 0;
+    int maxX1 = nx[0]+2;
+    int maxX2 = nx[1]+2;
+    int maxX3 = nx[2]+2;
 
     LBMReal omega = collFactor;
 
@@ -150,37 +150,40 @@ void IBcumulantK17LBMKernel::calculate(int step)
 
     LBMReal omega = collFactor;
 
+
+
     for (int x3 = minX3; x3 < maxX3; x3++)
     {
         for (int x2 = minX2; x2 < maxX2; x2++)
         {
             for (int x1 = minX1; x1 < maxX1; x1++)
             {
-                if (!bcArray->isSolid(x1, x2, x3) && !bcArray->isUndefined(x1, x2, x3))
-                {
+                if (!bcArray->isSolid(x1, x2, x3) && !bcArray->isUndefined(x1, x2, x3)) {
                     int x1p = x1 + 1;
                     int x2p = x2 + 1;
                     int x3p = x3 + 1;
                     //////////////////////////////////////////////////////////////////////////
                     //////////////////////////////////////////////////////////////////////////
-                    //! - Read distributions: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm
-                    //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a>
+                    //! - Read distributions: style of reading and writing the distributions from/to stored arrays
+                    //! dependent on timestep is based on the esoteric twist algorithm <a
+                    //! href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017),
+                    //! DOI:10.3390/computation5020019 ]</b></a>
                     //!
                     ////////////////////////////////////////////////////////////////////////////
                     //////////////////////////////////////////////////////////////////////////
 
-                    //E   N  T
-                    //c   c  c
+                    // E   N  T
+                    // c   c  c
                     //////////
-                    //W   S  B
-                    //a   a  a
+                    // W   S  B
+                    // a   a  a
 
-                    //Rest is b
+                    // Rest is b
 
-                    //mfxyz
-                    //a - negative
-                    //b - null
-                    //c - positive
+                    // mfxyz
+                    // a - negative
+                    // b - null
+                    // c - positive
 
                     // a b c
                     //-1 0 1
@@ -215,31 +218,107 @@ void IBcumulantK17LBMKernel::calculate(int step)
 
                     LBMReal mfbbb = (*this->restDistributions)(x1, x2, x3);
 
+                    LBMReal f[D3Q27System::ENDF + 1];
+                    LBMReal fEq[D3Q27System::ENDF + 1];
+                    LBMReal fEqSolid[D3Q27System::ENDF + 1];
+                    LBMReal fPre[D3Q27System::ENDF + 1];
+
+                    f[D3Q27System::REST] = mfbbb;
+
+                    f[D3Q27System::E]   = mfcbb;
+                    f[D3Q27System::N]   = mfbcb;
+                    f[D3Q27System::T]   = mfbbc;
+                    f[D3Q27System::NE]  = mfccb;
+                    f[D3Q27System::NW]  = mfacb;
+                    f[D3Q27System::TE]  = mfcbc;
+                    f[D3Q27System::TW]  = mfabc;
+                    f[D3Q27System::TN]  = mfbcc;
+                    f[D3Q27System::TS]  = mfbac;
+                    f[D3Q27System::TNE] = mfccc;
+                    f[D3Q27System::TNW] = mfacc;
+                    f[D3Q27System::TSE] = mfcac;
+                    f[D3Q27System::TSW] = mfaac;
+
+                    f[D3Q27System::W]   = mfabb;
+                    f[D3Q27System::S]   = mfbab;
+                    f[D3Q27System::B]   = mfbba;
+                    f[D3Q27System::SW]  = mfaab;
+                    f[D3Q27System::SE]  = mfcab;
+                    f[D3Q27System::BW]  = mfaba;
+                    f[D3Q27System::BE]  = mfcba;
+                    f[D3Q27System::BS]  = mfbaa;
+                    f[D3Q27System::BN]  = mfbca;
+                    f[D3Q27System::BSW] = mfaaa;
+                    f[D3Q27System::BSE] = mfcaa;
+                    f[D3Q27System::BNW] = mfaca;
+                    f[D3Q27System::BNE] = mfcca;
+
+                    if ((*particleData)(x1, x2, x3)->solidFraction > SOLFRAC_MIN) {
+                        fPre[D3Q27System::REST] = mfbbb;
+
+                        fPre[D3Q27System::E]   = mfcbb;
+                        fPre[D3Q27System::N]   = mfbcb;
+                        fPre[D3Q27System::T]   = mfbbc;
+                        fPre[D3Q27System::NE]  = mfccb;
+                        fPre[D3Q27System::NW]  = mfacb;
+                        fPre[D3Q27System::TE]  = mfcbc;
+                        fPre[D3Q27System::TW]  = mfabc;
+                        fPre[D3Q27System::TN]  = mfbcc;
+                        fPre[D3Q27System::TS]  = mfbac;
+                        fPre[D3Q27System::TNE] = mfccc;
+                        fPre[D3Q27System::TNW] = mfacc;
+                        fPre[D3Q27System::TSE] = mfcac;
+                        fPre[D3Q27System::TSW] = mfaac;
+
+                        fPre[D3Q27System::W]   = mfabb;
+                        fPre[D3Q27System::S]   = mfbab;
+                        fPre[D3Q27System::B]   = mfbba;
+                        fPre[D3Q27System::SW]  = mfaab;
+                        fPre[D3Q27System::SE]  = mfcab;
+                        fPre[D3Q27System::BW]  = mfaba;
+                        fPre[D3Q27System::BE]  = mfcba;
+                        fPre[D3Q27System::BS]  = mfbaa;
+                        fPre[D3Q27System::BN]  = mfbca;
+                        fPre[D3Q27System::BSW] = mfaaa;
+                        fPre[D3Q27System::BSE] = mfcaa;
+                        fPre[D3Q27System::BNW] = mfaca;
+                        fPre[D3Q27System::BNE] = mfcca;
+                    }
+
+                    (*particleData)(x1, x2, x3)->hydrodynamicForce.fill(0.0);
+
+                    if ((*particleData)(x1, x2, x3)->solidFraction <= SOLFRAC_MAX) {
+
                     ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Calculate density and velocity using pyramid summation for low round-off errors as in Eq. (J1)-(J3)
-                    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa.2015.05.001 ]</b></a>
+                    //! - Calculate density and velocity using pyramid summation for low round-off errors as in Eq.
+                    //! (J1)-(J3) <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015),
+                    //! DOI:10.1016/j.camwa.2015.05.001 ]</b></a>
                     //!
                     LBMReal drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) +
-                                    (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) +
-                                    ((mfabb + mfcbb) + (mfbab + mfbcb)) + (mfbba + mfbbc)) + mfbbb;
+                                    (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) +
+                                     ((mfacb + mfcab) + (mfaab + mfccb))) +
+                                    ((mfabb + mfcbb) + (mfbab + mfbcb)) + (mfbba + mfbbc)) +
+                                   mfbbb;
 
-                    LBMReal rho = c1 + drho;
+                    LBMReal rho   = c1 + drho;
                     LBMReal OOrho = c1 / rho;
                     ////////////////////////////////////////////////////////////////////////////////////
                     LBMReal vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
                                    (((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
-                                   (mfcbb - mfabb)) / rho;
+                                   (mfcbb - mfabb)) /
+                                  rho;
                     LBMReal vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
                                    (((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
-                                   (mfbcb - mfbab)) / rho;
+                                   (mfbcb - mfbab)) /
+                                  rho;
                     LBMReal vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
                                    (((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
-                                   (mfbbc - mfbba)) / rho;
+                                   (mfbbc - mfbba)) /
+                                  rho;
                     ////////////////////////////////////////////////////////////////////////////////////
-                    //forcing
+                    // forcing
                     ///////////////////////////////////////////////////////////////////////////////////////////
-                    if (withForcing)
-                    {
+                    if (withForcing) {
                         muX1 = static_cast<double>(x1 - 1 + ix1 * maxX1);
                         muX2 = static_cast<double>(x2 - 1 + ix2 * maxX2);
                         muX3 = static_cast<double>(x3 - 1 + ix3 * maxX3);
@@ -250,7 +329,8 @@ void IBcumulantK17LBMKernel::calculate(int step)
 
                         ////////////////////////////////////////////////////////////////////////////////////
                         //! - Add half of the acceleration (body force) to the velocity as in Eq. (42)
-                        //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa.2015.05.001 ]</b></a>
+                        //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015),
+                        //! DOI:10.1016/j.camwa.2015.05.001 ]</b></a>
                         //!
                         vvx += forcingX1 * deltaT * c1o2; // X
                         vvy += forcingX2 * deltaT * c1o2; // Y
@@ -262,18 +342,20 @@ void IBcumulantK17LBMKernel::calculate(int step)
                     LBMReal vy2 = vvy * vvy;
                     LBMReal vz2 = vvz * vvz;
                     ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Set relaxation limiters for third order cumulants to default value \f$ \lambda=0.001 \f$ according to section 6 in
-                    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
+                    //! - Set relaxation limiters for third order cumulants to default value \f$ \lambda=0.001 \f$
+                    //! according to section 6 in <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et
+                    //! al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
                     //!
                     LBMReal wadjust;
                     LBMReal qudricLimitP = c1o100;
                     LBMReal qudricLimitM = c1o100;
                     LBMReal qudricLimitD = c1o100;
                     ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Chimera transform from well conditioned distributions to central moments as defined in Appendix J in
-                    //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa.2015.05.001 ]</b></a>
-                    //! see also Eq. (6)-(14) in
-                    //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
+                    //! - Chimera transform from well conditioned distributions to central moments as defined in
+                    //! Appendix J in <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015),
+                    //! DOI:10.1016/j.camwa.2015.05.001 ]</b></a> see also Eq. (6)-(14) in <a
+                    //! href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017),
+                    //! DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
                     //!
                     ////////////////////////////////////////////////////////////////////////////////////
                     // Z - Dir
@@ -312,86 +394,116 @@ void IBcumulantK17LBMKernel::calculate(int step)
                     forwardInverseChimeraWithK(mfacc, mfbcc, mfccc, vvx, vx2, c9, 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>
+                    //! - Setting relaxation rates for non-hydrodynamic cumulants (default values). Variable names and
+                    //! equations according to <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al.
+                    //! (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a>
                     //!  => [NAME IN PAPER]=[NAME IN CODE]=[DEFAULT VALUE].
-                    //!  - Trace of second order cumulants \f$ C_{200}+C_{020}+C_{002} \f$ used to adjust bulk viscosity:\f$\omega_2=OxxPyyPzz=1.0 \f$.
-                    //!  - Third order cumulants \f$ C_{120}+C_{102} \f$, \f$ C_{210}+C_{012} \f$, \f$ C_{201}+C_{021} \f$: \f$\omega_3=OxyyPxzz\f$ set according to Eq. (111) with simplifications assuming \f$\omega_2=1.0\f$.
-                    //!  - Third order cumulants \f$ C_{120}-C_{102} \f$, \f$ C_{210}-C_{012} \f$, \f$ C_{201}-C_{021} \f$: \f$\omega_4 = OxyyMxzz\f$ set according to Eq. (112) with simplifications assuming \f$\omega_2 = 1.0\f$.
-                    //!  - Third order cumulants \f$ C_{111} \f$: \f$\omega_5 = Oxyz\f$ set according to Eq. (113) with simplifications assuming \f$\omega_2 = 1.0\f$  (modify for different bulk viscosity).
-                    //!  - Fourth order cumulants \f$ C_{220} \f$, \f$ C_{202} \f$, \f$ C_{022} \f$, \f$ C_{211} \f$, \f$ C_{121} \f$, \f$ C_{112} \f$: for simplification all set to the same default value \f$ \omega_6=\omega_7=\omega_8=O4=1.0 \f$.
+                    //!  - Trace of second order cumulants \f$ C_{200}+C_{020}+C_{002} \f$ used to adjust bulk
+                    //!  viscosity:\f$\omega_2=OxxPyyPzz=1.0 \f$.
+                    //!  - Third order cumulants \f$ C_{120}+C_{102} \f$, \f$ C_{210}+C_{012} \f$, \f$ C_{201}+C_{021}
+                    //!  \f$: \f$\omega_3=OxyyPxzz\f$ set according to Eq. (111) with simplifications assuming
+                    //!  \f$\omega_2=1.0\f$.
+                    //!  - Third order cumulants \f$ C_{120}-C_{102} \f$, \f$ C_{210}-C_{012} \f$, \f$ C_{201}-C_{021}
+                    //!  \f$: \f$\omega_4 = OxyyMxzz\f$ set according to Eq. (112) with simplifications assuming
+                    //!  \f$\omega_2 = 1.0\f$.
+                    //!  - Third order cumulants \f$ C_{111} \f$: \f$\omega_5 = Oxyz\f$ set according to Eq. (113) with
+                    //!  simplifications assuming \f$\omega_2 = 1.0\f$  (modify for different bulk viscosity).
+                    //!  - Fourth order cumulants \f$ C_{220} \f$, \f$ C_{202} \f$, \f$ C_{022} \f$, \f$ C_{211} \f$,
+                    //!  \f$ C_{121} \f$, \f$ C_{112} \f$: for simplification all set to the same default value \f$
+                    //!  \omega_6=\omega_7=\omega_8=O4=1.0 \f$.
                     //!  - Fifth order cumulants \f$ C_{221}\f$, \f$C_{212}\f$, \f$C_{122}\f$: \f$\omega_9=O5=1.0\f$.
                     //!  - Sixth order cumulant \f$ C_{222}\f$: \f$\omega_{10}=O6=1.0\f$.
                     //!
                     ////////////////////////////////////////////////////////////
-                    //2.
+                    // 2.
                     LBMReal OxxPyyPzz = c1;
                     ////////////////////////////////////////////////////////////
-                    //3.
-                    LBMReal OxyyPxzz = c8  * (-c2 + omega) * ( c1 + c2*omega) / (-c8 - c14*omega + c7*omega*omega);
-                    LBMReal OxyyMxzz = c8  * (-c2 + omega) * (-c7 + c4*omega) / (c56 - c50*omega + c9*omega*omega);
-                    LBMReal Oxyz     = c24 * (-c2 + omega) * (-c2 - c7*omega + c3*omega*omega) / (c48 + c152*omega - c130*omega*omega + c29*omega*omega*omega);
+                    // 3.
+                    LBMReal OxyyPxzz =
+                        c8 * (-c2 + omega) * (c1 + c2 * omega) / (-c8 - c14 * omega + c7 * omega * omega);
+                    LBMReal OxyyMxzz =
+                        c8 * (-c2 + omega) * (-c7 + c4 * omega) / (c56 - c50 * omega + c9 * omega * omega);
+                    LBMReal Oxyz = c24 * (-c2 + omega) * (-c2 - c7 * omega + c3 * omega * omega) /
+                                   (c48 + c152 * omega - c130 * omega * omega + c29 * omega * omega * omega);
                     ////////////////////////////////////////////////////////////
-                    //4.
+                    // 4.
                     LBMReal O4 = c1;
                     ////////////////////////////////////////////////////////////
-                    //5.
+                    // 5.
                     LBMReal O5 = c1;
                     ////////////////////////////////////////////////////////////
-                    //6.
+                    // 6.
                     LBMReal O6 = c1;
 
                     ////////////////////////////////////////////////////////////////////////////////////
-                    //! - 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).
+                    //! - 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).
                     //!
-                    LBMReal A = (c4 + c2*omega - c3*omega*omega) / (c2 - c7*omega + c5*omega*omega);
-                    LBMReal B = (c4 + c28*omega - c14*omega*omega) / (c6 - c21*omega + c15*omega*omega);
+                    LBMReal A = (c4 + c2 * omega - c3 * omega * omega) / (c2 - c7 * omega + c5 * omega * omega);
+                    LBMReal B = (c4 + c28 * omega - c14 * omega * omega) / (c6 - c21 * omega + c15 * 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>
+                    //! <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.
+                    // 4.
                     LBMReal CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + c2 * mfbba * mfbab) * OOrho;
                     LBMReal CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + c2 * mfbba * mfabb) * OOrho;
                     LBMReal CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + c2 * mfbab * mfabb) * OOrho;
 
-                    LBMReal CUMcca = mfcca - (((mfcaa * mfaca + c2 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) * OOrho - c1o9 * (drho * OOrho));
-                    LBMReal CUMcac = mfcac - (((mfcaa * mfaac + c2 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) * OOrho - c1o9 * (drho * OOrho));
-                    LBMReal CUMacc = mfacc - (((mfaac * mfaca + c2 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) * OOrho - c1o9 * (drho * OOrho));
+                    LBMReal CUMcca = mfcca - (((mfcaa * mfaca + c2 * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) * OOrho -
+                                              c1o9 * (drho * OOrho));
+                    LBMReal CUMcac = mfcac - (((mfcaa * mfaac + c2 * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) * OOrho -
+                                              c1o9 * (drho * OOrho));
+                    LBMReal CUMacc = mfacc - (((mfaac * mfaca + c2 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) * OOrho -
+                                              c1o9 * (drho * OOrho));
                     ////////////////////////////////////////////////////////////
-                    //5.
-                    LBMReal CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4 * mfabb * mfbbb + c2 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) * OOrho;
-                    LBMReal CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4 * mfbab * mfbbb + c2 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) * OOrho;
-                    LBMReal CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4 * mfbba * mfbbb + c2 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) * OOrho;
+                    // 5.
+                    LBMReal CUMbcc =
+                        mfbcc -
+                        ((mfaac * mfbca + mfaca * mfbac + c4 * mfabb * mfbbb + c2 * (mfbab * mfacb + mfbba * mfabc)) +
+                         c1o3 * (mfbca + mfbac)) *
+                            OOrho;
+                    LBMReal CUMcbc =
+                        mfcbc -
+                        ((mfaac * mfcba + mfcaa * mfabc + c4 * mfbab * mfbbb + c2 * (mfabb * mfcab + mfbba * mfbac)) +
+                         c1o3 * (mfcba + mfabc)) *
+                            OOrho;
+                    LBMReal CUMccb =
+                        mfccb -
+                        ((mfcaa * mfacb + mfaca * mfcab + c4 * mfbba * mfbbb + c2 * (mfbab * mfbca + mfabb * mfcba)) +
+                         c1o3 * (mfacb + mfcab)) *
+                            OOrho;
                     ////////////////////////////////////////////////////////////
-                    //6.
-                    LBMReal CUMccc = mfccc + ((-c4 * mfbbb * mfbbb
-                                               - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-                                               - c4 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-                                               - c2 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) * OOrho
-                                              + (c4 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-                                                 + c2 * (mfcaa * mfaca * mfaac)
-                                                 + c16 * mfbba * mfbab * mfabb) * OOrho * OOrho
-                                              - c1o3 * (mfacc + mfcac + mfcca) * OOrho
-                                              - c1o9 * (mfcaa + mfaca + mfaac) * OOrho
-                                              + (c2 * (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));
+                    // 6.
+                    LBMReal CUMccc =
+                        mfccc + ((-c4 * mfbbb * mfbbb - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) -
+                                  c4 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) -
+                                  c2 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) *
+                                     OOrho +
+                                 (c4 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) +
+                                  c2 * (mfcaa * mfaca * mfaac) + c16 * mfbba * mfbab * mfabb) *
+                                     OOrho * OOrho -
+                                 c1o3 * (mfacc + mfcac + mfcca) * OOrho - c1o9 * (mfcaa + mfaca + mfaac) * OOrho +
+                                 (c2 * (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.
+                    // 2.
                     LBMReal mxxPyyPzz = mfcaa + mfaca + mfaac;
-                    LBMReal mxxMyy = mfcaa - mfaca;
-                    LBMReal mxxMzz = mfcaa - mfaac;
+                    LBMReal mxxMyy    = mfcaa - mfaca;
+                    LBMReal mxxMzz    = mfcaa - mfaac;
                     ////////////////////////////////////////////////////////////
-                    //3.
+                    // 3.
                     LBMReal mxxyPyzz = mfcba + mfabc;
                     LBMReal mxxyMyzz = mfcba - mfabc;
 
@@ -402,44 +514,48 @@ void IBcumulantK17LBMKernel::calculate(int step)
                     LBMReal mxyyMxzz = mfbca - mfbac;
 
                     ////////////////////////////////////////////////////////////////////////////////////
-                    //incl. correction
+                    // 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.
+                    //! <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.
                     //!
-                    LBMReal Dxy = -c3 * omega * mfbba;
-                    LBMReal Dxz = -c3 * omega * mfbab;
-                    LBMReal Dyz = -c3 * omega * mfabb;
+                    LBMReal Dxy  = -c3 * omega * mfbba;
+                    LBMReal Dxz  = -c3 * omega * mfbab;
+                    LBMReal Dyz  = -c3 * omega * mfabb;
                     LBMReal dxux = c1o2 * (-omega) * (mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz * (mfaaa - mxxPyyPzz);
                     LBMReal dyuy = dxux + omega * c3o2 * mxxMyy;
                     LBMReal 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>
+                    //! <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) - c3 * (c1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
+                    mxxPyyPzz += OxxPyyPzz * (mfaaa - mxxPyyPzz) -
+                                 c3 * (c1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
                     mxxMyy += omega * (-mxxMyy) - c3 * (c1 + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy);
                     mxxMzz += omega * (-mxxMzz) - c3 * (c1 + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz);
 
                     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                     ////no correction
-                    //mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz);
-                    //mxxMyy += -(-omega) * (-mxxMyy);
-                    //mxxMzz += -(-omega) * (-mxxMzz);
+                    // mxxPyyPzz += OxxPyyPzz*(mfaaa - mxxPyyPzz);
+                    // mxxMyy += -(-omega) * (-mxxMyy);
+                    // mxxMzz += -(-omega) * (-mxxMzz);
                     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                     mfabb += omega * (-mfabb);
                     mfbab += omega * (-mfbab);
                     mfbba += omega * (-mfbba);
 
                     ////////////////////////////////////////////////////////////////////////////////////
-                    //relax
+                    // 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>
+                    //! <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 + (c1 - Oxyz) * abs(mfbbb) / (abs(mfbbb) + qudricLimitD);
                     mfbbb += wadjust * (-mfbbb);
@@ -457,13 +573,13 @@ void IBcumulantK17LBMKernel::calculate(int step)
                     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);
+                    // 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
@@ -481,10 +597,11 @@ void IBcumulantK17LBMKernel::calculate(int step)
                     //////////////////////////////////////////////////////////////////////////
 
                     //////////////////////////////////////////////////////////////////////////
-                    //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>
+                    // 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 * (c1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1 - O4) * (CUMacc);
                     CUMcac = -O4 * (c1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1 - O4) * (CUMcac);
@@ -494,55 +611,75 @@ void IBcumulantK17LBMKernel::calculate(int step)
                     CUMcbb = -O4 * (c1 / omega - c1o2) * Dyz * c1o3 * B + (c1 - O4) * (CUMcbb);
 
                     //////////////////////////////////////////////////////////////////////////
-                    //5.
+                    // 5.
                     CUMbcc += O5 * (-CUMbcc);
                     CUMcbc += O5 * (-CUMcbc);
                     CUMccb += O5 * (-CUMccb);
 
                     //////////////////////////////////////////////////////////////////////////
-                    //6.
+                    // 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>
+                    //! <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.
+                    // 4.
                     mfcbb = CUMcbb + c1o3 * ((c3 * mfcaa + c1) * mfabb + c6 * mfbba * mfbab) * OOrho;
                     mfbcb = CUMbcb + c1o3 * ((c3 * mfaca + c1) * mfbab + c6 * mfbba * mfabb) * OOrho;
                     mfbbc = CUMbbc + c1o3 * ((c3 * mfaac + c1) * mfbba + c6 * mfbab * mfabb) * OOrho;
 
-                    mfcca = CUMcca + (((mfcaa * mfaca + c2 * mfbba * mfbba) * c9 + c3 * (mfcaa + mfaca)) * OOrho - (drho * OOrho)) * c1o9;
-                    mfcac = CUMcac + (((mfcaa * mfaac + c2 * mfbab * mfbab) * c9 + c3 * (mfcaa + mfaac)) * OOrho - (drho * OOrho)) * c1o9;
-                    mfacc = CUMacc + (((mfaac * mfaca + c2 * mfabb * mfabb) * c9 + c3 * (mfaac + mfaca)) * OOrho - (drho * OOrho)) * c1o9;
+                    mfcca = CUMcca + (((mfcaa * mfaca + c2 * mfbba * mfbba) * c9 + c3 * (mfcaa + mfaca)) * OOrho -
+                                      (drho * OOrho)) *
+                                         c1o9;
+                    mfcac = CUMcac + (((mfcaa * mfaac + c2 * mfbab * mfbab) * c9 + c3 * (mfcaa + mfaac)) * OOrho -
+                                      (drho * OOrho)) *
+                                         c1o9;
+                    mfacc = CUMacc + (((mfaac * mfaca + c2 * mfabb * mfabb) * c9 + c3 * (mfaac + mfaca)) * OOrho -
+                                      (drho * OOrho)) *
+                                         c1o9;
 
                     //////////////////////////////////////////////////////////////////////////
-                    //5.
-                    mfbcc = CUMbcc + c1o3 * (c3 * (mfaac * mfbca + mfaca * mfbac + c4 * mfabb * mfbbb + c2 * (mfbab * mfacb + mfbba * mfabc)) + (mfbca + mfbac)) * OOrho;
-                    mfcbc = CUMcbc + c1o3 * (c3 * (mfaac * mfcba + mfcaa * mfabc + c4 * mfbab * mfbbb + c2 * (mfabb * mfcab + mfbba * mfbac)) + (mfcba + mfabc)) * OOrho;
-                    mfccb = CUMccb + c1o3 * (c3 * (mfcaa * mfacb + mfaca * mfcab + c4 * mfbba * mfbbb + c2 * (mfbab * mfbca + mfabb * mfcba)) + (mfacb + mfcab)) * OOrho;
+                    // 5.
+                    mfbcc = CUMbcc + c1o3 *
+                                         (c3 * (mfaac * mfbca + mfaca * mfbac + c4 * mfabb * mfbbb +
+                                                c2 * (mfbab * mfacb + mfbba * mfabc)) +
+                                          (mfbca + mfbac)) *
+                                         OOrho;
+                    mfcbc = CUMcbc + c1o3 *
+                                         (c3 * (mfaac * mfcba + mfcaa * mfabc + c4 * mfbab * mfbbb +
+                                                c2 * (mfabb * mfcab + mfbba * mfbac)) +
+                                          (mfcba + mfabc)) *
+                                         OOrho;
+                    mfccb = CUMccb + c1o3 *
+                                         (c3 * (mfcaa * mfacb + mfaca * mfcab + c4 * mfbba * mfbbb +
+                                                c2 * (mfbab * mfbca + mfabb * mfcba)) +
+                                          (mfacb + mfcab)) *
+                                         OOrho;
 
                     //////////////////////////////////////////////////////////////////////////
-                    //6.
-                    mfccc = CUMccc - ((-c4 * mfbbb * mfbbb
-                                       - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
-                                       - c4 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
-                                       - c2 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) * OOrho
-                                      + (c4 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac)
-                                         + c2 * (mfcaa * mfaca * mfaac)
-                                         + c16 * mfbba * mfbab * mfabb) * OOrho * OOrho
-                                      - c1o3 * (mfacc + mfcac + mfcca) * OOrho
-                                      - c1o9 * (mfcaa + mfaca + mfaac) * OOrho
-                                      + (c2 * (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));
-
+                    // 6.
+                    mfccc =
+                        CUMccc - ((-c4 * mfbbb * mfbbb - (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) -
+                                   c4 * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc) -
+                                   c2 * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) *
+                                      OOrho +
+                                  (c4 * (mfbab * mfbab * mfaca + mfabb * mfabb * mfcaa + mfbba * mfbba * mfaac) +
+                                   c2 * (mfcaa * mfaca * mfaac) + c16 * mfbba * mfbab * mfabb) *
+                                      OOrho * OOrho -
+                                  c1o3 * (mfacc + mfcac + mfcca) * OOrho - c1o9 * (mfcaa + mfaca + mfaac) * OOrho +
+                                  (c2 * (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>
+                    //! <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;
@@ -550,10 +687,11 @@ void IBcumulantK17LBMKernel::calculate(int step)
                     ////////////////////////////////////////////////////////////////////////////////////
 
                     ////////////////////////////////////////////////////////////////////////////////////
-                    //! - 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>
+                    //! - 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
@@ -593,12 +731,13 @@ void IBcumulantK17LBMKernel::calculate(int step)
                     ////////////////////////////////////////////////////////////////////////////////////
 
                     //////////////////////////////////////////////////////////////////////////
-                    //proof correctness
+                    // proof correctness
                     //////////////////////////////////////////////////////////////////////////
-#ifdef  PROOF_CORRECTNESS
-                    LBMReal drho_post = (mfaaa + mfaac + mfaca + mfcaa + mfacc + mfcac + mfccc + mfcca)
-                                        + (mfaab + mfacb + mfcab + mfccb) + (mfaba + mfabc + mfcba + mfcbc) + (mfbaa + mfbac + mfbca + mfbcc)
-                                        + (mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc) + mfbbb;
+#ifdef PROOF_CORRECTNESS
+                    LBMReal drho_post = (mfaaa + mfaac + mfaca + mfcaa + mfacc + mfcac + mfccc + mfcca) +
+                                        (mfaab + mfacb + mfcab + mfccb) + (mfaba + mfabc + mfcba + mfcbc) +
+                                        (mfbaa + mfbac + mfbca + mfbcc) + (mfabb + mfcbb) + (mfbab + mfbcb) +
+                                        (mfbba + mfbbc) + mfbbb;
                     LBMReal dif = drho - drho_post;
 #ifdef SINGLEPRECISION
                     if (dif > 10.0E-7 || dif < -10.0E-7)
@@ -606,51 +745,165 @@ void IBcumulantK17LBMKernel::calculate(int step)
                     if (dif > 10.0E-15 || dif < -10.0E-15)
 #endif
                     {
-                        UB_THROW(UbException(UB_EXARGS, "rho=" + UbSystem::toString(drho) + ", rho_post=" + UbSystem::toString(drho_post)
-                                                        + " dif=" + UbSystem::toString(dif)
-                                                        + " rho is not correct for node " + UbSystem::toString(x1) + "," + UbSystem::toString(x2) + "," + UbSystem::toString(x3)
-                                                        + " in " + block.lock()->toString() + " step = " + UbSystem::toString(step)));
+                        UB_THROW(UbException(
+                            UB_EXARGS,
+                            "rho=" + UbSystem::toString(drho) + ", rho_post=" + UbSystem::toString(drho_post) +
+                                " dif=" + UbSystem::toString(dif) + " rho is not correct for node " +
+                                UbSystem::toString(x1) + "," + UbSystem::toString(x2) + "," + UbSystem::toString(x3) +
+                                " in " + block.lock()->toString() + " step = " + UbSystem::toString(step)));
                     }
 #endif
                     ////////////////////////////////////////////////////////////////////////////////////
-                    //! - Write distributions: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm
-                    //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a>
+                    //! - Write distributions: style of reading and writing the distributions from/to stored arrays
+                    //! dependent on timestep is based on the esoteric twist algorithm <a
+                    //! href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017),
+                    //! DOI:10.3390/computation5020019 ]</b></a>
                     //!
-                    (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = mfabb;
-                    (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = mfbab;
-                    (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = mfbba;
-                    (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = mfaab;
-                    (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3) = mfcab;
-                    (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = mfaba;
-                    (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3) = mfcba;
-                    (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = mfbaa;
-                    (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3) = mfbca;
-                    (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = mfaaa;
-                    (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3) = mfcaa;
-                    (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3) = mfaca;
+                    (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3)     = mfabb;
+                    (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3)     = mfbab;
+                    (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3)     = mfbba;
+                    (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3)    = mfaab;
+                    (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3)   = mfcab;
+                    (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3)    = mfaba;
+                    (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3)   = mfcba;
+                    (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3)    = mfbaa;
+                    (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3)   = mfbca;
+                    (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3)   = mfaaa;
+                    (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3)  = mfcaa;
+                    (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3)  = mfaca;
                     (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3) = mfcca;
 
-                    (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3) = mfcbb;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3) = mfbcb;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p) = mfbbc;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3) = mfccb;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3) = mfacb;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p) = mfcbc;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p) = mfabc;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p) = mfbcc;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p) = mfbac;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3)     = mfcbb;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3)     = mfbcb;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p)     = mfbbc;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3)   = mfccb;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3)    = mfacb;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p)   = mfcbc;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p)    = mfabc;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p)   = mfbcc;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p)    = mfbac;
                     (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p) = mfccc;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p) = mfacc;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p) = mfcac;
-                    (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p) = mfaac;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p)  = mfacc;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p)  = mfcac;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p)   = mfaac;
 
                     (*this->restDistributions)(x1, x2, x3) = mfbbb;
                     //////////////////////////////////////////////////////////////////////////
-
-                    if ((*particleData)(ix1, ix2, ix3)->solidFraction < SOLFRAC_MIN)
-                        return;
-
-
+                    f[D3Q27System::REST] = mfbbb;
+                     
+                    f[D3Q27System::E]    = mfcbb;
+                    f[D3Q27System::N]    = mfbcb;
+                    f[D3Q27System::T]    = mfbbc;
+                    f[D3Q27System::NE]   = mfccb;
+                    f[D3Q27System::NW]   = mfacb;
+                    f[D3Q27System::TE]   = mfcbc;
+                    f[D3Q27System::TW]   = mfabc;
+                    f[D3Q27System::TN]   = mfbcc;
+                    f[D3Q27System::TS]   = mfbac;
+                    f[D3Q27System::TNE]  = mfccc;
+                    f[D3Q27System::TNW]  = mfacc;
+                    f[D3Q27System::TSE]  = mfcac;
+                    f[D3Q27System::TSW]  = mfaac;
+                                     
+                    f[D3Q27System::W]    = mfabb;
+                    f[D3Q27System::S]    = mfbab;
+                    f[D3Q27System::B]    = mfbba;
+                    f[D3Q27System::SW]   = mfaab;
+                    f[D3Q27System::SE]   = mfcab;
+                    f[D3Q27System::BW]   = mfaba;
+                    f[D3Q27System::BE]   = mfcba;
+                    f[D3Q27System::BS]   = mfbaa;
+                    f[D3Q27System::BN]   = mfbca;
+                    f[D3Q27System::BSW]  = mfaaa;
+                    f[D3Q27System::BSE]  = mfcaa;
+                    f[D3Q27System::BNW]  = mfaca;
+                    f[D3Q27System::BNE]  = mfcca;
+                }
+                    if ((*particleData)(x1, x2, x3)->solidFraction < SOLFRAC_MIN)
+                        continue;
+
+                    LBMReal vx1, vx2, vx3, drho;
+                    D3Q27System::calcCompMacroscopicValues(f, drho, vx1, vx2, vx3);
+                    D3Q27System::calcCompFeq(fEq, drho, vx1, vx2, vx3);
+
+                    std::array<double, 3> uPart;
+                    uPart[0] = (*particleData)(x1, x2, x3)->uPart[0] * (1. + drho);
+                    uPart[1] = (*particleData)(x1, x2, x3)->uPart[1] * (1. + drho);
+                    uPart[2] = (*particleData)(x1, x2, x3)->uPart[2] * (1. + drho);
+
+                    D3Q27System::calcCompFeq(fEqSolid, drho, uPart[0], uPart[1], uPart[2]);
+
+                    if ((*particleData)(x1, x2, x3)->solidFraction > SOLFRAC_MAX) {
+                        double const bb0     = fEq[D3Q27System::REST] - fEqSolid[D3Q27System::REST];
+                        f[D3Q27System::REST] = fPre[D3Q27System::REST] + bb0;
+                        for (int iPop = D3Q27System::FSTARTDIR; iPop <= D3Q27System::FENDDIR; iPop++) {
+                            const int iOpp        = D3Q27System::INVDIR[iPop];
+                            double const bb       = ((fPre[iOpp] - fEq[iOpp]) - (fPre[iPop] - fEqSolid[iPop]));
+                            double const bbOpp    = ((fPre[iPop] - fEq[iPop]) - (fPre[iOpp] - fEqSolid[iOpp]));
+
+
+                            f[iPop] = fPre[iPop] + bb;
+                            f[iOpp] = fPre[iOpp] + bbOpp;
+
+                            (*particleData)(x1, x2, x3)->hydrodynamicForce[0] -= D3Q27System::DX1[iPop] * (bb - bbOpp);
+                            (*particleData)(x1, x2, x3)->hydrodynamicForce[1] -= D3Q27System::DX2[iPop] * (bb - bbOpp);
+                            (*particleData)(x1, x2, x3)->hydrodynamicForce[2] -= D3Q27System::DX3[iPop] * (bb - bbOpp);
+                        }
+                    } else { /* particleData.solidFraction < SOLFRAC_MAX */
+//#ifdef LBDEM_USE_WEIGHING
+                        double const ooo = 1. / omega - 0.5;
+                        double const B   = (*particleData)(x1, x2, x3)->solidFraction * ooo / ((1. - (*particleData)(x1, x2, x3)->solidFraction) + ooo);
+//#else
+//                        T const B = particleData.solidFraction;
+//#endif
+                        double const oneMinB = 1. - B;
+
+                        double const bb0 = fEq[D3Q27System::REST] - fEqSolid[D3Q27System::REST];
+                        f[D3Q27System::REST] = fPre[D3Q27System::REST] + oneMinB * (f[D3Q27System::REST] - fPre[D3Q27System::REST]) + B * bb0;
+
+                        for (int iPop = D3Q27System::FSTARTDIR; iPop <= D3Q27System::FENDDIR; iPop++) {
+                            int const iOpp = D3Q27System::INVDIR[iPop];
+                            double const bb       = B * ((fPre[iOpp] - fEq[iOpp]) - (fPre[iPop] - fEqSolid[iPop]));
+                            double const bbOpp    = B * ((fPre[iPop] - fEq[iPop]) - (fPre[iOpp] - fEqSolid[iOpp]));
+
+                            f[iPop] = fPre[iPop] + oneMinB * (f[iPop] - fPre[iPop]) + bb;
+                            f[iOpp] = fPre[iOpp] + oneMinB * (f[iOpp] - fPre[iOpp]) + bbOpp;
+
+                            (*particleData)(x1, x2, x3)->hydrodynamicForce[0] -= D3Q27System::DX1[iPop] * (bb - bbOpp);
+                            (*particleData)(x1, x2, x3)->hydrodynamicForce[1] -= D3Q27System::DX2[iPop] * (bb - bbOpp);
+                            (*particleData)(x1, x2, x3)->hydrodynamicForce[2] -= D3Q27System::DX3[iPop] * (bb - bbOpp);
+                        }
+                    } /* if solidFraction > SOLFRAC_MAX */
+
+                    (*this->restDistributions)(x1, x2, x3)                             = f[D3Q27System::REST];
+                                                                                          
+                    (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3)         = f[D3Q27System::W]   ;
+                    (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3)         = f[D3Q27System::S]   ;
+                    (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3)         = f[D3Q27System::B]   ;
+                    (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3)        = f[D3Q27System::SW]  ;
+                    (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3)       = f[D3Q27System::SE]  ;
+                    (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3)        = f[D3Q27System::BW]  ;
+                    (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3)       = f[D3Q27System::BE]  ;
+                    (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3)        = f[D3Q27System::BS]  ;
+                    (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3)       = f[D3Q27System::BN]  ;
+                    (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3)       = f[D3Q27System::BSW] ;
+                    (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3)      = f[D3Q27System::BSE] ;
+                    (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3)      = f[D3Q27System::BNW] ;
+                    (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3)     = f[D3Q27System::BNE] ;
+                                                                                                          
+                    (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3)     =  f[D3Q27System::E]  ;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3)     =  f[D3Q27System::N]  ;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p)     =  f[D3Q27System::T]  ;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3)   =  f[D3Q27System::NE] ;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3)    =  f[D3Q27System::NW] ;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p)   =  f[D3Q27System::TE] ;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p)    =  f[D3Q27System::TW] ;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p)   =  f[D3Q27System::TN] ;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p)    =  f[D3Q27System::TS] ;
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p) =  f[D3Q27System::TNE];
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p)  =  f[D3Q27System::TNW];
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p)  =  f[D3Q27System::TSE];
+                    (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p)   =  f[D3Q27System::TSW];
                 }
             }
         }
diff --git a/src/cpu/VirtualFluidsCore/LBM/IBcumulantK17LBMKernel.h b/src/cpu/LiggghtsCoupling/IBcumulantK17LBMKernel.h
similarity index 99%
rename from src/cpu/VirtualFluidsCore/LBM/IBcumulantK17LBMKernel.h
rename to src/cpu/LiggghtsCoupling/IBcumulantK17LBMKernel.h
index 1d3fb0f568cf5c71191c3ee3981e9a454d6b5d3a..503d1970979afa83cf6d1d65ccd43356a5123720 100644
--- a/src/cpu/VirtualFluidsCore/LBM/IBcumulantK17LBMKernel.h
+++ b/src/cpu/LiggghtsCoupling/IBcumulantK17LBMKernel.h
@@ -71,7 +71,6 @@ protected:
     inline void backwardChimera(LBMReal& mfa, LBMReal& mfb, LBMReal& mfc, LBMReal vv, LBMReal v2);
 
     virtual void initDataSet();
-    LBMReal f[D3Q27System::ENDF + 1];
 
     CbArray4D<LBMReal, IndexerX4X3X2X1>::CbArray4DPtr localDistributions;
     CbArray4D<LBMReal, IndexerX4X3X2X1>::CbArray4DPtr nonLocalDistributions;
diff --git a/src/cpu/LiggghtsCoupling/IBdynamicsParticleData.h b/src/cpu/LiggghtsCoupling/IBdynamicsParticleData.h
index 8bf11ca7a052d7f403c4b147975f1086a0402e1f..28f11bf2eb84a509d59e6c098c0fbb69874f9517 100644
--- a/src/cpu/LiggghtsCoupling/IBdynamicsParticleData.h
+++ b/src/cpu/LiggghtsCoupling/IBdynamicsParticleData.h
@@ -41,10 +41,21 @@ constexpr auto SOLFRAC_MAX = 0.999;
 
 struct IBdynamicsParticleData {
 public:
-    int partId{0};
-    double solidFraction{0};
-    std::array<double, 3> uPart{ 0., 0., 0. };
-    std::array<double, 3> hydrodynamicForce{ 0., 0., 0. };
+    IBdynamicsParticleData()
+        : partId(0), solidFraction(0.)
+    {
+        uPart[0] = 0.;
+        uPart[1] = 0.;
+        uPart[2] = 0.;
+
+        hydrodynamicForce[0] = 0.;
+        hydrodynamicForce[1] = 0.;
+        hydrodynamicForce[2] = 0.;
+    };
+    int partId;
+    double solidFraction;
+    std::array<double, 3> uPart;
+    std::array<double, 3> hydrodynamicForce;
 };
 
 #endif
diff --git a/src/cpu/LiggghtsCoupling/LiggghtsCouplingCoProcessor.cpp b/src/cpu/LiggghtsCoupling/LiggghtsCouplingCoProcessor.cpp
index ae3335374161bff8ff8c189a54d634cb53e64bce..d4926e0b11bd96b4d097ccf79060b437de6ce8da 100644
--- a/src/cpu/LiggghtsCoupling/LiggghtsCouplingCoProcessor.cpp
+++ b/src/cpu/LiggghtsCoupling/LiggghtsCouplingCoProcessor.cpp
@@ -9,11 +9,12 @@
 #include "DistributionArray3D.h"
 #include "DataSet3D.h"
 #include "IBcumulantK17LBMKernel.h"
+#include "LBMUnitConverter.h"
+#include "fix_lb_coupling_onetoone.h"
 
 LiggghtsCouplingCoProcessor::LiggghtsCouplingCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s,
-                                                         SPtr<Communicator> comm, LiggghtsCouplingWrapper &wrapper,
-                                                         int demSteps)
-    : CoProcessor(grid, s), comm(comm), wrapper(wrapper), demSteps(demSteps)
+                                                         SPtr<Communicator> comm, LiggghtsCouplingWrapper &wrapper, int demSteps, SPtr<LBMUnitConverter> units)
+    : CoProcessor(grid, s), comm(comm), wrapper(wrapper), demSteps(demSteps), units(units)
 {
     //gridRank     = comm->getProcessID();
     //minInitLevel = this->grid->getCoarsestInitializedLevel();
@@ -32,9 +33,11 @@ LiggghtsCouplingCoProcessor::~LiggghtsCouplingCoProcessor()
 
 void LiggghtsCouplingCoProcessor::process(double actualTimeStep)
 { 
-    setSpheresOnLattice();
-    wrapper.run(demSteps);
     std::cout << "step: " << actualTimeStep << "\n";
+    
+    wrapper.run(demSteps);
+    
+    setSpheresOnLattice();
 }
 
 void LiggghtsCouplingCoProcessor::setSpheresOnLattice()
@@ -64,12 +67,12 @@ void LiggghtsCouplingCoProcessor::setSpheresOnLattice()
 
         for (int i = 0; i < 3; i++) 
         {
-            x[i] = wrapper.lmp->atom->x[iS][i];
-            v[i]     = wrapper.lmp->atom->v[iS][i];
-            omega[i] = wrapper.lmp->atom->omega[iS][i];
+            x[i]     = wrapper.lmp->atom->x[iS][i]; // * units->getFactorLentghWToLb(); // - 0.5; ????
+            v[i]     = wrapper.lmp->atom->v[iS][i] * units->getFactorVelocityWToLb();
+            omega[i] = wrapper.lmp->atom->omega[iS][i] / units->getFactorTimeWToLb();
         }
         
-        r = wrapper.lmp->atom->radius[iS];
+        r = wrapper.lmp->atom->radius[iS]; // * units->getFactorLentghWToLb();
 
         std::cout << "x[0] = " << x[0] << ", x[1] = " << x[1] << ", x[2] = " << x[2] << std::endl;
         std::cout << "v[0] = " << v[0] << ", v[1] = " << v[1] << ", v[2] = " << v[2] << std::endl;
@@ -80,8 +83,6 @@ void LiggghtsCouplingCoProcessor::setSpheresOnLattice()
     }
 }
 
-void LiggghtsCouplingCoProcessor::getForcesFromLattice() {}
-
 void LiggghtsCouplingCoProcessor::setSingleSphere3D(double *x, double *v, double *omega, /* double *com,*/ double r,
                                                     int id /*, bool initVelFlag*/)
 {
@@ -98,7 +99,6 @@ void LiggghtsCouplingCoProcessor::setSingleSphere3D(double *x, double *v, double
     for (SPtr<Block3D> block : blocks) {
         if (block) {
             SPtr<ILBMKernel> kernel = block->getKernel();
-            // SPtr<BCArray3D> bcArray                 = kernel->getBCProcessor()->getBCArray();
             SPtr<DistributionArray3D> distributions = kernel->getDataSet()->getFdistributions();
 
             CbArray3D<SPtr<IBdynamicsParticleData>, IndexerX3X2X1>::CbArray3DPtr particleData =
@@ -111,21 +111,27 @@ void LiggghtsCouplingCoProcessor::setSingleSphere3D(double *x, double *v, double
             int minX2 = 1;
             int minX3 = 1;
 
-            int maxX1 = (int)(distributions->getNX1()) - 1;
-            int maxX2 = (int)(distributions->getNX2()) - 1;
-            int maxX3 = (int)(distributions->getNX3()) - 1;
+            int maxX1 = (int)(distributions->getNX1()) - 2;
+            int maxX2 = (int)(distributions->getNX2()) - 2;
+            int maxX3 = (int)(distributions->getNX3()) - 2;
 
             for (int ix3 = minX3; ix3 < maxX3; ix3++) {
                 for (int ix2 = minX2; ix2 < maxX2; ix2++) {
                     for (int ix1 = minX1; ix1 < maxX1; ix1++) {
 
-                        Vector3D nX = grid->getNodeCoordinates(block, ix1, ix2, ix3);
-                        
-                        double const dx = nX[0] - x[0];
-                        double const dy = nX[1] - x[1];
-                        double const dz = nX[2] - x[2];
+                        //UbTupleInt3 blockNX = grid->getBlockNX();
+
+                        //double const dx = val<1>(blockNX) * block->getX1() + ix1 - x[0];
+                        //double const dy = val<2>(blockNX) * block->getX2() + ix2 - x[1];
+                        //double const dz = val<3>(blockNX) * block->getX3() + ix3 - x[2];
+
+                        Vector3D worldCoordinates = grid->getNodeCoordinates(block, ix1, ix2, ix3);
+
+                        double const dx = (worldCoordinates[0] - x[0]) * units->getFactorLentghWToLb();
+                        double const dy = (worldCoordinates[1] - x[1]) * units->getFactorLentghWToLb();
+                        double const dz = (worldCoordinates[2] - x[2]) * units->getFactorLentghWToLb();
 
-                        double const sf = calcSolidFraction(dx, dy, dz, r);
+                        double const sf = calcSolidFraction(dx, dy, dz, r * units->getFactorLentghWToLb());
 
                         double const sf_old = (*particleData)(ix1,ix2,ix3)->solidFraction;
                         int const id_old = (int)(*particleData)(ix1,ix2,ix3)->partId;
@@ -137,7 +143,7 @@ void LiggghtsCouplingCoProcessor::setSingleSphere3D(double *x, double *v, double
                                 setToZero(*(*particleData)(ix1, ix2, ix3).get());
                                 break; // do nothing
                             case 1:    // sf > 0 && sf_old == 0
-                                setValues(*(*particleData)(ix1, ix2, ix3).get(), sf, dx, dy, dz, omega, id);
+                                setValues(*(*particleData)(ix1, ix2, ix3).get(), id, sf, v, dx, dy, dz, omega);
                                 break;
                             case 2:               // sf == 0 && sf_old > 0
                                 if (id_old == id) // then particle has left this cell
@@ -145,12 +151,17 @@ void LiggghtsCouplingCoProcessor::setSingleSphere3D(double *x, double *v, double
                                 break; // else do nothing
                             case 3:    // sf > 0 && sf_old > 0
                                 if (sf > sf_old || id_old == id)
-                                    setValues(*(*particleData)(ix1, ix2, ix3).get(), sf, dx, dy, dz, omega, id);
+                                    setValues(*(*particleData)(ix1, ix2, ix3).get(), id, sf, v, dx, dy, dz, omega);
                                 break; // else do nothing
                         }
                         // if desired, initialize interior of sphere with sphere velocity
                        // if (initVelFlag && sf > SOLFRAC_MAX)
                        //     cell.defineVelocity(particleData->uPart);
+
+                        //if (sf > 0) {
+                        //    std::cout << "sf = " << sf << std::endl;
+                        //    std::cout << "ix1 = " << ix1 << ", ix2 = " << ix2 << ", ix3 = " << ix3 << std::endl;
+                        //}
                     }
                 }
             }
@@ -206,10 +217,12 @@ double LiggghtsCouplingCoProcessor::calcSolidFraction(double const dx_, double c
     return fraction * ((double)n);
 }
 
-  void LiggghtsCouplingCoProcessor::setValues(IBdynamicsParticleData &p, double const sf, double const dx,
-                                                 double const dy, double const dz, double* omega, int id)
+  void LiggghtsCouplingCoProcessor::setValues(IBdynamicsParticleData &p, int const id, double const sf, double const *v, double const dx, double const dy, double const dz, double const *omega)
 {
-    //p.uPart.from_cArray(v);
+    p.uPart[0] = v[0];
+    p.uPart[1] = v[1];
+    p.uPart[2] = v[2];
+
     if (omega != 0) {
         p.uPart[0] += omega[1] * dz - omega[2] * dy;
         p.uPart[1] += -omega[0] * dz + omega[2] * dx;
@@ -227,4 +240,172 @@ void LiggghtsCouplingCoProcessor::setToZero(IBdynamicsParticleData &p)
     p.uPart[2]      = 0;
     p.solidFraction = 0;
     p.partId        = 0;
+}
+
+void LiggghtsCouplingCoProcessor::getForcesFromLattice()
+{
+    static std::vector<double> force, torque;
+    static typename ParticleData::ParticleDataArrayVector x_lb;
+
+    int const nPart   = wrapper.lmp->atom->nlocal + wrapper.lmp->atom->nghost;
+    int const n_force = nPart * 3;
+
+    if (nPart == 0)
+        return; // no particles - no work
+
+    if (nPart > x_lb.size()) {
+        for (int iPart = 0; iPart < x_lb.size(); iPart++) {
+            x_lb[iPart][0] = wrapper.lmp->atom->x[iPart][0];
+            x_lb[iPart][1] = wrapper.lmp->atom->x[iPart][1];
+            x_lb[iPart][2] = wrapper.lmp->atom->x[iPart][2];
+        }
+        for (int iPart = x_lb.size(); iPart < nPart; iPart++) {
+            std::array<double, 3> ar = {wrapper.lmp->atom->x[iPart][0],
+                                        wrapper.lmp->atom->x[iPart][1],
+                                        wrapper.lmp->atom->x[iPart][2]};
+            x_lb.push_back(ar);
+        }
+            
+
+    } else {
+        for (int iPart = 0; iPart < nPart; iPart++) {
+            x_lb[iPart][0] = wrapper.lmp->atom->x[iPart][0];
+            x_lb[iPart][1] = wrapper.lmp->atom->x[iPart][1];
+            x_lb[iPart][2] = wrapper.lmp->atom->x[iPart][2];
+        }
+    }
+
+    if (n_force > force.size()) {
+        for (int i = 0; i < force.size(); i++) {
+            force[i]  = 0;
+            torque[i] = 0;
+        }
+        for (int i = force.size(); i < n_force; i++) {
+            force.push_back(0.);
+            torque.push_back(0.);
+        }
+    } else {
+        for (int i = 0; i < n_force; i++) {
+            force[i]  = 0;
+            torque[i] = 0;
+        }
+    }
+
+    SumForceTorque3D(x_lb, &force.front(), &torque.front());
+
+    LAMMPS_NS::FixLbCouplingOnetoone *couplingFix =
+        dynamic_cast<LAMMPS_NS::FixLbCouplingOnetoone *>(wrapper.lmp->modify->find_fix_style("couple/lb/onetoone", 0));
+
+    double **f_liggghts = couplingFix->get_force_ptr();
+    double **t_liggghts = couplingFix->get_torque_ptr();
+
+    for (int iPart = 0; iPart < nPart; iPart++)
+        for (int j = 0; j < 3; j++) {
+            f_liggghts[iPart][j] = 0;
+            t_liggghts[iPart][j] = 0;
+        }
+
+    for (int iPart = 0; iPart < nPart; iPart++) {
+        int tag          = wrapper.lmp->atom->tag[iPart];
+        int liggghts_ind = wrapper.lmp->atom->map(tag);
+
+        for (int j = 0; j < 3; j++) {
+            f_liggghts[liggghts_ind][j] += force[3 * iPart + j] * units->getFactorForceLbToW();
+            t_liggghts[liggghts_ind][j] += torque[3 * iPart + j] * units->getFactorTorqueLbToW();
+        }
+    }
+    couplingFix->comm_force_torque();
+}
+
+void LiggghtsCouplingCoProcessor::SumForceTorque3D(ParticleData::ParticleDataArrayVector &x, double *force, double *torque)
+{
+    int nx = grid->getNX1(), ny = grid->getNX2(), nz = grid->getNX3();
+
+    std::vector < SPtr < Block3D > > blocks;
+    int level = 0;
+    grid->getBlocks(level, gridRank, true, blocks);
+
+        
+    for (SPtr<Block3D> block : blocks) {
+        if (block) {
+            SPtr<ILBMKernel> kernel                 = block->getKernel();
+            SPtr<DistributionArray3D> distributions = kernel->getDataSet()->getFdistributions();
+
+            CbArray3D<SPtr<IBdynamicsParticleData>, IndexerX3X2X1>::CbArray3DPtr particleData =
+                dynamicPointerCast<IBcumulantK17LBMKernel>(kernel)->getParticleData();
+
+            if (!particleData)
+                continue;
+
+            int minX1 = 1;
+            int minX2 = 1;
+            int minX3 = 1;
+
+            int maxX1 = (int)(distributions->getNX1()) - 2;
+            int maxX2 = (int)(distributions->getNX2()) - 2;
+            int maxX3 = (int)(distributions->getNX3()) - 2;
+
+            for (int ix3 = minX3; ix3 < maxX3; ix3++) {
+                for (int ix2 = minX2; ix2 < maxX2; ix2++) {
+                    for (int ix1 = minX1; ix1 < maxX1; ix1++) {
+
+                        // LIGGGHTS indices start at 1
+                        int const id = (*particleData)(ix1, ix2, ix3)->partId;
+                        if (id < 1)
+                            continue; // no particle here
+
+                        int const ind = wrapper.lmp->atom->map(id);
+
+                        Vector3D worldCoordinates = grid->getNodeCoordinates(block, ix1, ix2, ix3);
+
+                        double dx = (worldCoordinates[0] - x[ind][0]) * units->getFactorLentghWToLb();
+                        double dy = (worldCoordinates[1] - x[ind][1]) * units->getFactorLentghWToLb();
+                        double dz = (worldCoordinates[2] - x[ind][2]) * units->getFactorLentghWToLb();
+
+                        // minimum image convention, needed if
+                        // (1) PBC are used and
+                        // (2) both ends of PBC lie on the same processor
+                        if (dx > nx / 2)
+                            dx -= nx;
+                        else if (dx < -nx / 2)
+                            dx += nx;
+                        if (dy > ny / 2)
+                            dy -= ny;
+                        else if (dy < -ny / 2)
+                            dy += ny;
+                        if (dz > nz / 2)
+                            dz -= nz;
+                        else if (dz < -nz / 2)
+                            dz += nz;
+
+                        double const forceX = (*particleData)(ix1, ix2, ix3)->hydrodynamicForce[0];
+                        double const forceY = (*particleData)(ix1, ix2, ix3)->hydrodynamicForce[1];
+                        double const forceZ = (*particleData)(ix1, ix2, ix3)->hydrodynamicForce[2];
+
+                        double const torqueX = dy * forceZ - dz * forceY;
+                        double const torqueY = -dx * forceZ + dz * forceX;
+                        double const torqueZ = dx * forceY - dy * forceX;
+
+                        addForce(ind, 0, forceX, force);
+                        addForce(ind, 1, forceY, force);
+                        addForce(ind, 2, forceZ, force);
+
+                        addTorque(ind, 0, torqueX, torque);
+                        addTorque(ind, 1, torqueY, torque);
+                        addTorque(ind, 2, torqueZ, torque);
+                    }
+                }
+            }
+        }
+    }
+ }
+
+void LiggghtsCouplingCoProcessor::addForce(int const partId, int const coord, double const value, double *force)
+{
+    force[3 * partId + coord] += value;
+}
+
+void LiggghtsCouplingCoProcessor::addTorque(int const partId, int const coord, double const value, double *torque)
+{
+    torque[3 * partId + coord] += value;
 }
\ No newline at end of file
diff --git a/src/cpu/LiggghtsCoupling/LiggghtsCouplingCoProcessor.h b/src/cpu/LiggghtsCoupling/LiggghtsCouplingCoProcessor.h
index 509e83b4a5ed3150d40c539084d9c854870f8cbe..dcaa6e16c0a46a69d64998285119e86077500b6b 100644
--- a/src/cpu/LiggghtsCoupling/LiggghtsCouplingCoProcessor.h
+++ b/src/cpu/LiggghtsCoupling/LiggghtsCouplingCoProcessor.h
@@ -51,12 +51,18 @@ class LiggghtsCouplingWrapper;
 class Grid3D;
 class Block3D;
 struct IBdynamicsParticleData;
+class LBMUnitConverter;
+
+struct ParticleData {
+    typedef typename std::vector<std::array<double, 3>> ParticleDataArrayVector;
+    typedef typename std::vector<double> ParticleDataScalarVector;
+};
 
 class LiggghtsCouplingCoProcessor : public CoProcessor
 {
 public:
     LiggghtsCouplingCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s, SPtr<Communicator> comm,
-                                LiggghtsCouplingWrapper &wrapper, int demSteps);
+                                LiggghtsCouplingWrapper &wrapper, int demSteps, SPtr<LBMUnitConverter> units);
     virtual ~LiggghtsCouplingCoProcessor();
 
     void process(double actualTimeStep) override;
@@ -64,24 +70,34 @@ public:
     
 protected:
     void setSpheresOnLattice();
-    void getForcesFromLattice();
-    void setSingleSphere3D(double *x, double *v, double *omega, /* double *com,*/ double r,
-                           int id /*, bool initVelFlag*/);
+    
+    void setSingleSphere3D(double *x, double *v, double *omega, double r, int id /*, bool initVelFlag*/);
+    
     double calcSolidFraction(double const dx_, double const dy_, double const dz_, double const r_);
+    
+    void setValues(IBdynamicsParticleData &p, int const id, double const sf, double const *v, double const dx, double const dy, double const dz, double const *omega);
+    
+    void setToZero(IBdynamicsParticleData &p);
+    
+    void getForcesFromLattice();
+    
+    void SumForceTorque3D(ParticleData::ParticleDataArrayVector &x, double *force, double *torque);
 
-    void setValues(IBdynamicsParticleData &p, double const sf, double const dx, double const dy, double const dz,
-                   double *omega, int id);
+    void addForce(int const partId, int const coord, double const value, double *force);
 
-    void setToZero(IBdynamicsParticleData &p);
+    void addTorque(int const partId, int const coord, double const value, double *torque);
 
 private:
     SPtr<Communicator> comm;
     LiggghtsCouplingWrapper &wrapper;
+    SPtr<LBMUnitConverter> units;
     int demSteps;
-    std::vector<std::vector<SPtr<Block3D>>> blockVector;
-    int minInitLevel;
-    int maxInitLevel;
+    //std::vector<std::vector<SPtr<Block3D>>> blockVector;
+    //int minInitLevel;
+    //int maxInitLevel;
     int gridRank;
+
+    double *force, *torque;
 };
 
 #endif
diff --git a/src/cpu/VirtualFluidsCore/CMakeLists.txt b/src/cpu/VirtualFluidsCore/CMakeLists.txt
index ac6302dba2f89114906356d58221f9dcae3d4bad..260c9d50eb67b471d6c6396c6b4dd45e8d685f35 100644
--- a/src/cpu/VirtualFluidsCore/CMakeLists.txt
+++ b/src/cpu/VirtualFluidsCore/CMakeLists.txt
@@ -16,7 +16,6 @@ IF(${USE_CATALYST})
    list(APPEND VF_LIBRARIES optimized vtkParallelMPI debug vtkParallelMPI )
 ENDIF()
 
-
 IF(${USE_DEM_COUPLING})
    INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/../DemCoupling/DemCoupling.cmake)
 ENDIF()
@@ -25,12 +24,13 @@ if(BUILD_USE_OPENMP)
    list(APPEND VF_LIBRARIES OpenMP::OpenMP_CXX)
 endif()
 
-vf_add_library(BUILDTYPE static PUBLIC_LINK basics muparser MPI::MPI_CXX ${VF_LIBRARIES} liggghts)
+IF(${USE_LIGGGHTS})
+   list(APPEND VF_LIBRARIES optimized ${LIGGGHTS_RELEASE_LIBRARY} debug ${LIGGGHTS_DEBUG_LIBRARY})
+ENDIF()
 
-vf_get_library_name(library_name)
+vf_add_library(BUILDTYPE static PUBLIC_LINK basics muparser MPI::MPI_CXX ${VF_LIBRARIES})
 
-target_link_directories(${library_name} PUBLIC d:/Tools/LIGGGHTS/build/Debug)
-target_include_directories(${library_name} PUBLIC d:/Tools/LIGGGHTS/src)
+vf_get_library_name(library_name)
 
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/BoundaryConditions)
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Connectors)
@@ -42,8 +42,6 @@ target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Gr
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Visitors)
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/CoProcessors)
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Utilities)
-target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/LiggghtsCoupling)
-target_include_directories(${library_name} PUBLIC src/LiggghtsCoupling/Rconstructor)
 
 
 IF(${USE_METIS} AND METIS_INCLUDEDIR)
@@ -51,6 +49,12 @@ IF(${USE_METIS} AND METIS_INCLUDEDIR)
 ENDIF()
 
 target_include_directories(${library_name} PRIVATE ${ZOLTAN_INCLUDEDIR})
+
 IF(${USE_VTK})
    target_include_directories(${library_name} PRIVATE ${VTK_INCLUDE_DIRS})
 ENDIF()
+
+IF(${USE_LIGGGHTS})
+   target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../LiggghtsCoupling)
+   target_include_directories(${library_name} PUBLIC ${LIGGGHTS_SOURCE_DIR})
+ENDIF()
\ No newline at end of file
diff --git a/src/cpu/VirtualFluidsCore/CoProcessors/InSituVTKCoProcessor.cpp b/src/cpu/VirtualFluidsCore/CoProcessors/InSituVTKCoProcessor.cpp
index 8d5cec10521830ba2aec9f2c06ef2a796da6b954..48d3a5c7f69c230622e42be2722d47751259cfef 100644
--- a/src/cpu/VirtualFluidsCore/CoProcessors/InSituVTKCoProcessor.cpp
+++ b/src/cpu/VirtualFluidsCore/CoProcessors/InSituVTKCoProcessor.cpp
@@ -226,11 +226,11 @@ void InSituVTKCoProcessor::addData(SPtr<Block3D> block)
                                            UbSystem::toString(ix2) + "," + UbSystem::toString(ix3)));
                     // vx3=999.0;
 
-                    arrays[0]->InsertNextValue(rho * conv->getFactorDensityLbToW2());
-                    arrays[1]->InsertNextValue(vx1 * conv->getFactorVelocityLbToW2());
-                    arrays[2]->InsertNextValue(vx2 * conv->getFactorVelocityLbToW2());
-                    arrays[3]->InsertNextValue(vx3 * conv->getFactorVelocityLbToW2());
-                    arrays[4]->InsertNextValue(press * conv->getFactorPressureLbToW2());
+                    arrays[0]->InsertNextValue(rho * conv->getFactorDensityLbToW());
+                    arrays[1]->InsertNextValue(vx1 * conv->getFactorVelocityLbToW());
+                    arrays[2]->InsertNextValue(vx2 * conv->getFactorVelocityLbToW());
+                    arrays[3]->InsertNextValue(vx3 * conv->getFactorVelocityLbToW());
+                    arrays[4]->InsertNextValue(press * conv->getFactorPressureLbToW());
                 }
             }
         }
diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMUnitConverter.h b/src/cpu/VirtualFluidsCore/LBM/LBMUnitConverter.h
index 40570cc3847f71a1942791afa7e95145daafb53b..7c4ef7372c3126378c8fbe258b5914cafae5500b 100644
--- a/src/cpu/VirtualFluidsCore/LBM/LBMUnitConverter.h
+++ b/src/cpu/VirtualFluidsCore/LBM/LBMUnitConverter.h
@@ -97,14 +97,6 @@ public:
         this->init(refLengthWorld, csWorld, rhoWorld, csWorld, refLengthLb, rhoLb, csLb);
     }
 
-    LBMUnitConverter(int /*dummy*/, double uReal, double uLB, double nuReal, double nuLB)
-    {
-        factorVelocityLbToW  = uReal / uLB;
-        factorViscosityLbToW = nuReal / nuLB;
-        factorDensityLbToW   = factorViscosityLbToW * factorVelocityLbToW * factorVelocityLbToW;
-        factorPressureLbToW  = factorDensityLbToW;
-    }
-
     virtual ~LBMUnitConverter() = default;
 
     double getRefRhoLb() { return refRhoLb; }
@@ -124,10 +116,7 @@ public:
     double getFactorDensityLbToW() { return this->factorMassLbToW / std::pow(factorLengthLbToW, 3.0); }
     double getFactorDensityWToLb() { return 1.0 / this->getFactorDensityLbToW(); }
 
-    double getFactorPressureLbToW()
-    {
-        return this->factorMassLbToW / (std::pow(factorTimeLbToW, 2.0) * factorLengthLbToW);
-    }
+    double getFactorPressureLbToW(){ return this->factorMassLbToW / (factorLengthLbToW * factorTimeLbToW * factorTimeLbToW); }
     double getFactorPressureWToLb() { return 1.0 / this->getFactorPressureLbToW(); }
 
     double getFactorMassLbToW() { return this->factorMassLbToW; }
@@ -136,14 +125,14 @@ public:
     double getFactorForceLbToW() { return factorMassLbToW * factorLengthLbToW / (factorTimeLbToW * factorTimeLbToW); }
     double getFactorForceWToLb() { return 1.0 / this->getFactorForceLbToW(); }
 
+    double getFactorTorqueLbToW() { return factorMassLbToW * factorLengthLbToW * factorLengthLbToW / (factorTimeLbToW * factorTimeLbToW);}
+    double getFactorTorqueWToLb() { return 1.0 / this->getFactorTorqueWToLb(); }
+
     double getFactorAccLbToW() { return factorLengthLbToW / (factorTimeLbToW * factorTimeLbToW); }
     double getFactorAccWToLb() { return 1.0 / this->getFactorAccLbToW(); }
 
     double getFactorTimeLbToW(double deltaX) const { return factorTimeWithoutDx * deltaX; }
-    //////////////////////////////////////////////////////////////////////////
-    double getFactorVelocityLbToW2() { return factorVelocityLbToW; }
-    double getFactorDensityLbToW2() { return factorDensityLbToW; }
-    double getFactorPressureLbToW2() { return factorPressureLbToW; }
+
 
     /*==========================================================*/
     friend inline std::ostream &operator<<(std::ostream &os, LBMUnitConverter c)
@@ -212,11 +201,6 @@ protected:
     double factorMassLbToW{ 1.0 };
     double refRhoLb{ 1.0 };
     double factorTimeWithoutDx{ 0.0 };
-
-    double factorVelocityLbToW{ 1.0 };
-    double factorViscosityLbToW{ 1.0 };
-    double factorDensityLbToW{ 1.0 };
-    double factorPressureLbToW{ 1.0 };
 };
 
 #endif // LBMUNITCONVERTER_H