diff --git a/src/cpu/VirtualFluids.h b/src/cpu/VirtualFluids.h
index c377b264abb287ef996b006f670fd09989e4af0d..13026378cd7f66cd579f2192ca35708f4800ef78 100644
--- a/src/cpu/VirtualFluids.h
+++ b/src/cpu/VirtualFluids.h
@@ -247,7 +247,6 @@
 #include <cpu/core/Visitors/Grid3DVisitor.h>
 #include <cpu/core/Visitors/InitDistributionsBlockVisitor.h>
 #include <cpu/core/Visitors/InitDistributionsWithInterpolationGridVisitor.h>
-#include <cpu/core/Visitors/InitThixotropyBlockVisitor.h>
 #include <cpu/core/Visitors/MetisPartitioningGridVisitor.h>
 #include <cpu/core/Visitors/OverlapBlockVisitor.h>
 #include <cpu/core/Visitors/RatioBlockVisitor.h>
diff --git a/src/cpu/core/LBM/LBMKernel.cpp b/src/cpu/core/LBM/LBMKernel.cpp
index 369bcd8c9880c6304e83056d25fc23983b16d5b7..2b6e9f126f30c7122f8e5061746e49ce8c37bf20 100644
--- a/src/cpu/core/LBM/LBMKernel.cpp
+++ b/src/cpu/core/LBM/LBMKernel.cpp
@@ -113,7 +113,7 @@ void LBMKernel::checkFunction(mu::Parser fct)
 {
     using namespace vf::basics::constant;
 
-    real x1 = c1o1, x2 = c1o1, x3 = c1o1, dt = c1o1, nue = c1o1, rho = c1o1;
+    double x1 = c1o1, x2 = c1o1, x3 = c1o1, dt = c1o1, nue = c1o1, rho = c1o1;
     fct.DefineVar("x1", &x1);
     fct.DefineVar("x2", &x2);
     fct.DefineVar("x3", &x3);
diff --git a/src/cpu/core/Simulation/Grid3D.cpp b/src/cpu/core/Simulation/Grid3D.cpp
index 4eafc322200392f0937584366a5f0e182e06d308..b9fff7b7732e77ac8ca61cea3a3b1f4a63407e5a 100644
--- a/src/cpu/core/Simulation/Grid3D.cpp
+++ b/src/cpu/core/Simulation/Grid3D.cpp
@@ -484,7 +484,7 @@ UbTupleDouble3 Grid3D::getBlockLengths(const SPtr<Block3D> block) const
 }
 //////////////////////////////////////////////////////////////////////////
 using namespace vf::basics::constant;
-UbTupleDouble6 Grid3D::getBlockOversize() const { return makeUbTuple(c0o1, c0o1, c0o1, c0o1, c0o1, c0o1); }
+UbTupleDouble6 Grid3D::getBlockOversize() const { return makeUbTuple(0., 0., 0., 0., 0., 0.); }
 //////////////////////////////////////////////////////////////////////////
 void Grid3D::setCoordinateTransformator(SPtr<CoordinateTransformation3D> trafo) { this->trafo = trafo; }
 //////////////////////////////////////////////////////////////////////////
@@ -504,8 +504,8 @@ real Grid3D::getDeltaX(SPtr<Block3D> block) const { return getDeltaX(block->getL
 //////////////////////////////////////////////////////////////////////////
 UbTupleDouble3 Grid3D::getNodeOffset(SPtr<Block3D> block) const
 {
-    real delta = this->getDeltaX(block);
-    return makeUbTuple(offset * delta, offset * delta, offset * delta);
+    double delta = (double)this->getDeltaX(block);
+    return makeUbTuple((double)offset * delta, (double)offset * delta, (double)offset * delta);
 }
 ////////////////////////////////////////////////////////////////////////////
 Vector3D Grid3D::getNodeCoordinates(SPtr<Block3D> block, int ix1, int ix2, int ix3) const
diff --git a/src/cpu/core/SimulationObservers/AverageValuesSimulationObserver.h b/src/cpu/core/SimulationObservers/AverageValuesSimulationObserver.h
index a6e5d0b1b7f2d52c6890db586d5ecb6175dd5356..62fd57b5faa5fdf6ace6cf9de7c55b6990e3c777 100644
--- a/src/cpu/core/SimulationObservers/AverageValuesSimulationObserver.h
+++ b/src/cpu/core/SimulationObservers/AverageValuesSimulationObserver.h
@@ -85,7 +85,7 @@ private:
     std::vector<UbTupleFloat3> nodes;
     std::vector<UbTupleUInt8> cells;
     std::vector<std::string> datanames;
-    std::vector<std::vector<real>> data;
+    std::vector<std::vector<double>> data;
     std::vector<std::vector<SPtr<Block3D>>> blockVector;
     int minInitLevel; // min init level
     int maxInitLevel;
diff --git a/src/cpu/core/SimulationObservers/CalculateForcesSimulationObserver.cpp b/src/cpu/core/SimulationObservers/CalculateForcesSimulationObserver.cpp
index d8a76b96e4fab1b98d41e3bad794943fe0bf33e3..793b3da8e1b41f4d98e2de339231424087b7179e 100644
--- a/src/cpu/core/SimulationObservers/CalculateForcesSimulationObserver.cpp
+++ b/src/cpu/core/SimulationObservers/CalculateForcesSimulationObserver.cpp
@@ -227,10 +227,10 @@ UbTupleDouble3 CalculateForcesSimulationObserver::getForces(int x1, int x2, int
 
     if (bc) {
         // references to tuple "force"
-        real &forceX1 = val<1>(force);
-        real &forceX2 = val<2>(force);
-        real &forceX3 = val<3>(force);
-        real f, fnbr;
+        double &forceX1 = val<1>(force);
+        double &forceX2 = val<2>(force);
+        double &forceX3 = val<3>(force);
+        double f, fnbr;
 
         dynamicPointerCast<EsoTwist3D>(distributions)->swap();
 
diff --git a/src/cpu/core/SimulationObservers/PressureCoefficientSimulationObserver.h b/src/cpu/core/SimulationObservers/PressureCoefficientSimulationObserver.h
index 12cc43ca10c698d3eaec99ce99e230a9bd885d1a..3f713f9a49a3fbe4ce02b7b3729e20c86ea4e9fe 100644
--- a/src/cpu/core/SimulationObservers/PressureCoefficientSimulationObserver.h
+++ b/src/cpu/core/SimulationObservers/PressureCoefficientSimulationObserver.h
@@ -74,7 +74,7 @@ private:
 
     std::vector<UbTupleFloat3> nodes;
     std::vector<std::string> datanames;
-    std::vector<std::vector<real>> data;
+    std::vector<std::vector<double>> data;
 
     std::vector<real> outValues;
 
diff --git a/src/cpu/core/SimulationObservers/QCriterionSimulationObserver.h b/src/cpu/core/SimulationObservers/QCriterionSimulationObserver.h
index ebca5bd88de2f59991aacbed9a90e4fc8fe45db8..803c025de6be83579dd2f3ed1d5d64e1408c7af0 100644
--- a/src/cpu/core/SimulationObservers/QCriterionSimulationObserver.h
+++ b/src/cpu/core/SimulationObservers/QCriterionSimulationObserver.h
@@ -80,7 +80,7 @@ private:
     std::vector<UbTupleFloat3> nodes;
     std::vector<UbTupleUInt8> cells;
     std::vector<std::string> datanames; // only one entry for QKrit-SimulationObserver: Q
-    std::vector<std::vector<real>> data;
+    std::vector<std::vector<double>> data;
     std::vector<std::vector<SPtr<Block3D>>> blockVector;
     int minInitLevel; // go through all levels for block vector of current process from minInitLevel to maxInitLevel
     int maxInitLevel;
diff --git a/src/cpu/core/SimulationObservers/ShearStressSimulationObserver.h b/src/cpu/core/SimulationObservers/ShearStressSimulationObserver.h
index 7e7ffdfa3cc65b0788120138719fc9fe963a9af5..ea5a7af32ee4f091b690cb6edb5eb46ce0a612fa 100644
--- a/src/cpu/core/SimulationObservers/ShearStressSimulationObserver.h
+++ b/src/cpu/core/SimulationObservers/ShearStressSimulationObserver.h
@@ -86,7 +86,7 @@ protected:
 private:
     std::vector<UbTupleFloat3> nodes;
     std::vector<std::string> datanames;
-    std::vector<std::vector<real>> data;
+    std::vector<std::vector<double>> data;
     std::string path;
     std::vector<SPtr<D3Q27Interactor>> interactors;
     std::vector<real> normals;
diff --git a/src/cpu/core/SimulationObservers/TimeAveragedValuesSimulationObserver.h b/src/cpu/core/SimulationObservers/TimeAveragedValuesSimulationObserver.h
index 53b7ca4a621af8df7d8785bd0b739bbfe02c34d9..771d0dd920564917469989f862c43292e57ff4e1 100644
--- a/src/cpu/core/SimulationObservers/TimeAveragedValuesSimulationObserver.h
+++ b/src/cpu/core/SimulationObservers/TimeAveragedValuesSimulationObserver.h
@@ -106,7 +106,7 @@ private:
     std::vector<UbTupleFloat3> nodes;
     std::vector<UbTupleUInt8> cells;
     std::vector<std::string> datanames;
-    std::vector<std::vector<real>> data;
+    std::vector<std::vector<double>> data;
     std::vector<std::vector<SPtr<Block3D>>> blockVector;
     bool root;
     int minInitLevel; // min init level
diff --git a/src/cpu/core/SimulationObservers/TurbulenceIntensitySimulationObserver.h b/src/cpu/core/SimulationObservers/TurbulenceIntensitySimulationObserver.h
index 0022b3ab85cf7ba6c1ca0f386413263fed992857..20fca1fe7ab7ad768fc9be4b109b41441671c8a3 100644
--- a/src/cpu/core/SimulationObservers/TurbulenceIntensitySimulationObserver.h
+++ b/src/cpu/core/SimulationObservers/TurbulenceIntensitySimulationObserver.h
@@ -64,7 +64,7 @@ private:
     std::vector<UbTupleFloat3> nodes;
     std::vector<UbTupleUInt8> cells;
     std::vector<std::string> datanames;
-    std::vector<std::vector<real>> data;
+    std::vector<std::vector<double>> data;
     std::vector<std::vector<SPtr<Block3D>>> blockVector;
     int minInitLevel;
     int maxInitLevel;
diff --git a/src/cpu/core/SimulationObservers/WriteBlocksSimulationObserver.cpp b/src/cpu/core/SimulationObservers/WriteBlocksSimulationObserver.cpp
index 45ea8b5714775bca42b23dc14d96fa764129d962..8a215e5c4a0e079939e706fa17e54d1bc123386d 100644
--- a/src/cpu/core/SimulationObservers/WriteBlocksSimulationObserver.cpp
+++ b/src/cpu/core/SimulationObservers/WriteBlocksSimulationObserver.cpp
@@ -76,7 +76,7 @@ void WriteBlocksSimulationObserver::collectData(real step)
         celldatanames.push_back("bundle");
 #endif
 
-        std::vector<std::vector<real>> celldata(celldatanames.size());
+        std::vector<std::vector<double>> celldata(celldatanames.size());
 
         int nr           = 0;
         int minInitLevel = this->grid->getCoarsestInitializedLevel();
diff --git a/src/cpu/core/SimulationObservers/WriteBoundaryConditionsSimulationObserver.h b/src/cpu/core/SimulationObservers/WriteBoundaryConditionsSimulationObserver.h
index aff7893432dfbd99f9ceae5d407e26c39e16304d..9071cd60fb3831482ea894b90a3f160c7ceceab6 100644
--- a/src/cpu/core/SimulationObservers/WriteBoundaryConditionsSimulationObserver.h
+++ b/src/cpu/core/SimulationObservers/WriteBoundaryConditionsSimulationObserver.h
@@ -77,7 +77,7 @@ private:
     std::vector<UbTupleFloat3> nodes;
     std::vector<UbTupleUInt8> cells;
     std::vector<std::string> datanames;
-    std::vector<std::vector<real>> data;
+    std::vector<std::vector<double>> data;
     std::string path;
     WbWriter *writer;
     std::vector<std::vector<SPtr<Block3D>>> blockVector;
diff --git a/src/cpu/core/SimulationObservers/WriteMQFromSelectionSimulationObserver.h b/src/cpu/core/SimulationObservers/WriteMQFromSelectionSimulationObserver.h
index 94442fedc4017145a481375ddefd84c440bb2c7e..d01268adfd66fc7967d85b0394dfe1abb101a27d 100644
--- a/src/cpu/core/SimulationObservers/WriteMQFromSelectionSimulationObserver.h
+++ b/src/cpu/core/SimulationObservers/WriteMQFromSelectionSimulationObserver.h
@@ -70,7 +70,7 @@ private:
     void init();
     std::vector<UbTupleFloat3> nodes;
     std::vector<std::string> datanames;
-    std::vector<std::vector<real>> data;
+    std::vector<std::vector<double>> data;
     std::string path;
     WbWriter *writer;
     SPtr<LBMUnitConverter> conv;
diff --git a/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.h b/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.h
index 279f9dfba3cc41c0a06ef4cc66b06e6b841f4259..039c9ce10eb735b9a326f1491cc4fbe84c98eaab 100644
--- a/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.h
+++ b/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.h
@@ -82,7 +82,7 @@ private:
     std::vector<UbTupleFloat3> nodes;
     std::vector<UbTupleUInt8> cells;
     std::vector<std::string> datanames;
-    std::vector<std::vector<real>> data;
+    std::vector<std::vector<double>> data;
     std::string path;
     WbWriter *writer;
     SPtr<LBMUnitConverter> conv;
diff --git a/src/cpu/core/Visitors/InitDistributionsBlockVisitor.cpp b/src/cpu/core/Visitors/InitDistributionsBlockVisitor.cpp
index 6a306e26caa0423e51e12444d57ab045a3734072..2c65409c6224dce73c6a6f80e114373677cd9118 100644
--- a/src/cpu/core/Visitors/InitDistributionsBlockVisitor.cpp
+++ b/src/cpu/core/Visitors/InitDistributionsBlockVisitor.cpp
@@ -303,7 +303,7 @@ void InitDistributionsBlockVisitor::checkFunction(mu::Parser fct)
 {
     using namespace vf::basics::constant;
     
-    real x1 = c1o1, x2 = c1o1, x3 = c1o1;
+    double x1 = c1o1, x2 = c1o1, x3 = c1o1;
     fct.DefineVar("x1", &x1);
     fct.DefineVar("x2", &x2);
     fct.DefineVar("x3", &x3);