From 7535e9e0fa9852f6627c769f3c78b71d5d465603 Mon Sep 17 00:00:00 2001
From: Soeren Peters <peters@irmb.tu-bs.de>
Date: Wed, 10 Jan 2018 17:26:27 +0100
Subject: [PATCH] - new type real

---
 .../geometries/BoundingBox/BoundingBox.cu     |   82 +-
 .../geometries/BoundingBox/BoundingBox.cuh    |   10 +-
 .../BoundingBox/BoundingBoxTest.cpp           |   54 +-
 .../Serialization/BoundingBoxMemento.h        |   12 +-
 .../Serialization/BoundingBoxMementoTest.cpp  |    4 +-
 .../geometries/Geometry/Geometry.cu           |    8 +-
 .../geometries/Geometry/Geometry.cuh          |    6 +-
 .../Triangle/Serialization/TriangleMemento.h  |    2 +-
 .../geometries/Triangle/Triangle.cu           |   30 +-
 .../geometries/Triangle/Triangle.cuh          |   14 +-
 .../geometries/Triangle/TriangleTest.cpp      |   42 +-
 .../Vertex/Serialization/VertexMemento.h      |    2 +-
 src/GridGenerator/geometries/Vertex/Vertex.cu |   40 +-
 .../geometries/Vertex/Vertex.cuh              |   26 +-
 .../geometries/Vertex/VertexTest.cpp          |    4 +-
 src/GridGenerator/global.h                    |    2 +-
 src/GridGenerator/grid/Grid.cu                |    8 +-
 .../grid/GridBuilder/GridBuilder.h            |   14 +-
 .../grid/GridBuilder/GridBuilderImp.cpp       |   54 +-
 .../grid/GridBuilder/GridBuilderImp.h         |   18 +-
 src/GridGenerator/grid/GridTest.cpp           |    4 +-
 .../GridWrapperCPU/GridWrapperCPU.cpp         |   12 +-
 .../GridWrapperCPU/GridWrapperCPU.h           |    2 +-
 .../GridWrapperCPU/GridWrapperCPUTest.cpp     |   66 +-
 .../GridWrapperGPU/GridWrapperGPU.cpp         |   12 +-
 .../GridWrapperGPU/GridWrapperGPUTest.cpp     |   78 +-
 .../grid/distributions/Distribution.cpp       |   22 +-
 .../grid/distributions/Distribution.h         |   10 +-
 .../grid/partition/Partition.cpp              |   18 +-
 src/GridGenerator/grid/partition/Partition.h  |    2 +-
 .../io/GridVTKWriter/GridVTKWriter.cpp        |    2 +-
 .../io/STLReaderWriter/STLReader.cpp          |    8 +-
 .../SimulationFileTest.cpp                    |   28 +-
 .../SimulationFileWriter.cpp                  |   10 +-
 .../SimulationFileWriter.h                    |    6 +-
 .../UnstructuredGridWrapper.cpp               |    2 +-
 .../Launchparameter/LaunchParameter.cu        |    4 +-
 src/GridGenerator/utilities/math/CudaMath.cu  |   18 +-
 src/GridGenerator/utilities/math/CudaMath.cuh |   10 +-
 .../transformator/ArrowTransformator.cpp      |    2 +-
 .../transformator/ArrowTransformator.h        |    2 +-
 .../Serialization/TransformatorMemento.h      |   12 +-
 .../TransformatorMementoTest.cpp              |    4 +-
 .../utilities/transformator/Transformator.cpp |    2 +-
 .../utilities/transformator/Transformator.h   |    6 +-
 .../transformator/TransformatorImp.cpp        |   10 +-
 .../transformator/TransformatorImp.h          |   12 +-
 .../transformator/TransformatorMocks.h        |    4 +-
 .../transformator/TransformatorTest.cpp       |   56 +-
 .../TriangleNeighborFinder.cpp                |   36 +-
 .../TriangleNeighborFinder.h                  |    4 +-
 .../TriangleNeighborFinderTest.cpp            |   24 +-
 .../triangleRefinement/TriangleRefinement.cpp |   10 +-
 .../triangleRefinement/TriangleRefinement.h   |    2 +-
 .../TriangleRefinementTest.cpp                |   26 +-
 .../Calculation/CalcMedian.cpp                |   20 +-
 .../Calculation/ForceCalculations.cpp         |    6 +-
 .../Calculation/PlaneCalculations.cpp         |    8 +-
 .../Calculation/UpdateGrid27.cpp              |   12 +-
 .../Communication/Communicator.cpp            |   10 +-
 .../Communication/Communicator.h              |   21 +-
 .../DataStructureInitializer/GridProvider.cpp |    4 +-
 .../DataStructureInitializer/GridProvider.h   |    5 +-
 .../GridReaderFiles/BoundaryQs.cpp            |    4 +-
 .../GridReaderFiles/BoundaryQs.h              |    4 +-
 .../GridReaderFiles/BoundaryValues.cpp        |    8 +-
 .../GridReaderFiles/BoundaryValues.h          |   10 +-
 .../GridReaderFiles/CoordNeighborGeoV.cpp     |    4 +-
 .../GridReaderFiles/CoordNeighborGeoV.h       |    6 +-
 .../GridReaderFiles/GridReader.cpp            |  137 +-
 .../GridReaderFiles/GridReader.h              |   16 +-
 .../GridReaderFiles/MeasuredPoints.cpp        |   61 +
 .../GridReaderFiles/MeasuredPoints.h          |   23 +
 .../GridReaderFiles/OffsetScale.cpp           |  138 +
 .../GridReaderFiles/OffsetScale.h             |   27 +
 .../GridReaderGenerator/GridGenerator.cpp     |   18 +-
 .../GridReaderGenerator/GridGenerator.h       |   16 +-
 .../FindInterface/FindInterface.cpp           |  294 +-
 src/VirtualFluids_GPU/FindQ/DefineBCs.cpp     |    8 +-
 src/VirtualFluids_GPU/FindQ/FindQ.cpp         |  514 ++--
 src/VirtualFluids_GPU/FindQ/FindQ.h           |   10 +-
 src/VirtualFluids_GPU/GPU/AdvecDiffBCs27.cu   | 2478 ++++++++--------
 .../GPU/AdvecDiffKernel27.cu                  |  760 ++---
 src/VirtualFluids_GPU/GPU/BGK27.cu            |  420 +--
 src/VirtualFluids_GPU/GPU/CP27.cu             |    2 +-
 src/VirtualFluids_GPU/GPU/Calc2ndMoments27.cu |  410 +--
 src/VirtualFluids_GPU/GPU/CalcMac27.cu        |  142 +-
 src/VirtualFluids_GPU/GPU/Cascade27.cu        | 1210 ++++----
 .../GPU/CudaMemoryManager.cpp                 |  505 ++++
 src/VirtualFluids_GPU/GPU/CudaMemoryManager.h |   93 +
 src/VirtualFluids_GPU/GPU/Cumulant27.cu       | 2606 ++++++++---------
 src/VirtualFluids_GPU/GPU/DragLift27.cu       |   20 +-
 src/VirtualFluids_GPU/GPU/ExchangeData27.cu   |   16 +-
 src/VirtualFluids_GPU/GPU/GPU_Interface.h     | 1413 +++++----
 src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh     | 1438 ++++-----
 src/VirtualFluids_GPU/GPU/Init27.cu           |  210 +-
 src/VirtualFluids_GPU/GPU/LBMKernel.cu        | 1412 ++++-----
 src/VirtualFluids_GPU/GPU/MRTuTRT27.cu        |  250 +-
 src/VirtualFluids_GPU/GPU/NoSlipBCs27.cu      |  122 +-
 src/VirtualFluids_GPU/GPU/Particles.cu        |  424 +--
 .../GPU/PorousMediaCumulant27.cu              |  180 +-
 src/VirtualFluids_GPU/GPU/PressBCs27.cu       |  808 ++---
 src/VirtualFluids_GPU/GPU/Random.cu           |    4 +-
 src/VirtualFluids_GPU/GPU/ScaleCF27.cu        | 2464 ++++++++--------
 src/VirtualFluids_GPU/GPU/ScaleFC27.cu        | 2320 +++++++--------
 src/VirtualFluids_GPU/GPU/SchlafferBCs27.cu   |   80 +-
 src/VirtualFluids_GPU/GPU/SetForcing27.cu     |   70 +-
 src/VirtualFluids_GPU/GPU/SlipBCs27.cu        |  398 +--
 src/VirtualFluids_GPU/GPU/VelocityBCs27.cu    |  560 ++--
 src/VirtualFluids_GPU/GPU/WaleCumulant27.cu   |  510 ++--
 src/VirtualFluids_GPU/GPU/WallFunction.cu     |   32 +-
 src/VirtualFluids_GPU/GPU/constant.h          |  142 +-
 .../GPU/{devCheck.cu => devCheck.cpp}         |   10 +-
 src/VirtualFluids_GPU/GPU/devCheck.h          |    3 +-
 src/VirtualFluids_GPU/Init/DefineGrid.cpp     |   32 +-
 src/VirtualFluids_GPU/Init/InitLattice.cpp    |    8 +-
 src/VirtualFluids_GPU/Init/InitLattice.h      |    9 +-
 src/VirtualFluids_GPU/Init/SetParameter.cpp   |  520 ++--
 src/VirtualFluids_GPU/Init/SetParameter.h     |   30 +-
 src/VirtualFluids_GPU/Init/VfReader.cpp       |   14 +-
 .../Input/PositionReader.cpp                  |   56 +-
 .../Interface_OpenFOAM/CoordNeighborGeoV.h    |    4 +-
 .../Interface_OpenFOAM/package.include        |    0
 src/VirtualFluids_GPU/LBM/LB.h                |  101 +-
 src/VirtualFluids_GPU/LBM/Simulation.cpp      |  174 +-
 src/VirtualFluids_GPU/LBM/Simulation.h        |   56 +-
 src/VirtualFluids_GPU/Output/AnalysisData.hpp |   30 +-
 .../Output/InterfaceDebugWriter.hpp           |   60 +-
 .../Output/MeasurePointWriter.hpp             |   18 +-
 .../Output/UnstructuredGridWriter.hpp         |    2 +-
 src/VirtualFluids_GPU/Output/VtkSGWriter.hpp  |   90 +-
 src/VirtualFluids_GPU/Output/WriteData.cpp    |   13 +-
 src/VirtualFluids_GPU/Output/WriteData.h      |   12 +-
 src/VirtualFluids_GPU/Parameter/Parameter.cpp |  712 ++---
 src/VirtualFluids_GPU/Parameter/Parameter.h   |  207 +-
 src/VirtualFluids_GPU/Particles/Particles.cpp |   78 +-
 .../Restart/RestartObject.cpp                 |    6 +-
 src/VirtualFluids_GPU/Restart/RestartObject.h |    2 +-
 .../Temperature/FindQTemp.cpp                 |   92 +-
 src/core/DataTypes.h                          |   16 +
 src/core/PointerDefinitions.h                 |   22 +
 targets/apps/HULC/CMakeLists.txt              |    4 +-
 targets/apps/HULC/main.cpp                    |  127 +-
 targets/libs/GridGenerator/CMakeLists.txt     |    4 +-
 targets/libs/VirtualFluids_GPU/CMakeLists.txt |    4 +-
 145 files changed, 13724 insertions(+), 12633 deletions(-)
 create mode 100644 src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/MeasuredPoints.cpp
 create mode 100644 src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/MeasuredPoints.h
 create mode 100644 src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/OffsetScale.cpp
 create mode 100644 src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/OffsetScale.h
 create mode 100644 src/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp
 create mode 100644 src/VirtualFluids_GPU/GPU/CudaMemoryManager.h
 rename src/VirtualFluids_GPU/GPU/{devCheck.cu => devCheck.cpp} (94%)
 delete mode 100644 src/VirtualFluids_GPU/Interface_OpenFOAM/package.include
 create mode 100644 src/core/DataTypes.h
 create mode 100644 src/core/PointerDefinitions.h

diff --git a/src/GridGenerator/geometries/BoundingBox/BoundingBox.cu b/src/GridGenerator/geometries/BoundingBox/BoundingBox.cu
index 21f54ef83..38a8174ef 100644
--- a/src/GridGenerator/geometries/BoundingBox/BoundingBox.cu
+++ b/src/GridGenerator/geometries/BoundingBox/BoundingBox.cu
@@ -21,9 +21,9 @@ template <typename T>
      minZ(0),
      maxZ(0) {}
 
- BoundingBox<doubflo>::BoundingBox(const BoundingBox<doubflo> &t) : minX(t.minX), maxX(t.maxX), minY(t.minY), maxY(t.maxY), minZ(t.minZ), maxZ(t.maxZ) {}
+ BoundingBox<real>::BoundingBox(const BoundingBox<real> &t) : minX(t.minX), maxX(t.maxX), minY(t.minY), maxY(t.maxY), minZ(t.minZ), maxZ(t.maxZ) {}
 
- BoundingBox<int>::BoundingBox(const BoundingBox<doubflo> &box)
+ BoundingBox<int>::BoundingBox(const BoundingBox<real> &box)
  {
      this->minX = (int)(box.minX);
      this->minY = (int)(box.minY);
@@ -37,19 +37,19 @@ template <typename T>
  template <typename T>
  BoundingBox<T>::BoundingBox(const BoundingBox<int> &box)
  {
-	 this->minX = (doubflo)box.minX;
-	 this->minY = (doubflo)box.minY;
-	 this->minZ = (doubflo)box.minZ;
+	 this->minX = (real)box.minX;
+	 this->minY = (real)box.minY;
+	 this->minZ = (real)box.minZ;
 
-	 this->maxX = (doubflo)box.maxX;
-	 this->maxY = (doubflo)box.maxY;
-	 this->maxZ = (doubflo)box.maxZ;
+	 this->maxX = (real)box.maxX;
+	 this->maxY = (real)box.maxY;
+	 this->maxZ = (real)box.maxZ;
  }
 
 
- HOSTDEVICE BoundingBox<doubflo> BoundingBox<doubflo>::makeExactBox(const Triangle &t)
+ HOSTDEVICE BoundingBox<real> BoundingBox<real>::makeExactBox(const Triangle &t)
  {
-	 BoundingBox<doubflo> box;
+	 BoundingBox<real> box;
      t.setMinMax(box.minX, box.maxX, box.minY, box.maxY, box.minZ, box.maxZ);
 	 return box;
  }
@@ -71,7 +71,7 @@ template <typename T>
  {
 	 BoundingBox<int> box;
 
-     doubflo minX, maxX, minY, maxY, minZ, maxZ;
+     real minX, maxX, minY, maxY, minZ, maxZ;
      t.setMinMax(minX, maxX, minY, maxY, minZ, maxZ);
 
 	 calculateMinMaxOnNodes(box.minX, box.maxX, minX, maxX);
@@ -81,13 +81,13 @@ template <typename T>
  }
 
  template <>
- HOSTDEVICE void BoundingBox<int>::calculateMinMaxOnNodes(int &minNode, int &maxNode, const doubflo &minExact, const doubflo &maxExact)
+ HOSTDEVICE void BoundingBox<int>::calculateMinMaxOnNodes(int &minNode, int &maxNode, const real &minExact, const real &maxExact)
  {
      minNode = ceil(minExact - 1.0);
      maxNode = floor(maxExact + 1.0);
  }
 
- void BoundingBox<doubflo>::setMinMax(const Triangle& t)
+ void BoundingBox<real>::setMinMax(const Triangle& t)
  {
      t.setMinMax(minX, maxX, minY, maxY, minZ, maxZ);
  }
@@ -117,46 +117,46 @@ template <typename T>
  }
 
  template <typename T>
- std::vector<std::vector<Vertex> > BoundingBox<T>::getIntersectionPoints(const BoundingBox<doubflo> &b) const
+ std::vector<std::vector<Vertex> > BoundingBox<T>::getIntersectionPoints(const BoundingBox<real> &b) const
  {
 	 std::vector<std::vector<Vertex> > intersectionBox;
 	 intersectionBox.resize(6);
 
 	 int intersects = 0;
 	 if (b.minX < maxX && b.maxX > maxX) { //maxX is intersect
-		 intersectionBox[intersects].push_back(Vertex((doubflo)maxX, (doubflo)minY, (doubflo)minZ));
-		 intersectionBox[intersects].push_back(Vertex((doubflo)maxX, (doubflo)maxY, (doubflo)minZ));
-		 intersectionBox[intersects].push_back(Vertex((doubflo)maxX, (doubflo)minY, (doubflo)maxZ));
+		 intersectionBox[intersects].push_back(Vertex((real)maxX, (real)minY, (real)minZ));
+		 intersectionBox[intersects].push_back(Vertex((real)maxX, (real)maxY, (real)minZ));
+		 intersectionBox[intersects].push_back(Vertex((real)maxX, (real)minY, (real)maxZ));
 		 intersects++;
 	 }
 	 if (b.minX < minX && b.maxX > minX) { //minX is intersect
-		 intersectionBox[intersects].push_back(Vertex((doubflo)minX, (doubflo)minY, (doubflo)minZ));
-		 intersectionBox[intersects].push_back(Vertex((doubflo)minX, (doubflo)maxY, (doubflo)minZ));
-		 intersectionBox[intersects].push_back(Vertex((doubflo)minX, (doubflo)minY, (doubflo)maxZ));
+		 intersectionBox[intersects].push_back(Vertex((real)minX, (real)minY, (real)minZ));
+		 intersectionBox[intersects].push_back(Vertex((real)minX, (real)maxY, (real)minZ));
+		 intersectionBox[intersects].push_back(Vertex((real)minX, (real)minY, (real)maxZ));
 		 intersects++;
 	 }
 	 if (b.minY < minY && b.maxY > minY) { //minY is intersect
-		 intersectionBox[intersects].push_back(Vertex((doubflo)minX, (doubflo)minY, (doubflo)minZ));
-		 intersectionBox[intersects].push_back(Vertex((doubflo)maxX, (doubflo)minY, (doubflo)minZ));
-		 intersectionBox[intersects].push_back(Vertex((doubflo)minX, (doubflo)minY, (doubflo)maxZ));
+		 intersectionBox[intersects].push_back(Vertex((real)minX, (real)minY, (real)minZ));
+		 intersectionBox[intersects].push_back(Vertex((real)maxX, (real)minY, (real)minZ));
+		 intersectionBox[intersects].push_back(Vertex((real)minX, (real)minY, (real)maxZ));
 		 intersects++;
 	 }
 	 if (b.minY < maxY && b.maxY > maxY) { //maxY is intersect
-		 intersectionBox[intersects].push_back(Vertex((doubflo)minX, (doubflo)maxY, (doubflo)minZ));
-		 intersectionBox[intersects].push_back(Vertex((doubflo)maxX, (doubflo)maxY, (doubflo)minZ));
-		 intersectionBox[intersects].push_back(Vertex((doubflo)minX, (doubflo)maxY, (doubflo)maxZ));
+		 intersectionBox[intersects].push_back(Vertex((real)minX, (real)maxY, (real)minZ));
+		 intersectionBox[intersects].push_back(Vertex((real)maxX, (real)maxY, (real)minZ));
+		 intersectionBox[intersects].push_back(Vertex((real)minX, (real)maxY, (real)maxZ));
 		 intersects++;
 	 }
 	 if (b.minZ < minZ && b.maxZ > minZ) { //minZ is intersect
-		 intersectionBox[intersects].push_back(Vertex((doubflo)minX, (doubflo)minY, (doubflo)minZ));
-		 intersectionBox[intersects].push_back(Vertex((doubflo)maxX, (doubflo)minY, (doubflo)minZ));
-		 intersectionBox[intersects].push_back(Vertex((doubflo)minX, (doubflo)maxY, (doubflo)minZ));
+		 intersectionBox[intersects].push_back(Vertex((real)minX, (real)minY, (real)minZ));
+		 intersectionBox[intersects].push_back(Vertex((real)maxX, (real)minY, (real)minZ));
+		 intersectionBox[intersects].push_back(Vertex((real)minX, (real)maxY, (real)minZ));
 		 intersects++;
 	 }
 	 if (b.minZ < maxZ && b.maxZ > maxZ) { //maxZ is intersect
-		 intersectionBox[intersects].push_back(Vertex((doubflo)minX, (doubflo)minY, (doubflo)maxZ));
-		 intersectionBox[intersects].push_back(Vertex((doubflo)maxX, (doubflo)minY, (doubflo)maxZ));
-		 intersectionBox[intersects].push_back(Vertex((doubflo)minX, (doubflo)maxY, (doubflo)maxZ));
+		 intersectionBox[intersects].push_back(Vertex((real)minX, (real)minY, (real)maxZ));
+		 intersectionBox[intersects].push_back(Vertex((real)maxX, (real)minY, (real)maxZ));
+		 intersectionBox[intersects].push_back(Vertex((real)minX, (real)maxY, (real)maxZ));
 		 intersects++;
 	 }
 
@@ -195,11 +195,11 @@ template <typename T>
  template <typename T>
  void BoundingBox<T>::print() const
  {
-	 printf("min/max - x: %2.4f/ %2.4f, y: %2.4f, %2.4f, z: %2.4f, %2.4f \n", (doubflo)minX, (doubflo)maxX, (doubflo)minY, (doubflo)maxY, (doubflo)minZ, (doubflo)maxZ);
+	 printf("min/max - x: %2.4f/ %2.4f, y: %2.4f, %2.4f, z: %2.4f, %2.4f \n", (real)minX, (real)maxX, (real)minY, (real)maxY, (real)minZ, (real)maxZ);
  }
 
 
- HOST bool BoundingBox<doubflo>::operator==(const BoundingBox<doubflo> &box) const
+ HOST bool BoundingBox<real>::operator==(const BoundingBox<real> &box) const
  {
      return CudaMath::equal(minX, box.minX)
          && CudaMath::equal(maxX, box.maxX)
@@ -214,12 +214,12 @@ template <typename T>
  HOST BoundingBoxMemento BoundingBox<T>::getState() const
  {
      BoundingBoxMemento memento;
-     memento.minX = (doubflo)minX;
-     memento.maxX = (doubflo)maxX;
-     memento.minY = (doubflo)minY;
-     memento.maxY = (doubflo)maxY;
-     memento.minZ = (doubflo)minZ;
-     memento.maxZ = (doubflo)maxZ;
+     memento.minX = (real)minX;
+     memento.maxX = (real)maxX;
+     memento.minY = (real)minY;
+     memento.maxY = (real)maxY;
+     memento.minZ = (real)minZ;
+     memento.maxZ = (real)maxZ;
      return memento;
  }
 
@@ -236,4 +236,4 @@ template <typename T>
 
 
  template class VF_PUBLIC BoundingBox<int>;
- template class VF_PUBLIC BoundingBox<doubflo>;
+ template class VF_PUBLIC BoundingBox<real>;
diff --git a/src/GridGenerator/geometries/BoundingBox/BoundingBox.cuh b/src/GridGenerator/geometries/BoundingBox/BoundingBox.cuh
index f36aac983..837851131 100644
--- a/src/GridGenerator/geometries/BoundingBox/BoundingBox.cuh
+++ b/src/GridGenerator/geometries/BoundingBox/BoundingBox.cuh
@@ -26,10 +26,10 @@ public:
 	BoundingBox(T minX, T maxX, T minY, T maxY, T minZ, T maxZ);
     HOSTDEVICE BoundingBox();
 	BoundingBox(const BoundingBox<int> &box);
-	BoundingBox(const BoundingBox<doubflo> &t);
+	BoundingBox(const BoundingBox<real> &t);
 
 public:
-	HOST static BoundingBox<doubflo> makeExactBox(const Triangle &t);
+	HOST static BoundingBox<real> makeExactBox(const Triangle &t);
 	HOSTDEVICE static BoundingBox<int> makeNodeBox(const Triangle &t);
     HOST static BoundingBox<T> makeInvalidMinMaxBox();
 
@@ -39,18 +39,18 @@ public:
 	bool isInside(const Triangle &t) const;
 	bool intersect(const Triangle &t) const;
 
-	std::vector<std::vector<Vertex> > getIntersectionPoints(const BoundingBox<doubflo> &b) const;
+	std::vector<std::vector<Vertex> > getIntersectionPoints(const BoundingBox<real> &b) const;
 	bool intersect(const BoundingBox<T> &box) const;
 
 
     HOST BoundingBoxMemento getState() const;
     HOST void setState(const BoundingBoxMemento &memento);
 
-    HOST bool operator==(const BoundingBox<doubflo> &box) const;
+    HOST bool operator==(const BoundingBox<real> &box) const;
     
 
 private:
-    HOSTDEVICE static void calculateMinMaxOnNodes(int &minNode, int &maxNode, const doubflo &minExact, const doubflo &maxExact);
+    HOSTDEVICE static void calculateMinMaxOnNodes(int &minNode, int &maxNode, const real &minExact, const real &maxExact);
 
 	bool isInside(const Vertex &v) const;
 	void getPoints(Vertex v[8]) const;
diff --git a/src/GridGenerator/geometries/BoundingBox/BoundingBoxTest.cpp b/src/GridGenerator/geometries/BoundingBox/BoundingBoxTest.cpp
index 75ba6ae42..1a39a2f38 100644
--- a/src/GridGenerator/geometries/BoundingBox/BoundingBoxTest.cpp
+++ b/src/GridGenerator/geometries/BoundingBox/BoundingBoxTest.cpp
@@ -10,13 +10,13 @@ using namespace testing;
 
 TEST(BoundingBoxTest, initWithTriangle_whenTheValueIsIntegerBoxHasToPLUS_or_MINUS_ONE) 
 {
-    doubflo minX = 1.0f;
-    doubflo minY = 23.0f;
-    doubflo minZ = 1.1222f;
+    real minX = 1.0f;
+    real minY = 23.0f;
+    real minZ = 1.1222f;
 
-    doubflo maxX = 110.0f;
-    doubflo maxY = 50.0f;
-    doubflo maxZ = 12122.23f;
+    real maxX = 110.0f;
+    real maxY = 50.0f;
+    real maxZ = 12122.23f;
 	BoundingBox<int> box = BoundingBox<int>::makeNodeBox(Triangle(Vertex(maxX, maxY - 10, minZ + 2), Vertex(minX, maxY, maxZ), Vertex(minX + 3, minY, minZ), Vertex(0.0f, 0.0f, 0.0f)));
     EXPECT_THAT(box.minX, Eq(minX - 1));
     EXPECT_THAT(box.minY, Eq(minY - 1));
@@ -56,13 +56,13 @@ TEST(BoundingBoxTest, initWithTriangle3)
 
 TEST(BoundingBoxTest, whenAllValueAreFloat_BoxHasToCEIL_OR_FLOOR) 
 {
-    doubflo minX = 1.5f;
-    doubflo minY = 23.2f;
-    doubflo minZ = 1.1222f;
+    real minX = 1.5f;
+    real minY = 23.2f;
+    real minZ = 1.1222f;
 
-    doubflo maxX = 110.4f;
-    doubflo maxY = 50.5f;
-    doubflo maxZ = 12122.23f;
+    real maxX = 110.4f;
+    real maxY = 50.5f;
+    real maxZ = 12122.23f;
 
 	BoundingBox<int> box = BoundingBox<int>::makeNodeBox(Triangle(Vertex(maxX, maxY - 10, minZ + 2), Vertex(minX, maxY, maxZ), Vertex(minX + 3, minY, minZ), Vertex(0.0f, 0.0f, 0.0f)));
 
@@ -78,31 +78,31 @@ TEST(BoundingBoxTest, whenAllValueAreFloat_BoxHasToCEIL_OR_FLOOR)
 
 TEST(BoundingBoxExactTest, findMinMaxFromTriangle)
 {
-    BoundingBox<doubflo> box = BoundingBox<doubflo>::makeInvalidMinMaxBox();
+    BoundingBox<real> box = BoundingBox<real>::makeInvalidMinMaxBox();
 
-    doubflo minX = 1.0f;
-    doubflo minY = 23.0f;
-    doubflo minZ = 1.1222f;
+    real minX = 1.0f;
+    real minY = 23.0f;
+    real minZ = 1.1222f;
 
-    doubflo maxX = 110.0f;
-    doubflo maxY = 50.0f;
-    doubflo maxZ = 12122.23f;
+    real maxX = 110.0f;
+    real maxY = 50.0f;
+    real maxZ = 12122.23f;
     Triangle t = Triangle(Vertex(maxX, maxY - 10, minZ + 2), Vertex(minX, maxY, maxZ), Vertex(minX + 3, minY, minZ), Vertex(0.0f, 0.0f, 0.0f));
 
 	box.setMinMax(t);
 
-	EXPECT_THAT(box.minX, FloatEq(minX));
-	EXPECT_THAT(box.minY, FloatEq(minY));
-	EXPECT_THAT(box.minZ, FloatEq(minZ));
+	EXPECT_THAT(box.minX, DoubleEq(minX));
+	EXPECT_THAT(box.minY, DoubleEq(minY));
+	EXPECT_THAT(box.minZ, DoubleEq(minZ));
 	
-	EXPECT_THAT(box.maxX, FloatEq(maxX));
-	EXPECT_THAT(box.maxY, FloatEq(maxY));
-	EXPECT_THAT(box.maxZ, FloatEq(maxZ));
+	EXPECT_THAT(box.maxX, DoubleEq(maxX));
+	EXPECT_THAT(box.maxY, DoubleEq(maxY));
+	EXPECT_THAT(box.maxZ, DoubleEq(maxZ));
 }
 
 TEST(BoundingBoxTest, isInside_true)
 {
-    BoundingBox<doubflo> box = BoundingBox<doubflo>();
+    BoundingBox<real> box = BoundingBox<real>();
 
     box.minX = 0.0f;
     box.minY = 0.0f;
@@ -119,7 +119,7 @@ TEST(BoundingBoxTest, isInside_true)
 
 TEST(BoundingBoxTest, isInside_false)
 {
-    BoundingBox<doubflo> box = BoundingBox<doubflo>();
+    BoundingBox<real> box = BoundingBox<real>();
 
     box.minX = 0.0f;
     box.minY = 0.0f;
diff --git a/src/GridGenerator/geometries/BoundingBox/Serialization/BoundingBoxMemento.h b/src/GridGenerator/geometries/BoundingBox/Serialization/BoundingBoxMemento.h
index 15443a031..b715b4866 100644
--- a/src/GridGenerator/geometries/BoundingBox/Serialization/BoundingBoxMemento.h
+++ b/src/GridGenerator/geometries/BoundingBox/Serialization/BoundingBoxMemento.h
@@ -30,12 +30,12 @@ class VF_PUBLIC BoundingBoxMemento
 #endif
 
 public:
-    doubflo minX;
-    doubflo maxX;
-    doubflo minY;
-    doubflo maxY;
-    doubflo minZ;
-    doubflo maxZ;
+    real minX;
+    real maxX;
+    real minY;
+    real maxY;
+    real minZ;
+    real maxZ;
 
 };
 
diff --git a/src/GridGenerator/geometries/BoundingBox/Serialization/BoundingBoxMementoTest.cpp b/src/GridGenerator/geometries/BoundingBox/Serialization/BoundingBoxMementoTest.cpp
index e136ea593..173820378 100644
--- a/src/GridGenerator/geometries/BoundingBox/Serialization/BoundingBoxMementoTest.cpp
+++ b/src/GridGenerator/geometries/BoundingBox/Serialization/BoundingBoxMementoTest.cpp
@@ -27,7 +27,7 @@ TEST(BoundingBoxMementoTest, serializeAndDeserializeBB)
 {
     std::string fileName = "boundingbox";
 
-    BoundingBox<doubflo> box(1.2, 22.2, -23.2, 2, 0.0001, 1212122.1);
+    BoundingBox<real> box(1.2, 22.2, -23.2, 2, 0.0001, 1212122.1);
 
 
     BoundingBoxMemento sut = box.getState();
@@ -35,7 +35,7 @@ TEST(BoundingBoxMementoTest, serializeAndDeserializeBB)
 
     BoundingBoxMemento newSut;
     deserialize(newSut, fileName);
-    BoundingBox<doubflo> boxNew;
+    BoundingBox<real> boxNew;
     boxNew.setState(newSut);
 
     EXPECT_TRUE(box == boxNew);
diff --git a/src/GridGenerator/geometries/Geometry/Geometry.cu b/src/GridGenerator/geometries/Geometry/Geometry.cu
index da5402ac4..9b5709056 100644
--- a/src/GridGenerator/geometries/Geometry/Geometry.cu
+++ b/src/GridGenerator/geometries/Geometry/Geometry.cu
@@ -26,7 +26,7 @@ Geometry::Geometry(const Geometry& geo)
 	this->triangleVec = geo.triangleVec;
     this->triangles = geo.triangles;
     this->size = geo.size;
-	this->minmax = BoundingBox<doubflo>(geo.minmax);
+	this->minmax = BoundingBox<real>(geo.minmax);
 }
 
 Geometry::Geometry()
@@ -39,7 +39,7 @@ Geometry::~Geometry()
 	delete this->transformator;
 }
 
-void Geometry::transformChannelGeometry(const doubflo resolution)
+void Geometry::transformChannelGeometry(const real resolution)
 {
 	delete this->transformator;
 	this->transformator = new TransformatorImp(resolution, -minmax.minX, -minmax.minY, -minmax.minZ);
@@ -59,7 +59,7 @@ void Geometry::findNeighbors()
 	finder.fillWithNeighborAngles(this);
 	clock_t end = clock();
 
-	doubflo time = doubflo(end - begin) / CLOCKS_PER_SEC;
+	real time = real(end - begin) / CLOCKS_PER_SEC;
 	*logging::out << logging::Logger::INTERMEDIATE << "time finding neighbors: " << SSTR(time) << "s\n";
 }
 
@@ -74,7 +74,7 @@ void Geometry::setTriangles(std::vector<Triangle> triangles)
 	initalizeDataFromTriangles();
 }
 
-void Geometry::setMinMax(BoundingBox<doubflo> minmax)
+void Geometry::setMinMax(BoundingBox<real> minmax)
 {
 	this->minmax = minmax;
 }
diff --git a/src/GridGenerator/geometries/Geometry/Geometry.cuh b/src/GridGenerator/geometries/Geometry/Geometry.cuh
index bc71b869c..332916c97 100644
--- a/src/GridGenerator/geometries/Geometry/Geometry.cuh
+++ b/src/GridGenerator/geometries/Geometry/Geometry.cuh
@@ -27,13 +27,13 @@ public:
 	VF_PUBLIC Transformator* getTransformator();
 
 	VF_PUBLIC void setTriangles(std::vector<Triangle> triangles);
-	VF_PUBLIC void setMinMax(BoundingBox<doubflo> minmax);
-	VF_PUBLIC void transformChannelGeometry(const doubflo resolution);
+	VF_PUBLIC void setMinMax(BoundingBox<real> minmax);
+	VF_PUBLIC void transformChannelGeometry(const real resolution);
 
 	std::vector<Triangle> triangleVec;
 	Triangle *triangles;
 	int size;
-	BoundingBox<doubflo> minmax;
+	BoundingBox<real> minmax;
 
     HOST VF_PUBLIC bool operator==(const Geometry &geometry) const;
 
diff --git a/src/GridGenerator/geometries/Triangle/Serialization/TriangleMemento.h b/src/GridGenerator/geometries/Triangle/Serialization/TriangleMemento.h
index c0f2b2203..190328c99 100644
--- a/src/GridGenerator/geometries/Triangle/Serialization/TriangleMemento.h
+++ b/src/GridGenerator/geometries/Triangle/Serialization/TriangleMemento.h
@@ -27,7 +27,7 @@ class VF_PUBLIC TriangleMemento
 
 public:
     VertexMemento v1, v2, v3, normal;
-    doubflo alphaAngles[3];
+    real alphaAngles[3];
 
 };
 
diff --git a/src/GridGenerator/geometries/Triangle/Triangle.cu b/src/GridGenerator/geometries/Triangle/Triangle.cu
index a63957836..219776eb1 100644
--- a/src/GridGenerator/geometries/Triangle/Triangle.cu
+++ b/src/GridGenerator/geometries/Triangle/Triangle.cu
@@ -26,7 +26,7 @@ HOSTDEVICE void Triangle::calcNormal()
 
 HOSTDEVICE char Triangle::isUnderFace(const Vertex &point) const
 {
-    doubflo s, delta;
+    real s, delta;
     delta = abs(this->normal.x) + abs(this->normal.y) + abs(this->normal.z); //TODO: muss eigentlich nicht fuer jeden Punkt neu berechnet werden
 
     if (this->isUnterExtendedFace(point, s, delta))
@@ -47,13 +47,13 @@ HOSTDEVICE char Triangle::isUnderFace(const Vertex &point) const
     
 }
 
-HOSTDEVICE bool Triangle::isUnterExtendedFace(const Vertex &point, doubflo &s, doubflo &delta) const
+HOSTDEVICE bool Triangle::isUnterExtendedFace(const Vertex &point, real &s, real &delta) const
 {
     s = this->getPerpedicularDistanceFrom(point);
     return ((CudaMath::greaterEqual(s, 0.0f)) && s < delta);
 }
 
-HOSTDEVICE doubflo Triangle::getPerpedicularDistanceFrom(const Vertex &P) const
+HOSTDEVICE real Triangle::getPerpedicularDistanceFrom(const Vertex &P) const
 {
     Vertex v = P - v1;
     return  (v * -1.0f) * normal;
@@ -64,7 +64,7 @@ HOSTDEVICE Vertex Triangle::getPerpedicularPointFrom(const Vertex &P) const
     return P + normal * getPerpedicularDistanceFrom(P);
 }
 
-HOSTDEVICE bool Triangle::isQNode(const Vertex &point, const doubflo &s, const doubflo &delta) const
+HOSTDEVICE bool Triangle::isQNode(const Vertex &point, const real &s, const real &delta) const
 {
     return (s < 0 && CudaMath::lessEqual(-s, delta));
     //calculateQs(actualPoint, actualTriangle);
@@ -88,9 +88,9 @@ HOSTDEVICE bool Triangle::isNotNextToFace(const Vertex &point) const
     Vertex t2 = w2.crossProduct(v3 - v2);
     Vertex t3 = w3.crossProduct(v1 - v3);
 
-    doubflo g1 = t1 * normal;
-    doubflo g2 = t2 * normal;
-    doubflo g3 = t3 * normal;
+    real g1 = t1 * normal;
+    real g2 = t2 * normal;
+    real g3 = t3 * normal;
 
     return CudaMath::lessEqual(g1, 0.0f) && CudaMath::lessEqual(g2, 0.0f) && CudaMath::lessEqual(g3, 0.0f);
 }
@@ -104,7 +104,7 @@ HOSTDEVICE bool Triangle::isUnderAngleToNeighbors(const Vertex &point) const
     Vertex q[3];
     Vertex r[3];
 
-    doubflo betaAngles[3];
+    real betaAngles[3];
     for (int i = 0; i < 3; i++)
     {
         q[i] = point - Pci[i];
@@ -112,7 +112,7 @@ HOSTDEVICE bool Triangle::isUnderAngleToNeighbors(const Vertex &point) const
         betaAngles[i] = q[i].getInnerAngle(r[i]);
     }
 
-    doubflo eps = EPSILON * 100.0f;
+    real eps = EPSILON * 100.0f;
     return (CudaMath::lessEqual(betaAngles[0], alphaAngles[0], eps) && CudaMath::lessEqual(betaAngles[1], alphaAngles[1], eps) && CudaMath::lessEqual(betaAngles[2], alphaAngles[2], eps));
 }
 
@@ -127,7 +127,7 @@ HOSTDEVICE void Triangle::getClosestPointsOnEdges(Vertex arr[], const Vertex &P)
     Vertex d2 = v3 - v2;
     Vertex d3 = v1 - v3;
 
-    doubflo temp = (v4 * d1) / (d1 * d1);
+    real temp = (v4 * d1) / (d1 * d1);
     Vertex tempV = d1 * temp;
     Pc1 = v1 + tempV;
 
@@ -149,11 +149,11 @@ Vertex Triangle::getCenterOfMass() const
     return (v1 + v2 + v3) * (1.0f / 3.0f);
 }
 
-doubflo Triangle::getHalfAngleBetweenToAdjacentTriangle(const Triangle &t2) const
+real Triangle::getHalfAngleBetweenToAdjacentTriangle(const Triangle &t2) const
 {
     if (isEqual(t2)) return 0.0f;
 
-    doubflo alpha = normal.getInnerAngle(t2.normal);
+    real alpha = normal.getInnerAngle(t2.normal);
 	if (alpha == 0.0f)
 		return 90.0f;
 
@@ -174,7 +174,7 @@ bool Triangle::doesNormalsShowToEachOther(const  Triangle &t2) const
     Vertex s2 = t2.getCenterOfMass();
 
     Vertex s1s2 = s1 - s2;
-    doubflo X = s1s2 * t2.normal;
+    real X = s1s2 * t2.normal;
     return X > 0 ? true : false;
 }
 
@@ -219,7 +219,7 @@ HOSTDEVICE int Triangle::getNumberOfCommonEdge(const Triangle &t2) const
 }
 
 
-HOSTDEVICE int Triangle::getTriangleIntersection(const Vertex &P, const Vertex &direction, Vertex &pointOnTri, doubflo &qVal) const
+HOSTDEVICE int Triangle::getTriangleIntersection(const Vertex &P, const Vertex &direction, Vertex &pointOnTri, real &qVal) const
 {
     Vertex edge1, edge2, tvec, pvec, qvec, tuv;
     float det, inv_det;
@@ -277,7 +277,7 @@ HOST bool Triangle::operator==(const Triangle &t) const
 }
 
 
-HOSTDEVICE void Triangle::setMinMax(doubflo &minX, doubflo &maxX, doubflo &minY, doubflo &maxY, doubflo &minZ, doubflo &maxZ) const
+HOSTDEVICE void Triangle::setMinMax(real &minX, real &maxX, real &minY, real &maxY, real &minZ, real &maxZ) const
 {
     Vertex::setMinMax(minX, maxX, minY, maxY, minZ, maxZ, v1, v2, v3);
 }
diff --git a/src/GridGenerator/geometries/Triangle/Triangle.cuh b/src/GridGenerator/geometries/Triangle/Triangle.cuh
index 61e4f5b79..481bebd1f 100644
--- a/src/GridGenerator/geometries/Triangle/Triangle.cuh
+++ b/src/GridGenerator/geometries/Triangle/Triangle.cuh
@@ -14,7 +14,7 @@ class TriangleMemento;
 struct VF_PUBLIC Triangle
 {
     Vertex v1, v2, v3, normal;
-    doubflo alphaAngles[3];
+    real alphaAngles[3];
     
 	HOSTDEVICE Triangle(Vertex &v1, Vertex &v2, Vertex &v3, Vertex &normal);
 	HOSTDEVICE Triangle(Vertex &v1, Vertex &v2, Vertex &v3);
@@ -25,25 +25,25 @@ struct VF_PUBLIC Triangle
 
 
 	Vertex getCenterOfMass() const;
-	doubflo getHalfAngleBetweenToAdjacentTriangle(const Triangle &t2) const;
+	real getHalfAngleBetweenToAdjacentTriangle(const Triangle &t2) const;
 	int isEqual(const Triangle &t2) const;
 	bool doesNormalsShowToEachOther(const  Triangle &t2) const;
 	int getCommonEdge(const Triangle &t2) const;
 
 	bool contains(const Vertex& v)const;
 	HOSTDEVICE int getNumberOfCommonEdge(const Triangle &t2) const;
-	HOSTDEVICE int getTriangleIntersection(const Vertex &P, const Vertex &direction, Vertex &pointOnTri, doubflo &qVal) const;
+	HOSTDEVICE int getTriangleIntersection(const Vertex &P, const Vertex &direction, Vertex &pointOnTri, real &qVal) const;
 	HOSTDEVICE void print() const;
 
     HOSTDEVICE char isUnderFace(const Vertex &point) const;
 
-    HOSTDEVICE bool isUnterExtendedFace(const Vertex & point, doubflo &s, doubflo &delta) const;
+    HOSTDEVICE bool isUnterExtendedFace(const Vertex & point, real &s, real &delta) const;
     HOSTDEVICE bool isNotNextToFace(const Vertex &point) const;
     HOSTDEVICE bool isUnderAngleToNeighbors(const Vertex &point) const;
     HOSTDEVICE void getClosestPointsOnEdges(Vertex arr[], const Vertex &P) const;
-    HOSTDEVICE doubflo getPerpedicularDistanceFrom(const Vertex &P) const;
+    HOSTDEVICE real getPerpedicularDistanceFrom(const Vertex &P) const;
     HOSTDEVICE Vertex getPerpedicularPointFrom(const Vertex &P) const;
-    HOSTDEVICE bool isQNode(const Vertex & point, const doubflo &s, const doubflo &delta) const;
+    HOSTDEVICE bool isQNode(const Vertex & point, const real &s, const real &delta) const;
     HOSTDEVICE bool isStopper(const Vertex & point) const;
 
     HOST bool operator==(const Triangle &t) const;
@@ -52,7 +52,7 @@ struct VF_PUBLIC Triangle
     HOST void setState(const TriangleMemento &memento);
 
 
-    HOSTDEVICE void Triangle::setMinMax(doubflo &minX, doubflo &maxX, doubflo &minY, doubflo &maxY, doubflo &minZ, doubflo &maxZ) const;
+    HOSTDEVICE void Triangle::setMinMax(real &minX, real &maxX, real &minY, real &maxY, real &minZ, real &maxZ) const;
 };
 
 #endif
diff --git a/src/GridGenerator/geometries/Triangle/TriangleTest.cpp b/src/GridGenerator/geometries/Triangle/TriangleTest.cpp
index ae765556b..aabc83c8f 100644
--- a/src/GridGenerator/geometries/Triangle/TriangleTest.cpp
+++ b/src/GridGenerator/geometries/Triangle/TriangleTest.cpp
@@ -26,17 +26,17 @@ TEST(TriangleTest, changeTriangleWithSetMethod)
 {
 	Triangle t;
 
-	doubflo v1x = 3.0f;
-	doubflo v1y = 3.0f;
-	doubflo v1z = 3.0f;
+	real v1x = 3.0f;
+	real v1y = 3.0f;
+	real v1z = 3.0f;
 
-	doubflo v2x = 1.0f;
-	doubflo v2y = 1.0f;
-	doubflo v2z = 3.0f;
+	real v2x = 1.0f;
+	real v2y = 1.0f;
+	real v2z = 3.0f;
 
-	doubflo v3x = -1.0f;
-	doubflo v3y = 1.0f;
-	doubflo v3z = 3.0f;
+	real v3x = -1.0f;
+	real v3y = 1.0f;
+	real v3z = 3.0f;
 
 	t.set(Vertex(v1x,v1y,v1z), Vertex(v2x, v2y, v2z), Vertex(v3x, v3y, v3z));
 
@@ -97,7 +97,7 @@ TEST(TriangleTest, pointintersectTriangle_directionIntoTriangle_ExpectReturn1)
     Vertex direction = Vertex(1.0f, 0, 0);
     Vertex intersect;
 
-    doubflo q;
+    real q;
     int err = t.getTriangleIntersection(v, direction, intersect, q);
     ASSERT_THAT(err, Eq(1));
 }
@@ -111,7 +111,7 @@ TEST(TriangleTest, pointintersectTriangle_directionAgainstTriangle_ExpectReturn0
     Vertex direction = Vertex(-1.0f, 0, 0);
     Vertex intersect;
 
-    doubflo q;
+    real q;
     int err = t.getTriangleIntersection(v, direction, intersect, q);
     ASSERT_THAT(err, Eq(0));
 }
@@ -122,8 +122,8 @@ TEST(TriangleTest, getHalfAngleBetweenTwoEqualTriangles_ExpectNullAngle)
     Triangle t1 = Triangle(Vertex(0, 0, 0), Vertex(10, 0, 0), Vertex(0, 10, 0), Vertex(0, 0, 1));
     Triangle t2 = Triangle(Vertex(0, 0, 0), Vertex(10, 0, 0), Vertex(0, 10, 0), Vertex(0, 0, 1));
 
-	doubflo alpha = t1.getHalfAngleBetweenToAdjacentTriangle(t2);
-    ASSERT_THAT(alpha, FloatEq(0.0));
+	real alpha = t1.getHalfAngleBetweenToAdjacentTriangle(t2);
+    ASSERT_THAT(alpha, DoubleEq(0.0));
 }
 
 TEST(TriangleTest, checkSTLwith90degreeOutpointingNormal) 
@@ -131,8 +131,8 @@ TEST(TriangleTest, checkSTLwith90degreeOutpointingNormal)
 	Triangle t1 = Triangle(Vertex(40.0f, 20.0f, 20.0f), Vertex(40.0f, 20.0f, 0.0f), Vertex(60.0f, 20.0f, 20.0f));
 	Triangle t2 = Triangle(Vertex(60.0f, 20.0f, 20.0f), Vertex(40.0f, 40.0f, 20.0f), Vertex(40.0f, 20.0f, 20.0f));
 
-	doubflo alpha = t1.getHalfAngleBetweenToAdjacentTriangle(t2);
-    ASSERT_THAT(alpha, FloatEq(90.0 / 2.0));
+	real alpha = t1.getHalfAngleBetweenToAdjacentTriangle(t2);
+    ASSERT_THAT(alpha, DoubleEq(90.0 / 2.0));
 }
 
 TEST(TriangleTest, checkSTLwith90degreeInpointingNormal) 
@@ -140,8 +140,8 @@ TEST(TriangleTest, checkSTLwith90degreeInpointingNormal)
 	Triangle t1 = Triangle(Vertex(40.0f, 20.0f, 20.0f), Vertex(40.0f, 20.0f, 40.0f), Vertex(60.0f, 20.0f, 20.0f));
 	Triangle t2 = Triangle(Vertex(60.0f, 20.0f, 20.0f), Vertex(40.0f, 40.0f, 20.0f), Vertex(40.0f, 20.0f, 20.0f));
 
-	doubflo alpha = t1.getHalfAngleBetweenToAdjacentTriangle(t2);
-    ASSERT_THAT(alpha, FloatEq(270.0 / 2.0));
+	real alpha = t1.getHalfAngleBetweenToAdjacentTriangle(t2);
+    ASSERT_THAT(alpha, DoubleEq(270.0 / 2.0));
 }
 
 TEST(TriangleTest, checkSTLwith180degreeOutpointingNormal)
@@ -149,8 +149,8 @@ TEST(TriangleTest, checkSTLwith180degreeOutpointingNormal)
 	Triangle t1 = Triangle(Vertex(40.0f, 20.0f, 20.0f), Vertex(40.0f, 0.0f, 20.0f), Vertex(60.0f, 20.0f, 20.0f));
 	Triangle t2 = Triangle(Vertex(60.0f, 20.0f, 20.0f), Vertex(40.0f, 40.0f, 20.0f), Vertex(40.0f, 20.0f, 20.0f));
 
-	doubflo alpha = t1.getHalfAngleBetweenToAdjacentTriangle(t2);
-    ASSERT_THAT(alpha, FloatEq(180.0 / 2.0));
+	real alpha = t1.getHalfAngleBetweenToAdjacentTriangle(t2);
+    ASSERT_THAT(alpha, DoubleEq(180.0 / 2.0));
 }
 
 TEST(TriangleTest, checkSTLwithSmallDegreeOutpointingNormal) 
@@ -158,7 +158,7 @@ TEST(TriangleTest, checkSTLwithSmallDegreeOutpointingNormal)
 	Triangle t2 = Triangle(Vertex(40.0f, 40.0f, 18.0f), Vertex(60.0f, 20.0f, 20.0f), Vertex(40.0f, 20.0f, 20.0f));
 	Triangle t1 = Triangle(Vertex(60.0f, 20.0f, 20.0f), Vertex(40.0f, 40.0f, 20.0f), Vertex(40.0f, 20.0f, 20.0f));
 
-	doubflo alpha = t1.getHalfAngleBetweenToAdjacentTriangle(t2);
+	real alpha = t1.getHalfAngleBetweenToAdjacentTriangle(t2);
     ASSERT_TRUE(alpha < 30.0);
 }
 
@@ -167,7 +167,7 @@ TEST(TriangleTest, checkSTLwithBigDegreeInpointingNormal)
 	Triangle t1 = Triangle(Vertex(40.0f, 40.0f, 20.0f), Vertex(60.0f, 20.0f, 20.0f), Vertex(40.0f, 20.0f, 20.0f));
 	Triangle t2 = Triangle(Vertex(60.0f, 20.0f, 20.0f), Vertex(40.0f, 40.0f, 18.0f), Vertex(40.0f, 20.0f, 20.0f));
 
-    doubflo alpha = t1.getHalfAngleBetweenToAdjacentTriangle(t2);
+    real alpha = t1.getHalfAngleBetweenToAdjacentTriangle(t2);
     ASSERT_TRUE(alpha > 330.0 / 2);
 }
 
diff --git a/src/GridGenerator/geometries/Vertex/Serialization/VertexMemento.h b/src/GridGenerator/geometries/Vertex/Serialization/VertexMemento.h
index b437bab04..3ddd3ea79 100644
--- a/src/GridGenerator/geometries/Vertex/Serialization/VertexMemento.h
+++ b/src/GridGenerator/geometries/Vertex/Serialization/VertexMemento.h
@@ -23,7 +23,7 @@ class VF_PUBLIC VertexMemento
     }
 #endif
 public:
-    doubflo x, y, z;
+    real x, y, z;
 };
 
 
diff --git a/src/GridGenerator/geometries/Vertex/Vertex.cu b/src/GridGenerator/geometries/Vertex/Vertex.cu
index 5ec86244d..dbb61a11a 100644
--- a/src/GridGenerator/geometries/Vertex/Vertex.cu
+++ b/src/GridGenerator/geometries/Vertex/Vertex.cu
@@ -6,7 +6,7 @@
 #include "Serialization/VertexMemento.h"
 
 
-HOSTDEVICE Vertex::Vertex(doubflo x, doubflo y, doubflo z) : x(x), y(y), z(z){}
+HOSTDEVICE Vertex::Vertex(real x, real y, real z) : x(x), y(y), z(z){}
 HOSTDEVICE Vertex::Vertex() { x = 0.0f; y = 0.0f; z = 0.0f; }
 
 HOSTDEVICE Vertex::Vertex(const Vertex& v)
@@ -16,7 +16,7 @@ HOSTDEVICE Vertex::Vertex(const Vertex& v)
 	this->z = v.z;
 }
 
-HOSTDEVICE  doubflo Vertex::getEuclideanDistanceTo(const Vertex &w) const
+HOSTDEVICE  real Vertex::getEuclideanDistanceTo(const Vertex &w) const
 {
     return CudaMath::sqrt((x - w.x)*(x - w.x) + (y - w.y)*(y - w.y) + (z - w.z)*(z - w.z));
 }
@@ -31,47 +31,47 @@ HOSTDEVICE Vertex Vertex::operator+(const Vertex &v) const
     return Vertex(this->x + v.x, this->y + v.y, this->z + v.z);
 }
 
-HOSTDEVICE Vertex Vertex::operator*(const doubflo value) const
+HOSTDEVICE Vertex Vertex::operator*(const real value) const
 {
     return Vertex(value * this->x, value * this->y, value * this->z);
 }
 
 
 
-HOSTDEVICE doubflo Vertex::operator*(const Vertex &w) const
+HOSTDEVICE real Vertex::operator*(const Vertex &w) const
 {
     return x*w.x + y*w.y + z*w.z;
 }
 
 HOSTDEVICE struct Vertex Vertex::crossProduct(const Vertex &w) const
 {
-    doubflo a = y*w.z - z*w.y;
-    doubflo b = z*w.x - x*w.z;
-    doubflo c = x*w.y - y*w.x;
+    real a = y*w.z - z*w.y;
+    real b = z*w.x - x*w.z;
+    real c = x*w.y - y*w.x;
     return Vertex(a, b, c);
 }
 
-HOSTDEVICE doubflo Vertex::length() const 
+HOSTDEVICE real Vertex::length() const 
 {
     return CudaMath::sqrt(x * x + y * y + z * z);
 }
 
 HOSTDEVICE void Vertex::normalize()
 {
-    doubflo len = length();
+    real len = length();
 
     if (len > EPSILON)
     {
-        doubflo invLen = 1.0f / len;
+        real invLen = 1.0f / len;
         x *= invLen;
         y *= invLen;
         z *= invLen;
     }
 }
 
-HOSTDEVICE doubflo Vertex::getMagnitude() const
+HOSTDEVICE real Vertex::getMagnitude() const
 {
-    doubflo temp = x*x + y*y + z*z;
+    real temp = x*x + y*y + z*z;
     return CudaMath::sqrt(temp);
 }
 
@@ -80,15 +80,15 @@ HOSTDEVICE int Vertex::isEqual(const Vertex &w) const
     return CudaMath::equal(x, w.x) && CudaMath::equal(y, w.y) && CudaMath::equal(z, w.z);
 }
 
-HOSTDEVICE doubflo Vertex::getInnerAngle(const Vertex &w) const
+HOSTDEVICE real Vertex::getInnerAngle(const Vertex &w) const
 {
     if (isEqual(w))
         return 0.0;
     if (this->getMagnitude() == 0 || w.getMagnitude() == 0)
         return 0.0;
 
-    doubflo mag = this->getMagnitude() * w.getMagnitude();
-    doubflo skal = *this * w;
+    real mag = this->getMagnitude() * w.getMagnitude();
+    real skal = *this * w;
     if (mag - fabs(skal) < 0.0001)
         return 0.0f;
     return  CudaMath::acos(skal / mag) * 180.0f / CudaMath::acos(-1.0f); // acos(-1.0f) = PI 
@@ -134,22 +134,22 @@ HOST void Vertex::setState(const VertexMemento &memento)
     this->z = memento.z;
 }
 
-HOST bool Vertex::isXbetween(doubflo min, doubflo max) const
+HOST bool Vertex::isXbetween(real min, real max) const
 {
     return x >= min && x <= max;
 }
 
-HOST bool Vertex::isYbetween(doubflo min, doubflo max) const
+HOST bool Vertex::isYbetween(real min, real max) const
 {
     return y >= min && y <= max;
 }
 
-HOST bool Vertex::isZbetween(doubflo min, doubflo max) const
+HOST bool Vertex::isZbetween(real min, real max) const
 {
     return z >= min && z <= max;
 }
 
-HOSTDEVICE void Vertex::setMinMax(doubflo & minX, doubflo & maxX, doubflo & minY, doubflo & maxY, doubflo & minZ, doubflo & maxZ, const Vertex & v1, const Vertex & v2, const Vertex & v3)
+HOSTDEVICE void Vertex::setMinMax(real & minX, real & maxX, real & minY, real & maxY, real & minZ, real & maxZ, const Vertex & v1, const Vertex & v2, const Vertex & v3)
 {
     calculateMinMax(v1.x, v2.x, v3.x, minX, maxX);
     calculateMinMax(v1.y, v2.y, v3.y, minY, maxY);
@@ -157,7 +157,7 @@ HOSTDEVICE void Vertex::setMinMax(doubflo & minX, doubflo & maxX, doubflo & minY
 }
 
 
-HOSTDEVICE void Vertex::calculateMinMax(const doubflo &value1, const doubflo &value2, const doubflo &value3, doubflo &min, doubflo &max)
+HOSTDEVICE void Vertex::calculateMinMax(const real &value1, const real &value2, const real &value3, real &min, real &max)
 {
     min = value1;
     max = value2;
diff --git a/src/GridGenerator/geometries/Vertex/Vertex.cuh b/src/GridGenerator/geometries/Vertex/Vertex.cuh
index a6b230d93..282749e20 100644
--- a/src/GridGenerator/geometries/Vertex/Vertex.cuh
+++ b/src/GridGenerator/geometries/Vertex/Vertex.cuh
@@ -14,36 +14,36 @@ class VertexMemento;
 struct VF_PUBLIC Vertex 
 {
 public:
-    doubflo x, y, z;
+    real x, y, z;
 
-	HOSTDEVICE Vertex(doubflo x, doubflo y, doubflo z);
+	HOSTDEVICE Vertex(real x, real y, real z);
 	HOSTDEVICE Vertex();
 	HOSTDEVICE Vertex(const Vertex& v);
 	HOSTDEVICE ~Vertex() {}
 
-	HOSTDEVICE doubflo getEuclideanDistanceTo(const Vertex &w) const;
+	HOSTDEVICE real getEuclideanDistanceTo(const Vertex &w) const;
 	HOSTDEVICE Vertex operator-(const Vertex &v) const;
 	HOSTDEVICE Vertex operator+(const Vertex &v) const;
-	HOSTDEVICE Vertex operator*(const doubflo value) const;
-	HOSTDEVICE doubflo operator*(const Vertex &w) const;
+	HOSTDEVICE Vertex operator*(const real value) const;
+	HOSTDEVICE real operator*(const Vertex &w) const;
 	HOSTDEVICE struct Vertex crossProduct(const Vertex &w) const;
-	HOSTDEVICE doubflo length() const;
+	HOSTDEVICE real length() const;
 	HOSTDEVICE void normalize();
-	HOSTDEVICE doubflo getMagnitude() const;
+	HOSTDEVICE real getMagnitude() const;
 	HOSTDEVICE int isEqual(const Vertex &w) const;
-	HOSTDEVICE doubflo getInnerAngle(const Vertex &w) const;
+	HOSTDEVICE real getInnerAngle(const Vertex &w) const;
 
 	HOSTDEVICE bool operator==(const Vertex &v) const;
 
     HOST VertexMemento getState() const;
     HOST void setState(const VertexMemento &memento);
 
-    HOST bool isXbetween(doubflo min, doubflo max) const;
-    HOST bool isYbetween(doubflo min, doubflo max) const;
-    HOST bool isZbetween(doubflo min, doubflo max) const;
+    HOST bool isXbetween(real min, real max) const;
+    HOST bool isYbetween(real min, real max) const;
+    HOST bool isZbetween(real min, real max) const;
 
-    HOSTDEVICE static void setMinMax(doubflo &minX, doubflo &maxX, doubflo &minY, doubflo &maxY, doubflo &minZ, doubflo &maxZ, const Vertex &v1, const Vertex &v2, const Vertex &v3); 
-    HOSTDEVICE static void calculateMinMax(const doubflo &value1, const doubflo &value2, const doubflo &value3, doubflo &min, doubflo &max);
+    HOSTDEVICE static void setMinMax(real &minX, real &maxX, real &minY, real &maxY, real &minZ, real &maxZ, const Vertex &v1, const Vertex &v2, const Vertex &v3); 
+    HOSTDEVICE static void calculateMinMax(const real &value1, const real &value2, const real &value3, real &min, real &max);
 
     HOSTDEVICE void print() const;
     HOST void print(std::ostream &ost) const;
diff --git a/src/GridGenerator/geometries/Vertex/VertexTest.cpp b/src/GridGenerator/geometries/Vertex/VertexTest.cpp
index 17ff60501..2165be66d 100644
--- a/src/GridGenerator/geometries/Vertex/VertexTest.cpp
+++ b/src/GridGenerator/geometries/Vertex/VertexTest.cpp
@@ -44,13 +44,13 @@ TEST_F(VertexTest, overloadPlusOperator)
 
 TEST_F(VertexTest, overloadTimesOperatorWithSkalarProduct)
 {
-    doubflo skalar = vec1.x * vec2.x + vec1.y * vec2.y + vec1.z * vec2.z;
+    real skalar = vec1.x * vec2.x + vec1.y * vec2.y + vec1.z * vec2.z;
     ASSERT_THAT((double)(vec1 * vec2), DoubleEq(skalar));
 }
 
 TEST_F(VertexTest, overloadTimesOperatorWithSkalarMultiplication)
 {
-    doubflo skalar = 1.0f / 3.0f;
+    real skalar = 1.0f / 3.0f;
     Vertex vec3;
     vec3.x = skalar * vec1.x;
     vec3.y = skalar * vec1.y;
diff --git a/src/GridGenerator/global.h b/src/GridGenerator/global.h
index b5111fc36..cd49c7f7e 100644
--- a/src/GridGenerator/global.h
+++ b/src/GridGenerator/global.h
@@ -1,7 +1,7 @@
 #ifndef global_h
 #define global_h
 
-typedef float doubflo;
+#include "core/DataTypes.h"
 
 #define DEBUG 1
 #define GLOB_NODE 5
diff --git a/src/GridGenerator/grid/Grid.cu b/src/GridGenerator/grid/Grid.cu
index 9c014e1da..ad0c7a69a 100644
--- a/src/GridGenerator/grid/Grid.cu
+++ b/src/GridGenerator/grid/Grid.cu
@@ -66,7 +66,7 @@ HOSTDEVICE char Grid::getFieldEntry(const Vertex &v) const
 
 HOSTDEVICE int Grid::transCoordToIndex(const int &x, const int &y, const int &z) const
 {
-	return transCoordToIndex(Vertex((doubflo)x, (doubflo)y, (doubflo)z));
+	return transCoordToIndex(Vertex((real)x, (real)y, (real)z));
 }
 
 HOSTDEVICE int Grid::transCoordToIndex(const Vertex &v) const
@@ -132,7 +132,7 @@ HOSTDEVICE void Grid::meshTriangle(const Triangle &triangle)
 	for (x = box.minX; x <= box.maxX; x++) {
 		for (y = box.minY; y <= box.maxY; y++) {
 			for (z = box.minZ; z <= box.maxZ; z++) {
-				point = Vertex((doubflo)x, (doubflo)y, (doubflo)z);
+				point = Vertex((real)x, (real)y, (real)z);
 				if (isOutOfRange(point))
 					continue;
                 int value = triangle.isUnderFace(point);
@@ -149,13 +149,13 @@ HOSTDEVICE void Grid::calculateQs(const Vertex &point, const Triangle &triangle)
 {
 	Vertex pointOnTriangle, dir;
 	//VertexInteger solid_node;
-	doubflo qVal;
+	real qVal;
 	int err;
 	for (int i = d.dir_start; i <= d.dir_end; i++) {
 	#if defined(__CUDA_ARCH__)
 		dir = Vertex(DIRECTIONS[i][0], DIRECTIONS[i][1], DIRECTIONS[i][2]);
 	#else
-		dir = Vertex((doubflo)d.dirs[i * DIMENSION + 0], (doubflo)d.dirs[i * DIMENSION + 1], (doubflo)d.dirs[i * DIMENSION + 2]);
+		dir = Vertex((real)d.dirs[i * DIMENSION + 0], (real)d.dirs[i * DIMENSION + 1], (real)d.dirs[i * DIMENSION + 2]);
 	#endif
 
 		err = triangle.getTriangleIntersection(point, dir, pointOnTriangle, qVal);
diff --git a/src/GridGenerator/grid/GridBuilder/GridBuilder.h b/src/GridGenerator/grid/GridBuilder/GridBuilder.h
index e4530b86e..e3b791861 100644
--- a/src/GridGenerator/grid/GridBuilder/GridBuilder.h
+++ b/src/GridGenerator/grid/GridBuilder/GridBuilder.h
@@ -34,7 +34,7 @@ class GridBuilder
 public:
     virtual VF_PUBLIC ~GridBuilder() {};
 
-    virtual void addGrid(doubflo length, doubflo width, doubflo high, doubflo delta, std::string distribution, std::shared_ptr<Transformator> trans) = 0;
+    virtual void addGrid(real length, real width, real high, real delta, std::string distribution, std::shared_ptr<Transformator> trans) = 0;
     virtual void meshGeometry(std::string input, int level) = 0;
     virtual void deleteSolidNodes() = 0;
 
@@ -49,19 +49,19 @@ public:
 
     virtual void createBoundaryConditions() = 0;
 
-    virtual std::vector<std::vector<std::vector<doubflo> > > getQsValues() const = 0;
+    virtual std::vector<std::vector<std::vector<real> > > getQsValues() const = 0;
 
     virtual int getBoundaryConditionSize(int rb) const = 0;
     virtual std::vector<std::string> getTypeOfBoundaryConditions() const = 0;
 
     virtual unsigned int getNumberOfNodes(unsigned int level) const = 0;
-    virtual void getNodeValues(doubflo *xCoords, doubflo *yCoords, doubflo *zCoords, unsigned int *nx, unsigned int *ny, unsigned int *nz, unsigned int *geo, const int level) const = 0;
+    virtual void getNodeValues(real *xCoords, real *yCoords, real *zCoords, unsigned int *nx, unsigned int *ny, unsigned int *nz, unsigned int *geo, const int level) const = 0;
     virtual void getDimensions(int &nx, int &ny, int &nz, const int level) const = 0;
 
-    virtual void setQs(doubflo** q27, int* k, int channelSide, unsigned int level) const = 0;
-    virtual void setOutflowValues(doubflo* RhoBC, int* kN, int channelSide, int level) const = 0;
-    virtual void setVelocityValues(doubflo* vx, doubflo* vy, doubflo* vz, int channelSide, int level) const = 0;
-    virtual void setPressValues(doubflo* RhoBC, int* kN, int channelSide, int level) const = 0;
+    virtual void setQs(real** q27, int* k, int channelSide, unsigned int level) const = 0;
+    virtual void setOutflowValues(real* RhoBC, int* kN, int channelSide, int level) const = 0;
+    virtual void setVelocityValues(real* vx, real* vy, real* vz, int channelSide, int level) const = 0;
+    virtual void setPressValues(real* RhoBC, int* kN, int channelSide, int level) const = 0;
 
 };
 
diff --git a/src/GridGenerator/grid/GridBuilder/GridBuilderImp.cpp b/src/GridGenerator/grid/GridBuilder/GridBuilderImp.cpp
index 69f559e2e..7d055b590 100644
--- a/src/GridGenerator/grid/GridBuilder/GridBuilderImp.cpp
+++ b/src/GridGenerator/grid/GridBuilder/GridBuilderImp.cpp
@@ -110,7 +110,7 @@ void GridBuilderImp::meshGeometry(std::string input, int level)
                 geometry->setState(memento);
                 clock_t end = clock();
 
-                doubflo time = doubflo(end - begin) / CLOCKS_PER_SEC;
+                real time = real(end - begin) / CLOCKS_PER_SEC;
                 *logging::out << logging::Logger::INTERMEDIATE << "time reading memento: " << SSTR(time) << "s\n";
             }
             
@@ -145,7 +145,7 @@ unsigned int GridBuilderImp::getNumberOfNodes(unsigned int level) const
     return (unsigned int) this->gridKernels[level][0]->grid.reducedSize;
 }
 
-std::vector<std::vector<std::vector<doubflo> > > GridBuilderImp::getQsValues() const
+std::vector<std::vector<std::vector<real> > > GridBuilderImp::getQsValues() const
 {
     return this->Qs;
 }
@@ -187,7 +187,7 @@ void GridBuilderImp::writeSimulationFiles(std::string output, BoundingBox<int> &
     //builder.buildUnstructuredGrid(this->gridKernels[level]->grid, nodesDelete);
 
     //std::vector<Node> coords = builder.getCoordsVec();
-    //std::vector<std::vector<std::vector<doubflo> > > qs = builder.getQsValues();
+    //std::vector<std::vector<std::vector<real> > > qs = builder.getQsValues();
     //SimulationFileWriter::writeSimulationFiles(output, coords, qs, writeFilesBinary, this->gridKernels[level]->grid, this->transformators[level]);
 }
 
@@ -202,7 +202,7 @@ void GridBuilderImp::checkLevel(int level)
 }
 
 
-void GridBuilderImp::addGrid(doubflo length, doubflo width, doubflo high, doubflo delta, std::string distribution, std::shared_ptr<Transformator> trans)
+void GridBuilderImp::addGrid(real length, real width, real high, real delta, std::string distribution, std::shared_ptr<Transformator> trans)
 {
     this->transformators.push_back(trans);
 
@@ -221,7 +221,7 @@ void GridBuilderImp::addGrid(doubflo length, doubflo width, doubflo high, doubfl
     this->createGridKernels(distribution);
 }
 
-void GridBuilderImp::setNumberOfNodes(doubflo length, doubflo width, doubflo high, doubflo delta)
+void GridBuilderImp::setNumberOfNodes(real length, real width, real high, real delta)
 {
     int nx = (int)(length / delta);
     int ny = (int)(width / delta);
@@ -316,7 +316,7 @@ void GridBuilderImp::writeBoxes(std::string name)
     //for (int i = 0; i < rankTasks.size(); i += 2) {
     //    int level = rankTasks[i];
     //    int index = rankTasks[i + 1];
-    //    BoundingBox<doubflo> box = boxes[level][index];
+    //    BoundingBox<real> box = boxes[level][index];
     //    transformators[level]->transformGridToWorld(box);
     //    writer.addBoundingBox(box, rank);
     //}
@@ -331,7 +331,7 @@ void GridBuilderImp::getDimensions(int &nx, int &ny, int &nz, const int level) c
     nz = this->gridKernels[level][0]->grid.nz;
 }
 
-void GridBuilderImp::getNodeValues(doubflo *xCoords, doubflo *yCoords, doubflo *zCoords, unsigned int *neighborX, unsigned int *neighborY, unsigned int *neighborZ, unsigned int *geo, const int level) const
+void GridBuilderImp::getNodeValues(real *xCoords, real *yCoords, real *zCoords, unsigned int *neighborX, unsigned int *neighborY, unsigned int *neighborZ, unsigned int *geo, const int level) const
 {
     xCoords[0] = 0;
     yCoords[0] = 0;
@@ -348,9 +348,9 @@ void GridBuilderImp::getNodeValues(doubflo *xCoords, doubflo *yCoords, doubflo *
         unsigned int x, y, z;
         grid.transIndexToCoords(grid.matrixIndex[i], x, y, z);
 
-        xCoords[i + 1] = (doubflo)x;
-        yCoords[i + 1] = (doubflo)y;
-        zCoords[i + 1] = (doubflo)z;
+        xCoords[i + 1] = (real)x;
+        yCoords[i + 1] = (real)y;
+        zCoords[i + 1] = (real)z;
         neighborX[i + 1] = (unsigned int)(grid.neighborIndexX[grid.matrixIndex[i]] + 1);
         neighborY[i + 1] = (unsigned int)(grid.neighborIndexY[grid.matrixIndex[i]] + 1);
         neighborZ[i + 1] = (unsigned int)(grid.neighborIndexZ[grid.matrixIndex[i]] + 1);
@@ -358,7 +358,7 @@ void GridBuilderImp::getNodeValues(doubflo *xCoords, doubflo *yCoords, doubflo *
     }
 }
 
-void GridBuilderImp::setQs(doubflo** q27, int* k, int channelSide, unsigned int level) const
+void GridBuilderImp::setQs(real** q27, int* k, int channelSide, unsigned int level) const
 {
     for (int index = 0; index < Qs[channelSide].size(); index++) {
         k[index] = (int)Qs[channelSide][index][0];
@@ -369,7 +369,7 @@ void GridBuilderImp::setQs(doubflo** q27, int* k, int channelSide, unsigned int
     }
 }
 
-void GridBuilderImp::setOutflowValues(doubflo* RhoBC, int* kN, int channelSide, int level) const
+void GridBuilderImp::setOutflowValues(real* RhoBC, int* kN, int channelSide, int level) const
 {
     for (int index = 0; index < Qs[channelSide].size(); index++) {
         RhoBC[index] = 0.0;
@@ -377,7 +377,7 @@ void GridBuilderImp::setOutflowValues(doubflo* RhoBC, int* kN, int channelSide,
     }
 }
 
-void GridBuilderImp::setVelocityValues(doubflo* vx, doubflo* vy, doubflo* vz, int channelSide, int level) const
+void GridBuilderImp::setVelocityValues(real* vx, real* vy, real* vz, int channelSide, int level) const
 {
     for (int index = 0; index < Qs[channelSide].size(); index++) {
         vx[index] = 0.0;
@@ -386,7 +386,7 @@ void GridBuilderImp::setVelocityValues(doubflo* vx, doubflo* vy, doubflo* vz, in
     }
 }
 
-void GridBuilderImp::setPressValues(doubflo* RhoBC, int* kN, int channelSide, int level) const
+void GridBuilderImp::setPressValues(real* RhoBC, int* kN, int channelSide, int level) const
 {
     for (int index = 0; index < Qs[channelSide].size(); index++) {
         RhoBC[index] = 0.0;
@@ -421,13 +421,13 @@ void GridBuilderImp::createBCVectors()
 void GridBuilderImp::addShortQsToVector(int index)
 {
     uint32_t qKey = 0;
-    std::vector<doubflo> qNode;
+    std::vector<real> qNode;
 
     Grid grid = this->gridKernels[0][0]->grid;
     for (int i = grid.d.dir_end; i >= 0; i--)
     {
         int qIndex = i * grid.size + grid.matrixIndex[index];
-        doubflo q = grid.d.f[qIndex];
+        real q = grid.d.f[qIndex];
         if (q > 0) {
             //printf("Q%d (old:%d, new:%d), : %2.8f \n", i, coordsVec[index].matrixIndex, index, grid.d.f[i * grid.size + coordsVec[index].matrixIndex]);
             qKey += (uint32_t)pow(2, 26 - i);
@@ -435,9 +435,9 @@ void GridBuilderImp::addShortQsToVector(int index)
         }
     }
     if (qKey > 0) {
-        doubflo transportKey = *((doubflo*)&qKey);
+        real transportKey = *((real*)&qKey);
         qNode.push_back(transportKey);
-        qNode.push_back((doubflo)index);
+        qNode.push_back((real)index);
         Qs[GEOMQS].push_back(qNode);
     }
     qNode.clear();
@@ -445,14 +445,14 @@ void GridBuilderImp::addShortQsToVector(int index)
 
 void GridBuilderImp::addQsToVector(int index)
 {
-    std::vector<doubflo> qNode;
-    qNode.push_back((doubflo)index);
+    std::vector<real> qNode;
+    qNode.push_back((real)index);
 
     Grid grid = this->gridKernels[0][0]->grid;
     for (int i = grid.d.dir_end; i >= 0; i--)
     {
         int qIndex = i * grid.size + grid.matrixIndex[index];
-        doubflo q = grid.d.f[qIndex];
+        real q = grid.d.f[qIndex];
         if (q > 0)
             qNode.push_back(q);
         else
@@ -465,7 +465,7 @@ void GridBuilderImp::addQsToVector(int index)
 void GridBuilderImp::fillRBForNode(int x, int y, int z, int index, int direction, int directionSign, int rb)
 {
     uint32_t qKey = 0;
-    std::vector<doubflo> qNode;
+    std::vector<real> qNode;
 
     Grid grid = this->gridKernels[0][0]->grid;
     for (int i = grid.d.dir_end; i >= 0; i--)
@@ -477,9 +477,9 @@ void GridBuilderImp::fillRBForNode(int x, int y, int z, int index, int direction
         qNode.push_back(0.5f);
     }
     if (qKey > 0) {
-        doubflo transportKey = *((doubflo*)&qKey);
+        real transportKey = *((real*)&qKey);
         qNode.push_back(transportKey);
-        qNode.push_back((doubflo)index);
+        qNode.push_back((real)index);
         Qs[rb].push_back(qNode);
     }
     qNode.clear();
@@ -501,11 +501,11 @@ void GridBuilderImp::writeArrows(std::string fileName, std::shared_ptr<ArrowTran
 void GridBuilderImp::writeArrow(const int i, const int qi, const Vertex& startNode, std::shared_ptr<const ArrowTransformator> trans/*, std::shared_ptr<PolyDataWriterWrapper> writer*/) const
 {
     Grid grid = this->gridKernels[0][0]->grid;
-    doubflo qval = Qs[GEOMQS][i][qi + 1];
+    real qval = Qs[GEOMQS][i][qi + 1];
     if (qval > 0.0f)
     {
         int qReverse = grid.d.dir_end - qi;
-        Vertex dir((doubflo)grid.d.dirs[qReverse * DIMENSION + 0], (doubflo)grid.d.dirs[qReverse* DIMENSION + 1], (doubflo)grid.d.dirs[qReverse * DIMENSION + 2]);
+        Vertex dir((real)grid.d.dirs[qReverse * DIMENSION + 0], (real)grid.d.dirs[qReverse* DIMENSION + 1], (real)grid.d.dirs[qReverse * DIMENSION + 2]);
         Vertex nodeOnGeometry(startNode + (dir * qval));
         std::shared_ptr<Arrow> arrow = ArrowImp::make(startNode, nodeOnGeometry);
         trans->transformGridToWorld(arrow);
@@ -517,7 +517,7 @@ Vertex GridBuilderImp::getVertex(int matrixIndex) const
 {
     unsigned int x, y, z;
     this->gridKernels[0][0]->grid.transIndexToCoords(matrixIndex, x, y, z);
-    return Vertex((doubflo)x, (doubflo)y, (doubflo)z);
+    return Vertex((real)x, (real)y, (real)z);
 }
 
 int GridBuilderImp::getMatrixIndex(int i) const
diff --git a/src/GridGenerator/grid/GridBuilder/GridBuilderImp.h b/src/GridGenerator/grid/GridBuilder/GridBuilderImp.h
index b7e59b848..1a41f211e 100644
--- a/src/GridGenerator/grid/GridBuilder/GridBuilderImp.h
+++ b/src/GridGenerator/grid/GridBuilder/GridBuilderImp.h
@@ -27,7 +27,7 @@ public:
 
     VF_PUBLIC virtual ~GridBuilderImp();
 
-    VF_PUBLIC virtual void addGrid(doubflo length, doubflo width, doubflo high, doubflo delta, std::string distribution, std::shared_ptr<Transformator> trans);
+    VF_PUBLIC virtual void addGrid(real length, real width, real high, real delta, std::string distribution, std::shared_ptr<Transformator> trans);
 
 	VF_PUBLIC virtual void meshGeometry(std::string input, int level);
     VF_PUBLIC virtual void deleteSolidNodes();
@@ -42,18 +42,18 @@ public:
     VF_PUBLIC virtual void createBoundaryConditions();
 
     VF_PUBLIC virtual unsigned int getNumberOfNodes(unsigned int level) const;;
-    VF_PUBLIC virtual std::vector<std::vector<std::vector<doubflo> > > getQsValues() const;
+    VF_PUBLIC virtual std::vector<std::vector<std::vector<real> > > getQsValues() const;
 
     VF_PUBLIC virtual int getBoundaryConditionSize(int rb) const;
     VF_PUBLIC virtual std::vector<std::string> getTypeOfBoundaryConditions() const;
 
-    VF_PUBLIC virtual void getNodeValues(doubflo *xCoords, doubflo *yCoords, doubflo *zCoords, unsigned int *nx, unsigned int *ny, unsigned int *nz, unsigned int *geo, const int level) const;
+    VF_PUBLIC virtual void getNodeValues(real *xCoords, real *yCoords, real *zCoords, unsigned int *nx, unsigned int *ny, unsigned int *nz, unsigned int *geo, const int level) const;
     VF_PUBLIC virtual void getDimensions(int &nx, int &ny, int &nz, const int level) const;
 
-    VF_PUBLIC virtual void setQs(doubflo** q27, int* k, int channelSide, unsigned int level) const;
-    VF_PUBLIC virtual void setOutflowValues(doubflo* RhoBC, int* kN, int channelSide, int level) const;
-    VF_PUBLIC virtual void setVelocityValues(doubflo* vx, doubflo* vy, doubflo* vz, int channelSide, int level) const;
-    VF_PUBLIC virtual void setPressValues(doubflo* RhoBC, int* kN, int channelSide, int level) const;
+    VF_PUBLIC virtual void setQs(real** q27, int* k, int channelSide, unsigned int level) const;
+    VF_PUBLIC virtual void setOutflowValues(real* RhoBC, int* kN, int channelSide, int level) const;
+    VF_PUBLIC virtual void setVelocityValues(real* vx, real* vy, real* vz, int channelSide, int level) const;
+    VF_PUBLIC virtual void setPressValues(real* RhoBC, int* kN, int channelSide, int level) const;
 
     VF_PUBLIC void writeArrows(std::string fileName, std::shared_ptr<ArrowTransformator> trans) const;
 
@@ -67,7 +67,7 @@ protected:
     std::vector<std::vector<int> > gridDimensions;
 
 
-    std::vector<std::vector<std::vector<doubflo> > > Qs;
+    std::vector<std::vector<std::vector<real> > > Qs;
     std::vector<std::string> channelBoundaryConditions;
 
     void checkLevel(int level);
@@ -75,7 +75,7 @@ protected:
 protected:
     virtual void createGridKernels(std::string distribution) = 0;
 
-    void setNumberOfNodes(doubflo length, doubflo width, doubflo high, doubflo delta);
+    void setNumberOfNodes(real length, real width, real high, real delta);
     void printMasterInformation(int nx, int ny, int nz);
     void setCudaDevice(int rank);
     void rebuildBoxes();
diff --git a/src/GridGenerator/grid/GridTest.cpp b/src/GridGenerator/grid/GridTest.cpp
index 84153747a..06d749f0f 100644
--- a/src/GridGenerator/grid/GridTest.cpp
+++ b/src/GridGenerator/grid/GridTest.cpp
@@ -7,7 +7,7 @@
 #include <GridGenerator/geometries/BoundingBox/BoundingBox.cuh>
 
 
-std::vector<Vertex> getPointsInBoundingBox(Triangle t, doubflo delta)
+std::vector<Vertex> getPointsInBoundingBox(Triangle t, real delta)
 {
 	int x, y, z;
 	BoundingBox<int> box = BoundingBox<int>::makeNodeBox(t);
@@ -17,7 +17,7 @@ std::vector<Vertex> getPointsInBoundingBox(Triangle t, doubflo delta)
 	for (x = box.minX; x <= box.maxX; x++) {
 		for (y = box.minY; y <= box.maxY; y++) {
 			for (z = box.minZ; z <= box.maxZ; z++) {
-				points.push_back(Vertex((doubflo)x, (doubflo)y, (doubflo)z));
+				points.push_back(Vertex((real)x, (real)y, (real)z));
 			}
 		}
 	}
diff --git a/src/GridGenerator/grid/GridWrapper/GridWrapperCPU/GridWrapperCPU.cpp b/src/GridGenerator/grid/GridWrapper/GridWrapperCPU/GridWrapperCPU.cpp
index dd25e2914..b9de5d408 100644
--- a/src/GridGenerator/grid/GridWrapper/GridWrapperCPU/GridWrapperCPU.cpp
+++ b/src/GridGenerator/grid/GridWrapper/GridWrapperCPU/GridWrapperCPU.cpp
@@ -44,14 +44,14 @@ GridWrapperCPU::~GridWrapperCPU()
     delete[] this->grid.d.f;
 }
 
-doubflo GridWrapperCPU::initalUniformGrid3d()
+real GridWrapperCPU::initalUniformGrid3d()
 {
 	time_t begin = clock();
 
 	this->initialGridNodes();
 
 	time_t end = clock();
-	return (doubflo)(doubflo(end - begin) / CLOCKS_PER_SEC);
+	return (real)(real(end - begin) / CLOCKS_PER_SEC);
 }
 
 void GridWrapperCPU::initialGridNodes()
@@ -70,7 +70,7 @@ void GridWrapperCPU::meshGrid(Geometry &geom)
 	clock_t begin = clock();
     runMeshing(geom);
 	clock_t end = clock();
-    float time = (doubflo)(doubflo(end - begin) / CLOCKS_PER_SEC);
+    float time = (real)(real(end - begin) / CLOCKS_PER_SEC);
 
 	*logging::out << logging::Logger::INTERMEDIATE << "time grid generation: " + SSTR(time) + "s\n";
 }
@@ -84,18 +84,18 @@ void GridWrapperCPU::deleteSolidNodes()
     findNeighborIndices();
 
     clock_t end = clock();
-    float time = (doubflo)(doubflo(end - begin) / CLOCKS_PER_SEC);
+    float time = (real)(real(end - begin) / CLOCKS_PER_SEC);
     *logging::out << logging::Logger::INTERMEDIATE << "time delete solid nodes: " + SSTR(time / 1000) + "sec\n";
 }
 
 void GridWrapperCPU::allocDistribution()
 {
 	unsigned long distributionSize = grid.size * (grid.d.dir_end + 1);
-	doubflo sizeInMB = distributionSize * sizeof(doubflo) / (1024.f*1024.f);
+	real sizeInMB = distributionSize * sizeof(real) / (1024.f*1024.f);
 
 	*logging::out << logging::Logger::INTERMEDIATE << "Allocating " + SSTR(sizeInMB) + " [MB] host memory for distributions.\n";
 
-	this->grid.d.f = new doubflo[distributionSize](); // automatic initialized with zeros
+	this->grid.d.f = new real[distributionSize](); // automatic initialized with zeros
 }
 
 void GridWrapperCPU::allocField()
diff --git a/src/GridGenerator/grid/GridWrapper/GridWrapperCPU/GridWrapperCPU.h b/src/GridGenerator/grid/GridWrapper/GridWrapperCPU/GridWrapperCPU.h
index 14eaee41f..911cc049a 100644
--- a/src/GridGenerator/grid/GridWrapper/GridWrapperCPU/GridWrapperCPU.h
+++ b/src/GridGenerator/grid/GridWrapper/GridWrapperCPU/GridWrapperCPU.h
@@ -27,7 +27,7 @@ public:
     virtual void copyDataFromGPU() {};
 
 private:
-	doubflo initalUniformGrid3d();
+	real initalUniformGrid3d();
 	void initialGridNodes();
 	virtual void allocDistribution();
 	virtual void allocField();
diff --git a/src/GridGenerator/grid/GridWrapper/GridWrapperCPU/GridWrapperCPUTest.cpp b/src/GridGenerator/grid/GridWrapper/GridWrapperCPU/GridWrapperCPUTest.cpp
index c4dfcb04d..e772e45f3 100644
--- a/src/GridGenerator/grid/GridWrapper/GridWrapperCPU/GridWrapperCPUTest.cpp
+++ b/src/GridGenerator/grid/GridWrapper/GridWrapperCPU/GridWrapperCPUTest.cpp
@@ -29,9 +29,9 @@
 //        for (z = min; z <= max; z++)
 //        {
 //            x = min;
-//            EXPECT_THAT(grid.getFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z)), Eq(expectedNode));
+//            EXPECT_THAT(grid.getFieldEntry(Vertex((real)x, (real)y, (real)z)), Eq(expectedNode));
 //            x = max;
-//            EXPECT_THAT(grid.getFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z)), Eq(expectedNode));
+//            EXPECT_THAT(grid.getFieldEntry(Vertex((real)x, (real)y, (real)z)), Eq(expectedNode));
 //        }
 //    }
 //
@@ -41,9 +41,9 @@
 //        for (z = min; z <= max; z++)
 //        {
 //            y = min;
-//            EXPECT_THAT(grid.getFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z)), Eq(expectedNode));
+//            EXPECT_THAT(grid.getFieldEntry(Vertex((real)x, (real)y, (real)z)), Eq(expectedNode));
 //            y = max;
-//            EXPECT_THAT(grid.getFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z)), Eq(expectedNode));
+//            EXPECT_THAT(grid.getFieldEntry(Vertex((real)x, (real)y, (real)z)), Eq(expectedNode));
 //        }
 //    }
 //
@@ -53,9 +53,9 @@
 //        for (y = min; y <= max; y++)
 //        {
 //            z = min;
-//            EXPECT_THAT(grid.getFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z)), Eq(expectedNode));
+//            EXPECT_THAT(grid.getFieldEntry(Vertex((real)x, (real)y, (real)z)), Eq(expectedNode));
 //            z = max;
-//            EXPECT_THAT(grid.getFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z)), Eq(expectedNode));
+//            EXPECT_THAT(grid.getFieldEntry(Vertex((real)x, (real)y, (real)z)), Eq(expectedNode));
 //        }
 //    }
 //}
@@ -69,9 +69,9 @@
 //        for (z = min; z <= max; z++)
 //        {
 //            x = min;
-//            grid.setFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z), newNode);
+//            grid.setFieldEntry(Vertex((real)x, (real)y, (real)z), newNode);
 //            x = max;
-//            grid.setFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z), newNode);
+//            grid.setFieldEntry(Vertex((real)x, (real)y, (real)z), newNode);
 //        }
 //    }
 //
@@ -81,9 +81,9 @@
 //        for (z = min; z <= max; z++)
 //        {
 //            y = min;
-//            grid.setFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z), newNode);
+//            grid.setFieldEntry(Vertex((real)x, (real)y, (real)z), newNode);
 //            y = max;
-//            grid.setFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z), newNode);
+//            grid.setFieldEntry(Vertex((real)x, (real)y, (real)z), newNode);
 //        }
 //    }
 //
@@ -93,9 +93,9 @@
 //        for (y = min; y <= max; y++)
 //        {
 //            z = min;
-//            grid.setFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z), newNode);
+//            grid.setFieldEntry(Vertex((real)x, (real)y, (real)z), newNode);
 //            z = max;
-//            grid.setFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z), newNode);
+//            grid.setFieldEntry(Vertex((real)x, (real)y, (real)z), newNode);
 //        }
 //    }
 //}
@@ -120,10 +120,10 @@
 //    std::vector<Triangle> triangles;
 //
 //    void SetUp() {
-//        doubflo length = 30.0f;
-//        doubflo width = 30.0f;
-//        doubflo high = 30.0f;
-//        doubflo delta = 1.0f;
+//        real length = 30.0f;
+//        real width = 30.0f;
+//        real high = 30.0f;
+//        real delta = 1.0f;
 //        Transformator trans(delta, Vertex(0.0f, 0.0f, 0.0f));
 //        std::string path = PATH_TO_DATA;
 //        std::string test = TESTSUITE;
@@ -167,7 +167,7 @@
 //
 //    verifyInitalClearGridField(gridCPU->grid);
 //
-//    /*std::vector<std::vector<doubflo> > qs_ausgeduennt = DistributionHelper::getQsWithoutRowsWithOnlyZeroValues(*(gridCPU->grid), gridCPU->d);
+//    /*std::vector<std::vector<real> > qs_ausgeduennt = DistributionHelper::getQsWithoutRowsWithOnlyZeroValues(*(gridCPU->grid), gridCPU->d);
 //    DistributionHelper::printQs(qs_ausgeduennt, 2);*/
 //}
 //
@@ -178,10 +178,10 @@
 //    std::vector<Triangle> triangles;
 //    
 //    void SetUp() {
-//        doubflo length = 30.0f;
-//        doubflo width = 30.0f;
-//        doubflo high = 30.0f;
-//        doubflo delta = 1.0f;
+//        real length = 30.0f;
+//        real width = 30.0f;
+//        real high = 30.0f;
+//        real delta = 1.0f;
 //        Transformator trans;
 //        std::string path = PATH_TO_DATA;
 //        std::string test = TESTSUITE;
@@ -226,13 +226,13 @@
 //TEST_F(GridKernelCubeIsBetweenNodesTest, calculateQ_validateAllQs_shouldBe_0_5_D3Q7){
 //    gridCPU->meshGrid(&triangles[0], (int)triangles.size());
 //
-//    std::vector<std::vector<doubflo> > qs_ausgeduennt = DistributionHelper::getQsWithoutRowsWithOnlyZeroValues(gridCPU->grid, gridCPU->grid.d);
+//    std::vector<std::vector<real> > qs_ausgeduennt = DistributionHelper::getQsWithoutRowsWithOnlyZeroValues(gridCPU->grid, gridCPU->grid.d);
 //
 //    for (int node = 0; node < qs_ausgeduennt.size(); node++) {
 //        for (int dir = DIR_7_START; dir < DIR_7_END; dir++) {
-//            doubflo q =  qs_ausgeduennt[node][dir+1];
+//            real q =  qs_ausgeduennt[node][dir+1];
 //            if (q != 0.0f){
-//                EXPECT_THAT(q, FloatEq(0.5));
+//                EXPECT_THAT(q, DoubleEq(0.5));
 //            }
 //        }
 //    }
@@ -248,10 +248,10 @@
 //    std::vector<Triangle> triangles;
 //
 //    void SetUp() {
-//        doubflo length = 30.0f;
-//        doubflo width = 30.0f;
-//        doubflo high = 30.0f;
-//        doubflo delta = 1.0f;
+//        real length = 30.0f;
+//        real width = 30.0f;
+//        real high = 30.0f;
+//        real delta = 1.0f;
 //        Transformator trans;
 //        std::string path = PATH_TO_DATA;
 //        std::string test = TESTSUITE;
@@ -276,13 +276,13 @@
 //TEST_F(GridKernelCubeIsBetweenNodesD3Q27Test, calculateQ_validateAllQs_shouldBe_0_5_D3Q27){
 //    gridCPU->meshGrid(&triangles[0], (int)triangles.size());
 //
-//    std::vector<std::vector<doubflo> > qs_ausgeduennt = DistributionHelper::getQsWithoutRowsWithOnlyZeroValues(gridCPU->grid, gridCPU->grid.d);
+//    std::vector<std::vector<real> > qs_ausgeduennt = DistributionHelper::getQsWithoutRowsWithOnlyZeroValues(gridCPU->grid, gridCPU->grid.d);
 //
 //    for (int node = 0; node < qs_ausgeduennt.size(); node++) {
 //        for (int dir = DIR_7_START; dir < DIR_7_END; dir++) {
-//            doubflo q = qs_ausgeduennt[node][dir + 1];
+//            real q = qs_ausgeduennt[node][dir + 1];
 //            if (q != 0.0f){
-//                EXPECT_THAT(q, FloatEq(0.5));
+//                EXPECT_THAT(q, DoubleEq(0.5));
 //            }
 //        }
 //    }
@@ -313,7 +313,7 @@
 //    ////writeArrowsToFile();
 //
 //    //UnstructuredGridWriter writer;
-//    //doubflo v1_arr[3], v2_arr[3], v3_arr[3];
+//    //real v1_arr[3], v2_arr[3], v3_arr[3];
 //    //convertVertexToArray(t.v1, v1_arr); convertVertexToArray(t.v2, v2_arr); convertVertexToArray(t.v3, v3_arr);
 //    //writer.addTriangle(v1_arr, v2_arr, v3_arr);
 //    //writer.writeUnstructuredGridToFile("triangleTest.vtu");
@@ -323,6 +323,6 @@
 //    //VertexInteger v = getVertexInt(3, 5, 5);
 //    //Distributions7 d;
 //    //int dirs = 7;
-//    //d.f[0] = new doubflo[grid.size * dirs];
+//    //d.f[0] = new real[grid.size * dirs];
 //    ////calculateQs(grid, v, t, d.f[0]);
 //}
diff --git a/src/GridGenerator/grid/GridWrapper/GridWrapperGPU/GridWrapperGPU.cpp b/src/GridGenerator/grid/GridWrapper/GridWrapperGPU/GridWrapperGPU.cpp
index 9a555ff56..d658bc34e 100644
--- a/src/GridGenerator/grid/GridWrapper/GridWrapperGPU/GridWrapperGPU.cpp
+++ b/src/GridGenerator/grid/GridWrapper/GridWrapperGPU/GridWrapperGPU.cpp
@@ -123,7 +123,7 @@ void GridWrapperGPU::allocAndCopyTrianglesToGPU(Geometry &geom)
     *logging::out << logging::Logger::INTERMEDIATE << "start copying triangles ...\n";
     clock_t begin = clock();
     int size_in_bytes_triangles = sizeof(Triangle)*geom.size;
-    doubflo sizeInMB = size_in_bytes_triangles / (1024.f*1024.f);
+    real sizeInMB = size_in_bytes_triangles / (1024.f*1024.f);
 
     *logging::out << logging::Logger::INTERMEDIATE << "Allocating " + SSTR(sizeInMB) + " [MB] device memory for triangles.\n\n";
 
@@ -133,7 +133,7 @@ void GridWrapperGPU::allocAndCopyTrianglesToGPU(Geometry &geom)
     geom.triangles = triangles_d;
     CudaCheckError();
     clock_t end = clock();
-    doubflo time = doubflo(end - begin) / CLOCKS_PER_SEC;
+    real time = real(end - begin) / CLOCKS_PER_SEC;
     *logging::out << logging::Logger::INTERMEDIATE << "time copying triangles: " + SSTR(time) + "s\n";
     *logging::out << logging::Logger::INTERMEDIATE << "...copying triangles finish!\n\n";
 }
@@ -145,8 +145,8 @@ void GridWrapperGPU::allocDistribution()
     CudaCheckError();
 
     unsigned long long distributionSize = grid.size * (grid.d.dir_end + 1);
-    unsigned long long size_in_bytes = distributionSize * sizeof(doubflo);
-    doubflo sizeInMB = size_in_bytes / (1024.f*1024.f);
+    unsigned long long size_in_bytes = distributionSize * sizeof(real);
+    real sizeInMB = size_in_bytes / (1024.f*1024.f);
     *logging::out << logging::Logger::INTERMEDIATE << "Allocating " + SSTR(sizeInMB) + " [MB] device memory for distributions.\n\n";
 
     CudaSafeCall(cudaMalloc(&grid.d.f, size_in_bytes));
@@ -210,8 +210,8 @@ void GridWrapperGPU::copyAndFreeFieldFromGPU()
 void GridWrapperGPU::copyAndFreeDistributiondFromGPU()
 {
     unsigned long long distributionSize = grid.size * (grid.d.dir_end + 1);
-    doubflo *f_host = new doubflo[distributionSize];
-    CudaSafeCall(cudaMemcpy(f_host, grid.d.f, distributionSize * sizeof(doubflo), cudaMemcpyDeviceToHost));
+    real *f_host = new real[distributionSize];
+    CudaSafeCall(cudaMemcpy(f_host, grid.d.f, distributionSize * sizeof(real), cudaMemcpyDeviceToHost));
     CudaSafeCall(cudaFree(grid.d.f));
     CudaCheckError();
     grid.d.f = f_host;
diff --git a/src/GridGenerator/grid/GridWrapper/GridWrapperGPU/GridWrapperGPUTest.cpp b/src/GridGenerator/grid/GridWrapper/GridWrapperGPU/GridWrapperGPUTest.cpp
index 39e7b2bba..da1ecb59b 100644
--- a/src/GridGenerator/grid/GridWrapper/GridWrapperGPU/GridWrapperGPUTest.cpp
+++ b/src/GridGenerator/grid/GridWrapper/GridWrapperGPU/GridWrapperGPUTest.cpp
@@ -31,9 +31,9 @@
 //        for (z = min; z <= max; z++)
 //        {
 //            x = min;
-//            EXPECT_THAT(grid.getFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z)), Eq(expectedNode));
+//            EXPECT_THAT(grid.getFieldEntry(Vertex((real)x, (real)y, (real)z)), Eq(expectedNode));
 //            x = max;
-//            EXPECT_THAT(grid.getFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z)), Eq(expectedNode));
+//            EXPECT_THAT(grid.getFieldEntry(Vertex((real)x, (real)y, (real)z)), Eq(expectedNode));
 //        }
 //    }
 //
@@ -43,9 +43,9 @@
 //        for (z = min; z <= max; z++)
 //        {
 //            y = min;
-//            EXPECT_THAT(grid.getFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z)), Eq(expectedNode));
+//            EXPECT_THAT(grid.getFieldEntry(Vertex((real)x, (real)y, (real)z)), Eq(expectedNode));
 //            y = max;
-//            EXPECT_THAT(grid.getFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z)), Eq(expectedNode));
+//            EXPECT_THAT(grid.getFieldEntry(Vertex((real)x, (real)y, (real)z)), Eq(expectedNode));
 //        }
 //    }
 //
@@ -55,9 +55,9 @@
 //        for (y = min; y <= max; y++)
 //        {
 //            z = min;
-//            EXPECT_THAT(grid.getFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z)), Eq(expectedNode));
+//            EXPECT_THAT(grid.getFieldEntry(Vertex((real)x, (real)y, (real)z)), Eq(expectedNode));
 //            z = max;
-//            EXPECT_THAT(grid.getFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z)), Eq(expectedNode));
+//            EXPECT_THAT(grid.getFieldEntry(Vertex((real)x, (real)y, (real)z)), Eq(expectedNode));
 //        }
 //    }
 //}
@@ -71,9 +71,9 @@
 //        for (z = min; z <= max; z++)
 //        {
 //            x = min;
-//            grid.setFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z), newNode);
+//            grid.setFieldEntry(Vertex((real)x, (real)y, (real)z), newNode);
 //            x = max;
-//            grid.setFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z), newNode);
+//            grid.setFieldEntry(Vertex((real)x, (real)y, (real)z), newNode);
 //        }
 //    }
 //
@@ -83,9 +83,9 @@
 //        for (z = min; z <= max; z++)
 //        {
 //            y = min;
-//            grid.setFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z), newNode);
+//            grid.setFieldEntry(Vertex((real)x, (real)y, (real)z), newNode);
 //            y = max;
-//            grid.setFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z), newNode);
+//            grid.setFieldEntry(Vertex((real)x, (real)y, (real)z), newNode);
 //        }
 //    }
 //
@@ -95,9 +95,9 @@
 //        for (y = min; y <= max; y++)
 //        {
 //            z = min;
-//            grid.setFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z), newNode);
+//            grid.setFieldEntry(Vertex((real)x, (real)y, (real)z), newNode);
 //            z = max;
-//            grid.setFieldEntry(Vertex((doubflo)x, (doubflo)y, (doubflo)z), newNode);
+//            grid.setFieldEntry(Vertex((real)x, (real)y, (real)z), newNode);
 //        }
 //    }
 //}
@@ -123,10 +123,10 @@
 //    std::vector<Triangle> triangles;
 //
 //    void SetUp() {
-//        doubflo length = 30.0f;
-//        doubflo width = 30.0f;
-//        doubflo high = 30.0f;
-//        doubflo delta = 1.0f;
+//        real length = 30.0f;
+//        real width = 30.0f;
+//        real high = 30.0f;
+//        real delta = 1.0f;
 //        Transformator trans(delta, Vertex(0.0f, 0.0f, 0.0f));
 //        std::string path = PATH_TO_DATA;
 //        std::string test = TESTSUITE;
@@ -180,10 +180,10 @@
 //    std::vector<Triangle> triangles;
 //
 //    void SetUp() {
-//        doubflo length = 30.0f;
-//        doubflo width = 30.0f;
-//        doubflo high = 30.0f;
-//        doubflo delta = 1.0f;
+//        real length = 30.0f;
+//        real width = 30.0f;
+//        real high = 30.0f;
+//        real delta = 1.0f;
 //        Transformator trans;
 //        std::string path = PATH_TO_DATA;
 //        std::string test = TESTSUITE;
@@ -231,13 +231,13 @@
 //    gridGPU->meshGrid(&triangles[0], (int)triangles.size());
 //    gridGPU->copyDataFromGPU();
 //
-//    std::vector<std::vector<doubflo> > qs_ausgeduennt = DistributionHelper::getQsWithoutRowsWithOnlyZeroValues(gridGPU->grid, gridGPU->grid.d);
+//    std::vector<std::vector<real> > qs_ausgeduennt = DistributionHelper::getQsWithoutRowsWithOnlyZeroValues(gridGPU->grid, gridGPU->grid.d);
 //
 //    for (int node = 0; node < qs_ausgeduennt.size(); node++) {
 //        for (int dir = DIR_7_START; dir < DIR_7_END; dir++) {
-//            doubflo q = qs_ausgeduennt[node][dir + 1];
+//            real q = qs_ausgeduennt[node][dir + 1];
 //            if (q != 0.0f){
-//                EXPECT_THAT(q, FloatEq(0.5));
+//                EXPECT_THAT(q, DoubleEq(0.5));
 //            }
 //        }
 //    }
@@ -249,10 +249,10 @@
 //    std::vector<Triangle> triangles;
 //
 //    void SetUp() {
-//        doubflo length = 30.0f;
-//        doubflo width = 30.0f;
-//        doubflo high = 30.0f;
-//        doubflo delta = 1.0f;
+//        real length = 30.0f;
+//        real width = 30.0f;
+//        real high = 30.0f;
+//        real delta = 1.0f;
 //        Transformator trans;
 //        std::string path = PATH_TO_DATA;
 //        std::string test = TESTSUITE;
@@ -278,13 +278,13 @@
 //    gridGPU->meshGrid(&triangles[0], (int)triangles.size());
 //    gridGPU->copyDataFromGPU();
 //
-//    std::vector<std::vector<doubflo> > qs_ausgeduennt = DistributionHelper::getQsWithoutRowsWithOnlyZeroValues(gridGPU->grid, gridGPU->grid.d);
+//    std::vector<std::vector<real> > qs_ausgeduennt = DistributionHelper::getQsWithoutRowsWithOnlyZeroValues(gridGPU->grid, gridGPU->grid.d);
 //
 //    for (int node = 0; node < qs_ausgeduennt.size(); node++) {
 //        for (int dir = DIR_7_START; dir < DIR_7_END; dir++) {
-//            doubflo q = qs_ausgeduennt[node][dir + 1];
+//            real q = qs_ausgeduennt[node][dir + 1];
 //            if (q != 0.0f){
-//                EXPECT_THAT(q, FloatEq(0.5));
+//                EXPECT_THAT(q, DoubleEq(0.5));
 //            }
 //        }
 //    }
@@ -293,10 +293,10 @@
 //
 //class GridKernelTest : public Test {
 //public:
-//    doubflo length;
-//    doubflo width;
-//    doubflo high;
-//    doubflo delta;
+//    real length;
+//    real width;
+//    real high;
+//    real delta;
 //    unsigned int nx;
 //    unsigned int ny;
 //    unsigned int nz;
@@ -321,7 +321,7 @@
 //    int x = nx / 2;
 //    int y = ny - 1;
 //    int z = nz - 1;
-//    unsigned int index = grid.transCoordToIndex(Vertex((doubflo)x, (doubflo)y, (doubflo)z));
+//    unsigned int index = grid.transCoordToIndex(Vertex((real)x, (real)y, (real)z));
 //
 //    unsigned int newX, newY, newZ;
 //    grid.transIndexToCoords(index, newX, newY, newZ);
@@ -333,8 +333,8 @@
 //
 //TEST_F(GridKernelTest, ifAllBetaAreSmallerThenAlpha_ItShouldreturnTrue) {
 //
-//    doubflo alphaAngles[3];
-//    doubflo betaAngles[3];
+//    real alphaAngles[3];
+//    real betaAngles[3];
 //    alphaAngles[0] = 94.4f;
 //    alphaAngles[1] = 92.4f;
 //    alphaAngles[2] = 91.5f;
@@ -349,8 +349,8 @@
 //
 //TEST_F(GridKernelTest, ifOneBetaIsBiggerThenAlpha_ItShouldreturnFalse) {
 //
-//    doubflo alphaAngles[3];
-//    doubflo betaAngles[3];
+//    real alphaAngles[3];
+//    real betaAngles[3];
 //
 //    alphaAngles[0] = 94.4f;
 //    alphaAngles[1] = 92.4f;
diff --git a/src/GridGenerator/grid/distributions/Distribution.cpp b/src/GridGenerator/grid/distributions/Distribution.cpp
index ec9888b29..07b59acea 100644
--- a/src/GridGenerator/grid/distributions/Distribution.cpp
+++ b/src/GridGenerator/grid/distributions/Distribution.cpp
@@ -333,18 +333,18 @@ Distribution DistributionHelper::getDistribution(std::string name)
 
 }
 
-std::vector<std::vector<doubflo> > DistributionHelper::getQsWithoutRowsWithOnlyZeroValues(const Grid &grid, const Distribution &d)
+std::vector<std::vector<real> > DistributionHelper::getQsWithoutRowsWithOnlyZeroValues(const Grid &grid, const Distribution &d)
 {
     return getVectorWithoutRowsWithOnlyZeroValues(getAllQsOnFluidNodes(grid, d));
 }
 
-std::vector<std::vector<doubflo> > DistributionHelper::getAllQsOnFluidNodes(const Grid &grid, const Distribution &d)
+std::vector<std::vector<real> > DistributionHelper::getAllQsOnFluidNodes(const Grid &grid, const Distribution &d)
 {
-    std::vector<std::vector<doubflo> > qs(grid.size, std::vector<doubflo>(d.dir_end + 1, 0));
+    std::vector<std::vector<real> > qs(grid.size, std::vector<real>(d.dir_end + 1, 0));
     for (unsigned int node = 0; node < grid.size; node++) {
-        qs[node][0] = (doubflo)node;
+        qs[node][0] = (real)node;
         for (int i = d.dir_start; i < d.dir_end; i++) {
-            doubflo qVal = (d.f)[i * grid.size + node];
+            real qVal = (d.f)[i * grid.size + node];
             if (qVal == 0.0f)
                 continue;
             int index_fluidNode = getNeighborNodeIndexInGivenDirection(d, grid, node, i);
@@ -356,17 +356,17 @@ std::vector<std::vector<doubflo> > DistributionHelper::getAllQsOnFluidNodes(cons
 
 int DistributionHelper::getNeighborNodeIndexInGivenDirection(const Distribution &d, const Grid &grid, const int node, const int dir_index)
 {
-    Vertex dir = Vertex((doubflo)d.dirs[dir_index * DIMENSION + 0], (doubflo)d.dirs[dir_index * DIMENSION + 1], (doubflo)d.dirs[dir_index * DIMENSION + 2]);
+    Vertex dir = Vertex((real)d.dirs[dir_index * DIMENSION + 0], (real)d.dirs[dir_index * DIMENSION + 1], (real)d.dirs[dir_index * DIMENSION + 2]);
     unsigned int x, y, z;
     grid.transIndexToCoords(node, x, y, z);
-    Vertex solid_node = Vertex((doubflo)x, (doubflo)y,(doubflo)z);
+    Vertex solid_node = Vertex((real)x, (real)y,(real)z);
     Vertex fluid_node = Vertex(solid_node.x - dir.x, solid_node.y - dir.y, solid_node.z - dir.z);
     return grid.transCoordToIndex(fluid_node);
 }
 
-std::vector<std::vector<doubflo> > DistributionHelper::getVectorWithoutRowsWithOnlyZeroValues(std::vector<std::vector<doubflo> > qs)
+std::vector<std::vector<real> > DistributionHelper::getVectorWithoutRowsWithOnlyZeroValues(std::vector<std::vector<real> > qs)
 {
-    std::vector<std::vector<doubflo> > qs_ausgeduennt;
+    std::vector<std::vector<real> > qs_ausgeduennt;
     bool hasQs = false;
     for (int node = 0; node < qs.size(); node++) {
         for (int dir = 0; dir < qs[node].size() - 1; dir++) {
@@ -374,7 +374,7 @@ std::vector<std::vector<doubflo> > DistributionHelper::getVectorWithoutRowsWithO
                 hasQs = true;
         }
         if (hasQs) {
-            std::vector<doubflo> qRow(qs[node].begin(), qs[node].end());
+            std::vector<real> qRow(qs[node].begin(), qs[node].end());
             qs_ausgeduennt.push_back(qRow);
             hasQs = false;
         }
@@ -382,7 +382,7 @@ std::vector<std::vector<doubflo> > DistributionHelper::getVectorWithoutRowsWithO
     return qs_ausgeduennt;
 }
 
-void DistributionHelper::printQs(std::vector<std::vector<doubflo> > qs, int decimalPlaces)
+void DistributionHelper::printQs(std::vector<std::vector<real> > qs, int decimalPlaces)
 {
     for (int node = 0; node < qs.size(); node++) {
         printf("index %d: ", node);
diff --git a/src/GridGenerator/grid/distributions/Distribution.h b/src/GridGenerator/grid/distributions/Distribution.h
index bc5fed765..31e44faf3 100644
--- a/src/GridGenerator/grid/distributions/Distribution.h
+++ b/src/GridGenerator/grid/distributions/Distribution.h
@@ -12,7 +12,7 @@
 
 struct Distribution
 {
-    doubflo* f;
+    real* f;
     int *dirs;
     int dir_start;
     int dir_end;
@@ -32,11 +32,11 @@ public:
     static Distribution getDistribution(std::string name);
 
 public:
-    static std::vector<std::vector<doubflo> > getQsWithoutRowsWithOnlyZeroValues(const Grid &grid, const Distribution &d);
-    static std::vector<std::vector<doubflo> > getAllQsOnFluidNodes(const Grid &grid, const Distribution &d);
+    static std::vector<std::vector<real> > getQsWithoutRowsWithOnlyZeroValues(const Grid &grid, const Distribution &d);
+    static std::vector<std::vector<real> > getAllQsOnFluidNodes(const Grid &grid, const Distribution &d);
     static int getNeighborNodeIndexInGivenDirection(const Distribution &d, const Grid &grid, const int node, const int dir_index);
-    static std::vector<std::vector<doubflo> > getVectorWithoutRowsWithOnlyZeroValues(std::vector<std::vector<doubflo> > qs);
-    static void printQs(std::vector<std::vector<doubflo> > qs, int decimalPlaces);
+    static std::vector<std::vector<real> > getVectorWithoutRowsWithOnlyZeroValues(std::vector<std::vector<real> > qs);
+    static void printQs(std::vector<std::vector<real> > qs, int decimalPlaces);
 };
 
 #endif
diff --git a/src/GridGenerator/grid/partition/Partition.cpp b/src/GridGenerator/grid/partition/Partition.cpp
index 40624dca6..03d75beb4 100644
--- a/src/GridGenerator/grid/partition/Partition.cpp
+++ b/src/GridGenerator/grid/partition/Partition.cpp
@@ -275,7 +275,7 @@ std::vector<std::vector<int> > Partition::partitionBoxes(std::vector<std::vector
     for (int level = 0; level < boxes.size(); level++) {
         for (int i = 0; i < boxes[level].size(); i++) {
         	
-			BoundingBox<doubflo> box = boxes[level][i];
+			BoundingBox<real> box = boxes[level][i];
             transformators[level]->transformGridToWorld(box);
 
             int index = i + (int)boxes[level].size() * level;
@@ -285,7 +285,7 @@ std::vector<std::vector<int> > Partition::partitionBoxes(std::vector<std::vector
                     if (index == indexCompare)
                         continue;
 
-					BoundingBox<doubflo> boxCompare = boxes[levelCompare][iCompare];
+					BoundingBox<real> boxCompare = boxes[levelCompare][iCompare];
                     transformators[level]->transformGridToWorld(boxCompare);
                     if (box.intersect(boxCompare)) {
                         adjncy.push_back(indexCompare);
@@ -517,7 +517,7 @@ std::vector<std::vector<Triangle> >  Partition::splitTriangles(std::vector<Trian
 void Partition::splitAndPushTriangle(BoundingBox<int> &box, std::vector<Triangle> &trianglesPerProcess, std::vector<Triangle> &triangleVec, int indexTriangle)
 {
     Triangle triangleToSplit = triangleVec[indexTriangle];
-	BoundingBox<doubflo> triangleBox = BoundingBox<doubflo>::makeExactBox(triangleToSplit);
+	BoundingBox<real> triangleBox = BoundingBox<real>::makeExactBox(triangleToSplit);
     std::vector<std::vector<Vertex> > intersectionsBox = box.getIntersectionPoints(triangleBox);
 
     //UnstructuredGridWriter writer;
@@ -546,9 +546,9 @@ void Partition::splitAndPushTriangle(BoundingBox<int> &box, std::vector<Triangle
         Vertex v5 = (triangleToSplit.v2 - point);
         Vertex v6 = (triangleToSplit.v3 - point);
 
-        doubflo d1 = v4 * normal;
-        doubflo d2 = v5 * normal;
-        doubflo d3 = v6 * normal;
+        real d1 = v4 * normal;
+        real d2 = v5 * normal;
+        real d3 = v6 * normal;
 
         // a to b crosses the clipping plane
         if (d1 * d2 < 0.0f)
@@ -572,9 +572,9 @@ void Partition::sliceTriangle(
     const Vertex& a, // First point on triangle, CCW order
     const Vertex& b, // Second point on triangle, CCW order
     const Vertex& c, // Third point on triangle, CCW order
-    doubflo d1,        // Distance of point a to the splitting plane
-    doubflo d2,        // Distance of point b to the splitting plane
-    doubflo d3         // Distance of point c to the splitting plane
+    real d1,        // Distance of point a to the splitting plane
+    real d2,        // Distance of point b to the splitting plane
+    real d3         // Distance of point c to the splitting plane
     )
 {
     // Calculate the intersection point from a to b
diff --git a/src/GridGenerator/grid/partition/Partition.h b/src/GridGenerator/grid/partition/Partition.h
index adffde43e..96236c212 100644
--- a/src/GridGenerator/grid/partition/Partition.h
+++ b/src/GridGenerator/grid/partition/Partition.h
@@ -39,7 +39,7 @@ private:
     static void findMaxBoxSize(std::vector<BoundingBox<int>> &boxes, bool &splitX, bool &splitY, bool &splitZ);
 
     static void splitAndPushTriangle(BoundingBox<int> &box, std::vector<Triangle> &trianglesPerProcess, std::vector<Triangle> &triangleVec, int indexTriangle);
-    static void sliceTriangle(std::vector<Triangle> &out, std::vector<Triangle>& triangleVec, int index, const Vertex& a, const Vertex& b, const Vertex& c, doubflo d1, doubflo d2, doubflo d3);
+    static void sliceTriangle(std::vector<Triangle> &out, std::vector<Triangle>& triangleVec, int index, const Vertex& a, const Vertex& b, const Vertex& c, real d1, real d2, real d3);
 
 };
 
diff --git a/src/GridGenerator/io/GridVTKWriter/GridVTKWriter.cpp b/src/GridGenerator/io/GridVTKWriter/GridVTKWriter.cpp
index 05a45d56c..bc925b389 100644
--- a/src/GridGenerator/io/GridVTKWriter/GridVTKWriter.cpp
+++ b/src/GridGenerator/io/GridVTKWriter/GridVTKWriter.cpp
@@ -88,7 +88,7 @@ void GridVTKWriter::writePoints(std::shared_ptr<const Transformator> trans, cons
     unsigned int x, y, z;
     for (unsigned int i = 0; i < size; i++) {
         grid.transIndexToCoords(grid.matrixIndex[i], x, y, z);
-        Vertex v((doubflo)x, (doubflo)y, (doubflo)z);
+        Vertex v((real)x, (real)y, (real)z);
         trans->transformGridToWorld(v);
         if (binaer) {
             write_float((float)v.x);
diff --git a/src/GridGenerator/io/STLReaderWriter/STLReader.cpp b/src/GridGenerator/io/STLReaderWriter/STLReader.cpp
index d1018d402..eb5bba093 100644
--- a/src/GridGenerator/io/STLReaderWriter/STLReader.cpp
+++ b/src/GridGenerator/io/STLReaderWriter/STLReader.cpp
@@ -82,7 +82,7 @@ Geometry STLReader::getGeometryFromBinarySTL(const std::string& name, const Tran
 
 	char facet[50];
 	Geometry geometry;
-	BoundingBox<doubflo> box = BoundingBox<doubflo>::makeInvalidMinMaxBox();
+	BoundingBox<real> box = BoundingBox<real>::makeInvalidMinMaxBox();
 
 	for (unsigned int i = 0; i < nTriLong; i++) {
 		fread(facet, sizeof(char), 50, file);
@@ -122,7 +122,7 @@ Geometry STLReader::getGeometryFromASCIISTL(const std::string& name, const Trans
 	std::getline(file, line); // solid ascii
 
 	Geometry geometry;
-	BoundingBox<doubflo> box = BoundingBox<doubflo>::makeInvalidMinMaxBox();
+	BoundingBox<real> box = BoundingBox<real>::makeInvalidMinMaxBox();
 
 	for (int t = 0; t < nTriangles; t++) {
 		Vertex normal = parseLineToCoordinates(file, "%*s %*s %f %f %f");
@@ -332,7 +332,7 @@ Vertex STLReader::parseLineToCoordinates(std::ifstream& file, std::string format
     std::string line;
     getline(file, line);
     const char* buffer = line.c_str();
-    doubflo x, y, z;
+    real x, y, z;
     sscanf(buffer, format.c_str(), &x, &y, &z);
     return Vertex(x, y, z);
 }
@@ -361,5 +361,5 @@ Vertex STLReader::getVertexFromChar(const char* facet)
     float yy = *((float*)f2);
     float zz = *((float*)f3);
 
-    return Vertex((doubflo)(xx), (doubflo)(yy), (doubflo)(zz));
+    return Vertex((real)(xx), (real)(yy), (real)(zz));
 }
diff --git a/src/GridGenerator/io/SimulationFileWriter/SimulationFileTest.cpp b/src/GridGenerator/io/SimulationFileWriter/SimulationFileTest.cpp
index 68085505f..0d88e7e4c 100644
--- a/src/GridGenerator/io/SimulationFileWriter/SimulationFileTest.cpp
+++ b/src/GridGenerator/io/SimulationFileWriter/SimulationFileTest.cpp
@@ -22,17 +22,17 @@
 //    std::vector<unsigned int> neighborXFoam, neighborYFoam, neighborZFoam, geoFoam;
 //    std::vector<unsigned int> neighborX, neighborY, neighborZ, geo;
 //
-//    std::vector<doubflo> coordXFoam, coordYFoam, coordZFoam;
-//    std::vector<doubflo> coordX, coordY, coordZ;
+//    std::vector<real> coordXFoam, coordYFoam, coordZFoam;
+//    std::vector<real> coordX, coordY, coordZ;
 //
-//    std::vector<std::vector<doubflo> > inletQFoam, outletQFoam;
-//    std::vector<std::vector<doubflo> > inletQ, outletQ;
+//    std::vector<std::vector<real> > inletQFoam, outletQFoam;
+//    std::vector<std::vector<real> > inletQ, outletQ;
 //
 //    void SetUp() {
-//        doubflo length = 10.0f;
-//        doubflo width = 10.0f;
-//        doubflo high = 10.0f;
-//        doubflo delta = 1.0f;
+//        real length = 10.0f;
+//        real width = 10.0f;
+//        real high = 10.0f;
+//        real delta = 1.0f;
 //
 //        int nx = (int)(length / delta) + 1;
 //        int ny = (int)(width / delta) + 1;
@@ -58,7 +58,7 @@
 //        bool binaer = false;
 //        Transformator dummy;
 //        std::vector<Node> coords = builder.getNodes();
-//        std::vector<std::vector<std::vector<doubflo> > > qs = builder.getQsValues();
+//        std::vector<std::vector<std::vector<real> > > qs = builder.getQsValues();
 //        SimulationFileWriter::writeSimulationFiles(path + folder + "gridGeneration/", coords, qs, binaer, gridCPU.grid, dummy);
 //
 //        //open OpenFoam files
@@ -121,9 +121,9 @@
 //	EXPECT_TRUE(filesizes);
 //
 //    for (int i = 1; i < neighborXFoam.size(); i++) {
-//        EXPECT_THAT(coordXFoam[i] - 1.5f, FloatEq(coordX[i]));
-//        EXPECT_THAT(coordYFoam[i] - 1.5f, FloatEq(coordY[i]));
-//        EXPECT_THAT(coordZFoam[i] - 1.5f, FloatEq(coordZ[i]));
+//        EXPECT_THAT(coordXFoam[i] - 1.5f, DoubleEq(coordX[i]));
+//        EXPECT_THAT(coordYFoam[i] - 1.5f, DoubleEq(coordY[i]));
+//        EXPECT_THAT(coordZFoam[i] - 1.5f, DoubleEq(coordZ[i]));
 //
 //        EXPECT_THAT(neighborXFoam[i], Eq(neighborX[i]));
 //        EXPECT_THAT(neighborYFoam[i], Eq(neighborY[i]));
@@ -139,14 +139,14 @@
 //    for (int i = 0; i < inletQFoam.size(); i++) {
 //        for (int j = 0; j < inletQFoam[i].size(); j++) {
 //
-//            EXPECT_THAT(inletQFoam[i][j], FloatEq(inletQ[i][j]));
+//            EXPECT_THAT(inletQFoam[i][j], DoubleEq(inletQ[i][j]));
 //        }
 //    }
 //
 //    for (int i = 0; i < inletQFoam.size(); i++) {
 //        for (int j = 0; j < inletQFoam[i].size(); j++) {
 //
-//            EXPECT_THAT(outletQFoam[i][j], FloatEq(outletQ[i][j]));
+//            EXPECT_THAT(outletQFoam[i][j], DoubleEq(outletQ[i][j]));
 //        }
 //    }
 //}
diff --git a/src/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.cpp b/src/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.cpp
index 803fb09bf..c6d5e516d 100644
--- a/src/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.cpp
+++ b/src/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.cpp
@@ -32,7 +32,7 @@ void SimulationFileWriter::writeSimulationFiles(std::string folder, std::shared_
     closeFiles();
 
     clock_t  end = clock();
-    doubflo time = doubflo(end - begin) / CLOCKS_PER_SEC;
+    real time = real(end - begin) / CLOCKS_PER_SEC;
     std::cout << "time write files: " << time << " sec" << std::endl;
     std::cout << "... finish writing Simulation Files!\n";
 }
@@ -48,7 +48,7 @@ void SimulationFileWriter::writeCoordFiles(bool binaer, std::shared_ptr<GridBuil
     }
 }
 
-void SimulationFileWriter::writeBoundaryQsFile(std::vector<std::vector<std::vector<doubflo> > > qFiles)
+void SimulationFileWriter::writeBoundaryQsFile(std::vector<std::vector<std::vector<real> > > qFiles)
 {
     for (int rb = 0; rb < QFILES; rb++) {
         for (int index = 0; index < qFiles[rb].size(); index++) {
@@ -97,7 +97,7 @@ void SimulationFileWriter::openFiles()
     }
 }
 
-void SimulationFileWriter::writeLevelAndLevelSize(int sizeCoords, std::vector<std::vector<std::vector<doubflo> > > qFiles)
+void SimulationFileWriter::writeLevelAndLevelSize(int sizeCoords, std::vector<std::vector<std::vector<real> > > qFiles)
 {
     std::string zeroIndex = "0 ";
     std::string zeroGeo = "16 ";
@@ -128,7 +128,7 @@ void SimulationFileWriter::writeCoordsNeighborsGeo(const int& i, bool binaer, st
 	unsigned int x, y, z;
     grid.transIndexToCoords(index, x, y, z);
 
-    Vertex v = Vertex((doubflo)x, (doubflo)y, (doubflo)z);
+    Vertex v = Vertex((real)x, (real)y, (real)z);
     trans->transformGridToWorld(v);
     double xWorld = v.x;
     double yWorld = v.y;
@@ -160,7 +160,7 @@ void SimulationFileWriter::writeCoordsNeighborsGeo(const int& i, bool binaer, st
     }
 }
 
-void SimulationFileWriter::writeBoundary(std::vector<doubflo> boundary, int rb)
+void SimulationFileWriter::writeBoundary(std::vector<real> boundary, int rb)
 {
     uint32_t key = *((uint32_t*)&boundary[boundary.size() - 2]);
     int index = (int)boundary[boundary.size() - 1];
diff --git a/src/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.h b/src/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.h
index 93e813e45..d2d2b8a12 100644
--- a/src/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.h
+++ b/src/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.h
@@ -24,12 +24,12 @@ private:
     SimulationFileWriter() {};
     ~SimulationFileWriter() {};
     static void writeCoordFiles(bool binaer, std::shared_ptr<GridBuilder> builder, std::shared_ptr<Transformator> trans);
-    static void writeBoundaryQsFile(std::vector<std::vector<std::vector<doubflo> > > qFiles);
+    static void writeBoundaryQsFile(std::vector<std::vector<std::vector<real> > > qFiles);
 
     static void openFiles();
-    static void writeLevelAndLevelSize(int sizeCoords, std::vector<std::vector<std::vector<doubflo> > > qFiles);
+    static void writeLevelAndLevelSize(int sizeCoords, std::vector<std::vector<std::vector<real> > > qFiles);
     static void writeCoordsNeighborsGeo(const int& index, bool binaer, std::shared_ptr<GridBuilder> builder, std::shared_ptr<Transformator> trans);
-    static void writeBoundary(std::vector<doubflo> boundary, int rb);
+    static void writeBoundary(std::vector<real> boundary, int rb);
     static void closeFiles();
 
 	static std::ofstream xCoordFile;
diff --git a/src/GridGenerator/io/VTKWriterWrapper/UnstructuredGridWrapper.cpp b/src/GridGenerator/io/VTKWriterWrapper/UnstructuredGridWrapper.cpp
index b8bc9e5d1..3cd4a89e9 100644
--- a/src/GridGenerator/io/VTKWriterWrapper/UnstructuredGridWrapper.cpp
+++ b/src/GridGenerator/io/VTKWriterWrapper/UnstructuredGridWrapper.cpp
@@ -134,4 +134,4 @@
 //#endif
 //}
 //
-//template void UnstructuredGridWrapper::addBoundingBox<doubflo>(BoundingBox<doubflo> b, int type);
+//template void UnstructuredGridWrapper::addBoundingBox<real>(BoundingBox<real> b, int type);
diff --git a/src/GridGenerator/utilities/Launchparameter/LaunchParameter.cu b/src/GridGenerator/utilities/Launchparameter/LaunchParameter.cu
index c4132cb07..06063cf01 100644
--- a/src/GridGenerator/utilities/Launchparameter/LaunchParameter.cu
+++ b/src/GridGenerator/utilities/Launchparameter/LaunchParameter.cu
@@ -14,7 +14,7 @@ HOST LaunchParameter LaunchParameter::make_2D1D_launchParameter(int size, int th
 	LaunchParameter para;
 	para.threads = dim3(threadDim, 1, 1);
 
-	int blocks_ = (int)(ceil((size / ((doubflo)threadDim))));
+	int blocks_ = (int)(ceil((size / ((real)threadDim))));
 	para.blocks = dim3(blocks_, 1, 1);
 
 	if (blocks_ > MAXBLOCKSIZE) {
@@ -28,7 +28,7 @@ HOST LaunchParameter LaunchParameter::make_1D1D_launchParameter(int size, int th
 {
 	LaunchParameter para;
 	para.threads = dim3(threadDim, 1, 1);
-	int blocks_ = (int)(ceil((doubflo)size / (doubflo)threadDim));
+	int blocks_ = (int)(ceil((real)size / (real)threadDim));
 	para.blocks = dim3(blocks_, 1);
 	return para;
 }
diff --git a/src/GridGenerator/utilities/math/CudaMath.cu b/src/GridGenerator/utilities/math/CudaMath.cu
index f75990ee5..28dd90e30 100644
--- a/src/GridGenerator/utilities/math/CudaMath.cu
+++ b/src/GridGenerator/utilities/math/CudaMath.cu
@@ -2,38 +2,38 @@
 
 #include <cmath>
 
-HOSTDEVICE bool CudaMath::equal(const doubflo& val1, const doubflo& val2, doubflo maxRelDiff)
+HOSTDEVICE bool CudaMath::equal(const real& val1, const real& val2, real maxRelDiff)
 {
-	doubflo diff = std::fabs(val1 - val2);
-	doubflo val1_abs = std::fabs(val1);
-	doubflo val2_abs = std::fabs(val2);
+	real diff = std::fabs(val1 - val2);
+	real val1_abs = std::fabs(val1);
+	real val2_abs = std::fabs(val2);
 
-	doubflo largest = (val2_abs > val1_abs) ? val2_abs : val1_abs;
+	real largest = (val2_abs > val1_abs) ? val2_abs : val1_abs;
 	if (diff <= largest * maxRelDiff)
 		return true;
 	return false;
 }
 
-HOSTDEVICE bool CudaMath::lessEqual(const doubflo& val1, const doubflo& val2, doubflo maxRelDiff)
+HOSTDEVICE bool CudaMath::lessEqual(const real& val1, const real& val2, real maxRelDiff)
 {
 	if (val1 < val2 || equal(val1, val2, maxRelDiff))
 		return true;
 	return false;
 }
 
-HOSTDEVICE bool CudaMath::greaterEqual(const doubflo& val1, const doubflo& val2, doubflo maxRelDiff)
+HOSTDEVICE bool CudaMath::greaterEqual(const real& val1, const real& val2, real maxRelDiff)
 {
 	if (val1 > val2 || equal(val1, val2, maxRelDiff))
 		return true;
 	return false;
 }
 
-HOSTDEVICE doubflo CudaMath::sqrt(const doubflo& val)
+HOSTDEVICE real CudaMath::sqrt(const real& val)
 {
     return sqrtf(val);
 }
 
-HOSTDEVICE doubflo CudaMath::acos(const doubflo& val)
+HOSTDEVICE real CudaMath::acos(const real& val)
 {
     return acosf(val);
 }
diff --git a/src/GridGenerator/utilities/math/CudaMath.cuh b/src/GridGenerator/utilities/math/CudaMath.cuh
index af529e50d..17deddf41 100644
--- a/src/GridGenerator/utilities/math/CudaMath.cuh
+++ b/src/GridGenerator/utilities/math/CudaMath.cuh
@@ -12,12 +12,12 @@
 
 struct VF_PUBLIC CudaMath
 {
-	HOSTDEVICE static bool equal(const doubflo& val1, const doubflo& val2, doubflo maxRelDiff = EPSILON);
-	HOSTDEVICE static bool lessEqual(const doubflo& val1, const doubflo& val2, doubflo maxRelDiff = EPSILON);
-	HOSTDEVICE static bool greaterEqual(const doubflo& val1, const doubflo& val2, doubflo maxRelDiff = EPSILON);
+	HOSTDEVICE static bool equal(const real& val1, const real& val2, real maxRelDiff = EPSILON);
+	HOSTDEVICE static bool lessEqual(const real& val1, const real& val2, real maxRelDiff = EPSILON);
+	HOSTDEVICE static bool greaterEqual(const real& val1, const real& val2, real maxRelDiff = EPSILON);
 
-	HOSTDEVICE static doubflo sqrt(const doubflo& val);
-	HOSTDEVICE static doubflo acos(const doubflo& val);
+	HOSTDEVICE static real sqrt(const real& val);
+	HOSTDEVICE static real acos(const real& val);
 
 };
 
diff --git a/src/GridGenerator/utilities/transformator/ArrowTransformator.cpp b/src/GridGenerator/utilities/transformator/ArrowTransformator.cpp
index c92977667..6d99ff814 100644
--- a/src/GridGenerator/utilities/transformator/ArrowTransformator.cpp
+++ b/src/GridGenerator/utilities/transformator/ArrowTransformator.cpp
@@ -3,7 +3,7 @@
 #include "TransformatorImp.h"
 
 
-std::shared_ptr<ArrowTransformator> ArrowTransformator::makeTransformator(doubflo delta, doubflo dx, doubflo dy, doubflo dz)
+std::shared_ptr<ArrowTransformator> ArrowTransformator::makeTransformator(real delta, real dx, real dy, real dz)
 {
     return std::shared_ptr<ArrowTransformator>(new TransformatorImp(delta, dx, dy, dz));
 }
diff --git a/src/GridGenerator/utilities/transformator/ArrowTransformator.h b/src/GridGenerator/utilities/transformator/ArrowTransformator.h
index cc54d896a..f7efeaefd 100644
--- a/src/GridGenerator/utilities/transformator/ArrowTransformator.h
+++ b/src/GridGenerator/utilities/transformator/ArrowTransformator.h
@@ -10,7 +10,7 @@ class Arrow;
 class ArrowTransformator
 {
 public:
-    static VF_PUBLIC std::shared_ptr<ArrowTransformator> makeTransformator(doubflo delta, doubflo dx, doubflo dy, doubflo dz);
+    static VF_PUBLIC std::shared_ptr<ArrowTransformator> makeTransformator(real delta, real dx, real dy, real dz);
 	virtual ~ArrowTransformator() {}
 
 protected:
diff --git a/src/GridGenerator/utilities/transformator/Serialization/TransformatorMemento.h b/src/GridGenerator/utilities/transformator/Serialization/TransformatorMemento.h
index fe21e3834..3448c6456 100644
--- a/src/GridGenerator/utilities/transformator/Serialization/TransformatorMemento.h
+++ b/src/GridGenerator/utilities/transformator/Serialization/TransformatorMemento.h
@@ -30,12 +30,12 @@
 //#endif
 //
 //public:
-//    doubflo minX;
-//    doubflo maxX;
-//    doubflo minY;
-//    doubflo maxY;
-//    doubflo minZ;
-//    doubflo maxZ;
+//    real minX;
+//    real maxX;
+//    real minY;
+//    real maxY;
+//    real minZ;
+//    real maxZ;
 //
 //};
 //
diff --git a/src/GridGenerator/utilities/transformator/Serialization/TransformatorMementoTest.cpp b/src/GridGenerator/utilities/transformator/Serialization/TransformatorMementoTest.cpp
index 0a21e4e49..bba6dcf15 100644
--- a/src/GridGenerator/utilities/transformator/Serialization/TransformatorMementoTest.cpp
+++ b/src/GridGenerator/utilities/transformator/Serialization/TransformatorMementoTest.cpp
@@ -26,7 +26,7 @@
 //{
 //    std::string fileName = "boundingbox";
 //
-//    BoundingBox<doubflo> box(1.2, 22.2, -23.2, 2, 0.0001, 1212122.1);
+//    BoundingBox<real> box(1.2, 22.2, -23.2, 2, 0.0001, 1212122.1);
 //
 //
 //    BoundingBoxMemento sut = box.getState();
@@ -34,7 +34,7 @@
 //
 //    BoundingBoxMemento newSut;
 //    deserialize(newSut, fileName);
-//    BoundingBox<doubflo> boxNew;
+//    BoundingBox<real> boxNew;
 //    boxNew.setState(newSut);
 //
 //    EXPECT_TRUE(box == boxNew);
diff --git a/src/GridGenerator/utilities/transformator/Transformator.cpp b/src/GridGenerator/utilities/transformator/Transformator.cpp
index 60dd2fa5b..539ec7021 100644
--- a/src/GridGenerator/utilities/transformator/Transformator.cpp
+++ b/src/GridGenerator/utilities/transformator/Transformator.cpp
@@ -2,7 +2,7 @@
 
 #include "TransformatorImp.h"
 
-std::shared_ptr<Transformator> Transformator::makeTransformator(doubflo delta, doubflo dx, doubflo dy, doubflo dz)
+std::shared_ptr<Transformator> Transformator::makeTransformator(real delta, real dx, real dy, real dz)
 {
     return std::shared_ptr<Transformator>(new TransformatorImp(delta, dx, dy, dz));
 }
\ No newline at end of file
diff --git a/src/GridGenerator/utilities/transformator/Transformator.h b/src/GridGenerator/utilities/transformator/Transformator.h
index ac0e01b5f..e19b99610 100644
--- a/src/GridGenerator/utilities/transformator/Transformator.h
+++ b/src/GridGenerator/utilities/transformator/Transformator.h
@@ -15,7 +15,7 @@ struct Vertex;
 class Transformator
 {
 public:
-    static VF_PUBLIC std::shared_ptr<Transformator> makeTransformator(doubflo delta, doubflo dx, doubflo dy, doubflo dz);
+    static VF_PUBLIC std::shared_ptr<Transformator> makeTransformator(real delta, real dx, real dy, real dz);
 	virtual ~Transformator() {}
 
 protected:
@@ -29,8 +29,8 @@ public:
     virtual void transformGridToWorld(Triangle &t) const = 0;
 	virtual void transformGridToWorld(Vertex &value) const = 0;
 	
-	virtual void transformGridToWorld(BoundingBox<doubflo> &box) const = 0;
-	virtual void transformWorldToGrid(BoundingBox<doubflo> &box) const = 0;
+	virtual void transformGridToWorld(BoundingBox<real> &box) const = 0;
+	virtual void transformWorldToGrid(BoundingBox<real> &box) const = 0;
 
 };
 
diff --git a/src/GridGenerator/utilities/transformator/TransformatorImp.cpp b/src/GridGenerator/utilities/transformator/TransformatorImp.cpp
index 15cd03b89..b589c2206 100644
--- a/src/GridGenerator/utilities/transformator/TransformatorImp.cpp
+++ b/src/GridGenerator/utilities/transformator/TransformatorImp.cpp
@@ -15,12 +15,12 @@ TransformatorImp::TransformatorImp()
 	this->translater->z = 0;
 }
 
-TransformatorImp::TransformatorImp(doubflo delta, Vertex& translater) : delta(delta), translater(std::make_shared<Vertex>(translater))
+TransformatorImp::TransformatorImp(real delta, Vertex& translater) : delta(delta), translater(std::make_shared<Vertex>(translater))
 {
 	this->verifyDelta(delta);
 }
 
-TransformatorImp::TransformatorImp(doubflo delta, doubflo dx, doubflo dy, doubflo dz) : TransformatorImp(delta, Vertex(dx,dy,dz))
+TransformatorImp::TransformatorImp(real delta, real dx, real dy, real dz) : TransformatorImp(delta, Vertex(dx,dy,dz))
 {
 
 }
@@ -98,7 +98,7 @@ void TransformatorImp::translateGridToWorld(Vertex & value) const
 }
 
 
-void TransformatorImp::transformGridToWorld(BoundingBox<doubflo> &box) const
+void TransformatorImp::transformGridToWorld(BoundingBox<real> &box) const
 {
 	//scale
 	box.minX = (box.minX * this->delta);
@@ -119,7 +119,7 @@ void TransformatorImp::transformGridToWorld(BoundingBox<doubflo> &box) const
 	box.maxZ = (box.maxZ - this->translater->z);
 }
 
-void TransformatorImp::transformWorldToGrid(BoundingBox<doubflo> &box) const
+void TransformatorImp::transformWorldToGrid(BoundingBox<real> &box) const
 {
 	//translate
 	box.minX += this->translater->x;
@@ -141,7 +141,7 @@ void TransformatorImp::transformWorldToGrid(BoundingBox<doubflo> &box) const
 }
 
 
-void TransformatorImp::verifyDelta(doubflo delta) const
+void TransformatorImp::verifyDelta(real delta) const
 {
 	if (delta <= 0.0)
 		throw invalidDelta();
diff --git a/src/GridGenerator/utilities/transformator/TransformatorImp.h b/src/GridGenerator/utilities/transformator/TransformatorImp.h
index b60f4dfc5..8d2c4e001 100644
--- a/src/GridGenerator/utilities/transformator/TransformatorImp.h
+++ b/src/GridGenerator/utilities/transformator/TransformatorImp.h
@@ -30,8 +30,8 @@ class TransformatorImp
 public:
 	VF_PUBLIC TransformatorImp();
 	VF_PUBLIC TransformatorImp(const TransformatorImp& trafo);
-	VF_PUBLIC TransformatorImp(doubflo delta, Vertex& translater);
-	VF_PUBLIC TransformatorImp(doubflo delta, doubflo dx, doubflo dy, doubflo dz);
+	VF_PUBLIC TransformatorImp(real delta, Vertex& translater);
+	VF_PUBLIC TransformatorImp(real delta, real dx, real dy, real dz);
 	VF_PUBLIC virtual ~TransformatorImp();
 	
 	VF_PUBLIC void transformWorldToGrid(Triangle &value) const;
@@ -41,15 +41,15 @@ public:
     VF_PUBLIC void transformGridToWorld(Triangle &t) const;
 	VF_PUBLIC void transformGridToWorld(Vertex &value) const;
 
-	VF_PUBLIC void transformGridToWorld(BoundingBox<doubflo> &box) const;
-	VF_PUBLIC void transformWorldToGrid(BoundingBox<doubflo> &box) const;
+	VF_PUBLIC void transformGridToWorld(BoundingBox<real> &box) const;
+	VF_PUBLIC void transformWorldToGrid(BoundingBox<real> &box) const;
 
 	VF_PUBLIC bool operator==(const TransformatorImp& trafo) const;
 
 	VF_PUBLIC virtual void transformGridToWorld(std::shared_ptr<Arrow> arrow) const override;
 
 private:
-	doubflo delta;
+	real delta;
 	std::shared_ptr<Vertex> translater;
 
 	void scaleWorldToView(Vertex & v) const;
@@ -58,7 +58,7 @@ private:
 	void translateGridToWorld(Vertex & value) const;
 	void scaleGridToWorld(Vertex & value) const;
 
-	void verifyDelta(doubflo delta) const;
+	void verifyDelta(real delta) const;
 };
 
 
diff --git a/src/GridGenerator/utilities/transformator/TransformatorMocks.h b/src/GridGenerator/utilities/transformator/TransformatorMocks.h
index d42316004..020bf20f6 100644
--- a/src/GridGenerator/utilities/transformator/TransformatorMocks.h
+++ b/src/GridGenerator/utilities/transformator/TransformatorMocks.h
@@ -23,8 +23,8 @@ public:
 	virtual void transformWorldToView(Geometry &geom) const override {}
 	virtual void transformWorldToView(Vertex &value) const override {}
 	
-	virtual void transformViewToWorld(BoundingBox<doubflo> &box) const override {}
-	virtual void transformWorldToView(BoundingBox<doubflo> &box) const override {}
+	virtual void transformViewToWorld(BoundingBox<real> &box) const override {}
+	virtual void transformWorldToView(BoundingBox<real> &box) const override {}
 
 	virtual void transformViewToWorld(Vertex &value) const override { v = value; counter++; logString.append("transformViewToWorld "); }
 
diff --git a/src/GridGenerator/utilities/transformator/TransformatorTest.cpp b/src/GridGenerator/utilities/transformator/TransformatorTest.cpp
index 729b12ba4..f342218c5 100644
--- a/src/GridGenerator/utilities/transformator/TransformatorTest.cpp
+++ b/src/GridGenerator/utilities/transformator/TransformatorTest.cpp
@@ -17,7 +17,7 @@ public:
 	std::shared_ptr<Transformator> sut;
 	Vertex v;
 
-	doubflo delta;
+	real delta;
 	Vertex translater;
 
 	void SetUp() override 
@@ -30,17 +30,17 @@ public:
 
 void expectEqual(const Vertex& actual, const Vertex& expected)
 {
-	EXPECT_THAT(actual.x, FloatEq(expected.x));
-	EXPECT_THAT(actual.y, FloatEq(expected.y));
-	EXPECT_THAT(actual.z, FloatEq(expected.z));
+	EXPECT_THAT(actual.x, DoubleEq(expected.x));
+	EXPECT_THAT(actual.y, DoubleEq(expected.y));
+	EXPECT_THAT(actual.z, DoubleEq(expected.z));
 }
 
 TEST(TransformatorCopyConstructorTest, copyTransformatorShouldCreateSameTransformator)
 {
-	doubflo delta = 0.01f;
-	doubflo dx = 0.1f;
-	doubflo dy = 0.2f;
-	doubflo dz = 0.3f;
+	real delta = 0.01f;
+	real dx = 0.1f;
+	real dy = 0.2f;
+	real dz = 0.3f;
 	TransformatorImp trafoToCopy(delta, dx, dy, dz);
 
 	std::shared_ptr<TransformatorImp> sut = std::shared_ptr<TransformatorImp>(new TransformatorImp(trafoToCopy));
@@ -70,13 +70,13 @@ TEST_F(TransformatorTest, transformVectorToViewWithSmallDelta_ExpectVectorScales
 
 TEST_F(TransformatorTest, transformVectorWithNullDelta_ExpectExcpetion) 
 {
-    doubflo invalidDeltaValue = 0.0f;
+    real invalidDeltaValue = 0.0f;
     ASSERT_THROW(TransformatorImp trafo(invalidDeltaValue, Vertex(0, 0, 0)), invalidDelta);
 }
 
 TEST_F(TransformatorTest, transformVectorWithNegativeDelta_ExpectExcpetion)
 {
-    doubflo invalidDeltaValue = -1.0f;
+    real invalidDeltaValue = -1.0f;
     ASSERT_THROW(TransformatorImp trafo(invalidDeltaValue, Vertex(0, 0, 0)), invalidDelta);
 }
 
@@ -128,13 +128,13 @@ TEST_F(TransformatorTest, transformGeometryToView)
 	expectEqual(g.triangleVec[0].v3, expected);
 }
 
-TEST(TransformatorTestBoundingBox, transformDoubfloBoundingBoxToView)
+TEST(TransformatorTestBoundingBox, transformrealBoundingBoxToView)
 {
-	doubflo delta = 0.01f;
+	real delta = 0.01f;
 	Vertex translater = Vertex(-2.6f, 3434.0f, 0.1f);
 	std::shared_ptr<Transformator> sut = std::shared_ptr<Transformator>(new TransformatorImp(delta, translater));
 
-	BoundingBox<doubflo> box(0, 0, 0, 0, 0, 0);
+	BoundingBox<real> box(0, 0, 0, 0, 0, 0);
 
 	sut->transformWorldToGrid(box);
 
@@ -147,13 +147,13 @@ TEST(TransformatorTestBoundingBox, transformDoubfloBoundingBoxToView)
 	EXPECT_THAT(box.maxZ, Eq(translater.z * (1.0f / delta)));
 }
 
-TEST(TransformatorTestBoundingBox, transformDoubfloBoundingBoxToWorld)
+TEST(TransformatorTestBoundingBox, transformrealBoundingBoxToWorld)
 {
-	doubflo delta = 0.01f;
+	real delta = 0.01f;
 	Vertex translater = Vertex(-2.6f, 3434.0f, 0.1f);
 	std::shared_ptr<Transformator> sut = std::shared_ptr<Transformator>(new TransformatorImp(delta, translater));
 
-	BoundingBox<doubflo> box(0, 0, 0, 0, 0, 0);
+	BoundingBox<real> box(0, 0, 0, 0, 0, 0);
 
 	sut->transformGridToWorld(box);
 
@@ -172,24 +172,24 @@ TEST_F(TransformatorTest, transformArrowToWorld)
 	translater = Vertex(0, 0, 0);
 	std::shared_ptr<ArrowTransformator> sut = std::shared_ptr<ArrowTransformator>(new TransformatorImp(delta, translater));
 
-	doubflo x1 = 1.23f;
-	doubflo y1 = 2.23f;
-	doubflo z1 = 0.023f;
+	real x1 = 1.23f;
+	real y1 = 2.23f;
+	real z1 = 0.023f;
 
-	doubflo x2 = -1.23f;
-	doubflo y2 = 1.23f;
-	doubflo z2 = -0.20233f;
+	real x2 = -1.23f;
+	real y2 = 1.23f;
+	real z2 = -0.20233f;
 	auto v1 = std::shared_ptr<Vertex>(new Vertex(x1, y1, z1));
 	auto v2 = std::shared_ptr<Vertex>(new Vertex(x2, y2, z2));
 	auto arrow = ArrowStub::make(v1, v2);
 
 	sut->transformGridToWorld(arrow);
 
-	EXPECT_THAT(arrow->getStart()->x, FloatEq(x1 * delta - translater.x));
-	EXPECT_THAT(arrow->getStart()->y, FloatEq(y1 * delta - translater.y));
-	EXPECT_THAT(arrow->getStart()->z, FloatEq(z1 * delta - translater.z));
+	EXPECT_THAT(arrow->getStart()->x, DoubleEq(x1 * delta - translater.x));
+	EXPECT_THAT(arrow->getStart()->y, DoubleEq(y1 * delta - translater.y));
+	EXPECT_THAT(arrow->getStart()->z, DoubleEq(z1 * delta - translater.z));
 
-	EXPECT_THAT(arrow->getEnd()->x, FloatEq(x2 * delta - translater.x));
-	EXPECT_THAT(arrow->getEnd()->y, FloatEq(y2 * delta - translater.y));
-	EXPECT_THAT(arrow->getEnd()->z, FloatEq(z2 * delta - translater.z));
+	EXPECT_THAT(arrow->getEnd()->x, DoubleEq(x2 * delta - translater.x));
+	EXPECT_THAT(arrow->getEnd()->y, DoubleEq(y2 * delta - translater.y));
+	EXPECT_THAT(arrow->getEnd()->z, DoubleEq(z2 * delta - translater.z));
 }
diff --git a/src/GridGenerator/utilities/triangleNeighborFinder/TriangleNeighborFinder.cpp b/src/GridGenerator/utilities/triangleNeighborFinder/TriangleNeighborFinder.cpp
index 802a63d82..16bbecef0 100644
--- a/src/GridGenerator/utilities/triangleNeighborFinder/TriangleNeighborFinder.cpp
+++ b/src/GridGenerator/utilities/triangleNeighborFinder/TriangleNeighborFinder.cpp
@@ -12,8 +12,8 @@ struct IDS {
 
 int compare2DArrayAccordingToXYZ(const void *pa, const void *pb) {
 
-    doubflo *a = *((doubflo **)pa);
-    doubflo *b = *((doubflo **)pb);
+    real *a = *((real **)pa);
+    real *b = *((real **)pb);
 
     //compare X
     if (a[IDS::x] < b[IDS::x]) return -1;
@@ -33,8 +33,8 @@ int compare2DArrayAccordingToXYZ(const void *pa, const void *pb) {
 
 int compare2DArrayAccordingToIndex(const void *pa, const void *pb) {
 
-    doubflo *a = *((doubflo **)pa);
-    doubflo *b = *((doubflo **)pb);
+    real *a = *((real **)pa);
+    real *b = *((real **)pb);
 
     if (a[IDS::vertexID] < b[IDS::vertexID]) return -1;
     else if (a[IDS::vertexID] > b[IDS::vertexID]) return +1;
@@ -52,13 +52,13 @@ TriangleNeighborFinder::TriangleNeighborFinder(Triangle *triangles_ptr, int size
     this->fillSortedInSpaceWithFirstVertexAndCoordinateIDs(numberOfRows);
 
     //copy the array:
-    sortedToTriangles = new doubflo*[numberOfRows];
+    sortedToTriangles = new real*[numberOfRows];
     for (int i = 0; i < numberOfRows; i++) {
-        sortedToTriangles[i] = new doubflo[4];
+        sortedToTriangles[i] = new real[4];
         sortedToTriangles[i][IDS::vertexID] = sortedInSpace[i][IDS::vertexID];
         sortedToTriangles[i][IDS::firstVertexID] = sortedInSpace[i][IDS::firstVertexID];
         sortedToTriangles[i][IDS::coordinateID] = sortedInSpace[i][IDS::coordinateID];
-        sortedToTriangles[i][IDS::uniqueCoordID] = (doubflo)i;
+        sortedToTriangles[i][IDS::uniqueCoordID] = (real)i;
     }
 
     qsort(sortedToTriangles, numberOfRows, sizeof sortedToTriangles[0], compare2DArrayAccordingToIndex);
@@ -71,13 +71,13 @@ TriangleNeighborFinder::TriangleNeighborFinder(Triangle *triangles_ptr, int size
 
 void TriangleNeighborFinder::initalSortedInSpaceWithCoords(Triangle *triangles_ptr, int size)
 {
-    sortedInSpace = new doubflo*[numberOfRows];
+    sortedInSpace = new real*[numberOfRows];
 
     int vertexCounter = 0;
     int numberOfColumns = 6;
     for (int i = 0; i < size; i++){
-        sortedInSpace[vertexCounter] = new doubflo[numberOfColumns];
-        sortedInSpace[vertexCounter][IDS::vertexID] = (doubflo)vertexCounter;
+        sortedInSpace[vertexCounter] = new real[numberOfColumns];
+        sortedInSpace[vertexCounter][IDS::vertexID] = (real)vertexCounter;
         sortedInSpace[vertexCounter][IDS::firstVertexID] = 0.0f;                  
         sortedInSpace[vertexCounter][IDS::coordinateID]  = 0.0f;                   
         sortedInSpace[vertexCounter][IDS::x] = triangles_ptr[i].v1.x;
@@ -85,8 +85,8 @@ void TriangleNeighborFinder::initalSortedInSpaceWithCoords(Triangle *triangles_p
         sortedInSpace[vertexCounter][IDS::z] = triangles_ptr[i].v1.z;
 
         vertexCounter++;
-        sortedInSpace[vertexCounter] = new doubflo[numberOfColumns];
-        sortedInSpace[vertexCounter][IDS::vertexID]      = (doubflo)vertexCounter;
+        sortedInSpace[vertexCounter] = new real[numberOfColumns];
+        sortedInSpace[vertexCounter][IDS::vertexID]      = (real)vertexCounter;
         sortedInSpace[vertexCounter][IDS::firstVertexID] = 0.0f;
         sortedInSpace[vertexCounter][IDS::coordinateID]  = 0.0f;
         sortedInSpace[vertexCounter][IDS::x] = triangles_ptr[i].v2.x;
@@ -94,8 +94,8 @@ void TriangleNeighborFinder::initalSortedInSpaceWithCoords(Triangle *triangles_p
         sortedInSpace[vertexCounter][IDS::z] = triangles_ptr[i].v2.z;
 
         vertexCounter++;
-        sortedInSpace[vertexCounter] = new doubflo[numberOfColumns];
-        sortedInSpace[vertexCounter][IDS::vertexID]      = (doubflo)vertexCounter;
+        sortedInSpace[vertexCounter] = new real[numberOfColumns];
+        sortedInSpace[vertexCounter][IDS::vertexID]      = (real)vertexCounter;
         sortedInSpace[vertexCounter][IDS::firstVertexID] = 0.0f;
         sortedInSpace[vertexCounter][IDS::coordinateID]  = 0.0f;
         sortedInSpace[vertexCounter][IDS::x] = triangles_ptr[i].v3.x;
@@ -128,7 +128,7 @@ void TriangleNeighborFinder::fillSortedInSpaceWithFirstVertexAndCoordinateIDs(in
         while (a.getEuclideanDistanceTo(b) < 1e-7)
         {
             sortedInSpace[compareID][IDS::firstVertexID] = sortedInSpace[firstVertexID][0];
-            sortedInSpace[compareID][IDS::coordinateID] = (doubflo)coordinateID;
+            sortedInSpace[compareID][IDS::coordinateID] = (real)coordinateID;
             duplicates++;
             
             compareID++;
@@ -180,9 +180,9 @@ unsigned int TriangleNeighborFinder::findTriangleID(unsigned int uniqueCoordID)
 
 Vertex TriangleNeighborFinder::getCoordinatesIDfromTriangle(int triangleID)
 {
-    doubflo coordinateID1 = sortedToTriangles[triangleID * DIMENSION + 0][IDS::coordinateID];
-    doubflo coordinateID2 = sortedToTriangles[triangleID * DIMENSION + 1][IDS::coordinateID];
-    doubflo coordinateID3 = sortedToTriangles[triangleID * DIMENSION + 2][IDS::coordinateID];
+    real coordinateID1 = sortedToTriangles[triangleID * DIMENSION + 0][IDS::coordinateID];
+    real coordinateID2 = sortedToTriangles[triangleID * DIMENSION + 1][IDS::coordinateID];
+    real coordinateID3 = sortedToTriangles[triangleID * DIMENSION + 2][IDS::coordinateID];
     return Vertex(coordinateID1, coordinateID2, coordinateID3);
 }
 
diff --git a/src/GridGenerator/utilities/triangleNeighborFinder/TriangleNeighborFinder.h b/src/GridGenerator/utilities/triangleNeighborFinder/TriangleNeighborFinder.h
index a4a091666..a5e244b38 100644
--- a/src/GridGenerator/utilities/triangleNeighborFinder/TriangleNeighborFinder.h
+++ b/src/GridGenerator/utilities/triangleNeighborFinder/TriangleNeighborFinder.h
@@ -37,8 +37,8 @@ private:
     bool isTriangleNeighborOfParentTriangle(Vertex, Vertex);
 
     int numberOfRows;
-    doubflo **sortedToTriangles;
-    doubflo **sortedInSpace;
+    real **sortedToTriangles;
+    real **sortedInSpace;
 };
 
 #endif
diff --git a/src/GridGenerator/utilities/triangleNeighborFinder/TriangleNeighborFinderTest.cpp b/src/GridGenerator/utilities/triangleNeighborFinder/TriangleNeighborFinderTest.cpp
index 1674c67c5..da3f77ced 100644
--- a/src/GridGenerator/utilities/triangleNeighborFinder/TriangleNeighborFinderTest.cpp
+++ b/src/GridGenerator/utilities/triangleNeighborFinder/TriangleNeighborFinderTest.cpp
@@ -17,18 +17,18 @@ public:
     IntegerPtr2D indices;
 
     void SetUp() {
-		triangles.push_back(Triangle(Vertex((doubflo)0, (doubflo)1, (doubflo)1), Vertex((doubflo)0, (doubflo)1, (doubflo)0), Vertex((doubflo)0, (doubflo)0, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)0, (doubflo)1, (doubflo)0), Vertex((doubflo)0, (doubflo)0, (doubflo)0), Vertex((doubflo)0, (doubflo)0, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)1, (doubflo)1, (doubflo)1), Vertex((doubflo)1, (doubflo)1, (doubflo)0), Vertex((doubflo)0, (doubflo)1, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)1, (doubflo)1, (doubflo)0), Vertex((doubflo)0, (doubflo)1, (doubflo)0), Vertex((doubflo)0, (doubflo)1, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)1, (doubflo)0, (doubflo)1), Vertex((doubflo)1, (doubflo)0, (doubflo)0), Vertex((doubflo)1, (doubflo)1, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)1, (doubflo)0, (doubflo)0), Vertex((doubflo)1, (doubflo)1, (doubflo)0), Vertex((doubflo)1, (doubflo)1, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)0, (doubflo)0, (doubflo)1), Vertex((doubflo)0, (doubflo)0, (doubflo)0), Vertex((doubflo)1, (doubflo)0, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)0, (doubflo)0, (doubflo)0), Vertex((doubflo)1, (doubflo)0, (doubflo)0), Vertex((doubflo)1, (doubflo)0, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)1, (doubflo)1, (doubflo)1), Vertex((doubflo)0, (doubflo)1, (doubflo)1), Vertex((doubflo)1, (doubflo)0, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)0, (doubflo)1, (doubflo)1), Vertex((doubflo)0, (doubflo)0, (doubflo)1), Vertex((doubflo)1, (doubflo)0, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)0, (doubflo)1, (doubflo)0), Vertex((doubflo)1, (doubflo)1, (doubflo)0), Vertex((doubflo)0, (doubflo)0, (doubflo)0)));
-		triangles.push_back(Triangle(Vertex((doubflo)1, (doubflo)1, (doubflo)0), Vertex((doubflo)1, (doubflo)0, (doubflo)0), Vertex((doubflo)0, (doubflo)0, (doubflo)0)));
+		triangles.push_back(Triangle(Vertex((real)0, (real)1, (real)1), Vertex((real)0, (real)1, (real)0), Vertex((real)0, (real)0, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)0, (real)1, (real)0), Vertex((real)0, (real)0, (real)0), Vertex((real)0, (real)0, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)1, (real)1, (real)1), Vertex((real)1, (real)1, (real)0), Vertex((real)0, (real)1, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)1, (real)1, (real)0), Vertex((real)0, (real)1, (real)0), Vertex((real)0, (real)1, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)1, (real)0, (real)1), Vertex((real)1, (real)0, (real)0), Vertex((real)1, (real)1, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)1, (real)0, (real)0), Vertex((real)1, (real)1, (real)0), Vertex((real)1, (real)1, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)0, (real)0, (real)1), Vertex((real)0, (real)0, (real)0), Vertex((real)1, (real)0, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)0, (real)0, (real)0), Vertex((real)1, (real)0, (real)0), Vertex((real)1, (real)0, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)1, (real)1, (real)1), Vertex((real)0, (real)1, (real)1), Vertex((real)1, (real)0, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)0, (real)1, (real)1), Vertex((real)0, (real)0, (real)1), Vertex((real)1, (real)0, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)0, (real)1, (real)0), Vertex((real)1, (real)1, (real)0), Vertex((real)0, (real)0, (real)0)));
+		triangles.push_back(Triangle(Vertex((real)1, (real)1, (real)0), Vertex((real)1, (real)0, (real)0), Vertex((real)0, (real)0, (real)0)));
 
         finder = std::make_shared<TriangleNeighborFinder>(&triangles[0], (int)triangles.size());
         indices.size = (int) triangles.size();
diff --git a/src/GridGenerator/utilities/triangleRefinement/TriangleRefinement.cpp b/src/GridGenerator/utilities/triangleRefinement/TriangleRefinement.cpp
index 51ab91cf2..e21eb1561 100644
--- a/src/GridGenerator/utilities/triangleRefinement/TriangleRefinement.cpp
+++ b/src/GridGenerator/utilities/triangleRefinement/TriangleRefinement.cpp
@@ -173,11 +173,11 @@ void TriangleRefinement::refine(Triangle t, Triangle &firstNewTriangle, Triangle
 
 int TriangleRefinement::getEdgeWithLongestDistance(Triangle &t)
 {
-    doubflo d1 = t.v2.getEuclideanDistanceTo(t.v1);
-    doubflo d2 = t.v3.getEuclideanDistanceTo(t.v2);
-    doubflo d3 = t.v1.getEuclideanDistanceTo(t.v3);
+    real d1 = t.v2.getEuclideanDistanceTo(t.v1);
+    real d2 = t.v3.getEuclideanDistanceTo(t.v2);
+    real d3 = t.v1.getEuclideanDistanceTo(t.v3);
 
-    doubflo max = d1;
+    real max = d1;
     int edge = 0;
 
     if (d2 > d1) {
@@ -193,7 +193,7 @@ int TriangleRefinement::getEdgeWithLongestDistance(Triangle &t)
     return edge;
 }
 
-doubflo TriangleRefinement::getLongestEdgeDistance(Triangle &t) {
+real TriangleRefinement::getLongestEdgeDistance(Triangle &t) {
 
     int edge = getEdgeWithLongestDistance(t);
     Vertex v[3];
diff --git a/src/GridGenerator/utilities/triangleRefinement/TriangleRefinement.h b/src/GridGenerator/utilities/triangleRefinement/TriangleRefinement.h
index 2ba56ed5a..20ee86cf5 100644
--- a/src/GridGenerator/utilities/triangleRefinement/TriangleRefinement.h
+++ b/src/GridGenerator/utilities/triangleRefinement/TriangleRefinement.h
@@ -40,7 +40,7 @@ private:
 
 public:
     static int VF_PUBLIC getEdgeWithLongestDistance(Triangle &t);
-    static doubflo VF_PUBLIC getLongestEdgeDistance(Triangle &t);
+    static real VF_PUBLIC getLongestEdgeDistance(Triangle &t);
 };
 
 
diff --git a/src/GridGenerator/utilities/triangleRefinement/TriangleRefinementTest.cpp b/src/GridGenerator/utilities/triangleRefinement/TriangleRefinementTest.cpp
index 66cd52709..2b252d5e6 100644
--- a/src/GridGenerator/utilities/triangleRefinement/TriangleRefinementTest.cpp
+++ b/src/GridGenerator/utilities/triangleRefinement/TriangleRefinementTest.cpp
@@ -19,18 +19,18 @@ public:
     std::vector<Triangle> triangles;
 
     void SetUp() {
-		triangles.push_back(Triangle(Vertex((doubflo)0, (doubflo)1, (doubflo)1), Vertex((doubflo)0, (doubflo)1, (doubflo)0), Vertex((doubflo)0, (doubflo)0, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)0, (doubflo)1, (doubflo)0), Vertex((doubflo)0, (doubflo)0, (doubflo)0), Vertex((doubflo)0, (doubflo)0, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)1, (doubflo)1, (doubflo)1),Vertex((doubflo)1, (doubflo)1, (doubflo)0),Vertex((doubflo)0, (doubflo)1, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)1, (doubflo)1, (doubflo)0),Vertex((doubflo)0, (doubflo)1, (doubflo)0),Vertex((doubflo)0, (doubflo)1, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)1, (doubflo)0, (doubflo)1),Vertex((doubflo)1, (doubflo)0, (doubflo)0),Vertex((doubflo)1, (doubflo)1, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)1, (doubflo)0, (doubflo)0),Vertex((doubflo)1, (doubflo)1, (doubflo)0),Vertex((doubflo)1, (doubflo)1, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)0, (doubflo)0, (doubflo)1),Vertex((doubflo)0, (doubflo)0, (doubflo)0),Vertex((doubflo)1, (doubflo)0, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)0, (doubflo)0, (doubflo)0),Vertex((doubflo)1, (doubflo)0, (doubflo)0),Vertex((doubflo)1, (doubflo)0, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)1, (doubflo)1, (doubflo)1),Vertex((doubflo)0, (doubflo)1, (doubflo)1),Vertex((doubflo)1, (doubflo)0, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)0, (doubflo)1, (doubflo)1),Vertex((doubflo)0, (doubflo)0, (doubflo)1),Vertex((doubflo)1, (doubflo)0, (doubflo)1)));
-		triangles.push_back(Triangle(Vertex((doubflo)0, (doubflo)1, (doubflo)0),Vertex((doubflo)1, (doubflo)1, (doubflo)0),Vertex((doubflo)0, (doubflo)0, (doubflo)0)));
-		triangles.push_back(Triangle(Vertex((doubflo)1, (doubflo)1, (doubflo)0),Vertex((doubflo)1, (doubflo)0, (doubflo)0),Vertex((doubflo)0, (doubflo)0, (doubflo)0)));
+		triangles.push_back(Triangle(Vertex((real)0, (real)1, (real)1), Vertex((real)0, (real)1, (real)0), Vertex((real)0, (real)0, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)0, (real)1, (real)0), Vertex((real)0, (real)0, (real)0), Vertex((real)0, (real)0, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)1, (real)1, (real)1),Vertex((real)1, (real)1, (real)0),Vertex((real)0, (real)1, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)1, (real)1, (real)0),Vertex((real)0, (real)1, (real)0),Vertex((real)0, (real)1, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)1, (real)0, (real)1),Vertex((real)1, (real)0, (real)0),Vertex((real)1, (real)1, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)1, (real)0, (real)0),Vertex((real)1, (real)1, (real)0),Vertex((real)1, (real)1, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)0, (real)0, (real)1),Vertex((real)0, (real)0, (real)0),Vertex((real)1, (real)0, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)0, (real)0, (real)0),Vertex((real)1, (real)0, (real)0),Vertex((real)1, (real)0, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)1, (real)1, (real)1),Vertex((real)0, (real)1, (real)1),Vertex((real)1, (real)0, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)0, (real)1, (real)1),Vertex((real)0, (real)0, (real)1),Vertex((real)1, (real)0, (real)1)));
+		triangles.push_back(Triangle(Vertex((real)0, (real)1, (real)0),Vertex((real)1, (real)1, (real)0),Vertex((real)0, (real)0, (real)0)));
+		triangles.push_back(Triangle(Vertex((real)1, (real)1, (real)0),Vertex((real)1, (real)0, (real)0),Vertex((real)0, (real)0, (real)0)));
 
         refiner = std::make_shared<TriangleRefinement>(&triangles);
     }
@@ -88,7 +88,7 @@ TEST_F(TriangleRefinementTest, getLongestDistance){
 
     Triangle t = Triangle(Vertex(0, 0, 0), Vertex(10, 0, 0), Vertex(1, 1, 0), Vertex(0, 0, 0));
 
-    doubflo d = TriangleRefinement::getLongestEdgeDistance(t);
+    real d = TriangleRefinement::getLongestEdgeDistance(t);
     ASSERT_THAT((double)d, DoubleEq(10.0));
 }
 
diff --git a/src/VirtualFluids_GPU/Calculation/CalcMedian.cpp b/src/VirtualFluids_GPU/Calculation/CalcMedian.cpp
index 443bed691..b8f895060 100644
--- a/src/VirtualFluids_GPU/Calculation/CalcMedian.cpp
+++ b/src/VirtualFluids_GPU/Calculation/CalcMedian.cpp
@@ -9,11 +9,11 @@ void allocMedian(Parameter* para)
 		para->cudaAllocMedianOut(lev);
 		for (unsigned int i = 0; i < para->getParH(lev)->size_Mat_SP; i++)
 		{
-			para->getParH(lev)->vx_SP_Med_Out[i]    = (doubflo)0.0;
-			para->getParH(lev)->vy_SP_Med_Out[i]    = (doubflo)0.0;
-			para->getParH(lev)->vz_SP_Med_Out[i]    = (doubflo)0.0;
-			para->getParH(lev)->rho_SP_Med_Out[i]   = (doubflo)0.0;
-			para->getParH(lev)->press_SP_Med_Out[i] = (doubflo)0.0;
+			para->getParH(lev)->vx_SP_Med_Out[i]    = (real)0.0;
+			para->getParH(lev)->vy_SP_Med_Out[i]    = (real)0.0;
+			para->getParH(lev)->vz_SP_Med_Out[i]    = (real)0.0;
+			para->getParH(lev)->rho_SP_Med_Out[i]   = (real)0.0;
+			para->getParH(lev)->press_SP_Med_Out[i] = (real)0.0;
 		}
 	}
 }
@@ -28,11 +28,11 @@ void calcMedian(Parameter* para, unsigned int tdiff)
 	{
 		for (unsigned int i = 0; i < para->getParH(lev)->size_Mat_SP; i++)
 		{
-			para->getParH(lev)->vx_SP_Med_Out[i]    = para->getParH(lev)->vx_SP_Med[i]   / (doubflo)tdiff;
-			para->getParH(lev)->vy_SP_Med_Out[i]    = para->getParH(lev)->vy_SP_Med[i]   / (doubflo)tdiff;
-			para->getParH(lev)->vz_SP_Med_Out[i]    = para->getParH(lev)->vz_SP_Med[i]   / (doubflo)tdiff;
-			para->getParH(lev)->rho_SP_Med_Out[i]   = para->getParH(lev)->rho_SP_Med[i]  / (doubflo)tdiff;
-			para->getParH(lev)->press_SP_Med_Out[i] = para->getParH(lev)->press_SP_Med[i]/ (doubflo)tdiff;
+			para->getParH(lev)->vx_SP_Med_Out[i]    = para->getParH(lev)->vx_SP_Med[i]   / (real)tdiff;
+			para->getParH(lev)->vy_SP_Med_Out[i]    = para->getParH(lev)->vy_SP_Med[i]   / (real)tdiff;
+			para->getParH(lev)->vz_SP_Med_Out[i]    = para->getParH(lev)->vz_SP_Med[i]   / (real)tdiff;
+			para->getParH(lev)->rho_SP_Med_Out[i]   = para->getParH(lev)->rho_SP_Med[i]  / (real)tdiff;
+			para->getParH(lev)->press_SP_Med_Out[i] = para->getParH(lev)->press_SP_Med[i]/ (real)tdiff;
 		}
 	}
 }
diff --git a/src/VirtualFluids_GPU/Calculation/ForceCalculations.cpp b/src/VirtualFluids_GPU/Calculation/ForceCalculations.cpp
index 0f39435b1..a6b36d594 100644
--- a/src/VirtualFluids_GPU/Calculation/ForceCalculations.cpp
+++ b/src/VirtualFluids_GPU/Calculation/ForceCalculations.cpp
@@ -109,9 +109,9 @@ void ForceCalculations::calcPIDControllerForForce(Parameter* para)
 	 para->getForcesDouble()[1] = (para->getForcesDouble()[1] + y) * 0.0;
 	 para->getForcesDouble()[2] = (para->getForcesDouble()[2] + y) * 0.0;
 	 //////////////////////////////////////////////////////////////////////////
-	 para->getForcesHost()[0] = (doubflo)(para->getForcesHost()[0] + y);
-	 para->getForcesHost()[1] = (doubflo)(para->getForcesHost()[1] + y) * (doubflo)0.0;
-	 para->getForcesHost()[2] = (doubflo)(para->getForcesHost()[2] + y) * (doubflo)0.0;
+	 para->getForcesHost()[0] = (real)(para->getForcesHost()[0] + y);
+	 para->getForcesHost()[1] = (real)(para->getForcesHost()[1] + y) * (real)0.0;
+	 para->getForcesHost()[2] = (real)(para->getForcesHost()[2] + y) * (real)0.0;
 	 //////////////////////////////////////////////////////////////////////////
 	 para->cudaCopyForcingToDevice();
 	 //////////////////////////////////////////////////////////////////////////
diff --git a/src/VirtualFluids_GPU/Calculation/PlaneCalculations.cpp b/src/VirtualFluids_GPU/Calculation/PlaneCalculations.cpp
index 656a3f9f9..f0c928f6c 100644
--- a/src/VirtualFluids_GPU/Calculation/PlaneCalculations.cpp
+++ b/src/VirtualFluids_GPU/Calculation/PlaneCalculations.cpp
@@ -55,10 +55,10 @@ void calcPressure(Parameter* para, std::string inorout, int lev)
 {
 	unsigned int m   = para->getParH(lev)->startP;
    unsigned int anz = 0;
-	doubflo rho = 0.0f;
+	real rho = 0.0f;
 	double sumrho = 0.0, mrho = 0.0;
    double PressIn, PressOut;
-   doubflo dummyux = 0.0f, dummyuy = 0.0f, dummyuz = 0.0f;
+   real dummyux = 0.0f, dummyuy = 0.0f, dummyuz = 0.0f;
 
    for (unsigned int i = 0; i < para->getParH(lev)->sizePlanePress; i++)
    {
@@ -96,9 +96,9 @@ void calcFlowRate(Parameter* para, int lev)
 
    unsigned int anz = 0;
    double FlowRate = 0.0;
-   doubflo rho = 0.0f;
+   real rho = 0.0f;
    double sumvelo = 0.0, mvelo = 0.0;
-   doubflo dummyux = 0.0f, dummyuy = 0.0f, dummyuz = 0.0f;
+   real dummyux = 0.0f, dummyuy = 0.0f, dummyuz = 0.0f;
 
    for (unsigned int i = 0; i < sizePlane; i++)
    {
diff --git a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp
index 149a28d06..b3347a881 100644
--- a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp
+++ b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp
@@ -51,8 +51,8 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev
 			 // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			 // KernelKum1hSP27(    para->getParD(level)->numberofthreads,       
 				//				  para->getParD(level)->omega,
-				//				  (doubflo)0.0,
-				//				  (doubflo)0.0,
+				//				  (real)0.0,
+				//				  (real)0.0,
 				//				  para->getParD(level)->geoSP, 
 				//				  para->getParD(level)->neighborX_SP, 
 				//				  para->getParD(level)->neighborY_SP, 
@@ -69,7 +69,7 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev
 				//				para->getParD(level)->Qinflow.Vx,      para->getParD(level)->Qinflow.Vy,   para->getParD(level)->Qinflow.Vz,
 				//				para->getParD(level)->d0SP.f[0],       para->getParD(level)->Qinflow.k,    para->getParD(level)->Qinflow.q27[0], 
 				//				para->getParD(level)->kInflowQ,        para->getParD(level)->kInflowQ,     para->getParD(level)->omega,          
-				//				para->getPhi(),                        (doubflo)0.0,
+				//				para->getPhi(),                        (real)0.0,
 				//				para->getParD(level)->neighborX_SP,    para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP,
 				//				para->getParD(level)->coordX_SP,       para->getParD(level)->coordY_SP,    para->getParD(level)->coordZ_SP,
 				//				para->getParD(level)->size_Mat_SP,     para->getParD(level)->evenOrOdd);
@@ -941,8 +941,8 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev
 		  //else{
 			 // KernelKum1hSP27(    para->getParD(level)->numberofthreads,       
 				//				  para->getParD(level)->omega,
-				//				  (doubflo)0.0,
-				//				  (doubflo)0.0,
+				//				  (real)0.0,
+				//				  (real)0.0,
 				//				  para->getParD(level)->geoSP, 
 				//				  para->getParD(level)->neighborX_SP, 
 				//				  para->getParD(level)->neighborY_SP, 
@@ -959,7 +959,7 @@ void updateGrid27(Parameter* para, Communicator* comm, PorousMedia** pm, int lev
 				//				para->getParD(level)->Qinflow.Vx,      para->getParD(level)->Qinflow.Vy,   para->getParD(level)->Qinflow.Vz,
 				//				para->getParD(level)->d0SP.f[0],       para->getParD(level)->Qinflow.k,    para->getParD(level)->Qinflow.q27[0], 
 				//				para->getParD(level)->kInflowQ,        para->getParD(level)->kInflowQ,     para->getParD(level)->omega,          
-				//				para->getPhi(),                        (doubflo)0.0,
+				//				para->getPhi(),                        (real)0.0,
 				//				para->getParD(level)->neighborX_SP,    para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP,
 				//				para->getParD(level)->coordX_SP,       para->getParD(level)->coordY_SP,    para->getParD(level)->coordZ_SP,
 				//				para->getParD(level)->size_Mat_SP,     para->getParD(level)->evenOrOdd);
diff --git a/src/VirtualFluids_GPU/Communication/Communicator.cpp b/src/VirtualFluids_GPU/Communication/Communicator.cpp
index b2bef98e6..c094f3c77 100644
--- a/src/VirtualFluids_GPU/Communication/Communicator.cpp
+++ b/src/VirtualFluids_GPU/Communication/Communicator.cpp
@@ -75,7 +75,7 @@ void Communicator::exchngDataNB( float* sbuf_t, int count_st, float* rbuf_t, int
 }
 //////////////////////////////////////////////////////////////////////////
 //Crap by Martin Sch.
-void Communicator::exchngDataGPU( doubflo* sbuf, int count_s, doubflo* rbuf, int count_r, int nb_rank )
+void Communicator::exchngDataGPU( real* sbuf, int count_s, real* rbuf, int count_r, int nb_rank )
 {
 	MPI_Status MSstatus;
 	MPI_Send(sbuf, count_s, MPI_Type_GPU, nb_rank, 0, commGPU);
@@ -83,12 +83,12 @@ void Communicator::exchngDataGPU( doubflo* sbuf, int count_s, doubflo* rbuf, int
 	////test only - please don't use
 	//MPI_Sendrecv(sbuf, count_s, MPI_Type_GPU, nb_rank, 0, rbuf, count_r, MPI_Type_GPU, nb_rank, 0, comm1d, MPI_STATUSES_IGNORE);
 }
-void Communicator::sendRecvGPU( doubflo* sbuf, int count_s, doubflo* rbuf, int count_r, int nb_rank )
+void Communicator::sendRecvGPU( real* sbuf, int count_s, real* rbuf, int count_r, int nb_rank )
 {
 	//test only - please don't use
 	MPI_Sendrecv(sbuf, count_s, MPI_Type_GPU, nb_rank, 0, rbuf, count_r, MPI_Type_GPU, nb_rank, 0, commGPU, MPI_STATUSES_IGNORE);
 }
-void Communicator::nbRecvDataGPU( doubflo* rbuf, int count_r, int nb_rank )
+void Communicator::nbRecvDataGPU( real* rbuf, int count_r, int nb_rank )
 {
 	//printf("\n Start Recv Rank: %d, neighbor Rank: %d, request = %d \n", PID, nb_rank, (int)requestGPU.size());
 	//fflush(stdout);
@@ -100,7 +100,7 @@ void Communicator::nbRecvDataGPU( doubflo* rbuf, int count_r, int nb_rank )
 	//printf("\n End Recv - Rank: %d , neighbor Rank: %d \n", PID, nb_rank);  
 	//fflush(stdout);
 }
-void Communicator::nbSendDataGPU( doubflo* sbuf, int count_s, int nb_rank )
+void Communicator::nbSendDataGPU( real* sbuf, int count_s, int nb_rank )
 {
 	//printf("\n Start Send Rank: %d, neighbor Rank: %d, request = %d \n", PID, nb_rank, (int)requestGPU.size());
 	//fflush(stdout);
@@ -125,7 +125,7 @@ void Communicator::waitallGPU()
 	//printf("\n End Waitall \n");
 	//fflush(stdout);
 }
-void Communicator::sendDataGPU( doubflo* sbuf, int count_s, int nb_rank )
+void Communicator::sendDataGPU( real* sbuf, int count_s, int nb_rank )
 {
 	MPI_Send(sbuf, count_s, MPI_Type_GPU, nb_rank, 0, commGPU);
 }
diff --git a/src/VirtualFluids_GPU/Communication/Communicator.h b/src/VirtualFluids_GPU/Communication/Communicator.h
index 7ac01ac56..86a714e28 100644
--- a/src/VirtualFluids_GPU/Communication/Communicator.h
+++ b/src/VirtualFluids_GPU/Communication/Communicator.h
@@ -1,16 +1,17 @@
 #ifndef COMMUNICATOR_H
 #define COMMUNICATOR_H
 
-#include <mpi.h>
 #include <vector>
+
+#include <mpi.h>
+
+
 #include "LBM/LB.h"
 
 //////////////////////////////////
-#ifdef ISDOUBLE
+#ifdef VF_DOUBLE_ACCURACY
 #define MPI_Type_GPU  MPI_DOUBLE
-#endif
-//////////////////////////////////
-#ifdef ISFLOAT
+#else
 #define MPI_Type_GPU  MPI_FLOAT
 #endif
 //////////////////////////////////
@@ -33,12 +34,12 @@ public:
    void exchngData(float* sbuf_t, float* rbuf_t, float* sbuf_b, float* rbuf_b, int count);
    void exchngDataNB(float* sbuf_t, int count_st, float* rbuf_t, int count_rt, float* sbuf_b, int count_sb, float* rbuf_b, int count_rb);
    //////////////////////////////////////////////////////////////////////////
-   void exchngDataGPU(doubflo* sbuf, int count_s, doubflo* rbuf, int count_r, int nb_rank);
-   void sendRecvGPU(doubflo* sbuf, int count_s, doubflo* rbuf, int count_r, int nb_rank);
-   void nbRecvDataGPU( doubflo* rbuf, int count_r, int nb_rank );
-   void nbSendDataGPU( doubflo* sbuf, int count_s, int nb_rank );
+   void exchngDataGPU(real* sbuf, int count_s, real* rbuf, int count_r, int nb_rank);
+   void sendRecvGPU(real* sbuf, int count_s, real* rbuf, int count_r, int nb_rank);
+   void nbRecvDataGPU( real* rbuf, int count_r, int nb_rank );
+   void nbSendDataGPU( real* sbuf, int count_s, int nb_rank );
    void waitallGPU();
-   void sendDataGPU( doubflo* sbuf, int count_s, int nb_rank );
+   void sendDataGPU( real* sbuf, int count_s, int nb_rank );
    void waitGPU(int id);
    void resetRequest();
    void barrierGPU();
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp
index 91062bfd1..01b29f5cb 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp
@@ -23,9 +23,9 @@ void GridProvider::setNumberOfNodes(const int numberOfNodes, const int level) co
 {
 	para->getParH(level)->size_Mat_SP = numberOfNodes;
 	para->getParD(level)->size_Mat_SP = numberOfNodes;
-	para->getParH(level)->mem_size_doubflo_SP = sizeof(doubflo) * para->getParH(level)->size_Mat_SP;
+	para->getParH(level)->mem_size_real_SP = sizeof(real) * para->getParH(level)->size_Mat_SP;
 	para->getParH(level)->mem_size_int_SP = sizeof(unsigned int) * para->getParH(level)->size_Mat_SP;
-	para->getParD(level)->mem_size_doubflo_SP = sizeof(doubflo) * para->getParD(level)->size_Mat_SP;
+	para->getParD(level)->mem_size_real_SP = sizeof(real) * para->getParD(level)->size_Mat_SP;
 	para->getParD(level)->mem_size_int_SP = sizeof(unsigned int) * para->getParD(level)->size_Mat_SP;
 }
 
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h b/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h
index 935b9105a..d1d39e6fd 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h
@@ -5,13 +5,13 @@
 #include <vector>
 #include <memory>
 
-#include "VirtualFluids_GPU_EXPORT.h"
+#include <VirtualFluidsDefinitions.h>
 
 class Parameter;
 class GridBuilder;
 class CudaMemoryManager;
 
-class VirtualFluids_GPU_EXPORT GridProvider
+class VF_PUBLIC GridProvider
 {
 public:
     static std::shared_ptr<GridProvider> makeGridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para);
@@ -20,6 +20,7 @@ public:
 	virtual void allocArrays_CoordNeighborGeo() = 0;
 	virtual void allocArrays_BoundaryValues() = 0;
 	virtual void allocArrays_BoundaryQs() = 0;
+    virtual void allocArrays_OffsetScale() = 0;
 	virtual void setDimensions() = 0;
 	virtual void setBoundingBox() = 0;
 	virtual void initPeriodicNeigh(std::vector<std::vector<std::vector<unsigned int> > > periodV, std::vector<std::vector<unsigned int> > periodIndex, std::string way) = 0;
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryQs.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryQs.cpp
index a7e8543cc..e8a792b9e 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryQs.cpp
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryQs.cpp
@@ -102,7 +102,7 @@ void BoundaryQs::init_Binary()
 
 	std::string bufferString;
 	unsigned int bufferInt;
-	doubflo bufferDouble;
+	real bufferDouble;
 	uint32_t bufferUint32_t;
 
 	file >> maxLevel;
@@ -166,7 +166,7 @@ unsigned int BoundaryQs::getLevel()
 }
 
 
-void BoundaryQs::setValues(doubflo** q27, unsigned int level) const
+void BoundaryQs::setValues(real** q27, unsigned int level) const
 {
 	for (int column = 0; column < values[level].size(); column++)
 		for (int index = 0; index < values[level][column].size(); index++)
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryQs.h b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryQs.h
index bff763302..5392745a9 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryQs.h
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryQs.h
@@ -33,10 +33,10 @@ private:
 
 public:
 	void setIndex(int *indices, unsigned int level) const;
-	void setValues(doubflo** q27, unsigned int level) const;
+	void setValues(real** q27, unsigned int level) const;
 
 private:
-	std::vector< std::vector<std::vector<doubflo> > >values;
+	std::vector< std::vector<std::vector<real> > >values;
 	std::vector< std::vector<unsigned int> >indices;
 
 	std::ifstream file;
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryValues.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryValues.cpp
index a072d6cf7..14d356488 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryValues.cpp
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryValues.cpp
@@ -175,7 +175,7 @@ void BoundaryValues::resizeVectors()
 	indices.resize(maxLevel + 1);
 }
 
-void BoundaryValues::setBoundarys(std::vector<std::vector<std::vector<doubflo> > > &qs) const
+void BoundaryValues::setBoundarys(std::vector<std::vector<std::vector<real> > > &qs) const
 {
 	for (unsigned int level = 0; level < values.size(); level++)
 		for (unsigned int index = 0; index < values[level].size(); index++)
@@ -217,7 +217,7 @@ bool BoundaryValues::getProcNeighbor()
 }
 
 
-void BoundaryValues::setPressValues(doubflo *RhoBC, int* kN, int level) const
+void BoundaryValues::setPressValues(real *RhoBC, int* kN, int level) const
 {
 	for (int column = 0; column < values[level].size(); column++) {
 		for (int index = 0; index < values[level][column].size(); index++) {
@@ -227,7 +227,7 @@ void BoundaryValues::setPressValues(doubflo *RhoBC, int* kN, int level) const
 	}
 }
 
-void BoundaryValues::setVelocityValues(doubflo *vx, doubflo *vy, doubflo *vz, int level) const
+void BoundaryValues::setVelocityValues(real *vx, real *vy, real *vz, int level) const
 {
 	for (int column = 0; column < values[level].size(); column++) {
 		for (int index = 0; index < values[level][column].size(); index++) {
@@ -238,7 +238,7 @@ void BoundaryValues::setVelocityValues(doubflo *vx, doubflo *vy, doubflo *vz, in
 	}
 }
 
-void BoundaryValues::setOutflowValues(doubflo *RhoBC, int* kN, int level) const
+void BoundaryValues::setOutflowValues(real *RhoBC, int* kN, int level) const
 {
 	for (int column = 0; column < values[level].size(); column++) {
 		for (int index = 0; index < values[level][column].size(); index++) {
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryValues.h b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryValues.h
index 45758ac9a..22a398b73 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryValues.h
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryValues.h
@@ -16,7 +16,7 @@ private:
 	std::string boundaryCondition;
 	bool procNeighbor;
 
-	std::vector< std::vector<std::vector<doubflo> > >values;
+	std::vector< std::vector<std::vector<real> > >values;
 	std::vector< std::vector<unsigned int> >indices;
 	std::vector<unsigned int> levelSizes;
 
@@ -32,15 +32,15 @@ public:
 	unsigned int getLevel();
 	unsigned int getSize(unsigned int level);
 	std::string getBoundaryCondition();
-	void setBoundarys(std::vector<std::vector<std::vector<doubflo> > > &qs) const;
+	void setBoundarys(std::vector<std::vector<std::vector<real> > > &qs) const;
 	void initIndex(/*unsigned*/ int *ptr, unsigned int level);
 
 	void setProcNeighbor(bool pN);
 	bool getProcNeighbor();
 
-	void setPressValues(doubflo *RhoBC, int* kN, int level) const;
-	void setVelocityValues(doubflo *vx, doubflo *vy, doubflo *vz, int level) const;
-	void setOutflowValues(doubflo *RhoBC, int* kN, int level) const;
+	void setPressValues(real *RhoBC, int* kN, int level) const;
+	void setVelocityValues(real *vx, real *vy, real *vz, int level) const;
+	void setOutflowValues(real *RhoBC, int* kN, int level) const;
 
 private:
 	void init();
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.cpp
index 7f6cea2f8..232fb13f8 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.cpp
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.cpp
@@ -115,7 +115,7 @@ void CoordNeighborGeoV::readCoordinates(unsigned int level)
 	for (unsigned int j = 0; j < levelSizes[level]; j++)
 	{
 		file.read((char*)&bufferDouble, sizeof(double));
-		coordinates[level][j + 1] = (doubflo)bufferDouble;
+		coordinates[level][j + 1] = (real)bufferDouble;
 	}
 }
 
@@ -143,7 +143,7 @@ void CoordNeighborGeoV::setVec(unsigned int level, std::vector<unsigned int> vec
 }
 
 
-void CoordNeighborGeoV::initalCoords(doubflo *data, unsigned int level) const
+void CoordNeighborGeoV::initalCoords(real *data, unsigned int level) const
 {
 	for (int index = 0; index < coordinates[level].size(); index++)
 		data[index] = coordinates[level][index];
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.h b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.h
index 9620c515f..4de581a2c 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.h
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.h
@@ -14,7 +14,7 @@ protected:
 	unsigned int maxLevel; 
 	std::vector<unsigned int> levelSizes;
 	std::vector< std::vector<unsigned int> > neighbors;
-	std::vector< std::vector< doubflo> > coordinates; 
+	std::vector< std::vector< real> > coordinates; 
 
 public:
 	CoordNeighborGeoV();
@@ -30,9 +30,9 @@ public:
 	void setVec(unsigned int level, std::vector<unsigned int> vec);
 
 	void initalNeighbors(unsigned int *int_ptr, unsigned int level ) const;
-	void initalCoords(doubflo *int_ptr, unsigned int level ) const;
+	void initalCoords(real *int_ptr, unsigned int level ) const;
 
-private:
+protected:
 	void skipSpace();
 	void readLevelSize(unsigned int level);
 	void readNeighbors(unsigned int level);
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp
index 30f0ac138..a63aaab05 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp
@@ -9,6 +9,7 @@
 #include "BoundaryValues.h"
 
 #include <GPU/CudaMemoryManager.h>
+#include "OffsetScale.h"
 
 GridReader::GridReader(bool binaer, std::shared_ptr<Parameter> para)
 {
@@ -101,6 +102,84 @@ void GridReader::allocArrays_BoundaryValues()
 	initalValuesDomainDecompostion(level);
 }
 
+void GridReader::allocArrays_OffsetScale()
+{
+    cout << "-----Config Arrays OffsetScale------" << endl;
+    OffsetScale *obj_offCF = new OffsetScale(para->getscaleOffsetCF(), true);
+    OffsetScale *obj_offFC = new OffsetScale(para->getscaleOffsetFC(), true);
+    OffsetScale *obj_scaleCFC = new OffsetScale(para->getscaleCFC(), false);
+    OffsetScale *obj_scaleCFF = new OffsetScale(para->getscaleCFF(), false);
+    OffsetScale *obj_scaleFCC = new OffsetScale(para->getscaleFCC(), false);
+    OffsetScale *obj_scaleFCF = new OffsetScale(para->getscaleFCF(), false);
+
+    int level = obj_offCF->getLevel();
+
+    int AnzahlKnotenGesCF = 0;
+    int AnzahlKnotenGesFC = 0;
+
+    for (int i = 0; i<level; i++) {
+        unsigned int tempCF = obj_offCF->getSize(i);
+        cout << "Groesse der Daten CF vom Level " << i << " : " << tempCF << endl;
+        unsigned int tempFC = obj_offFC->getSize(i);
+        cout << "Groesse der Daten FC vom Level " << i << " : " << tempFC << endl;
+
+        AnzahlKnotenGesCF += tempCF;
+        AnzahlKnotenGesFC += tempFC;
+
+        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+        //size + memsize CF
+        para->getParH(i)->K_CF = tempCF;
+        para->getParD(i)->K_CF = para->getParH(i)->K_CF;
+        para->getParH(i)->intCF.kCF = para->getParH(i)->K_CF;
+        para->getParD(i)->intCF.kCF = para->getParH(i)->K_CF;
+        para->getParH(i)->mem_size_kCF = sizeof(unsigned int)* para->getParH(i)->K_CF;
+        para->getParD(i)->mem_size_kCF = sizeof(unsigned int)* para->getParD(i)->K_CF;
+        para->getParH(i)->mem_size_kCF_off = sizeof(real)* para->getParH(i)->K_CF;
+        para->getParD(i)->mem_size_kCF_off = sizeof(real)* para->getParD(i)->K_CF;
+        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+        //size + memsize FC
+        para->getParH(i)->K_FC = tempFC;
+        para->getParD(i)->K_FC = para->getParH(i)->K_FC;
+        para->getParH(i)->intFC.kFC = para->getParH(i)->K_FC;
+        para->getParD(i)->intFC.kFC = para->getParH(i)->K_FC;
+        para->getParH(i)->mem_size_kFC = sizeof(unsigned int)* para->getParH(i)->K_FC;
+        para->getParD(i)->mem_size_kFC = sizeof(unsigned int)* para->getParD(i)->K_FC;
+        para->getParH(i)->mem_size_kFC_off = sizeof(real)* para->getParH(i)->K_FC;
+        para->getParD(i)->mem_size_kFC_off = sizeof(real)* para->getParD(i)->K_FC;
+        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+        //alloc
+        para->cudaAllocInterfaceCF(i);
+        para->cudaAllocInterfaceFC(i);
+        para->cudaAllocInterfaceOffCF(i);
+        para->cudaAllocInterfaceOffFC(i);
+        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+        //init
+        obj_offCF->initArrayOffset(para->getParH(i)->offCF.xOffCF, para->getParH(i)->offCF.yOffCF, para->getParH(i)->offCF.zOffCF, i);
+        obj_offFC->initArrayOffset(para->getParH(i)->offFC.xOffFC, para->getParH(i)->offFC.yOffFC, para->getParH(i)->offFC.zOffFC, i);
+        obj_scaleCFC->initScale(para->getParH(i)->intCF.ICellCFC, i);
+        obj_scaleCFF->initScale(para->getParH(i)->intCF.ICellCFF, i);
+        obj_scaleFCC->initScale(para->getParH(i)->intFC.ICellFCC, i);
+        obj_scaleFCF->initScale(para->getParH(i)->intFC.ICellFCF, i);
+        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+        //copy
+        para->cudaCopyInterfaceCF(i);
+        para->cudaCopyInterfaceFC(i);
+        para->cudaCopyInterfaceOffCF(i);
+        para->cudaCopyInterfaceOffFC(i);
+        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    }
+    cout << "Gesamtanzahl Knoten CF = " << AnzahlKnotenGesCF << endl;
+    cout << "Gesamtanzahl Knoten FC = " << AnzahlKnotenGesFC << endl;
+
+    delete obj_offCF;
+    delete obj_offFC;
+    delete obj_scaleCFC;
+    delete obj_scaleCFF;
+    delete obj_scaleFCC;
+    delete obj_scaleFCF;
+    cout << "-----Ende OffsetScale------" << endl;
+}
+
 
 void GridReader::setPressureValues(int channelSide) const
 {
@@ -185,7 +264,7 @@ void GridReader::setOutflow(int level, int sizePerLevel, int channelSide) const
 {
 	BC_Values[channelSide]->setOutflowValues(para->getParH(level)->Qoutflow.RhoBC, para->getParH(level)->Qoutflow.kN, level);
 	for (int index = 0; index < sizePerLevel; index++)
-		para->getParH(level)->Qoutflow.RhoBC[index] = (para->getParH(level)->Qoutflow.RhoBC[index] / para->getFactorPressBC()) * (doubflo)0.0;
+		para->getParH(level)->Qoutflow.RhoBC[index] = (para->getParH(level)->Qoutflow.RhoBC[index] / para->getFactorPressBC()) * (real)0.0;
 }
 
 
@@ -257,8 +336,8 @@ void GridReader::initalValuesDomainDecompostion(int level)
 					para->getParD(i)->sendProcessNeighborX[j].numberOfFs = para->getD3Qxx() * tempSend;
 					para->getParH(i)->sendProcessNeighborX[j].memsizeIndex = sizeof(unsigned int)*tempSend;
 					para->getParD(i)->sendProcessNeighborX[j].memsizeIndex = sizeof(unsigned int)*tempSend;
-					para->getParH(i)->sendProcessNeighborX[j].memsizeFs = sizeof(doubflo)     *tempSend;
-					para->getParD(i)->sendProcessNeighborX[j].memsizeFs = sizeof(doubflo)     *tempSend;
+					para->getParH(i)->sendProcessNeighborX[j].memsizeFs = sizeof(real)     *tempSend;
+					para->getParD(i)->sendProcessNeighborX[j].memsizeFs = sizeof(real)     *tempSend;
 					////////////////////////////////////////////////////////////////////////////////////////
 					//recv
 					std::cout << "size of Data for X receive buffer, Level " << i << " : " << tempRecv << std::endl;
@@ -272,8 +351,8 @@ void GridReader::initalValuesDomainDecompostion(int level)
 					para->getParD(i)->recvProcessNeighborX[j].numberOfFs = para->getD3Qxx() * tempRecv;
 					para->getParH(i)->recvProcessNeighborX[j].memsizeIndex = sizeof(unsigned int)*tempRecv;
 					para->getParD(i)->recvProcessNeighborX[j].memsizeIndex = sizeof(unsigned int)*tempRecv;
-					para->getParH(i)->recvProcessNeighborX[j].memsizeFs = sizeof(doubflo)     *tempRecv;
-					para->getParD(i)->recvProcessNeighborX[j].memsizeFs = sizeof(doubflo)     *tempRecv;
+					para->getParH(i)->recvProcessNeighborX[j].memsizeFs = sizeof(real)     *tempRecv;
+					para->getParD(i)->recvProcessNeighborX[j].memsizeFs = sizeof(real)     *tempRecv;
 					////////////////////////////////////////////////////////////////////////////////////////
 					//malloc on host and device
                     cudaMemoryManager->cudaAllocProcessNeighborX(i, j);
@@ -313,8 +392,8 @@ void GridReader::initalValuesDomainDecompostion(int level)
 					para->getParD(i)->sendProcessNeighborY[j].numberOfFs = para->getD3Qxx() * tempSend;
 					para->getParH(i)->sendProcessNeighborY[j].memsizeIndex = sizeof(unsigned int)*tempSend;
 					para->getParD(i)->sendProcessNeighborY[j].memsizeIndex = sizeof(unsigned int)*tempSend;
-					para->getParH(i)->sendProcessNeighborY[j].memsizeFs = sizeof(doubflo)     *tempSend;
-					para->getParD(i)->sendProcessNeighborY[j].memsizeFs = sizeof(doubflo)     *tempSend;
+					para->getParH(i)->sendProcessNeighborY[j].memsizeFs = sizeof(real)     *tempSend;
+					para->getParD(i)->sendProcessNeighborY[j].memsizeFs = sizeof(real)     *tempSend;
 					////////////////////////////////////////////////////////////////////////////////////////
 					//recv
 					std::cout << "size of Data for Y receive buffer, Level " << i << " : " << tempRecv << std::endl;
@@ -328,8 +407,8 @@ void GridReader::initalValuesDomainDecompostion(int level)
 					para->getParD(i)->recvProcessNeighborY[j].numberOfFs = para->getD3Qxx() * tempRecv;
 					para->getParH(i)->recvProcessNeighborY[j].memsizeIndex = sizeof(unsigned int)*tempRecv;
 					para->getParD(i)->recvProcessNeighborY[j].memsizeIndex = sizeof(unsigned int)*tempRecv;
-					para->getParH(i)->recvProcessNeighborY[j].memsizeFs = sizeof(doubflo)     *tempRecv;
-					para->getParD(i)->recvProcessNeighborY[j].memsizeFs = sizeof(doubflo)     *tempRecv;
+					para->getParH(i)->recvProcessNeighborY[j].memsizeFs = sizeof(real)     *tempRecv;
+					para->getParD(i)->recvProcessNeighborY[j].memsizeFs = sizeof(real)     *tempRecv;
 					////////////////////////////////////////////////////////////////////////////////////////
 					//malloc on host and device
                     cudaMemoryManager->cudaAllocProcessNeighborY(i, j);
@@ -369,8 +448,8 @@ void GridReader::initalValuesDomainDecompostion(int level)
 					para->getParD(i)->sendProcessNeighborZ[j].numberOfFs = para->getD3Qxx() * tempSend;
 					para->getParH(i)->sendProcessNeighborZ[j].memsizeIndex = sizeof(unsigned int)*tempSend;
 					para->getParD(i)->sendProcessNeighborZ[j].memsizeIndex = sizeof(unsigned int)*tempSend;
-					para->getParH(i)->sendProcessNeighborZ[j].memsizeFs = sizeof(doubflo)     *tempSend;
-					para->getParD(i)->sendProcessNeighborZ[j].memsizeFs = sizeof(doubflo)     *tempSend;
+					para->getParH(i)->sendProcessNeighborZ[j].memsizeFs = sizeof(real)     *tempSend;
+					para->getParD(i)->sendProcessNeighborZ[j].memsizeFs = sizeof(real)     *tempSend;
 					////////////////////////////////////////////////////////////////////////////////////////
 					//recv
 					std::cout << "size of Data for Z receive buffer, Level " << i << " : " << tempRecv << std::endl;
@@ -384,8 +463,8 @@ void GridReader::initalValuesDomainDecompostion(int level)
 					para->getParD(i)->recvProcessNeighborZ[j].numberOfFs = para->getD3Qxx() * tempRecv;
 					para->getParH(i)->recvProcessNeighborZ[j].memsizeIndex = sizeof(unsigned int)*tempRecv;
 					para->getParD(i)->recvProcessNeighborZ[j].memsizeIndex = sizeof(unsigned int)*tempRecv;
-					para->getParH(i)->recvProcessNeighborZ[j].memsizeFs = sizeof(doubflo)     *tempRecv;
-					para->getParD(i)->recvProcessNeighborZ[j].memsizeFs = sizeof(doubflo)     *tempRecv;
+					para->getParH(i)->recvProcessNeighborZ[j].memsizeFs = sizeof(real)     *tempRecv;
+					para->getParD(i)->recvProcessNeighborZ[j].memsizeFs = sizeof(real)     *tempRecv;
 					////////////////////////////////////////////////////////////////////////////////////////
 					//malloc on host and device
                     cudaMemoryManager->cudaAllocProcessNeighborZ(i, j);
@@ -501,7 +580,7 @@ void GridReader::setGeoQs(std::shared_ptr<BoundaryQs> boundaryQ) const
 void GridReader::modifyQElement(std::shared_ptr<BoundaryQs> boundaryQ, unsigned int level) const
 {
 	QforBoundaryConditions Q;
-	doubflo* QQ = para->getParH(level)->QGeom.q27[0];
+	real* QQ = para->getParH(level)->QGeom.q27[0];
 	Q.q27[dirZERO] = &QQ[dirZERO * para->getParH(level)->QGeom.kQ];
 	for (unsigned int i = 0; i < boundaryQ->getSize(level); i++)
 		Q.q27[dirZERO][i] = 0.0f;
@@ -523,7 +602,7 @@ bool GridReader::hasQs(std::shared_ptr<BoundaryQs> boundaryQ, unsigned int level
 	return boundaryQ->getSize(level) > 0;
 }
 
-void GridReader::setQ27Size(QforBoundaryConditions &Q, doubflo* QQ, unsigned int sizeQ) const
+void GridReader::setQ27Size(QforBoundaryConditions &Q, real* QQ, unsigned int sizeQ) const
 {
 	Q.q27[dirE] = &QQ[dirE   *sizeQ];
 	Q.q27[dirW] = &QQ[dirW   *sizeQ];
@@ -614,22 +693,22 @@ void GridReader::setBoundingBox()
 		std::cerr << "can't open file LBMvsSI" << std::endl;
 		exit(1);
 	}
-	doubflo bufferDoubflo;
-	std::vector<doubflo> minX, maxX, minY, maxY, minZ, maxZ;
+	real bufferreal;
+	std::vector<real> minX, maxX, minY, maxY, minZ, maxZ;
 
 	for (int i = 0; i <= para->getMaxLevel(); i++) {
-		numberNodes >> bufferDoubflo;
-		minX.push_back(bufferDoubflo);
-		numberNodes >> bufferDoubflo;
-		minY.push_back(bufferDoubflo);
-		numberNodes >> bufferDoubflo;
-		minZ.push_back(bufferDoubflo);
-		numberNodes >> bufferDoubflo;
-		maxX.push_back(bufferDoubflo);
-		numberNodes >> bufferDoubflo;
-		maxY.push_back(bufferDoubflo);
-		numberNodes >> bufferDoubflo;
-		maxZ.push_back(bufferDoubflo);
+		numberNodes >> bufferreal;
+		minX.push_back(bufferreal);
+		numberNodes >> bufferreal;
+		minY.push_back(bufferreal);
+		numberNodes >> bufferreal;
+		minZ.push_back(bufferreal);
+		numberNodes >> bufferreal;
+		maxX.push_back(bufferreal);
+		numberNodes >> bufferreal;
+		maxY.push_back(bufferreal);
+		numberNodes >> bufferreal;
+		maxZ.push_back(bufferreal);
 	}
 	para->setMinCoordX(minX);
 	para->setMinCoordY(minY);
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h
index 0928d1430..6f6c438ab 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h
@@ -1,7 +1,7 @@
 #ifndef GridReaderFiles_H
 #define GridReaderFiles_H
 
-#include "VirtualFluids_GPU_EXPORT.h"
+#include <VirtualFluidsDefinitions.h>
 
 #include "../GridProvider.h"
 
@@ -27,16 +27,17 @@ private:
 	std::vector<std::shared_ptr<BoundaryValues> > BC_Values;
 
 public:
-	VirtualFluids_GPU_EXPORT GridReader(bool binaer, std::shared_ptr<Parameter> para);
-	VirtualFluids_GPU_EXPORT ~GridReader();
-	void allocArrays_CoordNeighborGeo();
-	void allocArrays_BoundaryValues();
+	VF_PUBLIC GridReader(bool binaer, std::shared_ptr<Parameter> para);
+    VF_PUBLIC ~GridReader();
+	void allocArrays_CoordNeighborGeo()override;
+	void allocArrays_BoundaryValues()override;
+    void allocArrays_OffsetScale() override;
 
 	void initalValuesDomainDecompostion(int level);
 
 	void setChannelBoundaryCondition();
 
-	void allocArrays_BoundaryQs();
+	void allocArrays_BoundaryQs()override;
 	bool getBinaer();
 	void setDimensions();
 	void setBoundingBox();
@@ -67,9 +68,8 @@ private:
 	void printQSize(std::string bc, std::shared_ptr<BoundaryQs> boundaryQ, unsigned int level) const;
 	void setSizeNoSlip(std::shared_ptr<BoundaryQs> boundaryQ, unsigned int level) const;
 	void setSizeGeoQs(std::shared_ptr<BoundaryQs> boundaryQ, unsigned int level) const;
-	void setQ27Size(QforBoundaryConditions &Q, doubflo* QQ, unsigned int sizeQ) const;
+	void setQ27Size(QforBoundaryConditions &Q, real* QQ, unsigned int sizeQ) const;
 	bool hasQs(std::shared_ptr<BoundaryQs> boundaryQ, unsigned int level) const;
-
 };
 
 #endif
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/MeasuredPoints.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/MeasuredPoints.cpp
new file mode 100644
index 000000000..358cbc74b
--- /dev/null
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/MeasuredPoints.cpp
@@ -0,0 +1,61 @@
+#include "MeasuredPoints.h"
+#include <stdlib.h>
+#include <iostream>
+
+using namespace std;
+
+MeasuredPoints::MeasuredPoints(void)
+{
+}
+
+MeasuredPoints::MeasuredPoints(std::string ad){
+	file.open(ad.c_str(), ios::in | ios::binary);
+
+	if (!file) {
+		cerr << "Fehler beim Oeffnen Measured Points" <<endl;
+			exit(1);
+	}
+
+	this->init();		
+
+}
+
+MeasuredPoints::~MeasuredPoints(void)
+{
+}
+
+
+
+
+void MeasuredPoints::init() {
+	
+	string bufferString;
+	unsigned int bufferInt;
+
+	getline(file,bufferString);
+    readLevel();
+
+	this->levelSizes.resize(maxLevel);
+	this->points.resize(maxLevel);
+
+	for (int i=0; i<maxLevel;i++) {
+		getline(file,bufferString);
+		bufferInt = atoi(bufferString.c_str()); 
+
+		this->levelSizes[i]=bufferInt;
+
+		this->points[i].resize(levelSizes[i]);
+		if(levelSizes[i] != 0) {
+			for ( int j=0; j<levelSizes[i]; j++) {
+				getline(file,bufferString);
+				bufferInt = atoi(bufferString.c_str()); 
+				this->points[i][j]=bufferInt;
+			}
+		}
+
+
+	}
+
+
+
+}
\ No newline at end of file
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/MeasuredPoints.h b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/MeasuredPoints.h
new file mode 100644
index 000000000..3c15040ad
--- /dev/null
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/MeasuredPoints.h
@@ -0,0 +1,23 @@
+#pragma once
+
+#include <string>
+#include <vector>
+
+#include "CoordNeighborGeoV.h"
+
+
+class MeasuredPoints 
+	: public CoordNeighborGeoV 
+{
+private:
+    std::vector< std::vector<unsigned int> > points;
+
+public:
+	MeasuredPoints();
+	MeasuredPoints(std::string ad);
+	~MeasuredPoints();
+
+	void init();
+
+};
+
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/OffsetScale.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/OffsetScale.cpp
new file mode 100644
index 000000000..9933dea75
--- /dev/null
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/OffsetScale.cpp
@@ -0,0 +1,138 @@
+#include "OffsetScale.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <iostream>
+
+using namespace std;
+
+OffsetScale::OffsetScale(string ad, bool off)
+{
+	file.open(ad.c_str(), ios::in);
+
+	if (!file) {
+		cerr << "Fehler beim Oeffnen" <<endl;
+			exit(1);
+	}
+	if(off==true){
+		initOffset();
+	}else {
+		init();
+	}
+}
+OffsetScale::~OffsetScale(void)
+{
+	file.close();
+}
+
+void OffsetScale::init() {
+	//Level aus der ersten Zeile wird ausgelesen
+	string buffer;
+	unsigned int bufferInt;
+
+    this->readLevel();
+
+	//Schleife zum Einlesen der Levelgroessen
+	for(unsigned int i=1; i<= maxLevel; i++) {
+		getline(file,buffer);
+		unsigned int bufferInt = atoi(buffer.c_str()); //eingelesene Zeile wird zum Integer gecastet
+        levelSizes.push_back(bufferInt);
+		getline(file,buffer); //die Zeile mit den Koordinaten muss uebersprungen werden
+	}
+	
+	file.clear();
+	file.seekg (0, ios::beg); // file wird wieder auf den Anfang gesetzt
+	getline(file,buffer); //level wird ignoriert
+
+
+	//einlesen der Werte
+    scale.resize(maxLevel +1);
+	for(unsigned lvl = 0; lvl < maxLevel; lvl++){/////////////Unterschied zu CoordNeighborGeoV:  < statt <=//////////////////////
+		getline(file,buffer); // Groesse ignorieren
+		for (unsigned int i = 0; i < levelSizes[lvl]; i++)/////////////Unterschied zu CoordNeighborGeoV:  < statt <=//////////////////////
+		{
+			file >> bufferInt;
+            scale[lvl].push_back(bufferInt);
+		}
+		getline(file, buffer);
+	}
+}
+
+void OffsetScale::initOffset() {
+	file.clear();
+	file.seekg (0, ios::beg); // file wird wieder auf den Anfang gesetzt
+	//Level aus der ersten Zeile wird ausgelesen
+	string buffer;
+	real bufferDouble;
+
+    this->readLevel();
+
+	//Schleife zum Einlesen der Levelgroessen
+	for(unsigned int i=1; i<= maxLevel; i++) {
+		getline(file,buffer);
+		unsigned int bufferInt = atoi(buffer.c_str()); //eingelesene Zeile wird zum Integer gecastet
+        levelSizes.push_back(bufferInt);
+		getline(file,buffer); //die Zeile mit den Koordinaten muss uebersprungen werden
+	}
+	
+	file.seekg (0, ios::beg); // file wird wieder auf den Anfang gesetzt
+	getline(file,buffer); //level wird ignoriert
+
+	//einlesen der werte
+	vec2D_dataOffset.resize(maxLevel +1);
+	for(unsigned lvl = 0; lvl < maxLevel; lvl++){/////////////Unterschied zu CoordNeighborGeoV:  < statt <=//////////////////////
+		getline(file,buffer); // Groesse ignorieren
+		for (unsigned int i = 0; i < levelSizes[lvl]*3; i++)/////////////Unterschied zu CoordNeighborGeoV:  < statt <=//////////////////////
+														  /////////////Unterschied zu Scale:  vec_Size[lvl]*3       //////////////////////
+		{
+			file >> bufferDouble;
+			vec2D_dataOffset[lvl].push_back(bufferDouble);
+		}
+		getline(file, buffer);
+	}
+}
+
+
+void OffsetScale::initArrayOffset(real *x_ptr,real *y_ptr,real *z_ptr, unsigned int level) {
+	
+	int zaehler=0;
+	int n=0;
+	int x_help=0;
+	int y_help=1;
+	int z_help=2;
+	int x=0;
+	int y=0;
+	int z=0;
+
+	if (x_ptr != NULL && y_ptr !=NULL && z_ptr !=NULL) {
+		for (vector<vector<real> >::iterator it = vec2D_dataOffset.begin() ; it != vec2D_dataOffset.end(); it++) {		
+			if(zaehler==level) {
+				for(vector<real>::iterator it2 = it->begin(); it2 != it->end(); it2++){
+					if(n==x_help){
+						x_ptr[x]=*it2;
+						x_help=x_help+3;
+						x++;
+					} else if(n==y_help){
+						y_ptr[y]=*it2;
+						y_help=y_help+3;
+						y++;
+					} else if(n==z_help){
+						z_ptr[z]=*it2;
+						z_help=z_help+3;
+						z++;
+					}
+					n++;
+				}
+			}
+			zaehler++;	
+		}
+
+	}
+
+}
+
+void OffsetScale::initScale(unsigned int* data, unsigned int level)
+{
+    for (int index = 0; index < scale[level].size(); index++)
+        data[index] = scale[level][index];
+}
+
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/OffsetScale.h b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/OffsetScale.h
new file mode 100644
index 000000000..cf1346193
--- /dev/null
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/OffsetScale.h
@@ -0,0 +1,27 @@
+#ifndef OFFSET_SCALE_H
+#define OFFSET_SCALE_H
+
+#include <vector>
+#include <string>
+
+#include "CoordNeighborGeoV.h"
+
+class OffsetScale :
+	public CoordNeighborGeoV
+{
+private:
+	std::vector<real>vec1D_dataOffset; //das Feld mit Werten, temporär zum Füllen von vec2D
+    std::vector<std::vector<real> >vec2D_dataOffset; //alle Felder mit Werten gegliedert nach Level
+    std::vector<std::vector<unsigned int> > scale;
+public:
+	OffsetScale(std::string ad, bool off);
+	~OffsetScale(void);
+	void init();
+
+    void initScale(unsigned int* data, unsigned int level);
+
+    void initOffset();
+	void initArrayOffset(real *x_ptr,real *y_ptr,real *z_ptr, unsigned int level);
+};
+
+#endif
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp
index 2a7640787..928847327 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp
@@ -156,7 +156,7 @@ void GridGenerator::setOutflow(int level, int sizePerLevel, int channelSide) con
 {
 	builder->setOutflowValues(para->getParH(level)->Qoutflow.RhoBC, para->getParH(level)->Qoutflow.kN, channelSide, level);
 	for (int index = 0; index < sizePerLevel; index++)
-		para->getParH(level)->Qoutflow.RhoBC[index] = (para->getParH(level)->Qoutflow.RhoBC[index] / para->getFactorPressBC()) * (doubflo)0.0;
+		para->getParH(level)->Qoutflow.RhoBC[index] = (para->getParH(level)->Qoutflow.RhoBC[index] / para->getFactorPressBC()) * (real)0.0;
 }
 
 
@@ -181,6 +181,10 @@ void GridGenerator::allocArrays_BoundaryQs()
 	std::cout << "-----finish BoundaryQs------" << std::endl;
 }
 
+void GridGenerator::allocArrays_OffsetScale()
+{
+}
+
 
 /*------------------------------------------------------------------------------------------------*/
 /*----------------------------------------q setter methods----------------------------------------*/
@@ -258,7 +262,7 @@ void GridGenerator::setGeoQs() const
 void GridGenerator::modifyQElement(int channelSide,  unsigned int level) const
 {
 	QforBoundaryConditions Q;
-	doubflo* QQ = para->getParH(level)->QGeom.q27[0];
+	real* QQ = para->getParH(level)->QGeom.q27[0];
 	Q.q27[dirZERO] = &QQ[dirZERO * para->getParH(level)->QGeom.kQ];
 	for (int i = 0; i < builder->getBoundaryConditionSize(channelSide); i++)
 		Q.q27[dirZERO][i] = 0.0f;
@@ -279,7 +283,7 @@ bool GridGenerator::hasQs(int channelSide, unsigned int level) const
 	return builder->getBoundaryConditionSize(channelSide) > 0;
 }
 
-void GridGenerator::setQ27Size(QforBoundaryConditions &Q, doubflo* QQ, unsigned int sizeQ) const
+void GridGenerator::setQ27Size(QforBoundaryConditions &Q, real* QQ, unsigned int sizeQ) const
 {
 	Q.q27[dirE] = &QQ[dirE   *sizeQ];
 	Q.q27[dirW] = &QQ[dirW   *sizeQ];
@@ -353,14 +357,14 @@ void GridGenerator::setBoundingBox()
 	std::vector<int> localGridNZ(1);
 	builder->getDimensions(localGridNX[0], localGridNY[0], localGridNZ[0], 0);
 
-	std::vector<doubflo> minX, maxX, minY, maxY, minZ, maxZ;
+	std::vector<real> minX, maxX, minY, maxY, minZ, maxZ;
 	minX.push_back(0);
 	minY.push_back(0);
 	minZ.push_back(0);
 
-	maxX.push_back((doubflo)localGridNX[0]);
-	maxY.push_back((doubflo)localGridNY[0]);
-	maxZ.push_back((doubflo)localGridNZ[0]);
+	maxX.push_back((real)localGridNX[0]);
+	maxY.push_back((real)localGridNY[0]);
+	maxZ.push_back((real)localGridNZ[0]);
 
 	para->setMinCoordX(minX);
 	para->setMinCoordY(minY);
diff --git a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h
index ae330c81a..fcc22d418 100644
--- a/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h
+++ b/src/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h
@@ -2,7 +2,7 @@
 #define GridReaderGenerator_H
 
 #include "../GridProvider.h"
-#include "VirtualFluids_GPU_EXPORT.h"
+#include <VirtualFluidsDefinitions.h>
 #include <vector>
 #include <string>
 #include <memory>
@@ -22,14 +22,15 @@ private:
 	std::shared_ptr<GridBuilder> builder;
 
 public:
-	VirtualFluids_GPU_EXPORT GridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para);
-	VirtualFluids_GPU_EXPORT virtual ~GridGenerator();
+    VF_PUBLIC GridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para);
+	VF_PUBLIC virtual ~GridGenerator();
 
 	void setUnstructuredGridBuilder(std::shared_ptr<GridBuilder> builder);
 
-	virtual void allocArrays_CoordNeighborGeo();
-	virtual void allocArrays_BoundaryValues();
-	virtual void allocArrays_BoundaryQs();
+	virtual void allocArrays_CoordNeighborGeo()override;
+	virtual void allocArrays_BoundaryValues()override;
+	virtual void allocArrays_BoundaryQs()override;
+    void allocArrays_OffsetScale() override;
 
 	virtual void setDimensions();
 	virtual void setBoundingBox();
@@ -57,8 +58,9 @@ private:
 	void printQSize(std::string bc,int channelSide, unsigned int level) const;
 	void setSizeNoSlip(int channelSide, unsigned int level) const;
 	void setSizeGeoQs(unsigned int level) const;
-	void setQ27Size(QforBoundaryConditions &Q, doubflo* QQ, unsigned int sizeQ) const;
+	void setQ27Size(QforBoundaryConditions &Q, real* QQ, unsigned int sizeQ) const;
 	bool hasQs(int channelSide, unsigned int level) const;
+
 };
 
 #endif
diff --git a/src/VirtualFluids_GPU/FindInterface/FindInterface.cpp b/src/VirtualFluids_GPU/FindInterface/FindInterface.cpp
index 4b11a98cf..7287c7687 100644
--- a/src/VirtualFluids_GPU/FindInterface/FindInterface.cpp
+++ b/src/VirtualFluids_GPU/FindInterface/FindInterface.cpp
@@ -10,9 +10,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
    unsigned int iC,iF,jC,jF,hC,hF;
    unsigned int posCSWB, posFSWB;
    unsigned int posC;
-   doubflo xOff = (doubflo)0.0f;
-   doubflo yOff = (doubflo)0.0f; 
-   doubflo zOff = (doubflo)0.0f;
+   real xOff = (real)0.0f;
+   real yOff = (real)0.0f; 
+   real zOff = (real)0.0f;
    intCF.kCF    = 0;
    intFC.kFC    = 0;
 
@@ -377,7 +377,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          iC = CF_NCoarse[INTERFACE_E];
          iF = CF_NFine[  INTERFACE_E];
-         xOff = (doubflo)0.5f;
+         xOff = (real)0.5f;
       } 
       else
       {
@@ -389,7 +389,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          jC = CF_NCoarse[INTERFACE_N];
          jF = CF_NFine[  INTERFACE_N];
-         yOff = (doubflo)0.5f;
+         yOff = (real)0.5f;
       } 
       else
       {
@@ -411,9 +411,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -482,7 +482,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          iC = CF_NCoarse[INTERFACE_E];
          iF = CF_NFine[  INTERFACE_E];
-         xOff = (doubflo)0.5f;
+         xOff = (real)0.5f;
       } 
       else
       {
@@ -494,7 +494,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          jC = CF_NCoarse[INTERFACE_S];
          jF = CF_NFine[  INTERFACE_S];
-         yOff = (doubflo)-0.5f;
+         yOff = (real)-0.5f;
       } 
       else
       {
@@ -516,9 +516,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -587,7 +587,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          iC = CF_NCoarse[INTERFACE_E];
          iF = CF_NFine[  INTERFACE_E];
-         xOff = (doubflo)0.5f;
+         xOff = (real)0.5f;
       } 
       else
       {
@@ -599,7 +599,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          hC = CF_NCoarse[INTERFACE_T];                   
          hF = CF_NFine[  INTERFACE_T];
-         zOff = (doubflo)0.5f;
+         zOff = (real)0.5f;
       } 
       else
       {
@@ -621,9 +621,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -692,7 +692,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          iC = CF_NCoarse[INTERFACE_E];
          iF = CF_NFine[  INTERFACE_E];
-         xOff = (doubflo)0.5f;
+         xOff = (real)0.5f;
       } 
       else
       {
@@ -704,7 +704,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          hC = CF_NCoarse[INTERFACE_B];                   
          hF = CF_NFine[  INTERFACE_B];
-         zOff = (doubflo)-0.5f;
+         zOff = (real)-0.5f;
       } 
       else
       {
@@ -726,9 +726,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -797,7 +797,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          iC = CF_NCoarse[INTERFACE_W];
          iF = CF_NFine[  INTERFACE_W];
-         xOff = (doubflo)-0.5f;
+         xOff = (real)-0.5f;
       } 
       else
       {
@@ -809,7 +809,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          jC = CF_NCoarse[INTERFACE_N];
          jF = CF_NFine[  INTERFACE_N];
-         yOff = (doubflo)0.5f;
+         yOff = (real)0.5f;
       } 
       else
       {
@@ -831,9 +831,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -902,7 +902,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          iC = CF_NCoarse[INTERFACE_W];
          iF = CF_NFine[  INTERFACE_W];
-         xOff = (doubflo)-0.5f;
+         xOff = (real)-0.5f;
       } 
       else
       {
@@ -914,7 +914,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          jC = CF_NCoarse[INTERFACE_S];
          jF = CF_NFine[  INTERFACE_S];
-         yOff = (doubflo)-0.5f;
+         yOff = (real)-0.5f;
       } 
       else
       {
@@ -936,9 +936,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -1007,7 +1007,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          iC = CF_NCoarse[INTERFACE_W];
          iF = CF_NFine[  INTERFACE_W];
-         xOff = (doubflo)-0.5f;
+         xOff = (real)-0.5f;
       } 
       else
       {
@@ -1019,7 +1019,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          hC = CF_NCoarse[INTERFACE_T];                   
          hF = CF_NFine[  INTERFACE_T];
-         zOff = (doubflo)0.5f;
+         zOff = (real)0.5f;
       } 
       else
       {
@@ -1041,9 +1041,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -1112,7 +1112,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          iC = CF_NCoarse[INTERFACE_W];
          iF = CF_NFine[  INTERFACE_W];
-         xOff = (doubflo)-0.5f;
+         xOff = (real)-0.5f;
       } 
       else
       {
@@ -1124,7 +1124,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          hC = CF_NCoarse[INTERFACE_B];                   
          hF = CF_NFine[  INTERFACE_B];
-         zOff = (doubflo)-0.5f;
+         zOff = (real)-0.5f;
       } 
       else
       {
@@ -1146,9 +1146,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -1217,7 +1217,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          jC = CF_NCoarse[INTERFACE_N];
          jF = CF_NFine[  INTERFACE_N];
-         yOff = (doubflo)0.5f;
+         yOff = (real)0.5f;
       } 
       else
       {
@@ -1229,7 +1229,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          hC = CF_NCoarse[INTERFACE_T];                   
          hF = CF_NFine[  INTERFACE_T];
-         zOff = (doubflo)0.5f;
+         zOff = (real)0.5f;
       } 
       else
       {
@@ -1251,9 +1251,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -1322,7 +1322,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          jC = CF_NCoarse[INTERFACE_N];
          jF = CF_NFine[  INTERFACE_N];
-         yOff = (doubflo)0.5f;
+         yOff = (real)0.5f;
       } 
       else
       {
@@ -1334,7 +1334,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          hC = CF_NCoarse[INTERFACE_B];                   
          hF = CF_NFine[  INTERFACE_B];
-         zOff = (doubflo)-0.5f;
+         zOff = (real)-0.5f;
       } 
       else
       {
@@ -1356,9 +1356,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -1427,7 +1427,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          jC = CF_NCoarse[INTERFACE_S];
          jF = CF_NFine[  INTERFACE_S];
-         yOff = (doubflo)-0.5f;
+         yOff = (real)-0.5f;
       } 
       else
       {
@@ -1439,7 +1439,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          hC = CF_NCoarse[INTERFACE_T];                   
          hF = CF_NFine[  INTERFACE_T];
-         zOff = (doubflo)0.5f;
+         zOff = (real)0.5f;
       } 
       else
       {
@@ -1461,9 +1461,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -1532,7 +1532,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          jC = CF_NCoarse[INTERFACE_S];
          jF = CF_NFine[  INTERFACE_S];
-         yOff = (doubflo)-0.5f;
+         yOff = (real)-0.5f;
       } 
       else
       {
@@ -1544,7 +1544,7 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       {
          hC = CF_NCoarse[INTERFACE_B];                   
          hF = CF_NFine[  INTERFACE_B];
-         zOff = (doubflo)-0.5f;
+         zOff = (real)-0.5f;
       } 
       else
       {
@@ -1566,9 +1566,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -1650,17 +1650,17 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       if ((needInterface[INTERFACE_E]==false))
       {
          iC = CF_NCoarse[INTERFACE_E];               iF = CF_NFine[INTERFACE_E];
-         xOff = (doubflo)0.5f;
+         xOff = (real)0.5f;
       }
       if ((needInterface[INTERFACE_N]==false))
       {
          jC = CF_NCoarse[INTERFACE_N];               jF = CF_NFine[INTERFACE_N];
-         yOff = (doubflo)0.5f;
+         yOff = (real)0.5f;
       }
       if ((needInterface[INTERFACE_T]==false))
       {
          hC = CF_NCoarse[INTERFACE_T];               hF = CF_NFine[INTERFACE_T];
-         zOff = (doubflo)0.5f;
+         zOff = (real)0.5f;
       }
       //////////////////////////////////////////////////////////////////////////
       posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse);
@@ -1676,9 +1676,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -1807,17 +1807,17 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       if ((needInterface[INTERFACE_E]==false))
       {
          iC = CF_NCoarse[INTERFACE_E];               iF = CF_NFine[INTERFACE_E];
-         xOff = (doubflo)0.5f;
+         xOff = (real)0.5f;
       }
       if ((needInterface[INTERFACE_N]==false))
       {
          jC = CF_NCoarse[INTERFACE_N];               jF = CF_NFine[INTERFACE_N];
-         yOff = (doubflo)0.5f;
+         yOff = (real)0.5f;
       }
       if ((needInterface[INTERFACE_B]==false))
       {
          hC = CF_NCoarse[INTERFACE_B];               hF = CF_NFine[INTERFACE_B];
-         zOff = (doubflo)-0.5f;
+         zOff = (real)-0.5f;
       }
       //////////////////////////////////////////////////////////////////////////
       posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse);
@@ -1833,9 +1833,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -1964,17 +1964,17 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       if ((needInterface[INTERFACE_E]==false))
       {
          iC = CF_NCoarse[INTERFACE_E];               iF = CF_NFine[INTERFACE_E];
-         xOff = (doubflo)0.5f;
+         xOff = (real)0.5f;
       }
       if ((needInterface[INTERFACE_S]==false))
       {
          jC = CF_NCoarse[INTERFACE_S];               jF = CF_NFine[INTERFACE_S];
-         yOff = (doubflo)-0.5f;
+         yOff = (real)-0.5f;
       }
       if ((needInterface[INTERFACE_T]==false))
       {
          hC = CF_NCoarse[INTERFACE_T];               hF = CF_NFine[INTERFACE_T];
-         zOff = (doubflo)0.5f;
+         zOff = (real)0.5f;
       }
       //////////////////////////////////////////////////////////////////////////
       posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse);
@@ -1990,9 +1990,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -2121,17 +2121,17 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       if ((needInterface[INTERFACE_E]==false))
       {
          iC = CF_NCoarse[INTERFACE_E];               iF = CF_NFine[INTERFACE_E];
-         xOff = (doubflo)0.5f;
+         xOff = (real)0.5f;
       }
       if ((needInterface[INTERFACE_S]==false))
       {
          jC = CF_NCoarse[INTERFACE_S];               jF = CF_NFine[INTERFACE_S];
-         yOff = (doubflo)-0.5f;
+         yOff = (real)-0.5f;
       }
       if ((needInterface[INTERFACE_B]==false))
       {
          hC = CF_NCoarse[INTERFACE_B];               hF = CF_NFine[INTERFACE_B];
-         zOff = (doubflo)-0.5f;
+         zOff = (real)-0.5f;
       }
       //////////////////////////////////////////////////////////////////////////
       posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse);
@@ -2147,9 +2147,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -2278,17 +2278,17 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       if ((needInterface[INTERFACE_W]==false))
       {
          iC = CF_NCoarse[INTERFACE_W];               iF = CF_NFine[INTERFACE_W];
-         xOff = (doubflo)-0.5f;
+         xOff = (real)-0.5f;
       }
       if ((needInterface[INTERFACE_N]==false))
       {
          jC = CF_NCoarse[INTERFACE_N];               jF = CF_NFine[INTERFACE_N];
-         yOff = (doubflo)0.5f;
+         yOff = (real)0.5f;
       }
       if ((needInterface[INTERFACE_T]==false))
       {
          hC = CF_NCoarse[INTERFACE_T];               hF = CF_NFine[INTERFACE_T];
-         zOff = (doubflo)0.5f;
+         zOff = (real)0.5f;
       }
       //////////////////////////////////////////////////////////////////////////
       posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse);
@@ -2304,9 +2304,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -2435,17 +2435,17 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       if ((needInterface[INTERFACE_W]==false))
       {
          iC = CF_NCoarse[INTERFACE_W];               iF = CF_NFine[INTERFACE_W];
-         xOff = (doubflo)-0.5f;
+         xOff = (real)-0.5f;
       }
       if ((needInterface[INTERFACE_N]==false))
       {
          jC = CF_NCoarse[INTERFACE_N];               jF = CF_NFine[INTERFACE_N];
-         yOff = (doubflo)0.5f;
+         yOff = (real)0.5f;
       }
       if ((needInterface[INTERFACE_B]==false))
       {
          hC = CF_NCoarse[INTERFACE_B];               hF = CF_NFine[INTERFACE_B];
-         zOff = (doubflo)-0.5f;
+         zOff = (real)-0.5f;
       }
       //////////////////////////////////////////////////////////////////////////
       posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse);
@@ -2461,9 +2461,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -2592,17 +2592,17 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       if ((needInterface[INTERFACE_W]==false))
       {
          iC = CF_NCoarse[INTERFACE_W];               iF = CF_NFine[INTERFACE_W];
-         xOff = (doubflo)-0.5f;
+         xOff = (real)-0.5f;
       }
       if ((needInterface[INTERFACE_S]==false))
       {
          jC = CF_NCoarse[INTERFACE_S];               jF = CF_NFine[INTERFACE_S];
-         yOff = (doubflo)-0.5f;
+         yOff = (real)-0.5f;
       }
       if ((needInterface[INTERFACE_T]==false))
       {
          hC = CF_NCoarse[INTERFACE_T];               hF = CF_NFine[INTERFACE_T];
-         zOff = (doubflo)0.5f;
+         zOff = (real)0.5f;
       }
       //////////////////////////////////////////////////////////////////////////
       posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse);
@@ -2618,9 +2618,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -2749,17 +2749,17 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
       if ((needInterface[INTERFACE_W]==false))
       {
          iC = CF_NCoarse[INTERFACE_W];               iF = CF_NFine[INTERFACE_W];
-         xOff = (doubflo)-0.5f;
+         xOff = (real)-0.5f;
       }
       if ((needInterface[INTERFACE_S]==false))
       {
          jC = CF_NCoarse[INTERFACE_S];               jF = CF_NFine[INTERFACE_S];
-         yOff = (doubflo)-0.5f;
+         yOff = (real)-0.5f;
       }
       if ((needInterface[INTERFACE_B]==false))
       {
          hC = CF_NCoarse[INTERFACE_B];               hF = CF_NFine[INTERFACE_B];
-         zOff = (doubflo)-0.5f;
+         zOff = (real)-0.5f;
       }
       //////////////////////////////////////////////////////////////////////////
       posCSWB=vectorPosition(iC, jC, hC, LxCoarse, LyCoarse);
@@ -2775,9 +2775,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 
       //////////////////////////////////////////////////////////////////////////
       //reset
-      xOff = (doubflo)0.0f;
-      yOff = (doubflo)0.0f;
-      zOff = (doubflo)0.0f;
+      xOff = (real)0.0f;
+      yOff = (real)0.0f;
+      zOff = (real)0.0f;
       //////////////////////////////////////////////////////////////////////////
 
 
@@ -2930,9 +2930,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 //            posFSWB=vectorPosition(iF, jF, hF, LxFine  , LyFine);
 //            intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB];
 //            intCF.ICellCFF[intCF.kCF] = kFine[posFSWB];
-//            offCF.xOffCF[intCF.kCF]   = (doubflo)0.0f;
-//            offCF.yOffCF[intCF.kCF]   = (doubflo)0.0f;
-//            offCF.zOffCF[intCF.kCF]   = (doubflo)0.0f;
+//            offCF.xOffCF[intCF.kCF]   = (real)0.0f;
+//            offCF.yOffCF[intCF.kCF]   = (real)0.0f;
+//            offCF.zOffCF[intCF.kCF]   = (real)0.0f;
 //            intCF.kCF++;
 //         }
 //      }
@@ -2949,9 +2949,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 //            posFSWB=vectorPosition(iF, jF, hF, LxFine,   LyFine);
 //            intFC.ICellFCC[intFC.kFC] = kCoarse[posC];
 //            intFC.ICellFCF[intFC.kFC] = kFine[posFSWB];
-//            offFC.xOffFC[intFC.kFC]   = (doubflo)0.0f;
-//            offFC.yOffFC[intFC.kFC]   = (doubflo)0.0f;
-//            offFC.zOffFC[intFC.kFC]   = (doubflo)0.0f;
+//            offFC.xOffFC[intFC.kFC]   = (real)0.0f;
+//            offFC.yOffFC[intFC.kFC]   = (real)0.0f;
+//            offFC.zOffFC[intFC.kFC]   = (real)0.0f;
 //            intFC.kFC++;
 //         }
 //      }
@@ -2975,9 +2975,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 //            posFSWB=vectorPosition(iF, jF, hF, LxFine,   LyFine);
 //            intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB];
 //            intCF.ICellCFF[intCF.kCF] = kFine[posFSWB];
-//            offCF.xOffCF[intCF.kCF]   = (doubflo)0.0f;
-//            offCF.yOffCF[intCF.kCF]   = (doubflo)0.0f;
-//            offCF.zOffCF[intCF.kCF]   = (doubflo)0.0f;
+//            offCF.xOffCF[intCF.kCF]   = (real)0.0f;
+//            offCF.yOffCF[intCF.kCF]   = (real)0.0f;
+//            offCF.zOffCF[intCF.kCF]   = (real)0.0f;
 //            intCF.kCF++;
 //         }
 //      }
@@ -2994,9 +2994,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 //            posFSWB=vectorPosition(iF, jF, hF, LxFine,   LyFine);
 //            intFC.ICellFCC[intFC.kFC] = kCoarse[posC];
 //            intFC.ICellFCF[intFC.kFC] = kFine[posFSWB];
-//            offFC.xOffFC[intFC.kFC]   = (doubflo)0.0f;
-//            offFC.yOffFC[intFC.kFC]   = (doubflo)0.0f;
-//            offFC.zOffFC[intFC.kFC]   = (doubflo)0.0f;
+//            offFC.xOffFC[intFC.kFC]   = (real)0.0f;
+//            offFC.yOffFC[intFC.kFC]   = (real)0.0f;
+//            offFC.zOffFC[intFC.kFC]   = (real)0.0f;
 //            intFC.kFC++;
 //         }
 //      }
@@ -3020,9 +3020,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 //            posFSWB=vectorPosition(iF, jF, hF, LxFine,   LyFine);
 //            intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB];
 //            intCF.ICellCFF[intCF.kCF] = kFine[posFSWB];
-//            offCF.xOffCF[intCF.kCF]   = (doubflo)0.0f;
-//            offCF.yOffCF[intCF.kCF]   = (doubflo)0.0f;
-//            offCF.zOffCF[intCF.kCF]   = (doubflo)0.0f;
+//            offCF.xOffCF[intCF.kCF]   = (real)0.0f;
+//            offCF.yOffCF[intCF.kCF]   = (real)0.0f;
+//            offCF.zOffCF[intCF.kCF]   = (real)0.0f;
 //            intCF.kCF++;
 //         }
 //      }
@@ -3039,9 +3039,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 //            posFSWB=vectorPosition(iF, jF, hF, LxFine,   LyFine);
 //            intFC.ICellFCC[intFC.kFC] = kCoarse[posC];
 //            intFC.ICellFCF[intFC.kFC] = kFine[posFSWB];
-//            offFC.xOffFC[intFC.kFC]   = (doubflo)0.0f;
-//            offFC.yOffFC[intFC.kFC]   = (doubflo)0.0f;
-//            offFC.zOffFC[intFC.kFC]   = (doubflo)0.0f;
+//            offFC.xOffFC[intFC.kFC]   = (real)0.0f;
+//            offFC.yOffFC[intFC.kFC]   = (real)0.0f;
+//            offFC.zOffFC[intFC.kFC]   = (real)0.0f;
 //            intFC.kFC++;
 //         }
 //      }
@@ -3065,9 +3065,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 //            posFSWB=vectorPosition(iF, jF, hF, LxFine,   LyFine);
 //            intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB];
 //            intCF.ICellCFF[intCF.kCF] = kFine[posFSWB];
-//            offCF.xOffCF[intCF.kCF]   = (doubflo)0.0f;
-//            offCF.yOffCF[intCF.kCF]   = (doubflo)0.0f;
-//            offCF.zOffCF[intCF.kCF]   = (doubflo)0.0f;
+//            offCF.xOffCF[intCF.kCF]   = (real)0.0f;
+//            offCF.yOffCF[intCF.kCF]   = (real)0.0f;
+//            offCF.zOffCF[intCF.kCF]   = (real)0.0f;
 //            intCF.kCF++;
 //         }
 //      }
@@ -3084,9 +3084,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 //            posFSWB=vectorPosition(iF, jF, hF, LxFine,   LyFine);
 //            intFC.ICellFCC[intFC.kFC] = kCoarse[posC];
 //            intFC.ICellFCF[intFC.kFC] = kFine[posFSWB];
-//            offFC.xOffFC[intFC.kFC]   = (doubflo)0.0f;
-//            offFC.yOffFC[intFC.kFC]   = (doubflo)0.0f;
-//            offFC.zOffFC[intFC.kFC]   = (doubflo)0.0f;
+//            offFC.xOffFC[intFC.kFC]   = (real)0.0f;
+//            offFC.yOffFC[intFC.kFC]   = (real)0.0f;
+//            offFC.zOffFC[intFC.kFC]   = (real)0.0f;
 //            intFC.kFC++;
 //         }
 //      }
@@ -3110,9 +3110,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 //            posFSWB=vectorPosition(iF, jF, hF, LxFine,   LyFine);
 //            intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB];
 //            intCF.ICellCFF[intCF.kCF] = kFine[posFSWB];
-//            offCF.xOffCF[intCF.kCF]   = (doubflo)0.0f;
-//            offCF.yOffCF[intCF.kCF]   = (doubflo)0.0f;
-//            offCF.zOffCF[intCF.kCF]   = (doubflo)0.0f;
+//            offCF.xOffCF[intCF.kCF]   = (real)0.0f;
+//            offCF.yOffCF[intCF.kCF]   = (real)0.0f;
+//            offCF.zOffCF[intCF.kCF]   = (real)0.0f;
 //            intCF.kCF++;
 //         }
 //      }
@@ -3129,9 +3129,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 //            posFSWB=vectorPosition(iF, jF, hF, LxFine,   LyFine);
 //            intFC.ICellFCC[intFC.kFC] = kCoarse[posC];
 //            intFC.ICellFCF[intFC.kFC] = kFine[posFSWB];
-//            offFC.xOffFC[intFC.kFC]   = (doubflo)0.0f;
-//            offFC.yOffFC[intFC.kFC]   = (doubflo)0.0f;
-//            offFC.zOffFC[intFC.kFC]   = (doubflo)0.0f;
+//            offFC.xOffFC[intFC.kFC]   = (real)0.0f;
+//            offFC.yOffFC[intFC.kFC]   = (real)0.0f;
+//            offFC.zOffFC[intFC.kFC]   = (real)0.0f;
 //            intFC.kFC++;
 //         }
 //      }
@@ -3155,9 +3155,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 //            posFSWB=vectorPosition(iF, jF, hF, LxFine  , LyFine);
 //            intCF.ICellCFC[intCF.kCF] = kCoarse[posCSWB];
 //            intCF.ICellCFF[intCF.kCF] = kFine[posFSWB];
-//            offCF.xOffCF[intCF.kCF]   = (doubflo)0.0f;
-//            offCF.yOffCF[intCF.kCF]   = (doubflo)0.0f;
-//            offCF.zOffCF[intCF.kCF]   = (doubflo)0.0f;
+//            offCF.xOffCF[intCF.kCF]   = (real)0.0f;
+//            offCF.yOffCF[intCF.kCF]   = (real)0.0f;
+//            offCF.zOffCF[intCF.kCF]   = (real)0.0f;
 //            intCF.kCF++;
 //         }
 //      }
@@ -3174,9 +3174,9 @@ void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC,
 //            posFSWB=vectorPosition(iF, jF, hF, LxFine,   LyFine);
 //            intFC.ICellFCC[intFC.kFC] = kCoarse[posC];
 //            intFC.ICellFCF[intFC.kFC] = kFine[posFSWB];
-//            offFC.xOffFC[intFC.kFC]   = (doubflo)0.0f;
-//            offFC.yOffFC[intFC.kFC]   = (doubflo)0.0f;
-//            offFC.zOffFC[intFC.kFC]   = (doubflo)0.0f;
+//            offFC.xOffFC[intFC.kFC]   = (real)0.0f;
+//            offFC.yOffFC[intFC.kFC]   = (real)0.0f;
+//            offFC.zOffFC[intFC.kFC]   = (real)0.0f;
 //            intFC.kFC++;
 //         }
 //      }
diff --git a/src/VirtualFluids_GPU/FindQ/DefineBCs.cpp b/src/VirtualFluids_GPU/FindQ/DefineBCs.cpp
index 28a7531e0..003c7ef6d 100644
--- a/src/VirtualFluids_GPU/FindQ/DefineBCs.cpp
+++ b/src/VirtualFluids_GPU/FindQ/DefineBCs.cpp
@@ -110,7 +110,7 @@ void findBC27(Parameter* para)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////North
    //unsigned int mem_size_N_Q_k = sizeof(int)*QnH.kQ;
-   //unsigned int mem_size_N_Q_q = sizeof(doubflo)*QnH.kQ;
+   //unsigned int mem_size_N_Q_q = sizeof(real)*QnH.kQ;
    //kNQ = QnH.kQ;
    //printf("kNQ= %d\n",kNQ);
    //cudaHostMemoryAllocate((void**) &QnH.q27[0], para->getD3Qxx()*mem_size_N_Q_q );
@@ -122,7 +122,7 @@ void findBC27(Parameter* para)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////South
    //unsigned int mem_size_S_Q_k = sizeof(int)*QsH.kQ;
-   //unsigned int mem_size_S_Q_q = sizeof(doubflo)*QsH.kQ;
+   //unsigned int mem_size_S_Q_q = sizeof(real)*QsH.kQ;
    //kSQ = QsH.kQ;
    //printf("kSQ= %d\n",kSQ);
    //cudaHostMemoryAllocate((void**) &QsH.q27[0], para->getD3Qxx()*mem_size_S_Q_q );
@@ -134,7 +134,7 @@ void findBC27(Parameter* para)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////East
    //unsigned int mem_size_E_Q_k = sizeof(int)*QeH.kQ;
-   //unsigned int mem_size_E_Q_q = sizeof(doubflo)*QeH.kQ;
+   //unsigned int mem_size_E_Q_q = sizeof(real)*QeH.kQ;
    //kEQ = QeH.kQ;
    //printf("kEQ= %d\n",kEQ);
    //cudaHostMemoryAllocate((void**) &QeH.q27[0], para->getD3Qxx()*mem_size_E_Q_q );
@@ -146,7 +146,7 @@ void findBC27(Parameter* para)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////West
    //unsigned int mem_size_W_Q_k = sizeof(int)*QwH.kQ;
-   //unsigned int mem_size_W_Q_q = sizeof(doubflo)*QwH.kQ;
+   //unsigned int mem_size_W_Q_q = sizeof(real)*QwH.kQ;
    //kWQ = QwH.kQ;
    //printf("kWQ= %d\n",kWQ);
    //cudaHostMemoryAllocate((void**) &QwH.q27[0], para->getD3Qxx()*mem_size_W_Q_q );
diff --git a/src/VirtualFluids_GPU/FindQ/FindQ.cpp b/src/VirtualFluids_GPU/FindQ/FindQ.cpp
index 6e1cfa5f6..e85c3680a 100644
--- a/src/VirtualFluids_GPU/FindQ/FindQ.cpp
+++ b/src/VirtualFluids_GPU/FindQ/FindQ.cpp
@@ -9,7 +9,7 @@ void findQ(Parameter* para, int lev)
    int   ex[27]={  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,   0,  1,  1,  1,  1, -1, -1, -1, -1};
    int   ey[27]={  0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,   0,  1,  1, -1, -1,  1,  1, -1, -1};
    int   ez[27]={  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,  1,   0,  1, -1,  1, -1,  1, -1,  1, -1};
-   doubflo ON[27];
+   real ON[27];
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    unsigned int i, j, k, m, mm, l;
    int nx                       = para->getParH(lev)->nx;    
@@ -20,7 +20,7 @@ void findQ(Parameter* para, int lev)
    int* geo_mat                 = para->getParH(lev)->geo;
    unsigned int* kk             = para->getParH(para->getCoarse())->k;
    unsigned int sizeQ           = para->getParH(lev)->kQ; 
-   doubflo* QQ                  = para->getParH(lev)->QWall.q27[0]; 
+   real* QQ                  = para->getParH(lev)->QWall.q27[0]; 
    QforBoundaryConditions &QIN  = para->getParH(lev)->QWall;
    QIN.kQ = 0;
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -29,7 +29,7 @@ void findQ(Parameter* para, int lev)
    //unsigned int centerX = nnx / 2;
    //unsigned int centerY = nny / 2;
    //unsigned int centerZ = nnz / 2;
-   //doubflo        radius  = nny / 5.f;//2.56f;
+   //real        radius  = nny / 5.f;//2.56f;
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    QforBoundaryConditions Q;
    Q.q27[dirE   ] = &QQ[dirE   *sizeQ];
@@ -68,23 +68,23 @@ void findQ(Parameter* para, int lev)
                //relx = i - STARTOFFX - centerX;
                //rely = j - STARTOFFY - centerY;
                //relz = k - STARTOFFZ - centerZ;
-               ON[18] = (doubflo)-1.f;
+               ON[18] = (real)-1.f;
                for(l=0;l<=26;l++){
                   mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
                   if((geo_mat[mm] == GEO_SOLID) || (geo_mat[mm] == GEO_VOID)){
-                     //ON[l] = -(((doubflo)ex[l]*(doubflo)relx + (doubflo)ey[l]*(doubflo)rely + (doubflo)ez[l]*(doubflo)relz +/*+/- Achtung, innen und außen nicht verwechseln!!*/ 
-                     //           sqrt(pow((doubflo)ex[l]*(doubflo)relx + (doubflo)ey[l]*(doubflo)rely + (doubflo)ez[l]*(doubflo)relz,2) + 
-                     //               (pow((doubflo)ex[l],2) + pow((doubflo)ey[l],2) + pow((doubflo)ez[l],2))* (pow(radius,2) - 
-                     //                pow((doubflo)relx,2) - pow((doubflo)rely,2) - pow((doubflo)relz,2))))
-                     //           /(pow((doubflo)ex[l],2) + pow((doubflo)ey[l],2) + pow((doubflo)ez[l],2)));
-                     ON[l] = (doubflo)0.5f;//1.0f;
-                     ON[18] = (doubflo)1.f; //ZERO
+                     //ON[l] = -(((real)ex[l]*(real)relx + (real)ey[l]*(real)rely + (real)ez[l]*(real)relz +/*+/- Achtung, innen und außen nicht verwechseln!!*/ 
+                     //           sqrt(pow((real)ex[l]*(real)relx + (real)ey[l]*(real)rely + (real)ez[l]*(real)relz,2) + 
+                     //               (pow((real)ex[l],2) + pow((real)ey[l],2) + pow((real)ez[l],2))* (pow(radius,2) - 
+                     //                pow((real)relx,2) - pow((real)rely,2) - pow((real)relz,2))))
+                     //           /(pow((real)ex[l],2) + pow((real)ey[l],2) + pow((real)ez[l],2)));
+                     ON[l] = (real)0.5f;//1.0f;
+                     ON[18] = (real)1.f; //ZERO
                   }
                   else{
-                     ON[l] = (doubflo)-1.f;
+                     ON[l] = (real)-1.f;
                   }
                }
-               if (ON[18]==(doubflo)1.f)
+               if (ON[18]==(real)1.f)
                {
                   QIN.k[QIN.kQ]          = kk[m];
 
@@ -188,10 +188,10 @@ void findKforQ(Parameter* para, int lev)
    int   ex[27]={  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,   0,  1,  1,  1,  1, -1, -1, -1, -1};
    int   ey[27]={  0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,   0,  1,  1, -1, -1,  1,  1, -1, -1};
    int   ez[27]={  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,  1,   0,  1, -1,  1, -1,  1, -1,  1, -1};
-   doubflo ON[27];
+   real ON[27];
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    unsigned int i, j, k, m, mm, l;
-   doubflo test = (doubflo)0.f;
+   real test = (real)0.f;
    int nx                       = para->getParH(lev)->nx;    
    int ny                       = para->getParH(lev)->ny; 
    unsigned int nnx             = para->getParH(lev)->gridNX;
@@ -207,14 +207,14 @@ void findKforQ(Parameter* para, int lev)
          for(i=STARTOFFX + 1; i<=nnx+STARTOFFX-2 ; i++){
             m = nx*(ny*k + j) + i;
             if(geo_mat[m]==GEO_FLUID){
-               test =(doubflo)0.f;
+               test =(real)0.f;
                for(l=0;l<=26;l++){
                   mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
                   if((geo_mat[mm] == GEO_SOLID) || (geo_mat[mm] == GEO_VOID)){
-                     ON[l] =(doubflo) 1.f; 
+                     ON[l] =(real) 1.f; 
                   }
                   else{
-                     ON[l] = (doubflo)0.f;
+                     ON[l] = (real)0.f;
                   }
                   test += ON[l];
                }
@@ -229,7 +229,7 @@ void findKforQ(Parameter* para, int lev)
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void findQ_MG( int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int nnz, int* geo_mat, unsigned int* kk, unsigned int sizeQ, doubflo* QQ, QforBoundaryConditions &QIN)
+void findQ_MG( int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int nnz, int* geo_mat, unsigned int* kk, unsigned int sizeQ, real* QQ, QforBoundaryConditions &QIN)
 {
    QforBoundaryConditions Q;
    Q.q27[dirE   ] = &QQ[dirE   *sizeQ];
@@ -265,7 +265,7 @@ void findQ_MG( int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int
    int   ex[27]={  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,   0,  1,  1,  1,  1, -1, -1, -1, -1};
    int   ey[27]={  0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,   0,  1,  1, -1, -1,  1,  1, -1, -1};
    int   ez[27]={  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,  1,   0,  1, -1,  1, -1,  1, -1,  1, -1};
-   doubflo ON[27];
+   real ON[27];
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
    unsigned int i, j, k, m, mm, l;
@@ -274,7 +274,7 @@ void findQ_MG( int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int
    unsigned int centerX = nnx / 2;
    unsigned int centerY = nny / 2;
    unsigned int centerZ = nnz / 2;
-   doubflo      radius  = nny / 2.56f;
+   real      radius  = nny / 2.56f;
 
    QIN.kQ = 0;
 
@@ -286,20 +286,20 @@ void findQ_MG( int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int
                relx = i - STARTOFFX - centerX;
                rely = j - STARTOFFY - centerY;
                relz = k - STARTOFFZ - centerZ;
-               ON[18] = (doubflo)-1.f;
+               ON[18] = (real)-1.f;
                for(l=0;l<=26;l++){
                   mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
                   if(geo_mat[mm] == GEO_FLUID){
-                     ON[l] = -(((doubflo)ex[l]*(doubflo)relx + (doubflo)ey[l]*(doubflo)rely + (doubflo)ez[l]*(doubflo)relz + 
-                        sqrt(pow((doubflo)ex[l]*(doubflo)relx + (doubflo)ey[l]*(doubflo)rely + (doubflo)ez[l]*(doubflo)relz,2) + 
-                        (pow((doubflo)ex[l],2) + pow((doubflo)ey[l],2) + pow((doubflo)ez[l],2))*
-                        (pow(radius,2) - pow((doubflo)relx,2) - pow((doubflo)rely,2) - 
-                        pow((doubflo)relz,2))))/(pow((doubflo)ex[l],2) + pow((doubflo)ey[l],2) + pow((doubflo)ez[l],2)));
+                     ON[l] = -(((real)ex[l]*(real)relx + (real)ey[l]*(real)rely + (real)ez[l]*(real)relz + 
+                        sqrt(pow((real)ex[l]*(real)relx + (real)ey[l]*(real)rely + (real)ez[l]*(real)relz,2) + 
+                        (pow((real)ex[l],2) + pow((real)ey[l],2) + pow((real)ez[l],2))*
+                        (pow(radius,2) - pow((real)relx,2) - pow((real)rely,2) - 
+                        pow((real)relz,2))))/(pow((real)ex[l],2) + pow((real)ey[l],2) + pow((real)ez[l],2)));
 
-                     ON[18] = (doubflo)1.f; //ZERO
+                     ON[18] = (real)1.f; //ZERO
                   }
                   else{
-                     ON[l] = (doubflo)-1.f;
+                     ON[l] = (real)-1.f;
                   }
                }
                if (ON[18]==1.f)
@@ -350,11 +350,11 @@ void findKforQ_MG(int nx, int ny, unsigned int nnx, unsigned int nny, unsigned i
    int   ex[27]={  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,   0,  1,  1,  1,  1, -1, -1, -1, -1};
    int   ey[27]={  0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,   0,  1,  1, -1, -1,  1,  1, -1, -1};
    int   ez[27]={  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,  1,   0,  1, -1,  1, -1,  1, -1,  1, -1};
-   doubflo ON[27];
+   real ON[27];
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
    unsigned int i, j, k, m, mm, l;
-   doubflo test = (doubflo)0.f;
+   real test = (real)0.f;
 
    QIN.kQ = 0;
 
@@ -363,14 +363,14 @@ void findKforQ_MG(int nx, int ny, unsigned int nnx, unsigned int nny, unsigned i
          for(i=STARTOFFX +2; i<=nnx+STARTOFFX-3 ; i++){
             m = nx*(ny*k + j) + i;
             if((geo_mat[m] == GEO_SOLID) || (geo_mat[m] == GEO_VOID)){
-               test =(doubflo)0.f;
+               test =(real)0.f;
                for(l=0;l<=26;l++){
                   mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
                   if(geo_mat[mm] == GEO_FLUID){
-                     ON[l] = (doubflo)1.f; 
+                     ON[l] = (real)1.f; 
                   }
                   else{
-                     ON[l] = (doubflo)0.f;
+                     ON[l] = (real)0.f;
                   }
                   test += ON[l];
                }
@@ -392,7 +392,7 @@ void findQInflow(Parameter* para)
    int   ex[27]={  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,   0,  1,  1,  1,  1, -1, -1, -1, -1};
    int   ey[27]={  0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,   0,  1,  1, -1, -1,  1,  1, -1, -1};
    int   ez[27]={  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,  1,   0,  1, -1,  1, -1,  1, -1,  1, -1};
-   //doubflo ON[27];
+   //real ON[27];
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    unsigned int i, j, k, m;//, mm, l;
    //int nx                        = para->getParH(para->getFine())->nx;     
@@ -410,13 +410,13 @@ void findQInflow(Parameter* para)
    int* geo_mat                  = para->getParH(para->getCoarse())->geo;   
    unsigned int* kk              = para->getParH(para->getCoarse())->k;
    unsigned int sizeQ            = para->getParH(para->getCoarse())->kInflowQ; 
-   doubflo* rhoBC                = para->getParH(para->getCoarse())->Qinflow.RhoBC;
-   doubflo u0                    = para->getVelocity(); 
-   doubflo* vx                   = para->getParH(para->getCoarse())->Qinflow.Vx;     
-   doubflo* vy                   = para->getParH(para->getCoarse())->Qinflow.Vy;     
-   doubflo* vz                   = para->getParH(para->getCoarse())->Qinflow.Vz;     
-   doubflo*deltaVz               = para->getParH(para->getCoarse())->Qinflow.deltaVz;
-   doubflo* QQ                   = para->getParH(para->getCoarse())->Qinflow.q27[0]; 
+   real* rhoBC                = para->getParH(para->getCoarse())->Qinflow.RhoBC;
+   real u0                    = para->getVelocity(); 
+   real* vx                   = para->getParH(para->getCoarse())->Qinflow.Vx;     
+   real* vy                   = para->getParH(para->getCoarse())->Qinflow.Vy;     
+   real* vz                   = para->getParH(para->getCoarse())->Qinflow.Vz;     
+   real*deltaVz               = para->getParH(para->getCoarse())->Qinflow.deltaVz;
+   real* QQ                   = para->getParH(para->getCoarse())->Qinflow.q27[0]; 
    QforBoundaryConditions &QIN   = para->getParH(para->getCoarse())->Qinflow;
    unsigned int nxny = nx*ny;
    QIN.kQ = 0;
@@ -461,71 +461,71 @@ void findQInflow(Parameter* para)
          m = nx*(ny*k + j) + i;
             if(geo_mat[m]==GEO_FLUID){
                QIN.k[QIN.kQ]          = kk[m];
-               //vx[QIN.kQ]             = (doubflo)0.f;
+               //vx[QIN.kQ]             = (real)0.f;
 			   vx[QIN.kQ]             = u0;
-               vy[QIN.kQ]             = (doubflo)0.f;
-               vz[QIN.kQ]             = (doubflo)0.f;
+               vy[QIN.kQ]             = (real)0.f;
+               vz[QIN.kQ]             = (real)0.f;
                //vz[QIN.kQ]             = u0;
-               //vz[QIN.kQ]             = (doubflo)(u0*2.f)*((-4.f*i*i + nnx*(-2.f - 4.f*STARTOFFX) - 4.f*(-1.5f + STARTOFFX)*(0.5f + STARTOFFX) + i*(-4.f + 4.f*nnx + 8.f*STARTOFFX))*(-4.f*j*j + nny*(-2.f - 4.f*STARTOFFY) - 4.f*(-1.5f + STARTOFFY)*(0.5f + STARTOFFY) + j*(-4.f + 4.f*nny + 8.f*STARTOFFY)))/((2.f - nnx)*(2.f - nnx)*(2.f - nny)*(2.f - nny));
-               //vz[QIN.kQ]             = (doubflo)(16.f*(u0*2.f)*(i-(STARTOFFX+1)-0.5f)*(li-1.5f-(i-(STARTOFFX+1)))*(j-(STARTOFFY+1)-0.5f)*(lj-1.5f-(j-(STARTOFFY+1))))/(li*lj*li*lj);
-               //vz[QIN.kQ]             = (doubflo)(16.f*(u0*2.f)*i*j*(nx-i)*(ny-j))/(nx*nx*ny*ny);
-               deltaVz[QIN.kQ]        = (doubflo)0.f;
+               //vz[QIN.kQ]             = (real)(u0*2.f)*((-4.f*i*i + nnx*(-2.f - 4.f*STARTOFFX) - 4.f*(-1.5f + STARTOFFX)*(0.5f + STARTOFFX) + i*(-4.f + 4.f*nnx + 8.f*STARTOFFX))*(-4.f*j*j + nny*(-2.f - 4.f*STARTOFFY) - 4.f*(-1.5f + STARTOFFY)*(0.5f + STARTOFFY) + j*(-4.f + 4.f*nny + 8.f*STARTOFFY)))/((2.f - nnx)*(2.f - nnx)*(2.f - nny)*(2.f - nny));
+               //vz[QIN.kQ]             = (real)(16.f*(u0*2.f)*(i-(STARTOFFX+1)-0.5f)*(li-1.5f-(i-(STARTOFFX+1)))*(j-(STARTOFFY+1)-0.5f)*(lj-1.5f-(j-(STARTOFFY+1))))/(li*lj*li*lj);
+               //vz[QIN.kQ]             = (real)(16.f*(u0*2.f)*i*j*(nx-i)*(ny-j))/(nx*nx*ny*ny);
+               deltaVz[QIN.kQ]        = (real)0.f;
 			   //////////////////////////////////////////////////////////////////////////
-               //Q.q27[dirE   ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirW   ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirN   ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirS   ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirT   ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirB   ][QIN.kQ] = (doubflo)1.f;
-               //Q.q27[dirNE  ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirSW  ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirSE  ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirNW  ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirTE  ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirBW  ][QIN.kQ] = (doubflo)1.f;
-               //Q.q27[dirBE  ][QIN.kQ] = (doubflo)1.f;
-               //Q.q27[dirTW  ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirTN  ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirBS  ][QIN.kQ] = (doubflo)1.f;
-               //Q.q27[dirBN  ][QIN.kQ] = (doubflo)1.f;
-               //Q.q27[dirTS  ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirZERO][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirTNE ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirTSW ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirTSE ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirTNW ][QIN.kQ] = (doubflo)-1.f;
-               //Q.q27[dirBNE ][QIN.kQ] = (doubflo)1.f;
-               //Q.q27[dirBSW ][QIN.kQ] = (doubflo)1.f;
-               //Q.q27[dirBSE ][QIN.kQ] = (doubflo)1.f;
-               //Q.q27[dirBNW ][QIN.kQ] = (doubflo)1.f;
+               //Q.q27[dirE   ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirW   ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirN   ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirS   ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirT   ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirB   ][QIN.kQ] = (real)1.f;
+               //Q.q27[dirNE  ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirSW  ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirSE  ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirNW  ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirTE  ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirBW  ][QIN.kQ] = (real)1.f;
+               //Q.q27[dirBE  ][QIN.kQ] = (real)1.f;
+               //Q.q27[dirTW  ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirTN  ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirBS  ][QIN.kQ] = (real)1.f;
+               //Q.q27[dirBN  ][QIN.kQ] = (real)1.f;
+               //Q.q27[dirTS  ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirZERO][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirTNE ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirTSW ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirTSE ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirTNW ][QIN.kQ] = (real)-1.f;
+               //Q.q27[dirBNE ][QIN.kQ] = (real)1.f;
+               //Q.q27[dirBSW ][QIN.kQ] = (real)1.f;
+               //Q.q27[dirBSE ][QIN.kQ] = (real)1.f;
+               //Q.q27[dirBNW ][QIN.kQ] = (real)1.f;
 			   //////////////////////////////////////////////////////////////////////////
-			   Q.q27[dirE   ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirW   ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirN   ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirS   ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirT   ][QIN.kQ] = (doubflo)1.f;
-			   Q.q27[dirB   ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirNE  ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirSW  ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirSE  ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirNW  ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirTE  ][QIN.kQ] = (doubflo)1.f;
-			   Q.q27[dirBW  ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirBE  ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirTW  ][QIN.kQ] = (doubflo)1.f;
-			   Q.q27[dirTN  ][QIN.kQ] = (doubflo)1.f;
-			   Q.q27[dirBS  ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirBN  ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirTS  ][QIN.kQ] = (doubflo)1.f;
-			   Q.q27[dirZERO][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirTNE ][QIN.kQ] = (doubflo)1.f;
-			   Q.q27[dirTSW ][QIN.kQ] = (doubflo)1.f;
-			   Q.q27[dirTSE ][QIN.kQ] = (doubflo)1.f;
-			   Q.q27[dirTNW ][QIN.kQ] = (doubflo)1.f;
-			   Q.q27[dirBNE ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirBSW ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirBSE ][QIN.kQ] = (doubflo)-1.f;
-			   Q.q27[dirBNW ][QIN.kQ] = (doubflo)-1.f;
+			   Q.q27[dirE   ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirW   ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirN   ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirS   ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirT   ][QIN.kQ] = (real)1.f;
+			   Q.q27[dirB   ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirNE  ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirSW  ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirSE  ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirNW  ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirTE  ][QIN.kQ] = (real)1.f;
+			   Q.q27[dirBW  ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirBE  ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirTW  ][QIN.kQ] = (real)1.f;
+			   Q.q27[dirTN  ][QIN.kQ] = (real)1.f;
+			   Q.q27[dirBS  ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirBN  ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirTS  ][QIN.kQ] = (real)1.f;
+			   Q.q27[dirZERO][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirTNE ][QIN.kQ] = (real)1.f;
+			   Q.q27[dirTSW ][QIN.kQ] = (real)1.f;
+			   Q.q27[dirTSE ][QIN.kQ] = (real)1.f;
+			   Q.q27[dirTNW ][QIN.kQ] = (real)1.f;
+			   Q.q27[dirBNE ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirBSW ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirBSE ][QIN.kQ] = (real)-1.f;
+			   Q.q27[dirBNW ][QIN.kQ] = (real)-1.f;
 			   //////////////////////////////////////////////////////////////////////////
 			   QIN.kQ++;
             }
@@ -659,10 +659,10 @@ void findKforQInflow(Parameter* para)
    int   ex[27]={  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,   0,  1,  1,  1,  1, -1, -1, -1, -1};
    int   ey[27]={  0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,   0,  1,  1, -1, -1,  1,  1, -1, -1};
    int   ez[27]={  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,  1,   0,  1, -1,  1, -1,  1, -1,  1, -1};
-   doubflo ON[27];
+   real ON[27];
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    unsigned int i, j, k, m, mm, l;
-   doubflo test = 0.f;
+   real test = 0.f;
    //int nx                        = para->getParH(para->getFine())->nx;     
    //int ny                        = para->getParH(para->getFine())->ny; 
    //unsigned int nnx              = para->getParH(para->getFine())->gridNX; 
@@ -686,14 +686,14 @@ void findKforQInflow(Parameter* para)
          for(i=STARTOFFX/*+1*/; i<=nnx+STARTOFFX/*-2*/ ; i++){
             m = nx*(ny*k + j) + i;
             if(geo_mat[m]==GEO_FLUID){
-               test = (doubflo)0.f;
+               test = (real)0.f;
                for(l=0;l<=26;l++){
                   mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
                   if(ez[l]==1/*-1*/){
-                     ON[l] = (doubflo) 1.f; 
+                     ON[l] = (real) 1.f; 
                   }
                   else{
-                     ON[l] = (doubflo) 0.f;
+                     ON[l] = (real) 0.f;
                   }
                   test += ON[l];
                }
@@ -741,7 +741,7 @@ void findQOutflow(Parameter* para)
    int   ex[27]={  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,   0,  1,  1,  1,  1, -1, -1, -1, -1};
    int   ey[27]={  0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,   0,  1,  1, -1, -1,  1,  1, -1, -1};
    int   ez[27]={  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,  1,   0,  1, -1,  1, -1,  1, -1,  1, -1};
-   //doubflo ON[27];
+   //real ON[27];
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    unsigned int i, j, k, m;//, mm, l;
    //int nx                        = para->getParH(para->getFine())->nx;     
@@ -759,13 +759,13 @@ void findQOutflow(Parameter* para)
    int* geo_mat                  = para->getParH(para->getCoarse())->geo;   
    unsigned int* kk              = para->getParH(para->getCoarse())->k;
    unsigned int sizeQ            = para->getParH(para->getCoarse())->kOutflowQ; 
-   doubflo* rhoBC                = para->getParH(para->getCoarse())->Qoutflow.RhoBC;
-   doubflo u0                    = para->getVelocity(); 
-   doubflo* vx                   = para->getParH(para->getCoarse())->Qoutflow.Vx;     
-   doubflo* vy                   = para->getParH(para->getCoarse())->Qoutflow.Vy;     
-   doubflo* vz                   = para->getParH(para->getCoarse())->Qoutflow.Vz;     
-   doubflo*deltaVz               = para->getParH(para->getCoarse())->Qoutflow.deltaVz;
-   doubflo* QQ                   = para->getParH(para->getCoarse())->Qoutflow.q27[0]; 
+   real* rhoBC                = para->getParH(para->getCoarse())->Qoutflow.RhoBC;
+   real u0                    = para->getVelocity(); 
+   real* vx                   = para->getParH(para->getCoarse())->Qoutflow.Vx;     
+   real* vy                   = para->getParH(para->getCoarse())->Qoutflow.Vy;     
+   real* vz                   = para->getParH(para->getCoarse())->Qoutflow.Vz;     
+   real*deltaVz               = para->getParH(para->getCoarse())->Qoutflow.deltaVz;
+   real* QQ                   = para->getParH(para->getCoarse())->Qoutflow.q27[0]; 
    QforBoundaryConditions &QIN   = para->getParH(para->getCoarse())->Qoutflow;
    unsigned int nxny = nx*ny;
    QIN.kQ = 0;
@@ -811,41 +811,41 @@ void findQOutflow(Parameter* para)
             if(geo_mat[m]==GEO_FLUID){
                QIN.k[QIN.kQ]          = kk[m];
                QIN.kN[QIN.kQ]         = kk[m-nxny];
-               rhoBC[QIN.kQ]          = (doubflo)0.f;
-               vx[QIN.kQ]             = (doubflo)0.f;
-               vy[QIN.kQ]             = (doubflo)0.f;
+               rhoBC[QIN.kQ]          = (real)0.f;
+               vx[QIN.kQ]             = (real)0.f;
+               vy[QIN.kQ]             = (real)0.f;
 			   //vz[QIN.kQ]             = u0;
-               vz[QIN.kQ]             = (doubflo)(u0*2.f)*((-4.f*i*i + nnx*(-2.f - 4.f*STARTOFFX) - 4.f*(-1.5f + STARTOFFX)*(0.5f + STARTOFFX) + i*(-4.f + 4.f*nnx + 8.f*STARTOFFX))*(-4.f*j*j + nny*(-2.f - 4.f*STARTOFFY) - 4.f*(-1.5f + STARTOFFY)*(0.5f + STARTOFFY) + j*(-4.f + 4.f*nny + 8.f*STARTOFFY)))/((2.f - nnx)*(2.f - nnx)*(2.f - nny)*(2.f - nny));
-               //vz[QIN.kQ]             =  (doubflo)(16.f*(u0*2.f)*(i-(STARTOFFX+1)-0.5f)*(li-1.5f-(i-(STARTOFFX+1)))*(j-(STARTOFFY+1)-0.5f)*(lj-1.5f-(j-(STARTOFFY+1))))/(li*lj*li*lj);
-               //vz[QIN.kQ]             = (doubflo)(16.f*(u0*2.f)*i*j*(nx-i)*(ny-j))/(nx*nx*ny*ny);
-               deltaVz[QIN.kQ]        = (doubflo)0.f;
-               Q.q27[dirE   ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirW   ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirN   ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirS   ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirT   ][QIN.kQ] = (doubflo)1.f;
-               Q.q27[dirB   ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirNE  ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirSW  ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirSE  ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirNW  ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirTE  ][QIN.kQ] = (doubflo)1.f;
-               Q.q27[dirBW  ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirBE  ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirTW  ][QIN.kQ] = (doubflo)1.f;
-               Q.q27[dirTN  ][QIN.kQ] = (doubflo)1.f;
-               Q.q27[dirBS  ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirBN  ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirTS  ][QIN.kQ] = (doubflo)1.f;
-               Q.q27[dirZERO][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirTNE ][QIN.kQ] = (doubflo)1.f;
-               Q.q27[dirTSW ][QIN.kQ] = (doubflo)1.f;
-               Q.q27[dirTSE ][QIN.kQ] = (doubflo)1.f;
-               Q.q27[dirTNW ][QIN.kQ] = (doubflo)1.f;
-               Q.q27[dirBNE ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirBSW ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirBSE ][QIN.kQ] = (doubflo)-1.f;
-               Q.q27[dirBNW ][QIN.kQ] = (doubflo)-1.f;
+               vz[QIN.kQ]             = (real)(u0*2.f)*((-4.f*i*i + nnx*(-2.f - 4.f*STARTOFFX) - 4.f*(-1.5f + STARTOFFX)*(0.5f + STARTOFFX) + i*(-4.f + 4.f*nnx + 8.f*STARTOFFX))*(-4.f*j*j + nny*(-2.f - 4.f*STARTOFFY) - 4.f*(-1.5f + STARTOFFY)*(0.5f + STARTOFFY) + j*(-4.f + 4.f*nny + 8.f*STARTOFFY)))/((2.f - nnx)*(2.f - nnx)*(2.f - nny)*(2.f - nny));
+               //vz[QIN.kQ]             =  (real)(16.f*(u0*2.f)*(i-(STARTOFFX+1)-0.5f)*(li-1.5f-(i-(STARTOFFX+1)))*(j-(STARTOFFY+1)-0.5f)*(lj-1.5f-(j-(STARTOFFY+1))))/(li*lj*li*lj);
+               //vz[QIN.kQ]             = (real)(16.f*(u0*2.f)*i*j*(nx-i)*(ny-j))/(nx*nx*ny*ny);
+               deltaVz[QIN.kQ]        = (real)0.f;
+               Q.q27[dirE   ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirW   ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirN   ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirS   ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirT   ][QIN.kQ] = (real)1.f;
+               Q.q27[dirB   ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirNE  ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirSW  ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirSE  ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirNW  ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirTE  ][QIN.kQ] = (real)1.f;
+               Q.q27[dirBW  ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirBE  ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirTW  ][QIN.kQ] = (real)1.f;
+               Q.q27[dirTN  ][QIN.kQ] = (real)1.f;
+               Q.q27[dirBS  ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirBN  ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirTS  ][QIN.kQ] = (real)1.f;
+               Q.q27[dirZERO][QIN.kQ] = (real)-1.f;
+               Q.q27[dirTNE ][QIN.kQ] = (real)1.f;
+               Q.q27[dirTSW ][QIN.kQ] = (real)1.f;
+               Q.q27[dirTSE ][QIN.kQ] = (real)1.f;
+               Q.q27[dirTNW ][QIN.kQ] = (real)1.f;
+               Q.q27[dirBNE ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirBSW ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirBSE ][QIN.kQ] = (real)-1.f;
+               Q.q27[dirBNW ][QIN.kQ] = (real)-1.f;
                QIN.kQ++;
             }
        }
@@ -868,10 +868,10 @@ void findKforQOutflow(Parameter* para)
    int   ex[27]={  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,   0,  1,  1,  1,  1, -1, -1, -1, -1};
    int   ey[27]={  0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,   0,  1,  1, -1, -1,  1,  1, -1, -1};
    int   ez[27]={  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,  1,   0,  1, -1,  1, -1,  1, -1,  1, -1};
-   doubflo ON[27];
+   real ON[27];
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    unsigned int i, j, k, m, mm, l;
-   doubflo test = (doubflo) 0.f;
+   real test = (real) 0.f;
    //int nx                        = para->getParH(para->getFine())->nx;     
    //int ny                        = para->getParH(para->getFine())->ny; 
    //unsigned int nnx              = para->getParH(para->getFine())->gridNX; 
@@ -894,14 +894,14 @@ void findKforQOutflow(Parameter* para)
          for(i=STARTOFFX+1; i<=nnx+STARTOFFX-2 ; i++){
             m = nx*(ny*k + j) + i;
             if(geo_mat[m]==GEO_FLUID){
-               test = (doubflo)0.f;
+               test = (real)0.f;
                for(l=0;l<=26;l++){
                   mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
                   if(ez[l]==1){
-                     ON[l] = (doubflo) 1.f; 
+                     ON[l] = (real) 1.f; 
                   }
                   else{
-                     ON[l] = (doubflo) 0.f;
+                     ON[l] = (real) 0.f;
                   }
                   test += ON[l];
                }
@@ -921,10 +921,10 @@ void findKforQOutflow(Parameter* para)
 
 //////////////////////////////////////////////////////////////////////////////////
 //void findQSchlaff( int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int nnz, int* geo_mat, unsigned int* kk, 
-//                   unsigned int sizeQN, doubflo* vxN, doubflo* vyN, doubflo* vzN, doubflo*deltaVN, doubflo* QQN, QforBoundaryConditions &QNin,
-//                   unsigned int sizeQS, doubflo* vxS, doubflo* vyS, doubflo* vzS, doubflo*deltaVS, doubflo* QQS, QforBoundaryConditions &QSin,
-//                   unsigned int sizeQE, doubflo* vxE, doubflo* vyE, doubflo* vzE, doubflo*deltaVE, doubflo* QQE, QforBoundaryConditions &QEin,
-//                   unsigned int sizeQW, doubflo* vxW, doubflo* vyW, doubflo* vzW, doubflo*deltaVW, doubflo* QQW, QforBoundaryConditions &QWin)
+//                   unsigned int sizeQN, real* vxN, real* vyN, real* vzN, real*deltaVN, real* QQN, QforBoundaryConditions &QNin,
+//                   unsigned int sizeQS, real* vxS, real* vyS, real* vzS, real*deltaVS, real* QQS, QforBoundaryConditions &QSin,
+//                   unsigned int sizeQE, real* vxE, real* vyE, real* vzE, real*deltaVE, real* QQE, QforBoundaryConditions &QEin,
+//                   unsigned int sizeQW, real* vxW, real* vyW, real* vzW, real*deltaVW, real* QQW, QforBoundaryConditions &QWin)
 //{
 //   QforBoundaryConditions QN;
 //   QN.q27[dirE   ] = &QQN[dirE   *sizeQN];
@@ -960,7 +960,7 @@ void findKforQOutflow(Parameter* para)
 //   int   ex[27]={  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,   0,  1,  1,  1,  1, -1, -1, -1, -1};
 //   int   ey[27]={  0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,   0,  1,  1, -1, -1,  1,  1, -1, -1};
 //   int   ez[27]={  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,  1,   0,  1, -1,  1, -1,  1, -1,  1, -1};
-//   //doubflo ON[27];
+//   //real ON[27];
 //   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //}
 //
@@ -973,10 +973,10 @@ void findKforQOutflow(Parameter* para)
 //   int   ex[27]={  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,   0,  1,  1,  1,  1, -1, -1, -1, -1};
 //   int   ey[27]={  0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,   0,  1,  1, -1, -1,  1,  1, -1, -1};
 //   int   ez[27]={  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,  1,   0,  1, -1,  1, -1,  1, -1,  1, -1};
-//   doubflo ON[27];
+//   real ON[27];
 //   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //   unsigned int i, j, k, m, mm, l;
-//   doubflo test = (doubflo) 0.f;
+//   real test = (real) 0.f;
 //
 //   QN.kQ = 0;
 //   QS.kQ = 0;
@@ -988,14 +988,14 @@ void findKforQOutflow(Parameter* para)
 //         for(i=STARTOFFX+1; i<=nnx+STARTOFFX-2 ; i++){
 //            m = nx*(ny*k + j) + i;
 //            if(geo_mat[m]==GEO_FLUID){
-//               test = (doubflo)0.f;
+//               test = (real)0.f;
 //               for(l=0;l<=26;l++){
 //                  mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
 //                  if(ez[l]==1){
-//                     ON[l] = (doubflo) 1.f; 
+//                     ON[l] = (real) 1.f; 
 //                  }
 //                  else{
-//                     ON[l] = (doubflo) 0.f;
+//                     ON[l] = (real) 0.f;
 //                  }
 //                  test += ON[l];
 //               }
@@ -1030,13 +1030,13 @@ void findQPressX0(Parameter* para, int lev)
 	unsigned int* kk              = para->getParH(lev)->k;
 	//unsigned int sizeQ            = para->getParH(lev)->kOutflowQ; 
 	unsigned int sizeQ            = para->getParH(lev)->QpressX0.kQ;
-	doubflo* rhoBC                = para->getParH(lev)->QpressX0.RhoBC;
-	doubflo u0                    = para->getVelocity(); 
-	doubflo* vx                   = para->getParH(lev)->QpressX0.Vx;     
-	doubflo* vy                   = para->getParH(lev)->QpressX0.Vy;     
-	doubflo* vz                   = para->getParH(lev)->QpressX0.Vz;     
-	doubflo*deltaVz               = para->getParH(lev)->QpressX0.deltaVz;
-	doubflo* QQ                   = para->getParH(lev)->QpressX0.q27[0]; 
+	real* rhoBC                = para->getParH(lev)->QpressX0.RhoBC;
+	real u0                    = para->getVelocity(); 
+	real* vx                   = para->getParH(lev)->QpressX0.Vx;     
+	real* vy                   = para->getParH(lev)->QpressX0.Vy;     
+	real* vz                   = para->getParH(lev)->QpressX0.Vz;     
+	real*deltaVz               = para->getParH(lev)->QpressX0.deltaVz;
+	real* QQ                   = para->getParH(lev)->QpressX0.q27[0]; 
 	QforBoundaryConditions &QIN   = para->getParH(lev)->QpressX0;
 	unsigned int nxny = nx*ny;
 	QIN.kQ = 0;
@@ -1083,41 +1083,41 @@ void findQPressX0(Parameter* para, int lev)
 			if(geo_mat[m]==GEO_FLUID){
 				QIN.k[QIN.kQ]          = kk[m];
 				QIN.kN[QIN.kQ]         = kk[m+1];
-				rhoBC[QIN.kQ]          = (doubflo)0.f;
-				vx[QIN.kQ]             = (doubflo)0.f;
-				vy[QIN.kQ]             = (doubflo)0.f;
+				rhoBC[QIN.kQ]          = (real)0.f;
+				vx[QIN.kQ]             = (real)0.f;
+				vy[QIN.kQ]             = (real)0.f;
 				//vz[QIN.kQ]             = u0;
-				vz[QIN.kQ]             = (doubflo)(u0*2.f)*((-4.f*i*i + nnx*(-2.f - 4.f*STARTOFFX) - 4.f*(-1.5f + STARTOFFX)*(0.5f + STARTOFFX) + i*(-4.f + 4.f*nnx + 8.f*STARTOFFX))*(-4.f*j*j + nny*(-2.f - 4.f*STARTOFFY) - 4.f*(-1.5f + STARTOFFY)*(0.5f + STARTOFFY) + j*(-4.f + 4.f*nny + 8.f*STARTOFFY)))/((2.f - nnx)*(2.f - nnx)*(2.f - nny)*(2.f - nny));
-				//vz[QIN.kQ]             =  (doubflo)(16.f*(u0*2.f)*(i-(STARTOFFX+1)-0.5f)*(li-1.5f-(i-(STARTOFFX+1)))*(j-(STARTOFFY+1)-0.5f)*(lj-1.5f-(j-(STARTOFFY+1))))/(li*lj*li*lj);
-				//vz[QIN.kQ]             = (doubflo)(16.f*(u0*2.f)*i*j*(nx-i)*(ny-j))/(nx*nx*ny*ny);
-				deltaVz[QIN.kQ]        = (doubflo)0.f;
-				Q.q27[dirE   ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirW   ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirN   ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirS   ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirT   ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirB   ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirNE  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirSW  ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirSE  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirNW  ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirTE  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirBW  ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirBE  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirTW  ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirTN  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirBS  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirBN  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirTS  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirZERO][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirTNE ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirTSW ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirTSE ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirTNW ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirBNE ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirBSW ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirBSE ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirBNW ][QIN.kQ] = (doubflo)1.f;
+				vz[QIN.kQ]             = (real)(u0*2.f)*((-4.f*i*i + nnx*(-2.f - 4.f*STARTOFFX) - 4.f*(-1.5f + STARTOFFX)*(0.5f + STARTOFFX) + i*(-4.f + 4.f*nnx + 8.f*STARTOFFX))*(-4.f*j*j + nny*(-2.f - 4.f*STARTOFFY) - 4.f*(-1.5f + STARTOFFY)*(0.5f + STARTOFFY) + j*(-4.f + 4.f*nny + 8.f*STARTOFFY)))/((2.f - nnx)*(2.f - nnx)*(2.f - nny)*(2.f - nny));
+				//vz[QIN.kQ]             =  (real)(16.f*(u0*2.f)*(i-(STARTOFFX+1)-0.5f)*(li-1.5f-(i-(STARTOFFX+1)))*(j-(STARTOFFY+1)-0.5f)*(lj-1.5f-(j-(STARTOFFY+1))))/(li*lj*li*lj);
+				//vz[QIN.kQ]             = (real)(16.f*(u0*2.f)*i*j*(nx-i)*(ny-j))/(nx*nx*ny*ny);
+				deltaVz[QIN.kQ]        = (real)0.f;
+				Q.q27[dirE   ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirW   ][QIN.kQ] = (real)1.f;
+				Q.q27[dirN   ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirS   ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirT   ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirB   ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirNE  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirSW  ][QIN.kQ] = (real)1.f;
+				Q.q27[dirSE  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirNW  ][QIN.kQ] = (real)1.f;
+				Q.q27[dirTE  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirBW  ][QIN.kQ] = (real)1.f;
+				Q.q27[dirBE  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirTW  ][QIN.kQ] = (real)1.f;
+				Q.q27[dirTN  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirBS  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirBN  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirTS  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirZERO][QIN.kQ] = (real)-1.f;
+				Q.q27[dirTNE ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirTSW ][QIN.kQ] = (real)1.f;
+				Q.q27[dirTSE ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirTNW ][QIN.kQ] = (real)1.f;
+				Q.q27[dirBNE ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirBSW ][QIN.kQ] = (real)1.f;
+				Q.q27[dirBSE ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirBNW ][QIN.kQ] = (real)1.f;
 				QIN.kQ++;
 			}
 		}
@@ -1132,10 +1132,10 @@ void findKforQPressX0(Parameter* para, int lev)
 	int   ex[27]={  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,   0,  1,  1,  1,  1, -1, -1, -1, -1};
 	int   ey[27]={  0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,   0,  1,  1, -1, -1,  1,  1, -1, -1};
 	int   ez[27]={  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,  1,   0,  1, -1,  1, -1,  1, -1,  1, -1};
-	doubflo ON[27];
+	real ON[27];
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	unsigned int i, j, k, m, mm, l;
-	doubflo test = (doubflo) 0.f;
+	real test = (real) 0.f;
 	int nx                        = para->getParH(lev)->nx;     
 	int ny                        = para->getParH(lev)->ny; 
 	unsigned int nnx              = para->getParH(lev)->gridNX; 
@@ -1154,14 +1154,14 @@ void findKforQPressX0(Parameter* para, int lev)
 			//for(i=STARTOFFX+1; i<=nnx+STARTOFFX-2 ; i++){
 				m = nx*(ny*k + j) + i;
 				if(geo_mat[m]==GEO_FLUID){
-					test = (doubflo)0.f;
+					test = (real)0.f;
 					for(l=0;l<=26;l++){
 						mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
 						if(ez[l]==1){
-							ON[l] = (doubflo) 1.f; 
+							ON[l] = (real) 1.f; 
 						}
 						else{
-							ON[l] = (doubflo) 0.f;
+							ON[l] = (real) 0.f;
 						}
 						test += ON[l];
 					}
@@ -1195,13 +1195,13 @@ void findQPressX1(Parameter* para, int lev)
 	unsigned int* kk              = para->getParH(lev)->k;
 	//unsigned int sizeQ            = para->getParH(lev)->kOutflowQ; 
 	unsigned int sizeQ            = para->getParH(lev)->QpressX1.kQ;
-	doubflo* rhoBC                = para->getParH(lev)->QpressX1.RhoBC;
-	doubflo u0                    = para->getVelocity(); 	   
-	doubflo* vx                   = para->getParH(lev)->QpressX1.Vx;     
-	doubflo* vy                   = para->getParH(lev)->QpressX1.Vy;     
-	doubflo* vz                   = para->getParH(lev)->QpressX1.Vz;     
-	doubflo*deltaVz               = para->getParH(lev)->QpressX1.deltaVz;
-	doubflo* QQ                   = para->getParH(lev)->QpressX1.q27[0]; 
+	real* rhoBC                = para->getParH(lev)->QpressX1.RhoBC;
+	real u0                    = para->getVelocity(); 	   
+	real* vx                   = para->getParH(lev)->QpressX1.Vx;     
+	real* vy                   = para->getParH(lev)->QpressX1.Vy;     
+	real* vz                   = para->getParH(lev)->QpressX1.Vz;     
+	real*deltaVz               = para->getParH(lev)->QpressX1.deltaVz;
+	real* QQ                   = para->getParH(lev)->QpressX1.q27[0]; 
 	QforBoundaryConditions &QIN   = para->getParH(lev)->QpressX1;
 	unsigned int nxny = nx*ny;
 	QIN.kQ = 0;
@@ -1248,41 +1248,41 @@ void findQPressX1(Parameter* para, int lev)
 			if(geo_mat[m]==GEO_FLUID){
 				QIN.k[QIN.kQ]          = kk[m];
 				QIN.kN[QIN.kQ]         = kk[m-1];
-				rhoBC[QIN.kQ]          = (doubflo)0.f;
-				vx[QIN.kQ]             = (doubflo)0.f;
-				vy[QIN.kQ]             = (doubflo)0.f;
+				rhoBC[QIN.kQ]          = (real)0.f;
+				vx[QIN.kQ]             = (real)0.f;
+				vy[QIN.kQ]             = (real)0.f;
 				//vz[QIN.kQ]             = u0;
-				vz[QIN.kQ]             = (doubflo)(u0*2.f)*((-4.f*i*i + nnx*(-2.f - 4.f*STARTOFFX) - 4.f*(-1.5f + STARTOFFX)*(0.5f + STARTOFFX) + i*(-4.f + 4.f*nnx + 8.f*STARTOFFX))*(-4.f*j*j + nny*(-2.f - 4.f*STARTOFFY) - 4.f*(-1.5f + STARTOFFY)*(0.5f + STARTOFFY) + j*(-4.f + 4.f*nny + 8.f*STARTOFFY)))/((2.f - nnx)*(2.f - nnx)*(2.f - nny)*(2.f - nny));
-				//vz[QIN.kQ]             =  (doubflo)(16.f*(u0*2.f)*(i-(STARTOFFX+1)-0.5f)*(li-1.5f-(i-(STARTOFFX+1)))*(j-(STARTOFFY+1)-0.5f)*(lj-1.5f-(j-(STARTOFFY+1))))/(li*lj*li*lj);
-				//vz[QIN.kQ]             = (doubflo)(16.f*(u0*2.f)*i*j*(nx-i)*(ny-j))/(nx*nx*ny*ny);
-				deltaVz[QIN.kQ]        = (doubflo)0.f;
-				Q.q27[dirE   ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirW   ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirN   ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirS   ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirT   ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirB   ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirNE  ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirSW  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirSE  ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirNW  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirTE  ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirBW  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirBE  ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirTW  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirTN  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirBS  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirBN  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirTS  ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirZERO][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirTNE ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirTSW ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirTSE ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirTNW ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirBNE ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirBSW ][QIN.kQ] = (doubflo)-1.f;
-				Q.q27[dirBSE ][QIN.kQ] = (doubflo)1.f;
-				Q.q27[dirBNW ][QIN.kQ] = (doubflo)-1.f;
+				vz[QIN.kQ]             = (real)(u0*2.f)*((-4.f*i*i + nnx*(-2.f - 4.f*STARTOFFX) - 4.f*(-1.5f + STARTOFFX)*(0.5f + STARTOFFX) + i*(-4.f + 4.f*nnx + 8.f*STARTOFFX))*(-4.f*j*j + nny*(-2.f - 4.f*STARTOFFY) - 4.f*(-1.5f + STARTOFFY)*(0.5f + STARTOFFY) + j*(-4.f + 4.f*nny + 8.f*STARTOFFY)))/((2.f - nnx)*(2.f - nnx)*(2.f - nny)*(2.f - nny));
+				//vz[QIN.kQ]             =  (real)(16.f*(u0*2.f)*(i-(STARTOFFX+1)-0.5f)*(li-1.5f-(i-(STARTOFFX+1)))*(j-(STARTOFFY+1)-0.5f)*(lj-1.5f-(j-(STARTOFFY+1))))/(li*lj*li*lj);
+				//vz[QIN.kQ]             = (real)(16.f*(u0*2.f)*i*j*(nx-i)*(ny-j))/(nx*nx*ny*ny);
+				deltaVz[QIN.kQ]        = (real)0.f;
+				Q.q27[dirE   ][QIN.kQ] = (real)1.f;
+				Q.q27[dirW   ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirN   ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirS   ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirT   ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirB   ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirNE  ][QIN.kQ] = (real)1.f;
+				Q.q27[dirSW  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirSE  ][QIN.kQ] = (real)1.f;
+				Q.q27[dirNW  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirTE  ][QIN.kQ] = (real)1.f;
+				Q.q27[dirBW  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirBE  ][QIN.kQ] = (real)1.f;
+				Q.q27[dirTW  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirTN  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirBS  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirBN  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirTS  ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirZERO][QIN.kQ] = (real)-1.f;
+				Q.q27[dirTNE ][QIN.kQ] = (real)1.f;
+				Q.q27[dirTSW ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirTSE ][QIN.kQ] = (real)1.f;
+				Q.q27[dirTNW ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirBNE ][QIN.kQ] = (real)1.f;
+				Q.q27[dirBSW ][QIN.kQ] = (real)-1.f;
+				Q.q27[dirBSE ][QIN.kQ] = (real)1.f;
+				Q.q27[dirBNW ][QIN.kQ] = (real)-1.f;
 				QIN.kQ++;
 			}
 		}
@@ -1297,10 +1297,10 @@ void findKforQPressX1(Parameter* para, int lev)
 	int   ex[27]={  1, -1,  0,  0,  0,  0,  1, -1,  1, -1,  1, -1,  1, -1,  0,  0,  0,  0,   0,  1,  1,  1,  1, -1, -1, -1, -1};
 	int   ey[27]={  0,  0,  1, -1,  0,  0,  1, -1, -1,  1,  0,  0,  0,  0,  1, -1,  1, -1,   0,  1,  1, -1, -1,  1,  1, -1, -1};
 	int   ez[27]={  0,  0,  0,  0,  1, -1,  0,  0,  0,  0,  1, -1, -1,  1,  1, -1, -1,  1,   0,  1, -1,  1, -1,  1, -1,  1, -1};
-	doubflo ON[27];
+	real ON[27];
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	unsigned int i, j, k, m, mm, l;
-	doubflo test = (doubflo) 0.f;
+	real test = (real) 0.f;
 	int nx                        = para->getParH(lev)->nx;     
 	int ny                        = para->getParH(lev)->ny; 
 	unsigned int nnx              = para->getParH(lev)->gridNX; 
@@ -1319,14 +1319,14 @@ void findKforQPressX1(Parameter* para, int lev)
 				//for(i=STARTOFFX+1; i<=nnx+STARTOFFX-2 ; i++){
 				m = nx*(ny*k + j) + i;
 				if(geo_mat[m]==GEO_FLUID){
-					test = (doubflo)0.f;
+					test = (real)0.f;
 					for(l=0;l<=26;l++){
 						mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
 						if(ez[l]==1){
-							ON[l] = (doubflo) 1.f; 
+							ON[l] = (real) 1.f; 
 						}
 						else{
-							ON[l] = (doubflo) 0.f;
+							ON[l] = (real) 0.f;
 						}
 						test += ON[l];
 					}
diff --git a/src/VirtualFluids_GPU/FindQ/FindQ.h b/src/VirtualFluids_GPU/FindQ/FindQ.h
index d70dc483f..54ccfd62d 100644
--- a/src/VirtualFluids_GPU/FindQ/FindQ.h
+++ b/src/VirtualFluids_GPU/FindQ/FindQ.h
@@ -9,7 +9,7 @@ extern "C" void findQ(Parameter* para, int lev);
 
 extern "C" void findKforQ(Parameter* para, int lev);
 
-extern "C" void findQ_MG(int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int nnz, int* geo_mat, unsigned int* kk, unsigned int sizeQ, doubflo* QQ, QforBoundaryConditions &QIN);
+extern "C" void findQ_MG(int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int nnz, int* geo_mat, unsigned int* kk, unsigned int sizeQ, real* QQ, QforBoundaryConditions &QIN);
 
 extern "C" void findKforQ_MG(int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int nnz, int* geo_mat, QforBoundaryConditions &QIN);
 
@@ -26,10 +26,10 @@ extern "C" void findQOutflow(Parameter* para);
 extern "C" void findKforQOutflow(Parameter* para);
 
 //extern "C" void findQSchlaff( int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int nnz, int* geo_mat, unsigned int* kk, 
-//                              unsigned int sizeQN, doubflo* vxN, doubflo* vyN, doubflo* vzN, doubflo*deltaVN, doubflo* QQN, QforBoundaryConditions &QNin,
-//                              unsigned int sizeQS, doubflo* vxS, doubflo* vyS, doubflo* vzS, doubflo*deltaVS, doubflo* QQS, QforBoundaryConditions &QSin,
-//                              unsigned int sizeQE, doubflo* vxE, doubflo* vyE, doubflo* vzE, doubflo*deltaVE, doubflo* QQE, QforBoundaryConditions &QEin,
-//                              unsigned int sizeQW, doubflo* vxW, doubflo* vyW, doubflo* vzW, doubflo*deltaVW, doubflo* QQW, QforBoundaryConditions &QWin);
+//                              unsigned int sizeQN, real* vxN, real* vyN, real* vzN, real*deltaVN, real* QQN, QforBoundaryConditions &QNin,
+//                              unsigned int sizeQS, real* vxS, real* vyS, real* vzS, real*deltaVS, real* QQS, QforBoundaryConditions &QSin,
+//                              unsigned int sizeQE, real* vxE, real* vyE, real* vzE, real*deltaVE, real* QQE, QforBoundaryConditions &QEin,
+//                              unsigned int sizeQW, real* vxW, real* vyW, real* vzW, real*deltaVW, real* QQW, QforBoundaryConditions &QWin);
 //
 //extern "C" void findKforQSchlaff(int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int nnz, int* geo_mat, QforBoundaryConditions &QN, QforBoundaryConditions &QS, QforBoundaryConditions &QE, QforBoundaryConditions &QW);
 
diff --git a/src/VirtualFluids_GPU/GPU/AdvecDiffBCs27.cu b/src/VirtualFluids_GPU/GPU/AdvecDiffBCs27.cu
index c727d044b..a66fd44a3 100644
--- a/src/VirtualFluids_GPU/GPU/AdvecDiffBCs27.cu
+++ b/src/VirtualFluids_GPU/GPU/AdvecDiffBCs27.cu
@@ -5,16 +5,16 @@
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QADPress7(  int inx,
                                        int iny,
-                                       doubflo* DD, 
-                                       doubflo* DD7, 
-                                       doubflo* temp,
-                                       doubflo* velo,
-                                       doubflo diffusivity,
+                                       real* DD, 
+                                       real* DD7, 
+                                       real* temp,
+                                       real* velo,
+                                       real diffusivity,
                                        int* k_Q, 
-                                       doubflo* QQ,
+                                       real* QQ,
                                        unsigned int sizeQ,
                                        int kQ, 
-                                       doubflo om1, 
+                                       real om1, 
                                        unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
@@ -120,7 +120,7 @@ extern "C" __global__ void QADPress7(  int inx,
    if(k<kQ)
    {
       //////////////////////////////////////////////////////////////////////////////////
-      doubflo  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB;//, 
+      real  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB;//, 
       //         *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
       //         *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
       //         *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -183,7 +183,7 @@ extern "C" __global__ void QADPress7(  int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
          f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -213,52 +213,52 @@ extern "C" __global__ void QADPress7(  int inx,
       f_TNW  = (D.f[dirBSE ])[kbse ];
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      /*doubflo drho*/;
-      //doubflo vx1_Inflow   = zero;
-      //doubflo vx2_Inflow   = zero;
-      //doubflo vx3_Inflow   = velo[k];
-      //doubflo ux_sq_Inflow = vx1_Inflow * vx1_Inflow;
-      //doubflo uy_sq_Inflow = vx2_Inflow * vx2_Inflow;
-      //doubflo uz_sq_Inflow = vx3_Inflow * vx3_Inflow;
+      /*real drho*/;
+      //real vx1_Inflow   = zero;
+      //real vx2_Inflow   = zero;
+      //real vx3_Inflow   = velo[k];
+      //real ux_sq_Inflow = vx1_Inflow * vx1_Inflow;
+      //real uy_sq_Inflow = vx2_Inflow * vx2_Inflow;
+      //real uz_sq_Inflow = vx3_Inflow * vx3_Inflow;
 
 
       //drho   =    f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
       //            f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
       //            f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
 
-      //doubflo vx1 =  ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) +
+      //real vx1 =  ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) +
       //               ((f_BE - f_TW)   + (f_TE - f_BW))   + ((f_SE - f_NW)   + (f_NE - f_SW)) +
       //               (f_E - f_W); 
 
-      //doubflo vx2 =  (-(f_TSE - f_BNW) + (f_TNW - f_BSE))  + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) +
+      //real vx2 =  (-(f_TSE - f_BNW) + (f_TNW - f_BSE))  + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) +
       //               ((f_BN - f_TS)   + (f_TN - f_BS))    + (-(f_SE - f_NW)  + (f_NE - f_SW)) +
       //               (f_N - f_S); 
 
-      //doubflo vx3 =  ((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) +
+      //real vx3 =  ((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) +
       //               (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
       //               (f_T - f_B); 
 
-      doubflo rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ ((D.f[dirZERO])[kzero]);
-      doubflo rho    =  rho0 + one;
-      doubflo OORho  =  one/rho;
-      doubflo vx1    =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
-      doubflo vx2    =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
-      doubflo vx3    =  OORho*((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
-
-	  //doubflo cu_sq       =1.5*(vx1*vx1+vx2*vx2+vx3*vx3);
-      doubflo ux_sq       = vx1 * vx1;
-      doubflo uy_sq       = vx2 * vx2;
-      doubflo uz_sq       = vx3 * vx3;
-      doubflo omegaD     = three - sqrt(three);
-      doubflo Lam         = -(c1o2-one/omegaD);
-      doubflo nue_d       = Lam/three;
-      //doubflo ae          = zero;
-      doubflo ae          = diffusivity/nue_d - one;
-
-      doubflo f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
-      doubflo /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B;
-      doubflo /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B;
-      //doubflo TempD = temp[k];
+      real rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ ((D.f[dirZERO])[kzero]);
+      real rho    =  rho0 + one;
+      real OORho  =  one/rho;
+      real vx1    =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
+      real vx2    =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
+      real vx3    =  OORho*((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
+
+	  //real cu_sq       =1.5*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real ux_sq       = vx1 * vx1;
+      real uy_sq       = vx2 * vx2;
+      real uz_sq       = vx3 * vx3;
+      real omegaD     = three - sqrt(three);
+      real Lam         = -(c1o2-one/omegaD);
+      real nue_d       = Lam/three;
+      //real ae          = zero;
+      real ae          = diffusivity/nue_d - one;
+
+      real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
+      real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B;
+      real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B;
+      //real TempD = temp[k];
 
 
       f7_ZERO =  (D7.f[0])[kzero];
@@ -269,7 +269,7 @@ extern "C" __global__ void QADPress7(  int inx,
       f7_B    =  (D7.f[5])[kt   ];
       f7_T    =  (D7.f[6])[kb   ];
 
-      doubflo ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B;
+      real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B;
 
       //feq7_ZERO = ConcD*(c1o3*(ae*(-3.0))-(ux_sq+uy_sq+uz_sq));
       feq7_E    = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2);
@@ -323,7 +323,7 @@ extern "C" __global__ void QADPress7(  int inx,
 
       //////////////////////////////////////////////////////////////////////////
       //mit Q's
-      doubflo /*feq,*/ q;
+      real /*feq,*/ q;
       q = q_dirE[k];
       if (q>=zero && q<=one)
       {
@@ -368,7 +368,7 @@ extern "C" __global__ void QADPress7(  int inx,
 
       ////////////////////////////////////////////////////////////////////////////
       ////ohne Q's
-      //doubflo /*feq,*/ q;
+      //real /*feq,*/ q;
       //q = q_dirE[k];
       //if (q>=zero && q<=one)
       //{
@@ -449,16 +449,16 @@ extern "C" __global__ void QADPress7(  int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QADPress27( int inx,
                                        int iny,
-                                       doubflo* DD, 
-                                       doubflo* DD27, 
-                                       doubflo* temp,
-                                       doubflo* velo,
-                                       doubflo diffusivity,
+                                       real* DD, 
+                                       real* DD27, 
+                                       real* temp,
+                                       real* velo,
+                                       real diffusivity,
                                        int* k_Q, 
-                                       doubflo* QQ,
+                                       real* QQ,
                                        unsigned int sizeQ,
                                        int kQ, 
-                                       doubflo om1, 
+                                       real om1, 
                                        unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
@@ -602,7 +602,7 @@ extern "C" __global__ void QADPress27( int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
          *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
          *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
          *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -664,35 +664,35 @@ extern "C" __global__ void QADPress27( int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_ZERO = (D.f[dirZERO])[kzero];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_ZERO = (D.f[dirZERO])[kzero];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, /*drho, feq,*/ q;
+      real vx1, vx2, vx3, /*drho, feq,*/ q;
       //drho   = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
       //         f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
       //         f_T + f_B + f_N + f_S + f_E + f_W + f_ZERO; 
@@ -709,142 +709,142 @@ extern "C" __global__ void QADPress27( int inx,
       //vx3    = ((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) +
       //         (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
       //         (f_T - f_B); 
-      doubflo rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ f_ZERO;
-      doubflo rho    =  rho0 + one;
-      doubflo OORho  =  one/rho;
+      real rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ f_ZERO;
+      real rho    =  rho0 + one;
+      real OORho  =  one/rho;
       vx1            =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
       vx2            =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
       vx3            =  OORho*((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f27_W    = (D27.f[dirE   ])[ke   ];
-      doubflo f27_E    = (D27.f[dirW   ])[kw   ];
-      doubflo f27_S    = (D27.f[dirN   ])[kn   ];
-      doubflo f27_N    = (D27.f[dirS   ])[ks   ];
-      doubflo f27_B    = (D27.f[dirT   ])[kt   ];
-      doubflo f27_T    = (D27.f[dirB   ])[kb   ];
-      doubflo f27_SW   = (D27.f[dirNE  ])[kne  ];
-      doubflo f27_NE   = (D27.f[dirSW  ])[ksw  ];
-      doubflo f27_NW   = (D27.f[dirSE  ])[kse  ];
-      doubflo f27_SE   = (D27.f[dirNW  ])[knw  ];
-      doubflo f27_BW   = (D27.f[dirTE  ])[kte  ];
-      doubflo f27_TE   = (D27.f[dirBW  ])[kbw  ];
-      doubflo f27_TW   = (D27.f[dirBE  ])[kbe  ];
-      doubflo f27_BE   = (D27.f[dirTW  ])[ktw  ];
-      doubflo f27_BS   = (D27.f[dirTN  ])[ktn  ];
-      doubflo f27_TN   = (D27.f[dirBS  ])[kbs  ];
-      doubflo f27_TS   = (D27.f[dirBN  ])[kbn  ];
-      doubflo f27_BN   = (D27.f[dirTS  ])[kts  ];
-      doubflo f27_ZERO = (D27.f[dirZERO])[kzero];
-      doubflo f27_BSW  = (D27.f[dirTNE ])[ktne ];
-      doubflo f27_BNE  = (D27.f[dirTSW ])[ktsw ];
-      doubflo f27_BNW  = (D27.f[dirTSE ])[ktse ];
-      doubflo f27_BSE  = (D27.f[dirTNW ])[ktnw ];
-      doubflo f27_TSW  = (D27.f[dirBNE ])[kbne ];
-      doubflo f27_TNE  = (D27.f[dirBSW ])[kbsw ];
-      doubflo f27_TNW  = (D27.f[dirBSE ])[kbse ];
-      doubflo f27_TSE  = (D27.f[dirBNW ])[kbnw ];
+      real f27_W    = (D27.f[dirE   ])[ke   ];
+      real f27_E    = (D27.f[dirW   ])[kw   ];
+      real f27_S    = (D27.f[dirN   ])[kn   ];
+      real f27_N    = (D27.f[dirS   ])[ks   ];
+      real f27_B    = (D27.f[dirT   ])[kt   ];
+      real f27_T    = (D27.f[dirB   ])[kb   ];
+      real f27_SW   = (D27.f[dirNE  ])[kne  ];
+      real f27_NE   = (D27.f[dirSW  ])[ksw  ];
+      real f27_NW   = (D27.f[dirSE  ])[kse  ];
+      real f27_SE   = (D27.f[dirNW  ])[knw  ];
+      real f27_BW   = (D27.f[dirTE  ])[kte  ];
+      real f27_TE   = (D27.f[dirBW  ])[kbw  ];
+      real f27_TW   = (D27.f[dirBE  ])[kbe  ];
+      real f27_BE   = (D27.f[dirTW  ])[ktw  ];
+      real f27_BS   = (D27.f[dirTN  ])[ktn  ];
+      real f27_TN   = (D27.f[dirBS  ])[kbs  ];
+      real f27_TS   = (D27.f[dirBN  ])[kbn  ];
+      real f27_BN   = (D27.f[dirTS  ])[kts  ];
+      real f27_ZERO = (D27.f[dirZERO])[kzero];
+      real f27_BSW  = (D27.f[dirTNE ])[ktne ];
+      real f27_BNE  = (D27.f[dirTSW ])[ktsw ];
+      real f27_BNW  = (D27.f[dirTSE ])[ktse ];
+      real f27_BSE  = (D27.f[dirTNW ])[ktnw ];
+      real f27_TSW  = (D27.f[dirBNE ])[kbne ];
+      real f27_TNE  = (D27.f[dirBSW ])[kbsw ];
+      real f27_TNW  = (D27.f[dirBSE ])[kbse ];
+      real f27_TSE  = (D27.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
+      real ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
                         f27_BN  + f27_TS  + f27_TN  + f27_BS  + f27_BE  + f27_TW  + f27_TE  + f27_BW  + f27_SE + f27_NW + f27_NE + f27_SW + 
                         f27_T   + f27_B   + f27_N   + f27_S   + f27_E   + f27_W   + f27_ZERO; 
 
-      ////doubflo feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
-      //doubflo feq27_E    =   c2over27* (ConcD+(one+ConcD)*(three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq));
-      //doubflo feq27_W    =   c2over27* (ConcD+(one+ConcD)*(three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq));
-      //doubflo feq27_N    =   c2over27* (ConcD+(one+ConcD)*(three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq));
-      //doubflo feq27_S    =   c2over27* (ConcD+(one+ConcD)*(three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq));
-      //doubflo feq27_T    =   c2over27* (ConcD+(one+ConcD)*(three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq));
-      //doubflo feq27_B    =   c2over27* (ConcD+(one+ConcD)*(three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq));
-      //doubflo feq27_NE   =   c1over54* (ConcD+(one+ConcD)*(three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq));
-      //doubflo feq27_SW   =   c1over54* (ConcD+(one+ConcD)*(three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq));
-      //doubflo feq27_SE   =   c1over54* (ConcD+(one+ConcD)*(three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq));
-      //doubflo feq27_NW   =   c1over54* (ConcD+(one+ConcD)*(three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq));
-      //doubflo feq27_TE   =   c1over54* (ConcD+(one+ConcD)*(three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq));
-      //doubflo feq27_BW   =   c1over54* (ConcD+(one+ConcD)*(three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq));
-      //doubflo feq27_BE   =   c1over54* (ConcD+(one+ConcD)*(three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq));
-      //doubflo feq27_TW   =   c1over54* (ConcD+(one+ConcD)*(three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq));
-      //doubflo feq27_TN   =   c1over54* (ConcD+(one+ConcD)*(three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq));
-      //doubflo feq27_BS   =   c1over54* (ConcD+(one+ConcD)*(three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq));
-      //doubflo feq27_BN   =   c1over54* (ConcD+(one+ConcD)*(three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq));
-      //doubflo feq27_TS   =   c1over54* (ConcD+(one+ConcD)*(three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq));
-      //doubflo feq27_TNE  =   c1over216*(ConcD+(one+ConcD)*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq));
-      //doubflo feq27_BSW  =   c1over216*(ConcD+(one+ConcD)*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq));
-      //doubflo feq27_BNE  =   c1over216*(ConcD+(one+ConcD)*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq));
-      //doubflo feq27_TSW  =   c1over216*(ConcD+(one+ConcD)*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq));
-      //doubflo feq27_TSE  =   c1over216*(ConcD+(one+ConcD)*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq));
-      //doubflo feq27_BNW  =   c1over216*(ConcD+(one+ConcD)*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq));
-      //doubflo feq27_BSE  =   c1over216*(ConcD+(one+ConcD)*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq));
-      //doubflo feq27_TNW  =   c1over216*(ConcD+(one+ConcD)*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq));
+      ////real feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
+      //real feq27_E    =   c2over27* (ConcD+(one+ConcD)*(three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq));
+      //real feq27_W    =   c2over27* (ConcD+(one+ConcD)*(three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq));
+      //real feq27_N    =   c2over27* (ConcD+(one+ConcD)*(three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq));
+      //real feq27_S    =   c2over27* (ConcD+(one+ConcD)*(three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq));
+      //real feq27_T    =   c2over27* (ConcD+(one+ConcD)*(three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq));
+      //real feq27_B    =   c2over27* (ConcD+(one+ConcD)*(three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq));
+      //real feq27_NE   =   c1over54* (ConcD+(one+ConcD)*(three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq));
+      //real feq27_SW   =   c1over54* (ConcD+(one+ConcD)*(three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq));
+      //real feq27_SE   =   c1over54* (ConcD+(one+ConcD)*(three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq));
+      //real feq27_NW   =   c1over54* (ConcD+(one+ConcD)*(three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq));
+      //real feq27_TE   =   c1over54* (ConcD+(one+ConcD)*(three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq));
+      //real feq27_BW   =   c1over54* (ConcD+(one+ConcD)*(three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq));
+      //real feq27_BE   =   c1over54* (ConcD+(one+ConcD)*(three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq));
+      //real feq27_TW   =   c1over54* (ConcD+(one+ConcD)*(three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq));
+      //real feq27_TN   =   c1over54* (ConcD+(one+ConcD)*(three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq));
+      //real feq27_BS   =   c1over54* (ConcD+(one+ConcD)*(three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq));
+      //real feq27_BN   =   c1over54* (ConcD+(one+ConcD)*(three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq));
+      //real feq27_TS   =   c1over54* (ConcD+(one+ConcD)*(three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq));
+      //real feq27_TNE  =   c1over216*(ConcD+(one+ConcD)*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq));
+      //real feq27_BSW  =   c1over216*(ConcD+(one+ConcD)*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq));
+      //real feq27_BNE  =   c1over216*(ConcD+(one+ConcD)*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq));
+      //real feq27_TSW  =   c1over216*(ConcD+(one+ConcD)*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq));
+      //real feq27_TSE  =   c1over216*(ConcD+(one+ConcD)*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq));
+      //real feq27_BNW  =   c1over216*(ConcD+(one+ConcD)*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq));
+      //real feq27_BSE  =   c1over216*(ConcD+(one+ConcD)*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq));
+      //real feq27_TNW  =   c1over216*(ConcD+(one+ConcD)*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq));
       //
-      doubflo feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
-      doubflo feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
-      doubflo feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
-      doubflo feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
-      doubflo feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
-      doubflo feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
-      doubflo feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
-      doubflo feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
-      doubflo feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
-      doubflo feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
-      doubflo feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
-      doubflo feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
-      doubflo feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
-      doubflo feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
-      doubflo feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
-      doubflo feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
-      doubflo feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
-      doubflo feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
-      doubflo feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-      doubflo feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
+      real feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
+      real feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
+      real feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
+      real feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
+      real feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
+      real feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
+      real feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
+      real feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
+      real feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
+      real feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
+      real feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
+      real feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
+      real feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
+      real feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
+      real feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
+      real feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
+      real feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
+      real feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
+      real feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
+      real feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
+      real feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
+      real feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
+      real feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
+      real feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
+      real feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
+      real feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      //doubflo TempD = temp[k];
+      //real TempD = temp[k];
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       // velocity inflow
       //vx1   = zero;
       //vx2   = zero;
       //vx3   = velo[k];
 
-      //doubflo feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
-      doubflo feqW27_E    =  feq27_E  ;// c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
-      doubflo feqW27_W    =  feq27_W  ;// c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
-      doubflo feqW27_N    =  feq27_N  ;// c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
-      doubflo feqW27_S    =  feq27_S  ;// c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
-      doubflo feqW27_T    =  feq27_T  ;// c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
-      doubflo feqW27_B    =  feq27_B  ;// c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
-      doubflo feqW27_NE   =  feq27_NE ;// c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
-      doubflo feqW27_SW   =  feq27_SW ;// c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
-      doubflo feqW27_SE   =  feq27_SE ;// c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
-      doubflo feqW27_NW   =  feq27_NW ;// c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
-      doubflo feqW27_TE   =  feq27_TE ;// c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
-      doubflo feqW27_BW   =  feq27_BW ;// c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
-      doubflo feqW27_BE   =  feq27_BE ;// c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
-      doubflo feqW27_TW   =  feq27_TW ;// c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
-      doubflo feqW27_TN   =  feq27_TN ;// c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
-      doubflo feqW27_BS   =  feq27_BS ;// c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
-      doubflo feqW27_BN   =  feq27_BN ;// c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
-      doubflo feqW27_TS   =  feq27_TS ;// c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
-      doubflo feqW27_TNE  =  feq27_TNE;// c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-      doubflo feqW27_BSW  =  feq27_BSW;// c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-      doubflo feqW27_BNE  =  feq27_BNE;// c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-      doubflo feqW27_TSW  =  feq27_TSW;// c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-      doubflo feqW27_TSE  =  feq27_TSE;// c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-      doubflo feqW27_BNW  =  feq27_BNW;// c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-      doubflo feqW27_BSE  =  feq27_BSE;// c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-      doubflo feqW27_TNW  =  feq27_TNW;// c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
+      //real feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
+      real feqW27_E    =  feq27_E  ;// c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
+      real feqW27_W    =  feq27_W  ;// c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
+      real feqW27_N    =  feq27_N  ;// c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
+      real feqW27_S    =  feq27_S  ;// c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
+      real feqW27_T    =  feq27_T  ;// c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
+      real feqW27_B    =  feq27_B  ;// c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
+      real feqW27_NE   =  feq27_NE ;// c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
+      real feqW27_SW   =  feq27_SW ;// c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
+      real feqW27_SE   =  feq27_SE ;// c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
+      real feqW27_NW   =  feq27_NW ;// c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
+      real feqW27_TE   =  feq27_TE ;// c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
+      real feqW27_BW   =  feq27_BW ;// c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
+      real feqW27_BE   =  feq27_BE ;// c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
+      real feqW27_TW   =  feq27_TW ;// c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
+      real feqW27_TN   =  feq27_TN ;// c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
+      real feqW27_BS   =  feq27_BS ;// c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
+      real feqW27_BN   =  feq27_BN ;// c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
+      real feqW27_TS   =  feq27_TS ;// c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
+      real feqW27_TNE  =  feq27_TNE;// c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
+      real feqW27_BSW  =  feq27_BSW;// c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
+      real feqW27_BNE  =  feq27_BNE;// c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
+      real feqW27_TSW  =  feq27_TSW;// c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
+      real feqW27_TSE  =  feq27_TSE;// c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
+      real feqW27_BNW  =  feq27_BNW;// c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
+      real feqW27_BSE  =  feq27_BSE;// c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
+      real feqW27_TNW  =  feq27_TNW;// c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo omegaD     = three - sqrt(three);
-      //doubflo Lam        = -(c1o2-one/omegaD);
-      //doubflo nue_d      = Lam/three;
-      //doubflo ae         = zero;
-      //doubflo ae         = diffusivity/nue_d - one;
+      real omegaD     = three - sqrt(three);
+      //real Lam        = -(c1o2-one/omegaD);
+      //real nue_d      = Lam/three;
+      //real ae         = zero;
+      //real ae         = diffusivity/nue_d - one;
 
 
       //////////////////////////////////////////////////////////////////////////
@@ -983,16 +983,16 @@ extern "C" __global__ void QADPress27( int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QADVel7( int inx,
                                     int iny,
-                                    doubflo* DD, 
-                                    doubflo* DD7, 
-                                    doubflo* temp,
-                                    doubflo* velo,
-                                    doubflo diffusivity,
+                                    real* DD, 
+                                    real* DD7, 
+                                    real* temp,
+                                    real* velo,
+                                    real diffusivity,
                                     int* k_Q, 
-                                    doubflo* QQ,
+                                    real* QQ,
                                     unsigned int sizeQ,
                                     int kQ, 
-                                    doubflo om1, 
+                                    real om1, 
                                     unsigned int* neighborX,
                                     unsigned int* neighborY,
                                     unsigned int* neighborZ,
@@ -1098,7 +1098,7 @@ extern "C" __global__ void QADVel7( int inx,
    if(k<kQ)
    {
       //////////////////////////////////////////////////////////////////////////////////
-      doubflo  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB;//, 
+      real  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB;//, 
       //         *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
       //         *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
       //         *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -1161,7 +1161,7 @@ extern "C" __global__ void QADVel7( int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
          f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -1191,52 +1191,52 @@ extern "C" __global__ void QADVel7( int inx,
       f_TNW  = (D.f[dirBSE ])[kbse ];
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      /*doubflo drho*/;
-      doubflo vx1_Inflow   = zero;
-      doubflo vx2_Inflow   = zero;
-      doubflo vx3_Inflow   = velo[k];
-      doubflo ux_sq_Inflow = vx1_Inflow * vx1_Inflow;
-      doubflo uy_sq_Inflow = vx2_Inflow * vx2_Inflow;
-      doubflo uz_sq_Inflow = vx3_Inflow * vx3_Inflow;
+      /*real drho*/;
+      real vx1_Inflow   = zero;
+      real vx2_Inflow   = zero;
+      real vx3_Inflow   = velo[k];
+      real ux_sq_Inflow = vx1_Inflow * vx1_Inflow;
+      real uy_sq_Inflow = vx2_Inflow * vx2_Inflow;
+      real uz_sq_Inflow = vx3_Inflow * vx3_Inflow;
 
 
       ////drho   =    f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
       ////            f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
       ////            f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
 
-      //doubflo vx1 =  ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) +
+      //real vx1 =  ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) +
       //               ((f_BE - f_TW)   + (f_TE - f_BW))   + ((f_SE - f_NW)   + (f_NE - f_SW)) +
       //               (f_E - f_W); 
 
-      //doubflo vx2 =  (-(f_TSE - f_BNW) + (f_TNW - f_BSE))  + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) +
+      //real vx2 =  (-(f_TSE - f_BNW) + (f_TNW - f_BSE))  + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) +
       //               ((f_BN - f_TS)   + (f_TN - f_BS))    + (-(f_SE - f_NW)  + (f_NE - f_SW)) +
       //               (f_N - f_S); 
 
-      //doubflo vx3 =  ((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) +
+      //real vx3 =  ((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) +
       //               (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
       //               (f_T - f_B); 
 
-      doubflo rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ ((D.f[dirZERO])[kzero]);
-      doubflo rho    =  rho0 + one;
-      doubflo OORho  =  one/rho;
-      doubflo vx1    =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
-      doubflo vx2    =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
-      doubflo vx3    =  OORho*((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
-
-	  //doubflo cu_sq       =1.5f*(vx1*vx1+vx2*vx2+vx3*vx3);
-      doubflo ux_sq       = vx1 * vx1;
-      doubflo uy_sq       = vx2 * vx2;
-      doubflo uz_sq       = vx3 * vx3;
-      doubflo omegaD     = three - sqrt(three);
-      doubflo Lam         = -(c1o2-one/omegaD);
-      doubflo nue_d       = Lam/three;
-      //doubflo ae          = zero;
-      doubflo ae          = diffusivity/nue_d - one;
-
-      doubflo f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
-      doubflo /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B;
-      doubflo /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B;
-      doubflo TempD = temp[k];
+      real rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ ((D.f[dirZERO])[kzero]);
+      real rho    =  rho0 + one;
+      real OORho  =  one/rho;
+      real vx1    =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
+      real vx2    =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
+      real vx3    =  OORho*((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
+
+	  //real cu_sq       =1.5f*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real ux_sq       = vx1 * vx1;
+      real uy_sq       = vx2 * vx2;
+      real uz_sq       = vx3 * vx3;
+      real omegaD     = three - sqrt(three);
+      real Lam         = -(c1o2-one/omegaD);
+      real nue_d       = Lam/three;
+      //real ae          = zero;
+      real ae          = diffusivity/nue_d - one;
+
+      real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
+      real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B;
+      real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B;
+      real TempD = temp[k];
 
 
       f7_ZERO =  (D7.f[0])[kzero];
@@ -1247,7 +1247,7 @@ extern "C" __global__ void QADVel7( int inx,
       f7_B    =  (D7.f[5])[kt   ];
       f7_T    =  (D7.f[6])[kb   ];
 
-      doubflo ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B;
+      real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B;
 
       //feq7_ZERO = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq));
       feq7_E    = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2);
@@ -1301,7 +1301,7 @@ extern "C" __global__ void QADVel7( int inx,
 
       //////////////////////////////////////////////////////////////////////////
       //mit Q's
-      doubflo /*feq,*/ q;
+      real /*feq,*/ q;
       q = q_dirE[k];
       if (q>=zero && q<=one)
       {
@@ -1346,7 +1346,7 @@ extern "C" __global__ void QADVel7( int inx,
 
       ////////////////////////////////////////////////////////////////////////////
       ////ohne Q's
-      //doubflo /*feq,*/ q;
+      //real /*feq,*/ q;
       //q = q_dirE[k];
       //if (q>=zero && q<=one)
       //{
@@ -1427,16 +1427,16 @@ extern "C" __global__ void QADVel7( int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QADVel27(int inx,
                                     int iny,
-                                    doubflo* DD, 
-                                    doubflo* DD27, 
-                                    doubflo* temp,
-                                    doubflo* velo,
-                                    doubflo diffusivity,
+                                    real* DD, 
+                                    real* DD27, 
+                                    real* temp,
+                                    real* velo,
+                                    real diffusivity,
                                     int* k_Q, 
-                                    doubflo* QQ,
+                                    real* QQ,
                                     unsigned int sizeQ,
                                     int kQ, 
-                                    doubflo om1, 
+                                    real om1, 
                                     unsigned int* neighborX,
                                     unsigned int* neighborY,
                                     unsigned int* neighborZ,
@@ -1580,7 +1580,7 @@ extern "C" __global__ void QADVel27(int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -1642,35 +1642,35 @@ extern "C" __global__ void QADVel27(int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_ZERO = (D.f[dirZERO])[kzero];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_ZERO = (D.f[dirZERO])[kzero];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, /*drho, feq,*/ q;
+      real vx1, vx2, vx3, /*drho, feq,*/ q;
       ////drho   = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
       ////         f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
       ////         f_T + f_B + f_N + f_S + f_E + f_W + f_ZERO; 
@@ -1687,143 +1687,143 @@ extern "C" __global__ void QADVel27(int inx,
       //vx3    = ((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) +
       //         (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
       //         (f_T - f_B); 
-      doubflo rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ f_ZERO;
-      doubflo rho    =  rho0 + one;
-      doubflo OORho  =  one/rho;
+      real rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ f_ZERO;
+      real rho    =  rho0 + one;
+      real OORho  =  one/rho;
       vx1     =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
       vx2     =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
       vx3     =  OORho*((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f27_W    = (D27.f[dirE   ])[ke   ];
-      doubflo f27_E    = (D27.f[dirW   ])[kw   ];
-      doubflo f27_S    = (D27.f[dirN   ])[kn   ];
-      doubflo f27_N    = (D27.f[dirS   ])[ks   ];
-      doubflo f27_B    = (D27.f[dirT   ])[kt   ];
-      doubflo f27_T    = (D27.f[dirB   ])[kb   ];
-      doubflo f27_SW   = (D27.f[dirNE  ])[kne  ];
-      doubflo f27_NE   = (D27.f[dirSW  ])[ksw  ];
-      doubflo f27_NW   = (D27.f[dirSE  ])[kse  ];
-      doubflo f27_SE   = (D27.f[dirNW  ])[knw  ];
-      doubflo f27_BW   = (D27.f[dirTE  ])[kte  ];
-      doubflo f27_TE   = (D27.f[dirBW  ])[kbw  ];
-      doubflo f27_TW   = (D27.f[dirBE  ])[kbe  ];
-      doubflo f27_BE   = (D27.f[dirTW  ])[ktw  ];
-      doubflo f27_BS   = (D27.f[dirTN  ])[ktn  ];
-      doubflo f27_TN   = (D27.f[dirBS  ])[kbs  ];
-      doubflo f27_TS   = (D27.f[dirBN  ])[kbn  ];
-      doubflo f27_BN   = (D27.f[dirTS  ])[kts  ];
-      doubflo f27_ZERO = (D27.f[dirZERO])[kzero];
-      doubflo f27_BSW  = (D27.f[dirTNE ])[ktne ];
-      doubflo f27_BNE  = (D27.f[dirTSW ])[ktsw ];
-      doubflo f27_BNW  = (D27.f[dirTSE ])[ktse ];
-      doubflo f27_BSE  = (D27.f[dirTNW ])[ktnw ];
-      doubflo f27_TSW  = (D27.f[dirBNE ])[kbne ];
-      doubflo f27_TNE  = (D27.f[dirBSW ])[kbsw ];
-      doubflo f27_TNW  = (D27.f[dirBSE ])[kbse ];
-      doubflo f27_TSE  = (D27.f[dirBNW ])[kbnw ];
+      real f27_W    = (D27.f[dirE   ])[ke   ];
+      real f27_E    = (D27.f[dirW   ])[kw   ];
+      real f27_S    = (D27.f[dirN   ])[kn   ];
+      real f27_N    = (D27.f[dirS   ])[ks   ];
+      real f27_B    = (D27.f[dirT   ])[kt   ];
+      real f27_T    = (D27.f[dirB   ])[kb   ];
+      real f27_SW   = (D27.f[dirNE  ])[kne  ];
+      real f27_NE   = (D27.f[dirSW  ])[ksw  ];
+      real f27_NW   = (D27.f[dirSE  ])[kse  ];
+      real f27_SE   = (D27.f[dirNW  ])[knw  ];
+      real f27_BW   = (D27.f[dirTE  ])[kte  ];
+      real f27_TE   = (D27.f[dirBW  ])[kbw  ];
+      real f27_TW   = (D27.f[dirBE  ])[kbe  ];
+      real f27_BE   = (D27.f[dirTW  ])[ktw  ];
+      real f27_BS   = (D27.f[dirTN  ])[ktn  ];
+      real f27_TN   = (D27.f[dirBS  ])[kbs  ];
+      real f27_TS   = (D27.f[dirBN  ])[kbn  ];
+      real f27_BN   = (D27.f[dirTS  ])[kts  ];
+      real f27_ZERO = (D27.f[dirZERO])[kzero];
+      real f27_BSW  = (D27.f[dirTNE ])[ktne ];
+      real f27_BNE  = (D27.f[dirTSW ])[ktsw ];
+      real f27_BNW  = (D27.f[dirTSE ])[ktse ];
+      real f27_BSE  = (D27.f[dirTNW ])[ktnw ];
+      real f27_TSW  = (D27.f[dirBNE ])[kbne ];
+      real f27_TNE  = (D27.f[dirBSW ])[kbsw ];
+      real f27_TNW  = (D27.f[dirBSE ])[kbse ];
+      real f27_TSE  = (D27.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
+      real ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
                         f27_BN  + f27_TS  + f27_TN  + f27_BS  + f27_BE  + f27_TW  + f27_TE  + f27_BW  + f27_SE + f27_NW + f27_NE + f27_SW + 
                         f27_T   + f27_B   + f27_N   + f27_S   + f27_E   + f27_W   + f27_ZERO; 
 
-      //doubflo feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
-      doubflo feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
-      doubflo feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
-      doubflo feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
-      doubflo feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
-      doubflo feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
-      doubflo feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
-      doubflo feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
-      doubflo feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
-      doubflo feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
-      doubflo feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
-      doubflo feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
-      doubflo feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
-      doubflo feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
-      doubflo feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
-      doubflo feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
-      doubflo feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
-      doubflo feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
-      doubflo feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
-      doubflo feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-      doubflo feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
+      //real feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
+      real feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
+      real feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
+      real feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
+      real feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
+      real feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
+      real feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
+      real feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
+      real feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
+      real feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
+      real feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
+      real feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
+      real feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
+      real feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
+      real feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
+      real feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
+      real feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
+      real feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
+      real feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
+      real feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
+      real feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
+      real feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
+      real feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
+      real feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
+      real feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
+      real feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
+      real feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo TempD = temp[k];
-      //doubflo TempD = four;
+      real TempD = temp[k];
+      //real TempD = four;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       // velocity inflow
       //vx1   = velo[k]; //zero;
       //vx2   = zero; //velo[k];//zero;//velo[k];
       //vx3   = zero;
 
-      ////doubflo feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
-      //doubflo feqW27_E    =   c2over27* (TempD+(one+TempD)*(three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq));
-      //doubflo feqW27_W    =   c2over27* (TempD+(one+TempD)*(three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq));
-      //doubflo feqW27_N    =   c2over27* (TempD+(one+TempD)*(three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq));
-      //doubflo feqW27_S    =   c2over27* (TempD+(one+TempD)*(three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq));
-      //doubflo feqW27_T    =   c2over27* (TempD+(one+TempD)*(three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq));
-      //doubflo feqW27_B    =   c2over27* (TempD+(one+TempD)*(three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq));
-      //doubflo feqW27_NE   =   c1over54* (TempD+(one+TempD)*(three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq));
-      //doubflo feqW27_SW   =   c1over54* (TempD+(one+TempD)*(three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq));
-      //doubflo feqW27_SE   =   c1over54* (TempD+(one+TempD)*(three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq));
-      //doubflo feqW27_NW   =   c1over54* (TempD+(one+TempD)*(three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq));
-      //doubflo feqW27_TE   =   c1over54* (TempD+(one+TempD)*(three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq));
-      //doubflo feqW27_BW   =   c1over54* (TempD+(one+TempD)*(three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq));
-      //doubflo feqW27_BE   =   c1over54* (TempD+(one+TempD)*(three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq));
-      //doubflo feqW27_TW   =   c1over54* (TempD+(one+TempD)*(three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq));
-      //doubflo feqW27_TN   =   c1over54* (TempD+(one+TempD)*(three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq));
-      //doubflo feqW27_BS   =   c1over54* (TempD+(one+TempD)*(three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq));
-      //doubflo feqW27_BN   =   c1over54* (TempD+(one+TempD)*(three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq));
-      //doubflo feqW27_TS   =   c1over54* (TempD+(one+TempD)*(three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq));
-      //doubflo feqW27_TNE  =   c1over216*(TempD+(one+TempD)*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq));
-      //doubflo feqW27_BSW  =   c1over216*(TempD+(one+TempD)*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq));
-      //doubflo feqW27_BNE  =   c1over216*(TempD+(one+TempD)*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq));
-      //doubflo feqW27_TSW  =   c1over216*(TempD+(one+TempD)*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq));
-      //doubflo feqW27_TSE  =   c1over216*(TempD+(one+TempD)*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq));
-      //doubflo feqW27_BNW  =   c1over216*(TempD+(one+TempD)*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq));
-      //doubflo feqW27_BSE  =   c1over216*(TempD+(one+TempD)*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq));
-      //doubflo feqW27_TNW  =   c1over216*(TempD+(one+TempD)*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq));
+      ////real feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
+      //real feqW27_E    =   c2over27* (TempD+(one+TempD)*(three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq));
+      //real feqW27_W    =   c2over27* (TempD+(one+TempD)*(three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq));
+      //real feqW27_N    =   c2over27* (TempD+(one+TempD)*(three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq));
+      //real feqW27_S    =   c2over27* (TempD+(one+TempD)*(three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq));
+      //real feqW27_T    =   c2over27* (TempD+(one+TempD)*(three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq));
+      //real feqW27_B    =   c2over27* (TempD+(one+TempD)*(three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq));
+      //real feqW27_NE   =   c1over54* (TempD+(one+TempD)*(three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq));
+      //real feqW27_SW   =   c1over54* (TempD+(one+TempD)*(three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq));
+      //real feqW27_SE   =   c1over54* (TempD+(one+TempD)*(three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq));
+      //real feqW27_NW   =   c1over54* (TempD+(one+TempD)*(three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq));
+      //real feqW27_TE   =   c1over54* (TempD+(one+TempD)*(three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq));
+      //real feqW27_BW   =   c1over54* (TempD+(one+TempD)*(three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq));
+      //real feqW27_BE   =   c1over54* (TempD+(one+TempD)*(three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq));
+      //real feqW27_TW   =   c1over54* (TempD+(one+TempD)*(three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq));
+      //real feqW27_TN   =   c1over54* (TempD+(one+TempD)*(three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq));
+      //real feqW27_BS   =   c1over54* (TempD+(one+TempD)*(three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq));
+      //real feqW27_BN   =   c1over54* (TempD+(one+TempD)*(three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq));
+      //real feqW27_TS   =   c1over54* (TempD+(one+TempD)*(three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq));
+      //real feqW27_TNE  =   c1over216*(TempD+(one+TempD)*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq));
+      //real feqW27_BSW  =   c1over216*(TempD+(one+TempD)*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq));
+      //real feqW27_BNE  =   c1over216*(TempD+(one+TempD)*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq));
+      //real feqW27_TSW  =   c1over216*(TempD+(one+TempD)*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq));
+      //real feqW27_TSE  =   c1over216*(TempD+(one+TempD)*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq));
+      //real feqW27_BNW  =   c1over216*(TempD+(one+TempD)*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq));
+      //real feqW27_BSE  =   c1over216*(TempD+(one+TempD)*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq));
+      //real feqW27_TNW  =   c1over216*(TempD+(one+TempD)*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq));
       //
-      doubflo feqW27_E    =   c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
-      doubflo feqW27_W    =   c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
-      doubflo feqW27_N    =   c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
-      doubflo feqW27_S    =   c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
-      doubflo feqW27_T    =   c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
-      doubflo feqW27_B    =   c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
-      doubflo feqW27_NE   =   c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
-      doubflo feqW27_SW   =   c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
-      doubflo feqW27_SE   =   c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
-      doubflo feqW27_NW   =   c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
-      doubflo feqW27_TE   =   c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
-      doubflo feqW27_BW   =   c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
-      doubflo feqW27_BE   =   c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
-      doubflo feqW27_TW   =   c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
-      doubflo feqW27_TN   =   c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
-      doubflo feqW27_BS   =   c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
-      doubflo feqW27_BN   =   c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
-      doubflo feqW27_TS   =   c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
-      doubflo feqW27_TNE  =   c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-      doubflo feqW27_BSW  =   c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-      doubflo feqW27_BNE  =   c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-      doubflo feqW27_TSW  =   c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-      doubflo feqW27_TSE  =   c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-      doubflo feqW27_BNW  =   c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-      doubflo feqW27_BSE  =   c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-      doubflo feqW27_TNW  =   c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
+      real feqW27_E    =   c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
+      real feqW27_W    =   c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
+      real feqW27_N    =   c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
+      real feqW27_S    =   c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
+      real feqW27_T    =   c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
+      real feqW27_B    =   c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
+      real feqW27_NE   =   c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
+      real feqW27_SW   =   c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
+      real feqW27_SE   =   c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
+      real feqW27_NW   =   c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
+      real feqW27_TE   =   c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
+      real feqW27_BW   =   c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
+      real feqW27_BE   =   c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
+      real feqW27_TW   =   c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
+      real feqW27_TN   =   c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
+      real feqW27_BS   =   c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
+      real feqW27_BN   =   c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
+      real feqW27_TS   =   c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
+      real feqW27_TNE  =   c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
+      real feqW27_BSW  =   c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
+      real feqW27_BNE  =   c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
+      real feqW27_TSW  =   c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
+      real feqW27_TSE  =   c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
+      real feqW27_BNW  =   c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
+      real feqW27_BSE  =   c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
+      real feqW27_TNW  =   c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo omegaD     = three - sqrt(three);
-      //doubflo Lam        = -(c1o2-one/omegaD);
-      //doubflo nue_d      = Lam/three;
-      //doubflo ae         = zero;
-      //doubflo ae         = diffusivity/nue_d - one;
+      real omegaD     = three - sqrt(three);
+      //real Lam        = -(c1o2-one/omegaD);
+      //real nue_d      = Lam/three;
+      //real ae         = zero;
+      //real ae         = diffusivity/nue_d - one;
 
 
       //////////////////////////////////////////////////////////////////////////
@@ -2018,15 +2018,15 @@ extern "C" __global__ void QADVel27(int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QAD7( int inx,
                                  int iny,
-                                 doubflo* DD, 
-                                 doubflo* DD7, 
-                                 doubflo* temp,
-                                 doubflo diffusivity,
+                                 real* DD, 
+                                 real* DD7, 
+                                 real* temp,
+                                 real diffusivity,
                                  int* k_Q, 
-                                 doubflo* QQ,
+                                 real* QQ,
                                  unsigned int sizeQ,
                                  int kQ, 
-                                 doubflo om1, 
+                                 real om1, 
                                  unsigned int* neighborX,
                                  unsigned int* neighborY,
                                  unsigned int* neighborZ,
@@ -2132,7 +2132,7 @@ extern "C" __global__ void QAD7( int inx,
    if(k<kQ)
    {
       //////////////////////////////////////////////////////////////////////////////////
-      doubflo  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB;//, 
+      real  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB;//, 
       //         *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
       //         *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
       //         *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -2195,7 +2195,7 @@ extern "C" __global__ void QAD7( int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
          f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -2225,7 +2225,7 @@ extern "C" __global__ void QAD7( int inx,
       f_TNW  = (D.f[dirBSE ])[kbse ];
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3/*, drho*/;
+      real vx1, vx2, vx3/*, drho*/;
       //drho   =    f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
       //            f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
       //            f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -2242,27 +2242,27 @@ extern "C" __global__ void QAD7( int inx,
       //vx3    = ((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) +
       //         (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
       //         (f_T - f_B); 
-      doubflo rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ ((D.f[dirZERO])[kzero]);
-      doubflo rho    =  rho0 + one;
-      doubflo OORho  =  one/rho;
+      real rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ ((D.f[dirZERO])[kzero]);
+      real rho    =  rho0 + one;
+      real OORho  =  one/rho;
       vx1     =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
       vx2     =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
       vx3     =  OORho*((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
 
-      //doubflo cu_sq       =c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
-      doubflo ux_sq       = vx1 * vx1;
-      doubflo uy_sq       = vx2 * vx2;
-      doubflo uz_sq       = vx3 * vx3;
-      doubflo omegaD     = three - sqrt(three);
-      doubflo Lam         = -(c1o2-one/omegaD);
-      doubflo nue_d       = Lam/three;
-      //doubflo ae          = zero;
-      doubflo ae          = diffusivity/nue_d - one;
+      //real cu_sq       =c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real ux_sq       = vx1 * vx1;
+      real uy_sq       = vx2 * vx2;
+      real uz_sq       = vx3 * vx3;
+      real omegaD     = three - sqrt(three);
+      real Lam         = -(c1o2-one/omegaD);
+      real nue_d       = Lam/three;
+      //real ae          = zero;
+      real ae          = diffusivity/nue_d - one;
 
-      doubflo f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
-      doubflo /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B;
-      doubflo /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B;
-      doubflo TempD = temp[k];
+      real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
+      real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B;
+      real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B;
+      real TempD = temp[k];
 
 
       f7_ZERO =  (D7.f[0])[kzero];
@@ -2273,7 +2273,7 @@ extern "C" __global__ void QAD7( int inx,
       f7_B    =  (D7.f[5])[kt   ];
       f7_T    =  (D7.f[6])[kb   ];
 
-      doubflo ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B;
+      real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B;
 
       //feq7_ZERO = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq));
       feq7_E    = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2);
@@ -2327,7 +2327,7 @@ extern "C" __global__ void QAD7( int inx,
 
       ////////////////////////////////////////////////////////////////////////////
       ////mit Q's
-      //doubflo /*feq,*/ q;
+      //real /*feq,*/ q;
       //q = q_dirE[k];
       //if (q>=zero && q<=one)
       //{
@@ -2372,7 +2372,7 @@ extern "C" __global__ void QAD7( int inx,
 
       //////////////////////////////////////////////////////////////////////////
       //ohne Q's
-      doubflo /*feq,*/ q;
+      real /*feq,*/ q;
       q = q_dirE[k];
       if (q>=zero && q<=one)
       {
@@ -2453,15 +2453,15 @@ extern "C" __global__ void QAD7( int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QADDirichlet27(	 int inx,
 											 int iny,
-											 doubflo* DD, 
-											 doubflo* DD27, 
-											 doubflo* temp,
-											 doubflo diffusivity,
+											 real* DD, 
+											 real* DD27, 
+											 real* temp,
+											 real diffusivity,
 											 int* k_Q, 
-											 doubflo* QQ,
+											 real* QQ,
 											 unsigned int sizeQ,
 											 int kQ, 
-											 doubflo om1, 
+											 real om1, 
 											 unsigned int* neighborX,
 											 unsigned int* neighborY,
 											 unsigned int* neighborZ,
@@ -2605,7 +2605,7 @@ extern "C" __global__ void QADDirichlet27(	 int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
          *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
          *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
          *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -2667,35 +2667,35 @@ extern "C" __global__ void QADDirichlet27(	 int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_ZERO = (D.f[dirZERO])[kzero];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_ZERO = (D.f[dirZERO])[kzero];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, /*drho, feq,*/ q;
+      real vx1, vx2, vx3, /*drho, feq,*/ q;
       ////drho   = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
       ////         f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
       ////         f_T + f_B + f_N + f_S + f_E + f_W + f_ZERO; 
@@ -2712,110 +2712,110 @@ extern "C" __global__ void QADDirichlet27(	 int inx,
       //vx3    = ((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) +
       //         (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
       //         (f_T - f_B); 
-      doubflo rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+f_ZERO;
-      doubflo rho    =  rho0 + one;
-      doubflo OORho  =  one/rho;
+      real rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+f_ZERO;
+      real rho    =  rho0 + one;
+      real OORho  =  one/rho;
       vx1     =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
       vx2     =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
       vx3     =  OORho*((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f27_W    = (D27.f[dirE   ])[ke   ];
-      doubflo f27_E    = (D27.f[dirW   ])[kw   ];
-      doubflo f27_S    = (D27.f[dirN   ])[kn   ];
-      doubflo f27_N    = (D27.f[dirS   ])[ks   ];
-      doubflo f27_B    = (D27.f[dirT   ])[kt   ];
-      doubflo f27_T    = (D27.f[dirB   ])[kb   ];
-      doubflo f27_SW   = (D27.f[dirNE  ])[kne  ];
-      doubflo f27_NE   = (D27.f[dirSW  ])[ksw  ];
-      doubflo f27_NW   = (D27.f[dirSE  ])[kse  ];
-      doubflo f27_SE   = (D27.f[dirNW  ])[knw  ];
-      doubflo f27_BW   = (D27.f[dirTE  ])[kte  ];
-      doubflo f27_TE   = (D27.f[dirBW  ])[kbw  ];
-      doubflo f27_TW   = (D27.f[dirBE  ])[kbe  ];
-      doubflo f27_BE   = (D27.f[dirTW  ])[ktw  ];
-      doubflo f27_BS   = (D27.f[dirTN  ])[ktn  ];
-      doubflo f27_TN   = (D27.f[dirBS  ])[kbs  ];
-      doubflo f27_TS   = (D27.f[dirBN  ])[kbn  ];
-      doubflo f27_BN   = (D27.f[dirTS  ])[kts  ];
-      doubflo f27_ZERO = (D27.f[dirZERO])[kzero];
-      doubflo f27_BSW  = (D27.f[dirTNE ])[ktne ];
-      doubflo f27_BNE  = (D27.f[dirTSW ])[ktsw ];
-      doubflo f27_BNW  = (D27.f[dirTSE ])[ktse ];
-      doubflo f27_BSE  = (D27.f[dirTNW ])[ktnw ];
-      doubflo f27_TSW  = (D27.f[dirBNE ])[kbne ];
-      doubflo f27_TNE  = (D27.f[dirBSW ])[kbsw ];
-      doubflo f27_TNW  = (D27.f[dirBSE ])[kbse ];
-      doubflo f27_TSE  = (D27.f[dirBNW ])[kbnw ];
+      real f27_W    = (D27.f[dirE   ])[ke   ];
+      real f27_E    = (D27.f[dirW   ])[kw   ];
+      real f27_S    = (D27.f[dirN   ])[kn   ];
+      real f27_N    = (D27.f[dirS   ])[ks   ];
+      real f27_B    = (D27.f[dirT   ])[kt   ];
+      real f27_T    = (D27.f[dirB   ])[kb   ];
+      real f27_SW   = (D27.f[dirNE  ])[kne  ];
+      real f27_NE   = (D27.f[dirSW  ])[ksw  ];
+      real f27_NW   = (D27.f[dirSE  ])[kse  ];
+      real f27_SE   = (D27.f[dirNW  ])[knw  ];
+      real f27_BW   = (D27.f[dirTE  ])[kte  ];
+      real f27_TE   = (D27.f[dirBW  ])[kbw  ];
+      real f27_TW   = (D27.f[dirBE  ])[kbe  ];
+      real f27_BE   = (D27.f[dirTW  ])[ktw  ];
+      real f27_BS   = (D27.f[dirTN  ])[ktn  ];
+      real f27_TN   = (D27.f[dirBS  ])[kbs  ];
+      real f27_TS   = (D27.f[dirBN  ])[kbn  ];
+      real f27_BN   = (D27.f[dirTS  ])[kts  ];
+      real f27_ZERO = (D27.f[dirZERO])[kzero];
+      real f27_BSW  = (D27.f[dirTNE ])[ktne ];
+      real f27_BNE  = (D27.f[dirTSW ])[ktsw ];
+      real f27_BNW  = (D27.f[dirTSE ])[ktse ];
+      real f27_BSE  = (D27.f[dirTNW ])[ktnw ];
+      real f27_TSW  = (D27.f[dirBNE ])[kbne ];
+      real f27_TNE  = (D27.f[dirBSW ])[kbsw ];
+      real f27_TNW  = (D27.f[dirBSE ])[kbse ];
+      real f27_TSE  = (D27.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
+      real ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
          f27_BN  + f27_TS  + f27_TN  + f27_BS  + f27_BE  + f27_TW  + f27_TE  + f27_BW  + f27_SE + f27_NW + f27_NE + f27_SW + 
          f27_T   + f27_B   + f27_N   + f27_S   + f27_E   + f27_W   + f27_ZERO; 
 
-      //doubflo feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
-      doubflo feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
-      doubflo feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
-      doubflo feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
-      doubflo feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
-      doubflo feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
-      doubflo feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
-      doubflo feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
-      doubflo feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
-      doubflo feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
-      doubflo feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
-      doubflo feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
-      doubflo feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
-      doubflo feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
-      doubflo feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
-      doubflo feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
-      doubflo feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
-      doubflo feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
-      doubflo feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
-      doubflo feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-      doubflo feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
+      //real feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
+      real feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
+      real feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
+      real feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
+      real feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
+      real feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
+      real feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
+      real feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
+      real feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
+      real feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
+      real feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
+      real feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
+      real feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
+      real feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
+      real feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
+      real feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
+      real feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
+      real feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
+      real feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
+      real feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
+      real feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
+      real feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
+      real feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
+      real feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
+      real feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
+      real feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
+      real feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo TempD = one;//temp[k];
-
-      //doubflo feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
-      doubflo feqW27_E    =   c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
-      doubflo feqW27_W    =   c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
-      doubflo feqW27_N    =   c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
-      doubflo feqW27_S    =   c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
-      doubflo feqW27_T    =   c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
-      doubflo feqW27_B    =   c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
-      doubflo feqW27_NE   =   c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
-      doubflo feqW27_SW   =   c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
-      doubflo feqW27_SE   =   c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
-      doubflo feqW27_NW   =   c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
-      doubflo feqW27_TE   =   c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
-      doubflo feqW27_BW   =   c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
-      doubflo feqW27_BE   =   c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
-      doubflo feqW27_TW   =   c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
-      doubflo feqW27_TN   =   c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
-      doubflo feqW27_BS   =   c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
-      doubflo feqW27_BN   =   c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
-      doubflo feqW27_TS   =   c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
-      doubflo feqW27_TNE  =   c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-      doubflo feqW27_BSW  =   c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-      doubflo feqW27_BNE  =   c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-      doubflo feqW27_TSW  =   c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-      doubflo feqW27_TSE  =   c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-      doubflo feqW27_BNW  =   c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-      doubflo feqW27_BSE  =   c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-      doubflo feqW27_TNW  =   c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
+      real TempD = one;//temp[k];
+
+      //real feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
+      real feqW27_E    =   c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
+      real feqW27_W    =   c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
+      real feqW27_N    =   c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
+      real feqW27_S    =   c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
+      real feqW27_T    =   c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
+      real feqW27_B    =   c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
+      real feqW27_NE   =   c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
+      real feqW27_SW   =   c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
+      real feqW27_SE   =   c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
+      real feqW27_NW   =   c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
+      real feqW27_TE   =   c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
+      real feqW27_BW   =   c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
+      real feqW27_BE   =   c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
+      real feqW27_TW   =   c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
+      real feqW27_TN   =   c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
+      real feqW27_BS   =   c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
+      real feqW27_BN   =   c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
+      real feqW27_TS   =   c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
+      real feqW27_TNE  =   c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
+      real feqW27_BSW  =   c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
+      real feqW27_BNE  =   c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
+      real feqW27_TSW  =   c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
+      real feqW27_TSE  =   c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
+      real feqW27_BNW  =   c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
+      real feqW27_BSE  =   c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
+      real feqW27_TNW  =   c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo omegaD     = three - sqrt(three);
-      //doubflo Lam        = -(c1o2-one/omegaD);
-      //doubflo nue_d      = Lam/three;
-      //doubflo ae         = zero;
-      //doubflo ae         = diffusivity/nue_d - one;
+      real omegaD     = three - sqrt(three);
+      //real Lam        = -(c1o2-one/omegaD);
+      //real nue_d      = Lam/three;
+      //real ae         = zero;
+      //real ae         = diffusivity/nue_d - one;
 
 
       //////////////////////////////////////////////////////////////////////////
@@ -2981,15 +2981,15 @@ extern "C" __global__ void QADDirichlet27(	 int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QADBB27(int inx,
                                    int iny,
-                                   doubflo* DD, 
-                                   doubflo* DD27, 
-                                   doubflo* temp,
-                                   doubflo diffusivity,
+                                   real* DD, 
+                                   real* DD27, 
+                                   real* temp,
+                                   real diffusivity,
                                    int* k_Q, 
-                                   doubflo* QQ,
+                                   real* QQ,
                                    unsigned int sizeQ,
                                    int kQ, 
-                                   doubflo om1, 
+                                   real om1, 
                                    unsigned int* neighborX,
                                    unsigned int* neighborY,
                                    unsigned int* neighborZ,
@@ -3133,7 +3133,7 @@ extern "C" __global__ void QADBB27(int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
          *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
          *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
          *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -3195,35 +3195,35 @@ extern "C" __global__ void QADBB27(int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_ZERO = (D.f[dirZERO])[kzero];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_ZERO = (D.f[dirZERO])[kzero];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, /*drho, feq,*/ q;
+      real vx1, vx2, vx3, /*drho, feq,*/ q;
       ////drho   = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
       ////         f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
       ////         f_T + f_B + f_N + f_S + f_E + f_W + f_ZERO; 
@@ -3240,110 +3240,110 @@ extern "C" __global__ void QADBB27(int inx,
       //vx3    = ((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) +
       //         (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
       //         (f_T - f_B); 
-      doubflo rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+f_ZERO;
-      doubflo rho    =  rho0 + one;
-      doubflo OORho  =  one/rho;
+      real rho0   =  (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+f_ZERO;
+      real rho    =  rho0 + one;
+      real OORho  =  one/rho;
       vx1     =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
       vx2     =  OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
       vx3     =  OORho*((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f27_W    = (D27.f[dirE   ])[ke   ];
-      doubflo f27_E    = (D27.f[dirW   ])[kw   ];
-      doubflo f27_S    = (D27.f[dirN   ])[kn   ];
-      doubflo f27_N    = (D27.f[dirS   ])[ks   ];
-      doubflo f27_B    = (D27.f[dirT   ])[kt   ];
-      doubflo f27_T    = (D27.f[dirB   ])[kb   ];
-      doubflo f27_SW   = (D27.f[dirNE  ])[kne  ];
-      doubflo f27_NE   = (D27.f[dirSW  ])[ksw  ];
-      doubflo f27_NW   = (D27.f[dirSE  ])[kse  ];
-      doubflo f27_SE   = (D27.f[dirNW  ])[knw  ];
-      doubflo f27_BW   = (D27.f[dirTE  ])[kte  ];
-      doubflo f27_TE   = (D27.f[dirBW  ])[kbw  ];
-      doubflo f27_TW   = (D27.f[dirBE  ])[kbe  ];
-      doubflo f27_BE   = (D27.f[dirTW  ])[ktw  ];
-      doubflo f27_BS   = (D27.f[dirTN  ])[ktn  ];
-      doubflo f27_TN   = (D27.f[dirBS  ])[kbs  ];
-      doubflo f27_TS   = (D27.f[dirBN  ])[kbn  ];
-      doubflo f27_BN   = (D27.f[dirTS  ])[kts  ];
-      doubflo f27_ZERO = (D27.f[dirZERO])[kzero];
-      doubflo f27_BSW  = (D27.f[dirTNE ])[ktne ];
-      doubflo f27_BNE  = (D27.f[dirTSW ])[ktsw ];
-      doubflo f27_BNW  = (D27.f[dirTSE ])[ktse ];
-      doubflo f27_BSE  = (D27.f[dirTNW ])[ktnw ];
-      doubflo f27_TSW  = (D27.f[dirBNE ])[kbne ];
-      doubflo f27_TNE  = (D27.f[dirBSW ])[kbsw ];
-      doubflo f27_TNW  = (D27.f[dirBSE ])[kbse ];
-      doubflo f27_TSE  = (D27.f[dirBNW ])[kbnw ];
+      real f27_W    = (D27.f[dirE   ])[ke   ];
+      real f27_E    = (D27.f[dirW   ])[kw   ];
+      real f27_S    = (D27.f[dirN   ])[kn   ];
+      real f27_N    = (D27.f[dirS   ])[ks   ];
+      real f27_B    = (D27.f[dirT   ])[kt   ];
+      real f27_T    = (D27.f[dirB   ])[kb   ];
+      real f27_SW   = (D27.f[dirNE  ])[kne  ];
+      real f27_NE   = (D27.f[dirSW  ])[ksw  ];
+      real f27_NW   = (D27.f[dirSE  ])[kse  ];
+      real f27_SE   = (D27.f[dirNW  ])[knw  ];
+      real f27_BW   = (D27.f[dirTE  ])[kte  ];
+      real f27_TE   = (D27.f[dirBW  ])[kbw  ];
+      real f27_TW   = (D27.f[dirBE  ])[kbe  ];
+      real f27_BE   = (D27.f[dirTW  ])[ktw  ];
+      real f27_BS   = (D27.f[dirTN  ])[ktn  ];
+      real f27_TN   = (D27.f[dirBS  ])[kbs  ];
+      real f27_TS   = (D27.f[dirBN  ])[kbn  ];
+      real f27_BN   = (D27.f[dirTS  ])[kts  ];
+      real f27_ZERO = (D27.f[dirZERO])[kzero];
+      real f27_BSW  = (D27.f[dirTNE ])[ktne ];
+      real f27_BNE  = (D27.f[dirTSW ])[ktsw ];
+      real f27_BNW  = (D27.f[dirTSE ])[ktse ];
+      real f27_BSE  = (D27.f[dirTNW ])[ktnw ];
+      real f27_TSW  = (D27.f[dirBNE ])[kbne ];
+      real f27_TNE  = (D27.f[dirBSW ])[kbsw ];
+      real f27_TNW  = (D27.f[dirBSE ])[kbse ];
+      real f27_TSE  = (D27.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
+      real ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
          f27_BN  + f27_TS  + f27_TN  + f27_BS  + f27_BE  + f27_TW  + f27_TE  + f27_BW  + f27_SE + f27_NW + f27_NE + f27_SW + 
          f27_T   + f27_B   + f27_N   + f27_S   + f27_E   + f27_W   + f27_ZERO; 
 
-      //doubflo feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
-      doubflo feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
-      doubflo feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
-      doubflo feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
-      doubflo feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
-      doubflo feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
-      doubflo feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
-      doubflo feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
-      doubflo feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
-      doubflo feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
-      doubflo feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
-      doubflo feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
-      doubflo feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
-      doubflo feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
-      doubflo feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
-      doubflo feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
-      doubflo feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
-      doubflo feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
-      doubflo feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
-      doubflo feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-      doubflo feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
+      //real feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
+      real feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
+      real feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
+      real feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
+      real feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
+      real feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
+      real feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
+      real feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
+      real feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
+      real feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
+      real feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
+      real feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
+      real feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
+      real feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
+      real feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
+      real feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
+      real feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
+      real feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
+      real feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
+      real feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
+      real feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
+      real feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
+      real feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
+      real feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
+      real feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
+      real feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
+      real feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo TempD = temp[k];
-
-      //doubflo feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
-      doubflo feqW27_E    =   c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
-      doubflo feqW27_W    =   c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
-      doubflo feqW27_N    =   c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
-      doubflo feqW27_S    =   c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
-      doubflo feqW27_T    =   c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
-      doubflo feqW27_B    =   c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
-      doubflo feqW27_NE   =   c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
-      doubflo feqW27_SW   =   c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
-      doubflo feqW27_SE   =   c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
-      doubflo feqW27_NW   =   c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
-      doubflo feqW27_TE   =   c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
-      doubflo feqW27_BW   =   c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
-      doubflo feqW27_BE   =   c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
-      doubflo feqW27_TW   =   c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
-      doubflo feqW27_TN   =   c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
-      doubflo feqW27_BS   =   c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
-      doubflo feqW27_BN   =   c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
-      doubflo feqW27_TS   =   c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
-      doubflo feqW27_TNE  =   c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-      doubflo feqW27_BSW  =   c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-      doubflo feqW27_BNE  =   c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-      doubflo feqW27_TSW  =   c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-      doubflo feqW27_TSE  =   c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-      doubflo feqW27_BNW  =   c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-      doubflo feqW27_BSE  =   c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-      doubflo feqW27_TNW  =   c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
+      real TempD = temp[k];
+
+      //real feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
+      real feqW27_E    =   c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
+      real feqW27_W    =   c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
+      real feqW27_N    =   c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
+      real feqW27_S    =   c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
+      real feqW27_T    =   c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
+      real feqW27_B    =   c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
+      real feqW27_NE   =   c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
+      real feqW27_SW   =   c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
+      real feqW27_SE   =   c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
+      real feqW27_NW   =   c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
+      real feqW27_TE   =   c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
+      real feqW27_BW   =   c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
+      real feqW27_BE   =   c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
+      real feqW27_TW   =   c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
+      real feqW27_TN   =   c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
+      real feqW27_BS   =   c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
+      real feqW27_BN   =   c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
+      real feqW27_TS   =   c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
+      real feqW27_TNE  =   c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
+      real feqW27_BSW  =   c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
+      real feqW27_BNE  =   c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
+      real feqW27_TSW  =   c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
+      real feqW27_TSE  =   c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
+      real feqW27_BNW  =   c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
+      real feqW27_BSE  =   c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
+      real feqW27_TNW  =   c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo omegaD     = three - sqrt(three);
-      //doubflo Lam        = -(c1o2-one/omegaD);
-      //doubflo nue_d      = Lam/three;
-      //doubflo ae         = zero;
-      //doubflo ae         = diffusivity/nue_d - one;
+      real omegaD     = three - sqrt(three);
+      //real Lam        = -(c1o2-one/omegaD);
+      //real nue_d      = Lam/three;
+      //real ae         = zero;
+      //real ae         = diffusivity/nue_d - one;
 
 
       //////////////////////////////////////////////////////////////////////////
@@ -3498,15 +3498,15 @@ extern "C" __global__ void QADBB27(int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QNoSlipADincomp7( int inx,
 											 int iny,
-											 doubflo* DD, 
-											 doubflo* DD7, 
-											 doubflo* temp,
-											 doubflo diffusivity,
+											 real* DD, 
+											 real* DD7, 
+											 real* temp,
+											 real diffusivity,
 											 int* k_Q, 
-											 doubflo* QQ,
+											 real* QQ,
 											 unsigned int sizeQ,
 											 int kQ, 
-											 doubflo om1, 
+											 real om1, 
 											 unsigned int* neighborX,
 											 unsigned int* neighborY,
 											 unsigned int* neighborZ,
@@ -3612,7 +3612,7 @@ extern "C" __global__ void QNoSlipADincomp7( int inx,
    if(k<kQ)
    {
       //////////////////////////////////////////////////////////////////////////////////
-      doubflo  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB;
+      real  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB;
 
       q_dirE   = &QQ[dirE   *sizeQ];
       q_dirW   = &QQ[dirW   *sizeQ];
@@ -3651,56 +3651,56 @@ extern "C" __global__ void QNoSlipADincomp7( int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1 =  ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
-      doubflo vx2 =  ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
-      doubflo vx3 =  ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
+      real vx1 =  ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
+      real vx2 =  ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
+      real vx3 =  ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
 		 ////dörrrrrty !!!!!!!!!!!!!
-   //      doubflo vx1     =  ten * ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
-   //      doubflo vx2     =  ten * ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
-   //      doubflo vx3     =  ten * ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
-
-      //doubflo cu_sq       =c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
-      doubflo ux_sq       = vx1 * vx1;
-      doubflo uy_sq       = vx2 * vx2;
-      doubflo uz_sq       = vx3 * vx3;
+   //      real vx1     =  ten * ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
+   //      real vx2     =  ten * ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
+   //      real vx3     =  ten * ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
+
+      //real cu_sq       =c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real ux_sq       = vx1 * vx1;
+      real uy_sq       = vx2 * vx2;
+      real uz_sq       = vx3 * vx3;
       ////////////////////////////////////////////////////////////////////////////////
 	  //BGK
-      //doubflo omegaD     = three - sqrt(three);
-      //doubflo Lam         = -(c1o2-one/omegaD);
-      //doubflo nue_d       = Lam/three;
-      //doubflo ae          = diffusivity/nue_d - one; //zero;
+      //real omegaD     = three - sqrt(three);
+      //real Lam         = -(c1o2-one/omegaD);
+      //real nue_d       = Lam/three;
+      //real ae          = diffusivity/nue_d - one; //zero;
 
-      doubflo f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
-      doubflo /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B;
-      doubflo /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B;
-      doubflo TempD = temp[k];
+      real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
+      real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B;
+      real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B;
+      real TempD = temp[k];
 
 
       f7_ZERO =  (D7.f[0])[kzero];
@@ -3711,7 +3711,7 @@ extern "C" __global__ void QNoSlipADincomp7( int inx,
       f7_B    =  (D7.f[5])[kt   ];
       f7_T    =  (D7.f[6])[kb   ];
 
-      doubflo ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B;
+      real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B;
 
       ////feq7_ZERO = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq));
       //feq7_E    = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2);
@@ -3731,7 +3731,7 @@ extern "C" __global__ void QNoSlipADincomp7( int inx,
 
       ////////////////////////////////////////////////////////////////////////////////
 	  //TRT
-      doubflo cs2     = c1o4;
+      real cs2     = c1o4;
       //////////////////////////////////////////////////////////////////////////
       //pointertausch
       if (evenOrOdd==false)
@@ -3757,7 +3757,7 @@ extern "C" __global__ void QNoSlipADincomp7( int inx,
 
       ////////////////////////////////////////////////////////////////////////////
       ////mit Q's
-      //doubflo /*feq,*/ q;
+      //real /*feq,*/ q;
       //q = q_dirE[k];
       //if (q>=zero && q<=one)
       //{
@@ -3802,7 +3802,7 @@ extern "C" __global__ void QNoSlipADincomp7( int inx,
 
       ////////////////////////////////////////////////////////////////////////////
       ////ohne Q's
-      //doubflo /*feq,*/ q;
+      //real /*feq,*/ q;
       //q = q_dirE[k];
       //if (q>=zero && q<=one)
       //{
@@ -3842,7 +3842,7 @@ extern "C" __global__ void QNoSlipADincomp7( int inx,
 
       //////////////////////////////////////////////////////////////////////////
       //ohne Q's aber mit TRT
-      doubflo /*feq,*/ q;
+      real /*feq,*/ q;
       q = q_dirE[k];
       if (q>=zero && q<=one)
       {
@@ -3924,15 +3924,15 @@ extern "C" __global__ void QNoSlipADincomp7( int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QNoSlipADincomp27(int inx,
 											 int iny,
-											 doubflo* DD, 
-											 doubflo* DD27, 
-											 doubflo* temp,
-											 doubflo diffusivity,
+											 real* DD, 
+											 real* DD27, 
+											 real* temp,
+											 real diffusivity,
 											 int* k_Q, 
-											 doubflo* QQ,
+											 real* QQ,
 											 unsigned int sizeQ,
 											 int kQ, 
-											 doubflo om1, 
+											 real om1, 
 											 unsigned int* neighborX,
 											 unsigned int* neighborY,
 											 unsigned int* neighborZ,
@@ -4076,7 +4076,7 @@ extern "C" __global__ void QNoSlipADincomp27(int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
          *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
          *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
          *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -4138,135 +4138,135 @@ extern "C" __global__ void QNoSlipADincomp27(int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_ZERO = (D.f[dirZERO])[kzero];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_ZERO = (D.f[dirZERO])[kzero];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1 =  ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
-      doubflo vx2 =  ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
-      doubflo vx3 =  ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
+      real vx1 =  ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
+      real vx2 =  ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
+      real vx3 =  ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f27_W    = (D27.f[dirE   ])[ke   ];
-      doubflo f27_E    = (D27.f[dirW   ])[kw   ];
-      doubflo f27_S    = (D27.f[dirN   ])[kn   ];
-      doubflo f27_N    = (D27.f[dirS   ])[ks   ];
-      doubflo f27_B    = (D27.f[dirT   ])[kt   ];
-      doubflo f27_T    = (D27.f[dirB   ])[kb   ];
-      doubflo f27_SW   = (D27.f[dirNE  ])[kne  ];
-      doubflo f27_NE   = (D27.f[dirSW  ])[ksw  ];
-      doubflo f27_NW   = (D27.f[dirSE  ])[kse  ];
-      doubflo f27_SE   = (D27.f[dirNW  ])[knw  ];
-      doubflo f27_BW   = (D27.f[dirTE  ])[kte  ];
-      doubflo f27_TE   = (D27.f[dirBW  ])[kbw  ];
-      doubflo f27_TW   = (D27.f[dirBE  ])[kbe  ];
-      doubflo f27_BE   = (D27.f[dirTW  ])[ktw  ];
-      doubflo f27_BS   = (D27.f[dirTN  ])[ktn  ];
-      doubflo f27_TN   = (D27.f[dirBS  ])[kbs  ];
-      doubflo f27_TS   = (D27.f[dirBN  ])[kbn  ];
-      doubflo f27_BN   = (D27.f[dirTS  ])[kts  ];
-      doubflo f27_ZERO = (D27.f[dirZERO])[kzero];
-      doubflo f27_BSW  = (D27.f[dirTNE ])[ktne ];
-      doubflo f27_BNE  = (D27.f[dirTSW ])[ktsw ];
-      doubflo f27_BNW  = (D27.f[dirTSE ])[ktse ];
-      doubflo f27_BSE  = (D27.f[dirTNW ])[ktnw ];
-      doubflo f27_TSW  = (D27.f[dirBNE ])[kbne ];
-      doubflo f27_TNE  = (D27.f[dirBSW ])[kbsw ];
-      doubflo f27_TNW  = (D27.f[dirBSE ])[kbse ];
-      doubflo f27_TSE  = (D27.f[dirBNW ])[kbnw ];
+      real f27_W    = (D27.f[dirE   ])[ke   ];
+      real f27_E    = (D27.f[dirW   ])[kw   ];
+      real f27_S    = (D27.f[dirN   ])[kn   ];
+      real f27_N    = (D27.f[dirS   ])[ks   ];
+      real f27_B    = (D27.f[dirT   ])[kt   ];
+      real f27_T    = (D27.f[dirB   ])[kb   ];
+      real f27_SW   = (D27.f[dirNE  ])[kne  ];
+      real f27_NE   = (D27.f[dirSW  ])[ksw  ];
+      real f27_NW   = (D27.f[dirSE  ])[kse  ];
+      real f27_SE   = (D27.f[dirNW  ])[knw  ];
+      real f27_BW   = (D27.f[dirTE  ])[kte  ];
+      real f27_TE   = (D27.f[dirBW  ])[kbw  ];
+      real f27_TW   = (D27.f[dirBE  ])[kbe  ];
+      real f27_BE   = (D27.f[dirTW  ])[ktw  ];
+      real f27_BS   = (D27.f[dirTN  ])[ktn  ];
+      real f27_TN   = (D27.f[dirBS  ])[kbs  ];
+      real f27_TS   = (D27.f[dirBN  ])[kbn  ];
+      real f27_BN   = (D27.f[dirTS  ])[kts  ];
+      real f27_ZERO = (D27.f[dirZERO])[kzero];
+      real f27_BSW  = (D27.f[dirTNE ])[ktne ];
+      real f27_BNE  = (D27.f[dirTSW ])[ktsw ];
+      real f27_BNW  = (D27.f[dirTSE ])[ktse ];
+      real f27_BSE  = (D27.f[dirTNW ])[ktnw ];
+      real f27_TSW  = (D27.f[dirBNE ])[kbne ];
+      real f27_TNE  = (D27.f[dirBSW ])[kbsw ];
+      real f27_TNW  = (D27.f[dirBSE ])[kbse ];
+      real f27_TSE  = (D27.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
+      real ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
          f27_BN  + f27_TS  + f27_TN  + f27_BS  + f27_BE  + f27_TW  + f27_TE  + f27_BW  + f27_SE + f27_NW + f27_NE + f27_SW + 
          f27_T   + f27_B   + f27_N   + f27_S   + f27_E   + f27_W   + f27_ZERO; 
 
-      //doubflo feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
-      doubflo feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
-      doubflo feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
-      doubflo feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
-      doubflo feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
-      doubflo feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
-      doubflo feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
-      doubflo feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
-      doubflo feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
-      doubflo feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
-      doubflo feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
-      doubflo feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
-      doubflo feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
-      doubflo feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
-      doubflo feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
-      doubflo feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
-      doubflo feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
-      doubflo feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
-      doubflo feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
-      doubflo feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-      doubflo feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
+      //real feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
+      real feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
+      real feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
+      real feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
+      real feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
+      real feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
+      real feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
+      real feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
+      real feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
+      real feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
+      real feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
+      real feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
+      real feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
+      real feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
+      real feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
+      real feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
+      real feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
+      real feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
+      real feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
+      real feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
+      real feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
+      real feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
+      real feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
+      real feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
+      real feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
+      real feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
+      real feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo TempD = temp[k];
-
-      //doubflo feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
-      doubflo feqW27_E    =   c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
-      doubflo feqW27_W    =   c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
-      doubflo feqW27_N    =   c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
-      doubflo feqW27_S    =   c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
-      doubflo feqW27_T    =   c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
-      doubflo feqW27_B    =   c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
-      doubflo feqW27_NE   =   c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
-      doubflo feqW27_SW   =   c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
-      doubflo feqW27_SE   =   c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
-      doubflo feqW27_NW   =   c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
-      doubflo feqW27_TE   =   c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
-      doubflo feqW27_BW   =   c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
-      doubflo feqW27_BE   =   c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
-      doubflo feqW27_TW   =   c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
-      doubflo feqW27_TN   =   c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
-      doubflo feqW27_BS   =   c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
-      doubflo feqW27_BN   =   c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
-      doubflo feqW27_TS   =   c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
-      doubflo feqW27_TNE  =   c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-      doubflo feqW27_BSW  =   c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-      doubflo feqW27_BNE  =   c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-      doubflo feqW27_TSW  =   c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-      doubflo feqW27_TSE  =   c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-      doubflo feqW27_BNW  =   c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-      doubflo feqW27_BSE  =   c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-      doubflo feqW27_TNW  =   c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
+      real TempD = temp[k];
+
+      //real feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
+      real feqW27_E    =   c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
+      real feqW27_W    =   c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
+      real feqW27_N    =   c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
+      real feqW27_S    =   c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
+      real feqW27_T    =   c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
+      real feqW27_B    =   c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
+      real feqW27_NE   =   c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
+      real feqW27_SW   =   c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
+      real feqW27_SE   =   c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
+      real feqW27_NW   =   c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
+      real feqW27_TE   =   c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
+      real feqW27_BW   =   c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
+      real feqW27_BE   =   c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
+      real feqW27_TW   =   c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
+      real feqW27_TN   =   c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
+      real feqW27_BS   =   c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
+      real feqW27_BN   =   c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
+      real feqW27_TS   =   c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
+      real feqW27_TNE  =   c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
+      real feqW27_BSW  =   c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
+      real feqW27_BNE  =   c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
+      real feqW27_TSW  =   c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
+      real feqW27_TSE  =   c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
+      real feqW27_BNW  =   c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
+      real feqW27_BSE  =   c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
+      real feqW27_TNW  =   c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo omegaD     = three - sqrt(three);
-      //doubflo Lam        = -(c1o2-one/omegaD);
-      //doubflo nue_d      = Lam/three;
-      //doubflo ae         = zero;
-      //doubflo ae         = diffusivity/nue_d - one;
+      real omegaD     = three - sqrt(three);
+      //real Lam        = -(c1o2-one/omegaD);
+      //real nue_d      = Lam/three;
+      //real ae         = zero;
+      //real ae         = diffusivity/nue_d - one;
 
 
       //////////////////////////////////////////////////////////////////////////
@@ -4334,7 +4334,7 @@ extern "C" __global__ void QNoSlipADincomp27(int inx,
       //Test
       //(D.f[dirZERO])[k]=0.1f;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo q;
+	  real q;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       q = q_dirE[k];   if (q>=zero && q<=one) (D27.f[dirW  ])[kw  ]=(two*feqW27_W  -(f27_E  *(q*omegaD-one)-omegaD*feq27_E  *(q-one))/(omegaD-one)+f27_W  *q)/(q+one);
       q = q_dirW[k];   if (q>=zero && q<=one) (D27.f[dirE  ])[ke  ]=(two*feqW27_E  -(f27_W  *(q*omegaD-one)-omegaD*feq27_W  *(q-one))/(omegaD-one)+f27_E  *q)/(q+one);
@@ -4407,16 +4407,16 @@ extern "C" __global__ void QNoSlipADincomp27(int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QADVeloIncomp7(  int inx,
 											int iny,
-											doubflo* DD, 
-											doubflo* DD7, 
-											doubflo* temp,
-											doubflo* velo,
-											doubflo diffusivity,
+											real* DD, 
+											real* DD7, 
+											real* temp,
+											real* velo,
+											real diffusivity,
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
@@ -4522,7 +4522,7 @@ extern "C" __global__ void QADVeloIncomp7(  int inx,
    if(k<kQ)
    {
       //////////////////////////////////////////////////////////////////////////////////
-      doubflo  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB; 
+      real  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB; 
 
       q_dirE   = &QQ[dirE   *sizeQ];
       q_dirW   = &QQ[dirW   *sizeQ];
@@ -4561,57 +4561,57 @@ extern "C" __global__ void QADVeloIncomp7(  int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1_Inflow   = zero;
-      doubflo vx2_Inflow   = velo[k];
-      doubflo vx3_Inflow   = zero;
-      doubflo ux_sq_Inflow = vx1_Inflow * vx1_Inflow;
-      doubflo uy_sq_Inflow = vx2_Inflow * vx2_Inflow;
-      doubflo uz_sq_Inflow = vx3_Inflow * vx3_Inflow;
+      real vx1_Inflow   = zero;
+      real vx2_Inflow   = velo[k];
+      real vx3_Inflow   = zero;
+      real ux_sq_Inflow = vx1_Inflow * vx1_Inflow;
+      real uy_sq_Inflow = vx2_Inflow * vx2_Inflow;
+      real uz_sq_Inflow = vx3_Inflow * vx3_Inflow;
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
-      doubflo vx2 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
-      doubflo vx3 = ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
+      real vx1 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
+      real vx2 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
+      real vx3 = ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
 		 ////dörrrrrty !!!!!!!!!!!!!
-   //      doubflo vx1     =  ten * ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
-   //      doubflo vx2     =  ten * ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
-   //      doubflo vx3     =  ten * ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
+   //      real vx1     =  ten * ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
+   //      real vx2     =  ten * ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
+   //      real vx3     =  ten * ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
       ////////////////////////////////////////////////////////////////////////////////
-	  //doubflo cu_sq       =1.5f*(vx1*vx1+vx2*vx2+vx3*vx3);
-      doubflo ux_sq       = vx1 * vx1;
-      doubflo uy_sq       = vx2 * vx2;
-      doubflo uz_sq       = vx3 * vx3;
+	  //real cu_sq       =1.5f*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real ux_sq       = vx1 * vx1;
+      real uy_sq       = vx2 * vx2;
+      real uz_sq       = vx3 * vx3;
 
-      doubflo f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
-      doubflo /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B;
-      doubflo /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B;
-      doubflo TempD = temp[k];
+      real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
+      real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B;
+      real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B;
+      real TempD = temp[k];
 
       f7_ZERO =  (D7.f[0])[kzero];
       f7_W    =  (D7.f[1])[ke   ];
@@ -4621,15 +4621,15 @@ extern "C" __global__ void QADVeloIncomp7(  int inx,
       f7_B    =  (D7.f[5])[kt   ];
       f7_T    =  (D7.f[6])[kb   ];
 
-      doubflo ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B;
+      real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B;
 
       ////////////////////////////////////////////////////////////////////////////////
 	  //BGK
-      //doubflo omegaD     = three - sqrt(three);
-      //doubflo Lam         = -(c1o2-one/omegaD);
-      //doubflo nue_d       = Lam/three;
-      ////doubflo ae          = zero;
-      //doubflo ae          = diffusivity/nue_d - one;
+      //real omegaD     = three - sqrt(three);
+      //real Lam         = -(c1o2-one/omegaD);
+      //real nue_d       = Lam/three;
+      ////real ae          = zero;
+      //real ae          = diffusivity/nue_d - one;
 
       ////feq7_ZERO = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq));
       //feq7_E    = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2);
@@ -4649,26 +4649,26 @@ extern "C" __global__ void QADVeloIncomp7(  int inx,
 
    //      ////////////////////////////////////////////////////////////////////////////////
 		 ////TRT  Yoshida Kernel - based on Ying
-         doubflo cs2         = c1o4;
-   //      doubflo Lam         = diffusivity/(one)/cs2;
-   //      doubflo omegaD      = - one / (Lam + c1o2);
-   //      doubflo ae          = zero;
+         real cs2         = c1o4;
+   //      real Lam         = diffusivity/(one)/cs2;
+   //      real omegaD      = - one / (Lam + c1o2);
+   //      real ae          = zero;
    //      ////////////////////////////////////////////////////////////////////////////////
-		 //doubflo Mom000 = f7_ZERO + f7_W + f7_E + f7_N + f7_S + f7_T + f7_B; //1
-   //      doubflo Mom100 = f7_E - f7_W;
-   //      doubflo Mom010 = f7_N - f7_S;
-   //      doubflo Mom001 = f7_T - f7_B;
-   //      doubflo Mom222 = six*f7_ZERO - f7_W - f7_E - f7_N - f7_S - f7_T - f7_B;
-   //      doubflo Mom200 = two*f7_W + two*f7_E - f7_N - f7_S - f7_T - f7_B;
-   //      doubflo Mom022 = f7_N + f7_S - f7_T - f7_B;
-
-   //      doubflo Meq000 = ConcD;
-   //      doubflo Meq100 = ConcD*vx1;
-   //      doubflo Meq010 = ConcD*vx2;
-   //      doubflo Meq001 = ConcD*vx3;
-   //      doubflo Meq222 = c3o4*ConcD;
-   //      doubflo Meq200 = zero;
-   //      doubflo Meq022 = zero;
+		 //real Mom000 = f7_ZERO + f7_W + f7_E + f7_N + f7_S + f7_T + f7_B; //1
+   //      real Mom100 = f7_E - f7_W;
+   //      real Mom010 = f7_N - f7_S;
+   //      real Mom001 = f7_T - f7_B;
+   //      real Mom222 = six*f7_ZERO - f7_W - f7_E - f7_N - f7_S - f7_T - f7_B;
+   //      real Mom200 = two*f7_W + two*f7_E - f7_N - f7_S - f7_T - f7_B;
+   //      real Mom022 = f7_N + f7_S - f7_T - f7_B;
+
+   //      real Meq000 = ConcD;
+   //      real Meq100 = ConcD*vx1;
+   //      real Meq010 = ConcD*vx2;
+   //      real Meq001 = ConcD*vx3;
+   //      real Meq222 = c3o4*ConcD;
+   //      real Meq200 = zero;
+   //      real Meq022 = zero;
 
    //      // relaxation TRT Yoshida
 
@@ -4721,7 +4721,7 @@ extern "C" __global__ void QADVeloIncomp7(  int inx,
 
       ////////////////////////////////////////////////////////////////////////////
       ////mit Q's
-      //doubflo /*feq,*/ q;
+      //real /*feq,*/ q;
       //q = q_dirE[k];
       //if (q>=zero && q<=one)
       //{
@@ -4766,7 +4766,7 @@ extern "C" __global__ void QADVeloIncomp7(  int inx,
 
       ////////////////////////////////////////////////////////////////////////////
       ////ohne Q's
-      //doubflo /*feq,*/ q;
+      //real /*feq,*/ q;
       //q = q_dirE[k];
       //if (q>=zero && q<=one)
       //{
@@ -4805,7 +4805,7 @@ extern "C" __global__ void QADVeloIncomp7(  int inx,
 
       //////////////////////////////////////////////////////////////////////////
       //ohne Q's aber mit TRT
-      doubflo /*feq,*/ q;
+      real /*feq,*/ q;
       q = q_dirE[k];
       if (q>=zero && q<=one)
       {
@@ -4887,16 +4887,16 @@ extern "C" __global__ void QADVeloIncomp7(  int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QADVeloIncomp27( int inx,
 											int iny,
-											doubflo* DD, 
-											doubflo* DD27, 
-											doubflo* temp,
-											doubflo* velo,
-											doubflo diffusivity,
+											real* DD, 
+											real* DD27, 
+											real* temp,
+											real* velo,
+											real diffusivity,
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
@@ -5040,7 +5040,7 @@ extern "C" __global__ void QADVeloIncomp27( int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
          *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
          *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
          *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -5102,140 +5102,140 @@ extern "C" __global__ void QADVeloIncomp27( int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_ZERO = (D.f[dirZERO])[kzero];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_ZERO = (D.f[dirZERO])[kzero];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
-      doubflo vx2 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
-      doubflo vx3 = ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
+      real vx1 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
+      real vx2 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
+      real vx3 = ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f27_W    = (D27.f[dirE   ])[ke   ];
-      doubflo f27_E    = (D27.f[dirW   ])[kw   ];
-      doubflo f27_S    = (D27.f[dirN   ])[kn   ];
-      doubflo f27_N    = (D27.f[dirS   ])[ks   ];
-      doubflo f27_B    = (D27.f[dirT   ])[kt   ];
-      doubflo f27_T    = (D27.f[dirB   ])[kb   ];
-      doubflo f27_SW   = (D27.f[dirNE  ])[kne  ];
-      doubflo f27_NE   = (D27.f[dirSW  ])[ksw  ];
-      doubflo f27_NW   = (D27.f[dirSE  ])[kse  ];
-      doubflo f27_SE   = (D27.f[dirNW  ])[knw  ];
-      doubflo f27_BW   = (D27.f[dirTE  ])[kte  ];
-      doubflo f27_TE   = (D27.f[dirBW  ])[kbw  ];
-      doubflo f27_TW   = (D27.f[dirBE  ])[kbe  ];
-      doubflo f27_BE   = (D27.f[dirTW  ])[ktw  ];
-      doubflo f27_BS   = (D27.f[dirTN  ])[ktn  ];
-      doubflo f27_TN   = (D27.f[dirBS  ])[kbs  ];
-      doubflo f27_TS   = (D27.f[dirBN  ])[kbn  ];
-      doubflo f27_BN   = (D27.f[dirTS  ])[kts  ];
-      doubflo f27_ZERO = (D27.f[dirZERO])[kzero];
-      doubflo f27_BSW  = (D27.f[dirTNE ])[ktne ];
-      doubflo f27_BNE  = (D27.f[dirTSW ])[ktsw ];
-      doubflo f27_BNW  = (D27.f[dirTSE ])[ktse ];
-      doubflo f27_BSE  = (D27.f[dirTNW ])[ktnw ];
-      doubflo f27_TSW  = (D27.f[dirBNE ])[kbne ];
-      doubflo f27_TNE  = (D27.f[dirBSW ])[kbsw ];
-      doubflo f27_TNW  = (D27.f[dirBSE ])[kbse ];
-      doubflo f27_TSE  = (D27.f[dirBNW ])[kbnw ];
+      real f27_W    = (D27.f[dirE   ])[ke   ];
+      real f27_E    = (D27.f[dirW   ])[kw   ];
+      real f27_S    = (D27.f[dirN   ])[kn   ];
+      real f27_N    = (D27.f[dirS   ])[ks   ];
+      real f27_B    = (D27.f[dirT   ])[kt   ];
+      real f27_T    = (D27.f[dirB   ])[kb   ];
+      real f27_SW   = (D27.f[dirNE  ])[kne  ];
+      real f27_NE   = (D27.f[dirSW  ])[ksw  ];
+      real f27_NW   = (D27.f[dirSE  ])[kse  ];
+      real f27_SE   = (D27.f[dirNW  ])[knw  ];
+      real f27_BW   = (D27.f[dirTE  ])[kte  ];
+      real f27_TE   = (D27.f[dirBW  ])[kbw  ];
+      real f27_TW   = (D27.f[dirBE  ])[kbe  ];
+      real f27_BE   = (D27.f[dirTW  ])[ktw  ];
+      real f27_BS   = (D27.f[dirTN  ])[ktn  ];
+      real f27_TN   = (D27.f[dirBS  ])[kbs  ];
+      real f27_TS   = (D27.f[dirBN  ])[kbn  ];
+      real f27_BN   = (D27.f[dirTS  ])[kts  ];
+      real f27_ZERO = (D27.f[dirZERO])[kzero];
+      real f27_BSW  = (D27.f[dirTNE ])[ktne ];
+      real f27_BNE  = (D27.f[dirTSW ])[ktsw ];
+      real f27_BNW  = (D27.f[dirTSE ])[ktse ];
+      real f27_BSE  = (D27.f[dirTNW ])[ktnw ];
+      real f27_TSW  = (D27.f[dirBNE ])[kbne ];
+      real f27_TNE  = (D27.f[dirBSW ])[kbsw ];
+      real f27_TNW  = (D27.f[dirBSE ])[kbse ];
+      real f27_TSE  = (D27.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
+      real ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
                         f27_BN  + f27_TS  + f27_TN  + f27_BS  + f27_BE  + f27_TW  + f27_TE  + f27_BW  + f27_SE + f27_NW + f27_NE + f27_SW + 
                         f27_T   + f27_B   + f27_N   + f27_S   + f27_E   + f27_W   + f27_ZERO; 
 
-      //doubflo feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
-      doubflo feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
-      doubflo feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
-      doubflo feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
-      doubflo feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
-      doubflo feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
-      doubflo feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
-      doubflo feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
-      doubflo feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
-      doubflo feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
-      doubflo feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
-      doubflo feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
-      doubflo feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
-      doubflo feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
-      doubflo feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
-      doubflo feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
-      doubflo feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
-      doubflo feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
-      doubflo feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
-      doubflo feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-      doubflo feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
+      //real feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
+      real feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
+      real feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
+      real feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
+      real feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
+      real feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
+      real feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
+      real feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
+      real feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
+      real feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
+      real feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
+      real feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
+      real feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
+      real feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
+      real feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
+      real feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
+      real feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
+      real feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
+      real feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
+      real feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
+      real feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
+      real feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
+      real feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
+      real feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
+      real feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
+      real feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
+      real feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo TempD = temp[k];
+      real TempD = temp[k];
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       // velocity inflow
       vx1   = velo[k];//zero;
       vx2   = zero;//velo[k];
       vx3   = zero;
 
-      //doubflo feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
-      doubflo feqW27_E    =   c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
-      doubflo feqW27_W    =   c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
-      doubflo feqW27_N    =   c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
-      doubflo feqW27_S    =   c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
-      doubflo feqW27_T    =   c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
-      doubflo feqW27_B    =   c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
-      doubflo feqW27_NE   =   c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
-      doubflo feqW27_SW   =   c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
-      doubflo feqW27_SE   =   c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
-      doubflo feqW27_NW   =   c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
-      doubflo feqW27_TE   =   c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
-      doubflo feqW27_BW   =   c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
-      doubflo feqW27_BE   =   c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
-      doubflo feqW27_TW   =   c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
-      doubflo feqW27_TN   =   c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
-      doubflo feqW27_BS   =   c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
-      doubflo feqW27_BN   =   c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
-      doubflo feqW27_TS   =   c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
-      doubflo feqW27_TNE  =   c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-      doubflo feqW27_BSW  =   c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-      doubflo feqW27_BNE  =   c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-      doubflo feqW27_TSW  =   c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-      doubflo feqW27_TSE  =   c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-      doubflo feqW27_BNW  =   c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-      doubflo feqW27_BSE  =   c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-      doubflo feqW27_TNW  =   c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
+      //real feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
+      real feqW27_E    =   c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
+      real feqW27_W    =   c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
+      real feqW27_N    =   c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
+      real feqW27_S    =   c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
+      real feqW27_T    =   c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
+      real feqW27_B    =   c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
+      real feqW27_NE   =   c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
+      real feqW27_SW   =   c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
+      real feqW27_SE   =   c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
+      real feqW27_NW   =   c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
+      real feqW27_TE   =   c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
+      real feqW27_BW   =   c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
+      real feqW27_BE   =   c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
+      real feqW27_TW   =   c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
+      real feqW27_TN   =   c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
+      real feqW27_BS   =   c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
+      real feqW27_BN   =   c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
+      real feqW27_TS   =   c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
+      real feqW27_TNE  =   c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
+      real feqW27_BSW  =   c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
+      real feqW27_BNE  =   c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
+      real feqW27_TSW  =   c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
+      real feqW27_TSE  =   c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
+      real feqW27_BNW  =   c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
+      real feqW27_BSE  =   c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
+      real feqW27_TNW  =   c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo omegaD     = three - sqrt(three);
-      //doubflo Lam        = -(c1o2-one/omegaD);
-      //doubflo nue_d      = Lam/three;
-      //doubflo ae         = zero;
-      //doubflo ae         = diffusivity/nue_d - one;
+      real omegaD     = three - sqrt(three);
+      //real Lam        = -(c1o2-one/omegaD);
+      //real nue_d      = Lam/three;
+      //real ae         = zero;
+      //real ae         = diffusivity/nue_d - one;
 
 
       //////////////////////////////////////////////////////////////////////////
@@ -5303,7 +5303,7 @@ extern "C" __global__ void QADVeloIncomp27( int inx,
       //Test
       //(D.f[dirZERO])[k]=c1o10;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo q;
+      real q;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       q = q_dirE[k];   if (q>=zero && q<=one) (D27.f[dirW  ])[kw  ]= -feqW27_W  + two * c2over27  * TempD;
       q = q_dirW[k];   if (q>=zero && q<=one) (D27.f[dirE  ])[ke  ]= -feqW27_E  + two * c2over27  * TempD;
@@ -5402,16 +5402,16 @@ extern "C" __global__ void QADVeloIncomp27( int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QADPressIncomp7(int inx,
 										   int iny,
-										   doubflo* DD, 
-										   doubflo* DD7, 
-										   doubflo* temp,
-										   doubflo* velo,
-										   doubflo diffusivity,
+										   real* DD, 
+										   real* DD7, 
+										   real* temp,
+										   real* velo,
+										   real diffusivity,
 										   int* k_Q, 
-										   doubflo* QQ,
+										   real* QQ,
 										   unsigned int sizeQ,
 										   int kQ, 
-										   doubflo om1, 
+										   real om1, 
 										   unsigned int* neighborX,
 										   unsigned int* neighborY,
 										   unsigned int* neighborZ,
@@ -5517,7 +5517,7 @@ extern "C" __global__ void QADPressIncomp7(int inx,
    if(k<kQ)
    {
       //////////////////////////////////////////////////////////////////////////////////
-      doubflo  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB; 
+      real  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB; 
 
       q_dirE   = &QQ[dirE   *sizeQ];
       q_dirW   = &QQ[dirW   *sizeQ];
@@ -5556,7 +5556,7 @@ extern "C" __global__ void QADPressIncomp7(int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
          f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -5586,30 +5586,30 @@ extern "C" __global__ void QADPressIncomp7(int inx,
       f_TNW  = (D.f[dirBSE ])[kbse ];
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
-      doubflo vx2 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
-      doubflo vx3 = ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
+      real vx1 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
+      real vx2 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
+      real vx3 = ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
 		 ////dörrrrrty !!!!!!!!!!!!!
-   //      doubflo vx1     =  ten * ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
-   //      doubflo vx2     =  ten * ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
-   //      doubflo vx3     =  ten * ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
-
-	  //doubflo cu_sq       =1.5*(vx1*vx1+vx2*vx2+vx3*vx3);
-      doubflo ux_sq       = vx1 * vx1;
-      doubflo uy_sq       = vx2 * vx2;
-      doubflo uz_sq       = vx3 * vx3;
+   //      real vx1     =  ten * ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
+   //      real vx2     =  ten * ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
+   //      real vx3     =  ten * ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
+
+	  //real cu_sq       =1.5*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real ux_sq       = vx1 * vx1;
+      real uy_sq       = vx2 * vx2;
+      real uz_sq       = vx3 * vx3;
       //////////////////////////////////////////////////////////////////////////
 	  //BGK
-      //doubflo omegaD     = three - sqrt(three);
-      //doubflo Lam         = -(c1o2-one/omegaD);
-      //doubflo nue_d       = Lam/three;
-      ////doubflo ae          = zero;
-      //doubflo ae          = diffusivity/nue_d - one;
+      //real omegaD     = three - sqrt(three);
+      //real Lam         = -(c1o2-one/omegaD);
+      //real nue_d       = Lam/three;
+      ////real ae          = zero;
+      //real ae          = diffusivity/nue_d - one;
 
-      doubflo f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
-      doubflo /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B;
-      doubflo /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B;
-      //doubflo TempD = temp[k];
+      real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
+      real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B;
+      real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B;
+      //real TempD = temp[k];
 
 
       f7_ZERO =  (D7.f[0])[kzero];
@@ -5620,7 +5620,7 @@ extern "C" __global__ void QADPressIncomp7(int inx,
       f7_B    =  (D7.f[5])[kt   ];
       f7_T    =  (D7.f[6])[kb   ];
 
-      doubflo ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B;
+      real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B;
 
       ////feq7_ZERO = ConcD*(c1o3*(ae*(-3.0))-(ux_sq+uy_sq+uz_sq));
       //feq7_E    = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2);
@@ -5640,10 +5640,10 @@ extern "C" __global__ void QADPressIncomp7(int inx,
 
       //////////////////////////////////////////////////////////////////////////
 	  //TRT  Yoshida Kernel - based on Ying
-      doubflo cs2         = c1o4;
-      doubflo Lam         = diffusivity/(one)/cs2;
-      doubflo omegaD      = - one / (Lam + c1o2);
-      doubflo nue_d       = Lam/three;
+      real cs2         = c1o4;
+      real Lam         = diffusivity/(one)/cs2;
+      real omegaD      = - one / (Lam + c1o2);
+      real nue_d       = Lam/three;
 
       //////////////////////////////////////////////////////////////////////////
       //pointertausch
@@ -5670,7 +5670,7 @@ extern "C" __global__ void QADPressIncomp7(int inx,
 
       ////////////////////////////////////////////////////////////////////////////
       ////mit Q's
-      //doubflo /*feq,*/ q;
+      //real /*feq,*/ q;
       //q = q_dirE[k];
       //if (q>=zero && q<=one)
       //{
@@ -5715,7 +5715,7 @@ extern "C" __global__ void QADPressIncomp7(int inx,
 
       ////////////////////////////////////////////////////////////////////////////
       ////ohne Q's
-      //doubflo /*feq,*/ q;
+      //real /*feq,*/ q;
       //q = q_dirE[k];
       //if (q>=zero && q<=one)
       //{
@@ -5761,7 +5761,7 @@ extern "C" __global__ void QADPressIncomp7(int inx,
 
       //////////////////////////////////////////////////////////////////////////
       //ohne Q's aber mit TRT
-      doubflo /*feq,*/ q;
+      real /*feq,*/ q;
       q = q_dirE[k];
       if (q>=zero && q<=one)
       {
@@ -5843,16 +5843,16 @@ extern "C" __global__ void QADPressIncomp7(int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QADPressIncomp27(   int inx,
 											   int iny,
-											   doubflo* DD, 
-											   doubflo* DD27, 
-											   doubflo* temp,
-											   doubflo* velo,
-											   doubflo diffusivity,
+											   real* DD, 
+											   real* DD27, 
+											   real* temp,
+											   real* velo,
+											   real diffusivity,
 											   int* k_Q, 
-											   doubflo* QQ,
+											   real* QQ,
 											   unsigned int sizeQ,
 											   int kQ, 
-											   doubflo om1, 
+											   real om1, 
 											   unsigned int* neighborX,
 											   unsigned int* neighborY,
 											   unsigned int* neighborZ,
@@ -5996,7 +5996,7 @@ extern "C" __global__ void QADPressIncomp27(   int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real  *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
          *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
          *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
          *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -6058,140 +6058,140 @@ extern "C" __global__ void QADPressIncomp27(   int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_ZERO = (D.f[dirZERO])[kzero];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_ZERO = (D.f[dirZERO])[kzero];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1      = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
-      doubflo vx2      = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
-      doubflo vx3      = ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
+      real vx1      = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W));
+      real vx2      = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S));
+      real vx3      = ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B));
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f27_W    = (D27.f[dirE   ])[ke   ];
-      doubflo f27_E    = (D27.f[dirW   ])[kw   ];
-      doubflo f27_S    = (D27.f[dirN   ])[kn   ];
-      doubflo f27_N    = (D27.f[dirS   ])[ks   ];
-      doubflo f27_B    = (D27.f[dirT   ])[kt   ];
-      doubflo f27_T    = (D27.f[dirB   ])[kb   ];
-      doubflo f27_SW   = (D27.f[dirNE  ])[kne  ];
-      doubflo f27_NE   = (D27.f[dirSW  ])[ksw  ];
-      doubflo f27_NW   = (D27.f[dirSE  ])[kse  ];
-      doubflo f27_SE   = (D27.f[dirNW  ])[knw  ];
-      doubflo f27_BW   = (D27.f[dirTE  ])[kte  ];
-      doubflo f27_TE   = (D27.f[dirBW  ])[kbw  ];
-      doubflo f27_TW   = (D27.f[dirBE  ])[kbe  ];
-      doubflo f27_BE   = (D27.f[dirTW  ])[ktw  ];
-      doubflo f27_BS   = (D27.f[dirTN  ])[ktn  ];
-      doubflo f27_TN   = (D27.f[dirBS  ])[kbs  ];
-      doubflo f27_TS   = (D27.f[dirBN  ])[kbn  ];
-      doubflo f27_BN   = (D27.f[dirTS  ])[kts  ];
-      doubflo f27_ZERO = (D27.f[dirZERO])[kzero];
-      doubflo f27_BSW  = (D27.f[dirTNE ])[ktne ];
-      doubflo f27_BNE  = (D27.f[dirTSW ])[ktsw ];
-      doubflo f27_BNW  = (D27.f[dirTSE ])[ktse ];
-      doubflo f27_BSE  = (D27.f[dirTNW ])[ktnw ];
-      doubflo f27_TSW  = (D27.f[dirBNE ])[kbne ];
-      doubflo f27_TNE  = (D27.f[dirBSW ])[kbsw ];
-      doubflo f27_TNW  = (D27.f[dirBSE ])[kbse ];
-      doubflo f27_TSE  = (D27.f[dirBNW ])[kbnw ];
+      real f27_W    = (D27.f[dirE   ])[ke   ];
+      real f27_E    = (D27.f[dirW   ])[kw   ];
+      real f27_S    = (D27.f[dirN   ])[kn   ];
+      real f27_N    = (D27.f[dirS   ])[ks   ];
+      real f27_B    = (D27.f[dirT   ])[kt   ];
+      real f27_T    = (D27.f[dirB   ])[kb   ];
+      real f27_SW   = (D27.f[dirNE  ])[kne  ];
+      real f27_NE   = (D27.f[dirSW  ])[ksw  ];
+      real f27_NW   = (D27.f[dirSE  ])[kse  ];
+      real f27_SE   = (D27.f[dirNW  ])[knw  ];
+      real f27_BW   = (D27.f[dirTE  ])[kte  ];
+      real f27_TE   = (D27.f[dirBW  ])[kbw  ];
+      real f27_TW   = (D27.f[dirBE  ])[kbe  ];
+      real f27_BE   = (D27.f[dirTW  ])[ktw  ];
+      real f27_BS   = (D27.f[dirTN  ])[ktn  ];
+      real f27_TN   = (D27.f[dirBS  ])[kbs  ];
+      real f27_TS   = (D27.f[dirBN  ])[kbn  ];
+      real f27_BN   = (D27.f[dirTS  ])[kts  ];
+      real f27_ZERO = (D27.f[dirZERO])[kzero];
+      real f27_BSW  = (D27.f[dirTNE ])[ktne ];
+      real f27_BNE  = (D27.f[dirTSW ])[ktsw ];
+      real f27_BNW  = (D27.f[dirTSE ])[ktse ];
+      real f27_BSE  = (D27.f[dirTNW ])[ktnw ];
+      real f27_TSW  = (D27.f[dirBNE ])[kbne ];
+      real f27_TNE  = (D27.f[dirBSW ])[kbsw ];
+      real f27_TNW  = (D27.f[dirBSE ])[kbse ];
+      real f27_TSE  = (D27.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
+      real ConcD =   f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW +
                         f27_BN  + f27_TS  + f27_TN  + f27_BS  + f27_BE  + f27_TW  + f27_TE  + f27_BW  + f27_SE + f27_NW + f27_NE + f27_SW + 
                         f27_T   + f27_B   + f27_N   + f27_S   + f27_E   + f27_W   + f27_ZERO; 
 
-      //doubflo feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
-      doubflo feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
-      doubflo feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
-      doubflo feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
-      doubflo feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
-      doubflo feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
-      doubflo feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
-      doubflo feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
-      doubflo feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
-      doubflo feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
-      doubflo feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
-      doubflo feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
-      doubflo feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
-      doubflo feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
-      doubflo feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
-      doubflo feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
-      doubflo feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
-      doubflo feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
-      doubflo feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
-      doubflo feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
-      doubflo feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
-      doubflo feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
-      doubflo feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
-      doubflo feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
+      //real feq27_ZERO =   c8over27* ConcD*(one-cu_sq);
+      real feq27_E    =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
+      real feq27_W    =   c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq);
+      real feq27_N    =   c2over27* ConcD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq);
+      real feq27_S    =   c2over27* ConcD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq);
+      real feq27_T    =   c2over27* ConcD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq);
+      real feq27_B    =   c2over27* ConcD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq);
+      real feq27_NE   =   c1over54* ConcD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq);
+      real feq27_SW   =   c1over54* ConcD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq);
+      real feq27_SE   =   c1over54* ConcD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq);
+      real feq27_NW   =   c1over54* ConcD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq);
+      real feq27_TE   =   c1over54* ConcD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq);
+      real feq27_BW   =   c1over54* ConcD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq);
+      real feq27_BE   =   c1over54* ConcD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq);
+      real feq27_TW   =   c1over54* ConcD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq);
+      real feq27_TN   =   c1over54* ConcD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq);
+      real feq27_BS   =   c1over54* ConcD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq);
+      real feq27_BN   =   c1over54* ConcD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq);
+      real feq27_TS   =   c1over54* ConcD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq);
+      real feq27_TNE  =   c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq);
+      real feq27_BSW  =   c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq);
+      real feq27_BNE  =   c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq);
+      real feq27_TSW  =   c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq);
+      real feq27_TSE  =   c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq);
+      real feq27_BNW  =   c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq);
+      real feq27_BSE  =   c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq);
+      real feq27_TNW  =   c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo TempD = temp[k];
+      real TempD = temp[k];
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       // velocity inflow
       //vx1   = zero;
       //vx2   = zero;
       //vx3   = velo[k];
 
-      //doubflo feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
-      doubflo feqW27_E    =  c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq); //feq27_E  ;// 
-      doubflo feqW27_W    =  c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq); //feq27_W  ;// 
-      doubflo feqW27_N    =  c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq); //feq27_N  ;// 
-      doubflo feqW27_S    =  c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq); //feq27_S  ;// 
-      doubflo feqW27_T    =  c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq); //feq27_T  ;// 
-      doubflo feqW27_B    =  c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq); //feq27_B  ;// 
-      doubflo feqW27_NE   =  c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq); //feq27_NE ;// 
-      doubflo feqW27_SW   =  c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq); //feq27_SW ;// 
-      doubflo feqW27_SE   =  c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq); //feq27_SE ;// 
-      doubflo feqW27_NW   =  c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq); //feq27_NW ;// 
-      doubflo feqW27_TE   =  c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq); //feq27_TE ;// 
-      doubflo feqW27_BW   =  c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq); //feq27_BW ;// 
-      doubflo feqW27_BE   =  c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq); //feq27_BE ;// 
-      doubflo feqW27_TW   =  c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq); //feq27_TW ;// 
-      doubflo feqW27_TN   =  c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq); //feq27_TN ;// 
-      doubflo feqW27_BS   =  c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq); //feq27_BS ;// 
-      doubflo feqW27_BN   =  c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq); //feq27_BN ;// 
-      doubflo feqW27_TS   =  c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq); //feq27_TS ;// 
-      doubflo feqW27_TNE  =  c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); //feq27_TNE;// 
-      doubflo feqW27_BSW  =  c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); //feq27_BSW;// 
-      doubflo feqW27_BNE  =  c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); //feq27_BNE;// 
-      doubflo feqW27_TSW  =  c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); //feq27_TSW;// 
-      doubflo feqW27_TSE  =  c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); //feq27_TSE;// 
-      doubflo feqW27_BNW  =  c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); //feq27_BNW;// 
-      doubflo feqW27_BSE  =  c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); //feq27_BSE;// 
-      doubflo feqW27_TNW  =  c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); //feq27_TNW;// 
+      //real feqW27_ZERO =   c8over27* TempD*(one-cu_sq);
+      real feqW27_E    =  c2over27* TempD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq); //feq27_E  ;// 
+      real feqW27_W    =  c2over27* TempD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cu_sq); //feq27_W  ;// 
+      real feqW27_N    =  c2over27* TempD*(one+three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cu_sq); //feq27_N  ;// 
+      real feqW27_S    =  c2over27* TempD*(one+three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cu_sq); //feq27_S  ;// 
+      real feqW27_T    =  c2over27* TempD*(one+three*(         vx3)+c9over2*(         vx3)*(         vx3)-cu_sq); //feq27_T  ;// 
+      real feqW27_B    =  c2over27* TempD*(one+three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cu_sq); //feq27_B  ;// 
+      real feqW27_NE   =  c1over54* TempD*(one+three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cu_sq); //feq27_NE ;// 
+      real feqW27_SW   =  c1over54* TempD*(one+three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cu_sq); //feq27_SW ;// 
+      real feqW27_SE   =  c1over54* TempD*(one+three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cu_sq); //feq27_SE ;// 
+      real feqW27_NW   =  c1over54* TempD*(one+three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cu_sq); //feq27_NW ;// 
+      real feqW27_TE   =  c1over54* TempD*(one+three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cu_sq); //feq27_TE ;// 
+      real feqW27_BW   =  c1over54* TempD*(one+three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cu_sq); //feq27_BW ;// 
+      real feqW27_BE   =  c1over54* TempD*(one+three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cu_sq); //feq27_BE ;// 
+      real feqW27_TW   =  c1over54* TempD*(one+three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cu_sq); //feq27_TW ;// 
+      real feqW27_TN   =  c1over54* TempD*(one+three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cu_sq); //feq27_TN ;// 
+      real feqW27_BS   =  c1over54* TempD*(one+three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cu_sq); //feq27_BS ;// 
+      real feqW27_BN   =  c1over54* TempD*(one+three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cu_sq); //feq27_BN ;// 
+      real feqW27_TS   =  c1over54* TempD*(one+three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cu_sq); //feq27_TS ;// 
+      real feqW27_TNE  =  c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); //feq27_TNE;// 
+      real feqW27_BSW  =  c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); //feq27_BSW;// 
+      real feqW27_BNE  =  c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); //feq27_BNE;// 
+      real feqW27_TSW  =  c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); //feq27_TSW;// 
+      real feqW27_TSE  =  c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); //feq27_TSE;// 
+      real feqW27_BNW  =  c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); //feq27_BNW;// 
+      real feqW27_BSE  =  c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); //feq27_BSE;// 
+      real feqW27_TNW  =  c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); //feq27_TNW;// 
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo omegaD     = three - sqrt(three);
-      //doubflo Lam        = -(c1o2-one/omegaD);
-      //doubflo nue_d      = Lam/three;
-      //doubflo ae         = zero;
-      //doubflo ae         = diffusivity/nue_d - one;
+      real omegaD     = three - sqrt(three);
+      //real Lam        = -(c1o2-one/omegaD);
+      //real nue_d      = Lam/three;
+      //real ae         = zero;
+      //real ae         = diffusivity/nue_d - one;
 
 
       //////////////////////////////////////////////////////////////////////////
@@ -6259,7 +6259,7 @@ extern "C" __global__ void QADPressIncomp27(   int inx,
       //Test
       //(D.f[dirZERO])[k]=c1o10;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo q;
+      real q;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       q = q_dirE[k];   if (q>=zero && q<=one) (D27.f[dirW  ])[kw  ]= -feqW27_W  + two * c2over27  * TempD;
       q = q_dirW[k];   if (q>=zero && q<=one) (D27.f[dirE  ])[ke  ]= -feqW27_E  + two * c2over27  * TempD;
diff --git a/src/VirtualFluids_GPU/GPU/AdvecDiffKernel27.cu b/src/VirtualFluids_GPU/GPU/AdvecDiffKernel27.cu
index e1b1c5afc..d55d77922 100644
--- a/src/VirtualFluids_GPU/GPU/AdvecDiffKernel27.cu
+++ b/src/VirtualFluids_GPU/GPU/AdvecDiffKernel27.cu
@@ -4,13 +4,13 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_ThS27(  doubflo diffusivity,
+extern "C" __global__ void LB_Kernel_ThS27(  real diffusivity,
                                              unsigned int* bcMatD,
                                              unsigned int* neighborX,
                                              unsigned int* neighborY,
                                              unsigned int* neighborZ,
-                                             doubflo* DDStart,
-                                             doubflo* DD27,
+                                             real* DDStart,
+                                             real* DD27,
                                              int size_Mat,
                                              bool EvenOrOdd)
 {
@@ -167,84 +167,84 @@ extern "C" __global__ void LB_Kernel_ThS27(  doubflo diffusivity,
          unsigned int kbs  = neighborZ[ks];
          unsigned int kbsw = neighborZ[ksw];
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo fW    =  (D.f[dirE   ])[k  ];//ke
-         doubflo fE    =  (D.f[dirW   ])[kw ];
-         doubflo fS    =  (D.f[dirN   ])[k  ];//kn
-         doubflo fN    =  (D.f[dirS   ])[ks ];
-         doubflo fB    =  (D.f[dirT   ])[k  ];//kt
-         doubflo fT    =  (D.f[dirB   ])[kb ];
-         doubflo fSW   =  (D.f[dirNE  ])[k  ];//kne
-         doubflo fNE   =  (D.f[dirSW  ])[ksw];
-         doubflo fNW   =  (D.f[dirSE  ])[ks ];//kse
-         doubflo fSE   =  (D.f[dirNW  ])[kw ];//knw
-         doubflo fBW   =  (D.f[dirTE  ])[k  ];//kte
-         doubflo fTE   =  (D.f[dirBW  ])[kbw];
-         doubflo fTW   =  (D.f[dirBE  ])[kb ];//kbe
-         doubflo fBE   =  (D.f[dirTW  ])[kw ];//ktw
-         doubflo fBS   =  (D.f[dirTN  ])[k  ];//ktn
-         doubflo fTN   =  (D.f[dirBS  ])[kbs];
-         doubflo fTS   =  (D.f[dirBN  ])[kb ];//kbn
-         doubflo fBN   =  (D.f[dirTS  ])[ks ];//kts
-         doubflo fZERO =  (D.f[dirZERO])[k  ];//kzero
-         doubflo fBSW  =  (D.f[dirTNE ])[k  ];//ktne
-         doubflo fBNE  =  (D.f[dirTSW ])[ksw];//ktsw
-         doubflo fBNW  =  (D.f[dirTSE ])[ks ];//ktse
-         doubflo fBSE  =  (D.f[dirTNW ])[kw ];//ktnw
-         doubflo fTSW  =  (D.f[dirBNE ])[kb ];//kbne
-         doubflo fTNE  =  (D.f[dirBSW ])[kbsw];
-         doubflo fTNW  =  (D.f[dirBSE ])[kbs];//kbse
-         doubflo fTSE  =  (D.f[dirBNW ])[kbw];//kbnw
+         real fW    =  (D.f[dirE   ])[k  ];//ke
+         real fE    =  (D.f[dirW   ])[kw ];
+         real fS    =  (D.f[dirN   ])[k  ];//kn
+         real fN    =  (D.f[dirS   ])[ks ];
+         real fB    =  (D.f[dirT   ])[k  ];//kt
+         real fT    =  (D.f[dirB   ])[kb ];
+         real fSW   =  (D.f[dirNE  ])[k  ];//kne
+         real fNE   =  (D.f[dirSW  ])[ksw];
+         real fNW   =  (D.f[dirSE  ])[ks ];//kse
+         real fSE   =  (D.f[dirNW  ])[kw ];//knw
+         real fBW   =  (D.f[dirTE  ])[k  ];//kte
+         real fTE   =  (D.f[dirBW  ])[kbw];
+         real fTW   =  (D.f[dirBE  ])[kb ];//kbe
+         real fBE   =  (D.f[dirTW  ])[kw ];//ktw
+         real fBS   =  (D.f[dirTN  ])[k  ];//ktn
+         real fTN   =  (D.f[dirBS  ])[kbs];
+         real fTS   =  (D.f[dirBN  ])[kb ];//kbn
+         real fBN   =  (D.f[dirTS  ])[ks ];//kts
+         real fZERO =  (D.f[dirZERO])[k  ];//kzero
+         real fBSW  =  (D.f[dirTNE ])[k  ];//ktne
+         real fBNE  =  (D.f[dirTSW ])[ksw];//ktsw
+         real fBNW  =  (D.f[dirTSE ])[ks ];//ktse
+         real fBSE  =  (D.f[dirTNW ])[kw ];//ktnw
+         real fTSW  =  (D.f[dirBNE ])[kb ];//kbne
+         real fTNE  =  (D.f[dirBSW ])[kbsw];
+         real fTNW  =  (D.f[dirBSE ])[kbs];//kbse
+         real fTSE  =  (D.f[dirBNW ])[kbw];//kbnw
          ////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D27.f[dirE   ])[k  ];
-			doubflo mfabb = (D27.f[dirW   ])[kw ];
-			doubflo mfbcb = (D27.f[dirN   ])[k  ];
-			doubflo mfbab = (D27.f[dirS   ])[ks ];
-			doubflo mfbbc = (D27.f[dirT   ])[k  ];
-			doubflo mfbba = (D27.f[dirB   ])[kb ];
-			doubflo mfccb = (D27.f[dirNE  ])[k  ];
-			doubflo mfaab = (D27.f[dirSW  ])[ksw];
-			doubflo mfcab = (D27.f[dirSE  ])[ks ];
-			doubflo mfacb = (D27.f[dirNW  ])[kw ];
-			doubflo mfcbc = (D27.f[dirTE  ])[k  ];
-			doubflo mfaba = (D27.f[dirBW  ])[kbw];
-			doubflo mfcba = (D27.f[dirBE  ])[kb ];
-			doubflo mfabc = (D27.f[dirTW  ])[kw ];
-			doubflo mfbcc = (D27.f[dirTN  ])[k  ];
-			doubflo mfbaa = (D27.f[dirBS  ])[kbs];
-			doubflo mfbca = (D27.f[dirBN  ])[kb ];
-			doubflo mfbac = (D27.f[dirTS  ])[ks ];
-			doubflo mfbbb = (D27.f[dirZERO])[k  ];
-			doubflo mfccc = (D27.f[dirTNE ])[k  ];
-			doubflo mfaac = (D27.f[dirTSW ])[ksw];
-			doubflo mfcac = (D27.f[dirTSE ])[ks ];
-			doubflo mfacc = (D27.f[dirTNW ])[kw ];
-			doubflo mfcca = (D27.f[dirBNE ])[kb ];
-			doubflo mfaaa = (D27.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D27.f[dirBSE ])[kbs];
-			doubflo mfaca = (D27.f[dirBNW ])[kbw];
+			real mfcbb = (D27.f[dirE   ])[k  ];
+			real mfabb = (D27.f[dirW   ])[kw ];
+			real mfbcb = (D27.f[dirN   ])[k  ];
+			real mfbab = (D27.f[dirS   ])[ks ];
+			real mfbbc = (D27.f[dirT   ])[k  ];
+			real mfbba = (D27.f[dirB   ])[kb ];
+			real mfccb = (D27.f[dirNE  ])[k  ];
+			real mfaab = (D27.f[dirSW  ])[ksw];
+			real mfcab = (D27.f[dirSE  ])[ks ];
+			real mfacb = (D27.f[dirNW  ])[kw ];
+			real mfcbc = (D27.f[dirTE  ])[k  ];
+			real mfaba = (D27.f[dirBW  ])[kbw];
+			real mfcba = (D27.f[dirBE  ])[kb ];
+			real mfabc = (D27.f[dirTW  ])[kw ];
+			real mfbcc = (D27.f[dirTN  ])[k  ];
+			real mfbaa = (D27.f[dirBS  ])[kbs];
+			real mfbca = (D27.f[dirBN  ])[kb ];
+			real mfbac = (D27.f[dirTS  ])[ks ];
+			real mfbbb = (D27.f[dirZERO])[k  ];
+			real mfccc = (D27.f[dirTNE ])[k  ];
+			real mfaac = (D27.f[dirTSW ])[ksw];
+			real mfcac = (D27.f[dirTSE ])[ks ];
+			real mfacc = (D27.f[dirTNW ])[kw ];
+			real mfcca = (D27.f[dirBNE ])[kb ];
+			real mfaaa = (D27.f[dirBSW ])[kbsw];
+			real mfcaa = (D27.f[dirBSE ])[kbs];
+			real mfaca = (D27.f[dirBNW ])[kbw];
 			////////////////////////////////////////////////////////////////////////////////////
 			//Conc
-			doubflo drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 							(((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 							((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb;
 
-			doubflo rho = one+drho;
+			real rho = one+drho;
 			////////////////////////////////////////////////////////////////////////////////
-			doubflo rho0fluid   =  (fTNE+fBSW)+(fTSW+fBNE)+(fTSE+fBNW)+(fTNW+fBSE)+(fNE+fSW)+(fNW+fSE)+(fTE+fBW)+(fBE+fTW)+(fTN+fBS)+(fBN+fTS)+(fE+fW)+(fN+fS)+(fT+fB)+fZERO;
-			doubflo rhofluid    =  rho0fluid + one;
-			doubflo OORhofluid  =  one/rhofluid;
-			doubflo vvx     =  OORhofluid*((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
-			doubflo vvy     =  OORhofluid*((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
-			doubflo vvz     =  OORhofluid*((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
+			real rho0fluid   =  (fTNE+fBSW)+(fTSW+fBNE)+(fTSE+fBNW)+(fTNW+fBSE)+(fNE+fSW)+(fNW+fSE)+(fTE+fBW)+(fBE+fTW)+(fTN+fBS)+(fBN+fTS)+(fE+fW)+(fN+fS)+(fT+fB)+fZERO;
+			real rhofluid    =  rho0fluid + one;
+			real OORhofluid  =  one/rhofluid;
+			real vvx     =  OORhofluid*((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
+			real vvy     =  OORhofluid*((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
+			real vvz     =  OORhofluid*((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
 			////////////////////////////////////////////////////////////////////////////////
-			//doubflo omegaD     = zero;
-			doubflo omegaD     = two / (six * diffusivity + one);
+			//real omegaD     = zero;
+			real omegaD     = two / (six * diffusivity + one);
 
-			doubflo oMdrho = zero;//one; // comp special
-			doubflo m0, m1, m2;
-			doubflo vx2=vvx*vvx;
-			doubflo vy2=vvy*vvy;
-			doubflo vz2=vvz*vvz;
+			real oMdrho = zero;//one; // comp special
+			real m0, m1, m2;
+			real vx2=vvx*vvx;
+			real vy2=vvy*vvy;
+			real vz2=vvz*vvz;
 
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
@@ -477,24 +477,24 @@ extern "C" __global__ void LB_Kernel_ThS27(  doubflo diffusivity,
 			////////////////////////////////////////////////////////////////////////////////////
 
 			//if(mfaaa < zero) omegaD = one;
-			doubflo limit=nine*omegaD*omegaD*(mfbaa*mfbaa+mfaba*mfaba+mfaab*mfaab);
-			//doubflo CC=c1o2;
+			real limit=nine*omegaD*omegaD*(mfbaa*mfbaa+mfaba*mfaba+mfaab*mfaab);
+			//real CC=c1o2;
 			//if ((two*mfaaa*mfaaa<limit)) omegaD=two / (six * (diffusivity+((limit/(1.0e-10f+two*mfaaa*mfaaa)-one)*(c1o6-diffusivity))*c1o2) + one);
 			if ((two*mfaaa*mfaaa<limit)) omegaD=one;
 			//omegaD = two / (six * (diffusivity+CC*limit) + one);
 
 			//mfaaa = c1o2;
 			//trans 3.
-			doubflo Mabc=mfabc-mfaba*c1o3;
-			doubflo Mbca=mfbca-mfbaa*c1o3;
-			doubflo Macb=mfacb-mfaab*c1o3;
-			doubflo Mcba=mfcba-mfaba*c1o3;
-			doubflo Mcab=mfcab-mfaab*c1o3;
-			doubflo Mbac=mfbac-mfbaa*c1o3;
+			real Mabc=mfabc-mfaba*c1o3;
+			real Mbca=mfbca-mfbaa*c1o3;
+			real Macb=mfacb-mfaab*c1o3;
+			real Mcba=mfcba-mfaba*c1o3;
+			real Mcab=mfcab-mfaab*c1o3;
+			real Mbac=mfbac-mfbaa*c1o3;
 			//trans 5.
-			doubflo Mcbc=mfcbc-mfaba*c1o9;
-			doubflo Mbcc=mfbcc-mfbaa*c1o9;
-			doubflo Mccb=mfccb-mfaab*c1o9;
+			real Mcbc=mfcbc-mfaba*c1o9;
+			real Mbcc=mfbcc-mfbaa*c1o9;
+			real Mccb=mfccb-mfaab*c1o9;
 
 			//1.
 			mfbaa *= one - omegaD;
@@ -829,13 +829,13 @@ extern "C" __global__ void LB_Kernel_ThS27(  doubflo diffusivity,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_ThS7( doubflo diffusivity,
+extern "C" __global__ void LB_Kernel_ThS7( real diffusivity,
                                            unsigned int* bcMatD,
                                            unsigned int* neighborX,
                                            unsigned int* neighborY,
                                            unsigned int* neighborZ,
-                                           doubflo* DDStart,
-                                           doubflo* DD7,
+                                           real* DDStart,
+                                           real* DD7,
                                            int size_Mat,
                                            bool EvenOrOdd)
 {
@@ -952,85 +952,85 @@ extern "C" __global__ void LB_Kernel_ThS7( doubflo diffusivity,
          unsigned int kbs  = neighborZ[ks];
          unsigned int kbsw = neighborZ[ksw];
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo fW    =  (D.f[dirE   ])[k  ];//ke
-         doubflo fE    =  (D.f[dirW   ])[kw ];
-         doubflo fS    =  (D.f[dirN   ])[k  ];//kn
-         doubflo fN    =  (D.f[dirS   ])[ks ];
-         doubflo fB    =  (D.f[dirT   ])[k  ];//kt
-         doubflo fT    =  (D.f[dirB   ])[kb ];
-         doubflo fSW   =  (D.f[dirNE  ])[k  ];//kne
-         doubflo fNE   =  (D.f[dirSW  ])[ksw];
-         doubflo fNW   =  (D.f[dirSE  ])[ks ];//kse
-         doubflo fSE   =  (D.f[dirNW  ])[kw ];//knw
-         doubflo fBW   =  (D.f[dirTE  ])[k  ];//kte
-         doubflo fTE   =  (D.f[dirBW  ])[kbw];
-         doubflo fTW   =  (D.f[dirBE  ])[kb ];//kbe
-         doubflo fBE   =  (D.f[dirTW  ])[kw ];//ktw
-         doubflo fBS   =  (D.f[dirTN  ])[k  ];//ktn
-         doubflo fTN   =  (D.f[dirBS  ])[kbs];
-         doubflo fTS   =  (D.f[dirBN  ])[kb ];//kbn
-         doubflo fBN   =  (D.f[dirTS  ])[ks ];//kts
-         doubflo fZERO =  (D.f[dirZERO])[k  ];//kzero
-         doubflo fBSW   = (D.f[dirTNE ])[k  ];//ktne
-         doubflo fBNE   = (D.f[dirTSW ])[ksw];//ktsw
-         doubflo fBNW   = (D.f[dirTSE ])[ks ];//ktse
-         doubflo fBSE   = (D.f[dirTNW ])[kw ];//ktnw
-         doubflo fTSW   = (D.f[dirBNE ])[kb ];//kbne
-         doubflo fTNE   = (D.f[dirBSW ])[kbsw];
-         doubflo fTNW   = (D.f[dirBSE ])[kbs];//kbse
-         doubflo fTSE   = (D.f[dirBNW ])[kbw];//kbnw
-         //doubflo fE    =  (D.f[dirE   ])[k  ];//ke
-         //doubflo fW    =  (D.f[dirW   ])[kw ];
-         //doubflo fN    =  (D.f[dirN   ])[k  ];//kn
-         //doubflo fS    =  (D.f[dirS   ])[ks ];
-         //doubflo fT    =  (D.f[dirT   ])[k  ];//kt
-         //doubflo fB    =  (D.f[dirB   ])[kb ];
-         //doubflo fNE   =  (D.f[dirNE  ])[k  ];//kne
-         //doubflo fSW   =  (D.f[dirSW  ])[ksw];
-         //doubflo fSE   =  (D.f[dirSE  ])[ks ];//kse
-         //doubflo fNW   =  (D.f[dirNW  ])[kw ];//knw
-         //doubflo fTE   =  (D.f[dirTE  ])[k  ];//kte
-         //doubflo fBW   =  (D.f[dirBW  ])[kbw];
-         //doubflo fBE   =  (D.f[dirBE  ])[kb ];//kbe
-         //doubflo fTW   =  (D.f[dirTW  ])[kw ];//ktw
-         //doubflo fTN   =  (D.f[dirTN  ])[k  ];//ktn
-         //doubflo fBS   =  (D.f[dirBS  ])[kbs];
-         //doubflo fBN   =  (D.f[dirBN  ])[kb ];//kbn
-         //doubflo fTS   =  (D.f[dirTS  ])[ks ];//kts
-         //doubflo fZERO =  (D.f[dirZERO])[k  ];//kzero
-         //doubflo fTNE   = (D.f[dirTNE ])[k  ];//ktne
-         //doubflo fTSW   = (D.f[dirTSW ])[ksw];//ktsw
-         //doubflo fTSE   = (D.f[dirTSE ])[ks ];//ktse
-         //doubflo fTNW   = (D.f[dirTNW ])[kw ];//ktnw
-         //doubflo fBNE   = (D.f[dirBNE ])[kb ];//kbne
-         //doubflo fBSW   = (D.f[dirBSW ])[kbsw];
-         //doubflo fBSE   = (D.f[dirBSE ])[kbs];//kbse
-         //doubflo fBNW   = (D.f[dirBNW ])[kbw];//kbnw
+         real fW    =  (D.f[dirE   ])[k  ];//ke
+         real fE    =  (D.f[dirW   ])[kw ];
+         real fS    =  (D.f[dirN   ])[k  ];//kn
+         real fN    =  (D.f[dirS   ])[ks ];
+         real fB    =  (D.f[dirT   ])[k  ];//kt
+         real fT    =  (D.f[dirB   ])[kb ];
+         real fSW   =  (D.f[dirNE  ])[k  ];//kne
+         real fNE   =  (D.f[dirSW  ])[ksw];
+         real fNW   =  (D.f[dirSE  ])[ks ];//kse
+         real fSE   =  (D.f[dirNW  ])[kw ];//knw
+         real fBW   =  (D.f[dirTE  ])[k  ];//kte
+         real fTE   =  (D.f[dirBW  ])[kbw];
+         real fTW   =  (D.f[dirBE  ])[kb ];//kbe
+         real fBE   =  (D.f[dirTW  ])[kw ];//ktw
+         real fBS   =  (D.f[dirTN  ])[k  ];//ktn
+         real fTN   =  (D.f[dirBS  ])[kbs];
+         real fTS   =  (D.f[dirBN  ])[kb ];//kbn
+         real fBN   =  (D.f[dirTS  ])[ks ];//kts
+         real fZERO =  (D.f[dirZERO])[k  ];//kzero
+         real fBSW   = (D.f[dirTNE ])[k  ];//ktne
+         real fBNE   = (D.f[dirTSW ])[ksw];//ktsw
+         real fBNW   = (D.f[dirTSE ])[ks ];//ktse
+         real fBSE   = (D.f[dirTNW ])[kw ];//ktnw
+         real fTSW   = (D.f[dirBNE ])[kb ];//kbne
+         real fTNE   = (D.f[dirBSW ])[kbsw];
+         real fTNW   = (D.f[dirBSE ])[kbs];//kbse
+         real fTSE   = (D.f[dirBNW ])[kbw];//kbnw
+         //real fE    =  (D.f[dirE   ])[k  ];//ke
+         //real fW    =  (D.f[dirW   ])[kw ];
+         //real fN    =  (D.f[dirN   ])[k  ];//kn
+         //real fS    =  (D.f[dirS   ])[ks ];
+         //real fT    =  (D.f[dirT   ])[k  ];//kt
+         //real fB    =  (D.f[dirB   ])[kb ];
+         //real fNE   =  (D.f[dirNE  ])[k  ];//kne
+         //real fSW   =  (D.f[dirSW  ])[ksw];
+         //real fSE   =  (D.f[dirSE  ])[ks ];//kse
+         //real fNW   =  (D.f[dirNW  ])[kw ];//knw
+         //real fTE   =  (D.f[dirTE  ])[k  ];//kte
+         //real fBW   =  (D.f[dirBW  ])[kbw];
+         //real fBE   =  (D.f[dirBE  ])[kb ];//kbe
+         //real fTW   =  (D.f[dirTW  ])[kw ];//ktw
+         //real fTN   =  (D.f[dirTN  ])[k  ];//ktn
+         //real fBS   =  (D.f[dirBS  ])[kbs];
+         //real fBN   =  (D.f[dirBN  ])[kb ];//kbn
+         //real fTS   =  (D.f[dirTS  ])[ks ];//kts
+         //real fZERO =  (D.f[dirZERO])[k  ];//kzero
+         //real fTNE   = (D.f[dirTNE ])[k  ];//ktne
+         //real fTSW   = (D.f[dirTSW ])[ksw];//ktsw
+         //real fTSE   = (D.f[dirTSE ])[ks ];//ktse
+         //real fTNW   = (D.f[dirTNW ])[kw ];//ktnw
+         //real fBNE   = (D.f[dirBNE ])[kb ];//kbne
+         //real fBSW   = (D.f[dirBSW ])[kbsw];
+         //real fBSE   = (D.f[dirBSE ])[kbs];//kbse
+         //real fBNW   = (D.f[dirBNW ])[kbw];//kbnw
          ////////////////////////////////////////////////////////////////////////////////
-         doubflo f7ZERO =  (D7.f[0])[k  ];
-         doubflo f7E    =  (D7.f[1])[k  ];
-         doubflo f7W    =  (D7.f[2])[kw ];
-         doubflo f7N    =  (D7.f[3])[k  ];
-         doubflo f7S    =  (D7.f[4])[ks ];
-         doubflo f7T    =  (D7.f[5])[k  ];
-         doubflo f7B    =  (D7.f[6])[kb ];
+         real f7ZERO =  (D7.f[0])[k  ];
+         real f7E    =  (D7.f[1])[k  ];
+         real f7W    =  (D7.f[2])[kw ];
+         real f7N    =  (D7.f[3])[k  ];
+         real f7S    =  (D7.f[4])[ks ];
+         real f7T    =  (D7.f[5])[k  ];
+         real f7B    =  (D7.f[6])[kb ];
          ////////////////////////////////////////////////////////////////////////////////
-         doubflo rho0   =  (fTNE+fBSW)+(fTSW+fBNE)+(fTSE+fBNW)+(fTNW+fBSE)+(fNE+fSW)+(fNW+fSE)+(fTE+fBW)+(fBE+fTW)+(fTN+fBS)+(fBN+fTS)+(fE+fW)+(fN+fS)+(fT+fB)+fZERO;
-         doubflo rho    =  rho0 + one;
-         doubflo OORho  =  one/rho;
-         doubflo vx     =  OORho*((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
-         doubflo vy     =  OORho*((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
-         doubflo vz     =  OORho*((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
+         real rho0   =  (fTNE+fBSW)+(fTSW+fBNE)+(fTSE+fBNW)+(fTNW+fBSE)+(fNE+fSW)+(fNW+fSE)+(fTE+fBW)+(fBE+fTW)+(fTN+fBS)+(fBN+fTS)+(fE+fW)+(fN+fS)+(fT+fB)+fZERO;
+         real rho    =  rho0 + one;
+         real OORho  =  one/rho;
+         real vx     =  OORho*((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
+         real vy     =  OORho*((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
+         real vz     =  OORho*((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
          ////////////////////////////////////////////////////////////////////////////////
-         doubflo omegaD     = -three + sqrt(three);
-         doubflo Lam         = -(c1o2+one/omegaD);
-         doubflo nue_d       = Lam/three;
-         doubflo ae          = diffusivity/nue_d - one;
-         doubflo ux_sq       = vx * vx;
-         doubflo uy_sq       = vy * vy;
-         doubflo uz_sq       = vz * vz;
+         real omegaD     = -three + sqrt(three);
+         real Lam         = -(c1o2+one/omegaD);
+         real nue_d       = Lam/three;
+         real ae          = diffusivity/nue_d - one;
+         real ux_sq       = vx * vx;
+         real uy_sq       = vy * vy;
+         real uz_sq       = vz * vz;
 
-         doubflo ConcD       = f7ZERO+f7E+f7W+f7N+f7S+f7T+f7B;
+         real ConcD       = f7ZERO+f7E+f7W+f7N+f7S+f7T+f7B;
 
          (D7.f[0])[k  ] = f7ZERO*(one+omegaD)-omegaD*ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq));
          (D7.f[2])[kw ] = f7E   *(one+omegaD)-omegaD*ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx*c1o2);
@@ -1099,13 +1099,13 @@ extern "C" __global__ void LB_Kernel_ThS7( doubflo diffusivity,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_AD_Incomp_27(   doubflo diffusivity,
+extern "C" __global__ void LB_Kernel_AD_Incomp_27(   real diffusivity,
 													 unsigned int* bcMatD,
 													 unsigned int* neighborX,
 													 unsigned int* neighborY,
 													 unsigned int* neighborZ,
-													 doubflo* DDStart,
-													 doubflo* DD27,
+													 real* DDStart,
+													 real* DD27,
 													 int size_Mat,
 													 bool EvenOrOdd)
 {
@@ -1262,121 +1262,121 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_27(   doubflo diffusivity,
          unsigned int kbs  = neighborZ[ks];
          unsigned int kbsw = neighborZ[ksw];
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo fW    =  (D.f[dirE   ])[k  ];//ke
-         doubflo fE    =  (D.f[dirW   ])[kw ];
-         doubflo fS    =  (D.f[dirN   ])[k  ];//kn
-         doubflo fN    =  (D.f[dirS   ])[ks ];
-         doubflo fB    =  (D.f[dirT   ])[k  ];//kt
-         doubflo fT    =  (D.f[dirB   ])[kb ];
-         doubflo fSW   =  (D.f[dirNE  ])[k  ];//kne
-         doubflo fNE   =  (D.f[dirSW  ])[ksw];
-         doubflo fNW   =  (D.f[dirSE  ])[ks ];//kse
-         doubflo fSE   =  (D.f[dirNW  ])[kw ];//knw
-         doubflo fBW   =  (D.f[dirTE  ])[k  ];//kte
-         doubflo fTE   =  (D.f[dirBW  ])[kbw];
-         doubflo fTW   =  (D.f[dirBE  ])[kb ];//kbe
-         doubflo fBE   =  (D.f[dirTW  ])[kw ];//ktw
-         doubflo fBS   =  (D.f[dirTN  ])[k  ];//ktn
-         doubflo fTN   =  (D.f[dirBS  ])[kbs];
-         doubflo fTS   =  (D.f[dirBN  ])[kb ];//kbn
-         doubflo fBN   =  (D.f[dirTS  ])[ks ];//kts
-         doubflo fZERO =  (D.f[dirZERO])[k  ];//kzero
-         doubflo fBSW  =  (D.f[dirTNE ])[k  ];//ktne
-         doubflo fBNE  =  (D.f[dirTSW ])[ksw];//ktsw
-         doubflo fBNW  =  (D.f[dirTSE ])[ks ];//ktse
-         doubflo fBSE  =  (D.f[dirTNW ])[kw ];//ktnw
-         doubflo fTSW  =  (D.f[dirBNE ])[kb ];//kbne
-         doubflo fTNE  =  (D.f[dirBSW ])[kbsw];
-         doubflo fTNW  =  (D.f[dirBSE ])[kbs];//kbse
-         doubflo fTSE  =  (D.f[dirBNW ])[kbw];//kbnw
+         real fW    =  (D.f[dirE   ])[k  ];//ke
+         real fE    =  (D.f[dirW   ])[kw ];
+         real fS    =  (D.f[dirN   ])[k  ];//kn
+         real fN    =  (D.f[dirS   ])[ks ];
+         real fB    =  (D.f[dirT   ])[k  ];//kt
+         real fT    =  (D.f[dirB   ])[kb ];
+         real fSW   =  (D.f[dirNE  ])[k  ];//kne
+         real fNE   =  (D.f[dirSW  ])[ksw];
+         real fNW   =  (D.f[dirSE  ])[ks ];//kse
+         real fSE   =  (D.f[dirNW  ])[kw ];//knw
+         real fBW   =  (D.f[dirTE  ])[k  ];//kte
+         real fTE   =  (D.f[dirBW  ])[kbw];
+         real fTW   =  (D.f[dirBE  ])[kb ];//kbe
+         real fBE   =  (D.f[dirTW  ])[kw ];//ktw
+         real fBS   =  (D.f[dirTN  ])[k  ];//ktn
+         real fTN   =  (D.f[dirBS  ])[kbs];
+         real fTS   =  (D.f[dirBN  ])[kb ];//kbn
+         real fBN   =  (D.f[dirTS  ])[ks ];//kts
+         real fZERO =  (D.f[dirZERO])[k  ];//kzero
+         real fBSW  =  (D.f[dirTNE ])[k  ];//ktne
+         real fBNE  =  (D.f[dirTSW ])[ksw];//ktsw
+         real fBNW  =  (D.f[dirTSE ])[ks ];//ktse
+         real fBSE  =  (D.f[dirTNW ])[kw ];//ktnw
+         real fTSW  =  (D.f[dirBNE ])[kb ];//kbne
+         real fTNE  =  (D.f[dirBSW ])[kbsw];
+         real fTNW  =  (D.f[dirBSE ])[kbs];//kbse
+         real fTSE  =  (D.f[dirBNW ])[kbw];//kbnw
          ////////////////////////////////////////////////////////////////////////////////
-         //doubflo f27E    =  (D27.f[dirE   ])[k  ];//ke
-         //doubflo f27W    =  (D27.f[dirW   ])[kw ];
-         //doubflo f27N    =  (D27.f[dirN   ])[k  ];//kn
-         //doubflo f27S    =  (D27.f[dirS   ])[ks ];
-         //doubflo f27T    =  (D27.f[dirT   ])[k  ];//kt
-         //doubflo f27B    =  (D27.f[dirB   ])[kb ];
-         //doubflo f27NE   =  (D27.f[dirNE  ])[k  ];//kne
-         //doubflo f27SW   =  (D27.f[dirSW  ])[ksw];
-         //doubflo f27SE   =  (D27.f[dirSE  ])[ks ];//kse
-         //doubflo f27NW   =  (D27.f[dirNW  ])[kw ];//knw
-         //doubflo f27TE   =  (D27.f[dirTE  ])[k  ];//kte
-         //doubflo f27BW   =  (D27.f[dirBW  ])[kbw];
-         //doubflo f27BE   =  (D27.f[dirBE  ])[kb ];//kbe
-         //doubflo f27TW   =  (D27.f[dirTW  ])[kw ];//ktw
-         //doubflo f27TN   =  (D27.f[dirTN  ])[k  ];//ktn
-         //doubflo f27BS   =  (D27.f[dirBS  ])[kbs];
-         //doubflo f27BN   =  (D27.f[dirBN  ])[kb ];//kbn
-         //doubflo f27TS   =  (D27.f[dirTS  ])[ks ];//kts
-         //doubflo f27ZERO =  (D27.f[dirZERO])[k  ];//kzero
-         //doubflo f27TNE  =  (D27.f[dirTNE ])[k  ];//ktne
-         //doubflo f27TSW  =  (D27.f[dirTSW ])[ksw];//ktsw
-         //doubflo f27TSE  =  (D27.f[dirTSE ])[ks ];//ktse
-         //doubflo f27TNW  =  (D27.f[dirTNW ])[kw ];//ktnw
-         //doubflo f27BNE  =  (D27.f[dirBNE ])[kb ];//kbne
-         //doubflo f27BSW  =  (D27.f[dirBSW ])[kbsw];
-         //doubflo f27BSE  =  (D27.f[dirBSE ])[kbs];//kbse
-         //doubflo f27BNW  =  (D27.f[dirBNW ])[kbw];//kbnw
+         //real f27E    =  (D27.f[dirE   ])[k  ];//ke
+         //real f27W    =  (D27.f[dirW   ])[kw ];
+         //real f27N    =  (D27.f[dirN   ])[k  ];//kn
+         //real f27S    =  (D27.f[dirS   ])[ks ];
+         //real f27T    =  (D27.f[dirT   ])[k  ];//kt
+         //real f27B    =  (D27.f[dirB   ])[kb ];
+         //real f27NE   =  (D27.f[dirNE  ])[k  ];//kne
+         //real f27SW   =  (D27.f[dirSW  ])[ksw];
+         //real f27SE   =  (D27.f[dirSE  ])[ks ];//kse
+         //real f27NW   =  (D27.f[dirNW  ])[kw ];//knw
+         //real f27TE   =  (D27.f[dirTE  ])[k  ];//kte
+         //real f27BW   =  (D27.f[dirBW  ])[kbw];
+         //real f27BE   =  (D27.f[dirBE  ])[kb ];//kbe
+         //real f27TW   =  (D27.f[dirTW  ])[kw ];//ktw
+         //real f27TN   =  (D27.f[dirTN  ])[k  ];//ktn
+         //real f27BS   =  (D27.f[dirBS  ])[kbs];
+         //real f27BN   =  (D27.f[dirBN  ])[kb ];//kbn
+         //real f27TS   =  (D27.f[dirTS  ])[ks ];//kts
+         //real f27ZERO =  (D27.f[dirZERO])[k  ];//kzero
+         //real f27TNE  =  (D27.f[dirTNE ])[k  ];//ktne
+         //real f27TSW  =  (D27.f[dirTSW ])[ksw];//ktsw
+         //real f27TSE  =  (D27.f[dirTSE ])[ks ];//ktse
+         //real f27TNW  =  (D27.f[dirTNW ])[kw ];//ktnw
+         //real f27BNE  =  (D27.f[dirBNE ])[kb ];//kbne
+         //real f27BSW  =  (D27.f[dirBSW ])[kbsw];
+         //real f27BSE  =  (D27.f[dirBSE ])[kbs];//kbse
+         //real f27BNW  =  (D27.f[dirBNW ])[kbw];//kbnw
          ////////////////////////////////////////////////////////////////////////////////
-         //doubflo vx1     =  ((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
-         //doubflo vx2     =  ((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
-         //doubflo vx3     =  ((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
+         //real vx1     =  ((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
+         //real vx2     =  ((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
+         //real vx3     =  ((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
          ////////////////////////////////////////////////////////////////////////////////
 
 		 
-		 	doubflo mfcbb = (D27.f[dirE   ])[k  ];
-			doubflo mfabb = (D27.f[dirW   ])[kw ];
-			doubflo mfbcb = (D27.f[dirN   ])[k  ];
-			doubflo mfbab = (D27.f[dirS   ])[ks ];
-			doubflo mfbbc = (D27.f[dirT   ])[k  ];
-			doubflo mfbba = (D27.f[dirB   ])[kb ];
-			doubflo mfccb = (D27.f[dirNE  ])[k  ];
-			doubflo mfaab = (D27.f[dirSW  ])[ksw];
-			doubflo mfcab = (D27.f[dirSE  ])[ks ];
-			doubflo mfacb = (D27.f[dirNW  ])[kw ];
-			doubflo mfcbc = (D27.f[dirTE  ])[k  ];
-			doubflo mfaba = (D27.f[dirBW  ])[kbw];
-			doubflo mfcba = (D27.f[dirBE  ])[kb ];
-			doubflo mfabc = (D27.f[dirTW  ])[kw ];
-			doubflo mfbcc = (D27.f[dirTN  ])[k  ];
-			doubflo mfbaa = (D27.f[dirBS  ])[kbs];
-			doubflo mfbca = (D27.f[dirBN  ])[kb ];
-			doubflo mfbac = (D27.f[dirTS  ])[ks ];
-			doubflo mfbbb = (D27.f[dirZERO])[k  ];
-			doubflo mfccc = (D27.f[dirTNE ])[k  ];
-			doubflo mfaac = (D27.f[dirTSW ])[ksw];
-			doubflo mfcac = (D27.f[dirTSE ])[ks ];
-			doubflo mfacc = (D27.f[dirTNW ])[kw ];
-			doubflo mfcca = (D27.f[dirBNE ])[kb ];
-			doubflo mfaaa = (D27.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D27.f[dirBSE ])[kbs];
-			doubflo mfaca = (D27.f[dirBNW ])[kbw];
+		 	real mfcbb = (D27.f[dirE   ])[k  ];
+			real mfabb = (D27.f[dirW   ])[kw ];
+			real mfbcb = (D27.f[dirN   ])[k  ];
+			real mfbab = (D27.f[dirS   ])[ks ];
+			real mfbbc = (D27.f[dirT   ])[k  ];
+			real mfbba = (D27.f[dirB   ])[kb ];
+			real mfccb = (D27.f[dirNE  ])[k  ];
+			real mfaab = (D27.f[dirSW  ])[ksw];
+			real mfcab = (D27.f[dirSE  ])[ks ];
+			real mfacb = (D27.f[dirNW  ])[kw ];
+			real mfcbc = (D27.f[dirTE  ])[k  ];
+			real mfaba = (D27.f[dirBW  ])[kbw];
+			real mfcba = (D27.f[dirBE  ])[kb ];
+			real mfabc = (D27.f[dirTW  ])[kw ];
+			real mfbcc = (D27.f[dirTN  ])[k  ];
+			real mfbaa = (D27.f[dirBS  ])[kbs];
+			real mfbca = (D27.f[dirBN  ])[kb ];
+			real mfbac = (D27.f[dirTS  ])[ks ];
+			real mfbbb = (D27.f[dirZERO])[k  ];
+			real mfccc = (D27.f[dirTNE ])[k  ];
+			real mfaac = (D27.f[dirTSW ])[ksw];
+			real mfcac = (D27.f[dirTSE ])[ks ];
+			real mfacc = (D27.f[dirTNW ])[kw ];
+			real mfcca = (D27.f[dirBNE ])[kb ];
+			real mfaaa = (D27.f[dirBSW ])[kbsw];
+			real mfcaa = (D27.f[dirBSE ])[kbs];
+			real mfaca = (D27.f[dirBNW ])[kbw];
 			////////////////////////////////////////////////////////////////////////////////////
 			//Conc
-			doubflo drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 							(((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 							((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb;
-			doubflo rho = one+drho;
+			real rho = one+drho;
 			////////////////////////////////////////////////////////////////////////////////////
 
-			doubflo vvx     =  ((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
-			doubflo vvy     =  ((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
-			doubflo vvz     =  ((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
+			real vvx     =  ((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
+			real vvy     =  ((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
+			real vvz     =  ((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
 		 ////////////////////////////////////////////////////////////////////////////////
-         doubflo omegaD     = two / (six * diffusivity + one);
-         ////doubflo omegaD     = -three + sqrt(three);
-         ////doubflo Lam         = -(c1o2+one/omegaD);
-         ////doubflo nue_d       = Lam/three;
-         //doubflo ae          = zero;
-         ////doubflo ae          = diffusivity/nue_d - one;
-         //doubflo ux_sq       = vx * vx;
-         //doubflo uy_sq       = vy * vy;
-         //doubflo uz_sq       = vz * vz;
+         real omegaD     = two / (six * diffusivity + one);
+         ////real omegaD     = -three + sqrt(three);
+         ////real Lam         = -(c1o2+one/omegaD);
+         ////real nue_d       = Lam/three;
+         //real ae          = zero;
+         ////real ae          = diffusivity/nue_d - one;
+         //real ux_sq       = vx * vx;
+         //real uy_sq       = vy * vy;
+         //real uz_sq       = vz * vz;
 
 
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          //D3Q7
-         //doubflo ConcD       = f7ZERO+f7E+f7W+f7N+f7S+f7T+f7B;
+         //real ConcD       = f7ZERO+f7E+f7W+f7N+f7S+f7T+f7B;
          //(D7.f[0])[k  ] = f7ZERO*(one+omegaD)-omegaD*ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq));
          //(D7.f[2])[kw ] = f7E   *(one+omegaD)-omegaD*ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx*c1o2);
          //(D7.f[1])[k  ] = f7W   *(one+omegaD)-omegaD*ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)-vx*c1o2);
@@ -1389,10 +1389,10 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_27(   doubflo diffusivity,
 
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          ////D3Q27
-         //doubflo ConcD   = (f27TNE+f27BSW)+(f27TSW+f27BNE)+(f27TSE+f27BNW)+(f27TNW+f27BSE)+
+         //real ConcD   = (f27TNE+f27BSW)+(f27TSW+f27BNE)+(f27TSE+f27BNW)+(f27TNW+f27BSE)+
          //                  (f27NE+f27SW)+(f27NW+f27SE)+(f27TE+f27BW)+(f27BE+f27TW)+(f27TN+f27BS)+(f27BN+f27TS)+
          //                  (f27E+f27W)+(f27N+f27S)+(f27T+f27B)+f27ZERO;
-         //doubflo cusq    =  c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+         //real cusq    =  c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
          //(D27.f[ dirE   ])[k   ] = f27W    *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cusq);                                                                     
          //(D27.f[ dirW   ])[kw  ] = f27E    *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq);                                                                     
@@ -1423,11 +1423,11 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_27(   doubflo diffusivity,
          //(D27.f[ dirBSW ])[kbsw] = f27TNE  *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq);
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
-		 	doubflo oMdrho = zero;//one; // comp special
-			doubflo m0, m1, m2;
-			doubflo vx2=vvx*vvx;
-			doubflo vy2=vvy*vvy;
-			doubflo vz2=vvz*vvz;
+		 	real oMdrho = zero;//one; // comp special
+			real m0, m1, m2;
+			real vx2=vvx*vvx;
+			real vy2=vvy*vvy;
+			real vz2=vvz*vvz;
 
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
@@ -1660,24 +1660,24 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_27(   doubflo diffusivity,
 			////////////////////////////////////////////////////////////////////////////////////
 
 			//if(mfaaa < zero) omegaD = one;
-			doubflo limit=nine*omegaD*omegaD*(mfbaa*mfbaa+mfaba*mfaba+mfaab*mfaab);
-			//doubflo CC=c1o2;
+			real limit=nine*omegaD*omegaD*(mfbaa*mfbaa+mfaba*mfaba+mfaab*mfaab);
+			//real CC=c1o2;
 			//if ((two*mfaaa*mfaaa<limit)) omegaD=two / (six * (diffusivity+((limit/(1.0e-10f+two*mfaaa*mfaaa)-one)*(c1o6-diffusivity))*c1o2) + one);
 			if ((two*mfaaa*mfaaa<limit)) omegaD=one;
 			//omegaD = two / (six * (diffusivity+CC*limit) + one);
 
 			//mfaaa = c1o2;
 			//trans 3.
-			doubflo Mabc=mfabc-mfaba*c1o3;
-			doubflo Mbca=mfbca-mfbaa*c1o3;
-			doubflo Macb=mfacb-mfaab*c1o3;
-			doubflo Mcba=mfcba-mfaba*c1o3;
-			doubflo Mcab=mfcab-mfaab*c1o3;
-			doubflo Mbac=mfbac-mfbaa*c1o3;
+			real Mabc=mfabc-mfaba*c1o3;
+			real Mbca=mfbca-mfbaa*c1o3;
+			real Macb=mfacb-mfaab*c1o3;
+			real Mcba=mfcba-mfaba*c1o3;
+			real Mcab=mfcab-mfaab*c1o3;
+			real Mbac=mfbac-mfbaa*c1o3;
 			//trans 5.
-			doubflo Mcbc=mfcbc-mfaba*c1o9;
-			doubflo Mbcc=mfbcc-mfbaa*c1o9;
-			doubflo Mccb=mfccb-mfaab*c1o9;
+			real Mcbc=mfcbc-mfaba*c1o9;
+			real Mbcc=mfbcc-mfbaa*c1o9;
+			real Mccb=mfccb-mfaab*c1o9;
 
 			//1.
 			mfbaa *= one - omegaD;
@@ -2013,13 +2013,13 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_27(   doubflo diffusivity,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_AD_Incomp_7(  doubflo diffusivity,
+extern "C" __global__ void LB_Kernel_AD_Incomp_7(  real diffusivity,
 												   unsigned int* bcMatD,
 												   unsigned int* neighborX,
 												   unsigned int* neighborY,
 												   unsigned int* neighborZ,
-												   doubflo* DDStart,
-												   doubflo* DD7,
+												   real* DDStart,
+												   real* DD7,
 												   int size_Mat,
 												   bool EvenOrOdd)
 {
@@ -2136,88 +2136,88 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_7(  doubflo diffusivity,
          unsigned int kbs  = neighborZ[ks];
          unsigned int kbsw = neighborZ[ksw];
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo fW    =  (D.f[dirE   ])[k  ];//ke
-         doubflo fE    =  (D.f[dirW   ])[kw ];
-         doubflo fS    =  (D.f[dirN   ])[k  ];//kn
-         doubflo fN    =  (D.f[dirS   ])[ks ];
-         doubflo fB    =  (D.f[dirT   ])[k  ];//kt
-         doubflo fT    =  (D.f[dirB   ])[kb ];
-         doubflo fSW   =  (D.f[dirNE  ])[k  ];//kne
-         doubflo fNE   =  (D.f[dirSW  ])[ksw];
-         doubflo fNW   =  (D.f[dirSE  ])[ks ];//kse
-         doubflo fSE   =  (D.f[dirNW  ])[kw ];//knw
-         doubflo fBW   =  (D.f[dirTE  ])[k  ];//kte
-         doubflo fTE   =  (D.f[dirBW  ])[kbw];
-         doubflo fTW   =  (D.f[dirBE  ])[kb ];//kbe
-         doubflo fBE   =  (D.f[dirTW  ])[kw ];//ktw
-         doubflo fBS   =  (D.f[dirTN  ])[k  ];//ktn
-         doubflo fTN   =  (D.f[dirBS  ])[kbs];
-         doubflo fTS   =  (D.f[dirBN  ])[kb ];//kbn
-         doubflo fBN   =  (D.f[dirTS  ])[ks ];//kts
-         doubflo fZERO =  (D.f[dirZERO])[k  ];//kzero
-         doubflo fBSW   = (D.f[dirTNE ])[k  ];//ktne
-         doubflo fBNE   = (D.f[dirTSW ])[ksw];//ktsw
-         doubflo fBNW   = (D.f[dirTSE ])[ks ];//ktse
-         doubflo fBSE   = (D.f[dirTNW ])[kw ];//ktnw
-         doubflo fTSW   = (D.f[dirBNE ])[kb ];//kbne
-         doubflo fTNE   = (D.f[dirBSW ])[kbsw];
-         doubflo fTNW   = (D.f[dirBSE ])[kbs];//kbse
-         doubflo fTSE   = (D.f[dirBNW ])[kbw];//kbnw
-         //doubflo fE    =  (D.f[dirE   ])[k  ];//ke
-         //doubflo fW    =  (D.f[dirW   ])[kw ];
-         //doubflo fN    =  (D.f[dirN   ])[k  ];//kn
-         //doubflo fS    =  (D.f[dirS   ])[ks ];
-         //doubflo fT    =  (D.f[dirT   ])[k  ];//kt
-         //doubflo fB    =  (D.f[dirB   ])[kb ];
-         //doubflo fNE   =  (D.f[dirNE  ])[k  ];//kne
-         //doubflo fSW   =  (D.f[dirSW  ])[ksw];
-         //doubflo fSE   =  (D.f[dirSE  ])[ks ];//kse
-         //doubflo fNW   =  (D.f[dirNW  ])[kw ];//knw
-         //doubflo fTE   =  (D.f[dirTE  ])[k  ];//kte
-         //doubflo fBW   =  (D.f[dirBW  ])[kbw];
-         //doubflo fBE   =  (D.f[dirBE  ])[kb ];//kbe
-         //doubflo fTW   =  (D.f[dirTW  ])[kw ];//ktw
-         //doubflo fTN   =  (D.f[dirTN  ])[k  ];//ktn
-         //doubflo fBS   =  (D.f[dirBS  ])[kbs];
-         //doubflo fBN   =  (D.f[dirBN  ])[kb ];//kbn
-         //doubflo fTS   =  (D.f[dirTS  ])[ks ];//kts
-         //doubflo fZERO =  (D.f[dirZERO])[k  ];//kzero
-         //doubflo fTNE   = (D.f[dirTNE ])[k  ];//ktne
-         //doubflo fTSW   = (D.f[dirTSW ])[ksw];//ktsw
-         //doubflo fTSE   = (D.f[dirTSE ])[ks ];//ktse
-         //doubflo fTNW   = (D.f[dirTNW ])[kw ];//ktnw
-         //doubflo fBNE   = (D.f[dirBNE ])[kb ];//kbne
-         //doubflo fBSW   = (D.f[dirBSW ])[kbsw];
-         //doubflo fBSE   = (D.f[dirBSE ])[kbs];//kbse
-         //doubflo fBNW   = (D.f[dirBNW ])[kbw];//kbnw
+         real fW    =  (D.f[dirE   ])[k  ];//ke
+         real fE    =  (D.f[dirW   ])[kw ];
+         real fS    =  (D.f[dirN   ])[k  ];//kn
+         real fN    =  (D.f[dirS   ])[ks ];
+         real fB    =  (D.f[dirT   ])[k  ];//kt
+         real fT    =  (D.f[dirB   ])[kb ];
+         real fSW   =  (D.f[dirNE  ])[k  ];//kne
+         real fNE   =  (D.f[dirSW  ])[ksw];
+         real fNW   =  (D.f[dirSE  ])[ks ];//kse
+         real fSE   =  (D.f[dirNW  ])[kw ];//knw
+         real fBW   =  (D.f[dirTE  ])[k  ];//kte
+         real fTE   =  (D.f[dirBW  ])[kbw];
+         real fTW   =  (D.f[dirBE  ])[kb ];//kbe
+         real fBE   =  (D.f[dirTW  ])[kw ];//ktw
+         real fBS   =  (D.f[dirTN  ])[k  ];//ktn
+         real fTN   =  (D.f[dirBS  ])[kbs];
+         real fTS   =  (D.f[dirBN  ])[kb ];//kbn
+         real fBN   =  (D.f[dirTS  ])[ks ];//kts
+         real fZERO =  (D.f[dirZERO])[k  ];//kzero
+         real fBSW   = (D.f[dirTNE ])[k  ];//ktne
+         real fBNE   = (D.f[dirTSW ])[ksw];//ktsw
+         real fBNW   = (D.f[dirTSE ])[ks ];//ktse
+         real fBSE   = (D.f[dirTNW ])[kw ];//ktnw
+         real fTSW   = (D.f[dirBNE ])[kb ];//kbne
+         real fTNE   = (D.f[dirBSW ])[kbsw];
+         real fTNW   = (D.f[dirBSE ])[kbs];//kbse
+         real fTSE   = (D.f[dirBNW ])[kbw];//kbnw
+         //real fE    =  (D.f[dirE   ])[k  ];//ke
+         //real fW    =  (D.f[dirW   ])[kw ];
+         //real fN    =  (D.f[dirN   ])[k  ];//kn
+         //real fS    =  (D.f[dirS   ])[ks ];
+         //real fT    =  (D.f[dirT   ])[k  ];//kt
+         //real fB    =  (D.f[dirB   ])[kb ];
+         //real fNE   =  (D.f[dirNE  ])[k  ];//kne
+         //real fSW   =  (D.f[dirSW  ])[ksw];
+         //real fSE   =  (D.f[dirSE  ])[ks ];//kse
+         //real fNW   =  (D.f[dirNW  ])[kw ];//knw
+         //real fTE   =  (D.f[dirTE  ])[k  ];//kte
+         //real fBW   =  (D.f[dirBW  ])[kbw];
+         //real fBE   =  (D.f[dirBE  ])[kb ];//kbe
+         //real fTW   =  (D.f[dirTW  ])[kw ];//ktw
+         //real fTN   =  (D.f[dirTN  ])[k  ];//ktn
+         //real fBS   =  (D.f[dirBS  ])[kbs];
+         //real fBN   =  (D.f[dirBN  ])[kb ];//kbn
+         //real fTS   =  (D.f[dirTS  ])[ks ];//kts
+         //real fZERO =  (D.f[dirZERO])[k  ];//kzero
+         //real fTNE   = (D.f[dirTNE ])[k  ];//ktne
+         //real fTSW   = (D.f[dirTSW ])[ksw];//ktsw
+         //real fTSE   = (D.f[dirTSE ])[ks ];//ktse
+         //real fTNW   = (D.f[dirTNW ])[kw ];//ktnw
+         //real fBNE   = (D.f[dirBNE ])[kb ];//kbne
+         //real fBSW   = (D.f[dirBSW ])[kbsw];
+         //real fBSE   = (D.f[dirBSE ])[kbs];//kbse
+         //real fBNW   = (D.f[dirBNW ])[kbw];//kbnw
          ////////////////////////////////////////////////////////////////////////////////
-         doubflo f7ZERO =  (D7.f[0])[k  ];
-         doubflo f7E    =  (D7.f[1])[k  ];
-         doubflo f7W    =  (D7.f[2])[kw ];
-         doubflo f7N    =  (D7.f[3])[k  ];
-         doubflo f7S    =  (D7.f[4])[ks ];
-         doubflo f7T    =  (D7.f[5])[k  ];
-         doubflo f7B    =  (D7.f[6])[kb ];
+         real f7ZERO =  (D7.f[0])[k  ];
+         real f7E    =  (D7.f[1])[k  ];
+         real f7W    =  (D7.f[2])[kw ];
+         real f7N    =  (D7.f[3])[k  ];
+         real f7S    =  (D7.f[4])[ks ];
+         real f7T    =  (D7.f[5])[k  ];
+         real f7B    =  (D7.f[6])[kb ];
          ////////////////////////////////////////////////////////////////////////////////
-         doubflo vx     =  ((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
-         doubflo vy     =  ((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
-         doubflo vz     =  ((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
+         real vx     =  ((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
+         real vy     =  ((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
+         real vz     =  ((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
 		 ////dörrrrrty !!!!!!!!!!!!!
-   //      doubflo vx     =  ten * ((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
-   //      doubflo vy     =  ten * ((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
-   //      doubflo vz     =  ten * ((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
+   //      real vx     =  ten * ((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
+   //      real vy     =  ten * ((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
+   //      real vz     =  ten * ((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
          ////////////////////////////////////////////////////////////////////////////////
-         doubflo ux_sq       = vx * vx;
-         doubflo uy_sq       = vy * vy;
-         doubflo uz_sq       = vz * vz;
+         real ux_sq       = vx * vx;
+         real uy_sq       = vy * vy;
+         real uz_sq       = vz * vz;
          ////////////////////////////////////////////////////////////////////////////////
 		 //BGK
-         //doubflo omegaD     = -three + sqrt(three); !!!!!!!!!!!!!!Achtung!!!!!!!!!!!!!!!!!! anderes Vorzeichen als in den Randbedingungen
-         //doubflo Lam         = -(c1o2+one/omegaD);
-         //doubflo nue_d       = Lam/three;
-         //doubflo ae          = diffusivity/nue_d - one;
+         //real omegaD     = -three + sqrt(three); !!!!!!!!!!!!!!Achtung!!!!!!!!!!!!!!!!!! anderes Vorzeichen als in den Randbedingungen
+         //real Lam         = -(c1o2+one/omegaD);
+         //real nue_d       = Lam/three;
+         //real ae          = diffusivity/nue_d - one;
 
-         //doubflo ConcD       = f7ZERO+f7E+f7W+f7N+f7S+f7T+f7B;
+         //real ConcD       = f7ZERO+f7E+f7W+f7N+f7S+f7T+f7B;
 
          //(D7.f[0])[k  ] = f7ZERO*(one+omegaD)-omegaD*ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq));
          //(D7.f[2])[kw ] = f7E   *(one+omegaD)-omegaD*ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx*c1o2);
@@ -2229,28 +2229,28 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_7(  doubflo diffusivity,
 
          ////////////////////////////////////////////////////////////////////////////////
 		 //TRT  Yoshida Kernel - based on Ying
-         doubflo cs2         = c1o4;
-         doubflo Lam         = diffusivity*four;//diffusivity/(one)/cs2;
-         doubflo omegaD      = - one / (Lam + c1o2);
-         doubflo ae          = zero;
+         real cs2         = c1o4;
+         real Lam         = diffusivity*four;//diffusivity/(one)/cs2;
+         real omegaD      = - one / (Lam + c1o2);
+         real ae          = zero;
          ////////////////////////////////////////////////////////////////////////////////
-         doubflo ConcD       = f7ZERO+f7E+f7W+f7N+f7S+f7T+f7B;
-
-		 doubflo Mom000 = f7ZERO + f7W + f7E + f7N + f7S + f7T + f7B; //1
-         doubflo Mom100 = f7E - f7W;
-         doubflo Mom010 = f7N - f7S;
-         doubflo Mom001 = f7T - f7B;
-         doubflo Mom222 = six*f7ZERO - f7W - f7E - f7N - f7S - f7T - f7B;
-         doubflo Mom200 = two*f7W + two*f7E - f7N - f7S - f7T - f7B;
-         doubflo Mom022 = f7N + f7S - f7T - f7B;
-
-         doubflo Meq000 = ConcD;
-         doubflo Meq100 = ConcD*vx;
-         doubflo Meq010 = ConcD*vy;
-         doubflo Meq001 = ConcD*vz;
-         doubflo Meq222 = c3o4*ConcD;
-         doubflo Meq200 = zero;
-         doubflo Meq022 = zero;
+         real ConcD       = f7ZERO+f7E+f7W+f7N+f7S+f7T+f7B;
+
+		 real Mom000 = f7ZERO + f7W + f7E + f7N + f7S + f7T + f7B; //1
+         real Mom100 = f7E - f7W;
+         real Mom010 = f7N - f7S;
+         real Mom001 = f7T - f7B;
+         real Mom222 = six*f7ZERO - f7W - f7E - f7N - f7S - f7T - f7B;
+         real Mom200 = two*f7W + two*f7E - f7N - f7S - f7T - f7B;
+         real Mom022 = f7N + f7S - f7T - f7B;
+
+         real Meq000 = ConcD;
+         real Meq100 = ConcD*vx;
+         real Meq010 = ConcD*vy;
+         real Meq001 = ConcD*vz;
+         real Meq222 = c3o4*ConcD;
+         real Meq200 = zero;
+         real Meq022 = zero;
 
          // relaxation TRT Yoshida
 
diff --git a/src/VirtualFluids_GPU/GPU/BGK27.cu b/src/VirtualFluids_GPU/GPU/BGK27.cu
index 62a289952..163651d77 100644
--- a/src/VirtualFluids_GPU/GPU/BGK27.cu
+++ b/src/VirtualFluids_GPU/GPU/BGK27.cu
@@ -4,12 +4,12 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_BGK_Plus_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_BGK_Plus_SP_27(real omega,
 													unsigned int* bcMatD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
-													doubflo* DDStart,
+													real* DDStart,
 													int size_Mat,
 													bool EvenOrOdd)
 {
@@ -124,63 +124,63 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_SP_27(doubflo omega,
 			//unsigned int ktne = k;
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE])[k];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW])[kw];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN])[k];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS])[ks];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT])[k];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB])[kb];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE])[k];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE])[ks];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW])[kw];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE])[k];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE])[kb];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW])[kw];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN])[k];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN])[kb];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS])[ks];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE])[k];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE])[ks];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW])[kw];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE])[kb];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			real mfcbb = (D.f[dirE])[k];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW])[kw];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN])[k];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS])[ks];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT])[k];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB])[kb];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE])[k];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE])[ks];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW])[kw];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE])[k];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE])[kb];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW])[kw];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN])[k];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN])[kb];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS])[ks];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE])[k];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE])[ks];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE])[kb];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
-			doubflo vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
+			real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
 				(((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
 				(mfcbb - mfabb));
-			doubflo vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
+			real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
 				(((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
 				(mfbcb - mfbab));
-			doubflo vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
+			real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
 				(((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
 				(mfbbc - mfbba));
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one - (mfccc + mfaaa + mfaca + mfcac + mfacc + mfcaa + mfaac + mfcca +
+			real oMdrho = one - (mfccc + mfaaa + mfaca + mfcac + mfacc + mfcaa + mfaac + mfcca +
 				mfbac + mfbca + mfbaa + mfbcc + mfabc + mfcba + mfaba + mfcbc + mfacb + mfcab + mfaab + mfccb +
 				mfabb + mfcbb + mfbab + mfbcb + mfbba + mfbbc + mfbbb);//fehlt mfbbb nicht mehr
 ////////////////////////////////////////////////////////////////////////////////////
-			doubflo m0, m1, m2;
-			doubflo vx2;
-			doubflo vy2;
-			doubflo vz2;
+			real m0, m1, m2;
+			real vx2;
+			real vy2;
+			real vz2;
 			vx2 = vvx*vvx;
 			vy2 = vvy*vvy;
 			vz2 = vvz*vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimit = 0.01f;
+			real wadjust;
+			real qudricLimit = 0.01f;
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
 			////////////////////////////////////////////////////////////////////////////////////
@@ -415,23 +415,23 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_SP_27(doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// BGK
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = omega;
-			doubflo OxyyPxzz = omega;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
-			doubflo OxyyMxzz = omega;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
-			doubflo O4 = omega;
-			doubflo O5 = omega;
-			doubflo O6 = omega;
+			real OxxPyyPzz = omega;
+			real OxyyPxzz = omega;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
+			real OxyyMxzz = omega;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
+			real O4 = omega;
+			real O5 = omega;
+			real O6 = omega;
 
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy = mfcaa - mfaca;
-			doubflo mxxMzz = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy = mfcaa - mfaca;
+			real mxxMzz = mfcaa - mfaac;
 
 			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//incl. correction
 			{
-				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz - two*vx2 + vy2 + vz2) + c1o2 * OxxPyyPzz * (mfaaa + vx2 + vy2 + vz2 - mxxPyyPzz);
-				doubflo dyuy = dxux + omega * c3o2 * (mxxMyy - vx2 + vy2);
-				doubflo dzuz = dxux + omega * c3o2 * (mxxMzz - vx2 + vz2);
+				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz - two*vx2 + vy2 + vz2) + c1o2 * OxxPyyPzz * (mfaaa + vx2 + vy2 + vz2 - mxxPyyPzz);
+				real dyuy = dxux + omega * c3o2 * (mxxMyy - vx2 + vy2);
+				real dzuz = dxux + omega * c3o2 * (mxxMzz - vx2 + vz2);
 
 				//relax
 				mxxPyyPzz += OxxPyyPzz*(mfaaa + vx2 + vy2 + vz2 - mxxPyyPzz) - three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -459,14 +459,14 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_SP_27(doubflo omega,
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			mxxyMyzz += OxyyMxzz*((vx2 - vz2)*vvy - mxxyMyzz);
 			mxxzMyyz += OxyyMxzz*((vx2 - vy2)*vvz - mxxzMyyz);
@@ -794,12 +794,12 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_SP_27(doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_BGK_Plus_Comp_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_BGK_Plus_Comp_SP_27(real omega,
 														 unsigned int* bcMatD,
 														 unsigned int* neighborX,
 														 unsigned int* neighborY,
 														 unsigned int* neighborZ,
-														 doubflo* DDStart,
+														 real* DDStart,
 														 int size_Mat,
 														 bool EvenOrOdd)
 {
@@ -914,84 +914,84 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_Comp_SP_27(doubflo omega,
 			//unsigned int ktne = k;
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE])[k];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW])[kw];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN])[k];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS])[ks];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT])[k];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB])[kb];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE])[k];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE])[ks];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW])[kw];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE])[k];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE])[kb];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW])[kw];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN])[k];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN])[kb];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS])[ks];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE])[k];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE])[ks];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW])[kw];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE])[kb];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			real mfcbb = (D.f[dirE])[k];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW])[kw];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN])[k];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS])[ks];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT])[k];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB])[kb];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE])[k];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE])[ks];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW])[kw];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE])[k];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE])[kb];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW])[kw];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN])[k];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN])[kb];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS])[ks];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE])[k];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE])[ks];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE])[kb];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo rho = (mfccc + mfaaa + mfaca + mfcac + mfacc + mfcaa + mfaac + mfcca +
+			real rho = (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 + one);//!!!!Achtung + one
 ////////////////////////////////////////////////////////////////////////////////////
-			doubflo vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
+			real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
 				(((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
 				(mfcbb - mfabb)) / rho;
-			doubflo vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
+			real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
 				(((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
 				(mfbcb - mfbab)) / rho;
-			doubflo vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
+			real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
 				(((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
 				(mfbbc - mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo vx2 = vvx * vvx;
-			doubflo vy2 = vvy * vvy;
-			doubflo vz2 = vvz * vvz;
+			real vx2 = vvx * vvx;
+			real vy2 = vvy * vvy;
+			real vz2 = vvz * vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo m200 = (mfccc + mfaaa + mfaca + mfcac + mfacc + mfcaa + mfaac + mfcca +
+			real m200 = (mfccc + mfaaa + mfaca + mfcac + mfacc + mfcaa + mfaac + mfcca +
 				mfabc + mfcba + mfaba + mfcbc + mfacb + mfcab + mfaab + mfccb +
 				mfabb + mfcbb);
-			doubflo m020 = (mfccc + mfaaa + mfaca + mfcac + mfacc + mfcaa + mfaac + mfcca +
+			real m020 = (mfccc + mfaaa + mfaca + mfcac + mfacc + mfcaa + mfaac + mfcca +
 				mfbac + mfbca + mfbaa + mfbcc + mfacb + mfcab + mfaab + mfccb +
 				mfbab + mfbcb);
-			doubflo m002 = (mfccc + mfaaa + mfaca + mfcac + mfacc + mfcaa + mfaac + mfcca +
+			real m002 = (mfccc + mfaaa + mfaca + mfcac + mfacc + mfcaa + mfaac + mfcca +
 				mfbac + mfbca + mfbaa + mfbcc + mfabc + mfcba + mfaba + mfcbc +
 				mfbba + mfbbc);
 			////////////////////////////////////////////////////////////////////////////////////
 			//Galilei Korrektur
-			doubflo Gx = -three * vx2 * (-c1o2 * (three * m200 / rho + one / rho - one - three * vx2)) * (one - omega * c1o2);
-			doubflo Gy = -three * vy2 * (-c1o2 * (three * m020 / rho + one / rho - one - three * vy2)) * (one - omega * c1o2);
-			doubflo Gz = -three * vz2 * (-c1o2 * (three * m002 / rho + one / rho - one - three * vz2)) * (one - omega * c1o2);
-			//doubflo Gx     = zero;
-			//doubflo Gy     = zero;
-			//doubflo Gz     = zero;
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo XXb = -c2o3 + vx2 + Gx;
-			doubflo XXc = -c1o2 * (XXb + one + vvx);
-			doubflo XXa = XXc + vvx;
-			doubflo YYb = -c2o3 + vy2 + Gy;
-			doubflo YYc = -c1o2 * (YYb + one + vvy);
-			doubflo YYa = YYc + vvy;
-			doubflo ZZb = -c2o3 + vz2 + Gz;
-			doubflo ZZc = -c1o2 * (ZZb + one + vvz);
-			doubflo ZZa = ZZc + vvz;
+			real Gx = -three * vx2 * (-c1o2 * (three * m200 / rho + one / rho - one - three * vx2)) * (one - omega * c1o2);
+			real Gy = -three * vy2 * (-c1o2 * (three * m020 / rho + one / rho - one - three * vy2)) * (one - omega * c1o2);
+			real Gz = -three * vz2 * (-c1o2 * (three * m002 / rho + one / rho - one - three * vz2)) * (one - omega * c1o2);
+			//real Gx     = zero;
+			//real Gy     = zero;
+			//real Gz     = zero;
+			////////////////////////////////////////////////////////////////////////////////////
+			real XXb = -c2o3 + vx2 + Gx;
+			real XXc = -c1o2 * (XXb + one + vvx);
+			real XXa = XXc + vvx;
+			real YYb = -c2o3 + vy2 + Gy;
+			real YYc = -c1o2 * (YYb + one + vvy);
+			real YYa = YYc + vvy;
+			real ZZb = -c2o3 + vz2 + Gz;
+			real ZZc = -c1o2 * (ZZb + one + vvz);
+			real ZZa = ZZc + vvz;
 			////////////////////////////////////////////////////////////////////////////////////
 			mfcbb = mfcbb * (one - omega) + omega * (-rho * XXc * YYb * ZZb - c2over27);
 			mfabb = mfabb * (one - omega) + omega * (-rho * XXa * YYb * ZZb - c2over27);
@@ -1022,21 +1022,21 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_Comp_SP_27(doubflo omega,
 			mfaca = mfaca * (one - omega) + omega * (-rho * XXa * YYc * ZZa - c1over216);
 			//			////////////////////////////////////////////////////////////////////////////////////
 			//			//fast
-			//			doubflo oMdrho = one; //comp special
-			//			//doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			//			real oMdrho = one; //comp special
+			//			//real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 			//			//					   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 			//			//					   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb + one);//fehlt mfbbb nicht mehr !!!!Achtung + one
 			//			////////////////////////////////////////////////////////////////////////////////////
-			//			doubflo m0, m1, m2;	
-			//			doubflo vx2;
-			//			doubflo vy2;
-			//			doubflo vz2;
+			//			real m0, m1, m2;	
+			//			real vx2;
+			//			real vy2;
+			//			real vz2;
 			//			vx2=vvx*vvx;
 			//			vy2=vvy*vvy;
 			//			vz2=vvz*vvz;
 			//			////////////////////////////////////////////////////////////////////////////////////
-			//			doubflo wadjust;
-			//			doubflo qudricLimit = 0.01f;
+			//			real wadjust;
+			//			real qudricLimit = 0.01f;
 			//			////////////////////////////////////////////////////////////////////////////////////
 			//			//Hin
 			//			////////////////////////////////////////////////////////////////////////////////////
@@ -1271,23 +1271,23 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_Comp_SP_27(doubflo omega,
 			//			////////////////////////////////////////////////////////////////////////////////////
 			//			// BGK
 			//			////////////////////////////////////////////////////////////////////////////////////
-			//			doubflo OxxPyyPzz = omega;
-			//			doubflo OxyyPxzz  = omega;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
-			//			doubflo OxyyMxzz  = omega;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
-			//			doubflo O4        = omega;
-			//			doubflo O5        = omega;
-			//			doubflo O6        = omega;
+			//			real OxxPyyPzz = omega;
+			//			real OxyyPxzz  = omega;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
+			//			real OxyyMxzz  = omega;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
+			//			real O4        = omega;
+			//			real O5        = omega;
+			//			real O6        = omega;
 			//
-			//			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			//			doubflo mxxMyy    = mfcaa - mfaca;
-			//			doubflo mxxMzz	  = mfcaa - mfaac;
+			//			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			//			real mxxMyy    = mfcaa - mfaca;
+			//			real mxxMzz	  = mfcaa - mfaac;
 			//
 			//			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//			//incl. correction
 			//			{
-			//				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz+(-two*vx2+vy2+vz2)*rho) + c1o2 * OxxPyyPzz * (mfaaa+(vx2+vy2+vz2)*rho - mxxPyyPzz);
-			//				doubflo dyuy = dxux + omega * c3o2 * (mxxMyy+(-vx2+vy2)*rho);
-			//				doubflo dzuz = dxux + omega * c3o2 * (mxxMzz+(-vx2+vz2)*rho);
+			//				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz+(-two*vx2+vy2+vz2)*rho) + c1o2 * OxxPyyPzz * (mfaaa+(vx2+vy2+vz2)*rho - mxxPyyPzz);
+			//				real dyuy = dxux + omega * c3o2 * (mxxMyy+(-vx2+vy2)*rho);
+			//				real dzuz = dxux + omega * c3o2 * (mxxMzz+(-vx2+vz2)*rho);
 			//
 			//				//relax
 			//				mxxPyyPzz += OxxPyyPzz*(mfaaa +(vx2+vy2+vz2)*rho - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -1314,14 +1314,14 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_Comp_SP_27(doubflo omega,
 			//			//3.
 			//			// linear combinations
 			//
-			//			doubflo mxxyPyzz = mfcba + mfabc;
-			//			doubflo mxxyMyzz = mfcba - mfabc;
+			//			real mxxyPyzz = mfcba + mfabc;
+			//			real mxxyMyzz = mfcba - mfabc;
 			//
-			//			doubflo mxxzPyyz = mfcab + mfacb;
-			//			doubflo mxxzMyyz = mfcab - mfacb;
+			//			real mxxzPyyz = mfcab + mfacb;
+			//			real mxxzMyyz = mfcab - mfacb;
 			//
-			//			doubflo mxyyPxzz = mfbca + mfbac;
-			//			doubflo mxyyMxzz = mfbca - mfbac;
+			//			real mxyyPxzz = mfbca + mfbac;
+			//			real mxyyMxzz = mfbca - mfbac;
 			//
 			//			mxxyMyzz += OxyyMxzz*((vx2-vz2)*vvy*rho-mxxyMyzz);
 			//			mxxzMyyz += OxyyMxzz*((vx2-vy2)*vvz*rho-mxxzMyyz);
@@ -1657,12 +1657,12 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_Comp_SP_27(doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_BGK_Comp_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_BGK_Comp_SP_27(real omega,
 													unsigned int* bcMatD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
-													doubflo* DDStart,
+													real* DDStart,
 													int size_Mat,
 													bool EvenOrOdd)
 {
@@ -1777,40 +1777,40 @@ extern "C" __global__ void LB_Kernel_BGK_Comp_SP_27(doubflo omega,
 			//unsigned int ktne = k;
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo fE = (D.f[dirE])[k];//ke
-			doubflo fW = (D.f[dirW])[kw];
-			doubflo fN = (D.f[dirN])[k];//kn
-			doubflo fS = (D.f[dirS])[ks];
-			doubflo fT = (D.f[dirT])[k];//kt
-			doubflo fB = (D.f[dirB])[kb];
-			doubflo fNE = (D.f[dirNE])[k];//kne
-			doubflo fSW = (D.f[dirSW])[ksw];
-			doubflo fSE = (D.f[dirSE])[ks];//kse
-			doubflo fNW = (D.f[dirNW])[kw];//knw
-			doubflo fTE = (D.f[dirTE])[k];//kte
-			doubflo fBW = (D.f[dirBW])[kbw];
-			doubflo fBE = (D.f[dirBE])[kb];//kbe
-			doubflo fTW = (D.f[dirTW])[kw];//ktw
-			doubflo fTN = (D.f[dirTN])[k];//ktn
-			doubflo fBS = (D.f[dirBS])[kbs];
-			doubflo fBN = (D.f[dirBN])[kb];//kbn
-			doubflo fTS = (D.f[dirTS])[ks];//kts
-			doubflo fZERO = (D.f[dirZERO])[k];//kzero
-			doubflo fTNE = (D.f[dirTNE])[k];//ktne
-			doubflo fTSW = (D.f[dirTSW])[ksw];//ktsw
-			doubflo fTSE = (D.f[dirTSE])[ks];//ktse
-			doubflo fTNW = (D.f[dirTNW])[kw];//ktnw
-			doubflo fBNE = (D.f[dirBNE])[kb];//kbne
-			doubflo fBSW = (D.f[dirBSW])[kbsw];
-			doubflo fBSE = (D.f[dirBSE])[kbs];//kbse
-			doubflo fBNW = (D.f[dirBNW])[kbw];//kbnw
+			real fE = (D.f[dirE])[k];//ke
+			real fW = (D.f[dirW])[kw];
+			real fN = (D.f[dirN])[k];//kn
+			real fS = (D.f[dirS])[ks];
+			real fT = (D.f[dirT])[k];//kt
+			real fB = (D.f[dirB])[kb];
+			real fNE = (D.f[dirNE])[k];//kne
+			real fSW = (D.f[dirSW])[ksw];
+			real fSE = (D.f[dirSE])[ks];//kse
+			real fNW = (D.f[dirNW])[kw];//knw
+			real fTE = (D.f[dirTE])[k];//kte
+			real fBW = (D.f[dirBW])[kbw];
+			real fBE = (D.f[dirBE])[kb];//kbe
+			real fTW = (D.f[dirTW])[kw];//ktw
+			real fTN = (D.f[dirTN])[k];//ktn
+			real fBS = (D.f[dirBS])[kbs];
+			real fBN = (D.f[dirBN])[kb];//kbn
+			real fTS = (D.f[dirTS])[ks];//kts
+			real fZERO = (D.f[dirZERO])[k];//kzero
+			real fTNE = (D.f[dirTNE])[k];//ktne
+			real fTSW = (D.f[dirTSW])[ksw];//ktsw
+			real fTSE = (D.f[dirTSE])[ks];//ktse
+			real fTNW = (D.f[dirTNW])[kw];//ktnw
+			real fBNE = (D.f[dirBNE])[kb];//kbne
+			real fBSW = (D.f[dirBSW])[kbsw];
+			real fBSE = (D.f[dirBSE])[kbs];//kbse
+			real fBNW = (D.f[dirBNW])[kbw];//kbnw
 			////////////////////////////////////////////////////////////////////////////////
-			doubflo drho = (fTNE + fBSW) + (fTSW + fBNE) + (fTSE + fBNW) + (fTNW + fBSE) + (fNE + fSW) + (fNW + fSE) + (fTE + fBW) + (fBE + fTW) + (fTN + fBS) + (fBN + fTS) + (fE + fW) + (fN + fS) + (fT + fB) + fZERO;
-			doubflo rho = drho + one;
-			doubflo OORho = one / rho;
-			doubflo vx1 = OORho*((fTNE - fBSW) + (fBNE - fTSW) + (fTSE - fBNW) + (fBSE - fTNW) + (fNE - fSW) + (fSE - fNW) + (fTE - fBW) + (fBE - fTW) + (fE - fW));
-			doubflo vx2 = OORho*((fTNE - fBSW) + (fBNE - fTSW) + (fBNW - fTSE) + (fTNW - fBSE) + (fNE - fSW) + (fNW - fSE) + (fTN - fBS) + (fBN - fTS) + (fN - fS));
-			doubflo vx3 = OORho*((fTNE - fBSW) + (fTSW - fBNE) + (fTSE - fBNW) + (fTNW - fBSE) + (fTE - fBW) + (fTW - fBE) + (fTN - fBS) + (fTS - fBN) + (fT - fB));
+			real drho = (fTNE + fBSW) + (fTSW + fBNE) + (fTSE + fBNW) + (fTNW + fBSE) + (fNE + fSW) + (fNW + fSE) + (fTE + fBW) + (fBE + fTW) + (fTN + fBS) + (fBN + fTS) + (fE + fW) + (fN + fS) + (fT + fB) + fZERO;
+			real rho = drho + one;
+			real OORho = one / rho;
+			real vx1 = OORho*((fTNE - fBSW) + (fBNE - fTSW) + (fTSE - fBNW) + (fBSE - fTNW) + (fNE - fSW) + (fSE - fNW) + (fTE - fBW) + (fBE - fTW) + (fE - fW));
+			real vx2 = OORho*((fTNE - fBSW) + (fBNE - fTSW) + (fBNW - fTSE) + (fTNW - fBSE) + (fNE - fSW) + (fNW - fSE) + (fTN - fBS) + (fBN - fTS) + (fN - fS));
+			real vx3 = OORho*((fTNE - fBSW) + (fTSW - fBNE) + (fTSE - fBNW) + (fTNW - fBSE) + (fTE - fBW) + (fTW - fBE) + (fTN - fBS) + (fTS - fBN) + (fT - fB));
 			////////////////////////////////////////////////////////////////////////////////
 
 
@@ -1822,7 +1822,7 @@ extern "C" __global__ void LB_Kernel_BGK_Comp_SP_27(doubflo omega,
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//BGK comp
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo cusq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3);
+			real cusq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3);
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			fZERO = fZERO *(one + (-omega)) - (-omega)*   c8over27*  (drho - rho * cusq);
 			fE    = fE    *(one + (-omega)) - (-omega)*   c2over27*  (drho + rho * (three*(vx1)+c9over2*(vx1)*(vx1)-cusq));
@@ -1936,12 +1936,12 @@ extern "C" __global__ void LB_Kernel_BGK_Comp_SP_27(doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_BGK_SP_27( doubflo omega,
+extern "C" __global__ void LB_Kernel_BGK_SP_27( real omega,
 												unsigned int* bcMatD,
 												unsigned int* neighborX,
 												unsigned int* neighborY,
 												unsigned int* neighborZ,
-												doubflo* DDStart,
+												real* DDStart,
 												int size_Mat,
 												bool EvenOrOdd)
 {
@@ -2056,33 +2056,33 @@ extern "C" __global__ void LB_Kernel_BGK_SP_27( doubflo omega,
 			//unsigned int ktne = k;
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo fE = (D.f[dirE])[k];//ke
-			doubflo fW = (D.f[dirW])[kw];
-			doubflo fN = (D.f[dirN])[k];//kn
-			doubflo fS = (D.f[dirS])[ks];
-			doubflo fT = (D.f[dirT])[k];//kt
-			doubflo fB = (D.f[dirB])[kb];
-			doubflo fNE = (D.f[dirNE])[k];//kne
-			doubflo fSW = (D.f[dirSW])[ksw];
-			doubflo fSE = (D.f[dirSE])[ks];//kse
-			doubflo fNW = (D.f[dirNW])[kw];//knw
-			doubflo fTE = (D.f[dirTE])[k];//kte
-			doubflo fBW = (D.f[dirBW])[kbw];
-			doubflo fBE = (D.f[dirBE])[kb];//kbe
-			doubflo fTW = (D.f[dirTW])[kw];//ktw
-			doubflo fTN = (D.f[dirTN])[k];//ktn
-			doubflo fBS = (D.f[dirBS])[kbs];
-			doubflo fBN = (D.f[dirBN])[kb];//kbn
-			doubflo fTS = (D.f[dirTS])[ks];//kts
-			doubflo fZERO = (D.f[dirZERO])[k];//kzero
-			doubflo fTNE = (D.f[dirTNE])[k];//ktne
-			doubflo fTSW = (D.f[dirTSW])[ksw];//ktsw
-			doubflo fTSE = (D.f[dirTSE])[ks];//ktse
-			doubflo fTNW = (D.f[dirTNW])[kw];//ktnw
-			doubflo fBNE = (D.f[dirBNE])[kb];//kbne
-			doubflo fBSW = (D.f[dirBSW])[kbsw];
-			doubflo fBSE = (D.f[dirBSE])[kbs];//kbse
-			doubflo fBNW = (D.f[dirBNW])[kbw];//kbnw
+			real fE = (D.f[dirE])[k];//ke
+			real fW = (D.f[dirW])[kw];
+			real fN = (D.f[dirN])[k];//kn
+			real fS = (D.f[dirS])[ks];
+			real fT = (D.f[dirT])[k];//kt
+			real fB = (D.f[dirB])[kb];
+			real fNE = (D.f[dirNE])[k];//kne
+			real fSW = (D.f[dirSW])[ksw];
+			real fSE = (D.f[dirSE])[ks];//kse
+			real fNW = (D.f[dirNW])[kw];//knw
+			real fTE = (D.f[dirTE])[k];//kte
+			real fBW = (D.f[dirBW])[kbw];
+			real fBE = (D.f[dirBE])[kb];//kbe
+			real fTW = (D.f[dirTW])[kw];//ktw
+			real fTN = (D.f[dirTN])[k];//ktn
+			real fBS = (D.f[dirBS])[kbs];
+			real fBN = (D.f[dirBN])[kb];//kbn
+			real fTS = (D.f[dirTS])[ks];//kts
+			real fZERO = (D.f[dirZERO])[k];//kzero
+			real fTNE = (D.f[dirTNE])[k];//ktne
+			real fTSW = (D.f[dirTSW])[ksw];//ktsw
+			real fTSE = (D.f[dirTSE])[ks];//ktse
+			real fTNW = (D.f[dirTNW])[kw];//ktnw
+			real fBNE = (D.f[dirBNE])[kb];//kbne
+			real fBSW = (D.f[dirBSW])[kbsw];
+			real fBSE = (D.f[dirBSE])[kbs];//kbse
+			real fBNW = (D.f[dirBNW])[kbw];//kbnw
 			////////////////////////////////////////////////////////////////////////////////
 
 
@@ -2094,11 +2094,11 @@ extern "C" __global__ void LB_Kernel_BGK_SP_27( doubflo omega,
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//BGK incomp
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo drho    = (fTNE + fBSW) + (fTSW + fBNE) + (fTSE + fBNW) + (fTNW + fBSE) + (fNE + fSW) + (fNW + fSE) + (fTE + fBW) + (fBE + fTW) + (fTN + fBS) + (fBN + fTS) + (fE + fW) + (fN + fS) + (fT + fB) + fZERO;
-			doubflo vx1		= (fTNE - fBSW) + (fBNE - fTSW) + (fTSE - fBNW) + (fBSE - fTNW) + (fNE - fSW) + (fSE - fNW) + (fTE - fBW) + (fBE - fTW) + (fE - fW);
-			doubflo vx2		= (fTNE - fBSW) + (fBNE - fTSW) + (fBNW - fTSE) + (fTNW - fBSE) + (fNE - fSW) + (fNW - fSE) + (fTN - fBS) + (fBN - fTS) + (fN - fS);
-			doubflo vx3		= (fTNE - fBSW) + (fTSW - fBNE) + (fTSE - fBNW) + (fTNW - fBSE) + (fTE - fBW) + (fTW - fBE) + (fTN - fBS) + (fTS - fBN) + (fT - fB);
-			doubflo cusq    =  c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+			real drho    = (fTNE + fBSW) + (fTSW + fBNE) + (fTSE + fBNW) + (fTNW + fBSE) + (fNE + fSW) + (fNW + fSE) + (fTE + fBW) + (fBE + fTW) + (fTN + fBS) + (fBN + fTS) + (fE + fW) + (fN + fS) + (fT + fB) + fZERO;
+			real vx1		= (fTNE - fBSW) + (fBNE - fTSW) + (fTSE - fBNW) + (fBSE - fTNW) + (fNE - fSW) + (fSE - fNW) + (fTE - fBW) + (fBE - fTW) + (fE - fW);
+			real vx2		= (fTNE - fBSW) + (fBNE - fTSW) + (fBNW - fTSE) + (fTNW - fBSE) + (fNE - fSW) + (fNW - fSE) + (fTN - fBS) + (fBN - fTS) + (fN - fS);
+			real vx3		= (fTNE - fBSW) + (fTSW - fBNE) + (fTSE - fBNW) + (fTNW - fBSE) + (fTE - fBW) + (fTW - fBE) + (fTN - fBS) + (fTS - fBN) + (fT - fB);
+			real cusq    =  c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 			//////////////////////////////////////////////////////////////////////////                            
 			fZERO = fZERO *(one+(-omega))-(-omega)*   c8over27*  (drho-cusq);
 			fE    = fE    *(one+(-omega))-(-omega)*   c2over27*  (drho+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq);
diff --git a/src/VirtualFluids_GPU/GPU/CP27.cu b/src/VirtualFluids_GPU/GPU/CP27.cu
index 7da8ca457..ea53ab4fa 100644
--- a/src/VirtualFluids_GPU/GPU/CP27.cu
+++ b/src/VirtualFluids_GPU/GPU/CP27.cu
@@ -3,7 +3,7 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void CalcCP27(doubflo* DD, 
+extern "C" __global__ void CalcCP27(real* DD, 
 									int* cpIndex, 
 									int nonCp, 
 									double *cpPress,
diff --git a/src/VirtualFluids_GPU/GPU/Calc2ndMoments27.cu b/src/VirtualFluids_GPU/GPU/Calc2ndMoments27.cu
index 5aef6e80d..43955f535 100644
--- a/src/VirtualFluids_GPU/GPU/Calc2ndMoments27.cu
+++ b/src/VirtualFluids_GPU/GPU/Calc2ndMoments27.cu
@@ -3,17 +3,17 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalc2ndMomentsIncompSP27(  doubflo* kxyFromfcNEQ,
-														doubflo* kyzFromfcNEQ,
-														doubflo* kxzFromfcNEQ,
-														doubflo* kxxMyyFromfcNEQ,
-														doubflo* kxxMzzFromfcNEQ,
+extern "C" __global__ void LBCalc2ndMomentsIncompSP27(  real* kxyFromfcNEQ,
+														real* kyzFromfcNEQ,
+														real* kxzFromfcNEQ,
+														real* kxxMyyFromfcNEQ,
+														real* kxxMzzFromfcNEQ,
 														unsigned int* geoD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
 														unsigned int size_Mat,
-														doubflo* DD,
+														real* DD,
 														bool evenOrOdd)
 {
    Distributions27 D;
@@ -120,7 +120,7 @@ extern "C" __global__ void LBCalc2ndMomentsIncompSP27(  doubflo* kxyFromfcNEQ,
       unsigned int ktne = k;
       unsigned int kbsw = neighborZ[ksw];
       //////////////////////////////////////////////////////////////////////////
-      doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,/*f_ZERO,*/f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+      real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,/*f_ZERO,*/f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 	  f_E    = (D.f[dirE   ])[ke   ];
 	  f_W    = (D.f[dirW   ])[kw   ];
 	  f_N    = (D.f[dirN   ])[kn   ];
@@ -149,7 +149,7 @@ extern "C" __global__ void LBCalc2ndMomentsIncompSP27(  doubflo* kxyFromfcNEQ,
 	  f_BSE  = (D.f[dirBSE ])[kbse ];
 	  f_BNW  = (D.f[dirBNW ])[kbnw ];
       //////////////////////////////////////////////////////////////////////////
-	  doubflo vx1, vx2, vx3;
+	  real vx1, vx2, vx3;
       kxyFromfcNEQ[k]       = zero;
 	  kyzFromfcNEQ[k]       = zero;
 	  kxzFromfcNEQ[k]       = zero;
@@ -202,17 +202,17 @@ extern "C" __global__ void LBCalc2ndMomentsIncompSP27(  doubflo* kxyFromfcNEQ,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalc2ndMomentsCompSP27(doubflo* kxyFromfcNEQ,
-													doubflo* kyzFromfcNEQ,
-													doubflo* kxzFromfcNEQ,
-													doubflo* kxxMyyFromfcNEQ,
-													doubflo* kxxMzzFromfcNEQ,
+extern "C" __global__ void LBCalc2ndMomentsCompSP27(real* kxyFromfcNEQ,
+													real* kyzFromfcNEQ,
+													real* kxzFromfcNEQ,
+													real* kxxMyyFromfcNEQ,
+													real* kxxMzzFromfcNEQ,
 													unsigned int* geoD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
 													unsigned int size_Mat,
-													doubflo* DD,
+													real* DD,
 													bool evenOrOdd)
 {
    Distributions27 D;
@@ -319,7 +319,7 @@ extern "C" __global__ void LBCalc2ndMomentsCompSP27(doubflo* kxyFromfcNEQ,
       unsigned int ktne = k;
       unsigned int kbsw = neighborZ[ksw];
       //////////////////////////////////////////////////////////////////////////
-      doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+      real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 	  f_E    = (D.f[dirE   ])[ke   ];
 	  f_W    = (D.f[dirW   ])[kw   ];
 	  f_N    = (D.f[dirN   ])[kn   ];
@@ -348,7 +348,7 @@ extern "C" __global__ void LBCalc2ndMomentsCompSP27(doubflo* kxyFromfcNEQ,
 	  f_BSE  = (D.f[dirBSE ])[kbse ];
 	  f_BNW  = (D.f[dirBNW ])[kbnw ];
       //////////////////////////////////////////////////////////////////////////
-	  doubflo vx1, vx2, vx3, drho, rho;
+	  real vx1, vx2, vx3, drho, rho;
       kxyFromfcNEQ[k]       = zero;
 	  kyzFromfcNEQ[k]       = zero;
 	  kxzFromfcNEQ[k]       = zero;
@@ -405,18 +405,18 @@ extern "C" __global__ void LBCalc2ndMomentsCompSP27(doubflo* kxyFromfcNEQ,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalc3rdMomentsIncompSP27(  doubflo* CUMbbb,
-														doubflo* CUMabc,
-														doubflo* CUMbac,
-														doubflo* CUMbca,
-														doubflo* CUMcba,
-														doubflo* CUMacb,
-														doubflo* CUMcab,
+extern "C" __global__ void LBCalc3rdMomentsIncompSP27(  real* CUMbbb,
+														real* CUMabc,
+														real* CUMbac,
+														real* CUMbca,
+														real* CUMcba,
+														real* CUMacb,
+														real* CUMcab,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
+														real* DDStart,
 														int size_Mat,
 														bool EvenOrOdd)
 {
@@ -511,52 +511,52 @@ extern "C" __global__ void LBCalc3rdMomentsIncompSP27(  doubflo* CUMbbb,
 			unsigned int kbs  = neighborZ[ks];
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];
-			doubflo mfabb = (D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];
-			doubflo mfbab = (D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];
-			doubflo mfbba = (D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];
-			doubflo mfaab = (D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];
-			doubflo mfacb = (D.f[dirNW  ])[kw ];
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];
-			doubflo mfaba = (D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];
-			doubflo mfabc = (D.f[dirTW  ])[kw ];
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];
-			doubflo mfbac = (D.f[dirTS  ])[ks ];
-			doubflo mfbbb = (D.f[dirZERO])[k  ];
-			doubflo mfccc = (D.f[dirTNE ])[k  ];
-			doubflo mfaac = (D.f[dirTSW ])[ksw];
-			doubflo mfcac = (D.f[dirTSE ])[ks ];
-			doubflo mfacc = (D.f[dirTNW ])[kw ];
-			doubflo mfcca = (D.f[dirBNE ])[kb ];
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];
-			doubflo mfaca = (D.f[dirBNW ])[kbw];
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real mfcbb = (D.f[dirE   ])[k  ];
+			real mfabb = (D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];
+			real mfbab = (D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];
+			real mfbba = (D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];
+			real mfaab = (D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];
+			real mfacb = (D.f[dirNW  ])[kw ];
+			real mfcbc = (D.f[dirTE  ])[k  ];
+			real mfaba = (D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];
+			real mfabc = (D.f[dirTW  ])[kw ];
+			real mfbcc = (D.f[dirTN  ])[k  ];
+			real mfbaa = (D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];
+			real mfbac = (D.f[dirTS  ])[ks ];
+			real mfbbb = (D.f[dirZERO])[k  ];
+			real mfccc = (D.f[dirTNE ])[k  ];
+			real mfaac = (D.f[dirTSW ])[ksw];
+			real mfcac = (D.f[dirTSE ])[ks ];
+			real mfacc = (D.f[dirTNW ])[kw ];
+			real mfcca = (D.f[dirBNE ])[kb ];
+			real mfaaa = (D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];
+			real mfaca = (D.f[dirBNW ])[kbw];
+			////////////////////////////////////////////////////////////////////////////////////
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb));
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab));
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba));
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 								   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 								   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo m0, m1, m2;	
-			doubflo vx2;
-			doubflo vy2;
-			doubflo vz2;
+			real m0, m1, m2;	
+			real vx2;
+			real vy2;
+			real vz2;
 			vx2=vvx*vvx;
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
@@ -839,18 +839,18 @@ extern "C" __global__ void LBCalc3rdMomentsIncompSP27(  doubflo* CUMbbb,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalc3rdMomentsCompSP27(doubflo* CUMbbb,
-													doubflo* CUMabc,
-													doubflo* CUMbac,
-													doubflo* CUMbca,
-													doubflo* CUMcba,
-													doubflo* CUMacb,
-													doubflo* CUMcab,
+extern "C" __global__ void LBCalc3rdMomentsCompSP27(real* CUMbbb,
+													real* CUMabc,
+													real* CUMbac,
+													real* CUMbca,
+													real* CUMcba,
+													real* CUMacb,
+													real* CUMcab,
 													unsigned int* bcMatD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
-													doubflo* DDStart,
+													real* DDStart,
 													int size_Mat,
 													bool EvenOrOdd)
 {
@@ -945,56 +945,56 @@ extern "C" __global__ void LBCalc3rdMomentsCompSP27(doubflo* CUMbbb,
 			unsigned int kbs  = neighborZ[ks];
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];
-			doubflo mfabb = (D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];
-			doubflo mfbab = (D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];
-			doubflo mfbba = (D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];
-			doubflo mfaab = (D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];
-			doubflo mfacb = (D.f[dirNW  ])[kw ];
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];
-			doubflo mfaba = (D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];
-			doubflo mfabc = (D.f[dirTW  ])[kw ];
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];
-			doubflo mfbac = (D.f[dirTS  ])[ks ];
-			doubflo mfbbb = (D.f[dirZERO])[k  ];
-			doubflo mfccc = (D.f[dirTNE ])[k  ];
-			doubflo mfaac = (D.f[dirTSW ])[ksw];
-			doubflo mfcac = (D.f[dirTSE ])[ks ];
-			doubflo mfacc = (D.f[dirTNW ])[kw ];
-			doubflo mfcca = (D.f[dirBNE ])[kb ];
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];
-			doubflo mfaca = (D.f[dirBNW ])[kbw];
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			real mfcbb = (D.f[dirE   ])[k  ];
+			real mfabb = (D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];
+			real mfbab = (D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];
+			real mfbba = (D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];
+			real mfaab = (D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];
+			real mfacb = (D.f[dirNW  ])[kw ];
+			real mfcbc = (D.f[dirTE  ])[k  ];
+			real mfaba = (D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];
+			real mfabc = (D.f[dirTW  ])[kw ];
+			real mfbcc = (D.f[dirTN  ])[k  ];
+			real mfbaa = (D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];
+			real mfbac = (D.f[dirTS  ])[ks ];
+			real mfbbb = (D.f[dirZERO])[k  ];
+			real mfccc = (D.f[dirTNE ])[k  ];
+			real mfaac = (D.f[dirTSW ])[ksw];
+			real mfcac = (D.f[dirTSE ])[ks ];
+			real mfacc = (D.f[dirTNW ])[kw ];
+			real mfcca = (D.f[dirBNE ])[kb ];
+			real mfaaa = (D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];
+			real mfaca = (D.f[dirBNW ])[kbw];
+			////////////////////////////////////////////////////////////////////////////////////
+			real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 							(((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 							((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb;
 
-			doubflo rho = one+drho;
+			real rho = one+drho;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb)) / rho;
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab)) / rho;
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo oMdrho = one; // comp special
+			real oMdrho = one; // comp special
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo m0, m1, m2;	
-			doubflo vx2;
-			doubflo vy2;
-			doubflo vz2;
+			real m0, m1, m2;	
+			real vx2;
+			real vy2;
+			real vz2;
 			vx2=vvx*vvx;
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
@@ -1277,21 +1277,21 @@ extern "C" __global__ void LBCalc3rdMomentsCompSP27(doubflo* CUMbbb,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalcHigherMomentsIncompSP27(   doubflo* CUMcbb,
-															doubflo* CUMbcb,
-															doubflo* CUMbbc,
-															doubflo* CUMcca,
-															doubflo* CUMcac,
-															doubflo* CUMacc,
-															doubflo* CUMbcc,
-															doubflo* CUMcbc,
-															doubflo* CUMccb,
-															doubflo* CUMccc,
+extern "C" __global__ void LBCalcHigherMomentsIncompSP27(   real* CUMcbb,
+															real* CUMbcb,
+															real* CUMbbc,
+															real* CUMcca,
+															real* CUMcac,
+															real* CUMacc,
+															real* CUMbcc,
+															real* CUMcbc,
+															real* CUMccb,
+															real* CUMccc,
 															unsigned int* bcMatD,
 															unsigned int* neighborX,
 															unsigned int* neighborY,
 															unsigned int* neighborZ,
-															doubflo* DDStart,
+															real* DDStart,
 															int size_Mat,
 															bool EvenOrOdd)
 {
@@ -1386,52 +1386,52 @@ extern "C" __global__ void LBCalcHigherMomentsIncompSP27(   doubflo* CUMcbb,
 			unsigned int kbs  = neighborZ[ks];
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];
-			doubflo mfabb = (D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];
-			doubflo mfbab = (D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];
-			doubflo mfbba = (D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];
-			doubflo mfaab = (D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];
-			doubflo mfacb = (D.f[dirNW  ])[kw ];
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];
-			doubflo mfaba = (D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];
-			doubflo mfabc = (D.f[dirTW  ])[kw ];
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];
-			doubflo mfbac = (D.f[dirTS  ])[ks ];
-			doubflo mfbbb = (D.f[dirZERO])[k  ];
-			doubflo mfccc = (D.f[dirTNE ])[k  ];
-			doubflo mfaac = (D.f[dirTSW ])[ksw];
-			doubflo mfcac = (D.f[dirTSE ])[ks ];
-			doubflo mfacc = (D.f[dirTNW ])[kw ];
-			doubflo mfcca = (D.f[dirBNE ])[kb ];
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];
-			doubflo mfaca = (D.f[dirBNW ])[kbw];
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real mfcbb = (D.f[dirE   ])[k  ];
+			real mfabb = (D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];
+			real mfbab = (D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];
+			real mfbba = (D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];
+			real mfaab = (D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];
+			real mfacb = (D.f[dirNW  ])[kw ];
+			real mfcbc = (D.f[dirTE  ])[k  ];
+			real mfaba = (D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];
+			real mfabc = (D.f[dirTW  ])[kw ];
+			real mfbcc = (D.f[dirTN  ])[k  ];
+			real mfbaa = (D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];
+			real mfbac = (D.f[dirTS  ])[ks ];
+			real mfbbb = (D.f[dirZERO])[k  ];
+			real mfccc = (D.f[dirTNE ])[k  ];
+			real mfaac = (D.f[dirTSW ])[ksw];
+			real mfcac = (D.f[dirTSE ])[ks ];
+			real mfacc = (D.f[dirTNW ])[kw ];
+			real mfcca = (D.f[dirBNE ])[kb ];
+			real mfaaa = (D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];
+			real mfaca = (D.f[dirBNW ])[kbw];
+			////////////////////////////////////////////////////////////////////////////////////
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb));
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab));
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba));
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 								   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 								   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo m0, m1, m2;	
-			doubflo vx2;
-			doubflo vy2;
-			doubflo vz2;
+			real m0, m1, m2;	
+			real vx2;
+			real vy2;
+			real vz2;
 			vx2=vvx*vvx;
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
@@ -1731,21 +1731,21 @@ extern "C" __global__ void LBCalcHigherMomentsIncompSP27(   doubflo* CUMcbb,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalcHigherMomentsCompSP27( doubflo* CUMcbb,
-														doubflo* CUMbcb,
-														doubflo* CUMbbc,
-														doubflo* CUMcca,
-														doubflo* CUMcac,
-														doubflo* CUMacc,
-														doubflo* CUMbcc,
-														doubflo* CUMcbc,
-														doubflo* CUMccb,
-														doubflo* CUMccc,
+extern "C" __global__ void LBCalcHigherMomentsCompSP27( real* CUMcbb,
+														real* CUMbcb,
+														real* CUMbbc,
+														real* CUMcca,
+														real* CUMcac,
+														real* CUMacc,
+														real* CUMbcc,
+														real* CUMcbc,
+														real* CUMccb,
+														real* CUMccc,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
+														real* DDStart,
 														int size_Mat,
 														bool EvenOrOdd)
 {
@@ -1840,56 +1840,56 @@ extern "C" __global__ void LBCalcHigherMomentsCompSP27( doubflo* CUMcbb,
 			unsigned int kbs  = neighborZ[ks];
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];
-			doubflo mfabb = (D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];
-			doubflo mfbab = (D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];
-			doubflo mfbba = (D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];
-			doubflo mfaab = (D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];
-			doubflo mfacb = (D.f[dirNW  ])[kw ];
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];
-			doubflo mfaba = (D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];
-			doubflo mfabc = (D.f[dirTW  ])[kw ];
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];
-			doubflo mfbac = (D.f[dirTS  ])[ks ];
-			doubflo mfbbb = (D.f[dirZERO])[k  ];
-			doubflo mfccc = (D.f[dirTNE ])[k  ];
-			doubflo mfaac = (D.f[dirTSW ])[ksw];
-			doubflo mfcac = (D.f[dirTSE ])[ks ];
-			doubflo mfacc = (D.f[dirTNW ])[kw ];
-			doubflo mfcca = (D.f[dirBNE ])[kb ];
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];
-			doubflo mfaca = (D.f[dirBNW ])[kbw];
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			real mfcbb = (D.f[dirE   ])[k  ];
+			real mfabb = (D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];
+			real mfbab = (D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];
+			real mfbba = (D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];
+			real mfaab = (D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];
+			real mfacb = (D.f[dirNW  ])[kw ];
+			real mfcbc = (D.f[dirTE  ])[k  ];
+			real mfaba = (D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];
+			real mfabc = (D.f[dirTW  ])[kw ];
+			real mfbcc = (D.f[dirTN  ])[k  ];
+			real mfbaa = (D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];
+			real mfbac = (D.f[dirTS  ])[ks ];
+			real mfbbb = (D.f[dirZERO])[k  ];
+			real mfccc = (D.f[dirTNE ])[k  ];
+			real mfaac = (D.f[dirTSW ])[ksw];
+			real mfcac = (D.f[dirTSE ])[ks ];
+			real mfacc = (D.f[dirTNW ])[kw ];
+			real mfcca = (D.f[dirBNE ])[kb ];
+			real mfaaa = (D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];
+			real mfaca = (D.f[dirBNW ])[kbw];
+			////////////////////////////////////////////////////////////////////////////////////
+			real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 							(((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 							((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb;
 
-			doubflo rho = one+drho;
+			real rho = one+drho;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb)) / rho;
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab)) / rho;
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo oMdrho = one; // comp special
+			real oMdrho = one; // comp special
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo m0, m1, m2;	
-			doubflo vx2;
-			doubflo vy2;
-			doubflo vz2;
+			real m0, m1, m2;	
+			real vx2;
+			real vy2;
+			real vz2;
 			vx2=vvx*vvx;
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
@@ -2123,9 +2123,9 @@ extern "C" __global__ void LBCalcHigherMomentsCompSP27( doubflo* CUMcbb,
 			////////////////////////////////////////////////////////////////////////////////////
 			////////////////////////////////////////////////////////////////////////////////////
 
-			doubflo OxxPyyPzz = one;
-			doubflo omega = one / (three*0.001 + c1o2);
-			doubflo B = (four * omega * OxxPyyPzz * (nine * omega - sixteen) - four * omega * omega - two * OxxPyyPzz * OxxPyyPzz * (two + nine * omega * (omega - two))) /
+			real OxxPyyPzz = one;
+			real omega = one / (three*0.001 + c1o2);
+			real B = (four * omega * OxxPyyPzz * (nine * omega - sixteen) - four * omega * omega - two * OxxPyyPzz * OxxPyyPzz * (two + nine * omega * (omega - two))) /
 				(three * (omega - OxxPyyPzz) * (OxxPyyPzz * (two + three * omega) - eight * omega));
 
 			CUMbcc[k] = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)*(one + rho*six*B / (two + three * B))) / rho;
diff --git a/src/VirtualFluids_GPU/GPU/CalcMac27.cu b/src/VirtualFluids_GPU/GPU/CalcMac27.cu
index c6e46d791..3dd841922 100644
--- a/src/VirtualFluids_GPU/GPU/CalcMac27.cu
+++ b/src/VirtualFluids_GPU/GPU/CalcMac27.cu
@@ -4,16 +4,16 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalcMac27( doubflo* vxD,
-                                        doubflo* vyD,
-                                        doubflo* vzD,
-                                        doubflo* rhoD,
+extern "C" __global__ void LBCalcMac27( real* vxD,
+                                        real* vyD,
+                                        real* vzD,
+                                        real* rhoD,
                                         unsigned int* geoD,
                                         unsigned int* neighborX,
                                         unsigned int* neighborY,
                                         unsigned int* neighborZ,
                                         unsigned int size_Mat,
-                                        doubflo* DD,
+                                        real* DD,
                                         bool evenOrOdd)
 {
    Distributions27 D;
@@ -210,17 +210,17 @@ extern "C" __global__ void LBCalcMac27( doubflo* vxD,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalcMacSP27( doubflo* vxD,
-                                          doubflo* vyD,
-                                          doubflo* vzD,
-                                          doubflo* rhoD,
-                                          doubflo* pressD,
+extern "C" __global__ void LBCalcMacSP27( real* vxD,
+                                          real* vyD,
+                                          real* vzD,
+                                          real* rhoD,
+                                          real* pressD,
                                           unsigned int* geoD,
                                           unsigned int* neighborX,
                                           unsigned int* neighborY,
                                           unsigned int* neighborZ,
                                           unsigned int size_Mat,
-                                          doubflo* DD,
+                                          real* DD,
                                           bool evenOrOdd)
 {
    Distributions27 D;
@@ -430,17 +430,17 @@ extern "C" __global__ void LBCalcMacSP27( doubflo* vxD,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalcMacCompSP27( doubflo* vxD,
-											  doubflo* vyD,
-											  doubflo* vzD,
-											  doubflo* rhoD,
-											  doubflo* pressD,
+extern "C" __global__ void LBCalcMacCompSP27( real* vxD,
+											  real* vyD,
+											  real* vzD,
+											  real* rhoD,
+											  real* pressD,
 											  unsigned int* geoD,
 											  unsigned int* neighborX,
 											  unsigned int* neighborY,
 											  unsigned int* neighborZ,
 											  unsigned int size_Mat,
-											  doubflo* DD,
+											  real* DD,
 											  bool evenOrOdd)
 {
    Distributions27 D;
@@ -649,13 +649,13 @@ extern "C" __global__ void LBCalcMacCompSP27( doubflo* vxD,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalcMacThS7( doubflo* Conc,
+extern "C" __global__ void LBCalcMacThS7( real* Conc,
                                           unsigned int* geoD,
                                           unsigned int* neighborX,
                                           unsigned int* neighborY,
                                           unsigned int* neighborZ,
                                           unsigned int size_Mat,
-                                          doubflo* DD7,
+                                          real* DD7,
                                           bool evenOrOdd)
 {
    Distributions7 D7;
@@ -743,7 +743,7 @@ extern "C" __global__ void LBCalcMacThS7( doubflo* Conc,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void GetPlaneConcThS7(doubflo* Conc,
+extern "C" __global__ void GetPlaneConcThS7(real* Conc,
 								            int* kPC,
 								            unsigned int numberOfPointskPC,
 											unsigned int* geoD,
@@ -751,7 +751,7 @@ extern "C" __global__ void GetPlaneConcThS7(doubflo* Conc,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
 											unsigned int size_Mat,
-											doubflo* DD7,
+											real* DD7,
 											bool evenOrOdd)
 {
    Distributions7 D7;
@@ -846,7 +846,7 @@ extern "C" __global__ void GetPlaneConcThS7(doubflo* Conc,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void GetPlaneConcThS27(doubflo* Conc,
+extern "C" __global__ void GetPlaneConcThS27(real* Conc,
 								             int* kPC,
 								             unsigned int numberOfPointskPC,
 											 unsigned int* geoD,
@@ -854,7 +854,7 @@ extern "C" __global__ void GetPlaneConcThS27(doubflo* Conc,
 											 unsigned int* neighborY,
 											 unsigned int* neighborZ,
 											 unsigned int size_Mat,
-											 doubflo* DD27,
+											 real* DD27,
 											 bool evenOrOdd)
 {
    Distributions27 D27;
@@ -1019,13 +1019,13 @@ extern "C" __global__ void GetPlaneConcThS27(doubflo* Conc,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalcMacThS27(doubflo* Conc,
+extern "C" __global__ void LBCalcMacThS27(real* Conc,
                                           unsigned int* geoD,
                                           unsigned int* neighborX,
                                           unsigned int* neighborY,
                                           unsigned int* neighborZ,
                                           unsigned int size_Mat,
-                                          doubflo* DD27,
+                                          real* DD27,
                                           bool evenOrOdd)
 {
    Distributions27 D27;
@@ -1174,17 +1174,17 @@ extern "C" __global__ void LBCalcMacThS27(doubflo* Conc,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalcMedSP27( doubflo* vxD,
-                                          doubflo* vyD,
-                                          doubflo* vzD,
-                                          doubflo* rhoD,
-                                          doubflo* pressD,
+extern "C" __global__ void LBCalcMedSP27( real* vxD,
+                                          real* vyD,
+                                          real* vzD,
+                                          real* rhoD,
+                                          real* pressD,
                                           unsigned int* geoD,
                                           unsigned int* neighborX,
                                           unsigned int* neighborY,
                                           unsigned int* neighborZ,
                                           unsigned int size_Mat,
-                                          doubflo* DD,
+                                          real* DD,
                                           bool evenOrOdd)
 {
    Distributions27 D;
@@ -1291,11 +1291,11 @@ extern "C" __global__ void LBCalcMedSP27( doubflo* vxD,
       unsigned int ktne = k;
       unsigned int kbsw = neighborZ[ksw];
       //////////////////////////////////////////////////////////////////////////
-      doubflo PRESS = pressD[k];
-      doubflo RHO   = rhoD[k];
-      doubflo VX    = vxD[k];
-      doubflo VY    = vyD[k];
-      doubflo VZ    = vzD[k];
+      real PRESS = pressD[k];
+      real RHO   = rhoD[k];
+      real VX    = vxD[k];
+      real VY    = vyD[k];
+      real VZ    = vzD[k];
       //////////////////////////////////////////////////////////////////////////
       pressD[k] = zero;
 	  rhoD[k]   = zero;
@@ -1398,17 +1398,17 @@ extern "C" __global__ void LBCalcMedSP27( doubflo* vxD,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalcMedCompSP27( doubflo* vxD,
-											  doubflo* vyD,
-											  doubflo* vzD,
-											  doubflo* rhoD,
-											  doubflo* pressD,
+extern "C" __global__ void LBCalcMedCompSP27( real* vxD,
+											  real* vyD,
+											  real* vzD,
+											  real* rhoD,
+											  real* pressD,
 											  unsigned int* geoD,
 											  unsigned int* neighborX,
 											  unsigned int* neighborY,
 											  unsigned int* neighborZ,
 											  unsigned int size_Mat,
-											  doubflo* DD,
+											  real* DD,
 											  bool evenOrOdd)
 {
    Distributions27 D;
@@ -1515,11 +1515,11 @@ extern "C" __global__ void LBCalcMedCompSP27( doubflo* vxD,
       unsigned int ktne = k;
       unsigned int kbsw = neighborZ[ksw];
       //////////////////////////////////////////////////////////////////////////
-      doubflo PRESS = pressD[k];
-      doubflo RHO   = rhoD[k];
-      doubflo VX    = vxD[k];
-      doubflo VY    = vyD[k];
-      doubflo VZ    = vzD[k];
+      real PRESS = pressD[k];
+      real RHO   = rhoD[k];
+      real VX    = vxD[k];
+      real VY    = vyD[k];
+      real VZ    = vzD[k];
       //////////////////////////////////////////////////////////////////////////
       pressD[k] = zero;
 	  rhoD[k]   = zero;
@@ -1622,11 +1622,11 @@ extern "C" __global__ void LBCalcMedCompSP27( doubflo* vxD,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalcMacMedSP27( doubflo* vxD,
-                                             doubflo* vyD,
-                                             doubflo* vzD,
-                                             doubflo* rhoD,
-                                             doubflo* pressD,
+extern "C" __global__ void LBCalcMacMedSP27( real* vxD,
+                                             real* vyD,
+                                             real* vzD,
+                                             real* rhoD,
+                                             real* pressD,
                                              unsigned int* geoD,
                                              unsigned int* neighborX,
                                              unsigned int* neighborY,
@@ -1649,11 +1649,11 @@ extern "C" __global__ void LBCalcMacMedSP27( doubflo* vxD,
    if(k<size_Mat)
    {
       //////////////////////////////////////////////////////////////////////////
-      doubflo PRESS = pressD[k];
-      doubflo RHO   = rhoD[k];
-      doubflo VX    = vxD[k];
-      doubflo VY    = vyD[k];
-      doubflo VZ    = vzD[k];
+      real PRESS = pressD[k];
+      real RHO   = rhoD[k];
+      real VX    = vxD[k];
+      real VY    = vyD[k];
+      real VZ    = vzD[k];
       //////////////////////////////////////////////////////////////////////////
       pressD[k] = zero;
       rhoD[k]   = zero;
@@ -1694,10 +1694,10 @@ extern "C" __global__ void LBCalcMacMedSP27( doubflo* vxD,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBCalcMeasurePoints( doubflo* vxMP,
-												doubflo* vyMP,
-												doubflo* vzMP,
-												doubflo* rhoMP,
+extern "C" __global__ void LBCalcMeasurePoints( real* vxMP,
+												real* vyMP,
+												real* vzMP,
+												real* rhoMP,
 												unsigned int* kMP,
 												unsigned int numberOfPointskMP,
 												unsigned int MPClockCycle,
@@ -1707,7 +1707,7 @@ extern "C" __global__ void LBCalcMeasurePoints( doubflo* vxMP,
 												unsigned int* neighborY,
 												unsigned int* neighborZ,
 												unsigned int size_Mat,
-												doubflo* DD,
+												real* DD,
 												bool evenOrOdd)
 {
 	Distributions27 D;
@@ -1905,22 +1905,22 @@ extern "C" __global__ void LBCalcMeasurePoints( doubflo* vxMP,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LBSetOutputWallVelocitySP27( doubflo* vxD,
-														doubflo* vyD,
-														doubflo* vzD,
-														doubflo* vxWall,
-														doubflo* vyWall,
-														doubflo* vzWall,
+extern "C" __global__ void LBSetOutputWallVelocitySP27( real* vxD,
+														real* vyD,
+														real* vzD,
+														real* vxWall,
+														real* vyWall,
+														real* vzWall,
 														int numberOfWallNodes, 
 														int* kWallNodes, 
-														doubflo* rhoD,
-														doubflo* pressD,
+														real* rhoD,
+														real* pressD,
 														unsigned int* geoD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
 														unsigned int size_Mat,
-														doubflo* DD,
+														real* DD,
 														bool evenOrOdd)
 {
    ////////////////////////////////////////////////////////////////////////////////
diff --git a/src/VirtualFluids_GPU/GPU/Cascade27.cu b/src/VirtualFluids_GPU/GPU/Cascade27.cu
index 03c641f25..366e726e2 100644
--- a/src/VirtualFluids_GPU/GPU/Cascade27.cu
+++ b/src/VirtualFluids_GPU/GPU/Cascade27.cu
@@ -4,12 +4,12 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Cascade_SP_27(     doubflo omega,
+extern "C" __global__ void LB_Kernel_Cascade_SP_27(     real omega,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
+														real* DDStart,
 														int size_Mat,
 														bool EvenOrOdd)
 {
@@ -124,63 +124,63 @@ extern "C" __global__ void LB_Kernel_Cascade_SP_27(     doubflo omega,
 			//unsigned int ktne = k;
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			real mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb));
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab));
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba));
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 								   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 								   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo m0, m1, m2;	
-			doubflo vx2;
-			doubflo vy2;
-			doubflo vz2;
+			real m0, m1, m2;	
+			real vx2;
+			real vy2;
+			real vz2;
 			vx2=vvx*vvx;
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimit = 0.01f;
+			real wadjust;
+			real qudricLimit = 0.01f;
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
 			////////////////////////////////////////////////////////////////////////////////////
@@ -417,25 +417,25 @@ extern "C" __global__ void LB_Kernel_Cascade_SP_27(     doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cascade
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = omega;
-			doubflo OxyyPxzz  = one;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
-			doubflo OxyyMxzz  = one;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
-			doubflo O4        = one;
-			doubflo O5        = one;
-			doubflo O6        = one;
+			real OxxPyyPzz = omega;
+			real OxyyPxzz  = one;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
+			real OxyyMxzz  = one;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
+			real O4        = one;
+			real O5        = one;
+			real O6        = one;
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 
 			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//incl. correction
 			{
-				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-				doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
-				doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+				real dyuy = dxux + omega * c3o2 * mxxMyy;
+				real dzuz = dxux + omega * c3o2 * mxxMzz;
 
 				//relax
 				mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -462,14 +462,14 @@ extern "C" __global__ void LB_Kernel_Cascade_SP_27(     doubflo omega,
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			//relax
 			wadjust    = OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
@@ -798,12 +798,12 @@ extern "C" __global__ void LB_Kernel_Cascade_SP_27(     doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Cascade_Comp_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_Cascade_Comp_SP_27(real omega,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
+														real* DDStart,
 														int size_Mat,
 														bool EvenOrOdd)
 {
@@ -918,68 +918,68 @@ extern "C" __global__ void LB_Kernel_Cascade_Comp_SP_27(doubflo omega,
 			//unsigned int ktne = k;
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo rho = (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			////////////////////////////////////////////////////////////////////////////////////
+			real rho = (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) + one;//!!!Achtung + one
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb)) / rho;
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab)) / rho;
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one; // comp special 
-			//doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one; // comp special 
+			//real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 			//					   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 			//					   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo m0, m1, m2;	
-			doubflo vx2;
-			doubflo vy2;
-			doubflo vz2;
+			real m0, m1, m2;	
+			real vx2;
+			real vy2;
+			real vz2;
 			vx2=vvx*vvx;
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimit = 0.01f;
+			real wadjust;
+			real qudricLimit = 0.01f;
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
 			////////////////////////////////////////////////////////////////////////////////////
@@ -1216,25 +1216,25 @@ extern "C" __global__ void LB_Kernel_Cascade_Comp_SP_27(doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cascade
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = one;
-			doubflo OxyyPxzz  = one;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
-			doubflo OxyyMxzz  = one;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
-			doubflo O4        = one;
-			doubflo O5        = one;
-			doubflo O6        = one;
+			real OxxPyyPzz = one;
+			real OxyyPxzz  = one;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
+			real OxyyMxzz  = one;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
+			real O4        = one;
+			real O5        = one;
+			real O6        = one;
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 
 			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//incl. correction
 			{
-				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-				doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
-				doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+				real dyuy = dxux + omega * c3o2 * mxxMyy;
+				real dzuz = dxux + omega * c3o2 * mxxMzz;
 
 				//relax
 				mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -1261,14 +1261,14 @@ extern "C" __global__ void LB_Kernel_Cascade_Comp_SP_27(doubflo omega,
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			//relax
 			wadjust    = OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
@@ -1597,12 +1597,12 @@ extern "C" __global__ void LB_Kernel_Cascade_Comp_SP_27(doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Casc_Comp_SP_27(      doubflo omega,
+extern "C" __global__ void LB_Kernel_Casc_Comp_SP_27(      real omega,
 														   unsigned int* bcMatD,
 														   unsigned int* neighborX,
 														   unsigned int* neighborY,
 														   unsigned int* neighborZ,
-														   doubflo* DDStart,
+														   real* DDStart,
 														   int size_Mat,
 														   bool EvenOrOdd)
 {
@@ -1717,73 +1717,73 @@ extern "C" __global__ void LB_Kernel_Casc_Comp_SP_27(      doubflo omega,
          unsigned int ktne = k;
          unsigned int kbsw = neighborZ[ksw];
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo E     = (D.f[dirE   ])[ke   ];// +  c2over27 ;
-         doubflo W     = (D.f[dirW   ])[kw   ];// +  c2over27 ;
-         doubflo N     = (D.f[dirN   ])[kn   ];// +  c2over27 ;
-         doubflo S     = (D.f[dirS   ])[ks   ];// +  c2over27 ;
-         doubflo F     = (D.f[dirT   ])[kt   ];// +  c2over27 ;
-         doubflo B     = (D.f[dirB   ])[kb   ];// +  c2over27 ;
-         doubflo Ne    = (D.f[dirNE  ])[kne  ];// +  c1over54 ;
-         doubflo Sw    = (D.f[dirSW  ])[ksw  ];// +  c1over54 ;
-         doubflo Se    = (D.f[dirSE  ])[kse  ];// +  c1over54 ;
-         doubflo Nw    = (D.f[dirNW  ])[knw  ];// +  c1over54 ;
-         doubflo Ef    = (D.f[dirTE  ])[kte  ];// +  c1over54 ;
-         doubflo Wb    = (D.f[dirBW  ])[kbw  ];// +  c1over54 ;
-         doubflo Eb    = (D.f[dirBE  ])[kbe  ];// +  c1over54 ;
-         doubflo Wf    = (D.f[dirTW  ])[ktw  ];// +  c1over54 ;
-         doubflo Nf    = (D.f[dirTN  ])[ktn  ];// +  c1over54 ;
-         doubflo Sb    = (D.f[dirBS  ])[kbs  ];// +  c1over54 ;
-         doubflo Nb    = (D.f[dirBN  ])[kbn  ];// +  c1over54 ;
-         doubflo Sf    = (D.f[dirTS  ])[kts  ];// +  c1over54 ;
-         doubflo R     = (D.f[dirZERO])[kzero];// +  c8over27 ;
-         doubflo Nef   = (D.f[dirTNE ])[ktne ];// +  c1over216;
-         doubflo Swf   = (D.f[dirTSW ])[ktsw ];// +  c1over216;
-         doubflo Sef   = (D.f[dirTSE ])[ktse ];// +  c1over216;
-         doubflo Nwf   = (D.f[dirTNW ])[ktnw ];// +  c1over216;
-         doubflo Neb   = (D.f[dirBNE ])[kbne ];// +  c1over216;
-         doubflo Swb   = (D.f[dirBSW ])[kbsw ];// +  c1over216;
-         doubflo Seb   = (D.f[dirBSE ])[kbse ];// +  c1over216;
-         doubflo Nwb   = (D.f[dirBNW ])[kbnw ];// +  c1over216;
+         real E     = (D.f[dirE   ])[ke   ];// +  c2over27 ;
+         real W     = (D.f[dirW   ])[kw   ];// +  c2over27 ;
+         real N     = (D.f[dirN   ])[kn   ];// +  c2over27 ;
+         real S     = (D.f[dirS   ])[ks   ];// +  c2over27 ;
+         real F     = (D.f[dirT   ])[kt   ];// +  c2over27 ;
+         real B     = (D.f[dirB   ])[kb   ];// +  c2over27 ;
+         real Ne    = (D.f[dirNE  ])[kne  ];// +  c1over54 ;
+         real Sw    = (D.f[dirSW  ])[ksw  ];// +  c1over54 ;
+         real Se    = (D.f[dirSE  ])[kse  ];// +  c1over54 ;
+         real Nw    = (D.f[dirNW  ])[knw  ];// +  c1over54 ;
+         real Ef    = (D.f[dirTE  ])[kte  ];// +  c1over54 ;
+         real Wb    = (D.f[dirBW  ])[kbw  ];// +  c1over54 ;
+         real Eb    = (D.f[dirBE  ])[kbe  ];// +  c1over54 ;
+         real Wf    = (D.f[dirTW  ])[ktw  ];// +  c1over54 ;
+         real Nf    = (D.f[dirTN  ])[ktn  ];// +  c1over54 ;
+         real Sb    = (D.f[dirBS  ])[kbs  ];// +  c1over54 ;
+         real Nb    = (D.f[dirBN  ])[kbn  ];// +  c1over54 ;
+         real Sf    = (D.f[dirTS  ])[kts  ];// +  c1over54 ;
+         real R     = (D.f[dirZERO])[kzero];// +  c8over27 ;
+         real Nef   = (D.f[dirTNE ])[ktne ];// +  c1over216;
+         real Swf   = (D.f[dirTSW ])[ktsw ];// +  c1over216;
+         real Sef   = (D.f[dirTSE ])[ktse ];// +  c1over216;
+         real Nwf   = (D.f[dirTNW ])[ktnw ];// +  c1over216;
+         real Neb   = (D.f[dirBNE ])[kbne ];// +  c1over216;
+         real Swb   = (D.f[dirBSW ])[kbsw ];// +  c1over216;
+         real Seb   = (D.f[dirBSE ])[kbse ];// +  c1over216;
+         real Nwb   = (D.f[dirBNW ])[kbnw ];// +  c1over216;
          ////////////////////////////////////////////////////////////////////////////////////
-		 doubflo rho=Nw+W+Sw+S+Se+E+Ne+N+R+Nf+Nb+Sf+Sb+Ef+Eb+Wf+Wb+Nwf+Nwb+Nef+Neb+Swf+Swb+Sef+Seb+F+B+one;// ACHTUNG ne EINS !!!!!!!!
-		 doubflo pix=(Ne+E+Se+Ef+Eb-Nw-W-Sw-Wf-Wb+Nef+Neb+Sef+Seb-Nwf-Nwb-Swf-Swb);
-		 doubflo piy=(Ne+N+Nw+Nf+Nb-Se-S-Sw-Sf-Sb+Nef+Neb+Nwf+Nwb-Sef-Seb-Swf-Swb);
-		 doubflo piz=(Nf+Sf+Wf+Ef+F-Nb-Sb-Wb-Eb-B+Nef+Nwf+Sef+Swf-Neb-Nwb-Seb-Swb);
-		 doubflo vvx=pix/rho;
-		 doubflo vvy=piy/rho;
-		 doubflo vvz=piz/rho;
-		 doubflo vx2=vvx*vvx;
-		 doubflo vy2=vvy*vvy;
-		 doubflo vz2=vvz*vvz;
+		 real rho=Nw+W+Sw+S+Se+E+Ne+N+R+Nf+Nb+Sf+Sb+Ef+Eb+Wf+Wb+Nwf+Nwb+Nef+Neb+Swf+Swb+Sef+Seb+F+B+one;// ACHTUNG ne EINS !!!!!!!!
+		 real pix=(Ne+E+Se+Ef+Eb-Nw-W-Sw-Wf-Wb+Nef+Neb+Sef+Seb-Nwf-Nwb-Swf-Swb);
+		 real piy=(Ne+N+Nw+Nf+Nb-Se-S-Sw-Sf-Sb+Nef+Neb+Nwf+Nwb-Sef-Seb-Swf-Swb);
+		 real piz=(Nf+Sf+Wf+Ef+F-Nb-Sb-Wb-Eb-B+Nef+Nwf+Sef+Swf-Neb-Nwb-Seb-Swb);
+		 real vvx=pix/rho;
+		 real vvy=piy/rho;
+		 real vvz=piz/rho;
+		 real vx2=vvx*vvx;
+		 real vy2=vvy*vvy;
+		 real vz2=vvz*vvz;
 		 ////////////////////////////////////////////////////////////////////////////////////
-		 doubflo mfaaa = Swb;
-		 doubflo mfaab = Sw;
-		 doubflo mfaac = Swf;
-		 doubflo mfaba = Wb;
-		 doubflo mfabb = W;
-		 doubflo mfabc = Wf;
-		 doubflo mfbaa = Sb;
-		 doubflo mfbab = S;
-		 doubflo mfbac = Sf;
-		 doubflo mfbba = B;
-		 doubflo mfbbb = R;
-		 doubflo mfbbc = F;
-		 doubflo mfaca = Nwb;
-		 doubflo mfacb = Nw;
-		 doubflo mfacc = Nwf;
-		 doubflo mfcaa = Seb;
-		 doubflo mfcab = Se;
-		 doubflo mfcac = Sef;
-		 doubflo mfcca = Neb;
-		 doubflo mfccb = Ne;
-		 doubflo mfccc = Nef;
-		 doubflo mfbca = Nb;
-		 doubflo mfbcb = N;
-		 doubflo mfbcc = Nf;
-		 doubflo mfcba = Eb;
-		 doubflo mfcbb = E;
-		 doubflo mfcbc = Ef;
-		 doubflo m0, m1, m2;
+		 real mfaaa = Swb;
+		 real mfaab = Sw;
+		 real mfaac = Swf;
+		 real mfaba = Wb;
+		 real mfabb = W;
+		 real mfabc = Wf;
+		 real mfbaa = Sb;
+		 real mfbab = S;
+		 real mfbac = Sf;
+		 real mfbba = B;
+		 real mfbbb = R;
+		 real mfbbc = F;
+		 real mfaca = Nwb;
+		 real mfacb = Nw;
+		 real mfacc = Nwf;
+		 real mfcaa = Seb;
+		 real mfcab = Se;
+		 real mfcac = Sef;
+		 real mfcca = Neb;
+		 real mfccb = Ne;
+		 real mfccc = Nef;
+		 real mfbca = Nb;
+		 real mfbcb = N;
+		 real mfbcc = Nf;
+		 real mfcba = Eb;
+		 real mfcbb = E;
+		 real mfcbc = Ef;
+		 real m0, m1, m2;
 		 ////////////////////////////////////////////////////////////////////////////////////
 		 //Hin
 		 ////////////////////////////////////////////////////////////////////////////////////
@@ -2062,19 +2062,19 @@ extern "C" __global__ void LB_Kernel_Casc_Comp_SP_27(      doubflo omega,
 		 ////////////////////////////////////////////////////////////////////////////////////
 		 // Cascaded simple
 		 ////////////////////////////////////////////////////////////////////////////////////
-		 doubflo OxxPyyPzz = one;
-		 doubflo OxyyPxzz  = one;
-		 doubflo OxyyMxzz  = one;
-		 doubflo O4        = one;
-		 doubflo O5        = one;
-		 doubflo O6        = one;
+		 real OxxPyyPzz = one;
+		 real OxyyPxzz  = one;
+		 real OxyyMxzz  = one;
+		 real O4        = one;
+		 real O5        = one;
+		 real O6        = one;
 
 
 		 //2.
 		 // linear combinations
-		 doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-		 doubflo mxxMyy    = mfcaa - mfaca;
-		 doubflo mxxMzz	   = mfcaa - mfaac;
+		 real mxxPyyPzz = mfcaa + mfaca + mfaac;
+		 real mxxMyy    = mfcaa - mfaca;
+		 real mxxMzz	   = mfcaa - mfaac;
 
 		 //relax
 		 mxxPyyPzz += OxxPyyPzz*(mfaaa-mxxPyyPzz);
@@ -2102,14 +2102,14 @@ extern "C" __global__ void LB_Kernel_Casc_Comp_SP_27(      doubflo omega,
 
 		 //3.
 		 // linear combinations
-		 doubflo mxxyPyzz = mfcba + mfabc;
-		 doubflo mxxyMyzz = mfcba - mfabc;
+		 real mxxyPyzz = mfcba + mfabc;
+		 real mxxyMyzz = mfcba - mfabc;
 		 
-		 doubflo mxxzPyyz = mfcab + mfacb;
-		 doubflo mxxzMyyz = mfcab - mfacb;
+		 real mxxzPyyz = mfcab + mfacb;
+		 real mxxzMyyz = mfcab - mfacb;
 
-		 doubflo mxyyPxzz = mfbca + mfbac;
-		 doubflo mxyyMxzz = mfbca - mfbac;
+		 real mxyyPxzz = mfbca + mfbac;
+		 real mxyyMxzz = mfbca - mfbac;
 
 		 //relax
 		 mfbbb     += OxyyMxzz * (-mfbbb);
@@ -2444,12 +2444,12 @@ extern "C" __global__ void LB_Kernel_Casc_Comp_SP_27(      doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27(  doubflo omega,
+extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27(  real omega,
                                                          unsigned int* bcMatD,
                                                          unsigned int* neighborX,
                                                          unsigned int* neighborY,
                                                          unsigned int* neighborZ,
-                                                         doubflo* DDStart,
+                                                         real* DDStart,
                                                          int size_Mat,
                                                          bool EvenOrOdd)
 {
@@ -2564,40 +2564,40 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27(  doubflo omega,
          //unsigned int ktne = k;
          unsigned int kbsw = neighborZ[ksw];
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo fE    =  (D.f[dirE   ])[k  ];//ke
-         doubflo fW    =  (D.f[dirW   ])[kw ];
-         doubflo fN    =  (D.f[dirN   ])[k  ];//kn
-         doubflo fS    =  (D.f[dirS   ])[ks ];
-         doubflo fT    =  (D.f[dirT   ])[k  ];//kt
-         doubflo fB    =  (D.f[dirB   ])[kb ];
-         doubflo fNE   =  (D.f[dirNE  ])[k  ];//kne
-         doubflo fSW   =  (D.f[dirSW  ])[ksw];
-         doubflo fSE   =  (D.f[dirSE  ])[ks ];//kse
-         doubflo fNW   =  (D.f[dirNW  ])[kw ];//knw
-         doubflo fTE   =  (D.f[dirTE  ])[k  ];//kte
-         doubflo fBW   =  (D.f[dirBW  ])[kbw];
-         doubflo fBE   =  (D.f[dirBE  ])[kb ];//kbe
-         doubflo fTW   =  (D.f[dirTW  ])[kw ];//ktw
-         doubflo fTN   =  (D.f[dirTN  ])[k  ];//ktn
-         doubflo fBS   =  (D.f[dirBS  ])[kbs];
-         doubflo fBN   =  (D.f[dirBN  ])[kb ];//kbn
-         doubflo fTS   =  (D.f[dirTS  ])[ks ];//kts
-         doubflo fZERO =  (D.f[dirZERO])[k  ];//kzero
-         doubflo fTNE   = (D.f[dirTNE ])[k  ];//ktne
-         doubflo fTSW   = (D.f[dirTSW ])[ksw];//ktsw
-         doubflo fTSE   = (D.f[dirTSE ])[ks ];//ktse
-         doubflo fTNW   = (D.f[dirTNW ])[kw ];//ktnw
-         doubflo fBNE   = (D.f[dirBNE ])[kb ];//kbne
-         doubflo fBSW   = (D.f[dirBSW ])[kbsw];
-         doubflo fBSE   = (D.f[dirBSE ])[kbs];//kbse
-         doubflo fBNW   = (D.f[dirBNW ])[kbw];//kbnw
+         real fE    =  (D.f[dirE   ])[k  ];//ke
+         real fW    =  (D.f[dirW   ])[kw ];
+         real fN    =  (D.f[dirN   ])[k  ];//kn
+         real fS    =  (D.f[dirS   ])[ks ];
+         real fT    =  (D.f[dirT   ])[k  ];//kt
+         real fB    =  (D.f[dirB   ])[kb ];
+         real fNE   =  (D.f[dirNE  ])[k  ];//kne
+         real fSW   =  (D.f[dirSW  ])[ksw];
+         real fSE   =  (D.f[dirSE  ])[ks ];//kse
+         real fNW   =  (D.f[dirNW  ])[kw ];//knw
+         real fTE   =  (D.f[dirTE  ])[k  ];//kte
+         real fBW   =  (D.f[dirBW  ])[kbw];
+         real fBE   =  (D.f[dirBE  ])[kb ];//kbe
+         real fTW   =  (D.f[dirTW  ])[kw ];//ktw
+         real fTN   =  (D.f[dirTN  ])[k  ];//ktn
+         real fBS   =  (D.f[dirBS  ])[kbs];
+         real fBN   =  (D.f[dirBN  ])[kb ];//kbn
+         real fTS   =  (D.f[dirTS  ])[ks ];//kts
+         real fZERO =  (D.f[dirZERO])[k  ];//kzero
+         real fTNE   = (D.f[dirTNE ])[k  ];//ktne
+         real fTSW   = (D.f[dirTSW ])[ksw];//ktsw
+         real fTSE   = (D.f[dirTSE ])[ks ];//ktse
+         real fTNW   = (D.f[dirTNW ])[kw ];//ktnw
+         real fBNE   = (D.f[dirBNE ])[kb ];//kbne
+         real fBSW   = (D.f[dirBSW ])[kbsw];
+         real fBSE   = (D.f[dirBSE ])[kbs];//kbse
+         real fBNW   = (D.f[dirBNW ])[kbw];//kbnw
          ////////////////////////////////////////////////////////////////////////////////
-         doubflo rho0   =  (fTNE+fBSW)+(fTSW+fBNE)+(fTSE+fBNW)+(fTNW+fBSE)+(fNE+fSW)+(fNW+fSE)+(fTE+fBW)+(fBE+fTW)+(fTN+fBS)+(fBN+fTS)+(fE+fW)+(fN+fS)+(fT+fB)+fZERO;
-         doubflo rho    =  rho0 + one;
-         doubflo OORho  =  one/rho;
-         doubflo vx     =  OORho*((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
-         doubflo vy     =  OORho*((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
-         doubflo vz     =  OORho*((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
+         real rho0   =  (fTNE+fBSW)+(fTSW+fBNE)+(fTSE+fBNW)+(fTNW+fBSE)+(fNE+fSW)+(fNW+fSE)+(fTE+fBW)+(fBE+fTW)+(fTN+fBS)+(fBN+fTS)+(fE+fW)+(fN+fS)+(fT+fB)+fZERO;
+         real rho    =  rho0 + one;
+         real OORho  =  one/rho;
+         real vx     =  OORho*((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
+         real vy     =  OORho*((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
+         real vz     =  OORho*((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
          ////////////////////////////////////////////////////////////////////////////////
 
 
@@ -2605,11 +2605,11 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27(  doubflo omega,
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          ////BGK incomp
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         //doubflo drho    =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
-         //doubflo vx1     =  (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW);
-         //doubflo vx2     =  (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW);
-         //doubflo vx3     =  (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW);
-         //doubflo cusq    =  c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+         //real drho    =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
+         //real vx1     =  (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW);
+         //real vx2     =  (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW);
+         //real vx3     =  (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW);
+         //real cusq    =  c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
          //fZERO = fZERO *(one+(-omega))-(-omega)*   c8over27*  (drho-cusq);
          //fE    = fE    *(one+(-omega))-(-omega)*   c2over27*  (drho+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq);
@@ -2643,13 +2643,13 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27(  doubflo omega,
 		 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //      //BGK comp
    //      //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-   //      doubflo drho    =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
-   //      doubflo rho     =  one + drho;
-   //      doubflo OoRho   =  one / rho;
-   //      doubflo vx1     =  OoRho * (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW);
-   //      doubflo vx2     =  OoRho * (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW);
-   //      doubflo vx3     =  OoRho * (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW);
-   //      doubflo cusq    =  c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+   //      real drho    =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
+   //      real rho     =  one + drho;
+   //      real OoRho   =  one / rho;
+   //      real vx1     =  OoRho * (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW);
+   //      real vx2     =  OoRho * (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW);
+   //      real vx3     =  OoRho * (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW);
+   //      real cusq    =  c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
    //      fZERO = fZERO *(one+(-omega))-(-omega)*   c8over27*  (drho-rho * cusq);
    //      fE    = fE    *(one+(-omega))-(-omega)*   c2over27*  (drho+rho * (three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq));
@@ -2683,79 +2683,79 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27(  doubflo omega,
 
 
          ////////////////////////////////////////////////////////////////////////////////
-         doubflo vx2    = vx*vx;
-         doubflo vy2    = vy*vy;
-         doubflo vz2    = vz*vz;
-         doubflo vxy    = vx*vy;
-         doubflo vxz    = vx*vz;
-         doubflo vyz    = vy*vz;
-         doubflo vx2y   = vx*vx*vy;
-         doubflo vx2z   = vx*vx*vz;
-         doubflo vy2z   = vy*vy*vz;
-         doubflo vxy2   = vx*vy*vy;
-         doubflo vyz2   = vy*vz*vz;
-         doubflo vxz2   = vx*vz*vz;
-         doubflo vxyz   = vx*vy*vz;
-         //doubflo vx2y2  = vx*vx*vy*vy;
-         //doubflo vx2z2  = vx*vx*vz*vz;
-         //doubflo vy2z2  = vy*vy*vz*vz;
-         //doubflo vx2yz  = vx*vx*vy*vz;
-         //doubflo vxyz2  = vx*vy*vz*vz;
-         //doubflo vxy2z  = vx*vy*vy*vz;
-         //doubflo vx2y2z = vx*vx*vy*vy*vz;
-         //doubflo vx2yz2 = vx*vx*vy*vz*vz;
-         //doubflo vxy2z2 = vx*vy*vy*vz*vz;
-         //doubflo vx2y2z2= vx*vx*vy*vy*vz*vz;
+         real vx2    = vx*vx;
+         real vy2    = vy*vy;
+         real vz2    = vz*vz;
+         real vxy    = vx*vy;
+         real vxz    = vx*vz;
+         real vyz    = vy*vz;
+         real vx2y   = vx*vx*vy;
+         real vx2z   = vx*vx*vz;
+         real vy2z   = vy*vy*vz;
+         real vxy2   = vx*vy*vy;
+         real vyz2   = vy*vz*vz;
+         real vxz2   = vx*vz*vz;
+         real vxyz   = vx*vy*vz;
+         //real vx2y2  = vx*vx*vy*vy;
+         //real vx2z2  = vx*vx*vz*vz;
+         //real vy2z2  = vy*vy*vz*vz;
+         //real vx2yz  = vx*vx*vy*vz;
+         //real vxyz2  = vx*vy*vz*vz;
+         //real vxy2z  = vx*vy*vy*vz;
+         //real vx2y2z = vx*vx*vy*vy*vz;
+         //real vx2yz2 = vx*vx*vy*vz*vz;
+         //real vxy2z2 = vx*vy*vy*vz*vz;
+         //real vx2y2z2= vx*vx*vy*vy*vz*vz;
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         //doubflo mu200   =(fE+fW+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         //doubflo mu020   =(fN+fS+fNE+fSW+fSE+fNW+fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         //doubflo mu002   =(fT+fB+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         //doubflo mu110   =(fNE-fSE+fSW-fNW+fTNE-fTSE+fBNE-fBSE+fTSW-fTNW+fBSW-fBNW) * OORho;
-         //doubflo mu101   =(fTE+fBW-fBE-fTW+fTNE-fBNE+fTSE-fBSE-fTNW+fBNW-fTSW+fBSW) * OORho;
-         //doubflo mu011   =(fTN+fBS-fBN-fTS+fTNE-fBNE-fTSE+fBSE+fTNW-fBNW-fTSW+fBSW) * OORho;
-         //doubflo mu210   =(fNE-fSW-fSE+fNW+fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
-         //doubflo mu120   =(fNE-fSW+fSE-fNW+fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
-         //doubflo mu102   =(fTE-fBW+fBE-fTW+fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
-         //doubflo mu111   =(fTNE-fBNE-fTSE+fBSE-fTNW+fBNW+fTSW-fBSW) * OORho;
-         //doubflo mu201   =(fTE-fBW-fBE+fTW+fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
-         //doubflo mu021   =(fTN-fBS-fBN+fTS+fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
-         //doubflo mu012   =(fTN-fBS+fBN-fTS+fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
-         //doubflo mu220   =(fNE+fSW+fSE+fNW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         //doubflo mu121   =(fTNE-fBNE+fTSE-fBSE-fTNW+fBNW-fTSW+fBSW) * OORho;
-         //doubflo mu202   =(fTE+fBW+fBE+fTW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         //doubflo mu211   =(fTNE-fBNE-fTSE+fBSE+fTNW-fBNW-fTSW+fBSW) * OORho;
-         //doubflo mu112   =(fTNE+fBNE-fTSE-fBSE-fTNW-fBNW+fTSW+fBSW) * OORho;
-         //doubflo mu022   =(fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         //doubflo mu221   =(fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
-         //doubflo mu122   =(fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
-         //doubflo mu212   =(fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
-         //doubflo mu222   =(fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         //real mu200   =(fE+fW+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         //real mu020   =(fN+fS+fNE+fSW+fSE+fNW+fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         //real mu002   =(fT+fB+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         //real mu110   =(fNE-fSE+fSW-fNW+fTNE-fTSE+fBNE-fBSE+fTSW-fTNW+fBSW-fBNW) * OORho;
+         //real mu101   =(fTE+fBW-fBE-fTW+fTNE-fBNE+fTSE-fBSE-fTNW+fBNW-fTSW+fBSW) * OORho;
+         //real mu011   =(fTN+fBS-fBN-fTS+fTNE-fBNE-fTSE+fBSE+fTNW-fBNW-fTSW+fBSW) * OORho;
+         //real mu210   =(fNE-fSW-fSE+fNW+fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
+         //real mu120   =(fNE-fSW+fSE-fNW+fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
+         //real mu102   =(fTE-fBW+fBE-fTW+fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
+         //real mu111   =(fTNE-fBNE-fTSE+fBSE-fTNW+fBNW+fTSW-fBSW) * OORho;
+         //real mu201   =(fTE-fBW-fBE+fTW+fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
+         //real mu021   =(fTN-fBS-fBN+fTS+fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
+         //real mu012   =(fTN-fBS+fBN-fTS+fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
+         //real mu220   =(fNE+fSW+fSE+fNW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         //real mu121   =(fTNE-fBNE+fTSE-fBSE-fTNW+fBNW-fTSW+fBSW) * OORho;
+         //real mu202   =(fTE+fBW+fBE+fTW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         //real mu211   =(fTNE-fBNE-fTSE+fBSE+fTNW-fBNW-fTSW+fBSW) * OORho;
+         //real mu112   =(fTNE+fBNE-fTSE-fBSE-fTNW-fBNW+fTSW+fBSW) * OORho;
+         //real mu022   =(fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         //real mu221   =(fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
+         //real mu122   =(fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
+         //real mu212   =(fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
+         //real mu222   =(fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo mu200   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE))) + ((fNE+fSW) + (fNW+fSE)) + ((fTE+fBW) + (fTW+fBE))                           + (fE+fW)                    );
-         doubflo mu020   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE))) + ((fNE+fSW) + (fNW+fSE))                           + ((fTN+fBS) + (fTS+fBN))           + (fN+fS)          );
-         doubflo mu002   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                           + ((fTE+fBW) + (fTW+fBE)) + ((fTN+fBS) + (fTS+fBN))                     + (fT+fB));
-         doubflo mu110   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) - ((fTSE+fBNW) - (fTSW+fBNE))) + ((fNE+fSW) - (fNW+fSE))                                                                                  );
-         doubflo mu101   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) + ((fTSE+fBNW) - (fTSW+fBNE)))                           + ((fTE+fBW) - (fTW+fBE))                                                        );
-         doubflo mu011   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) - ((fTSE+fBNW) + (fTSW+fBNE)))                                                     + ((fTN+fBS) - (fTS+fBN))                              );
-         doubflo mu210   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) - ((fTSE-fBNW) + (fTSW-fBNE))) + ((fNE-fSW) + (fNW-fSE))                                                                                  );
-         doubflo mu120   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) + ((fTSE-fBNW) - (fTSW-fBNE))) + ((fNE-fSW) + (fNW-fSE))                                                                                  );
-         doubflo mu102   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) + ((fTSE-fBNW) - (fTSW-fBNE)))                           + ((fTE-fBW) - (fTW-fBE))                                                        );
-         doubflo mu111   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) - ((fTSE-fBNW) - (fTSW-fBNE)))                                                                                                            );
-         doubflo mu201   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) + ((fTSE-fBNW) + (fTSW-fBNE)))                           + ((fTE-fBW) + (fTW-fBE))                                                        );
-         doubflo mu021   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) + ((fTSE-fBNW) + (fTSW-fBNE)))                                                     + ((fTN-fBS) + (fTS-fBN))                              );
-         doubflo mu012   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) - ((fTSE-fBNW) + (fTSW-fBNE)))                                                     + ((fTN-fBS) - (fTS-fBN))                              );
-         doubflo mu220   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE))) + ((fNE+fSW) + (fNW+fSE))                                                                                  );
-         doubflo mu121   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) + ((fTSE+fBNW) - (fTSW+fBNE)))                                                                                                            );
-         doubflo mu202   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                           + ((fTE+fBW) + (fTW+fBE))                                                        );
-         doubflo mu211   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) - ((fTSE+fBNW) + (fTSW+fBNE)))                                                                                                            );
-         doubflo mu112   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) - ((fTSE+fBNW) - (fTSW+fBNE)))                                                                                                            );
-         doubflo mu022   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                                                     + ((fTN+fBS) + (fTS+fBN))                              );
-         doubflo mu221   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) + ((fTSE-fBNW) + (fTSW-fBNE)))                                                                                                            );
-         doubflo mu122   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) + ((fTSE-fBNW) - (fTSW-fBNE)))                                                                                                            );
-         doubflo mu212   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) - ((fTSE-fBNW) + (fTSW-fBNE)))                                                                                                            );
-         doubflo mu222   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                                                                                                            );
+         real mu200   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE))) + ((fNE+fSW) + (fNW+fSE)) + ((fTE+fBW) + (fTW+fBE))                           + (fE+fW)                    );
+         real mu020   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE))) + ((fNE+fSW) + (fNW+fSE))                           + ((fTN+fBS) + (fTS+fBN))           + (fN+fS)          );
+         real mu002   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                           + ((fTE+fBW) + (fTW+fBE)) + ((fTN+fBS) + (fTS+fBN))                     + (fT+fB));
+         real mu110   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) - ((fTSE+fBNW) - (fTSW+fBNE))) + ((fNE+fSW) - (fNW+fSE))                                                                                  );
+         real mu101   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) + ((fTSE+fBNW) - (fTSW+fBNE)))                           + ((fTE+fBW) - (fTW+fBE))                                                        );
+         real mu011   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) - ((fTSE+fBNW) + (fTSW+fBNE)))                                                     + ((fTN+fBS) - (fTS+fBN))                              );
+         real mu210   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) - ((fTSE-fBNW) + (fTSW-fBNE))) + ((fNE-fSW) + (fNW-fSE))                                                                                  );
+         real mu120   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) + ((fTSE-fBNW) - (fTSW-fBNE))) + ((fNE-fSW) + (fNW-fSE))                                                                                  );
+         real mu102   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) + ((fTSE-fBNW) - (fTSW-fBNE)))                           + ((fTE-fBW) - (fTW-fBE))                                                        );
+         real mu111   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) - ((fTSE-fBNW) - (fTSW-fBNE)))                                                                                                            );
+         real mu201   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) + ((fTSE-fBNW) + (fTSW-fBNE)))                           + ((fTE-fBW) + (fTW-fBE))                                                        );
+         real mu021   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) + ((fTSE-fBNW) + (fTSW-fBNE)))                                                     + ((fTN-fBS) + (fTS-fBN))                              );
+         real mu012   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) - ((fTSE-fBNW) + (fTSW-fBNE)))                                                     + ((fTN-fBS) - (fTS-fBN))                              );
+         real mu220   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE))) + ((fNE+fSW) + (fNW+fSE))                                                                                  );
+         real mu121   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) + ((fTSE+fBNW) - (fTSW+fBNE)))                                                                                                            );
+         real mu202   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                           + ((fTE+fBW) + (fTW+fBE))                                                        );
+         real mu211   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) - ((fTSE+fBNW) + (fTSW+fBNE)))                                                                                                            );
+         real mu112   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) - ((fTSE+fBNW) - (fTSW+fBNE)))                                                                                                            );
+         real mu022   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                                                     + ((fTN+fBS) + (fTS+fBN))                              );
+         real mu221   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) + ((fTSE-fBNW) + (fTSW-fBNE)))                                                                                                            );
+         real mu122   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) + ((fTSE-fBNW) - (fTSW-fBNE)))                                                                                                            );
+         real mu212   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) - ((fTSE-fBNW) + (fTSW-fBNE)))                                                                                                            );
+         real mu222   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                                                                                                            );
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo MzXX,MzYY,MzZZ,MzXY,MzXZ,MzYZ,MzXXY,MzXYY,MzXXZ,MzXZZ,MzYYZ,MzYZZ,MzXYZ,MzXXYY,MzXXZZ,MzYYZZ,MzXXYZ,MzXYYZ,MzXYZZ,MzXXYYZ,MzXXYZZ,MzXYYZZ,MzXXYYZZ;
+         real MzXX,MzYY,MzZZ,MzXY,MzXZ,MzYZ,MzXXY,MzXYY,MzXXZ,MzXZZ,MzYYZ,MzYZZ,MzXYZ,MzXXYY,MzXXZZ,MzYYZZ,MzXXYZ,MzXYYZ,MzXYZZ,MzXXYYZ,MzXXYZZ,MzXYYZZ,MzXXYYZZ;
          {
             //2.
             MzXX      =   mu200-vx2;
@@ -2765,9 +2765,9 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27(  doubflo omega,
             MzYZ      =   mu011-vyz;
             MzZZ      =   mu002-vz2;
 
-            doubflo pimpmu200 = mu200 + c1o3 * OORho;
-            doubflo pimpmu020 = mu020 + c1o3 * OORho;
-            doubflo pimpmu002 = mu002 + c1o3 * OORho;
+            real pimpmu200 = mu200 + c1o3 * OORho;
+            real pimpmu020 = mu020 + c1o3 * OORho;
+            real pimpmu002 = mu002 + c1o3 * OORho;
 
             //3.
             MzXXY     =    two*vx2y - two*vx*mu110 - vy*pimpmu200 + mu210; 
@@ -2786,9 +2786,9 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27(  doubflo omega,
             MzXYZZ    =   /*-three*vxyz2+*/pimpmu002*vxy/*+two*vxz*mu011*/-mu012*vx/*+two*vyz*mu101*/-vy*mu102/*+vz2*mu110-two*vz*mu111*/+mu112; 
             MzYYZZ    =   /*-three*vy2z2+*/pimpmu002*vy2/*+four*vyz*mu011*/-two*vy*mu012+vz2*pimpmu020-two*vz*mu021+mu022; 
 
-            doubflo pimpmu220 = mu220 + c1o9 * OORho;
-            doubflo pimpmu202 = mu202 + c1o9 * OORho;
-            doubflo pimpmu022 = mu022 + c1o9 * OORho;
+            real pimpmu220 = mu220 + c1o9 * OORho;
+            real pimpmu202 = mu202 + c1o9 * OORho;
+            real pimpmu022 = mu022 + c1o9 * OORho;
 
             //5.
             MzXXYYZ   =    /*four*(vx2y2z-vxyz*mu110+vxy*mu111)+*/ 
@@ -2811,22 +2811,22 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27(  doubflo omega,
             //               two*(vy*mu212/*-vy2z*mu201-vxz2*mu120-vyz2*mu210-vxy2*mu102-vx2z*mu021-vx2y*mu012*/-vx*mu122-vz*mu221); 
          }
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo MXXpMYYpMZZ,MXXmMYY, MXXmMZZ, MXXYpMYZZ,MXXZpMYYZ,MXYYpMXZZ, MXXYmMYZZ,MXXZmMYYZ,MXYYmMXZZ;
+         real MXXpMYYpMZZ,MXXmMYY, MXXmMZZ, MXXYpMYZZ,MXXZpMYYZ,MXYYpMXZZ, MXXYmMYZZ,MXXZmMYYZ,MXYYmMXZZ;
          {
             //coll faktoren:
-            doubflo w1 =   (-omega);
-            doubflo w2 = -one;//(-omega);
-            doubflo w3 = -(two+(-omega));//-one;
-            doubflo w4 = -(two+(-omega));//-one;
-            doubflo w5 = -(two+(-omega));//-one;
-            doubflo w6 = -one;
-            doubflo w7 = -one;
-            doubflo w8 = -one;
-            doubflo w9 = -one;
-            doubflo w10= -one;
-
-			doubflo wadjust;
-			doubflo qudricLimit = c1o100;
+            real w1 =   (-omega);
+            real w2 = -one;//(-omega);
+            real w3 = -(two+(-omega));//-one;
+            real w4 = -(two+(-omega));//-one;
+            real w5 = -(two+(-omega));//-one;
+            real w6 = -one;
+            real w7 = -one;
+            real w8 = -one;
+            real w9 = -one;
+            real w10= -one;
+
+			real wadjust;
+			real qudricLimit = c1o100;
 
             ////////lin kombi bilden:
             MXXpMYYpMZZ =  MzXX + MzYY + MzZZ;
@@ -2840,9 +2840,9 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27(  doubflo omega,
             MXYYpMXZZ   =  MzXYY+MzXZZ;
             MXYYmMXZZ   =  MzXYY-MzXZZ;
 
-            doubflo MXXYYppp    = MzXXYY + MzXXZZ + MzYYZZ;
-            doubflo MXXYYpm2p   = MzXXYY - two*MzXXZZ + MzYYZZ;
-            doubflo MXXYYppm2   = MzXXYY + MzXXZZ - two*MzYYZZ;
+            real MXXYYppp    = MzXXYY + MzXXZZ + MzYYZZ;
+            real MXXYYpm2p   = MzXXYY - two*MzXXZZ + MzYYZZ;
+            real MXXYYppm2   = MzXXYY + MzXXZZ - two*MzYYZZ;
 
             //relaxation:
             MXXpMYYpMZZ -= w2*(one-OORho-MXXpMYYpMZZ);
@@ -3076,12 +3076,12 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27(  doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Casc_SP_MS_27(   doubflo omega,
+extern "C" __global__ void LB_Kernel_Casc_SP_MS_27(   real omega,
                                                       unsigned int* bcMatD,
                                                       unsigned int* neighborX,
                                                       unsigned int* neighborY,
                                                       unsigned int* neighborZ,
-                                                      doubflo* DDStart,
+                                                      real* DDStart,
                                                       int size_Mat,
                                                       bool EvenOrOdd)
 {
@@ -3196,51 +3196,51 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_27(   doubflo omega,
          //unsigned int ktne = k;
          unsigned int kbsw = neighborZ[ksw];
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo fE    =  (D.f[dirE   ])[k  ];//ke
-         doubflo fW    =  (D.f[dirW   ])[kw ];
-         doubflo fN    =  (D.f[dirN   ])[k  ];//kn
-         doubflo fS    =  (D.f[dirS   ])[ks ];
-         doubflo fT    =  (D.f[dirT   ])[k  ];//kt
-         doubflo fB    =  (D.f[dirB   ])[kb ];
-         doubflo fNE   =  (D.f[dirNE  ])[k  ];//kne
-         doubflo fSW   =  (D.f[dirSW  ])[ksw];
-         doubflo fSE   =  (D.f[dirSE  ])[ks ];//kse
-         doubflo fNW   =  (D.f[dirNW  ])[kw ];//knw
-         doubflo fTE   =  (D.f[dirTE  ])[k  ];//kte
-         doubflo fBW   =  (D.f[dirBW  ])[kbw];
-         doubflo fBE   =  (D.f[dirBE  ])[kb ];//kbe
-         doubflo fTW   =  (D.f[dirTW  ])[kw ];//ktw
-         doubflo fTN   =  (D.f[dirTN  ])[k  ];//ktn
-         doubflo fBS   =  (D.f[dirBS  ])[kbs];
-         doubflo fBN   =  (D.f[dirBN  ])[kb ];//kbn
-         doubflo fTS   =  (D.f[dirTS  ])[ks ];//kts
-         doubflo fZERO =  (D.f[dirZERO])[k  ];//kzero
-         doubflo fTNE   = (D.f[dirTNE ])[k  ];//ktne
-         doubflo fTSW   = (D.f[dirTSW ])[ksw];//ktsw
-         doubflo fTSE   = (D.f[dirTSE ])[ks ];//ktse
-         doubflo fTNW   = (D.f[dirTNW ])[kw ];//ktnw
-         doubflo fBNE   = (D.f[dirBNE ])[kb ];//kbne
-         doubflo fBSW   = (D.f[dirBSW ])[kbsw];
-         doubflo fBSE   = (D.f[dirBSE ])[kbs];//kbse
-         doubflo fBNW   = (D.f[dirBNW ])[kbw];//kbnw
+         real fE    =  (D.f[dirE   ])[k  ];//ke
+         real fW    =  (D.f[dirW   ])[kw ];
+         real fN    =  (D.f[dirN   ])[k  ];//kn
+         real fS    =  (D.f[dirS   ])[ks ];
+         real fT    =  (D.f[dirT   ])[k  ];//kt
+         real fB    =  (D.f[dirB   ])[kb ];
+         real fNE   =  (D.f[dirNE  ])[k  ];//kne
+         real fSW   =  (D.f[dirSW  ])[ksw];
+         real fSE   =  (D.f[dirSE  ])[ks ];//kse
+         real fNW   =  (D.f[dirNW  ])[kw ];//knw
+         real fTE   =  (D.f[dirTE  ])[k  ];//kte
+         real fBW   =  (D.f[dirBW  ])[kbw];
+         real fBE   =  (D.f[dirBE  ])[kb ];//kbe
+         real fTW   =  (D.f[dirTW  ])[kw ];//ktw
+         real fTN   =  (D.f[dirTN  ])[k  ];//ktn
+         real fBS   =  (D.f[dirBS  ])[kbs];
+         real fBN   =  (D.f[dirBN  ])[kb ];//kbn
+         real fTS   =  (D.f[dirTS  ])[ks ];//kts
+         real fZERO =  (D.f[dirZERO])[k  ];//kzero
+         real fTNE   = (D.f[dirTNE ])[k  ];//ktne
+         real fTSW   = (D.f[dirTSW ])[ksw];//ktsw
+         real fTSE   = (D.f[dirTSE ])[ks ];//ktse
+         real fTNW   = (D.f[dirTNW ])[kw ];//ktnw
+         real fBNE   = (D.f[dirBNE ])[kb ];//kbne
+         real fBSW   = (D.f[dirBSW ])[kbsw];
+         real fBSE   = (D.f[dirBSE ])[kbs];//kbse
+         real fBNW   = (D.f[dirBNW ])[kbw];//kbnw
          ////////////////////////////////////////////////////////////////////////////////
-         doubflo rho0   =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
-         doubflo rho    =  rho0 + one;
-         doubflo OORho  =  one/rho;
-         doubflo vx     =  (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW) * OORho;
-         doubflo vy     =  (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW) * OORho;
-         doubflo vz     =  (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW) * OORho;
+         real rho0   =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
+         real rho    =  rho0 + one;
+         real OORho  =  one/rho;
+         real vx     =  (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW) * OORho;
+         real vy     =  (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW) * OORho;
+         real vz     =  (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW) * OORho;
 
          //////////////////////////////////////////////////////////////////////////
          //BGK
          //////////////////////////////////////////////////////////////////////////
-         //doubflo drho   =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
-         //doubflo vx1     =  (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW);
-         //doubflo vx2     =  (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW);
-         //doubflo vx3     =  (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW);
+         //real drho   =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
+         //real vx1     =  (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW);
+         //real vx2     =  (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW);
+         //real vx3     =  (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW);
 
 
-         //doubflo cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+         //real cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
          //fZERO = fZERO *(one+(-omega))-(-omega)*   c8over27*  (drho-cusq);
          //fE    = fE    *(one+(-omega))-(-omega)*   c2over27*  (drho+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq);
@@ -3271,55 +3271,55 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_27(   doubflo omega,
          //fTNW  = fTNW  *(one+(-omega))-(-omega)*    c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq);
 
 
-         doubflo vx2    = vx*vx;
-         doubflo vy2    = vy*vy;
-         doubflo vz2    = vz*vz;
-         doubflo vxy    = vx*vy;
-         doubflo vxz    = vx*vz;
-         doubflo vyz    = vy*vz;
-         doubflo vx2y   = vx*vx*vy;
-         doubflo vx2z   = vx*vx*vz;
-         doubflo vy2z   = vy*vy*vz;
-         doubflo vxy2   = vx*vy*vy;
-         doubflo vyz2   = vy*vz*vz;
-         doubflo vxz2   = vx*vz*vz;
-         doubflo vxyz   = vx*vy*vz;
-         doubflo vx2y2  = vx*vx*vy*vy;
-         doubflo vx2z2  = vx*vx*vz*vz;
-         doubflo vy2z2  = vy*vy*vz*vz;
-         doubflo vx2yz  = vx*vx*vy*vz;
-         doubflo vxyz2  = vx*vy*vz*vz;
-         doubflo vxy2z  = vx*vy*vy*vz;
-         doubflo vx2y2z = vx*vx*vy*vy*vz;
-         doubflo vx2yz2 = vx*vx*vy*vz*vz;
-         doubflo vxy2z2 = vx*vy*vy*vz*vz;
-         doubflo vx2y2z2= vx*vx*vy*vy*vz*vz;
+         real vx2    = vx*vx;
+         real vy2    = vy*vy;
+         real vz2    = vz*vz;
+         real vxy    = vx*vy;
+         real vxz    = vx*vz;
+         real vyz    = vy*vz;
+         real vx2y   = vx*vx*vy;
+         real vx2z   = vx*vx*vz;
+         real vy2z   = vy*vy*vz;
+         real vxy2   = vx*vy*vy;
+         real vyz2   = vy*vz*vz;
+         real vxz2   = vx*vz*vz;
+         real vxyz   = vx*vy*vz;
+         real vx2y2  = vx*vx*vy*vy;
+         real vx2z2  = vx*vx*vz*vz;
+         real vy2z2  = vy*vy*vz*vz;
+         real vx2yz  = vx*vx*vy*vz;
+         real vxyz2  = vx*vy*vz*vz;
+         real vxy2z  = vx*vy*vy*vz;
+         real vx2y2z = vx*vx*vy*vy*vz;
+         real vx2yz2 = vx*vx*vy*vz*vz;
+         real vxy2z2 = vx*vy*vy*vz*vz;
+         real vx2y2z2= vx*vx*vy*vy*vz*vz;
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo mu200   =(fE+fW+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         doubflo mu020   =(fN+fS+fNE+fSW+fSE+fNW+fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         doubflo mu002   =(fT+fB+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         doubflo mu110   =(fNE-fSE+fSW-fNW+fTNE-fTSE+fBNE-fBSE+fTSW-fTNW+fBSW-fBNW) * OORho;
-         doubflo mu101   =(fTE+fBW-fBE-fTW+fTNE-fBNE+fTSE-fBSE-fTNW+fBNW-fTSW+fBSW) * OORho;
-         doubflo mu011   =(fTN+fBS-fBN-fTS+fTNE-fBNE-fTSE+fBSE+fTNW-fBNW-fTSW+fBSW) * OORho;
-         doubflo mu210   =(fNE-fSW-fSE+fNW+fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
-         doubflo mu120   =(fNE-fSW+fSE-fNW+fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
-         doubflo mu102   =(fTE-fBW+fBE-fTW+fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
-         doubflo mu111   =(fTNE-fBNE-fTSE+fBSE-fTNW+fBNW+fTSW-fBSW) * OORho;
-         doubflo mu201   =(fTE-fBW-fBE+fTW+fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
-         doubflo mu021   =(fTN-fBS-fBN+fTS+fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
-         doubflo mu012   =(fTN-fBS+fBN-fTS+fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
-         doubflo mu220   =(fNE+fSW+fSE+fNW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         doubflo mu121   =(fTNE-fBNE+fTSE-fBSE-fTNW+fBNW-fTSW+fBSW) * OORho;
-         doubflo mu202   =(fTE+fBW+fBE+fTW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         doubflo mu211   =(fTNE-fBNE-fTSE+fBSE+fTNW-fBNW-fTSW+fBSW) * OORho;
-         doubflo mu112   =(fTNE+fBNE-fTSE-fBSE-fTNW-fBNW+fTSW+fBSW) * OORho;
-         doubflo mu022   =(fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         doubflo mu221   =(fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
-         doubflo mu122   =(fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
-         doubflo mu212   =(fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
-         doubflo mu222   =(fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu200   =(fE+fW+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu020   =(fN+fS+fNE+fSW+fSE+fNW+fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu002   =(fT+fB+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu110   =(fNE-fSE+fSW-fNW+fTNE-fTSE+fBNE-fBSE+fTSW-fTNW+fBSW-fBNW) * OORho;
+         real mu101   =(fTE+fBW-fBE-fTW+fTNE-fBNE+fTSE-fBSE-fTNW+fBNW-fTSW+fBSW) * OORho;
+         real mu011   =(fTN+fBS-fBN-fTS+fTNE-fBNE-fTSE+fBSE+fTNW-fBNW-fTSW+fBSW) * OORho;
+         real mu210   =(fNE-fSW-fSE+fNW+fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
+         real mu120   =(fNE-fSW+fSE-fNW+fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
+         real mu102   =(fTE-fBW+fBE-fTW+fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
+         real mu111   =(fTNE-fBNE-fTSE+fBSE-fTNW+fBNW+fTSW-fBSW) * OORho;
+         real mu201   =(fTE-fBW-fBE+fTW+fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
+         real mu021   =(fTN-fBS-fBN+fTS+fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
+         real mu012   =(fTN-fBS+fBN-fTS+fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
+         real mu220   =(fNE+fSW+fSE+fNW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu121   =(fTNE-fBNE+fTSE-fBSE-fTNW+fBNW-fTSW+fBSW) * OORho;
+         real mu202   =(fTE+fBW+fBE+fTW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu211   =(fTNE-fBNE-fTSE+fBSE+fTNW-fBNW-fTSW+fBSW) * OORho;
+         real mu112   =(fTNE+fBNE-fTSE-fBSE-fTNW-fBNW+fTSW+fBSW) * OORho;
+         real mu022   =(fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu221   =(fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
+         real mu122   =(fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
+         real mu212   =(fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
+         real mu222   =(fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo MzXX,MzYY,MzZZ,MzXY,MzXZ,MzYZ,MzXXY,MzXYY,MzXXZ,MzXZZ,MzYYZ,MzYZZ,MzXYZ,MzXXYY,MzXXZZ,MzYYZZ,MzXXYZ,MzXYYZ,MzXYZZ,MzXXYYZ,MzXXYZZ,MzXYYZZ,MzXXYYZZ;
+         real MzXX,MzYY,MzZZ,MzXY,MzXZ,MzYZ,MzXXY,MzXYY,MzXXZ,MzXZZ,MzYYZ,MzYZZ,MzXYZ,MzXXYY,MzXXZZ,MzYYZZ,MzXXYZ,MzXYYZ,MzXYZZ,MzXXYYZ,MzXXYZZ,MzXYYZZ,MzXXYYZZ;
          {
             //2.
             MzXX      =   mu200-vx2;
@@ -3329,9 +3329,9 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_27(   doubflo omega,
             MzYZ      =   mu011-vyz;
             MzZZ      =   mu002-vz2;
 
-            doubflo pimpmu200 = mu200 + c1o3 * OORho;
-            doubflo pimpmu020 = mu020 + c1o3 * OORho;
-            doubflo pimpmu002 = mu002 + c1o3 * OORho;
+            real pimpmu200 = mu200 + c1o3 * OORho;
+            real pimpmu020 = mu020 + c1o3 * OORho;
+            real pimpmu002 = mu002 + c1o3 * OORho;
 
             //3.
             MzXXY     =    two*vx2y - two*vx*mu110 - vy*pimpmu200 + mu210; 
@@ -3350,9 +3350,9 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_27(   doubflo omega,
             MzXYZZ    =   -three*vxyz2+pimpmu002*vxy+two*vxz*mu011-mu012*vx+two*vyz*mu101-vy*mu102+vz2*mu110-two*vz*mu111+mu112; 
             MzYYZZ    =   -three*vy2z2+pimpmu002*vy2+four*vyz*mu011-two*vy*mu012+vz2*pimpmu020-two*vz*mu021+mu022; 
                              
-            doubflo pimpmu220 = mu220 + c1o9 * OORho;
-            doubflo pimpmu202 = mu202 + c1o9 * OORho;
-            doubflo pimpmu022 = mu022 + c1o9 * OORho;
+            real pimpmu220 = mu220 + c1o9 * OORho;
+            real pimpmu202 = mu202 + c1o9 * OORho;
+            real pimpmu022 = mu022 + c1o9 * OORho;
 
             //5.
             MzXXYYZ   =    four*vx2y2z-four*vxyz*mu110+four*vxy*mu111+ 
@@ -3374,19 +3374,19 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_27(   doubflo omega,
             //               two*(vy*mu212-vy2z*mu201-vxz2*mu120-vyz2*mu210-vxy2*mu102-vx2z*mu021-vx2y*mu012-vx*mu122-vz*mu221); 
          }
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo MXXpMYYpMZZ,MXXmMYY, MXXmMZZ, MXXYpMYZZ,MXXZpMYYZ,MXYYpMXZZ, MXXYmMYZZ,MXXZmMYYZ,MXYYmMXZZ;
+         real MXXpMYYpMZZ,MXXmMYY, MXXmMZZ, MXXYpMYZZ,MXXZpMYYZ,MXYYpMXZZ, MXXYmMYZZ,MXXZmMYYZ,MXYYmMXZZ;
          {
             //coll faktoren:
-            doubflo w1 =  -omega;
-            doubflo w2 = -one;//-omega;
-            doubflo w3 = -one;
-            doubflo w4 = -one;
-            doubflo w5 = -one;
-            doubflo w6 = -one;
-            doubflo w7 = -one;
-            doubflo w8 = -one;
-            doubflo w9 = -one;
-            doubflo w10= -one;
+            real w1 =  -omega;
+            real w2 = -one;//-omega;
+            real w3 = -one;
+            real w4 = -one;
+            real w5 = -one;
+            real w6 = -one;
+            real w7 = -one;
+            real w8 = -one;
+            real w9 = -one;
+            real w10= -one;
 
             ////////lin kombi bilden:
             MXXpMYYpMZZ = MzXX + MzYY + MzZZ;
@@ -3400,9 +3400,9 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_27(   doubflo omega,
             MXYYpMXZZ   =  MzXYY+MzXZZ;
             MXYYmMXZZ   =  MzXYY-MzXZZ;
 
-            doubflo MXXYYppp    = MzXXYY + MzXXZZ + MzYYZZ;
-            doubflo MXXYYpm2p   = MzXXYY - two*MzXXZZ + MzYYZZ;
-            doubflo MXXYYppm2   = MzXXYY + MzXXZZ - two*MzYYZZ;
+            real MXXYYppp    = MzXXYY + MzXXZZ + MzYYZZ;
+            real MXXYYpm2p   = MzXXYY - two*MzXXZZ + MzYYZZ;
+            real MXXYYppm2   = MzXXYY + MzXXZZ - two*MzYYZZ;
 
             //relaxation:
             MXXpMYYpMZZ -= w2*(one-OORho-MXXpMYYpMZZ);
@@ -3601,12 +3601,12 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_27(   doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Casc_SP_MS_Diff_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_Casc_SP_MS_Diff_27(real omega,
                                                         unsigned int* bcMatD,
                                                         unsigned int* neighborX,
                                                         unsigned int* neighborY,
                                                         unsigned int* neighborZ,
-                                                        doubflo* DDStart,
+                                                        real* DDStart,
                                                         int size_Mat,
                                                         bool EvenOrOdd)
 {
@@ -3721,51 +3721,51 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_Diff_27(doubflo omega,
          //unsigned int ktne = k;
          unsigned int kbsw = neighborZ[ksw];
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo fE    =  (D.f[dirE   ])[k  ];//ke
-         doubflo fW    =  (D.f[dirW   ])[kw ];
-         doubflo fN    =  (D.f[dirN   ])[k  ];//kn
-         doubflo fS    =  (D.f[dirS   ])[ks ];
-         doubflo fT    =  (D.f[dirT   ])[k  ];//kt
-         doubflo fB    =  (D.f[dirB   ])[kb ];
-         doubflo fNE   =  (D.f[dirNE  ])[k  ];//kne
-         doubflo fSW   =  (D.f[dirSW  ])[ksw];
-         doubflo fSE   =  (D.f[dirSE  ])[ks ];//kse
-         doubflo fNW   =  (D.f[dirNW  ])[kw ];//knw
-         doubflo fTE   =  (D.f[dirTE  ])[k  ];//kte
-         doubflo fBW   =  (D.f[dirBW  ])[kbw];
-         doubflo fBE   =  (D.f[dirBE  ])[kb ];//kbe
-         doubflo fTW   =  (D.f[dirTW  ])[kw ];//ktw
-         doubflo fTN   =  (D.f[dirTN  ])[k  ];//ktn
-         doubflo fBS   =  (D.f[dirBS  ])[kbs];
-         doubflo fBN   =  (D.f[dirBN  ])[kb ];//kbn
-         doubflo fTS   =  (D.f[dirTS  ])[ks ];//kts
-         doubflo fZERO =  (D.f[dirZERO])[k  ];//kzero
-         doubflo fTNE   = (D.f[dirTNE ])[k  ];//ktne
-         doubflo fTSW   = (D.f[dirTSW ])[ksw];//ktsw
-         doubflo fTSE   = (D.f[dirTSE ])[ks ];//ktse
-         doubflo fTNW   = (D.f[dirTNW ])[kw ];//ktnw
-         doubflo fBNE   = (D.f[dirBNE ])[kb ];//kbne
-         doubflo fBSW   = (D.f[dirBSW ])[kbsw];
-         doubflo fBSE   = (D.f[dirBSE ])[kbs];//kbse
-         doubflo fBNW   = (D.f[dirBNW ])[kbw];//kbnw
+         real fE    =  (D.f[dirE   ])[k  ];//ke
+         real fW    =  (D.f[dirW   ])[kw ];
+         real fN    =  (D.f[dirN   ])[k  ];//kn
+         real fS    =  (D.f[dirS   ])[ks ];
+         real fT    =  (D.f[dirT   ])[k  ];//kt
+         real fB    =  (D.f[dirB   ])[kb ];
+         real fNE   =  (D.f[dirNE  ])[k  ];//kne
+         real fSW   =  (D.f[dirSW  ])[ksw];
+         real fSE   =  (D.f[dirSE  ])[ks ];//kse
+         real fNW   =  (D.f[dirNW  ])[kw ];//knw
+         real fTE   =  (D.f[dirTE  ])[k  ];//kte
+         real fBW   =  (D.f[dirBW  ])[kbw];
+         real fBE   =  (D.f[dirBE  ])[kb ];//kbe
+         real fTW   =  (D.f[dirTW  ])[kw ];//ktw
+         real fTN   =  (D.f[dirTN  ])[k  ];//ktn
+         real fBS   =  (D.f[dirBS  ])[kbs];
+         real fBN   =  (D.f[dirBN  ])[kb ];//kbn
+         real fTS   =  (D.f[dirTS  ])[ks ];//kts
+         real fZERO =  (D.f[dirZERO])[k  ];//kzero
+         real fTNE   = (D.f[dirTNE ])[k  ];//ktne
+         real fTSW   = (D.f[dirTSW ])[ksw];//ktsw
+         real fTSE   = (D.f[dirTSE ])[ks ];//ktse
+         real fTNW   = (D.f[dirTNW ])[kw ];//ktnw
+         real fBNE   = (D.f[dirBNE ])[kb ];//kbne
+         real fBSW   = (D.f[dirBSW ])[kbsw];
+         real fBSE   = (D.f[dirBSE ])[kbs];//kbse
+         real fBNW   = (D.f[dirBNW ])[kbw];//kbnw
          ////////////////////////////////////////////////////////////////////////////////
-         doubflo rho0   =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
-         doubflo rho    =  rho0 + one;
-         doubflo OORho  =  one/rho;
-         doubflo vx     =  (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW) * OORho;
-         doubflo vy     =  (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW) * OORho;
-         doubflo vz     =  (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW) * OORho;
+         real rho0   =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
+         real rho    =  rho0 + one;
+         real OORho  =  one/rho;
+         real vx     =  (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW) * OORho;
+         real vy     =  (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW) * OORho;
+         real vz     =  (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW) * OORho;
 
          //////////////////////////////////////////////////////////////////////////
          //BGK
          //////////////////////////////////////////////////////////////////////////
-         //doubflo drho   =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
-         //doubflo vx1     =  (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW);
-         //doubflo vx2     =  (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW);
-         //doubflo vx3     =  (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW);
+         //real drho   =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
+         //real vx1     =  (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW);
+         //real vx2     =  (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW);
+         //real vx3     =  (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW);
 
 
-         //doubflo cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+         //real cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
          //fZERO = fZERO *(one+(-omega))-(-omega)*   c8over27*  (drho-cusq);
          //fE    = fE    *(one+(-omega))-(-omega)*   c2over27*  (drho+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq);
@@ -3796,55 +3796,55 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_Diff_27(doubflo omega,
          //fTNW  = fTNW  *(one+(-omega))-(-omega)*    c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq);
 
 
-         doubflo vx2    = vx*vx;
-         doubflo vy2    = vy*vy;
-         doubflo vz2    = vz*vz;
-         doubflo vxy    = vx*vy;
-         doubflo vxz    = vx*vz;
-         doubflo vyz    = vy*vz;
-         doubflo vx2y   = vx*vx*vy;
-         doubflo vx2z   = vx*vx*vz;
-         doubflo vy2z   = vy*vy*vz;
-         doubflo vxy2   = vx*vy*vy;
-         doubflo vyz2   = vy*vz*vz;
-         doubflo vxz2   = vx*vz*vz;
-         doubflo vxyz   = vx*vy*vz;
-         doubflo vx2y2  = vx*vx*vy*vy;
-         doubflo vx2z2  = vx*vx*vz*vz;
-         doubflo vy2z2  = vy*vy*vz*vz;
-         doubflo vx2yz  = vx*vx*vy*vz;
-         doubflo vxyz2  = vx*vy*vz*vz;
-         doubflo vxy2z  = vx*vy*vy*vz;
-         doubflo vx2y2z = vx*vx*vy*vy*vz;
-         doubflo vx2yz2 = vx*vx*vy*vz*vz;
-         doubflo vxy2z2 = vx*vy*vy*vz*vz;
-         doubflo vx2y2z2= vx*vx*vy*vy*vz*vz;
+         real vx2    = vx*vx;
+         real vy2    = vy*vy;
+         real vz2    = vz*vz;
+         real vxy    = vx*vy;
+         real vxz    = vx*vz;
+         real vyz    = vy*vz;
+         real vx2y   = vx*vx*vy;
+         real vx2z   = vx*vx*vz;
+         real vy2z   = vy*vy*vz;
+         real vxy2   = vx*vy*vy;
+         real vyz2   = vy*vz*vz;
+         real vxz2   = vx*vz*vz;
+         real vxyz   = vx*vy*vz;
+         real vx2y2  = vx*vx*vy*vy;
+         real vx2z2  = vx*vx*vz*vz;
+         real vy2z2  = vy*vy*vz*vz;
+         real vx2yz  = vx*vx*vy*vz;
+         real vxyz2  = vx*vy*vz*vz;
+         real vxy2z  = vx*vy*vy*vz;
+         real vx2y2z = vx*vx*vy*vy*vz;
+         real vx2yz2 = vx*vx*vy*vz*vz;
+         real vxy2z2 = vx*vy*vy*vz*vz;
+         real vx2y2z2= vx*vx*vy*vy*vz*vz;
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo mu200   =(fE+fW+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         doubflo mu020   =(fN+fS+fNE+fSW+fSE+fNW+fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         doubflo mu002   =(fT+fB+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         doubflo mu110   =(fNE-fSE+fSW-fNW+fTNE-fTSE+fBNE-fBSE+fTSW-fTNW+fBSW-fBNW) * OORho;
-         doubflo mu101   =(fTE+fBW-fBE-fTW+fTNE-fBNE+fTSE-fBSE-fTNW+fBNW-fTSW+fBSW) * OORho;
-         doubflo mu011   =(fTN+fBS-fBN-fTS+fTNE-fBNE-fTSE+fBSE+fTNW-fBNW-fTSW+fBSW) * OORho;
-         doubflo mu210   =(fNE-fSW-fSE+fNW+fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
-         doubflo mu120   =(fNE-fSW+fSE-fNW+fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
-         doubflo mu102   =(fTE-fBW+fBE-fTW+fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
-         doubflo mu111   =(fTNE-fBNE-fTSE+fBSE-fTNW+fBNW+fTSW-fBSW) * OORho;
-         doubflo mu201   =(fTE-fBW-fBE+fTW+fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
-         doubflo mu021   =(fTN-fBS-fBN+fTS+fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
-         doubflo mu012   =(fTN-fBS+fBN-fTS+fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
-         doubflo mu220   =(fNE+fSW+fSE+fNW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         doubflo mu121   =(fTNE-fBNE+fTSE-fBSE-fTNW+fBNW-fTSW+fBSW) * OORho;
-         doubflo mu202   =(fTE+fBW+fBE+fTW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         doubflo mu211   =(fTNE-fBNE-fTSE+fBSE+fTNW-fBNW-fTSW+fBSW) * OORho;
-         doubflo mu112   =(fTNE+fBNE-fTSE-fBSE-fTNW-fBNW+fTSW+fBSW) * OORho;
-         doubflo mu022   =(fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
-         doubflo mu221   =(fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
-         doubflo mu122   =(fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
-         doubflo mu212   =(fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
-         doubflo mu222   =(fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu200   =(fE+fW+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu020   =(fN+fS+fNE+fSW+fSE+fNW+fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu002   =(fT+fB+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu110   =(fNE-fSE+fSW-fNW+fTNE-fTSE+fBNE-fBSE+fTSW-fTNW+fBSW-fBNW) * OORho;
+         real mu101   =(fTE+fBW-fBE-fTW+fTNE-fBNE+fTSE-fBSE-fTNW+fBNW-fTSW+fBSW) * OORho;
+         real mu011   =(fTN+fBS-fBN-fTS+fTNE-fBNE-fTSE+fBSE+fTNW-fBNW-fTSW+fBSW) * OORho;
+         real mu210   =(fNE-fSW-fSE+fNW+fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
+         real mu120   =(fNE-fSW+fSE-fNW+fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
+         real mu102   =(fTE-fBW+fBE-fTW+fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
+         real mu111   =(fTNE-fBNE-fTSE+fBSE-fTNW+fBNW+fTSW-fBSW) * OORho;
+         real mu201   =(fTE-fBW-fBE+fTW+fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
+         real mu021   =(fTN-fBS-fBN+fTS+fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
+         real mu012   =(fTN-fBS+fBN-fTS+fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
+         real mu220   =(fNE+fSW+fSE+fNW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu121   =(fTNE-fBNE+fTSE-fBSE-fTNW+fBNW-fTSW+fBSW) * OORho;
+         real mu202   =(fTE+fBW+fBE+fTW+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu211   =(fTNE-fBNE-fTSE+fBSE+fTNW-fBNW-fTSW+fBSW) * OORho;
+         real mu112   =(fTNE+fBNE-fTSE-fBSE-fTNW-fBNW+fTSW+fBSW) * OORho;
+         real mu022   =(fTN+fBS+fBN+fTS+fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
+         real mu221   =(fTNE-fBNE+fTSE-fBSE+fTNW-fBNW+fTSW-fBSW) * OORho;
+         real mu122   =(fTNE-fTNW+fBNE-fBNW+fTSE-fTSW+fBSE-fBSW) * OORho;
+         real mu212   =(fTNE+fBNE-fTSE-fBSE+fTNW+fBNW-fTSW-fBSW) * OORho;
+         real mu222   =(fTNE+fBNE+fTSE+fBSE+fTNW+fBNW+fTSW+fBSW) * OORho;
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo MzXX,MzYY,MzZZ,MzXY,MzXZ,MzYZ,MzXXY,MzXYY,MzXXZ,MzXZZ,MzYYZ,MzYZZ,MzXYZ,MzXXYY,MzXXZZ,MzYYZZ,MzXXYZ,MzXYYZ,MzXYZZ,MzXXYYZ,MzXXYZZ,MzXYYZZ,MzXXYYZZ;
+         real MzXX,MzYY,MzZZ,MzXY,MzXZ,MzYZ,MzXXY,MzXYY,MzXXZ,MzXZZ,MzYYZ,MzYZZ,MzXYZ,MzXXYY,MzXXZZ,MzYYZZ,MzXXYZ,MzXYYZ,MzXYZZ,MzXXYYZ,MzXXYZZ,MzXYYZZ,MzXXYYZZ;
          {
             //2.
             MzXX      =   mu200-vx2;
@@ -3854,9 +3854,9 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_Diff_27(doubflo omega,
             MzYZ      =   mu011-vyz;
             MzZZ      =   mu002-vz2;
 
-            doubflo pimpmu200 = mu200 + c1o3 * OORho;
-            doubflo pimpmu020 = mu020 + c1o3 * OORho;
-            doubflo pimpmu002 = mu002 + c1o3 * OORho;
+            real pimpmu200 = mu200 + c1o3 * OORho;
+            real pimpmu020 = mu020 + c1o3 * OORho;
+            real pimpmu002 = mu002 + c1o3 * OORho;
 
             //3.
             MzXXY     =    two*vx2y - two*vx*mu110 - vy*pimpmu200 + mu210; 
@@ -3875,9 +3875,9 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_Diff_27(doubflo omega,
             MzXYZZ    =   -three*vxyz2+pimpmu002*vxy+two*vxz*mu011-mu012*vx+two*vyz*mu101-vy*mu102+vz2*mu110-two*vz*mu111+mu112; 
             MzYYZZ    =   -three*vy2z2+pimpmu002*vy2+four*vyz*mu011-two*vy*mu012+vz2*pimpmu020-two*vz*mu021+mu022; 
 
-            doubflo pimpmu220 = mu220 + c1o9 * OORho;
-            doubflo pimpmu202 = mu202 + c1o9 * OORho;
-            doubflo pimpmu022 = mu022 + c1o9 * OORho;
+            real pimpmu220 = mu220 + c1o9 * OORho;
+            real pimpmu202 = mu202 + c1o9 * OORho;
+            real pimpmu022 = mu022 + c1o9 * OORho;
 
             //5.
             MzXXYYZ   =    four*vx2y2z-four*vxyz*mu110+four*vxy*mu111+ 
@@ -3896,19 +3896,19 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_Diff_27(doubflo omega,
                two*(vy*mu212-vy2z*mu201-vxz2*mu120-vyz2*mu210-vxy2*mu102-vx2z*mu021-vx2y*mu012-vx*mu122-vz*mu221); 
          }
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo MXXpMYYpMZZ,MXXmMYY, MXXmMZZ, MXXYpMYZZ,MXXZpMYYZ,MXYYpMXZZ, MXXYmMYZZ,MXXZmMYYZ,MXYYmMXZZ;
+         real MXXpMYYpMZZ,MXXmMYY, MXXmMZZ, MXXYpMYZZ,MXXZpMYYZ,MXYYpMXZZ, MXXYmMYZZ,MXXZmMYYZ,MXYYmMXZZ;
          {
             //coll faktoren:
-            doubflo w1 =  -omega;
-            doubflo w2 = -one;//-omega;
-            doubflo w3 = -one;
-            doubflo w4 = -one;
-            doubflo w5 = -one;
-            doubflo w6 = -one;
-            doubflo w7 = -one;
-            doubflo w8 = -one;
-            doubflo w9 = -one;
-            doubflo w10= -one;
+            real w1 =  -omega;
+            real w2 = -one;//-omega;
+            real w3 = -one;
+            real w4 = -one;
+            real w5 = -one;
+            real w6 = -one;
+            real w7 = -one;
+            real w8 = -one;
+            real w9 = -one;
+            real w10= -one;
 
             ////////lin kombi bilden:
             MXXpMYYpMZZ = MzXX + MzYY + MzZZ;
@@ -3922,9 +3922,9 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_Diff_27(doubflo omega,
             MXYYpMXZZ   =  MzXYY+MzXZZ;
             MXYYmMXZZ   =  MzXYY-MzXZZ;
 
-            doubflo MXXYYppp    = MzXXYY + MzXXZZ + MzYYZZ;
-            doubflo MXXYYpm2p   = MzXXYY - two*MzXXZZ + MzYYZZ;
-            doubflo MXXYYppm2   = MzXXYY + MzXXZZ - two*MzYYZZ;
+            real MXXYYppp    = MzXXYY + MzXXZZ + MzYYZZ;
+            real MXXYYpm2p   = MzXXYY - two*MzXXZZ + MzYYZZ;
+            real MXXYYppm2   = MzXXYY + MzXXZZ - two*MzYYZZ;
 
             //relaxation:
             MXXpMYYpMZZ -= w2*(one-OORho-MXXpMYYpMZZ);
@@ -4123,12 +4123,12 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_Diff_27(doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Casc_SP_27(  doubflo omega,
+extern "C" __global__ void LB_Kernel_Casc_SP_27(  real omega,
                                                   unsigned int* bcMatD,
                                                   unsigned int* neighborX,
                                                   unsigned int* neighborY,
                                                   unsigned int* neighborZ,
-                                                  doubflo* DDStart,
+                                                  real* DDStart,
                                                   int size_Mat,
                                                   bool EvenOrOdd)
 {
@@ -4271,7 +4271,7 @@ extern "C" __global__ void LB_Kernel_Casc_SP_27(  doubflo omega,
        //unsigned int ktne = k;
        //unsigned int kbsw = k + nxny + nx + 1;
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-       doubflo f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO, f_TNE,f_TNW,f_TSE,f_TSW, f_BNE,f_BNW,f_BSE,f_BSW;
+       real f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO, f_TNE,f_TNW,f_TSE,f_TSW, f_BNE,f_BNW,f_BSE,f_BSW;
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        f_E    =  (D.f[dirE   ])[ke]+c2over27;
        f_W    =  (D.f[dirW   ])[kw]+c2over27;
@@ -4306,17 +4306,17 @@ extern "C" __global__ void LB_Kernel_Casc_SP_27(  doubflo omega,
        {
           {
          //    /////////////////////////version 13.04.
-         //   doubflo drho     = f_ZERO+f_E +f_W +f_N +f_S +f_T +f_B +f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TN+f_BS+f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW+ f_BNE+f_BSW+f_BSE+f_BNW;
-         //   doubflo vx1     =  f_E -f_W +f_NE-f_SW+f_SE-f_NW+f_TE-f_BW+f_BE-f_TW+ f_TNE-f_TSW+f_TSE-f_TNW+ f_BNE-f_BSW+f_BSE-f_BNW;
-         //   doubflo vx2     =  f_N -f_S +f_NE-f_SW-f_SE+f_NW+f_TN-f_BS+f_BN-f_TS+ f_TNE-f_TSW-f_TSE+f_TNW+ f_BNE-f_BSW-f_BSE+f_BNW;
-         //   doubflo vx3     =  f_T -f_B +f_TE-f_BW-f_BE+f_TW+f_TN-f_BS-f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW- f_BNE-f_BSW-f_BSE-f_BNW;
+         //   real drho     = f_ZERO+f_E +f_W +f_N +f_S +f_T +f_B +f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TN+f_BS+f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW+ f_BNE+f_BSW+f_BSE+f_BNW;
+         //   real vx1     =  f_E -f_W +f_NE-f_SW+f_SE-f_NW+f_TE-f_BW+f_BE-f_TW+ f_TNE-f_TSW+f_TSE-f_TNW+ f_BNE-f_BSW+f_BSE-f_BNW;
+         //   real vx2     =  f_N -f_S +f_NE-f_SW-f_SE+f_NW+f_TN-f_BS+f_BN-f_TS+ f_TNE-f_TSW-f_TSE+f_TNW+ f_BNE-f_BSW-f_BSE+f_BNW;
+         //   real vx3     =  f_T -f_B +f_TE-f_BW-f_BE+f_TW+f_TN-f_BS-f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW- f_BNE-f_BSW-f_BSE-f_BNW;
          ////   vx1=vx1/(drho); vx2=vx2/(drho); vx3=vx3/(drho);
          //   //////////////////////////////////////////////////////////////////////////
          //   //BGK
          //   //////////////////////////////////////////////////////////////////////////
 
 
-         //   doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+         //   real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
          //   f_ZERO = f_ZERO *(one+(-omega))-(-omega)*   c8over27*  (drho-cu_sq);
          //   f_E    = f_E    *(one+(-omega))-(-omega)*   c2over27*  (drho+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
@@ -4347,14 +4347,14 @@ extern "C" __global__ void LB_Kernel_Casc_SP_27(  doubflo omega,
          //   f_TNW  = f_TNW  *(one+(-omega))-(-omega)*    c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
 
             ///////////////////////version 13.04.
-            doubflo rho   =  f_ZERO+f_E +f_W +f_N +f_S +f_T +f_B +f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TN+f_BS+f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW+ f_BNE+f_BSW+f_BSE+f_BNW;
-            //doubflo rho    =  rho0 + one;
-            doubflo vx     =  f_E -f_W +f_NE-f_SW+f_SE-f_NW+f_TE-f_BW+f_BE-f_TW+ f_TNE-f_TSW+f_TSE-f_TNW+ f_BNE-f_BSW+f_BSE-f_BNW;
-            doubflo vy     =  f_N -f_S +f_NE-f_SW-f_SE+f_NW+f_TN-f_BS+f_BN-f_TS+ f_TNE-f_TSW-f_TSE+f_TNW+ f_BNE-f_BSW-f_BSE+f_BNW;
-            doubflo vz     =  f_T -f_B +f_TE-f_BW-f_BE+f_TW+f_TN-f_BS-f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW- f_BNE-f_BSW-f_BSE-f_BNW;
+            real rho   =  f_ZERO+f_E +f_W +f_N +f_S +f_T +f_B +f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TN+f_BS+f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW+ f_BNE+f_BSW+f_BSE+f_BNW;
+            //real rho    =  rho0 + one;
+            real vx     =  f_E -f_W +f_NE-f_SW+f_SE-f_NW+f_TE-f_BW+f_BE-f_TW+ f_TNE-f_TSW+f_TSE-f_TNW+ f_BNE-f_BSW+f_BSE-f_BNW;
+            real vy     =  f_N -f_S +f_NE-f_SW-f_SE+f_NW+f_TN-f_BS+f_BN-f_TS+ f_TNE-f_TSW-f_TSE+f_TNW+ f_BNE-f_BSW-f_BSE+f_BNW;
+            real vz     =  f_T -f_B +f_TE-f_BW-f_BE+f_TW+f_TN-f_BS-f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW- f_BNE-f_BSW-f_BSE-f_BNW;
             vx=vx/(rho); vy=vy/(rho); vz=vz/(rho);
 
-            doubflo mu[3][3][3];
+            real mu[3][3][3];
 
             mu[2][0][0]=(f_E+f_W+f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TNE+f_BNE+f_TSE+f_BSE+f_TNW+f_BNW+f_TSW+f_BSW)/(rho);//+(c1o3);
             mu[0][2][0]=(f_N+f_S+f_NE+f_SW+f_SE+f_NW+f_TN+f_BS+f_BN+f_TS+f_TNE+f_BNE+f_TSE+f_BSE+f_TNW+f_BNW+f_TSW+f_BSW)/(rho);//+(c1o3);
@@ -4384,13 +4384,13 @@ extern "C" __global__ void LB_Kernel_Casc_SP_27(  doubflo omega,
             mu[0][1][0]=vy;
             mu[0][0][1]=vz;
 
-            doubflo M_zXX=zero;      doubflo M_zYY=zero;      doubflo M_zZZ=zero;      doubflo M_zXY=zero;     doubflo M_zXZ=zero;   doubflo M_zYZ=zero;
-            doubflo M_zXXY=zero;     doubflo M_zXYY=zero;     doubflo M_zXXZ=zero;     doubflo M_zXZZ=zero;    doubflo M_zYYZ=zero;  doubflo M_zYZZ=zero;  doubflo M_zXYZ=zero;
-            doubflo M_zXXYY=zero;    doubflo M_zXXZZ=zero;    doubflo M_zYYZZ=zero;    doubflo M_zXXYZ=zero;   doubflo M_zXYYZ=zero; doubflo M_zXYZZ=zero;
-            doubflo M_zXXYYZ=zero;   doubflo M_zXXYZZ=zero;   doubflo M_zXYYZZ=zero;   doubflo M_zXXYYZZ=zero;
-            doubflo M_zXYeq=zero;    doubflo M_zXZeq=zero;    doubflo M_zYZeq=zero;    doubflo M_zXYZeq=zero;
-            doubflo M_zXXYZeq=zero;  doubflo M_zXYYZeq=zero;  doubflo M_zXYZZeq=zero;
-            doubflo M_zXXYYZeq=zero; doubflo M_zXXYZZeq=zero; doubflo M_zXYYZZeq=zero; doubflo M_zXXYYZZeq=zero;
+            real M_zXX=zero;      real M_zYY=zero;      real M_zZZ=zero;      real M_zXY=zero;     real M_zXZ=zero;   real M_zYZ=zero;
+            real M_zXXY=zero;     real M_zXYY=zero;     real M_zXXZ=zero;     real M_zXZZ=zero;    real M_zYYZ=zero;  real M_zYZZ=zero;  real M_zXYZ=zero;
+            real M_zXXYY=zero;    real M_zXXZZ=zero;    real M_zYYZZ=zero;    real M_zXXYZ=zero;   real M_zXYYZ=zero; real M_zXYZZ=zero;
+            real M_zXXYYZ=zero;   real M_zXXYZZ=zero;   real M_zXYYZZ=zero;   real M_zXXYYZZ=zero;
+            real M_zXYeq=zero;    real M_zXZeq=zero;    real M_zYZeq=zero;    real M_zXYZeq=zero;
+            real M_zXXYZeq=zero;  real M_zXYYZeq=zero;  real M_zXYZZeq=zero;
+            real M_zXXYYZeq=zero; real M_zXXYZZeq=zero; real M_zXYYZZeq=zero; real M_zXXYYZZeq=zero;
 
             M_zXXYYZZ= -five*mu[0][0][1] *     mu[0][0][1] *     mu[0][1][0] *     mu[0][1][0] *     mu[1][0][0] * 
                              mu[1][0][0] +     mu[0][0][2] *     mu[0][1][0] *     mu[0][1][0] *     mu[1][0][0] * 
@@ -4496,11 +4496,11 @@ extern "C" __global__ void LB_Kernel_Casc_SP_27(  doubflo omega,
             M_zXYYZeq=zero;
             M_zXYZZeq=zero;
 
-            doubflo MXXpMYYpMZZ,MXXmMYY, MXXmMZZ, MXXYpMYZZ,MXXZpMYYZ,MXYYpMXZZ, MXXYmMYZZ,MXXZmMYYZ,MXYYmMXZZ, MXXYYppp,MXXYYpm2p, MXXYYppm2;
-            doubflo MXXpMYYpMZZeq,MXXmMYYeq, MXXmMZZeq, MXXYpMYZZeq,MXXZpMYYZeq,MXYYpMXZZeq, MXXYmMYZZeq,MXXZmMYYZeq,MXYYmMXZZeq, MXXYYpppeq,MXXYYpm2peq, MXXYYppm2eq;
+            real MXXpMYYpMZZ,MXXmMYY, MXXmMZZ, MXXYpMYZZ,MXXZpMYYZ,MXYYpMXZZ, MXXYmMYZZ,MXXZmMYYZ,MXYYmMXZZ, MXXYYppp,MXXYYpm2p, MXXYYppm2;
+            real MXXpMYYpMZZeq,MXXmMYYeq, MXXmMZZeq, MXXYpMYZZeq,MXXZpMYYZeq,MXYYpMXZZeq, MXXYmMYZZeq,MXXZmMYYZeq,MXYYmMXZZeq, MXXYYpppeq,MXXYYpm2peq, MXXYYppm2eq;
 
             //coll faktoren:
-            doubflo w1,w2,w3,w4,w5,w6,w7,w8,w9,w10;
+            real w1,w2,w3,w4,w5,w6,w7,w8,w9,w10;
             w2=-one;//-omega;
             w7=-one;
             w9=-one;
@@ -4668,7 +4668,7 @@ extern "C" __global__ void LB_Kernel_Casc_SP_27(  doubflo omega,
               M_zXXZZ = -c1o3* MXXYYpm2p + c1o3* MXXYYppp;
               M_zYYZZ = -c1o3* MXXYYppm2 + c1o3* MXXYYppp;
             }
-            //doubflo forcingX1=1.11986e-8;//1.41342e-8;//5.48288e-9;//<-96//1.03093e-8;//1.59178e-8;//1.6256e-8; 
+            //real forcingX1=1.11986e-8;//1.41342e-8;//5.48288e-9;//<-96//1.03093e-8;//1.59178e-8;//1.6256e-8; 
 
             //mu[1][0][0]+=forcingX1;
 
@@ -4815,12 +4815,12 @@ extern "C" __global__ void LB_Kernel_Casc_SP_27(  doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Casc27(doubflo omega,
+extern "C" __global__ void LB_Kernel_Casc27(real omega,
                                             unsigned int* bcMatD,
                                             unsigned int* neighborX,
                                             unsigned int* neighborY,
                                             unsigned int* neighborZ,
-                                            doubflo* DDStart,
+                                            real* DDStart,
                                             int size_Mat,
                                             bool EvenOrOdd)
 {
@@ -4967,7 +4967,7 @@ extern "C" __global__ void LB_Kernel_Casc27(doubflo omega,
       //unsigned int ktne = k;
       //unsigned int kbsw = k + nxny + nx + 1;
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO, f_TNE,f_TNW,f_TSE,f_TSW, f_BNE,f_BNW,f_BSE,f_BSW;
+      real f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO, f_TNE,f_TNW,f_TSE,f_TSW, f_BNE,f_BNW,f_BSE,f_BSW;
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       f_E    =  (D.f[dirE   ])[ke]+c2over27;
       f_W    =  (D.f[dirW   ])[kw]+c2over27;
@@ -5002,17 +5002,17 @@ extern "C" __global__ void LB_Kernel_Casc27(doubflo omega,
       {
          {
             //    /////////////////////////version 13.04.
-            //   doubflo drho     = f_ZERO+f_E +f_W +f_N +f_S +f_T +f_B +f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TN+f_BS+f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW+ f_BNE+f_BSW+f_BSE+f_BNW;
-            //   doubflo vx1     =  f_E -f_W +f_NE-f_SW+f_SE-f_NW+f_TE-f_BW+f_BE-f_TW+ f_TNE-f_TSW+f_TSE-f_TNW+ f_BNE-f_BSW+f_BSE-f_BNW;
-            //   doubflo vx2     =  f_N -f_S +f_NE-f_SW-f_SE+f_NW+f_TN-f_BS+f_BN-f_TS+ f_TNE-f_TSW-f_TSE+f_TNW+ f_BNE-f_BSW-f_BSE+f_BNW;
-            //   doubflo vx3     =  f_T -f_B +f_TE-f_BW-f_BE+f_TW+f_TN-f_BS-f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW- f_BNE-f_BSW-f_BSE-f_BNW;
+            //   real drho     = f_ZERO+f_E +f_W +f_N +f_S +f_T +f_B +f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TN+f_BS+f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW+ f_BNE+f_BSW+f_BSE+f_BNW;
+            //   real vx1     =  f_E -f_W +f_NE-f_SW+f_SE-f_NW+f_TE-f_BW+f_BE-f_TW+ f_TNE-f_TSW+f_TSE-f_TNW+ f_BNE-f_BSW+f_BSE-f_BNW;
+            //   real vx2     =  f_N -f_S +f_NE-f_SW-f_SE+f_NW+f_TN-f_BS+f_BN-f_TS+ f_TNE-f_TSW-f_TSE+f_TNW+ f_BNE-f_BSW-f_BSE+f_BNW;
+            //   real vx3     =  f_T -f_B +f_TE-f_BW-f_BE+f_TW+f_TN-f_BS-f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW- f_BNE-f_BSW-f_BSE-f_BNW;
             ////   vx1=vx1/(drho); vx2=vx2/(drho); vx3=vx3/(drho);
             //   //////////////////////////////////////////////////////////////////////////
             //   //BGK
             //   //////////////////////////////////////////////////////////////////////////
 
 
-            //   doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+            //   real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
             //   f_ZERO = f_ZERO *(one+(-omega))-(-omega)*   c8over27*  (drho-cu_sq);
             //   f_E    = f_E    *(one+(-omega))-(-omega)*   c2over27*  (drho+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
@@ -5043,14 +5043,14 @@ extern "C" __global__ void LB_Kernel_Casc27(doubflo omega,
             //   f_TNW  = f_TNW  *(one+(-omega))-(-omega)*    c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);
 
             ///////////////////////version 13.04.
-            doubflo rho   =  f_ZERO+f_E +f_W +f_N +f_S +f_T +f_B +f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TN+f_BS+f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW+ f_BNE+f_BSW+f_BSE+f_BNW;
-            //doubflo rho    =  rho0 + one;
-            doubflo vx     =  f_E -f_W +f_NE-f_SW+f_SE-f_NW+f_TE-f_BW+f_BE-f_TW+ f_TNE-f_TSW+f_TSE-f_TNW+ f_BNE-f_BSW+f_BSE-f_BNW;
-            doubflo vy     =  f_N -f_S +f_NE-f_SW-f_SE+f_NW+f_TN-f_BS+f_BN-f_TS+ f_TNE-f_TSW-f_TSE+f_TNW+ f_BNE-f_BSW-f_BSE+f_BNW;
-            doubflo vz     =  f_T -f_B +f_TE-f_BW-f_BE+f_TW+f_TN-f_BS-f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW- f_BNE-f_BSW-f_BSE-f_BNW;
+            real rho   =  f_ZERO+f_E +f_W +f_N +f_S +f_T +f_B +f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TN+f_BS+f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW+ f_BNE+f_BSW+f_BSE+f_BNW;
+            //real rho    =  rho0 + one;
+            real vx     =  f_E -f_W +f_NE-f_SW+f_SE-f_NW+f_TE-f_BW+f_BE-f_TW+ f_TNE-f_TSW+f_TSE-f_TNW+ f_BNE-f_BSW+f_BSE-f_BNW;
+            real vy     =  f_N -f_S +f_NE-f_SW-f_SE+f_NW+f_TN-f_BS+f_BN-f_TS+ f_TNE-f_TSW-f_TSE+f_TNW+ f_BNE-f_BSW-f_BSE+f_BNW;
+            real vz     =  f_T -f_B +f_TE-f_BW-f_BE+f_TW+f_TN-f_BS-f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW- f_BNE-f_BSW-f_BSE-f_BNW;
             vx=vx/(rho); vy=vy/(rho); vz=vz/(rho);
 
-            doubflo mu[3][3][3];
+            real mu[3][3][3];
 
             mu[2][0][0]=(f_E+f_W+f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TNE+f_BNE+f_TSE+f_BSE+f_TNW+f_BNW+f_TSW+f_BSW)/(rho);//+(c1o3);
             mu[0][2][0]=(f_N+f_S+f_NE+f_SW+f_SE+f_NW+f_TN+f_BS+f_BN+f_TS+f_TNE+f_BNE+f_TSE+f_BSE+f_TNW+f_BNW+f_TSW+f_BSW)/(rho);//+(c1o3);
@@ -5080,13 +5080,13 @@ extern "C" __global__ void LB_Kernel_Casc27(doubflo omega,
             mu[0][1][0]=vy;
             mu[0][0][1]=vz;
 
-            doubflo M_zXX=zero;      doubflo M_zYY=zero;      doubflo M_zZZ=zero;      doubflo M_zXY=zero;     doubflo M_zXZ=zero;   doubflo M_zYZ=zero;
-            doubflo M_zXXY=zero;     doubflo M_zXYY=zero;     doubflo M_zXXZ=zero;     doubflo M_zXZZ=zero;    doubflo M_zYYZ=zero;  doubflo M_zYZZ=zero;  doubflo M_zXYZ=zero;
-            doubflo M_zXXYY=zero;    doubflo M_zXXZZ=zero;    doubflo M_zYYZZ=zero;    doubflo M_zXXYZ=zero;   doubflo M_zXYYZ=zero; doubflo M_zXYZZ=zero;
-            doubflo M_zXXYYZ=zero;   doubflo M_zXXYZZ=zero;   doubflo M_zXYYZZ=zero;   doubflo M_zXXYYZZ=zero;
-            doubflo M_zXYeq=zero;    doubflo M_zXZeq=zero;    doubflo M_zYZeq=zero;    doubflo M_zXYZeq=zero;
-            doubflo M_zXXYZeq=zero;  doubflo M_zXYYZeq=zero;  doubflo M_zXYZZeq=zero;
-            doubflo M_zXXYYZeq=zero; doubflo M_zXXYZZeq=zero; doubflo M_zXYYZZeq=zero; doubflo M_zXXYYZZeq=zero;
+            real M_zXX=zero;      real M_zYY=zero;      real M_zZZ=zero;      real M_zXY=zero;     real M_zXZ=zero;   real M_zYZ=zero;
+            real M_zXXY=zero;     real M_zXYY=zero;     real M_zXXZ=zero;     real M_zXZZ=zero;    real M_zYYZ=zero;  real M_zYZZ=zero;  real M_zXYZ=zero;
+            real M_zXXYY=zero;    real M_zXXZZ=zero;    real M_zYYZZ=zero;    real M_zXXYZ=zero;   real M_zXYYZ=zero; real M_zXYZZ=zero;
+            real M_zXXYYZ=zero;   real M_zXXYZZ=zero;   real M_zXYYZZ=zero;   real M_zXXYYZZ=zero;
+            real M_zXYeq=zero;    real M_zXZeq=zero;    real M_zYZeq=zero;    real M_zXYZeq=zero;
+            real M_zXXYZeq=zero;  real M_zXYYZeq=zero;  real M_zXYZZeq=zero;
+            real M_zXXYYZeq=zero; real M_zXXYZZeq=zero; real M_zXYYZZeq=zero; real M_zXXYYZZeq=zero;
 
             M_zXXYYZZ=  -five*mu[0][0][1] *     mu[0][0][1] *     mu[0][1][0] *     mu[0][1][0] *     mu[1][0][0] * 
                mu[1][0][0] +     mu[0][0][2] *     mu[0][1][0] *     mu[0][1][0] *     mu[1][0][0] * 
@@ -5192,11 +5192,11 @@ extern "C" __global__ void LB_Kernel_Casc27(doubflo omega,
             M_zXYYZeq=zero;
             M_zXYZZeq=zero;
 
-            doubflo MXXpMYYpMZZ,MXXmMYY, MXXmMZZ, MXXYpMYZZ,MXXZpMYYZ,MXYYpMXZZ, MXXYmMYZZ,MXXZmMYYZ,MXYYmMXZZ, MXXYYppp,MXXYYpm2p, MXXYYppm2;
-            doubflo MXXpMYYpMZZeq,MXXmMYYeq, MXXmMZZeq, MXXYpMYZZeq,MXXZpMYYZeq,MXYYpMXZZeq, MXXYmMYZZeq,MXXZmMYYZeq,MXYYmMXZZeq, MXXYYpppeq,MXXYYpm2peq, MXXYYppm2eq;
+            real MXXpMYYpMZZ,MXXmMYY, MXXmMZZ, MXXYpMYZZ,MXXZpMYYZ,MXYYpMXZZ, MXXYmMYZZ,MXXZmMYYZ,MXYYmMXZZ, MXXYYppp,MXXYYpm2p, MXXYYppm2;
+            real MXXpMYYpMZZeq,MXXmMYYeq, MXXmMZZeq, MXXYpMYZZeq,MXXZpMYYZeq,MXYYpMXZZeq, MXXYmMYZZeq,MXXZmMYYZeq,MXYYmMXZZeq, MXXYYpppeq,MXXYYpm2peq, MXXYYppm2eq;
 
             //coll faktoren:
-            doubflo w1,w2,w3,w4,w5,w6,w7,w8,w9,w10;
+            real w1,w2,w3,w4,w5,w6,w7,w8,w9,w10;
             w2=-one;//-omega;
             w7=-one;
             w9=-one;
@@ -5364,7 +5364,7 @@ extern "C" __global__ void LB_Kernel_Casc27(doubflo omega,
                M_zXXZZ = -c1o3* MXXYYpm2p + c1o3* MXXYYppp;
                M_zYYZZ = -c1o3* MXXYYppm2 + c1o3* MXXYYppp;
             }
-            //doubflo forcingX1=1.11986e-8;//1.41342e-8;//5.48288e-9;//<-96//1.03093e-8;//1.59178e-8;//1.6256e-8; 
+            //real forcingX1=1.11986e-8;//1.41342e-8;//5.48288e-9;//<-96//1.03093e-8;//1.59178e-8;//1.6256e-8; 
 
             //mu[1][0][0]+=forcingX1;
 
diff --git a/src/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp b/src/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp
new file mode 100644
index 000000000..208db9ccb
--- /dev/null
+++ b/src/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp
@@ -0,0 +1,505 @@
+#include "CudaMemoryManager.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include <Parameter/Parameter.h>
+
+void CudaMemoryManager::cudaAllocCoord(int lev)
+{
+	//Host
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->coordX_SP      ), parameter->getParH(lev)->mem_size_real_SP  ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->coordY_SP      ), parameter->getParH(lev)->mem_size_real_SP  ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->coordZ_SP      ), parameter->getParH(lev)->mem_size_real_SP  ));
+	//Device (spinning ship)
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->coordX_SP      ), parameter->getParH(lev)->mem_size_real_SP  ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->coordY_SP      ), parameter->getParH(lev)->mem_size_real_SP  ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->coordZ_SP      ), parameter->getParH(lev)->mem_size_real_SP  ));
+	//////////////////////////////////////////////////////////////////////////
+	double tmp = 3. * (double)parameter->getParH(lev)->mem_size_real_SP;
+	parameter->setMemsizeGPU(tmp, false);
+}
+void CudaMemoryManager::cudaCopyCoord(int lev)
+{
+	//copy host to device
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->coordX_SP,  parameter->getParH(lev)->coordX_SP,  parameter->getParH(lev)->mem_size_real_SP     , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->coordY_SP,  parameter->getParH(lev)->coordY_SP,  parameter->getParH(lev)->mem_size_real_SP     , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->coordZ_SP,  parameter->getParH(lev)->coordZ_SP,  parameter->getParH(lev)->mem_size_real_SP     , cudaMemcpyHostToDevice));
+}
+void CudaMemoryManager::cudaFreeCoord(int lev)
+{
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->coordX_SP   ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->coordY_SP   ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->coordZ_SP   ));
+}
+//print
+void CudaMemoryManager::cudaCopyDataToHost(int lev)
+{
+	checkCudaErrors( cudaMemcpy(parameter->getParH(lev)->vx_SP   , parameter->getParD(lev)->vx_SP   , parameter->getParH(lev)->mem_size_real_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parameter->getParH(lev)->vy_SP   , parameter->getParD(lev)->vy_SP   , parameter->getParH(lev)->mem_size_real_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parameter->getParH(lev)->vz_SP   , parameter->getParD(lev)->vz_SP   , parameter->getParH(lev)->mem_size_real_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parameter->getParH(lev)->rho_SP  , parameter->getParD(lev)->rho_SP  , parameter->getParH(lev)->mem_size_real_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parameter->getParH(lev)->press_SP, parameter->getParD(lev)->press_SP, parameter->getParH(lev)->mem_size_real_SP , cudaMemcpyDeviceToHost));
+}
+//sparse
+void CudaMemoryManager::cudaAllocSP(int lev)
+{
+	//Host
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->geoSP           ), parameter->getParH(lev)->mem_size_int_SP    ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->neighborX_SP    ), parameter->getParH(lev)->mem_size_int_SP    ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->neighborY_SP    ), parameter->getParH(lev)->mem_size_int_SP    ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->neighborZ_SP    ), parameter->getParH(lev)->mem_size_int_SP    ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->rho_SP          ), parameter->getParH(lev)->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->vx_SP           ), parameter->getParH(lev)->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->vy_SP           ), parameter->getParH(lev)->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->vz_SP           ), parameter->getParH(lev)->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->press_SP        ), parameter->getParH(lev)->mem_size_real_SP));
+	//Device						 
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->geoSP               ), parameter->getParD(lev)->mem_size_int_SP    ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->neighborX_SP        ), parameter->getParD(lev)->mem_size_int_SP    ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->neighborY_SP        ), parameter->getParD(lev)->mem_size_int_SP    ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->neighborZ_SP        ), parameter->getParD(lev)->mem_size_int_SP    ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->rho_SP              ), parameter->getParD(lev)->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->vx_SP               ), parameter->getParD(lev)->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->vy_SP               ), parameter->getParD(lev)->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->vz_SP               ), parameter->getParD(lev)->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->press_SP            ), parameter->getParD(lev)->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->d0SP.f[0]           ), (unsigned long long)parameter->getD3Qxx()*(unsigned long long)parameter->getParD(lev)->mem_size_real_SP));
+	//////////////////////////////////////////////////////////////////////////
+	double tmp = 4. * (double)parameter->getParH(lev)->mem_size_int_SP + 5. * (double)parameter->getParH(lev)->mem_size_real_SP + (double)parameter->getD3Qxx() * (double)parameter->getParH(lev)->mem_size_real_SP;
+	parameter->setMemsizeGPU(tmp, false);
+}
+void CudaMemoryManager::cudaCopySP(int lev)
+{
+	//copy host to device
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->geoSP       ,  parameter->getParH(lev)->geoSP       ,  parameter->getParH(lev)->mem_size_int_SP     , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->neighborX_SP,  parameter->getParH(lev)->neighborX_SP,  parameter->getParH(lev)->mem_size_int_SP     , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->neighborY_SP,  parameter->getParH(lev)->neighborY_SP,  parameter->getParH(lev)->mem_size_int_SP     , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->neighborZ_SP,  parameter->getParH(lev)->neighborZ_SP,  parameter->getParH(lev)->mem_size_int_SP     , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->rho_SP      ,  parameter->getParH(lev)->rho_SP      ,  parameter->getParH(lev)->mem_size_real_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->vx_SP       ,  parameter->getParH(lev)->vx_SP       ,  parameter->getParH(lev)->mem_size_real_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->vy_SP       ,  parameter->getParH(lev)->vy_SP       ,  parameter->getParH(lev)->mem_size_real_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->vz_SP       ,  parameter->getParH(lev)->vz_SP       ,  parameter->getParH(lev)->mem_size_real_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->press_SP    ,  parameter->getParH(lev)->press_SP    ,  parameter->getParH(lev)->mem_size_real_SP , cudaMemcpyHostToDevice));
+}
+void CudaMemoryManager::cudaFreeSP(int lev)
+{
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->geoSP       ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->vx_SP       ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->vy_SP       ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->vz_SP       ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->rho_SP      ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->press_SP    ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->neighborX_SP));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->neighborY_SP));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->neighborZ_SP));
+}
+//Velo
+void CudaMemoryManager::cudaAllocVeloBC(int lev)
+{
+	unsigned int mem_size_inflow_Q_k = sizeof(int)*parameter->getParH(lev)->Qinflow.kQ;
+	unsigned int mem_size_inflow_Q_q = sizeof(real)*parameter->getParH(lev)->Qinflow.kQ;
+
+	//Host
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->Qinflow.q27[0]),  parameter->getD3Qxx()*mem_size_inflow_Q_q ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->Qinflow.k),                  mem_size_inflow_Q_k ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->Qinflow.Vx),                 mem_size_inflow_Q_q ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->Qinflow.Vy),                 mem_size_inflow_Q_q ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->Qinflow.Vz),                 mem_size_inflow_Q_q ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->Qinflow.deltaVz),            mem_size_inflow_Q_q ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->Qinflow.RhoBC),              mem_size_inflow_Q_q ));
+
+	//Device
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->Qinflow.q27[0]),      parameter->getD3Qxx()*mem_size_inflow_Q_q ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->Qinflow.k),                      mem_size_inflow_Q_k ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->Qinflow.Vx),                     mem_size_inflow_Q_q ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->Qinflow.Vy),                     mem_size_inflow_Q_q ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->Qinflow.Vz),                     mem_size_inflow_Q_q ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->Qinflow.deltaVz),                mem_size_inflow_Q_q ));
+
+	//////////////////////////////////////////////////////////////////////////
+	double tmp = (double)mem_size_inflow_Q_k + 4. * (double)mem_size_inflow_Q_q + (double)parameter->getD3Qxx() * (double)mem_size_inflow_Q_q;
+    parameter->setMemsizeGPU(tmp, false);
+}
+void CudaMemoryManager::cudaCopyVeloBC(int lev)
+{
+	unsigned int mem_size_inflow_Q_k = sizeof(int)*parameter->getParH(lev)->Qinflow.kQ;
+	unsigned int mem_size_inflow_Q_q = sizeof(real)*parameter->getParH(lev)->Qinflow.kQ;
+
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->Qinflow.q27[0],  parameter->getParH(lev)->Qinflow.q27[0], parameter->getD3Qxx()* mem_size_inflow_Q_q,  cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->Qinflow.k,       parameter->getParH(lev)->Qinflow.k,                  mem_size_inflow_Q_k,  cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->Qinflow.Vx,      parameter->getParH(lev)->Qinflow.Vx,                 mem_size_inflow_Q_q,  cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->Qinflow.Vy,      parameter->getParH(lev)->Qinflow.Vy,                 mem_size_inflow_Q_q,  cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->Qinflow.Vz,      parameter->getParH(lev)->Qinflow.Vz,                 mem_size_inflow_Q_q,  cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->Qinflow.deltaVz, parameter->getParH(lev)->Qinflow.deltaVz,            mem_size_inflow_Q_q,  cudaMemcpyHostToDevice));
+
+}
+void CudaMemoryManager::cudaFreeVeloBC(int lev)
+{
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->Qinflow.q27[0] ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->Qinflow.k      ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->Qinflow.Vx     ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->Qinflow.Vy     ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->Qinflow.Vz     ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->Qinflow.deltaVz));
+}
+//Press
+void CudaMemoryManager::cudaAllocOutflowBC(int lev)
+{
+	unsigned int mem_size_outflow_Q_k = sizeof(int)*parameter->getParH(lev)->Qoutflow.kQ;
+	unsigned int mem_size_outflow_Q_q = sizeof(real)*parameter->getParH(lev)->Qoutflow.kQ;
+
+	//Host
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->Qoutflow.q27[0]), parameter->getD3Qxx()*mem_size_outflow_Q_q ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->Qoutflow.k),                 mem_size_outflow_Q_k ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->Qoutflow.kN),                mem_size_outflow_Q_k ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->Qoutflow.RhoBC),             mem_size_outflow_Q_q ));
+
+	//Device
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->Qoutflow.q27[0]),     parameter->getD3Qxx()* mem_size_outflow_Q_q ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->Qoutflow.k),                      mem_size_outflow_Q_k ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->Qoutflow.kN),                     mem_size_outflow_Q_k ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->Qoutflow.RhoBC),                  mem_size_outflow_Q_q ));
+
+	//////////////////////////////////////////////////////////////////////////
+	double tmp = (double)mem_size_outflow_Q_k + 2. * (double)mem_size_outflow_Q_q + (double)parameter->getD3Qxx()*(double)mem_size_outflow_Q_q;
+	parameter->setMemsizeGPU(tmp, false);
+}
+void CudaMemoryManager::cudaCopyOutflowBC(int lev)
+{
+	unsigned int mem_size_outflow_Q_k = sizeof(int)*parameter->getParH(lev)->Qoutflow.kQ;
+	unsigned int mem_size_outflow_Q_q = sizeof(real)*parameter->getParH(lev)->Qoutflow.kQ;
+
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->Qoutflow.q27[0],  parameter->getParH(lev)->Qoutflow.q27[0], parameter->getD3Qxx()* mem_size_outflow_Q_q,  cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->Qoutflow.k,       parameter->getParH(lev)->Qoutflow.k,                  mem_size_outflow_Q_k,  cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->Qoutflow.kN,      parameter->getParH(lev)->Qoutflow.kN,                 mem_size_outflow_Q_k,  cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->Qoutflow.RhoBC,   parameter->getParH(lev)->Qoutflow.RhoBC,              mem_size_outflow_Q_q,  cudaMemcpyHostToDevice));
+}
+void CudaMemoryManager::cudaFreeOutflowBC(int lev)
+{
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->Qoutflow.q27[0] ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->Qoutflow.k      ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->Qoutflow.kN     ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->Qoutflow.RhoBC  ));
+}
+//Wall
+void CudaMemoryManager::cudaAllocWallBC(int lev)
+{
+	unsigned int mem_size_Q_k      = sizeof(int)*parameter->getParH(lev)->QWall.kQ;
+	unsigned int mem_size_Q_q      = sizeof(real)*parameter->getParH(lev)->QWall.kQ;
+	unsigned int mem_size_Q_value  = sizeof(long long)*parameter->getParH(lev)->QWall.kQ; //Geller
+	unsigned int mem_size_Q_q_read = sizeof(real)*parameter->getParH(lev)->kQread;     //Geller
+
+	//Host
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->QWall.q27[0]), parameter->getD3Qxx()*mem_size_Q_q      ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->QWall.k),                 mem_size_Q_k      ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->QWall.qread),             mem_size_Q_q_read ));//Geller
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->QWall.valueQ),            mem_size_Q_value  ));//Geller
+
+	//Device
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->QWall.q27[0]),     parameter->getD3Qxx()* mem_size_Q_q     ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->QWall.k),                      mem_size_Q_k     ));
+
+	//////////////////////////////////////////////////////////////////////////
+	double tmp = (double)mem_size_Q_k + (double)parameter->getD3Qxx()*(double)mem_size_Q_q;
+	parameter->setMemsizeGPU(tmp, false);
+}
+void CudaMemoryManager::cudaCopyWallBC(int lev)
+{
+	unsigned int mem_size_Q_k = sizeof(int)*parameter->getParH(lev)->QWall.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parameter->getParH(lev)->QWall.kQ;
+
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->QWall.q27[0], parameter->getParH(lev)->QWall.q27[0], parameter->getD3Qxx()* mem_size_Q_q,       cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->QWall.k,      parameter->getParH(lev)->QWall.k,                  mem_size_Q_k,       cudaMemcpyHostToDevice));
+}
+void CudaMemoryManager::cudaFreeWallBC(int lev)
+{
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->QWall.q27[0]));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->QWall.k));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->QWall.valueQ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->QWall.qread));
+}
+//Geometrie
+void CudaMemoryManager::cudaAllocGeomBC(int lev)
+{
+	unsigned int mem_size_Q_k      = sizeof(int)*parameter->getParH(lev)->QGeom.kQ;
+	unsigned int mem_size_Q_q      = sizeof(real)*parameter->getParH(lev)->QGeom.kQ;
+
+	//Host
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->QGeom.q27[0]), parameter->getD3Qxx()*mem_size_Q_q      ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->QGeom.k),                 mem_size_Q_k      ));
+
+	//Device
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->QGeom.q27[0]),     parameter->getD3Qxx()* mem_size_Q_q     ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->QGeom.k),                      mem_size_Q_k     ));
+
+	//////////////////////////////////////////////////////////////////////////
+	double tmp = (double)mem_size_Q_k + (double)parameter->getD3Qxx()*(double)mem_size_Q_q;
+	parameter->setMemsizeGPU(tmp, false);
+}
+void CudaMemoryManager::cudaCopyGeomBC(int lev)
+{
+	unsigned int mem_size_Q_k = sizeof(int)*parameter->getParH(lev)->QGeom.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parameter->getParH(lev)->QGeom.kQ;
+
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->QGeom.q27[0], parameter->getParH(lev)->QGeom.q27[0], parameter->getD3Qxx()* mem_size_Q_q,       cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->QGeom.k,      parameter->getParH(lev)->QGeom.k,                  mem_size_Q_k,       cudaMemcpyHostToDevice));
+}
+void CudaMemoryManager::cudaFreeGeomBC(int lev)
+{
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->QGeom.q27[0]));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->QGeom.k));
+}
+//Press
+void CudaMemoryManager::cudaAllocPress(int lev)
+{
+	unsigned int mem_size_Q_k      = sizeof(int)*parameter->getParH(lev)->QPress.kQ;
+	unsigned int mem_size_Q_q      = sizeof(real)*parameter->getParH(lev)->QPress.kQ;
+
+	//Host
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->QPress.q27[0]), parameter->getD3Qxx()*mem_size_Q_q      ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->QPress.k),                 mem_size_Q_k      ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->QPress.kN),                mem_size_Q_k      )); 
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->QPress.RhoBC),             mem_size_Q_q      ));
+
+	//Device
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->QPress.q27[0]),     parameter->getD3Qxx()* mem_size_Q_q     ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->QPress.k),                      mem_size_Q_k     ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->QPress.kN),                     mem_size_Q_k     ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->QPress.RhoBC),                  mem_size_Q_q     ));
+
+	//////////////////////////////////////////////////////////////////////////
+	double tmp = 2. * (double)mem_size_Q_k + (double)mem_size_Q_q + (double)parameter->getD3Qxx()*(double)mem_size_Q_q;
+	parameter->setMemsizeGPU(tmp, false);
+}
+void CudaMemoryManager::cudaCopyPress(int lev)
+{
+	unsigned int mem_size_Q_k = sizeof(int)*parameter->getParH(lev)->QPress.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parameter->getParH(lev)->QPress.kQ;
+
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->QPress.q27[0], parameter->getParH(lev)->QPress.q27[0], parameter->getD3Qxx()* mem_size_Q_q,       cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->QPress.k,      parameter->getParH(lev)->QPress.k,                  mem_size_Q_k,       cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->QPress.kN,     parameter->getParH(lev)->QPress.kN,                 mem_size_Q_k,       cudaMemcpyHostToDevice)); 
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->QPress.RhoBC,  parameter->getParH(lev)->QPress.RhoBC,              mem_size_Q_q,       cudaMemcpyHostToDevice));
+}
+void CudaMemoryManager::cudaFreePress(int lev)
+{
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->QPress.q27[0]));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->QPress.k));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->QPress.kN));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->QPress.RhoBC));
+}
+//Forcing
+void CudaMemoryManager::cudaAllocForcing()
+{
+	unsigned int mem_size = sizeof(real) * 3;
+	//Host
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->forcingH), mem_size));
+    parameter->forcingH[0] = parameter->getForcesDouble()[0];
+    parameter->forcingH[1] = parameter->getForcesDouble()[1];
+    parameter->forcingH[2] = parameter->getForcesDouble()[2];
+	//Device
+	checkCudaErrors( cudaMalloc((void**) &parameter->forcingD, mem_size));
+	//////////////////////////////////////////////////////////////////////////
+	double tmp = (real)mem_size;
+	parameter->setMemsizeGPU(tmp, false);
+}
+void CudaMemoryManager::cudaCopyForcingToDevice()
+{
+	unsigned int mem_size = sizeof(real) * 3;
+	checkCudaErrors( cudaMemcpy(parameter->forcingD, parameter->forcingH, mem_size, cudaMemcpyHostToDevice));
+}
+void CudaMemoryManager::cudaCopyForcingToHost()
+{
+	unsigned int mem_size = sizeof(real) * 3;
+	checkCudaErrors( cudaMemcpy(parameter->forcingH, parameter->forcingD, mem_size, cudaMemcpyDeviceToHost));
+}
+void CudaMemoryManager::cudaFreeForcing()
+{
+	checkCudaErrors( cudaFreeHost(parameter->getForcesHost()));
+}
+
+//////////////////////////////////////////////////////////////////////////
+//Process Neighbors
+//  3D domain decomposition
+//  X  /////////////////////////////////////////////////////////////////////////////
+void CudaMemoryManager::cudaAllocProcessNeighborX(int lev, unsigned int processNeighbor)
+{
+	//Host
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->sendProcessNeighborX[processNeighbor].index ),                  parameter->getParH(lev)->sendProcessNeighborX[processNeighbor].memsizeIndex ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->sendProcessNeighborX[processNeighbor].f[0]  ),     parameter->getD3Qxx() * parameter->getParH(lev)->sendProcessNeighborX[processNeighbor].memsizeFs    ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->recvProcessNeighborX[processNeighbor].index ),                  parameter->getParH(lev)->recvProcessNeighborX[processNeighbor].memsizeIndex ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->recvProcessNeighborX[processNeighbor].f[0]  ),     parameter->getD3Qxx() * parameter->getParH(lev)->recvProcessNeighborX[processNeighbor].memsizeFs    ));
+
+	//Device
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->sendProcessNeighborX[processNeighbor].index ),                      parameter->getParD(lev)->sendProcessNeighborX[processNeighbor].memsizeIndex ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->sendProcessNeighborX[processNeighbor].f[0]  ),         parameter->getD3Qxx() * parameter->getParD(lev)->sendProcessNeighborX[processNeighbor].memsizeFs    ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->recvProcessNeighborX[processNeighbor].index ),                      parameter->getParD(lev)->recvProcessNeighborX[processNeighbor].memsizeIndex ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->recvProcessNeighborX[processNeighbor].f[0]  ),         parameter->getD3Qxx() * parameter->getParD(lev)->recvProcessNeighborX[processNeighbor].memsizeFs    ));
+
+	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	double tmp = (double)parameter->getParH(lev)->sendProcessNeighborX[processNeighbor].memsizeIndex + (double)parameter->getD3Qxx()*(double)parameter->getParH(lev)->sendProcessNeighborX[processNeighbor].memsizeFs + 
+				 (double)parameter->getParH(lev)->recvProcessNeighborX[processNeighbor].memsizeIndex + (double)parameter->getD3Qxx()*(double)parameter->getParH(lev)->recvProcessNeighborX[processNeighbor].memsizeFs;
+	parameter->setMemsizeGPU(tmp, false);
+	//printf("memsize GPU for neighbors %f \n",tmp/1000000.0);
+}
+void CudaMemoryManager::cudaCopyProcessNeighborXIndex(int lev, unsigned int processNeighbor)
+{
+	//copy send Index
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->sendProcessNeighborX[processNeighbor].index, 
+								parameter->getParH(lev)->sendProcessNeighborX[processNeighbor].index, 
+								parameter->getParH(lev)->sendProcessNeighborX[processNeighbor].memsizeIndex, 
+								cudaMemcpyHostToDevice));
+	//copy recv Index
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->recvProcessNeighborX[processNeighbor].index, 
+								parameter->getParH(lev)->recvProcessNeighborX[processNeighbor].index, 
+								parameter->getParH(lev)->recvProcessNeighborX[processNeighbor].memsizeIndex, 
+								cudaMemcpyHostToDevice));
+}
+void CudaMemoryManager::cudaCopyProcessNeighborXFsHD(int lev, unsigned int processNeighbor)
+{
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->recvProcessNeighborX[processNeighbor].f[0], 
+								parameter->getParH(lev)->recvProcessNeighborX[processNeighbor].f[0], 
+								parameter->getD3Qxx() * parameter->getParD(lev)->recvProcessNeighborX[processNeighbor].memsizeFs, 
+								cudaMemcpyHostToDevice));
+}
+void CudaMemoryManager::cudaCopyProcessNeighborXFsDH(int lev, unsigned int processNeighbor)
+{
+	checkCudaErrors( cudaMemcpy(parameter->getParH(lev)->sendProcessNeighborX[processNeighbor].f[0], 
+								parameter->getParD(lev)->sendProcessNeighborX[processNeighbor].f[0], 
+								parameter->getD3Qxx() * parameter->getParD(lev)->sendProcessNeighborX[processNeighbor].memsizeFs, 
+								cudaMemcpyDeviceToHost));
+}
+void CudaMemoryManager::cudaFreeProcessNeighborX(int lev, unsigned int processNeighbor)
+{
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->sendProcessNeighborX[processNeighbor].index ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->sendProcessNeighborX[processNeighbor].f[0]     ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->recvProcessNeighborX[processNeighbor].index  ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->recvProcessNeighborX[processNeighbor].f[0]     ));
+}
+//  Y  /////////////////////////////////////////////////////////////////////////////
+void CudaMemoryManager::cudaAllocProcessNeighborY(int lev, unsigned int processNeighbor)
+{
+	//Host
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->sendProcessNeighborY[processNeighbor].index ),                  parameter->getParH(lev)->sendProcessNeighborY[processNeighbor].memsizeIndex ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->sendProcessNeighborY[processNeighbor].f[0]  ),     parameter->getD3Qxx() * parameter->getParH(lev)->sendProcessNeighborY[processNeighbor].memsizeFs    ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->recvProcessNeighborY[processNeighbor].index ),                  parameter->getParH(lev)->recvProcessNeighborY[processNeighbor].memsizeIndex ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->recvProcessNeighborY[processNeighbor].f[0]  ),     parameter->getD3Qxx() * parameter->getParH(lev)->recvProcessNeighborY[processNeighbor].memsizeFs    ));
+
+	//Device
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->sendProcessNeighborY[processNeighbor].index ),                      parameter->getParD(lev)->sendProcessNeighborY[processNeighbor].memsizeIndex ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->sendProcessNeighborY[processNeighbor].f[0]  ),         parameter->getD3Qxx() * parameter->getParD(lev)->sendProcessNeighborY[processNeighbor].memsizeFs    ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->recvProcessNeighborY[processNeighbor].index ),                      parameter->getParD(lev)->recvProcessNeighborY[processNeighbor].memsizeIndex ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->recvProcessNeighborY[processNeighbor].f[0]  ),         parameter->getD3Qxx() * parameter->getParD(lev)->recvProcessNeighborY[processNeighbor].memsizeFs    ));
+
+	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	double tmp = (double)parameter->getParH(lev)->sendProcessNeighborY[processNeighbor].memsizeIndex + (double)parameter->getD3Qxx()*(double)parameter->getParH(lev)->sendProcessNeighborY[processNeighbor].memsizeFs + 
+				 (double)parameter->getParH(lev)->recvProcessNeighborY[processNeighbor].memsizeIndex + (double)parameter->getD3Qxx()*(double)parameter->getParH(lev)->recvProcessNeighborY[processNeighbor].memsizeFs;
+	parameter->setMemsizeGPU(tmp, false);
+	//printf("memsize GPU for neighbors %f \n",tmp/1000000.0);
+}
+void CudaMemoryManager::cudaCopyProcessNeighborYIndex(int lev, unsigned int processNeighbor)
+{
+	//copy send Index
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->sendProcessNeighborY[processNeighbor].index, 
+								parameter->getParH(lev)->sendProcessNeighborY[processNeighbor].index, 
+								parameter->getParH(lev)->sendProcessNeighborY[processNeighbor].memsizeIndex, 
+								cudaMemcpyHostToDevice));
+	//copy recv Index
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->recvProcessNeighborY[processNeighbor].index, 
+								parameter->getParH(lev)->recvProcessNeighborY[processNeighbor].index, 
+								parameter->getParH(lev)->recvProcessNeighborY[processNeighbor].memsizeIndex, 
+								cudaMemcpyHostToDevice));
+}
+void CudaMemoryManager::cudaCopyProcessNeighborYFsHD(int lev, unsigned int processNeighbor)
+{
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->recvProcessNeighborY[processNeighbor].f[0], 
+								parameter->getParH(lev)->recvProcessNeighborY[processNeighbor].f[0], 
+								parameter->getD3Qxx() * parameter->getParD(lev)->recvProcessNeighborY[processNeighbor].memsizeFs, 
+								cudaMemcpyHostToDevice));
+}
+void CudaMemoryManager::cudaCopyProcessNeighborYFsDH(int lev, unsigned int processNeighbor)
+{
+	checkCudaErrors( cudaMemcpy(parameter->getParH(lev)->sendProcessNeighborY[processNeighbor].f[0], 
+								parameter->getParD(lev)->sendProcessNeighborY[processNeighbor].f[0], 
+								parameter->getD3Qxx() * parameter->getParD(lev)->sendProcessNeighborY[processNeighbor].memsizeFs, 
+								cudaMemcpyDeviceToHost));
+}
+void CudaMemoryManager::cudaFreeProcessNeighborY(int lev, unsigned int processNeighbor)
+{
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->sendProcessNeighborY[processNeighbor].index ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->sendProcessNeighborY[processNeighbor].f[0]     ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->recvProcessNeighborY[processNeighbor].index  ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->recvProcessNeighborY[processNeighbor].f[0]     ));
+}
+//  Z  /////////////////////////////////////////////////////////////////////////////
+void CudaMemoryManager::cudaAllocProcessNeighborZ(int lev, unsigned int processNeighbor)
+{
+	//Host
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->sendProcessNeighborZ[processNeighbor].index ),                  parameter->getParH(lev)->sendProcessNeighborZ[processNeighbor].memsizeIndex ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->sendProcessNeighborZ[processNeighbor].f[0]  ),     parameter->getD3Qxx() * parameter->getParH(lev)->sendProcessNeighborZ[processNeighbor].memsizeFs    ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->recvProcessNeighborZ[processNeighbor].index ),                  parameter->getParH(lev)->recvProcessNeighborZ[processNeighbor].memsizeIndex ));
+	checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->recvProcessNeighborZ[processNeighbor].f[0]  ),     parameter->getD3Qxx() * parameter->getParH(lev)->recvProcessNeighborZ[processNeighbor].memsizeFs    ));
+
+	//Device
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->sendProcessNeighborZ[processNeighbor].index ),                      parameter->getParD(lev)->sendProcessNeighborZ[processNeighbor].memsizeIndex ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->sendProcessNeighborZ[processNeighbor].f[0]  ),         parameter->getD3Qxx() * parameter->getParD(lev)->sendProcessNeighborZ[processNeighbor].memsizeFs    ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->recvProcessNeighborZ[processNeighbor].index ),                      parameter->getParD(lev)->recvProcessNeighborZ[processNeighbor].memsizeIndex ));
+	checkCudaErrors( cudaMalloc((void**) &(parameter->getParD(lev)->recvProcessNeighborZ[processNeighbor].f[0]  ),         parameter->getD3Qxx() * parameter->getParD(lev)->recvProcessNeighborZ[processNeighbor].memsizeFs    ));
+
+	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+	double tmp = (double)parameter->getParH(lev)->sendProcessNeighborZ[processNeighbor].memsizeIndex + (double)parameter->getD3Qxx()*(double)parameter->getParH(lev)->sendProcessNeighborZ[processNeighbor].memsizeFs + 
+				 (double)parameter->getParH(lev)->recvProcessNeighborZ[processNeighbor].memsizeIndex + (double)parameter->getD3Qxx()*(double)parameter->getParH(lev)->recvProcessNeighborZ[processNeighbor].memsizeFs;
+	parameter->setMemsizeGPU(tmp, false);
+	//printf("memsize GPU for neighbors %f \n",tmp/1000000.0);
+}
+void CudaMemoryManager::cudaCopyProcessNeighborZIndex(int lev, unsigned int processNeighbor)
+{
+	//copy send Index
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->sendProcessNeighborZ[processNeighbor].index, 
+								parameter->getParH(lev)->sendProcessNeighborZ[processNeighbor].index, 
+								parameter->getParH(lev)->sendProcessNeighborZ[processNeighbor].memsizeIndex, 
+								cudaMemcpyHostToDevice));
+	//copy recv Index
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->recvProcessNeighborZ[processNeighbor].index, 
+								parameter->getParH(lev)->recvProcessNeighborZ[processNeighbor].index, 
+								parameter->getParH(lev)->recvProcessNeighborZ[processNeighbor].memsizeIndex, 
+								cudaMemcpyHostToDevice));
+}
+void CudaMemoryManager::cudaCopyProcessNeighborZFsHD(int lev, unsigned int processNeighbor)
+{
+	checkCudaErrors( cudaMemcpy(parameter->getParD(lev)->recvProcessNeighborZ[processNeighbor].f[0], 
+								parameter->getParH(lev)->recvProcessNeighborZ[processNeighbor].f[0], 
+								parameter->getD3Qxx() * parameter->getParD(lev)->recvProcessNeighborZ[processNeighbor].memsizeFs, 
+								cudaMemcpyHostToDevice));
+}
+void CudaMemoryManager::cudaCopyProcessNeighborZFsDH(int lev, unsigned int processNeighbor)
+{
+	checkCudaErrors( cudaMemcpy(parameter->getParH(lev)->sendProcessNeighborZ[processNeighbor].f[0], 
+								parameter->getParD(lev)->sendProcessNeighborZ[processNeighbor].f[0], 
+								parameter->getD3Qxx() * parameter->getParD(lev)->sendProcessNeighborZ[processNeighbor].memsizeFs, 
+								cudaMemcpyDeviceToHost));
+}
+void CudaMemoryManager::cudaFreeProcessNeighborZ(int lev, unsigned int processNeighbor)
+{
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->sendProcessNeighborZ[processNeighbor].index ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->sendProcessNeighborZ[processNeighbor].f[0]     ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->recvProcessNeighborZ[processNeighbor].index  ));
+	checkCudaErrors( cudaFreeHost(parameter->getParH(lev)->recvProcessNeighborZ[processNeighbor].f[0]     ));
+}
+
+std::shared_ptr<CudaMemoryManager> CudaMemoryManager::make(std::shared_ptr<Parameter> parameter)
+{
+    return std::shared_ptr<CudaMemoryManager>(new CudaMemoryManager(parameter));
+}
+
+CudaMemoryManager::CudaMemoryManager(std::shared_ptr<Parameter> parameter)
+{
+    this->parameter = parameter;
+}
+
+CudaMemoryManager::CudaMemoryManager(const CudaMemoryManager&)
+{
+
+}
diff --git a/src/VirtualFluids_GPU/GPU/CudaMemoryManager.h b/src/VirtualFluids_GPU/GPU/CudaMemoryManager.h
new file mode 100644
index 000000000..09af493b3
--- /dev/null
+++ b/src/VirtualFluids_GPU/GPU/CudaMemoryManager.h
@@ -0,0 +1,93 @@
+#ifndef CudamemoryManager_H
+#define CudamemoryManager_H
+
+#include <vector>
+#include <string>
+#include <memory>
+
+#include "LBM/LB.h"
+#include "LBM/D3Q27.h"
+
+#include <cuda_runtime.h>
+#include <helper_cuda.h>
+
+class Parameter;
+
+class CudaMemoryManager
+{
+public:
+	static std::shared_ptr<CudaMemoryManager> make(std::shared_ptr<Parameter> parameter);
+	
+	void cudaAllocCoord(int lev);
+	void cudaCopyCoord(int lev);
+	void cudaFreeCoord(int lev);
+
+	void cudaCopyDataToHost(int lev);
+
+	void cudaAllocSP(int lev);
+	void cudaCopySP(int lev);
+	void cudaFreeSP(int lev);
+
+	void cudaAllocVeloBC(int lev);
+	void cudaCopyVeloBC(int lev);
+	void cudaFreeVeloBC(int lev);
+	void cudaAllocOutflowBC(int lev);
+	void cudaCopyOutflowBC(int lev);
+	void cudaFreeOutflowBC(int lev);
+	void cudaAllocWallBC(int lev);
+	void cudaCopyWallBC(int lev);
+	void cudaFreeWallBC(int lev);
+
+	void cudaAllocGeomBC(int lev);
+	void cudaCopyGeomBC(int lev);
+	void cudaFreeGeomBC(int lev);
+
+	void cudaAllocPress(int lev);
+	void cudaCopyPress(int lev);
+	void cudaFreePress(int lev);
+
+	void cudaAllocForcing();
+	void cudaCopyForcingToDevice();
+	void cudaCopyForcingToHost();
+	void cudaFreeForcing();
+
+	//////////////////////////////////////////////////////////////////////////
+	//3D domain decomposition
+	void cudaAllocProcessNeighborX(int lev, unsigned int processNeighbor);
+	void cudaCopyProcessNeighborXFsHD(int lev, unsigned int processNeighbor);
+	void cudaCopyProcessNeighborXFsDH(int lev, unsigned int processNeighbor);
+	void cudaCopyProcessNeighborXIndex(int lev, unsigned int processNeighbor);
+	void cudaFreeProcessNeighborX(int lev, unsigned int processNeighbor);
+	//
+	void cudaAllocProcessNeighborY(int lev, unsigned int processNeighbor);
+	void cudaCopyProcessNeighborYFsHD(int lev, unsigned int processNeighbor);
+	void cudaCopyProcessNeighborYFsDH(int lev, unsigned int processNeighbor);
+	void cudaCopyProcessNeighborYIndex(int lev, unsigned int processNeighbor);
+	void cudaFreeProcessNeighborY(int lev, unsigned int processNeighbor);
+	//
+	void cudaAllocProcessNeighborZ(int lev, unsigned int processNeighbor);
+	void cudaCopyProcessNeighborZFsHD(int lev, unsigned int processNeighbor);
+	void cudaCopyProcessNeighborZFsDH(int lev, unsigned int processNeighbor);
+	void cudaCopyProcessNeighborZIndex(int lev, unsigned int processNeighbor);
+	void cudaFreeProcessNeighborZ(int lev, unsigned int processNeighbor);
+	//////////////////////////////////////////////////////////////////////////
+
+//
+//private:
+//	int coarse, fine, maxlevel;
+//	int factor_gridNZ;
+//	int D3Qxx;
+//	InitCondition ic;
+//	double memsizeGPU;
+//	unsigned int limitOfNodesForVTK;
+
+private:
+    CudaMemoryManager(std::shared_ptr<Parameter> parameter);
+    CudaMemoryManager(const CudaMemoryManager&);
+
+    std::shared_ptr<Parameter> parameter;
+
+};
+
+#endif
+
diff --git a/src/VirtualFluids_GPU/GPU/Cumulant27.cu b/src/VirtualFluids_GPU/GPU/Cumulant27.cu
index a8d281d28..770a570f3 100644
--- a/src/VirtualFluids_GPU/GPU/Cumulant27.cu
+++ b/src/VirtualFluids_GPU/GPU/Cumulant27.cu
@@ -4,15 +4,15 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(doubflo omega,
+extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(real omega,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
+														real* DDStart,
 														int size_Mat,
 														int level,
-														doubflo* forces,
+														real* forces,
 														bool EvenOrOdd)
 {
 	////////////////////////////////////////////////////////////////////////////////
@@ -155,83 +155,83 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(doubflo omega,
 			//unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE])[k];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW])[kw];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN])[k];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS])[ks];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT])[k];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB])[kb];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE])[k];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE])[ks];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW])[kw];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE])[k];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE])[kb];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW])[kw];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN])[k];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN])[kb];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS])[ks];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE])[k];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE])[ks];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW])[kw];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE])[kb];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) +
+			real mfcbb = (D.f[dirE])[k];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW])[kw];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN])[k];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS])[ks];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT])[k];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB])[kb];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE])[k];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE])[ks];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW])[kw];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE])[k];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE])[kb];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW])[kw];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN])[k];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN])[kb];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS])[ks];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE])[k];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE])[ks];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE])[kb];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			////////////////////////////////////////////////////////////////////////////////////
+			real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) +
 				(((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) +
 				((mfabb + mfcbb) + (mfbab + mfbcb)) + (mfbba + mfbbc)) + mfbbb;
 
-			doubflo rho = one + drho;
+			real rho = one + drho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
-			doubflo vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
+			real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
 				(((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
 				(mfcbb - mfabb)) / rho;
-			doubflo vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
+			real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
 				(((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
 				(mfbcb - mfbab)) / rho;
-			doubflo vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
+			real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
 				(((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
 				(mfbbc - mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//the force be with you
-			doubflo fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
-			doubflo fy = forces[1] / (pow(two, level)); //zero;
-			doubflo fz = forces[2] / (pow(two, level)); //zero;
+			real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+			real fy = forces[1] / (pow(two, level)); //zero;
+			real fz = forces[2] / (pow(two, level)); //zero;
 			vvx += fx;
 			vvy += fy;
 			vvz += fz;
 			////////////////////////////////////////////////////////////////////////////////////
-			//doubflo omega = omega_in;
+			//real omega = omega_in;
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one; // comp special
-								  //doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one; // comp special
+								  //real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 								  //					   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 								  //					   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr
-								  //doubflo vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
+								  //real vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
 								  //				mfcba-mfabc + mfcbc-mfaba + mfcab-mfacb + mfccb-mfaab +
 								  //				mfcbb-mfabb;
-								  //doubflo vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
+								  //real vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
 								  //				mfbca-mfbac + mfbcc-mfbaa + mfacb-mfcab + mfccb-mfaab +
 								  //				mfbcb-mfbab;
-								  //doubflo vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
+								  //real vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
 								  //				mfbac-mfbca + mfbcc-mfbaa + mfabc-mfcba + mfcbc-mfaba +
 								  //				mfbbc-mfbba;
 								  ////////////////////////////////////////////////////////////////////////////////////
 								  // oMdrho assembler style -------> faaaaaastaaaa
 								  // or much sloooowaaaa ... it depändssssss on sadaku
-			doubflo m0, m1, m2;
-			//doubflo oMdrho;
+			real m0, m1, m2;
+			//real oMdrho;
 			//{
 			//	oMdrho=mfccc+mfaaa;
 			//	m0=mfaca+mfcac;
@@ -259,8 +259,8 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(doubflo omega,
 			//	m0+=mfbbb; //hat gefehlt
 			//	oMdrho = one - (oMdrho + m0);
 			//}
-			//doubflo vvx;
-			doubflo vx2;
+			//real vvx;
+			real vx2;
 			//{
 			//	vvx = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -280,8 +280,8 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(doubflo omega,
 			//	vx2 = mfcbb-mfabb;
 			//	vvx+= vx2;
 			//}
-			//doubflo vvy;
-			doubflo vy2;
+			//real vvy;
+			real vy2;
 			//{
 			//	vvy = mfccc-mfaaa;
 			//	m0  = mfaca-mfcac;
@@ -301,8 +301,8 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(doubflo omega,
 			//	vy2 = mfbcb-mfbab;
 			//	vvy+= vy2;
 			//}
-			//doubflo vvz;
-			doubflo vz2;
+			//real vvz;
+			real vz2;
 			//{
 			//	vvz = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -326,10 +326,10 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(doubflo omega,
 			vy2 = vvy*vvy;
 			vz2 = vvz*vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimitP = 1.0e10;// 0.01f;// * 0.0001f;
-			doubflo qudricLimitM = 1.0e10;//0.01f;// * 0.0001f;
-			doubflo qudricLimitD = 1.0e10;//0.01f;// * 0.001f;
+			real wadjust;
+			real qudricLimitP = 1.0e10;// 0.01f;// * 0.0001f;
+			real qudricLimitM = 1.0e10;//0.01f;// * 0.0001f;
+			real qudricLimitD = 1.0e10;//0.01f;// * 0.001f;
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
 			////////////////////////////////////////////////////////////////////////////////////
@@ -561,80 +561,80 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(doubflo omega,
 
 			////////////////////////////////////////////////////////////////////////////////////
 			//limiter advect
-			doubflo lambdaAdvect = 1000;//100000;
-			doubflo limAdvect = lambdaAdvect * (one / omega - c1o2) * (one / omega - c1o2);
+			real lambdaAdvect = 1000;//100000;
+			real limAdvect = lambdaAdvect * (one / omega - c1o2) * (one / omega - c1o2);
 			////////////////////////////////////////////////////////////////////////////////////
 
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cumulants
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
+			real OxxPyyPzz = one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
 
 			////////////////////////////////////////////////////////////
 			//3.
 			//////////////////////////////
-			doubflo OxyyPxzz = eight*(-two + omega)*(one + two*omega) / (-eight - fourteen*omega + seven*omega*omega);//one;
-			doubflo OxyyMxzz = eight*(-two + omega)*(-seven + four*omega) / (fiftysix - fifty*omega + nine*omega*omega);//one;
-			doubflo Oxyz = twentyfour*(-two + omega)*(-two - seven*omega + three*omega*omega) / (fourtyeight + c152*omega - c130*omega*omega + twentynine*omega*omega*omega);//one;
+			real OxyyPxzz = eight*(-two + omega)*(one + two*omega) / (-eight - fourteen*omega + seven*omega*omega);//one;
+			real OxyyMxzz = eight*(-two + omega)*(-seven + four*omega) / (fiftysix - fifty*omega + nine*omega*omega);//one;
+			real Oxyz = twentyfour*(-two + omega)*(-two - seven*omega + three*omega*omega) / (fourtyeight + c152*omega - c130*omega*omega + twentynine*omega*omega*omega);//one;
 			////////////////////////////////////////////////////////////
 			//4.
 			//////////////////////////////
-			//doubflo O4 = one;
+			//real O4 = one;
 			//////////////////////////////
-			doubflo O4        = one/(100*(one/ omega-c1o2)+c1o2);//TRT
+			real O4        = one/(100*(one/ omega-c1o2)+c1o2);//TRT
 			////////////////////////////////////////////////////////////
 			//5.
 			//////////////////////////////
-			doubflo O5 =  OxyyPxzz;// two - omega; // one;
+			real O5 =  OxyyPxzz;// two - omega; // one;
 			////////////////////////////////////////////////////////////
 			//6.
 			//////////////////////////////
-			doubflo O6 = one;
+			real O6 = one;
 			////////////////////////////////////////////////////////////
 
-			doubflo A = (four * omega * omega + two * omega * OxxPyyPzz * (omega - six) + OxxPyyPzz * OxxPyyPzz * (omega * (ten - three * omega) - four)) /
+			real A = (four * omega * omega + two * omega * OxxPyyPzz * (omega - six) + OxxPyyPzz * OxxPyyPzz * (omega * (ten - three * omega) - four)) /
 				((omega - OxxPyyPzz) * (OxxPyyPzz * (two + three * omega) - eight * omega));
-			doubflo B = (four * omega * OxxPyyPzz * (nine * omega - sixteen) - four * omega * omega - two * OxxPyyPzz * OxxPyyPzz * (two + nine * omega * (omega - two))) /
+			real B = (four * omega * OxxPyyPzz * (nine * omega - sixteen) - four * omega * omega - two * OxxPyyPzz * OxxPyyPzz * (two + nine * omega * (omega - two))) /
 				(three * (omega - OxxPyyPzz) * (OxxPyyPzz * (two + three * omega) - eight * omega));
 
 
 			//central moments to cumulants
 			//4.
-			doubflo CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
-			doubflo CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
-			doubflo CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
 
-			doubflo CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
-			doubflo CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
-			doubflo CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
 
 			//5.
-			doubflo CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)*(one + rho*six*B / (two + three * B))) / rho;
-			doubflo CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)*(one + rho*six*B / (two + three * B))) / rho;
-			doubflo CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)*(one + rho*six*B / (two + three * B))) / rho;
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)*(one + rho*six*B / (two + three * B))) / rho;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)*(one + rho*six*B / (two + three * B))) / rho;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)*(one + rho*six*B / (two + three * B))) / rho;
 
-			doubflo scaleD2 = 
+			real scaleD2 = 
 				(-twentyseven * omega*(omega - OxxPyyPzz)*(two * OxxPyyPzz + omega*(-eight + three * OxxPyyPzz))*(-four * OxxPyyPzz + omega*(-two + three * OxxPyyPzz))*O5) /
 				((-two + omega)*(six * OxxPyyPzz*(thirtytwo + (c100 - sixtynine * OxxPyyPzz)*OxxPyyPzz)*(omega*omega) +
 				(fourty + three * OxxPyyPzz*(-fiftytwo + three * OxxPyyPzz*(-eight + nine * OxxPyyPzz)))*(omega*omega*omega) +
 					c264 * omega*(-three + two * OxxPyyPzz)*(OxxPyyPzz*OxxPyyPzz) - eightyeight * (OxxPyyPzz*OxxPyyPzz*OxxPyyPzz)));
 
-			doubflo dxxux = CUMbcc*scaleD2;
-			doubflo dyyuy = CUMcbc*scaleD2;
-			doubflo dzzuz = CUMccb*scaleD2;
+			real dxxux = CUMbcc*scaleD2;
+			real dyyuy = CUMcbc*scaleD2;
+			real dzzuz = CUMccb*scaleD2;
 
 			//dxxux *= limAdvect / (limAdvect + sqrt(abs(vvx * dxxux)));
 			//dyyuy *= limAdvect / (limAdvect + sqrt(abs(vvy * dyyuy)));
 			//dzzuz *= limAdvect / (limAdvect + sqrt(abs(vvz * dzzuz)));
 
-			//doubflo limD2 = 1.0e10;
+			//real limD2 = 1.0e10;
 			//dxxux /= one + limD2*abs(dxxux);
 			//dyyuy /= one + limD2*abs(dyyuy);
 			//dzzuz /= one + limD2*abs(dzzuz);
 
 			//6.
 
-			doubflo CUMccc = mfccc + ((-four *  mfbbb * mfbbb
+			real CUMccc = mfccc + ((-four *  mfbbb * mfbbb
 				- (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 				- four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 				- two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
@@ -649,37 +649,37 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(doubflo omega,
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy = mfcaa - mfaca;
-			doubflo mxxMzz = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy = mfcaa - mfaca;
+			real mxxMzz = mfcaa - mfaac;
 
 
 			////////////////////////////////////////////////////////////////////////////
-			doubflo Dxy = -three*omega*mfbba;
-			doubflo Dxz = -three*omega*mfbab;
-			doubflo Dyz = -three*omega*mfabb;
+			real Dxy = -three*omega*mfbba;
+			real Dxz = -three*omega*mfbab;
+			real Dyz = -three*omega*mfabb;
 
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
 
-			doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-			doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
-			doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+			real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+			real dyuy = dxux + omega * c3o2 * mxxMyy;
+			real dzuz = dxux + omega * c3o2 * mxxMzz;
 
 			//////////////////////////////////////////////////////////////////////////////
-			doubflo divTest = (mxxPyyPzz - (mfaaa + (-three * (one - OxxPyyPzz*c1o2)*(vx2*dxux + vy2*dyuy + vz2*dzuz) + (six - three * (omega + OxxPyyPzz) + omega*OxxPyyPzz) / 
+			real divTest = (mxxPyyPzz - (mfaaa + (-three * (one - OxxPyyPzz*c1o2)*(vx2*dxux + vy2*dyuy + vz2*dzuz) + (six - three * (omega + OxxPyyPzz) + omega*OxxPyyPzz) / 
 				(three * omega)*(dxux*dxux / rho + dyuy*dyuy / rho + dzuz*dzuz / rho + vvx*dxxux + vvy*dyyuy + vvz*dzzuz)) / OxxPyyPzz)) / OxxPyyPzz;
 
 			//dxxux *= limAdvect / (limAdvect + sqrt(abs(divTest)));
@@ -1128,16 +1128,16 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	doubflo omega,
+extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	real omega,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
-														doubflo* G6,
+														real* DDStart,
+														real* G6,
 														int size_Mat,
 														int level,
-														doubflo* forces,
+														real* forces,
 														bool EvenOrOdd)
 {
 	////////////////////////////////////////////////////////////////////////////////
@@ -1299,93 +1299,93 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	doubflo omega,
 			//unsigned int ktne = k;
 			//unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mgcbb = (G.g[dirE])[k];
-			doubflo mgabb = (G.g[dirW])[kw];
-			doubflo mgbcb = (G.g[dirN])[k];
-			doubflo mgbab = (G.g[dirS])[ks];
-			doubflo mgbbc = (G.g[dirT])[k];
-			doubflo mgbba = (G.g[dirB])[kb];
-			doubflo dxxux = c1o2 * (-mgcbb + mgabb);
-			doubflo dyyuy = c1o2 * (-mgbcb + mgbab);
-			doubflo dzzuz = c1o2 * (-mgbbc + mgbba);
+			real mgcbb = (G.g[dirE])[k];
+			real mgabb = (G.g[dirW])[kw];
+			real mgbcb = (G.g[dirN])[k];
+			real mgbab = (G.g[dirS])[ks];
+			real mgbbc = (G.g[dirT])[k];
+			real mgbba = (G.g[dirB])[kb];
+			real dxxux = c1o2 * (-mgcbb + mgabb);
+			real dyyuy = c1o2 * (-mgbcb + mgbab);
+			real dzzuz = c1o2 * (-mgbbc + mgbba);
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE])[k];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW])[kw];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN])[k];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS])[ks];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT])[k];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB])[kb];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE])[k];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE])[ks];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW])[kw];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE])[k];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE])[kb];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW])[kw];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN])[k];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN])[kb];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS])[ks];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE])[k];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE])[ks];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW])[kw];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE])[kb];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) +
+			real mfcbb = (D.f[dirE])[k];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW])[kw];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN])[k];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS])[ks];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT])[k];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB])[kb];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE])[k];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE])[ks];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW])[kw];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE])[k];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE])[kb];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW])[kw];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN])[k];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN])[kb];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS])[ks];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE])[k];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE])[ks];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE])[kb];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			////////////////////////////////////////////////////////////////////////////////////
+			real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) +
 				(((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) +
 				((mfabb + mfcbb) + (mfbab + mfbcb)) + (mfbba + mfbbc)) + mfbbb;
 
-			doubflo rho = one + drho;
+			real rho = one + drho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
-			doubflo vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
+			real vvx = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfcaa - mfacc) + (mfcca - mfaac))) +
 				(((mfcba - mfabc) + (mfcbc - mfaba)) + ((mfcab - mfacb) + (mfccb - mfaab))) +
 				(mfcbb - mfabb)) / rho;
-			doubflo vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
+			real vvy = ((((mfccc - mfaaa) + (mfaca - mfcac)) + ((mfacc - mfcaa) + (mfcca - mfaac))) +
 				(((mfbca - mfbac) + (mfbcc - mfbaa)) + ((mfacb - mfcab) + (mfccb - mfaab))) +
 				(mfbcb - mfbab)) / rho;
-			doubflo vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
+			real vvz = ((((mfccc - mfaaa) + (mfcac - mfaca)) + ((mfacc - mfcaa) + (mfaac - mfcca))) +
 				(((mfbac - mfbca) + (mfbcc - mfbaa)) + ((mfabc - mfcba) + (mfcbc - mfaba))) +
 				(mfbbc - mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//the force be with you
-			doubflo fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
-			doubflo fy = forces[1] / (pow(two, level)); //zero;
-			doubflo fz = forces[2] / (pow(two, level)); //zero;
+			real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+			real fy = forces[1] / (pow(two, level)); //zero;
+			real fz = forces[2] / (pow(two, level)); //zero;
 			vvx += fx;
 			vvy += fy;
 			vvz += fz;
 			////////////////////////////////////////////////////////////////////////////////////
-			//doubflo omega = omega_in;
+			//real omega = omega_in;
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one; // comp special
-								  //doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one; // comp special
+								  //real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 								  //					   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 								  //					   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr
-								  //doubflo vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
+								  //real vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
 								  //				mfcba-mfabc + mfcbc-mfaba + mfcab-mfacb + mfccb-mfaab +
 								  //				mfcbb-mfabb;
-								  //doubflo vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
+								  //real vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
 								  //				mfbca-mfbac + mfbcc-mfbaa + mfacb-mfcab + mfccb-mfaab +
 								  //				mfbcb-mfbab;
-								  //doubflo vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
+								  //real vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
 								  //				mfbac-mfbca + mfbcc-mfbaa + mfabc-mfcba + mfcbc-mfaba +
 								  //				mfbbc-mfbba;
 								  ////////////////////////////////////////////////////////////////////////////////////
 								  // oMdrho assembler style -------> faaaaaastaaaa
 								  // or much sloooowaaaa ... it depändssssss on sadaku
-			doubflo m0, m1, m2;
-			//doubflo oMdrho;
+			real m0, m1, m2;
+			//real oMdrho;
 			//{
 			//	oMdrho=mfccc+mfaaa;
 			//	m0=mfaca+mfcac;
@@ -1413,8 +1413,8 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	doubflo omega,
 			//	m0+=mfbbb; //hat gefehlt
 			//	oMdrho = one - (oMdrho + m0);
 			//}
-			//doubflo vvx;
-			doubflo vx2;
+			//real vvx;
+			real vx2;
 			//{
 			//	vvx = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -1434,8 +1434,8 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	doubflo omega,
 			//	vx2 = mfcbb-mfabb;
 			//	vvx+= vx2;
 			//}
-			//doubflo vvy;
-			doubflo vy2;
+			//real vvy;
+			real vy2;
 			//{
 			//	vvy = mfccc-mfaaa;
 			//	m0  = mfaca-mfcac;
@@ -1455,8 +1455,8 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	doubflo omega,
 			//	vy2 = mfbcb-mfbab;
 			//	vvy+= vy2;
 			//}
-			//doubflo vvz;
-			doubflo vz2;
+			//real vvz;
+			real vz2;
 			//{
 			//	vvz = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -1480,10 +1480,10 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	doubflo omega,
 			vy2 = vvy*vvy;
 			vz2 = vvz*vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimitP = 0.01f;// * 0.0001f;
-			doubflo qudricLimitM = 0.01f;// * 0.0001f;
-			doubflo qudricLimitD = 0.01f;// * 0.001f;
+			real wadjust;
+			real qudricLimitP = 0.01f;// * 0.0001f;
+			real qudricLimitM = 0.01f;// * 0.0001f;
+			real qudricLimitD = 0.01f;// * 0.001f;
 										 ////////////////////////////////////////////////////////////////////////////////////
 										 //Hin
 										 ////////////////////////////////////////////////////////////////////////////////////
@@ -1717,49 +1717,49 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cumulants
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
+			real OxxPyyPzz = one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
 
 			////////////////////////////////////////////////////////////
 			//3.
 			//////////////////////////////
-			doubflo OxyyPxzz = eight*(-two + omega)*(one + two*omega) / (-eight - fourteen*omega + seven*omega*omega);//one;
-			doubflo OxyyMxzz = eight*(-two + omega)*(-seven + four*omega) / (fiftysix - fifty*omega + nine*omega*omega);//one;
-			doubflo Oxyz = twentyfour*(-two + omega)*(-two - seven*omega + three*omega*omega) / (fourtyeight + c152*omega - c130*omega*omega + twentynine*omega*omega*omega);//one;
+			real OxyyPxzz = eight*(-two + omega)*(one + two*omega) / (-eight - fourteen*omega + seven*omega*omega);//one;
+			real OxyyMxzz = eight*(-two + omega)*(-seven + four*omega) / (fiftysix - fifty*omega + nine*omega*omega);//one;
+			real Oxyz = twentyfour*(-two + omega)*(-two - seven*omega + three*omega*omega) / (fourtyeight + c152*omega - c130*omega*omega + twentynine*omega*omega*omega);//one;
 			////////////////////////////////////////////////////////////
 			//4.
 			//////////////////////////////
-			doubflo O4 = one;
+			real O4 = one;
 			//////////////////////////////
-			//doubflo O4        = omega;//TRT
+			//real O4        = omega;//TRT
 			////////////////////////////////////////////////////////////
 			//5.
 			//////////////////////////////
-			doubflo O5 = one;
+			real O5 = one;
 			////////////////////////////////////////////////////////////
 			//6.
 			//////////////////////////////
-			doubflo O6 = one;
+			real O6 = one;
 			////////////////////////////////////////////////////////////
 
 
 			//central moments to cumulants
 			//4.
-			doubflo CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
-			doubflo CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
-			doubflo CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
 
-			doubflo CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
-			doubflo CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
-			doubflo CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho - c1o9*(drho / rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho - c1o9*(drho / rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho));
 
 			//5.
-			doubflo CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
-			doubflo CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
-			doubflo CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)) / rho;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)) / rho;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)) / rho;
 
 			//6.
 
-			doubflo CUMccc = mfccc + ((-four *  mfbbb * mfbbb
+			real CUMccc = mfccc + ((-four *  mfbbb * mfbbb
 				- (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 				- four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 				- two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
@@ -1774,33 +1774,33 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	doubflo omega,
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy = mfcaa - mfaca;
-			doubflo mxxMzz = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy = mfcaa - mfaca;
+			real mxxMzz = mfcaa - mfaac;
 
 			////////////////////////////////////////////////////////////////////////////
-			doubflo Dxy = -three*omega*mfbba;
-			doubflo Dxz = -three*omega*mfbab;
-			doubflo Dyz = -three*omega*mfabb;
+			real Dxy = -three*omega*mfbba;
+			real Dxz = -three*omega*mfbab;
+			real Dyz = -three*omega*mfabb;
 
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
 
-			doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-			doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
-			doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+			real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+			real dyuy = dxux + omega * c3o2 * mxxMyy;
+			real dzuz = dxux + omega * c3o2 * mxxMzz;
 
 			mgabb = dxux;
 			mgbab = dyuy;
@@ -2248,15 +2248,15 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(real omega,
 																unsigned int* bcMatD,
 																unsigned int* neighborX,
 																unsigned int* neighborY,
 																unsigned int* neighborZ,
-																doubflo* DDStart,
+																real* DDStart,
 																int size_Mat,
 																int level,
-																doubflo* forces,
+																real* forces,
 																bool EvenOrOdd)
 {
 	////////////////////////////////////////////////////////////////////////////////
@@ -2370,77 +2370,77 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(doubflo omega,
 			//unsigned int ktne = k;
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			real mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			////////////////////////////////////////////////////////////////////////////////////
+			real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 							(((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 							((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb;
 
-			doubflo rho = one+drho;
+			real rho = one+drho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb)) / rho;
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab)) / rho;
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//the force be with you
-			doubflo fx = forces[0]/(pow(two,level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
-			doubflo fy = forces[1]/(pow(two,level)); //zero;
-			doubflo fz = forces[2]/(pow(two,level)); //zero;
+			real fx = forces[0]/(pow(two,level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+			real fy = forces[1]/(pow(two,level)); //zero;
+			real fz = forces[2]/(pow(two,level)); //zero;
 			vvx += fx;
 			vvy += fy;
 			vvz += fz;
 			////////////////////////////////////////////////////////////////////////////////////
-			//doubflo omega = omega_in;
+			//real omega = omega_in;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo oMdrho = one; // comp special
+			real oMdrho = one; // comp special
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo m0, m1, m2;	
-			doubflo vx2;
-			doubflo vy2;
-			doubflo vz2;
+			real m0, m1, m2;	
+			real vx2;
+			real vy2;
+			real vz2;
 			vx2=vvx*vvx;
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimitP = 0.01f;// * 0.0001f;
-			doubflo qudricLimitM = 0.01f;// * 0.0001f;
-			doubflo qudricLimitD = 0.01f;// * 0.001f;
-			doubflo qudricLimitOmega2 = 0.01f;
-			const doubflo gamma = 3400.f; //air
+			real wadjust;
+			real qudricLimitP = 0.01f;// * 0.0001f;
+			real qudricLimitM = 0.01f;// * 0.0001f;
+			real qudricLimitD = 0.01f;// * 0.001f;
+			real qudricLimitOmega2 = 0.01f;
+			const real gamma = 3400.f; //air
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
 			////////////////////////////////////////////////////////////////////////////////////
@@ -2674,56 +2674,56 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cumulants
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = four * omega / (four + three * gamma * (two - omega));//one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
+			real OxxPyyPzz = four * omega / (four + three * gamma * (two - omega));//one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
 
 			////////////////////////////////////////////////////////////
 			//3.
 			//////////////////////////////
 			//no bulk viscosity
-			//doubflo OxyyPxzz  = eight*(-two+omega)*(one+two*omega)/(-eight-fourteen*omega+seven*omega*omega);//one;
-			//doubflo OxyyMxzz  = eight*(-two+omega)*(-seven+four*omega)/(fiftysix-fifty*omega+nine*omega*omega);//one;
-			//doubflo Oxyz      = twentyfour*(-two+omega)*(-two-seven*omega+three*omega*omega)/(fourtyeight+c152*omega-c130*omega*omega+twentynine*omega*omega*omega);//one;
+			//real OxyyPxzz  = eight*(-two+omega)*(one+two*omega)/(-eight-fourteen*omega+seven*omega*omega);//one;
+			//real OxyyMxzz  = eight*(-two+omega)*(-seven+four*omega)/(fiftysix-fifty*omega+nine*omega*omega);//one;
+			//real Oxyz      = twentyfour*(-two+omega)*(-two-seven*omega+three*omega*omega)/(fourtyeight+c152*omega-c130*omega*omega+twentynine*omega*omega*omega);//one;
 			//with bulk viscosity
-			doubflo OxyyPxzz  = eight*(-two+omega)*(OxxPyyPzz * (-one+three*omega) - five * omega)/(eight * (five - two * omega) * omega + OxxPyyPzz * ( eight + omega * ( nine * omega - twentysix)));//one;
-			doubflo OxyyMxzz  = eight*(-two+omega)*(omega + OxxPyyPzz*(three * omega - seven))/(OxxPyyPzz * (fiftysix - fortytwo * omega + nine * omega * omega) - eight * omega);//one;
-			doubflo Oxyz      = twentyfour*(-two+omega)*(four*omega*omega + omega * OxxPyyPzz * (eighteen - thirteen * omega) + OxxPyyPzz * OxxPyyPzz * (two + omega * ( six * omega - eleven)))/
+			real OxyyPxzz  = eight*(-two+omega)*(OxxPyyPzz * (-one+three*omega) - five * omega)/(eight * (five - two * omega) * omega + OxxPyyPzz * ( eight + omega * ( nine * omega - twentysix)));//one;
+			real OxyyMxzz  = eight*(-two+omega)*(omega + OxxPyyPzz*(three * omega - seven))/(OxxPyyPzz * (fiftysix - fortytwo * omega + nine * omega * omega) - eight * omega);//one;
+			real Oxyz      = twentyfour*(-two+omega)*(four*omega*omega + omega * OxxPyyPzz * (eighteen - thirteen * omega) + OxxPyyPzz * OxxPyyPzz * (two + omega * ( six * omega - eleven)))/
 								(sixteen * omega * omega * ( omega - six ) - two * omega * OxxPyyPzz *( c216 + five  * omega * ( nine * omega - fourtysix )) + 
 								OxxPyyPzz * OxxPyyPzz * ( omega * ( three * omega - ten ) * ( fiveteen * omega - twentyeight ) - fourtyeight ));//one;
 			////////////////////////////////////////////////////////////
 			//4.
 			//////////////////////////////
-			doubflo O4        = one;
+			real O4        = one;
 			//////////////////////////////
-			//doubflo O4        = omega;//TRT
+			//real O4        = omega;//TRT
 			////////////////////////////////////////////////////////////
 			//5.
 			//////////////////////////////
-			doubflo O5        = one;
+			real O5        = one;
 			////////////////////////////////////////////////////////////
 			//6.
 			//////////////////////////////
-			doubflo O6        = one;
+			real O6        = one;
 			////////////////////////////////////////////////////////////
 
 
 			//central moments to cumulants
 			//4.
-			doubflo CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
-			doubflo CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
-			doubflo CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
 				  	 		
-			doubflo CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
-			doubflo CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
-			doubflo CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
 
 			//5.
-			doubflo CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
-			doubflo CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
-			doubflo CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
 			
 			//6.
 
-			doubflo CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
+			real CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
 							-           (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 							-    four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 							-     two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
@@ -2741,33 +2741,33 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(doubflo omega,
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 			
 			////////////////////////////////////////////////////////////////////////////
-            doubflo Dxy =-three*omega*mfbba;
-            doubflo Dxz =-three*omega*mfbab;
-            doubflo Dyz =-three*omega*mfabb;
+            real Dxy =-three*omega*mfbba;
+            real Dxz =-three*omega*mfbab;
+            real Dyz =-three*omega*mfabb;
 
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
  			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  			//incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
  			
- 				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
- 				doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
- 				doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+ 				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+ 				real dyuy = dxux + omega * c3o2 * mxxMyy;
+ 				real dzuz = dxux + omega * c3o2 * mxxMzz;
  
  				//relax
 				//with limiter (bulk)
@@ -2837,9 +2837,9 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(doubflo omega,
 			//4.
 			//////////////////////////////////////////////////////////////////////////
 			//mit limiter
-			doubflo A = ( four * omega * omega + two * omega * OxxPyyPzz * ( omega - six ) + OxxPyyPzz * OxxPyyPzz * ( omega * ( ten - three * omega ) - four )) /
+			real A = ( four * omega * omega + two * omega * OxxPyyPzz * ( omega - six ) + OxxPyyPzz * OxxPyyPzz * ( omega * ( ten - three * omega ) - four )) /
 				        ( ( omega - OxxPyyPzz ) * ( OxxPyyPzz * ( two + three * omega ) - eight * omega ) );
-			doubflo B = ( four * omega * OxxPyyPzz * ( nine * omega - sixteen ) - four * omega * omega - two * OxxPyyPzz * OxxPyyPzz * ( two + nine * omega * ( omega - two ))) /
+			real B = ( four * omega * OxxPyyPzz * ( nine * omega - sixteen ) - four * omega * omega - two * OxxPyyPzz * OxxPyyPzz * ( two + nine * omega * ( omega - two ))) /
 				        ( three * ( omega - OxxPyyPzz ) * ( OxxPyyPzz * ( two + three * omega ) - eight * omega ) );
 			//////////////////////////////////////////////////////////////////////////
 			//ohne limiter
@@ -3199,15 +3199,15 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_SP_27( doubflo omega,
+extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_SP_27( real omega,
 															unsigned int* bcMatD,
 															unsigned int* neighborX,
 															unsigned int* neighborY,
 															unsigned int* neighborZ,
-															doubflo* DDStart,
+															real* DDStart,
 															int size_Mat,
 															int level,
-															doubflo* forces,
+															real* forces,
 															bool EvenOrOdd)
 {
 	////////////////////////////////////////////////////////////////////////////////
@@ -3349,83 +3349,83 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_SP_27( doubflo omega,
 			//unsigned int ktne = k;
 			//unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			real mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			////////////////////////////////////////////////////////////////////////////////////
+			real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 							(((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 							((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb;
 
-			doubflo rho = one+drho;
+			real rho = one+drho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb)) / rho;
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab)) / rho;
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//the force be with you
-			doubflo fx = forces[0]/(pow(two,level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
-			doubflo fy = forces[1]/(pow(two,level)); //zero;
-			doubflo fz = forces[2]/(pow(two,level)); //zero;
+			real fx = forces[0]/(pow(two,level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+			real fy = forces[1]/(pow(two,level)); //zero;
+			real fz = forces[2]/(pow(two,level)); //zero;
 			vvx += fx*c1o2;
 			vvy += fy*c1o2;
 			vvz += fz*c1o2;
 			////////////////////////////////////////////////////////////////////////////////////
-			//doubflo omega = omega_in;
+			//real omega = omega_in;
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one; // comp special
-			//doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one; // comp special
+			//real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 			//					   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 			//					   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr
-			//doubflo vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
+			//real vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
 			//				mfcba-mfabc + mfcbc-mfaba + mfcab-mfacb + mfccb-mfaab +
 			//				mfcbb-mfabb;
-			//doubflo vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
+			//real vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
 			//				mfbca-mfbac + mfbcc-mfbaa + mfacb-mfcab + mfccb-mfaab +
 			//				mfbcb-mfbab;
-			//doubflo vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
+			//real vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
 			//				mfbac-mfbca + mfbcc-mfbaa + mfabc-mfcba + mfcbc-mfaba +
 			//				mfbbc-mfbba;
 			////////////////////////////////////////////////////////////////////////////////////
 			// oMdrho assembler style -------> faaaaaastaaaa
 			// or much sloooowaaaa ... it depändssssss on sadaku
-			doubflo m0, m1, m2;	
-			//doubflo oMdrho;
+			real m0, m1, m2;	
+			//real oMdrho;
 			//{
 			//	oMdrho=mfccc+mfaaa;
 			//	m0=mfaca+mfcac;
@@ -3453,8 +3453,8 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_SP_27( doubflo omega,
 			//	m0+=mfbbb; //hat gefehlt
 			//	oMdrho = one - (oMdrho + m0);
 			//}
-			//doubflo vvx;
-			doubflo vx2;
+			//real vvx;
+			real vx2;
 			//{
 			//	vvx = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -3474,8 +3474,8 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_SP_27( doubflo omega,
 			//	vx2 = mfcbb-mfabb;
 			//	vvx+= vx2;
 			//}
-			//doubflo vvy;
-			doubflo vy2;
+			//real vvy;
+			real vy2;
 			//{
 			//	vvy = mfccc-mfaaa;
 			//	m0  = mfaca-mfcac;
@@ -3495,8 +3495,8 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_SP_27( doubflo omega,
 			//	vy2 = mfbcb-mfbab;
 			//	vvy+= vy2;
 			//}
-			//doubflo vvz;
-			doubflo vz2;
+			//real vvz;
+			real vz2;
 			//{
 			//	vvz = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -3520,10 +3520,10 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_SP_27( doubflo omega,
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimitP = 0.01f;// * 0.0001f; // 1000000.0f; // 1000000.0f; //
-			doubflo qudricLimitM = 0.01f;// * 0.0001f; // 1000000.0f; // 1000000.0f; //
-			doubflo qudricLimitD = 0.01f;// * 0.001f;  // 1000000.0f; // 1000000.0f; //
+			real wadjust;
+			real qudricLimitP = 0.01f;// * 0.0001f; // 1000000.0f; // 1000000.0f; //
+			real qudricLimitM = 0.01f;// * 0.0001f; // 1000000.0f; // 1000000.0f; //
+			real qudricLimitD = 0.01f;// * 0.001f;  // 1000000.0f; // 1000000.0f; //
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
 			////////////////////////////////////////////////////////////////////////////////////
@@ -3757,49 +3757,49 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_SP_27( doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cumulants
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
+			real OxxPyyPzz = one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
 
 			////////////////////////////////////////////////////////////
 			//3.
 			//////////////////////////////
-			doubflo OxyyPxzz  = eight*(-two+omega)*(one+two*omega)/(-eight-fourteen*omega+seven*omega*omega);//one;
-			doubflo OxyyMxzz  = eight*(-two+omega)*(-seven+four*omega)/(fiftysix-fifty*omega+nine*omega*omega);//one;
-			doubflo Oxyz      = twentyfour*(-two+omega)*(-two-seven*omega+three*omega*omega)/(fourtyeight+c152*omega-c130*omega*omega+twentynine*omega*omega*omega);//one;
+			real OxyyPxzz  = eight*(-two+omega)*(one+two*omega)/(-eight-fourteen*omega+seven*omega*omega);//one;
+			real OxyyMxzz  = eight*(-two+omega)*(-seven+four*omega)/(fiftysix-fifty*omega+nine*omega*omega);//one;
+			real Oxyz      = twentyfour*(-two+omega)*(-two-seven*omega+three*omega*omega)/(fourtyeight+c152*omega-c130*omega*omega+twentynine*omega*omega*omega);//one;
 			////////////////////////////////////////////////////////////
 			//4.
 			//////////////////////////////
-			doubflo O4        = one;
+			real O4        = one;
 			//////////////////////////////
-			//doubflo O4        = omega;//TRT
+			//real O4        = omega;//TRT
 			////////////////////////////////////////////////////////////
 			//5.
 			//////////////////////////////
-			doubflo O5        = one;
+			real O5        = one;
 			////////////////////////////////////////////////////////////
 			//6.
 			//////////////////////////////
-			doubflo O6        = one;
+			real O6        = one;
 			////////////////////////////////////////////////////////////
 
 
 			//central moments to cumulants
 			//4.
-			doubflo CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
-			doubflo CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
-			doubflo CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
 				  	 		
-			doubflo CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
-			doubflo CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
-			doubflo CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
 
 			//5.
-			doubflo CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
-			doubflo CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
-			doubflo CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
 			
 			//6.
 
-			doubflo CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
+			real CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
 							-           (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 							-    four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 							-     two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
@@ -3814,33 +3814,33 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_SP_27( doubflo omega,
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 			
 			////////////////////////////////////////////////////////////////////////////
-            doubflo Dxy =-three*omega*mfbba;
-            doubflo Dxz =-three*omega*mfbab;
-            doubflo Dyz =-three*omega*mfabb;
+            real Dxy =-three*omega*mfbba;
+            real Dxz =-three*omega*mfbab;
+            real Dyz =-three*omega*mfabb;
 
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
  			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  			//incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
  			
- 				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
- 				doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
- 				doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+ 				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+ 				real dyuy = dxux + omega * c3o2 * mxxMyy;
+ 				real dzuz = dxux + omega * c3o2 * mxxMzz;
  
  				//relax
 				mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
@@ -3919,8 +3919,8 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_SP_27( doubflo omega,
  		//	wadjust    = O4+(one-O4)*abs(CUMcbb)/(abs(CUMcbb)+qudricLimit);
 			//CUMcbb    += wadjust * (-CUMcbb); 
 			//////////////////////////////////////////////////////////////////////////
-			doubflo A = (four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega);
-			doubflo B = (four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega);
+			real A = (four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega);
+			real B = (four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega);
 			//////////////////////////////////////////////////////////////////////////
 			//ohne limiter
 			//CUMacc += O4 * (-CUMacc); 
@@ -4270,15 +4270,15 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_SP_27( doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Kum_New_Comp_Bulk_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_Kum_New_Comp_Bulk_SP_27(real omega,
 															 unsigned int* bcMatD,
 															 unsigned int* neighborX,
 															 unsigned int* neighborY,
 															 unsigned int* neighborZ,
-															 doubflo* DDStart,
+															 real* DDStart,
 															 int size_Mat,
 															 int level,
-															 doubflo* forces,
+															 real* forces,
 															 bool EvenOrOdd)
 {
 	////////////////////////////////////////////////////////////////////////////////
@@ -4420,95 +4420,95 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_Bulk_SP_27(doubflo omega,
 			//unsigned int ktne = k;
 			//unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			real mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			////////////////////////////////////////////////////////////////////////////////////
+			real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 							(((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 							((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb;
 
-			doubflo rho = one+drho;
+			real rho = one+drho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb)) / rho;
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab)) / rho;
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//the force be with you
-			doubflo fx = forces[0]/(pow(two,level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
-			doubflo fy = forces[1]/(pow(two,level)); //zero;
-			doubflo fz = forces[2]/(pow(two,level)); //zero;
+			real fx = forces[0]/(pow(two,level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+			real fy = forces[1]/(pow(two,level)); //zero;
+			real fz = forces[2]/(pow(two,level)); //zero;
 			vvx += fx;
 			vvy += fy;
 			vvz += fz;
 			////////////////////////////////////////////////////////////////////////////////////
-			//doubflo omega = omega_in;
+			//real omega = omega_in;
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one; // comp special
-			//doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one; // comp special
+			//real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 			//					   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 			//					   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr
-			//doubflo vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
+			//real vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
 			//				mfcba-mfabc + mfcbc-mfaba + mfcab-mfacb + mfccb-mfaab +
 			//				mfcbb-mfabb;
-			//doubflo vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
+			//real vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
 			//				mfbca-mfbac + mfbcc-mfbaa + mfacb-mfcab + mfccb-mfaab +
 			//				mfbcb-mfbab;
-			//doubflo vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
+			//real vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
 			//				mfbac-mfbca + mfbcc-mfbaa + mfabc-mfcba + mfcbc-mfaba +
 			//				mfbbc-mfbba;
 			////////////////////////////////////////////////////////////////////////////////////
 			// oMdrho assembler style -------> faaaaaastaaaa
 			// or much sloooowaaaa ... it depändssssss on sadaku
-			doubflo m0, m1, m2;	
-			doubflo vx2;
-			doubflo vy2;
-			doubflo vz2;
+			real m0, m1, m2;	
+			real vx2;
+			real vy2;
+			real vz2;
 			vx2=vvx*vvx;
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimitP = 0.01f;// * 0.0001f;
-			doubflo qudricLimitM = 0.01f;// * 0.0001f;
-			doubflo qudricLimitD = 0.01f;// * 0.001f;
-			doubflo qudricLimitOmega2 = 0.01f;
-			const doubflo gamma = 3400.f; //air
+			real wadjust;
+			real qudricLimitP = 0.01f;// * 0.0001f;
+			real qudricLimitM = 0.01f;// * 0.0001f;
+			real qudricLimitD = 0.01f;// * 0.001f;
+			real qudricLimitOmega2 = 0.01f;
+			const real gamma = 3400.f; //air
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
 			////////////////////////////////////////////////////////////////////////////////////
@@ -4743,52 +4743,52 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_Bulk_SP_27(doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cumulants
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = four * omega / (four + three * gamma * (two - omega));//one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
+			real OxxPyyPzz = four * omega / (four + three * gamma * (two - omega));//one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
 
 			////////////////////////////////////////////////////////////
 			//3.
 			//////////////////////////////
-			doubflo OxyyPxzz  = one;
-			doubflo OxyyMxzz  = one;
-			doubflo Oxyz      = one;
+			real OxyyPxzz  = one;
+			real OxyyMxzz  = one;
+			real Oxyz      = one;
 			////////////////////////////////////////////////////////////
 			//4.
 			//////////////////////////////
-			doubflo O4        = one;
+			real O4        = one;
 			//////////////////////////////
-			//doubflo O4        = omega;//TRT
+			//real O4        = omega;//TRT
 			////////////////////////////////////////////////////////////
 			//5.
 			//////////////////////////////
-			doubflo O5        = one;
+			real O5        = one;
 			////////////////////////////////////////////////////////////
 			//6.
 			//////////////////////////////
-			doubflo O6        = one;
+			real O6        = one;
 			////////////////////////////////////////////////////////////
 
 
 			//central moments to cumulants
 			//4.
-			//doubflo CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab) / rho;  //bis 15.05.2015 verwendet
-			//doubflo CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb) / rho;  //bis 15.05.2015 verwendet
-			//doubflo CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb) / rho;  //bis 15.05.2015 verwendet
-			doubflo CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;	//ab 15.05.2015 verwendet
-			doubflo CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; //ab 15.05.2015 verwendet
-			doubflo CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; //ab 15.05.2015 verwendet
+			//real CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab) / rho;  //bis 15.05.2015 verwendet
+			//real CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb) / rho;  //bis 15.05.2015 verwendet
+			//real CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb) / rho;  //bis 15.05.2015 verwendet
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;	//ab 15.05.2015 verwendet
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; //ab 15.05.2015 verwendet
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; //ab 15.05.2015 verwendet
 				  	 		
-			doubflo CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
-			doubflo CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
-			doubflo CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
 
 			//5.
-			doubflo CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
-			doubflo CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
-			doubflo CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
 			
 			//6.
 
-			doubflo CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
+			real CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
 							-           (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 							-    four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 							-     two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
@@ -4803,16 +4803,16 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_Bulk_SP_27(doubflo omega,
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 			
  			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  			//incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
  			{
- 				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
- 				doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
- 				doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+ 				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+ 				real dyuy = dxux + omega * c3o2 * mxxMyy;
+ 				real dzuz = dxux + omega * c3o2 * mxxMzz;
  
  				//relax
 				//with limiter (bulk)
@@ -4844,14 +4844,14 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_Bulk_SP_27(doubflo omega,
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			//relax
 			//////////////////////////////////////////////////////////////////////////
@@ -5248,15 +5248,15 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_Bulk_SP_27(doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Kum_New_Comp_Sponge_SP_27(doubflo omegaIn,
+extern "C" __global__ void LB_Kernel_Kum_New_Comp_Sponge_SP_27(real omegaIn,
 															   unsigned int* bcMatD,
 														       unsigned int* neighborX,
 														       unsigned int* neighborY,
 														       unsigned int* neighborZ,
-													           doubflo* coordX,
-													           doubflo* coordY,
-													           doubflo* coordZ,
-														       doubflo* DDStart,
+													           real* coordX,
+													           real* coordY,
+													           real* coordZ,
+														       real* DDStart,
 														       int size_Mat,
 														       bool EvenOrOdd)
 {
@@ -5371,74 +5371,74 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_Sponge_SP_27(doubflo omegaIn,
 			//unsigned int ktne = k;
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];
-			doubflo mfabb = (D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];
-			doubflo mfbab = (D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];
-			doubflo mfbba = (D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];
-			doubflo mfaab = (D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];
-			doubflo mfacb = (D.f[dirNW  ])[kw ];
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];
-			doubflo mfaba = (D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];
-			doubflo mfabc = (D.f[dirTW  ])[kw ];
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];
-			doubflo mfbac = (D.f[dirTS  ])[ks ];
-			doubflo mfbbb = (D.f[dirZERO])[k  ];
-			doubflo mfccc = (D.f[dirTNE ])[k  ];
-			doubflo mfaac = (D.f[dirTSW ])[ksw];
-			doubflo mfcac = (D.f[dirTSE ])[ks ];
-			doubflo mfacc = (D.f[dirTNW ])[kw ];
-			doubflo mfcca = (D.f[dirBNE ])[kb ];
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];
-			doubflo mfaca = (D.f[dirBNW ])[kbw];
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			real mfcbb = (D.f[dirE   ])[k  ];
+			real mfabb = (D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];
+			real mfbab = (D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];
+			real mfbba = (D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];
+			real mfaab = (D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];
+			real mfacb = (D.f[dirNW  ])[kw ];
+			real mfcbc = (D.f[dirTE  ])[k  ];
+			real mfaba = (D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];
+			real mfabc = (D.f[dirTW  ])[kw ];
+			real mfbcc = (D.f[dirTN  ])[k  ];
+			real mfbaa = (D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];
+			real mfbac = (D.f[dirTS  ])[ks ];
+			real mfbbb = (D.f[dirZERO])[k  ];
+			real mfccc = (D.f[dirTNE ])[k  ];
+			real mfaac = (D.f[dirTSW ])[ksw];
+			real mfcac = (D.f[dirTSE ])[ks ];
+			real mfacc = (D.f[dirTNW ])[kw ];
+			real mfcca = (D.f[dirBNE ])[kb ];
+			real mfaaa = (D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];
+			real mfaca = (D.f[dirBNW ])[kbw];
+			////////////////////////////////////////////////////////////////////////////////////
+			real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 							(((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 							((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb;
 
-			doubflo rho = one+drho;
+			real rho = one+drho;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb)) / rho;
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab)) / rho;
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//the force be with you
-			doubflo fx = zero; //0.000000005;//(two/1600000.0) / 120.0; //zero;
-			doubflo fy = zero;
-			doubflo fz = zero;
+			real fx = zero; //0.000000005;//(two/1600000.0) / 120.0; //zero;
+			real fy = zero;
+			real fz = zero;
 			vvx += fx;
 			vvy += fy;
 			vvz += fz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo oMdrho = one; // comp special
+			real oMdrho = one; // comp special
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo m0, m1, m2;	
-			doubflo vx2 = vvx * vvx;
-			doubflo vy2 = vvy * vvy;
-			doubflo vz2 = vvz * vvz;
+			real m0, m1, m2;	
+			real vx2 = vvx * vvx;
+			real vy2 = vvy * vvy;
+			real vz2 = vvz * vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimit = 0.01f;
+			real wadjust;
+			real qudricLimit = 0.01f;
 			////////////////////////////////////////////////////////////////////////////////////
 			//sponge layer inflow
-			doubflo startXsponge = 1507.0f;//120.995703125;
-			doubflo endXsponge   = 1537.0f;//120.987890625;
-			doubflo sizeSponge = endXsponge - startXsponge; 
-			doubflo factor= one;
-			doubflo omega = factor * omegaIn;
+			real startXsponge = 1507.0f;//120.995703125;
+			real endXsponge   = 1537.0f;//120.987890625;
+			real sizeSponge = endXsponge - startXsponge; 
+			real factor= one;
+			real omega = factor * omegaIn;
 			if(coordX[k] > startXsponge){
 				factor = (((endXsponge - coordX[k]) / sizeSponge) * c1o2) + c1o2; 
 				omega = factor * omegaIn;
@@ -5684,66 +5684,66 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_Sponge_SP_27(doubflo omegaIn,
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cumulants
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = one;
+			real OxxPyyPzz = one;
 
 			////////////////////////////////////////////////////////////
 			//3.
 			//////////////////////////////
-			doubflo OxyyPxzz  = one;//two-omega;//(1000.*(-2. + omega))/(-1000. + 439.*omega);//(eight * (omega - two)) / (omega - eight);//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
-			doubflo OxyyMxzz  = one;//two-omega;//(1000.*(-2. + omega))/(-1000. + 439.*omega);//(eight * (omega - two)) / (omega - eight);//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
+			real OxyyPxzz  = one;//two-omega;//(1000.*(-2. + omega))/(-1000. + 439.*omega);//(eight * (omega - two)) / (omega - eight);//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
+			real OxyyMxzz  = one;//two-omega;//(1000.*(-2. + omega))/(-1000. + 439.*omega);//(eight * (omega - two)) / (omega - eight);//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
 			//////////////////////////////
-			//doubflo OxyyPxzz  = two-omega;//
-			//doubflo OxyyMxzz  = two-omega;//
+			//real OxyyPxzz  = two-omega;//
+			//real OxyyMxzz  = two-omega;//
 			//////////////////////////////
-			//doubflo OxyyPxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
-			//doubflo OxyyMxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
+			//real OxyyPxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
+			//real OxyyMxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
 			//////////////////////////////
-			//doubflo OxyyPxzz  = omega;//BGK
-			//doubflo OxyyMxzz  = omega;//BGK
+			//real OxyyPxzz  = omega;//BGK
+			//real OxyyMxzz  = omega;//BGK
 			//////////////////////////////
-			//doubflo OxyyPxzz  = (one + omega) / two;//1P5
-			//doubflo OxyyMxzz  = (one + omega) / two;//1P5
+			//real OxyyPxzz  = (one + omega) / two;//1P5
+			//real OxyyMxzz  = (one + omega) / two;//1P5
 			//////////////////////////////
-			//doubflo OxyyPxzz  = (three - omega) / two;//0P5
-			//doubflo OxyyMxzz  = (three - omega) / two;//0P5
+			//real OxyyPxzz  = (three - omega) / two;//0P5
+			//real OxyyMxzz  = (three - omega) / two;//0P5
 			//////////////////////////////
-			//doubflo OxyyPxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
-			//doubflo OxyyMxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
+			//real OxyyPxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
+			//real OxyyMxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
 			////////////////////////////////////////////////////////////
 			//4.
 			//////////////////////////////
-			doubflo O4        = one;
+			real O4        = one;
 			//////////////////////////////
-			//doubflo O4        = omega;//TRT
+			//real O4        = omega;//TRT
 			////////////////////////////////////////////////////////////
 			//5.
 			//////////////////////////////
-			doubflo O5        = one;
+			real O5        = one;
 			////////////////////////////////////////////////////////////
 			//6.
 			//////////////////////////////
-			doubflo O6        = one;
+			real O6        = one;
 			////////////////////////////////////////////////////////////
 
 
 			//central moments to cumulants
 			//4.
-			doubflo CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
-			doubflo CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
-			doubflo CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
 				  	 		
-			doubflo CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
-			doubflo CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
-			doubflo CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
 
 			//5.
-			doubflo CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
-			doubflo CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
-			doubflo CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
 			
 			//6.
 
-			doubflo CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
+			real CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
 							-           (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 							-    four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 							-     two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
@@ -5763,16 +5763,16 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_Sponge_SP_27(doubflo omegaIn,
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 			
  			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  			//incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
  			{
- 				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
- 				doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
- 				doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+ 				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+ 				real dyuy = dxux + omega * c3o2 * mxxMyy;
+ 				real dzuz = dxux + omega * c3o2 * mxxMzz;
  
  				//relax
  				mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
@@ -5800,14 +5800,14 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_Sponge_SP_27(doubflo omegaIn,
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			//relax
 			//////////////////////////////////////////////////////////////////////////
@@ -6207,15 +6207,15 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_Sponge_SP_27(doubflo omegaIn,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( doubflo omega,
+extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( real omega,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
-														doubflo* dxxUx,
-														doubflo* dyyUy,
-														doubflo* dzzUz,
+														real* DDStart,
+														real* dxxUx,
+														real* dyyUy,
+														real* dzzUz,
 														int size_Mat,
 														bool EvenOrOdd)
 {
@@ -6330,66 +6330,66 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( doubflo omega,
 			//unsigned int ktne = k;
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			real mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb));
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab));
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba));
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 								   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 								   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr
-			//doubflo vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
+			//real vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
 			//				mfcba-mfabc + mfcbc-mfaba + mfcab-mfacb + mfccb-mfaab +
 			//				mfcbb-mfabb;
-			//doubflo vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
+			//real vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
 			//				mfbca-mfbac + mfbcc-mfbaa + mfacb-mfcab + mfccb-mfaab +
 			//				mfbcb-mfbab;
-			//doubflo vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
+			//real vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
 			//				mfbac-mfbca + mfbcc-mfbaa + mfabc-mfcba + mfcbc-mfaba +
 			//				mfbbc-mfbba;
 			////////////////////////////////////////////////////////////////////////////////////
 			// oMdrho assembler style -------> faaaaaastaaaa
 			// or much sloooowaaaa ... it depändssssss on sadaku
-			doubflo m0, m1, m2;	
-			//doubflo oMdrho;
+			real m0, m1, m2;	
+			//real oMdrho;
 			//{
 			//	oMdrho=mfccc+mfaaa;
 			//	m0=mfaca+mfcac;
@@ -6417,8 +6417,8 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( doubflo omega,
 			//	m0+=mfbbb; //hat gefehlt
 			//	oMdrho = one - (oMdrho + m0);
 			//}
-			//doubflo vvx;
-			doubflo vx2;
+			//real vvx;
+			real vx2;
 			//{
 			//	vvx = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -6438,8 +6438,8 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( doubflo omega,
 			//	vx2 = mfcbb-mfabb;
 			//	vvx+= vx2;
 			//}
-			//doubflo vvy;
-			doubflo vy2;
+			//real vvy;
+			real vy2;
 			//{
 			//	vvy = mfccc-mfaaa;
 			//	m0  = mfaca-mfcac;
@@ -6459,8 +6459,8 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( doubflo omega,
 			//	vy2 = mfbcb-mfbab;
 			//	vvy+= vy2;
 			//}
-			//doubflo vvz;
-			doubflo vz2;
+			//real vvz;
+			real vz2;
 			//{
 			//	vvz = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -6484,9 +6484,9 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( doubflo omega,
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimit = 0.01f;
-			//doubflo s9 = minusomega;
+			real wadjust;
+			real qudricLimit = 0.01f;
+			//real s9 = minusomega;
 			//test
 			//s9 = 0.;
 			////////////////////////////////////////////////////////////////////////////////////
@@ -6767,29 +6767,29 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cumulants
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = one;
-			doubflo OxyyPxzz  = one;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
-			doubflo OxyyMxzz  = one;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
-			doubflo O4        = one;
-			doubflo O5        = one;
-			doubflo O6        = one;
+			real OxxPyyPzz = one;
+			real OxyyPxzz  = one;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
+			real OxyyMxzz  = one;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
+			real O4        = one;
+			real O5        = one;
+			real O6        = one;
 
 			//Cum 4.
-			doubflo CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab);
-			doubflo CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb);
-			doubflo CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb);
+			real CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab);
+			real CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb);
+			real CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb);
 
-			doubflo CUMcca = mfcca - (mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho;
-			doubflo CUMcac = mfcac - (mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-one)*oMdrho;
-			doubflo CUMacc = mfacc - (mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho;
+			real CUMcca = mfcca - (mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho;
+			real CUMcac = mfcac - (mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-one)*oMdrho;
+			real CUMacc = mfacc - (mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho;
 
 			//Cum 5.
-			doubflo CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) - c1o3 * (mfbca + mfbac) * oMdrho;
-			doubflo CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) - c1o3 * (mfcba + mfabc) * oMdrho;
-			doubflo CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) - c1o3 * (mfacb + mfcab) * oMdrho;
+			real CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) - c1o3 * (mfbca + mfbac) * oMdrho;
+			real CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) - c1o3 * (mfcba + mfabc) * oMdrho;
+			real CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) - c1o3 * (mfacb + mfcab) * oMdrho;
 
 			//Cum 6.
-			doubflo CUMccc = mfccc  +((-four *  mfbbb * mfbbb  
+			real CUMccc = mfccc  +((-four *  mfbbb * mfbbb  
 							-           (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 							-    four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 							-     two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb))
@@ -6807,20 +6807,20 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( doubflo omega,
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 
 			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//Iso Test Part 1
-			doubflo dxuydyux = -three * omega * mfbba;
-			doubflo dxuzdzux = -three * omega * mfbab;
-			doubflo dyuzdzuy = -three * omega * mfabb;
+			real dxuydyux = -three * omega * mfbba;
+			real dxuzdzux = -three * omega * mfbab;
+			real dyuzdzuy = -three * omega * mfabb;
 			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			{
-				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-				doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
-				doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+				real dyuy = dxux + omega * c3o2 * mxxMyy;
+				real dzuz = dxux + omega * c3o2 * mxxMzz;
 
 				//relax
 				mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -6844,22 +6844,22 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( doubflo omega,
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//Iso Test Part 2
 			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//precollision terms 3. moments
-			doubflo premxxyPyzz = mxxyPyzz;
-			doubflo premxxzPyyz = mxxzPyyz;
-			doubflo premxyyPxzz = mxyyPxzz;
+			real premxxyPyzz = mxxyPyzz;
+			real premxxzPyyz = mxxzPyyz;
+			real premxyyPxzz = mxyyPxzz;
 			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
@@ -6905,9 +6905,9 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( doubflo omega,
 			//Iso Test Part 3
 			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//precollision terms 5. moments
-			doubflo preCUMbcc = CUMbcc;
-			doubflo preCUMcbc = CUMcbc;
-			doubflo preCUMccb = CUMccb;
+			real preCUMbcc = CUMbcc;
+			real preCUMcbc = CUMcbc;
+			real preCUMccb = CUMccb;
 			//new calculation of 5. moments
 			CUMbcc = c2o3 * (one - c1o2 * O5) * (vvy * dxuydyux + vvz * dxuzdzux) * zero + (one - O5) * CUMbcc;
 			CUMcbc = c2o3 * (one - c1o2 * O5) * (vvx * dxuydyux + vvz * dyuzdzuy) * zero + (one - O5) * CUMcbc;
@@ -6922,9 +6922,9 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( doubflo omega,
 			//new calculation of 6. moment
 			CUMccc = O6 * c1o3 * (vx2 + vy2 + vz2) * zero + (one - O6) * CUMccc;
 			// second derivation of ux, uy, uz
-			doubflo dxxux = three * (c3o2 * (CUMbcc - preCUMbcc) - zero * (mxyyPxzz - premxyyPxzz));
-			doubflo dyyuy = three * (c3o2 * (CUMcbc - preCUMcbc) - zero * (mxxyPyzz - premxxyPyzz));
-			doubflo dzzuz = three * (c3o2 * (CUMccb - preCUMccb) - zero * (mxxzPyyz - premxxzPyyz));
+			real dxxux = three * (c3o2 * (CUMbcc - preCUMbcc) - zero * (mxyyPxzz - premxyyPxzz));
+			real dyyuy = three * (c3o2 * (CUMcbc - preCUMcbc) - zero * (mxxyPyzz - premxxyPyzz));
+			real dzzuz = three * (c3o2 * (CUMccb - preCUMccb) - zero * (mxxzPyyz - premxxzPyyz));
 			// copy local values to global arrays for paraview files 
 			dxxUx[k] = dxxux;
 			dyyUy[k] = dyyuy;
@@ -7246,17 +7246,17 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
-													doubflo deltaPhi,
-													doubflo angularVelocity,
+extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  real omega,
+													real deltaPhi,
+													real angularVelocity,
 													unsigned int* bcMatD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
-													doubflo* coordX,
-													doubflo* coordY,
-													doubflo* coordZ,
-													doubflo* DDStart,
+													real* coordX,
+													real* coordY,
+													real* coordZ,
+													real* DDStart,
 													int size_Mat,
 													bool EvenOrOdd)
 {
@@ -7399,79 +7399,79 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
 			//unsigned int ktne = k;
 			//unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			real mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
 			////////////////////////////////////////////////////////////////////////////////////
 			//Ship
-			doubflo coord0X = 281.125f;//7.5f;
-			doubflo coord0Y = 388.125f;//7.5f;
-			doubflo ux = - angularVelocity * (coordY[k] - coord0Y);
-			doubflo uy =   angularVelocity * (coordX[k] - coord0X);
+			real coord0X = 281.125f;//7.5f;
+			real coord0Y = 388.125f;//7.5f;
+			real ux = - angularVelocity * (coordY[k] - coord0Y);
+			real uy =   angularVelocity * (coordX[k] - coord0X);
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 				(((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 				(mfcbb-mfabb));
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				(((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				(mfbcb-mfbab));
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				(((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				(mfbbc-mfbba));
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo vxNeu = cosf(deltaPhi) * vvx - sinf(deltaPhi) * vvy; 
-			doubflo vyNeu = sinf(deltaPhi) * vvx + cosf(deltaPhi) * vvy; 
+			real vxNeu = cosf(deltaPhi) * vvx - sinf(deltaPhi) * vvy; 
+			real vyNeu = sinf(deltaPhi) * vvx + cosf(deltaPhi) * vvy; 
 
 
 
 
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 				mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 				mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr
-			//doubflo vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
+			//real vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
 			//				mfcba-mfabc + mfcbc-mfaba + mfcab-mfacb + mfccb-mfaab +
 			//				mfcbb-mfabb;
-			//doubflo vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
+			//real vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
 			//				mfbca-mfbac + mfbcc-mfbaa + mfacb-mfcab + mfccb-mfaab +
 			//				mfbcb-mfbab;
-			//doubflo vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
+			//real vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
 			//				mfbac-mfbca + mfbcc-mfbaa + mfabc-mfcba + mfcbc-mfaba +
 			//				mfbbc-mfbba;
 			////////////////////////////////////////////////////////////////////////////////////
 			// oMdrho assembler style -------> faaaaaastaaaa
 			// or much sloooowaaaa ... it depändssssss on sadaku
-			doubflo m0, m1, m2;	
-			//doubflo oMdrho;
+			real m0, m1, m2;	
+			//real oMdrho;
 			//{
 			//	oMdrho=mfccc+mfaaa;
 			//	m0=mfaca+mfcac;
@@ -7499,8 +7499,8 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
 			//	m0+=mfbbb; //hat gefehlt
 			//	oMdrho = one - (oMdrho + m0);
 			//}
-			//doubflo vvx;
-			doubflo vx2;
+			//real vvx;
+			real vx2;
 			//{
 			//	vvx = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -7520,8 +7520,8 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
 			//	vx2 = mfcbb-mfabb;
 			//	vvx+= vx2;
 			//}
-			//doubflo vvy;
-			doubflo vy2;
+			//real vvy;
+			real vy2;
 			//{
 			//	vvy = mfccc-mfaaa;
 			//	m0  = mfaca-mfcac;
@@ -7541,8 +7541,8 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
 			//	vy2 = mfbcb-mfbab;
 			//	vvy+= vy2;
 			//}
-			//doubflo vvz;
-			doubflo vz2;
+			//real vvz;
+			real vz2;
 			//{
 			//	vvz = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -7566,9 +7566,9 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimit = 0.01f;
-			//doubflo s9 = minusomega;
+			real wadjust;
+			real qudricLimit = 0.01f;
+			//real s9 = minusomega;
 			//test
 			//s9 = 0.;
 			////////////////////////////////////////////////////////////////////////////////////
@@ -7849,32 +7849,32 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
 			//////////////////////////////////////////////////////////////////////////////////////////
 			//////// Cumulants
 			//////////////////////////////////////////////////////////////////////////////////////////
-			//////doubflo OxxPyyPzz = one;
-			//////doubflo OxyyPxzz  = one;//two-omega;//
-			//////doubflo OxyyMxzz  = one;//two-omega;//
-			//////doubflo O4        = one;
-			//////doubflo O5        = one;
-			//////doubflo O6        = one;
+			//////real OxxPyyPzz = one;
+			//////real OxyyPxzz  = one;//two-omega;//
+			//////real OxyyMxzz  = one;//two-omega;//
+			//////real O4        = one;
+			//////real O5        = one;
+			//////real O6        = one;
 
 			////////Cum 4.
-			//////doubflo CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two* mfbba * mfbab);
-			//////doubflo CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two* mfbba * mfabb);
-			//////doubflo CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two* mfbab * mfabb); 
+			//////real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two* mfbba * mfbab);
+			//////real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two* mfbba * mfabb);
+			//////real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two* mfbab * mfabb); 
 
-			//////doubflo CUMcca = mfcca - (mfcaa * mfaca + two* mfbba * mfbba)- c1o3 * (mfcaa + mfaca);
-			//////doubflo CUMcac = mfcac - (mfcaa * mfaac + two* mfbab * mfbab)- c1o3 * (mfcaa + mfaac);
-			//////doubflo CUMacc = mfacc - (mfaac * mfaca + two* mfabb * mfabb)- c1o3 * (mfaac + mfaca);
+			//////real CUMcca = mfcca - (mfcaa * mfaca + two* mfbba * mfbba)- c1o3 * (mfcaa + mfaca);
+			//////real CUMcac = mfcac - (mfcaa * mfaac + two* mfbab * mfbab)- c1o3 * (mfcaa + mfaac);
+			//////real CUMacc = mfacc - (mfaac * mfaca + two* mfabb * mfabb)- c1o3 * (mfaac + mfaca);
 
 			////////Cum 5.
-			//////doubflo CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four* mfabb * mfbbb + two* (mfbab * mfacb + mfbba * mfabc)) //O(eps^5) 
+			//////real CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four* mfabb * mfbbb + two* (mfbab * mfacb + mfbba * mfabc)) //O(eps^5) 
 			//////				- c1o3 * (mfbca + mfbac); //O(eps^3)
-			//////doubflo CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four* mfbab * mfbbb + two* (mfabb * mfcab + mfbba * mfbac)) //O(eps^5)
+			//////real CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four* mfbab * mfbbb + two* (mfabb * mfcab + mfbba * mfbac)) //O(eps^5)
 			//////				- c1o3 * (mfcba + mfabc); //O(eps^3)
-			//////doubflo CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four* mfbba * mfbbb + two* (mfbab * mfbca + mfabb * mfcba)) //O(eps^5)
+			//////real CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four* mfbba * mfbbb + two* (mfbab * mfbca + mfabb * mfcba)) //O(eps^5)
 			//////				- c1o3 * (mfacb + mfcab);//O(eps^3)
 
 			////////Cum 6.
-			//////doubflo CUMccc = mfccc +(-four*  mfbbb * mfbbb  //O(eps^6)
+			//////real CUMccc = mfccc +(-four*  mfbbb * mfbbb  //O(eps^6)
 			//////	                   -       (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) // O(eps^4)
 			//////					   -  four* (mfabb * mfcbb + mfbac * mfbca + mfbba * mfbbc) // O(eps^6) 
 			//////					   -  two* (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) // O(esp^6)
@@ -7889,14 +7889,14 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
 
 			////////2.
 			//////// linear combinations
-			//////doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			//////doubflo mxxMyy    = mfcaa - mfaca;
-			//////doubflo mxxMzz	   = mfcaa - mfaac;
+			//////real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			//////real mxxMyy    = mfcaa - mfaca;
+			//////real mxxMzz	   = mfcaa - mfaac;
 
 			//////{
-			//////	doubflo dxux = c1o2 * ((-omega) * (mxxMyy + mxxMzz) + (mfaaa - mxxPyyPzz));
-			//////	doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
-			//////	doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+			//////	real dxux = c1o2 * ((-omega) * (mxxMyy + mxxMzz) + (mfaaa - mxxPyyPzz));
+			//////	real dyuy = dxux + omega * c3o2 * mxxMyy;
+			//////	real dzuz = dxux + omega * c3o2 * mxxMzz;
 
 			//////	//relax
 			//////	mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three* (one- c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -7914,14 +7914,14 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
 
 			////////3.
 			//////// linear combinations
-			//////doubflo mxxyPyzz = mfcba + mfabc;
-			//////doubflo mxxyMyzz = mfcba - mfabc;
+			//////real mxxyPyzz = mfcba + mfabc;
+			//////real mxxyMyzz = mfcba - mfabc;
 
-			//////doubflo mxxzPyyz = mfcab + mfacb;
-			//////doubflo mxxzMyyz = mfcab - mfacb;
+			//////real mxxzPyyz = mfcab + mfacb;
+			//////real mxxzMyyz = mfcab - mfacb;
 
-			//////doubflo mxyyPxzz = mfbca + mfbac;
-			//////doubflo mxyyMxzz = mfbca - mfbac;
+			//////real mxyyPxzz = mfbca + mfbac;
+			//////real mxyyMxzz = mfbca - mfbac;
 
 			////////relax
 			//////wadjust    = OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
@@ -7995,44 +7995,44 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cumulants
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = one;
-			doubflo OxyyPxzz  = one;//omega;//two-omega;//
-			doubflo OxyyMxzz  = two-omega;//one;// 
-			doubflo O4        = one;
-			doubflo O5        = one;
-			doubflo O6        = one;
+			real OxxPyyPzz = one;
+			real OxyyPxzz  = one;//omega;//two-omega;//
+			real OxyyMxzz  = two-omega;//one;// 
+			real O4        = one;
+			real O5        = one;
+			real O6        = one;
 
 			////Cum 4.
-			//doubflo CUMcbb;	doubflo CUMbcb;	doubflo CUMbbc;
-			//doubflo CUMcca;	doubflo CUMcac;	doubflo CUMacc;
+			//real CUMcbb;	real CUMbcb;	real CUMbbc;
+			//real CUMcca;	real CUMcac;	real CUMacc;
 			////Cum 5.
-			//doubflo CUMbcc;	doubflo CUMcbc;	doubflo CUMccb;
+			//real CUMbcc;	real CUMcbc;	real CUMccb;
 			////Cum 6.
-			//doubflo CUMccc;
+			//real CUMccc;
 
 			//Cum four
-			doubflo CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab);
-			doubflo CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb);
-			doubflo CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb);
+			real CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab);
+			real CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb);
+			real CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb);
 
-			doubflo CUMcca = mfcca - (mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho;
-			doubflo CUMcac = mfcac - (mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-one)*oMdrho;
-			doubflo CUMacc = mfacc - (mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho;
+			real CUMcca = mfcca - (mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho;
+			real CUMcac = mfcac - (mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-one)*oMdrho;
+			real CUMacc = mfacc - (mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho;
 
 			//Cum 5.
-			//doubflo CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) //O(eps^5) 
+			//real CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) //O(eps^5) 
 			//				- c1o3 * (mfbca + mfbac); //O(eps^3)
-			//doubflo CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) //O(eps^5)
+			//real CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) //O(eps^5)
 			//				- c1o3 * (mfcba + mfabc); //O(eps^3)
-			//doubflo CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) //O(eps^5)
+			//real CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) //O(eps^5)
 			//				- c1o3 * (mfacb + mfcab);//O(eps^3)
 
-			doubflo CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) - c1o3 * (mfbca + mfbac) * oMdrho;
-			doubflo CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) - c1o3 * (mfcba + mfabc) * oMdrho;
-			doubflo CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) - c1o3 * (mfacb + mfcab) * oMdrho;
+			real CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) - c1o3 * (mfbca + mfbac) * oMdrho;
+			real CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) - c1o3 * (mfcba + mfabc) * oMdrho;
+			real CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) - c1o3 * (mfacb + mfcab) * oMdrho;
 
 			//Cum 6.
-			doubflo CUMccc = mfccc  +((-four *  mfbbb * mfbbb  
+			real CUMccc = mfccc  +((-four *  mfbbb * mfbbb  
 				-           (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 				-    four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 				-     two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb))
@@ -8050,14 +8050,14 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 
 			{
-				doubflo dxux = zero;//c1o2 * (-omega) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-				doubflo dyuy = zero;//dxux + omega * c3o2 * mxxMyy;
-				doubflo dzuz = zero;//dxux + omega * c3o2 * mxxMzz;
+				real dxux = zero;//c1o2 * (-omega) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+				real dyuy = zero;//dxux + omega * c3o2 * mxxMyy;
+				real dzuz = zero;//dxux + omega * c3o2 * mxxMzz;
 
 				//relax
 				mxxPyyPzz += (OxxPyyPzz)*(mfaaa-two*(ux*vvx+uy*vvy)-ux*ux-uy*uy  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -8076,14 +8076,14 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			//relax
 			wadjust    = OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
@@ -8473,12 +8473,12 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
+extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     real omega,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
+														real* DDStart,
 														int size_Mat,
 														bool EvenOrOdd)
 {
@@ -8621,66 +8621,66 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
 			//unsigned int ktne = k;
 			//unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			real mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb));
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab));
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba));
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 								   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 								   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr
-			//doubflo vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
+			//real vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
 			//				mfcba-mfabc + mfcbc-mfaba + mfcab-mfacb + mfccb-mfaab +
 			//				mfcbb-mfabb;
-			//doubflo vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
+			//real vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
 			//				mfbca-mfbac + mfbcc-mfbaa + mfacb-mfcab + mfccb-mfaab +
 			//				mfbcb-mfbab;
-			//doubflo vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
+			//real vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
 			//				mfbac-mfbca + mfbcc-mfbaa + mfabc-mfcba + mfcbc-mfaba +
 			//				mfbbc-mfbba;
 			////////////////////////////////////////////////////////////////////////////////////
 			// oMdrho assembler style -------> faaaaaastaaaa
 			// or much sloooowaaaa ... it depändssssss on sadaku
-			doubflo m0, m1, m2;	
-			//doubflo oMdrho;
+			real m0, m1, m2;	
+			//real oMdrho;
 			//{
 			//	oMdrho=mfccc+mfaaa;
 			//	m0=mfaca+mfcac;
@@ -8708,8 +8708,8 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
 			//	m0+=mfbbb; //hat gefehlt
 			//	oMdrho = one - (oMdrho + m0);
 			//}
-			//doubflo vvx;
-			doubflo vx2;
+			//real vvx;
+			real vx2;
 			//{
 			//	vvx = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -8729,8 +8729,8 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
 			//	vx2 = mfcbb-mfabb;
 			//	vvx+= vx2;
 			//}
-			//doubflo vvy;
-			doubflo vy2;
+			//real vvy;
+			real vy2;
 			//{
 			//	vvy = mfccc-mfaaa;
 			//	m0  = mfaca-mfcac;
@@ -8750,8 +8750,8 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
 			//	vy2 = mfbcb-mfbab;
 			//	vvy+= vy2;
 			//}
-			//doubflo vvz;
-			doubflo vz2;
+			//real vvz;
+			real vz2;
 			//{
 			//	vvz = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -8775,9 +8775,9 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimit = 0.01f;
-			//doubflo s9 = minusomega;
+			real wadjust;
+			real qudricLimit = 0.01f;
+			//real s9 = minusomega;
 			//test
 			//s9 = 0.;
 			////////////////////////////////////////////////////////////////////////////////////
@@ -9058,32 +9058,32 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
 			//////////////////////////////////////////////////////////////////////////////////////////
 			//////// Cumulants
 			//////////////////////////////////////////////////////////////////////////////////////////
-			//////doubflo OxxPyyPzz = one;
-			//////doubflo OxyyPxzz  = one;//two-omega;//
-			//////doubflo OxyyMxzz  = one;//two-omega;//
-			//////doubflo O4        = one;
-			//////doubflo O5        = one;
-			//////doubflo O6        = one;
+			//////real OxxPyyPzz = one;
+			//////real OxyyPxzz  = one;//two-omega;//
+			//////real OxyyMxzz  = one;//two-omega;//
+			//////real O4        = one;
+			//////real O5        = one;
+			//////real O6        = one;
 
 			////////Cum 4.
-			//////doubflo CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two* mfbba * mfbab);
-			//////doubflo CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two* mfbba * mfabb);
-			//////doubflo CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two* mfbab * mfabb); 
+			//////real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two* mfbba * mfbab);
+			//////real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two* mfbba * mfabb);
+			//////real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two* mfbab * mfabb); 
 
-			//////doubflo CUMcca = mfcca - (mfcaa * mfaca + two* mfbba * mfbba)- c1o3 * (mfcaa + mfaca);
-			//////doubflo CUMcac = mfcac - (mfcaa * mfaac + two* mfbab * mfbab)- c1o3 * (mfcaa + mfaac);
-			//////doubflo CUMacc = mfacc - (mfaac * mfaca + two* mfabb * mfabb)- c1o3 * (mfaac + mfaca);
+			//////real CUMcca = mfcca - (mfcaa * mfaca + two* mfbba * mfbba)- c1o3 * (mfcaa + mfaca);
+			//////real CUMcac = mfcac - (mfcaa * mfaac + two* mfbab * mfbab)- c1o3 * (mfcaa + mfaac);
+			//////real CUMacc = mfacc - (mfaac * mfaca + two* mfabb * mfabb)- c1o3 * (mfaac + mfaca);
 
 			////////Cum 5.
-			//////doubflo CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four* mfabb * mfbbb + two* (mfbab * mfacb + mfbba * mfabc)) //O(eps^5) 
+			//////real CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four* mfabb * mfbbb + two* (mfbab * mfacb + mfbba * mfabc)) //O(eps^5) 
 			//////				- c1o3 * (mfbca + mfbac); //O(eps^3)
-			//////doubflo CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four* mfbab * mfbbb + two* (mfabb * mfcab + mfbba * mfbac)) //O(eps^5)
+			//////real CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four* mfbab * mfbbb + two* (mfabb * mfcab + mfbba * mfbac)) //O(eps^5)
 			//////				- c1o3 * (mfcba + mfabc); //O(eps^3)
-			//////doubflo CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four* mfbba * mfbbb + two* (mfbab * mfbca + mfabb * mfcba)) //O(eps^5)
+			//////real CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four* mfbba * mfbbb + two* (mfbab * mfbca + mfabb * mfcba)) //O(eps^5)
 			//////				- c1o3 * (mfacb + mfcab);//O(eps^3)
 
 			////////Cum 6.
-			//////doubflo CUMccc = mfccc +(-four*  mfbbb * mfbbb  //O(eps^6)
+			//////real CUMccc = mfccc +(-four*  mfbbb * mfbbb  //O(eps^6)
 			//////	                   -       (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca) // O(eps^4)
 			//////					   -  four* (mfabb * mfcbb + mfbac * mfbca + mfbba * mfbbc) // O(eps^6) 
 			//////					   -  two* (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) // O(esp^6)
@@ -9098,14 +9098,14 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
 
 			////////2.
 			//////// linear combinations
-			//////doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			//////doubflo mxxMyy    = mfcaa - mfaca;
-			//////doubflo mxxMzz	   = mfcaa - mfaac;
+			//////real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			//////real mxxMyy    = mfcaa - mfaca;
+			//////real mxxMzz	   = mfcaa - mfaac;
 
 			//////{
-			//////	doubflo dxux = c1o2 * ((-omega) * (mxxMyy + mxxMzz) + (mfaaa - mxxPyyPzz));
-			//////	doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
-			//////	doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+			//////	real dxux = c1o2 * ((-omega) * (mxxMyy + mxxMzz) + (mfaaa - mxxPyyPzz));
+			//////	real dyuy = dxux + omega * c3o2 * mxxMyy;
+			//////	real dzuz = dxux + omega * c3o2 * mxxMzz;
 
 			//////	//relax
 			//////	mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three* (one- c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -9123,14 +9123,14 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
 
 			////////3.
 			//////// linear combinations
-			//////doubflo mxxyPyzz = mfcba + mfabc;
-			//////doubflo mxxyMyzz = mfcba - mfabc;
+			//////real mxxyPyzz = mfcba + mfabc;
+			//////real mxxyMyzz = mfcba - mfabc;
 
-			//////doubflo mxxzPyyz = mfcab + mfacb;
-			//////doubflo mxxzMyyz = mfcab - mfacb;
+			//////real mxxzPyyz = mfcab + mfacb;
+			//////real mxxzMyyz = mfcab - mfacb;
 
-			//////doubflo mxyyPxzz = mfbca + mfbac;
-			//////doubflo mxyyMxzz = mfbca - mfbac;
+			//////real mxyyPxzz = mfbca + mfbac;
+			//////real mxyyMxzz = mfbca - mfbac;
 
 			////////relax
 			//////wadjust    = OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
@@ -9207,44 +9207,44 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cumulants
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = one;
-			doubflo OxyyPxzz  = eight*(two-omega)/(eight -omega);//one;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
-			doubflo OxyyMxzz  = eight*(two-omega)/(eight -omega);//one;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
-			doubflo O4        = one;
-			doubflo O5        = one;
-			doubflo O6        = one;
+			real OxxPyyPzz = one;
+			real OxyyPxzz  = eight*(two-omega)/(eight -omega);//one;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
+			real OxyyMxzz  = eight*(two-omega)/(eight -omega);//one;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
+			real O4        = one;
+			real O5        = one;
+			real O6        = one;
 
 			////Cum 4.
-			//doubflo CUMcbb;	doubflo CUMbcb;	doubflo CUMbbc;
-			//doubflo CUMcca;	doubflo CUMcac;	doubflo CUMacc;
+			//real CUMcbb;	real CUMbcb;	real CUMbbc;
+			//real CUMcca;	real CUMcac;	real CUMacc;
 			////Cum 5.
-			//doubflo CUMbcc;	doubflo CUMcbc;	doubflo CUMccb;
+			//real CUMbcc;	real CUMcbc;	real CUMccb;
 			////Cum 6.
-			//doubflo CUMccc;
+			//real CUMccc;
 
 			//Cum 4.
-			doubflo CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab); // /rho
-			doubflo CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb); // /rho
-			doubflo CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb); // /rho
+			real CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab); // /rho
+			real CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb); // /rho
+			real CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb); // /rho
 
-			doubflo CUMcca = mfcca - ((mfcaa * mfaca + two * mfbba * mfbba) /* /rho*/ + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho);
-			doubflo CUMcac = mfcac - ((mfcaa * mfaac + two * mfbab * mfbab) /* /rho*/ + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-one)*oMdrho);
-			doubflo CUMacc = mfacc - ((mfaac * mfaca + two * mfabb * mfabb) /* /rho*/ + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho);
+			real CUMcca = mfcca - ((mfcaa * mfaca + two * mfbba * mfbba) /* /rho*/ + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho);
+			real CUMcac = mfcac - ((mfcaa * mfaac + two * mfbab * mfbab) /* /rho*/ + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-one)*oMdrho);
+			real CUMacc = mfacc - ((mfaac * mfaca + two * mfabb * mfabb) /* /rho*/ + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho);
 
 			//Cum 5.
-			//doubflo CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) //O(eps^5) 
+			//real CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) //O(eps^5) 
 			//				- c1o3 * (mfbca + mfbac); //O(eps^3)
-			//doubflo CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) //O(eps^5)
+			//real CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) //O(eps^5)
 			//				- c1o3 * (mfcba + mfabc); //O(eps^3)
-			//doubflo CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) //O(eps^5)
+			//real CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) //O(eps^5)
 			//				- c1o3 * (mfacb + mfcab);//O(eps^3)
 
-			doubflo CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) - c1o3 * (mfbca + mfbac) * oMdrho;
-			doubflo CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) - c1o3 * (mfcba + mfabc) * oMdrho;
-			doubflo CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) - c1o3 * (mfacb + mfcab) * oMdrho;
+			real CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) - c1o3 * (mfbca + mfbac) * oMdrho;
+			real CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) - c1o3 * (mfcba + mfabc) * oMdrho;
+			real CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) - c1o3 * (mfacb + mfcab) * oMdrho;
 
 			//Cum 6.
-			doubflo CUMccc = mfccc  +((-four *  mfbbb * mfbbb  
+			real CUMccc = mfccc  +((-four *  mfbbb * mfbbb  
 							-           (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 							-    four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 							-     two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb))
@@ -9262,17 +9262,17 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 			
 			//////////////////////////////////////////////////////////////////////////
-			doubflo magicBulk=(CUMacc+CUMcac+CUMcca)*(one/OxxPyyPzz-c1o2)*c3o2*8.;
+			real magicBulk=(CUMacc+CUMcac+CUMcca)*(one/OxxPyyPzz-c1o2)*c3o2*8.;
 
 			//////////////////////////////////////////////////////////////////////////
 			//limiter-Scheise Teil 1
-			//doubflo oxxyy,oxxzz,oxy,oxz,oyz;
-			//doubflo smag=0.001;
+			//real oxxyy,oxxzz,oxy,oxz,oyz;
+			//real smag=0.001;
 			//oxxyy    = omega+(one-omega)*abs(mxxMyy)/(abs(mxxMyy)+smag);
 			//oxxzz    = omega+(one-omega)*abs(mxxMzz)/(abs(mxxMzz)+smag);
 			//oxy      = omega+(one-omega)*abs(mfbba)/(abs(mfbba)+smag);
@@ -9281,14 +9281,14 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
 
 			////////////////////////////////////////////////////////////////////////////
 			////Teil 1b
-			//doubflo constante = 1000.0;
-			//doubflo nuEddi = constante * abs(mxxPyyPzz);
-			//doubflo omegaLimit = one / (one / omega + three * nuEddi);
+			//real constante = 1000.0;
+			//real nuEddi = constante * abs(mxxPyyPzz);
+			//real omegaLimit = one / (one / omega + three * nuEddi);
 
 			//{
-			//	doubflo dxux = c1o2 * (-omegaLimit) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-			//	doubflo dyuy = dxux + omegaLimit * c3o2 * mxxMyy;
-			//	doubflo dzuz = dxux + omegaLimit * c3o2 * mxxMzz;
+			//	real dxux = c1o2 * (-omegaLimit) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+			//	real dyuy = dxux + omegaLimit * c3o2 * mxxMyy;
+			//	real dzuz = dxux + omegaLimit * c3o2 * mxxMzz;
 
 				////relax
 				//mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -9304,9 +9304,9 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
  			/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  			////incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
  			//{
- 			//	doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
- 			//	doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
- 			//	doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+ 			//	real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+ 			//	real dyuy = dxux + omega * c3o2 * mxxMyy;
+ 			//	real dzuz = dxux + omega * c3o2 * mxxMzz;
  
  			//	//relax
  			//	mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
@@ -9347,14 +9347,14 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			//relax
 // 			wadjust    = OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
@@ -9745,15 +9745,15 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27(     doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(real omega,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
+														real* DDStart,
 														int size_Mat,
 														int level,
-														doubflo* forces,
+														real* forces,
 														bool EvenOrOdd)
 {
 	////////////////////////////////////////////////////////////////////////////////
@@ -9895,83 +9895,83 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
 			//unsigned int ktne = k;
 			//unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			real mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			////////////////////////////////////////////////////////////////////////////////////
+			real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 							(((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 							((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb;
 
-			doubflo rho = one+drho;
+			real rho = one+drho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb)) / rho;
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab)) / rho;
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//the force be with you
-			doubflo fx = forces[0]/(pow(two,level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
-			doubflo fy = forces[1]/(pow(two,level)); //zero;
-			doubflo fz = forces[2]/(pow(two,level)); //zero;
+			real fx = forces[0]/(pow(two,level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+			real fy = forces[1]/(pow(two,level)); //zero;
+			real fz = forces[2]/(pow(two,level)); //zero;
 			vvx += fx*c1o2;
 			vvy += fy*c1o2;
 			vvz += fz*c1o2;
 			////////////////////////////////////////////////////////////////////////////////////
-			//doubflo omega = omega_in;
+			//real omega = omega_in;
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one; // comp special
-			//doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one; // comp special
+			//real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 			//					   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 			//					   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr
-			//doubflo vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
+			//real vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
 			//				mfcba-mfabc + mfcbc-mfaba + mfcab-mfacb + mfccb-mfaab +
 			//				mfcbb-mfabb;
-			//doubflo vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
+			//real vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
 			//				mfbca-mfbac + mfbcc-mfbaa + mfacb-mfcab + mfccb-mfaab +
 			//				mfbcb-mfbab;
-			//doubflo vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
+			//real vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
 			//				mfbac-mfbca + mfbcc-mfbaa + mfabc-mfcba + mfcbc-mfaba +
 			//				mfbbc-mfbba;
 			////////////////////////////////////////////////////////////////////////////////////
 			// oMdrho assembler style -------> faaaaaastaaaa
 			// or much sloooowaaaa ... it depändssssss on sadaku
-			doubflo m0, m1, m2;	
-			//doubflo oMdrho;
+			real m0, m1, m2;	
+			//real oMdrho;
 			//{
 			//	oMdrho=mfccc+mfaaa;
 			//	m0=mfaca+mfcac;
@@ -9999,8 +9999,8 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
 			//	m0+=mfbbb; //hat gefehlt
 			//	oMdrho = one - (oMdrho + m0);
 			//}
-			//doubflo vvx;
-			doubflo vx2;
+			//real vvx;
+			real vx2;
 			//{
 			//	vvx = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -10020,8 +10020,8 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
 			//	vx2 = mfcbb-mfabb;
 			//	vvx+= vx2;
 			//}
-			//doubflo vvy;
-			doubflo vy2;
+			//real vvy;
+			real vy2;
 			//{
 			//	vvy = mfccc-mfaaa;
 			//	m0  = mfaca-mfcac;
@@ -10041,8 +10041,8 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
 			//	vy2 = mfbcb-mfbab;
 			//	vvy+= vy2;
 			//}
-			//doubflo vvz;
-			doubflo vz2;
+			//real vvz;
+			real vz2;
 			//{
 			//	vvz = mfccc-mfaaa;
 			//	m0  = mfcac-mfaca;
@@ -10095,11 +10095,11 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
 			//mfcaa = (mfcaa - c1over216*(rho-one))/(rho);
 			//mfaca = (mfaca - c1over216*(rho-one))/(rho);
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimitP = 0.01f;// * 0.0001f;
-			doubflo qudricLimitM = 0.01f;// * 0.0001f;
-			doubflo qudricLimitD = 0.01f;// * 0.001f;
-			//doubflo s9 = minusomega;
+			real wadjust;
+			real qudricLimitP = 0.01f;// * 0.0001f;
+			real qudricLimitM = 0.01f;// * 0.0001f;
+			real qudricLimitD = 0.01f;// * 0.001f;
+			//real s9 = minusomega;
 			//test
 			//s9 = 0.;
 			////////////////////////////////////////////////////////////////////////////////////
@@ -10336,70 +10336,70 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cumulants
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = one; //omega; // one;	//set the bulk viscosity one is high / two is very low and zero is (too) high
+			real OxxPyyPzz = one; //omega; // one;	//set the bulk viscosity one is high / two is very low and zero is (too) high
 
 			////////////////////////////////////////////////////////////
 			//3.
 			//////////////////////////////
-			doubflo OxyyPxzz  = one;//three  * (two - omega) / (three  - omega);//one;//(1000.*(-2. + omega))/(-1000. + 439.*omega);//(eight * (omega - two)) / (omega - eight);//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
-			doubflo OxyyMxzz  = one;//six    * (two - omega) / (six    - omega);//one;//two-omega;//(1000.*(-2. + omega))/(-1000. + 439.*omega);//(eight * (omega - two)) / (omega - eight);//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
-			doubflo Oxyz      = one;//twelve * (two - omega) / (twelve + omega);//one;//two-omega;//(1000.*(-2. + omega))/(-1000. + 439.*omega);//(eight * (omega - two)) / (omega - eight);//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
+			real OxyyPxzz  = one;//three  * (two - omega) / (three  - omega);//one;//(1000.*(-2. + omega))/(-1000. + 439.*omega);//(eight * (omega - two)) / (omega - eight);//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
+			real OxyyMxzz  = one;//six    * (two - omega) / (six    - omega);//one;//two-omega;//(1000.*(-2. + omega))/(-1000. + 439.*omega);//(eight * (omega - two)) / (omega - eight);//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
+			real Oxyz      = one;//twelve * (two - omega) / (twelve + omega);//one;//two-omega;//(1000.*(-2. + omega))/(-1000. + 439.*omega);//(eight * (omega - two)) / (omega - eight);//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
 			//////////////////////////////
-			//doubflo OxyyPxzz  = two-omega;//
-			//doubflo OxyyMxzz  = two-omega;//
+			//real OxyyPxzz  = two-omega;//
+			//real OxyyMxzz  = two-omega;//
 			//////////////////////////////
-			//doubflo OxyyPxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
-			//doubflo OxyyMxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
+			//real OxyyPxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
+			//real OxyyMxzz  = (eight * (omega - two)) / (omega - eight);//Ginzburg
 			//////////////////////////////
-			//doubflo OxyyPxzz  = omega;//BGK
-			//doubflo OxyyMxzz  = omega;//BGK
+			//real OxyyPxzz  = omega;//BGK
+			//real OxyyMxzz  = omega;//BGK
 			//////////////////////////////
-			//doubflo OxyyPxzz  = (one + omega) / two;//1P5
-			//doubflo OxyyMxzz  = (one + omega) / two;//1P5
+			//real OxyyPxzz  = (one + omega) / two;//1P5
+			//real OxyyMxzz  = (one + omega) / two;//1P5
 			//////////////////////////////
-			//doubflo OxyyPxzz  = (three - omega) / two;//0P5
-			//doubflo OxyyMxzz  = (three - omega) / two;//0P5
+			//real OxyyPxzz  = (three - omega) / two;//0P5
+			//real OxyyMxzz  = (three - omega) / two;//0P5
 			//////////////////////////////
-			//doubflo OxyyPxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
-			//doubflo OxyyMxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
+			//real OxyyPxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
+			//real OxyyMxzz  = (one + (eight * (omega - two)) / (omega - eight)) / two;//one + Ginzburg / two ... Car
 			////////////////////////////////////////////////////////////
 			//4.
 			//////////////////////////////
-			doubflo O4        = one;
+			real O4        = one;
 			//////////////////////////////
-			//doubflo O4        = omega;//TRT
+			//real O4        = omega;//TRT
 			////////////////////////////////////////////////////////////
 			//5.
 			//////////////////////////////
-			doubflo O5        = one;
+			real O5        = one;
 			////////////////////////////////////////////////////////////
 			//6.
 			//////////////////////////////
-			doubflo O6        = one;
+			real O6        = one;
 			////////////////////////////////////////////////////////////
 
 
 			//central moments to cumulants
 			//4.
-			//doubflo CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab) / rho;  //bis 15.05.2015 verwendet
-			//doubflo CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb) / rho;  //bis 15.05.2015 verwendet
-			//doubflo CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb) / rho;  //bis 15.05.2015 verwendet
-			doubflo CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;	//ab 15.05.2015 verwendet
-			doubflo CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; //ab 15.05.2015 verwendet
-			doubflo CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; //ab 15.05.2015 verwendet
+			//real CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab) / rho;  //bis 15.05.2015 verwendet
+			//real CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb) / rho;  //bis 15.05.2015 verwendet
+			//real CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb) / rho;  //bis 15.05.2015 verwendet
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;	//ab 15.05.2015 verwendet
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; //ab 15.05.2015 verwendet
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; //ab 15.05.2015 verwendet
 				  	 		
-			doubflo CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
-			doubflo CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
-			doubflo CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
 
 			//5.
-			doubflo CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
-			doubflo CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
-			doubflo CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
 			
 			//6.
 
-			doubflo CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
+			real CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
 							-           (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 							-    four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 							-     two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
@@ -10417,21 +10417,21 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
 
 
 			////Cum 4.
-			//doubflo CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab)/rho; // 
-			//doubflo CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb)/rho; // 
-			//doubflo CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb)/rho; // 
+			//real CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab)/rho; // 
+			//real CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb)/rho; // 
+			//real CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb)/rho; // 
 
-			//doubflo CUMcca = mfcca - ((mfcaa * mfaca + two * mfbba * mfbba) /rho + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho);
-			//doubflo CUMcac = mfcac - ((mfcaa * mfaac + two * mfbab * mfbab) /rho + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-one)*oMdrho);
-			//doubflo CUMacc = mfacc - ((mfaac * mfaca + two * mfabb * mfabb) /rho + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho);
+			//real CUMcca = mfcca - ((mfcaa * mfaca + two * mfbba * mfbba) /rho + c1o3 * (mfcaa + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho);
+			//real CUMcac = mfcac - ((mfcaa * mfaac + two * mfbab * mfbab) /rho + c1o3 * (mfcaa + mfaac) * oMdrho + c1o9*(oMdrho-one)*oMdrho);
+			//real CUMacc = mfacc - ((mfaac * mfaca + two * mfabb * mfabb) /rho + c1o3 * (mfaac + mfaca) * oMdrho + c1o9*(oMdrho-one)*oMdrho);
 
 			////Cum 5.
-			//doubflo CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) / rho - c1o3 * (mfbca + mfbac) * oMdrho;
-			//doubflo CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) / rho - c1o3 * (mfcba + mfabc) * oMdrho;
-			//doubflo CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) / rho - c1o3 * (mfacb + mfcab) * oMdrho;
+			//real CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) / rho - c1o3 * (mfbca + mfbac) * oMdrho;
+			//real CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) / rho - c1o3 * (mfcba + mfabc) * oMdrho;
+			//real CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) / rho - c1o3 * (mfacb + mfcab) * oMdrho;
 
 			////Cum 6.
-			//doubflo CUMccc = mfccc  +((-four *  mfbbb * mfbbb  
+			//real CUMccc = mfccc  +((-four *  mfbbb * mfbbb  
 			//				-           (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 			//				-    four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 			//				-     two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
@@ -10449,17 +10449,17 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 			
 			//////////////////////////////////////////////////////////////////////////
-// 			doubflo magicBulk=(CUMacc+CUMcac+CUMcca)*(one/OxxPyyPzz-c1o2)*c3o2*8.;
+// 			real magicBulk=(CUMacc+CUMcac+CUMcca)*(one/OxxPyyPzz-c1o2)*c3o2*8.;
 
 			//////////////////////////////////////////////////////////////////////////
 			//limiter-Scheise Teil 1
-			//doubflo oxxyy,oxxzz,oxy,oxz,oyz;
-			//doubflo smag=0.001;
+			//real oxxyy,oxxzz,oxy,oxz,oyz;
+			//real smag=0.001;
 			//oxxyy    = omega+(one-omega)*abs(mxxMyy)/(abs(mxxMyy)+smag);
 			//oxxzz    = omega+(one-omega)*abs(mxxMzz)/(abs(mxxMzz)+smag);
 			//oxy      = omega+(one-omega)*abs(mfbba)/(abs(mfbba)+smag);
@@ -10468,14 +10468,14 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
 
 			////////////////////////////////////////////////////////////////////////////
 			////Teil 1b
-			//doubflo constante = 1000.0;
-			//doubflo nuEddi = constante * abs(mxxPyyPzz);
-			//doubflo omegaLimit = one / (one / omega + three * nuEddi);
+			//real constante = 1000.0;
+			//real nuEddi = constante * abs(mxxPyyPzz);
+			//real omegaLimit = one / (one / omega + three * nuEddi);
 
 			//{
-			//	doubflo dxux = c1o2 * (-omegaLimit) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-			//	doubflo dyuy = dxux + omegaLimit * c3o2 * mxxMyy;
-			//	doubflo dzuz = dxux + omegaLimit * c3o2 * mxxMzz;
+			//	real dxux = c1o2 * (-omegaLimit) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+			//	real dyuy = dxux + omegaLimit * c3o2 * mxxMyy;
+			//	real dzuz = dxux + omegaLimit * c3o2 * mxxMzz;
 
 				////relax
 				//mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -10491,9 +10491,9 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
  			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  			//incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
  			{
- 				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
- 				doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
- 				doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+ 				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+ 				real dyuy = dxux + omega * c3o2 * mxxMyy;
+ 				real dzuz = dxux + omega * c3o2 * mxxMzz;
  
  				//relax
  				mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
@@ -10534,14 +10534,14 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			//relax
 			//////////////////////////////////////////////////////////////////////////
@@ -11049,12 +11049,12 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27(    doubflo omega,
+extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27(    real omega,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
+														real* DDStart,
 														int size_Mat,
 														bool EvenOrOdd)
 {
@@ -11169,79 +11169,79 @@ extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27(    doubflo omega,
 			unsigned int ktne = k;
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo E     = (D.f[dirE   ])[ke   ];// +  c2over27 ;
-			doubflo W     = (D.f[dirW   ])[kw   ];// +  c2over27 ;
-			doubflo N     = (D.f[dirN   ])[kn   ];// +  c2over27 ;
-			doubflo S     = (D.f[dirS   ])[ks   ];// +  c2over27 ;
-			doubflo F     = (D.f[dirT   ])[kt   ];// +  c2over27 ;
-			doubflo B     = (D.f[dirB   ])[kb   ];// +  c2over27 ;
-			doubflo Ne    = (D.f[dirNE  ])[kne  ];// +  c1over54 ;
-			doubflo Sw    = (D.f[dirSW  ])[ksw  ];// +  c1over54 ;
-			doubflo Se    = (D.f[dirSE  ])[kse  ];// +  c1over54 ;
-			doubflo Nw    = (D.f[dirNW  ])[knw  ];// +  c1over54 ;
-			doubflo Ef    = (D.f[dirTE  ])[kte  ];// +  c1over54 ;
-			doubflo Wb    = (D.f[dirBW  ])[kbw  ];// +  c1over54 ;
-			doubflo Eb    = (D.f[dirBE  ])[kbe  ];// +  c1over54 ;
-			doubflo Wf    = (D.f[dirTW  ])[ktw  ];// +  c1over54 ;
-			doubflo Nf    = (D.f[dirTN  ])[ktn  ];// +  c1over54 ;
-			doubflo Sb    = (D.f[dirBS  ])[kbs  ];// +  c1over54 ;
-			doubflo Nb    = (D.f[dirBN  ])[kbn  ];// +  c1over54 ;
-			doubflo Sf    = (D.f[dirTS  ])[kts  ];// +  c1over54 ;
-			doubflo R     = (D.f[dirZERO])[kzero];// +  c8over27 ;
-			doubflo Nef   = (D.f[dirTNE ])[ktne ];// +  c1over216;
-			doubflo Swf   = (D.f[dirTSW ])[ktsw ];// +  c1over216;
-			doubflo Sef   = (D.f[dirTSE ])[ktse ];// +  c1over216;
-			doubflo Nwf   = (D.f[dirTNW ])[ktnw ];// +  c1over216;
-			doubflo Neb   = (D.f[dirBNE ])[kbne ];// +  c1over216;
-			doubflo Swb   = (D.f[dirBSW ])[kbsw ];// +  c1over216;
-			doubflo Seb   = (D.f[dirBSE ])[kbse ];// +  c1over216;
-			doubflo Nwb   = (D.f[dirBNW ])[kbnw ];// +  c1over216;
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo fx = zero;
-			doubflo fy = zero;
-			doubflo fz = zero;
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo rho=Nw+W+Sw+S+Se+E+Ne+N+R+Nf+Nb+Sf+Sb+Ef+Eb+Wf+Wb+Nwf+Nwb+Nef+Neb+Swf+Swb+Sef+Seb+F+B+one;// ACHTUNG ne EINS !!!!!!!!
-			doubflo pix=(Ne+E+Se+Ef+Eb-Nw-W-Sw-Wf-Wb+Nef+Neb+Sef+Seb-Nwf-Nwb-Swf-Swb);
-			doubflo piy=(Ne+N+Nw+Nf+Nb-Se-S-Sw-Sf-Sb+Nef+Neb+Nwf+Nwb-Sef-Seb-Swf-Swb);
-			doubflo piz=(Nf+Sf+Wf+Ef+F-Nb-Sb-Wb-Eb-B+Nef+Nwf+Sef+Swf-Neb-Nwb-Seb-Swb);
-			doubflo vvx=pix/rho + fx;
-			doubflo vvy=piy/rho + fy;
-			doubflo vvz=piz/rho + fz;
-			doubflo vx2=vvx*vvx;
-			doubflo vy2=vvy*vvy;
-			doubflo vz2=vvz*vvz;
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfaaa = Swb;
-			doubflo mfaab = Sw;
-			doubflo mfaac = Swf;
-			doubflo mfaba = Wb;
-			doubflo mfabb = W;
-			doubflo mfabc = Wf;
-			doubflo mfbaa = Sb;
-			doubflo mfbab = S;
-			doubflo mfbac = Sf;
-			doubflo mfbba = B;
-			doubflo mfbbb = R;
-			doubflo mfbbc = F;
-			doubflo mfaca = Nwb;
-			doubflo mfacb = Nw;
-			doubflo mfacc = Nwf;
-			doubflo mfcaa = Seb;
-			doubflo mfcab = Se;
-			doubflo mfcac = Sef;
-			doubflo mfcca = Neb;
-			doubflo mfccb = Ne;
-			doubflo mfccc = Nef;
-			doubflo mfbca = Nb;
-			doubflo mfbcb = N;
-			doubflo mfbcc = Nf;
-			doubflo mfcba = Eb;
-			doubflo mfcbb = E;
-			doubflo mfcbc = Ef;
-			doubflo m0, m1, m2;
-			doubflo wadjust;
-			doubflo qudricLimit = c1o100;
+			real E     = (D.f[dirE   ])[ke   ];// +  c2over27 ;
+			real W     = (D.f[dirW   ])[kw   ];// +  c2over27 ;
+			real N     = (D.f[dirN   ])[kn   ];// +  c2over27 ;
+			real S     = (D.f[dirS   ])[ks   ];// +  c2over27 ;
+			real F     = (D.f[dirT   ])[kt   ];// +  c2over27 ;
+			real B     = (D.f[dirB   ])[kb   ];// +  c2over27 ;
+			real Ne    = (D.f[dirNE  ])[kne  ];// +  c1over54 ;
+			real Sw    = (D.f[dirSW  ])[ksw  ];// +  c1over54 ;
+			real Se    = (D.f[dirSE  ])[kse  ];// +  c1over54 ;
+			real Nw    = (D.f[dirNW  ])[knw  ];// +  c1over54 ;
+			real Ef    = (D.f[dirTE  ])[kte  ];// +  c1over54 ;
+			real Wb    = (D.f[dirBW  ])[kbw  ];// +  c1over54 ;
+			real Eb    = (D.f[dirBE  ])[kbe  ];// +  c1over54 ;
+			real Wf    = (D.f[dirTW  ])[ktw  ];// +  c1over54 ;
+			real Nf    = (D.f[dirTN  ])[ktn  ];// +  c1over54 ;
+			real Sb    = (D.f[dirBS  ])[kbs  ];// +  c1over54 ;
+			real Nb    = (D.f[dirBN  ])[kbn  ];// +  c1over54 ;
+			real Sf    = (D.f[dirTS  ])[kts  ];// +  c1over54 ;
+			real R     = (D.f[dirZERO])[kzero];// +  c8over27 ;
+			real Nef   = (D.f[dirTNE ])[ktne ];// +  c1over216;
+			real Swf   = (D.f[dirTSW ])[ktsw ];// +  c1over216;
+			real Sef   = (D.f[dirTSE ])[ktse ];// +  c1over216;
+			real Nwf   = (D.f[dirTNW ])[ktnw ];// +  c1over216;
+			real Neb   = (D.f[dirBNE ])[kbne ];// +  c1over216;
+			real Swb   = (D.f[dirBSW ])[kbsw ];// +  c1over216;
+			real Seb   = (D.f[dirBSE ])[kbse ];// +  c1over216;
+			real Nwb   = (D.f[dirBNW ])[kbnw ];// +  c1over216;
+			////////////////////////////////////////////////////////////////////////////////////
+			real fx = zero;
+			real fy = zero;
+			real fz = zero;
+			////////////////////////////////////////////////////////////////////////////////////
+			real rho=Nw+W+Sw+S+Se+E+Ne+N+R+Nf+Nb+Sf+Sb+Ef+Eb+Wf+Wb+Nwf+Nwb+Nef+Neb+Swf+Swb+Sef+Seb+F+B+one;// ACHTUNG ne EINS !!!!!!!!
+			real pix=(Ne+E+Se+Ef+Eb-Nw-W-Sw-Wf-Wb+Nef+Neb+Sef+Seb-Nwf-Nwb-Swf-Swb);
+			real piy=(Ne+N+Nw+Nf+Nb-Se-S-Sw-Sf-Sb+Nef+Neb+Nwf+Nwb-Sef-Seb-Swf-Swb);
+			real piz=(Nf+Sf+Wf+Ef+F-Nb-Sb-Wb-Eb-B+Nef+Nwf+Sef+Swf-Neb-Nwb-Seb-Swb);
+			real vvx=pix/rho + fx;
+			real vvy=piy/rho + fy;
+			real vvz=piz/rho + fz;
+			real vx2=vvx*vvx;
+			real vy2=vvy*vvy;
+			real vz2=vvz*vvz;
+			////////////////////////////////////////////////////////////////////////////////////
+			real mfaaa = Swb;
+			real mfaab = Sw;
+			real mfaac = Swf;
+			real mfaba = Wb;
+			real mfabb = W;
+			real mfabc = Wf;
+			real mfbaa = Sb;
+			real mfbab = S;
+			real mfbac = Sf;
+			real mfbba = B;
+			real mfbbb = R;
+			real mfbbc = F;
+			real mfaca = Nwb;
+			real mfacb = Nw;
+			real mfacc = Nwf;
+			real mfcaa = Seb;
+			real mfcab = Se;
+			real mfcac = Sef;
+			real mfcca = Neb;
+			real mfccb = Ne;
+			real mfccc = Nef;
+			real mfbca = Nb;
+			real mfbcb = N;
+			real mfbcc = Nf;
+			real mfcba = Eb;
+			real mfcbb = E;
+			real mfcbc = Ef;
+			real m0, m1, m2;
+			real wadjust;
+			real qudricLimit = c1o100;
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
 			////////////////////////////////////////////////////////////////////////////////////
@@ -11520,29 +11520,29 @@ extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27(    doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cumulants
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = one;
-			doubflo OxyyPxzz  = one;//two+(-omega);//one;
-			doubflo OxyyMxzz  = one;//two+(-omega);//one;
-			doubflo O4        = one;
-			doubflo O5        = one;
-			doubflo O6        = one;
+			real OxxPyyPzz = one;
+			real OxyyPxzz  = one;//two+(-omega);//one;
+			real OxyyMxzz  = one;//two+(-omega);//one;
+			real O4        = one;
+			real O5        = one;
+			real O6        = one;
 
 			//Cum 4.
-			doubflo CUMcbb = mfcbb - ((mfcaa + c1o3 * rho) * mfabb + two* mfbba * mfbab) / rho;
-			doubflo CUMbcb = mfbcb - ((mfaca + c1o3 * rho) * mfbab + two* mfbba * mfabb) / rho;
-			doubflo CUMbbc = mfbbc - ((mfaac + c1o3 * rho) * mfbba + two* mfbab * mfabb) / rho; 
+			real CUMcbb = mfcbb - ((mfcaa + c1o3 * rho) * mfabb + two* mfbba * mfbab) / rho;
+			real CUMbcb = mfbcb - ((mfaca + c1o3 * rho) * mfbab + two* mfbba * mfabb) / rho;
+			real CUMbbc = mfbbc - ((mfaac + c1o3 * rho) * mfbba + two* mfbab * mfabb) / rho; 
 
-			doubflo CUMcca = mfcca - (mfcaa * mfaca + two* mfbba * mfbba) / rho - c1o3 * (mfcaa + mfaca);
-			doubflo CUMcac = mfcac - (mfcaa * mfaac + two* mfbab * mfbab) / rho - c1o3 * (mfcaa + mfaac);
-			doubflo CUMacc = mfacc - (mfaac * mfaca + two* mfabb * mfabb) / rho - c1o3 * (mfaac + mfaca);
+			real CUMcca = mfcca - (mfcaa * mfaca + two* mfbba * mfbba) / rho - c1o3 * (mfcaa + mfaca);
+			real CUMcac = mfcac - (mfcaa * mfaac + two* mfbab * mfbab) / rho - c1o3 * (mfcaa + mfaac);
+			real CUMacc = mfacc - (mfaac * mfaca + two* mfabb * mfabb) / rho - c1o3 * (mfaac + mfaca);
 
 			//Cum 5.
-			doubflo CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four* mfabb * mfbbb + two* (mfbab * mfacb + mfbba * mfabc)) / rho - c1o3 * (mfbca + mfbac);
-			doubflo CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four* mfbab * mfbbb + two* (mfabb * mfcab + mfbba * mfbac)) / rho - c1o3 * (mfcba + mfabc);
-			doubflo CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four* mfbba * mfbbb + two* (mfbab * mfbca + mfabb * mfcba)) / rho - c1o3 * (mfacb + mfcab);
+			real CUMbcc = mfbcc - (mfaac * mfbca + mfaca * mfbac + four* mfabb * mfbbb + two* (mfbab * mfacb + mfbba * mfabc)) / rho - c1o3 * (mfbca + mfbac);
+			real CUMcbc = mfcbc - (mfaac * mfcba + mfcaa * mfabc + four* mfbab * mfbbb + two* (mfabb * mfcab + mfbba * mfbac)) / rho - c1o3 * (mfcba + mfabc);
+			real CUMccb = mfccb - (mfcaa * mfacb + mfaca * mfcab + four* mfbba * mfbbb + two* (mfbab * mfbca + mfabb * mfcba)) / rho - c1o3 * (mfacb + mfcab);
 
 			//Cum 6.
-			doubflo CUMccc = mfccc  +(  -four*  mfbbb * mfbbb  
+			real CUMccc = mfccc  +(  -four*  mfbbb * mfbbb  
 									-          (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 									-    four* (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 									-     two* (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
@@ -11557,16 +11557,16 @@ extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27(    doubflo omega,
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 
 			//relax
 			//hat noch nicht so gut funktioniert...Optimierungsbedarf
 			//{
-			//	doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-			//	doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
-			//	doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+			//	real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+			//	real dyuy = dxux + omega * c3o2 * mxxMyy;
+			//	real dzuz = dxux + omega * c3o2 * mxxMzz;
 
 			//	//relax
 			//	mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -11584,9 +11584,9 @@ extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27(    doubflo omega,
  			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  			//incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
  			{
- 				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
- 				doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
- 				doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+ 				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+ 				real dyuy = dxux + omega * c3o2 * mxxMyy;
+ 				real dzuz = dxux + omega * c3o2 * mxxMzz;
  
  				//relax
  				mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
@@ -11619,14 +11619,14 @@ extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27(    doubflo omega,
 
 			//3.
 			// linear combinations
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			//relax
 			wadjust    = OxyyMxzz+(one-OxyyMxzz)*abs(mfbbb)/(abs(mfbbb)+qudricLimit);
@@ -11989,12 +11989,12 @@ extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27(    doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
+extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   real omega,
                                                        unsigned int* bcMatD,
                                                        unsigned int* neighborX,
                                                        unsigned int* neighborY,
                                                        unsigned int* neighborZ,
-                                                       doubflo* DDStart,
+                                                       real* DDStart,
                                                        int size_Mat,
                                                        bool EvenOrOdd)
 {
@@ -12109,49 +12109,49 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
   //       unsigned int ktne = k;
   //       unsigned int kbsw = neighborZ[ksw];
   //       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-  //       doubflo E     = (D.f[dirE   ])[ke   ] +  c2over27 ;
-  //       doubflo W     = (D.f[dirW   ])[kw   ] +  c2over27 ;
-  //       doubflo N     = (D.f[dirN   ])[kn   ] +  c2over27 ;
-  //       doubflo S     = (D.f[dirS   ])[ks   ] +  c2over27 ;
-  //       doubflo F     = (D.f[dirT   ])[kt   ] +  c2over27 ;
-  //       doubflo B     = (D.f[dirB   ])[kb   ] +  c2over27 ;
-  //       doubflo Ne    = (D.f[dirNE  ])[kne  ] +  c1over54 ;
-  //       doubflo Sw    = (D.f[dirSW  ])[ksw  ] +  c1over54 ;
-  //       doubflo Se    = (D.f[dirSE  ])[kse  ] +  c1over54 ;
-  //       doubflo Nw    = (D.f[dirNW  ])[knw  ] +  c1over54 ;
-  //       doubflo Ef    = (D.f[dirTE  ])[kte  ] +  c1over54 ;
-  //       doubflo Wb    = (D.f[dirBW  ])[kbw  ] +  c1over54 ;
-  //       doubflo Eb    = (D.f[dirBE  ])[kbe  ] +  c1over54 ;
-  //       doubflo Wf    = (D.f[dirTW  ])[ktw  ] +  c1over54 ;
-  //       doubflo Nf    = (D.f[dirTN  ])[ktn  ] +  c1over54 ;
-  //       doubflo Sb    = (D.f[dirBS  ])[kbs  ] +  c1over54 ;
-  //       doubflo Nb    = (D.f[dirBN  ])[kbn  ] +  c1over54 ;
-  //       doubflo Sf    = (D.f[dirTS  ])[kts  ] +  c1over54 ;
-  //       doubflo R     = (D.f[dirZERO])[kzero] +  c8over27 ;
-  //       doubflo Nef   = (D.f[dirTNE ])[ktne ] +  c1over216;
-  //       doubflo Swf   = (D.f[dirTSW ])[ktsw ] +  c1over216;
-  //       doubflo Sef   = (D.f[dirTSE ])[ktse ] +  c1over216;
-  //       doubflo Nwf   = (D.f[dirTNW ])[ktnw ] +  c1over216;
-  //       doubflo Neb   = (D.f[dirBNE ])[kbne ] +  c1over216;
-  //       doubflo Swb   = (D.f[dirBSW ])[kbsw ] +  c1over216;
-  //       doubflo Seb   = (D.f[dirBSE ])[kbse ] +  c1over216;
-  //       doubflo Nwb   = (D.f[dirBNW ])[kbnw ] +  c1over216;
+  //       real E     = (D.f[dirE   ])[ke   ] +  c2over27 ;
+  //       real W     = (D.f[dirW   ])[kw   ] +  c2over27 ;
+  //       real N     = (D.f[dirN   ])[kn   ] +  c2over27 ;
+  //       real S     = (D.f[dirS   ])[ks   ] +  c2over27 ;
+  //       real F     = (D.f[dirT   ])[kt   ] +  c2over27 ;
+  //       real B     = (D.f[dirB   ])[kb   ] +  c2over27 ;
+  //       real Ne    = (D.f[dirNE  ])[kne  ] +  c1over54 ;
+  //       real Sw    = (D.f[dirSW  ])[ksw  ] +  c1over54 ;
+  //       real Se    = (D.f[dirSE  ])[kse  ] +  c1over54 ;
+  //       real Nw    = (D.f[dirNW  ])[knw  ] +  c1over54 ;
+  //       real Ef    = (D.f[dirTE  ])[kte  ] +  c1over54 ;
+  //       real Wb    = (D.f[dirBW  ])[kbw  ] +  c1over54 ;
+  //       real Eb    = (D.f[dirBE  ])[kbe  ] +  c1over54 ;
+  //       real Wf    = (D.f[dirTW  ])[ktw  ] +  c1over54 ;
+  //       real Nf    = (D.f[dirTN  ])[ktn  ] +  c1over54 ;
+  //       real Sb    = (D.f[dirBS  ])[kbs  ] +  c1over54 ;
+  //       real Nb    = (D.f[dirBN  ])[kbn  ] +  c1over54 ;
+  //       real Sf    = (D.f[dirTS  ])[kts  ] +  c1over54 ;
+  //       real R     = (D.f[dirZERO])[kzero] +  c8over27 ;
+  //       real Nef   = (D.f[dirTNE ])[ktne ] +  c1over216;
+  //       real Swf   = (D.f[dirTSW ])[ktsw ] +  c1over216;
+  //       real Sef   = (D.f[dirTSE ])[ktse ] +  c1over216;
+  //       real Nwf   = (D.f[dirTNW ])[ktnw ] +  c1over216;
+  //       real Neb   = (D.f[dirBNE ])[kbne ] +  c1over216;
+  //       real Swb   = (D.f[dirBSW ])[kbsw ] +  c1over216;
+  //       real Seb   = (D.f[dirBSE ])[kbse ] +  c1over216;
+  //       real Nwb   = (D.f[dirBNW ])[kbnw ] +  c1over216;
   //       ////////////////////////////////////////////////////////////////////////////////////
-		// doubflo o1   = omega;
-		// doubflo om3  = two - omega;
-		// doubflo om4  = two - omega;
-		// doubflo om5  = one;
-		// doubflo om6  = one;
-		// doubflo om7  = one;
-		// doubflo om8  = two - omega;
-		// doubflo om9  = one;
-		// doubflo om10 = one;
-		// doubflo om11 = one;
-		// doubflo QuadricLimiter = c1o100;
-		// doubflo vvx, vvy, vvz;
-		// doubflo pix, piy, piz;
-		// doubflo vx2,vy2,vz2;
-  //       doubflo rho=Nw+W+Sw+S+Se+E+Ne+N+R+Nf+Nb+Sf+Sb+Ef+Eb+Wf+Wb+Nwf+Nwb+Nef+Neb+Swf+Swb+Sef+Seb+F+B;
+		// real o1   = omega;
+		// real om3  = two - omega;
+		// real om4  = two - omega;
+		// real om5  = one;
+		// real om6  = one;
+		// real om7  = one;
+		// real om8  = two - omega;
+		// real om9  = one;
+		// real om10 = one;
+		// real om11 = one;
+		// real QuadricLimiter = c1o100;
+		// real vvx, vvy, vvz;
+		// real pix, piy, piz;
+		// real vx2,vy2,vz2;
+  //       real rho=Nw+W+Sw+S+Se+E+Ne+N+R+Nf+Nb+Sf+Sb+Ef+Eb+Wf+Wb+Nwf+Nwb+Nef+Neb+Swf+Swb+Sef+Seb+F+B;
 		// pix=(Ne+E+Se+Ef+Eb-Nw-W-Sw-Wf-Wb+Nef+Neb+Sef+Seb-Nwf-Nwb-Swf-Swb);
 		// piy=(Ne+N+Nw+Nf+Nb-Se-S-Sw-Sf-Sb+Nef+Neb+Nwf+Nwb-Sef-Seb-Swf-Swb);
 		// piz=(Nf+Sf+Wf+Ef+F-Nb-Sb-Wb-Eb-B+Nef+Nwf+Sef+Swf-Neb-Nwb-Seb-Swb);
@@ -12163,8 +12163,8 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
   //       vy2=vvy*vvy;
   //       vz2=vvz*vvz;
 
-  //       doubflo x,y,z,xxx,yyy,zzz,uxy,uxz,uyz,pe,vxy,p,vxz,a,c,xxyyzz,xyyzz,xxyzz,xxyyz,uxxyz,uxyyz,uxyzz,xyz;
-  //       doubflo UXY,UXZ,UYZ,UXYZZ,UXYYZ,UXXYZ,XYZ,EPa,EPb,EPc,A,C,CA,XpXXX,XnXXX,YpYYY,YnYYY,ZpZZZ,ZnZZZ,X_,Y_,Z_;
+  //       real x,y,z,xxx,yyy,zzz,uxy,uxz,uyz,pe,vxy,p,vxz,a,c,xxyyzz,xyyzz,xxyzz,xxyyz,uxxyz,uxyyz,uxyzz,xyz;
+  //       real UXY,UXZ,UYZ,UXYZZ,UXYYZ,UXXYZ,XYZ,EPa,EPb,EPc,A,C,CA,XpXXX,XnXXX,YpYYY,YnYYY,ZpZZZ,ZnZZZ,X_,Y_,Z_;
   //
 		// uxy=(o1*(Ne+Neb+Nef-Nw-Nwb-Nwf-Se-Seb-Sef+Sw+Swb+Swf+vvx*vvy*rho-pix*vvy-piy*vvx)*c1o4);
 		// uxz=(o1*(-Eb+Ef-Neb+Nef+Nwb-Nwf-Seb+Sef+Swb-Swf+Wb-Wf+vvx*vvz*rho-pix*vvz-piz*vvx)*c1o4);
@@ -12198,7 +12198,7 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
 
 		//xyz=abs(c1o8*(Neb-Nef-Nwb+Nwf-Seb+Sef+Swb-Swf-vvx*(UYZ-four*uyz)-vvy*(UXZ-four*uxz)-vvz*(UXY-four*uxy)+rho*vvx*vvy*vvz-(vvx*vvy*piz+vvx*piy*vvz+pix*vvy*vvz)));//-c1o2*(vvx*uyz+vvy*uxz+vvz*uxy);
 
-  //      doubflo oo;
+  //      real oo;
 		//
 		//oo=om3+(one-om3)*(x/(x+QuadricLimiter/rho));
 		//x=(oo*(c1o8*(Nw+Sw+Wf+Wb-Eb-Ef-Ne-Se+vvx*(B+Eb+Ef+F+N+Ne+Nw+S+Se+Sw+Wb+Wf+two*(Nb+Neb+Nef+Nf+Nwb+Nwf+Sb+Seb+Sef+Sf+Swb+Swf)))
@@ -12249,13 +12249,13 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
 		//EPc=(-fortytwo*pe-N-Nb-Ne-Neb-Nef-Nf-Nw-Nwb-Nwf-S-Sb-Se-Seb-Sef-Sf-Sw-Swb-Swf+two*vxy);
 
 
-  //      doubflo kxx=(-two*vvx*pix+vx2*rho+(E+Ne+Se+Ef+Eb+Nef+Neb+Sef+Seb+W+Nw+Sw+Wf+Wb+Nwf+Nwb+Swf+Swb)+(fortytwo*pe+two*vxy+two*vxz)/om7)/rho;
-  //      doubflo kyy=(-two*vvy*piy+vy2*rho+(N+Ne+Nw+Nwf+Nwb+Nef+Neb+Nf+Nb+S+Se+Sw+Swf+Swb+Sef+Seb+Sf+Sb)+(fortytwo*pe-two*vxy)/om7)/rho;
-  //      doubflo kzz=(-two*vvz*piz+vz2*rho+(F+Nf+Wf+Ef+Sf+Nwf+Nef+Sef+Swf+B+Nb+Eb+Sb+Wb+Nwb+Neb+Seb+Swb)+(fortytwo*pe-two*vxz)/om7)/rho;
+  //      real kxx=(-two*vvx*pix+vx2*rho+(E+Ne+Se+Ef+Eb+Nef+Neb+Sef+Seb+W+Nw+Sw+Wf+Wb+Nwf+Nwb+Swf+Swb)+(fortytwo*pe+two*vxy+two*vxz)/om7)/rho;
+  //      real kyy=(-two*vvy*piy+vy2*rho+(N+Ne+Nw+Nwf+Nwb+Nef+Neb+Nf+Nb+S+Se+Sw+Swf+Swb+Sef+Seb+Sf+Sb)+(fortytwo*pe-two*vxy)/om7)/rho;
+  //      real kzz=(-two*vvz*piz+vz2*rho+(F+Nf+Wf+Ef+Sf+Nwf+Nef+Sef+Swf+B+Nb+Eb+Sb+Wb+Nwb+Neb+Seb+Swb)+(fortytwo*pe-two*vxz)/om7)/rho;
 
-  //      doubflo kxy=(-vvy*pix-vvx*piy+vvx*vvy*rho+(Ne+Neb+Nef+Sw+Swb+Swf-Nw-Nwb-Nwf-Se-Seb-Sef)-four*uxy/om7)/rho;
-  //      doubflo kxz=(-vvz*pix-vvx*piz+vvx*vvz*rho+(Ef+Nef+Nwb+Swb+Wb+Sef-Eb-Neb-Nwf-Seb-Swf-Wf)-four*uxz/om7)/rho;
-  //      doubflo kyz=(-vvy*piz-vvz*piy+vvy*vvz*rho+(Nef+Nf+Nwf+Sb+Seb+Swb-Nb-Neb-Nwb-Sef-Sf-Swf)-four*uyz/om7)/rho;
+  //      real kxy=(-vvy*pix-vvx*piy+vvx*vvy*rho+(Ne+Neb+Nef+Sw+Swb+Swf-Nw-Nwb-Nwf-Se-Seb-Sef)-four*uxy/om7)/rho;
+  //      real kxz=(-vvz*pix-vvx*piz+vvx*vvz*rho+(Ef+Nef+Nwb+Swb+Wb+Sef-Eb-Neb-Nwf-Seb-Swf-Wf)-four*uxz/om7)/rho;
+  //      real kyz=(-vvy*piz-vvz*piy+vvy*vvz*rho+(Nef+Nf+Nwf+Sb+Seb+Swb-Nb-Neb-Nwb-Sef-Sf-Swf)-four*uyz/om7)/rho;
 
 		//p=(om7*(c1o12)*((kxx*(kyy+kzz)+kyy*kzz+two*(kxy*kxy+kxz*kxz+kyz*kyz))*rho-ninetysix*pe/om7-Eb-Ef-Nb-Ne-Nf-Nw-Sb-Se-Sf-Sw-Wb-Wf-three*(Nwf+Nwb+Nef+Neb+Swf+Swb+Sef+Seb)
 		//	+two*(+vvx*(Eb+Ef+Ne-Nw+Se-Sw-Wb-Wf+two*(Neb+Nef-Nwb-Nwf+Seb+Sef-Swb-Swf)+eight*x/om7)
@@ -12337,43 +12337,43 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
 		////kxz=(-vvz*pix-vvx*piz+vvx*vvz*rho+(Ef+Nef+Nwb+Swb+Wb+Sef-Eb-Neb-Nwf-Seb-Swf-Wf)-four*uxz/om10)/rho;
 		////kyz=(-vvy*piz-vvz*piy+vvy*vvz*rho+(Nef+Nf+Nwf+Sb+Seb+Swb-Nb-Neb-Nwb-Sef-Sf-Swf)-four*uyz/om10)/rho;
 
-  //      doubflo kxyy=(Ne + Neb + Nef - Nw - Nwb - Nwf + Se + Seb + Sef - Sw -Swb - Swf + (-two*Ne - two*Neb - two*Nef + two*Nw + two*Nwb + 
+  //      real kxyy=(Ne + Neb + Nef - Nw - Nwb - Nwf + Se + Seb + Sef - Sw -Swb - Swf + (-two*Ne - two*Neb - two*Nef + two*Nw + two*Nwb + 
 		//				two*Nwf + two*Se + two*Seb + two*Sef - two*Sw - two*Swb - two*Swf + eight*uxy/om10)*vvy + (two*N + two*Nb + two*Ne + two*Neb + two*Nef + two*Nf + 
 		//				two*Nw + two*Nwb + two*Nwf - two*S - two*Sb - two*Se - two*Seb - two*Sef - two*Sf - two*Sw - two*Swb - two*Swf)*vvx*vvy + vvx*(-N - Nb - Ne - Neb - Nef - Nf - Nw - Nwb 
 		//				- Nwf - fortytwo*pe/om10 - S - Sb - Se - Seb - Sef - Sf - Sw - Swb - Swf + two*vxy/om10 -rho*vvy*vvy) + vvy*vvy*(E + Eb + Ef + Ne + 
 		//				Neb + Nef - Nw - Nwb - Nwf + Se + Seb + Sef - Sw - Swb - Swf - W - Wb - Wf)+ four*x/om10 + four*xxx/om10)/rho;
 
-  //      doubflo kxxy=(Ne + Neb + Nef + Nw + Nwb + Nwf - Se - Seb - Sef - Sw - Swb - Swf + (-two*Ne - two*Neb - two*Nef + two*Nw + two*Nwb 
+  //      real kxxy=(Ne + Neb + Nef + Nw + Nwb + Nwf - Se - Seb - Sef - Sw - Swb - Swf + (-two*Ne - two*Neb - two*Nef + two*Nw + two*Nwb 
 		//				+ two*Nwf + two*Se + two*Seb + two*Sef - two*Sw - two*Swb - two*Swf + eight*uxy/om10)*vvx + vvx*vvx*(N + Nb + Ne + Neb + Nef + Nf + Nw 
 		//				+ Nwb + Nwf - S - Sb - Se - Seb - Sef - Sf - Sw - Swb - Swf -rho*vvy) + vvx*vvy*(two*E + two*Eb + two*Ef + two*Ne + two*Neb + 
 		//				two*Nef - two*Nw - two*Nwb - two*Nwf + two*Se + two*Seb + two*Sef - two*Sw - two*Swb - two*Swf - two*W - two*Wb - two*Wf)+ vvy*(-E - Eb - Ef - Ne - Neb - Nef - Nw - 
 		//				Nwb - Nwf - fortytwo*pe/om10 - Se - Seb - Sef - Sw - Swb - Swf - two*vxy/om10 - two*vxz/om10 - W - Wb - Wf) + four*y/om10 - four*yyy/om10)/rho;
 
-  //     doubflo kxxz=(-Eb + Ef - Neb + Nef - Nwb + Nwf - Seb + Sef - Swb + Swf - Wb + vvx*vvz*(two*E + two*Eb + two*Ef + two*Ne + two*Neb 
+  //     real kxxz=(-Eb + Ef - Neb + Nef - Nwb + Nwf - Seb + Sef - Swb + Swf - Wb + vvx*vvz*(two*E + two*Eb + two*Ef + two*Ne + two*Neb 
 		//			+ two*Nef - two*Nw - two*Nwb - two*Nwf + two*Se + two*Seb + two*Sef - two*Sw - two*Swb - two*Swf - two*W - two*Wb - two*Wf)
   //                  + vvz*(-E - Eb - Ef - Ne - Neb - Nef - Nw - Nwb - Nwf - fortytwo*pe/om10 - Se - Seb - Sef - Sw - Swb - Swf - two*vxy/om10 - two*vxz/om10 - W - Wb - Wf)
   //                  + Wf + vvx*vvx*(-B - Eb + Ef + F - Nb - Neb + Nef + Nf - Nwb + Nwf - Sb - Seb + Sef + Sf - Swb + Swf - Wb
   //                  + vvz*(-B - E - Eb - Ef - F - N - Nb - Ne - Neb - Nef - Nf - Nw - Nwb - Nwf - R - S - Sb - Se - Seb - Sef - Sf - Sw - Swb - Swf - W - Wb - Wf) + Wf)
   //                  + vvx*(two*Eb - two*Ef + two*Neb - two*Nef - two*Nwb + two*Nwf + two*Seb - two*Sef - two*Swb + two*Swf + eight*uxz/om10 - two*Wb + two*Wf) + four*z/om10 + four*zzz/om10)/rho;
 
-  //     doubflo kxzz=(Eb + Ef + Neb + Nef - Nwb - Nwf + Seb + Sef - Swb - Swf - Wb + vvz*vvz*(E + Eb + Ef + Ne + Neb + Nef - Nw - Nwb - Nwf + Se + Seb + Sef - Sw - Swb - Swf - W - Wb - Wf)
+  //     real kxzz=(Eb + Ef + Neb + Nef - Nwb - Nwf + Seb + Sef - Swb - Swf - Wb + vvz*vvz*(E + Eb + Ef + Ne + Neb + Nef - Nw - Nwb - Nwf + Se + Seb + Sef - Sw - Swb - Swf - W - Wb - Wf)
   //                  + vvx*(-B - Eb - Ef - F - Nb - Neb - Nef - Nf - Nwb - Nwf - fortytwo*pe/om10 - Sb - Seb - Sef - Sf - Swb - Swf + two*vxz/om10 - Wb
   //                  + vvz*vvz*(-B - E - Eb - Ef - F - N - Nb - Ne - Neb - Nef - Nf - Nw - Nwb - Nwf - R - S - Sb - Se - Seb - Sef - Sf - Sw - Swb - Swf - W - Wb - Wf) - Wf) - Wf
   //                  + vvx*vvz*(-two*B - two*Eb + two*Ef + two*F - two*Nb - two*Neb + two*Nef + two*Nf - two*Nwb + two*Nwf - two*Sb - two*Seb + two*Sef + two*Sf - two*Swb + two*Swf - two*Wb + two*Wf)
   //                  + vvz*(two*Eb - two*Ef + two*Neb - two*Nef - two*Nwb + two*Nwf + two*Seb - two*Sef - two*Swb + two*Swf + eight*uxz/om10 - two*Wb + two*Wf) + four*x/om10 - four*xxx/om10)/rho;
 
-  //     doubflo kyzz=(Nb + Neb + Nef + Nf + Nwb + Nwf - Sb - Seb - Sef - Sf - Swb - Swf + (two*Nb + two*Neb - two*Nef - two*Nf + two*Nwb - two*Nwf - two*Sb - two*Seb + two*Sef + two*Sf - two*Swb + two*Swf + eight*uyz/om10)*vvz
+  //     real kyzz=(Nb + Neb + Nef + Nf + Nwb + Nwf - Sb - Seb - Sef - Sf - Swb - Swf + (two*Nb + two*Neb - two*Nef - two*Nf + two*Nwb - two*Nwf - two*Sb - two*Seb + two*Sef + two*Sf - two*Swb + two*Swf + eight*uyz/om10)*vvz
   //                  + (N + Nb + Ne + Neb + Nef + Nf + Nw + Nwb + Nwf - S - Sb - Se - Seb - Sef - Sf - Sw - Swb - Swf)*vvz*vvz + vvy*(-B - Eb - Ef - F - Nb - Neb - Nef - Nf - Nwb - Nwf - fortytwo*pe/om10 - Sb - Seb - Sef - Sf - Swb - Swf + two*vxz/om10 - Wb
   //                  + vvz*vvz*(-B - E - Eb - Ef - F - N - Nb - Ne - Neb - Nef - Nf - Nw - Nwb - Nwf - R - S - Sb - Se - Seb - Sef - Sf - Sw - Swb - Swf - W - Wb - Wf) - Wf)
   //                  + vvy*vvz*(-two*B - two*Eb + two*Ef + two*F - two*Nb - two*Neb + two*Nef + two*Nf - two*Nwb + two*Nwf - two*Sb - two*Seb + two*Sef + two*Sf - two*Swb + two*Swf - two*Wb + two*Wf) + four*y/om10 + four*yyy/om10)/rho;
 
-  //     doubflo kyyz=(-Nb - Neb + Nef + Nf - Nwb + Nwf - Sb - Seb + Sef + Sf - Swb + Swf + (two*Nb + two*Neb - two*Nef - two*Nf + two*Nwb - two*Nwf - two*Sb - two*Seb + two*Sef + two*Sf - two*Swb + two*Swf + eight*uyz/om10)*vvy
+  //     real kyyz=(-Nb - Neb + Nef + Nf - Nwb + Nwf - Sb - Seb + Sef + Sf - Swb + Swf + (two*Nb + two*Neb - two*Nef - two*Nf + two*Nwb - two*Nwf - two*Sb - two*Seb + two*Sef + two*Sf - two*Swb + two*Swf + eight*uyz/om10)*vvy
   //                   + (-N - Nb - Ne - Neb - Nef - Nf - Nw - Nwb - Nwf - fortytwo*pe/om10 - S - Sb - Se - Seb - Sef - Sf - Sw - Swb - Swf + two*vxy/om10)*vvz
   //                   + (two*N + two*Nb + two*Ne + two*Neb + two*Nef + two*Nf + two*Nw + two*Nwb + two*Nwf - two*S - two*Sb - two*Se - two*Seb - two*Sef - two*Sf - two*Sw - two*Swb - two*Swf)*vvy*vvz
   //                   + vvy*vvy*(-B - Eb + Ef + F - Nb - Neb + Nef + Nf - Nwb + Nwf - Sb - Seb + Sef + Sf - Swb + Swf - Wb
 		//			 + vvz*(-B - E - Eb - Ef - F - N - Nb - Ne - Neb - Nef - Nf - Nw - Nwb - Nwf - R - S - Sb - Se - Seb - Sef - Sf - Sw - Swb - Swf - W - Wb - Wf) + Wf) + four*z/om10 - four*zzz/om10)/rho;
 
-  //     doubflo kxyz=(-Neb + Nef + Nwb - Nwf + Seb - Sef - Swb + Swf + (Nb + Neb - Nef - Nf + Nwb - Nwf - Sb - Seb + Sef + Sf - Swb + Swf + four*uyz/om10)*vvx
+  //     real kxyz=(-Neb + Nef + Nwb - Nwf + Seb - Sef - Swb + Swf + (Nb + Neb - Nef - Nf + Nwb - Nwf - Sb - Seb + Sef + Sf - Swb + Swf + four*uyz/om10)*vvx
   //                  + (N + Nb + Ne + Neb + Nef + Nf + Nw + Nwb + Nwf - S - Sb - Se - Seb - Sef - Sf - Sw - Swb - Swf)*vvx*vvz + vvz*(-Ne - Neb - Nef + Nw + Nwb + Nwf + Se + Seb + Sef - Sw - Swb - Swf + four*uxy/om10
   //                  + vvx*vvy*(-B - E - Eb - Ef - F - N - Nb - Ne - Neb - Nef - Nf - Nw - Nwb - Nwf - R - S - Sb - Se - Seb - Sef - Sf - Sw - Swb - Swf - W - Wb - Wf)) + vvy*vvz*(E + Eb + Ef + Ne + Neb + Nef - Nw - Nwb - Nwf + Se + Seb + Sef - Sw - Swb - Swf - W - Wb - Wf)
   //                  + vvx*vvy*(-B - Eb + Ef + F - Nb - Neb + Nef + Nf - Nwb + Nwf - Sb - Seb + Sef + Sf - Swb + Swf - Wb + Wf) + vvy*(Eb - Ef + Neb - Nef - Nwb + Nwf + Seb - Sef - Swb + Swf + four*uxz/om10 - Wb + Wf) + eight*xyz/om10)/rho;
@@ -12449,7 +12449,7 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
   //  //           + vvx*vvy*(-B - Eb + Ef + F - Nb - Neb + Nef + Nf - Nwb + Nwf - Sb - Seb + Sef + Sf - Swb + Swf - Wb + Wf) + vvy*(Eb - Ef + Neb - Nef - Nwb + Nwf + Seb - Sef - Swb + Swf + four*uxz/om11 - Wb + Wf) + eight*xyz/om11)/rho;
 
 
-  //        doubflo kxxyy=(four*a/om11 + four*c/om11 + Ne + Neb + Nef + Nw + Nwb + Nwf + four*p/om11 + thirtytwo*pe/om11 + Se + Seb + Sef + Sw + Swb + Swf + (four*Ne + four*Neb + four*Nef - four*Nw - four*Nwb - four*Nwf - four*Se - four*Seb - four*Sef + four*Sw + four*Swb + four*Swf - sixteen*uxy/om11)*vvx*vvy
+  //        real kxxyy=(four*a/om11 + four*c/om11 + Ne + Neb + Nef + Nw + Nwb + Nwf + four*p/om11 + thirtytwo*pe/om11 + Se + Seb + Sef + Sw + Swb + Swf + (four*Ne + four*Neb + four*Nef - four*Nw - four*Nwb - four*Nwf - four*Se - four*Seb - four*Sef + four*Sw + four*Swb + four*Swf - sixteen*uxy/om11)*vvx*vvy
   //                       + vvy*vvy*(E + Eb + Ef + Ne + Neb + Nef + Nw + Nwb + Nwf + fortytwo*pe/om11 + Se + Seb + Sef + Sw + Swb + Swf + two*vxy/om11 + two*vxz/om11 + W + Wb + Wf)
   //                       + vvx*vvx*(N + Nb + Ne + Neb + Nef + Nf + Nw + Nwb + Nwf + fortytwo*pe/om11 + S + Sb + Se + Seb + Sef + Sf + Sw + Swb + Swf - two*vxy/om11
   //                       + (-two*N - two*Nb - two*Ne - two*Neb - two*Nef - two*Nf - two*Nw - two*Nwb - two*Nwf + two*S + two*Sb + two*Se + two*Seb + two*Sef + two*Sf + two*Sw + two*Swb + two*Swf)*vvy
@@ -12458,7 +12458,7 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
   //                       + vvy*vvy*(-two*E - two*Eb - two*Ef - two*Ne - two*Neb - two*Nef + two*Nw + two*Nwb + two*Nwf - two*Se - two*Seb - two*Sef + two*Sw + two*Swb + two*Swf + two*W + two*Wb + two*Wf) - eight*x/om11 - eight*xxx/om11)
   //                       + vvy*(-two*Ne - two*Neb - two*Nef - two*Nw - two*Nwb - two*Nwf + two*Se + two*Seb + two*Sef + two*Sw + two*Swb + two*Swf - eight*y/om11 + eight*yyy/om11))/rho;
 
-  //        doubflo kxxzz=(-four*c/om11 + Eb + Ef + Neb + Nef + Nwb + Nwf + four*p/om11 + thirtytwo*pe/om11 + Seb + Sef + Swb + Swf + Wb + vvx*vvz*(-four*Eb + four*Ef - four*Neb + four*Nef + four*Nwb - four*Nwf - four*Seb + four*Sef + four*Swb - four*Swf - sixteen*uxz/om11 + four*Wb - four*Wf) + Wf
+  //        real kxxzz=(-four*c/om11 + Eb + Ef + Neb + Nef + Nwb + Nwf + four*p/om11 + thirtytwo*pe/om11 + Seb + Sef + Swb + Swf + Wb + vvx*vvz*(-four*Eb + four*Ef - four*Neb + four*Nef + four*Nwb - four*Nwf - four*Seb + four*Sef + four*Swb - four*Swf - sixteen*uxz/om11 + four*Wb - four*Wf) + Wf
   //                       + vvz*vvz*(E + Eb + Ef + Ne + Neb + Nef + Nw + Nwb + Nwf + fortytwo*pe/om11 + Se + Seb + Sef + Sw + Swb + Swf + two*vxy/om11 + two*vxz/om11 + W + Wb + Wf)
   //                       + vvx*vvx*(B + Eb + Ef + F + Nb + Neb + Nef + Nf + Nwb + Nwf + fortytwo*pe/om11 + Sb + Seb + Sef + Sf + Swb + Swf - two*vxz/om11 + Wb
   //                       + vvz*(two*B + two*Eb - two*Ef - two*F + two*Nb + two*Neb - two*Nef - two*Nf + two*Nwb - two*Nwf + two*Sb + two*Seb - two*Sef - two*Sf + two*Swb - two*Swf + two*Wb - two*Wf) + Wf
@@ -12467,7 +12467,7 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
 		//				 + vvz*vvz*(-two*E - two*Eb - two*Ef - two*Ne - two*Neb - two*Nef + two*Nw + two*Nwb + two*Nwf - two*Se - two*Seb - two*Sef + two*Sw + two*Swb + two*Swf + two*W + two*Wb + two*Wf) - eight*x/om11 + eight*xxx/om11)
   //                       + vvz*(two*Eb - two*Ef + two*Neb - two*Nef + two*Nwb - two*Nwf + two*Seb - two*Sef + two*Swb - two*Swf + two*Wb - two*Wf - eight*z/om11 - eight*zzz/om11))/rho;
 
-  //        doubflo kyyzz=(-four*a/om11 + Nb + Neb + Nef + Nf + Nwb + Nwf + four*p/om11 + thirtytwo*pe/om11 + Sb + Seb + Sef + Sf + Swb + Swf + (-four*Nb - four*Neb + four*Nef + four*Nf - four*Nwb + four*Nwf + four*Sb + four*Seb - four*Sef - four*Sf + four*Swb - four*Swf - sixteen*uyz/om11)*vvy*vvz
+  //        real kyyzz=(-four*a/om11 + Nb + Neb + Nef + Nf + Nwb + Nwf + four*p/om11 + thirtytwo*pe/om11 + Sb + Seb + Sef + Sf + Swb + Swf + (-four*Nb - four*Neb + four*Nef + four*Nf - four*Nwb + four*Nwf + four*Sb + four*Seb - four*Sef - four*Sf + four*Swb - four*Swf - sixteen*uyz/om11)*vvy*vvz
   //                       + (N + Nb + Ne + Neb + Nef + Nf + Nw + Nwb + Nwf + fortytwo*pe/om11 + S + Sb + Se + Seb + Sef + Sf + Sw + Swb + Swf - two*vxy/om11)*vvz*vvz
   //                       + vvy*vvy*(B + Eb + Ef + F + Nb + Neb + Nef + Nf + Nwb + Nwf + fortytwo*pe/om11 + Sb + Seb + Sef + Sf + Swb + Swf - two*vxz/om11 + Wb
   //                       + vvz*(two*B + two*Eb - two*Ef - two*F + two*Nb + two*Neb - two*Nef - two*Nf + two*Nwb - two*Nwf + two*Sb + two*Seb - two*Sef - two*Sf + two*Swb - two*Swf + two*Wb - two*Wf) + Wf
@@ -12476,7 +12476,7 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
   //                       + (-two*N - two*Nb - two*Ne - two*Neb - two*Nef - two*Nf - two*Nw - two*Nwb - two*Nwf + two*S + two*Sb + two*Se + two*Seb + two*Sef + two*Sf + two*Sw + two*Swb + two*Swf)*vvz*vvz - eight*y/om11 - eight*yyy/om11)
   //                       + vvz*(two*Nb + two*Neb - two*Nef - two*Nf + two*Nwb - two*Nwf + two*Sb + two*Seb - two*Sef - two*Sf + two*Swb - two*Swf - eight*z/om11 + eight*zzz/om11))/rho;
 
-  //        doubflo kxxyz=(-Neb + Nef - Nwb + Nwf + Seb - Sef + Swb - Swf + eight*uxxyz/om11 + (two*Ne + two*Neb + two*Nef - two*Nw - two*Nwb - two*Nwf - two*Se - two*Seb - two*Sef + two*Sw + two*Swb + two*Swf - eight*uxy/om11)*vvx*vvz
+  //        real kxxyz=(-Neb + Nef - Nwb + Nwf + Seb - Sef + Swb - Swf + eight*uxxyz/om11 + (two*Ne + two*Neb + two*Nef - two*Nw - two*Nwb - two*Nwf - two*Se - two*Seb - two*Sef + two*Sw + two*Swb + two*Swf - eight*uxy/om11)*vvx*vvz
   //                       + vvx*vvy*(-two*Eb + two*Ef - two*Neb + two*Nef + two*Nwb - two*Nwf - two*Seb + two*Sef + two*Swb - two*Swf - eight*uxz/om11 + two*Wb - two*Wf)
   //                       + vvy*vvz*(E + Eb + Ef + Ne + Neb + Nef + Nw + Nwb + Nwf + fortytwo*pe/om11 + Se + Seb + Sef + Sw + Swb + Swf + two*vxy/om11 + two*vxz/om11 + W + Wb + Wf)
   //                       + vvx*vvx*(-Nb - Neb + Nef + Nf - Nwb + Nwf + Sb + Seb - Sef - Sf + Swb - Swf - four*uyz/om11 + (-N - Nb - Ne - Neb - Nef - Nf - Nw - Nwb - Nwf + S + Sb + Se + Seb + Sef + Sf + Sw + Swb + Swf)*vvz
@@ -12487,7 +12487,7 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
   //                       + vvx*vvy*(-two*E - two*Eb - two*Ef - two*Ne - two*Neb - two*Nef + two*Nw + two*Nwb + two*Nwf - two*Se - two*Seb - two*Sef + two*Sw + two*Swb + two*Swf + two*W + two*Wb + two*Wf) - four*y/om11 + four*yyy/om11)
   //                       + vvy*(Eb - Ef + Neb - Nef + Nwb - Nwf + Seb - Sef + Swb - Swf + Wb - Wf - four*z/om11 - four*zzz/om11))/rho;
 
-  //        doubflo kxyyz=(-Neb + Nef + Nwb - Nwf - Seb + Sef + Swb - Swf + eight*uxyyz/om11 + (-two*Nb - two*Neb + two*Nef + two*Nf - two*Nwb + two*Nwf + two*Sb + two*Seb - two*Sef - two*Sf + two*Swb - two*Swf - eight*uyz/om11)*vvx*vvy
+  //        real kxyyz=(-Neb + Nef + Nwb - Nwf - Seb + Sef + Swb - Swf + eight*uxyyz/om11 + (-two*Nb - two*Neb + two*Nef + two*Nf - two*Nwb + two*Nwf + two*Sb + two*Seb - two*Sef - two*Sf + two*Swb - two*Swf - eight*uyz/om11)*vvx*vvy
   //                       + vvx*(N + Nb + Ne + Neb + Nef + Nf + Nw + Nwb + Nwf + fortytwo*pe/om11 + S + Sb + Se + Seb + Sef + Sf + Sw + Swb + Swf - two*vxy/om11)*vvz
   //                       + (two*Ne + two*Neb + two*Nef - two*Nw - two*Nwb - two*Nwf - two*Se - two*Seb - two*Sef + two*Sw + two*Swb + two*Swf - eight*uxy/om11)*vvy*vvz
   //                       + vvy*vvy*(-Eb + Ef - Neb + Nef + Nwb - Nwf - Seb + Sef + Swb - Swf - four*uxz/om11 + Wb - Wf
@@ -12498,7 +12498,7 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
   //                       + vvy*(two*Neb - two*Nef - two*Nwb + two*Nwf - two*Seb + two*Sef + two*Swb - two*Swf - sixteen*xyz/om11) + vvx*(Nb + Neb - Nef - Nf + Nwb - Nwf + Sb + Seb - Sef - Sf + Swb - Swf
   //                       + vvy*vvy*(B + Eb - Ef - F + Nb + Neb - Nef - Nf + Nwb - Nwf + Sb + Seb - Sef - Sf + Swb - Swf + Wb - Wf) - four*z/om11 + four*zzz/om11))/rho;
 
-  //        doubflo kxyzz=(Neb + Nef - Nwb - Nwf - Seb - Sef + Swb + Swf + eight*uxyzz/om11 + (-two*Nb - two*Neb + two*Nef + two*Nf - two*Nwb + two*Nwf + two*Sb + two*Seb - two*Sef - two*Sf + two*Swb - two*Swf - eight*uyz/om11)*vvx*vvz
+  //        real kxyzz=(Neb + Nef - Nwb - Nwf - Seb - Sef + Swb + Swf + eight*uxyzz/om11 + (-two*Nb - two*Neb + two*Nef + two*Nf - two*Nwb + two*Nwf + two*Sb + two*Seb - two*Sef - two*Sf + two*Swb - two*Swf - eight*uyz/om11)*vvx*vvz
   //                       + vvy*vvz*(-two*Eb + two*Ef - two*Neb + two*Nef + two*Nwb - two*Nwf - two*Seb + two*Sef + two*Swb - two*Swf - eight*uxz/om11 + two*Wb - two*Wf)
   //                       + vvx*vvy*(B + Eb + Ef + F + Nb + Neb + Nef + Nf + Nwb + Nwf + fortytwo*pe/om11 + Sb + Seb + Sef + Sf + Swb + Swf - two*vxz/om11 + Wb + Wf)
   //                       + vvz*vvz*(Ne + Neb + Nef - Nw - Nwb - Nwf - Se - Seb - Sef + Sw + Swb + Swf - four*uxy/om11
@@ -12585,40 +12585,40 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
   //       ////unsigned int ktne = k;
   //       //unsigned int kbsw = neighborZ[ksw];
   //       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-  //       //doubflo fE    =  (D.f[dirE   ])[k  ];//ke
-  //       //doubflo fW    =  (D.f[dirW   ])[kw ];
-  //       //doubflo fN    =  (D.f[dirN   ])[k  ];//kn
-  //       //doubflo fS    =  (D.f[dirS   ])[ks ];
-  //       //doubflo fT    =  (D.f[dirT   ])[k  ];//kt
-  //       //doubflo fB    =  (D.f[dirB   ])[kb ];
-  //       //doubflo fNE   =  (D.f[dirNE  ])[k  ];//kne
-  //       //doubflo fSW   =  (D.f[dirSW  ])[ksw];
-  //       //doubflo fSE   =  (D.f[dirSE  ])[ks ];//kse
-  //       //doubflo fNW   =  (D.f[dirNW  ])[kw ];//knw
-  //       //doubflo fTE   =  (D.f[dirTE  ])[k  ];//kte
-  //       //doubflo fBW   =  (D.f[dirBW  ])[kbw];
-  //       //doubflo fBE   =  (D.f[dirBE  ])[kb ];//kbe
-  //       //doubflo fTW   =  (D.f[dirTW  ])[kw ];//ktw
-  //       //doubflo fTN   =  (D.f[dirTN  ])[k  ];//ktn
-  //       //doubflo fBS   =  (D.f[dirBS  ])[kbs];
-  //       //doubflo fBN   =  (D.f[dirBN  ])[kb ];//kbn
-  //       //doubflo fTS   =  (D.f[dirTS  ])[ks ];//kts
-  //       //doubflo fZERO =  (D.f[dirZERO])[k  ];//kzero
-  //       //doubflo fTNE   = (D.f[dirTNE ])[k  ];//ktne
-  //       //doubflo fTSW   = (D.f[dirTSW ])[ksw];//ktsw
-  //       //doubflo fTSE   = (D.f[dirTSE ])[ks ];//ktse
-  //       //doubflo fTNW   = (D.f[dirTNW ])[kw ];//ktnw
-  //       //doubflo fBNE   = (D.f[dirBNE ])[kb ];//kbne
-  //       //doubflo fBSW   = (D.f[dirBSW ])[kbsw];
-  //       //doubflo fBSE   = (D.f[dirBSE ])[kbs];//kbse
-  //       //doubflo fBNW   = (D.f[dirBNW ])[kbw];//kbnw
+  //       //real fE    =  (D.f[dirE   ])[k  ];//ke
+  //       //real fW    =  (D.f[dirW   ])[kw ];
+  //       //real fN    =  (D.f[dirN   ])[k  ];//kn
+  //       //real fS    =  (D.f[dirS   ])[ks ];
+  //       //real fT    =  (D.f[dirT   ])[k  ];//kt
+  //       //real fB    =  (D.f[dirB   ])[kb ];
+  //       //real fNE   =  (D.f[dirNE  ])[k  ];//kne
+  //       //real fSW   =  (D.f[dirSW  ])[ksw];
+  //       //real fSE   =  (D.f[dirSE  ])[ks ];//kse
+  //       //real fNW   =  (D.f[dirNW  ])[kw ];//knw
+  //       //real fTE   =  (D.f[dirTE  ])[k  ];//kte
+  //       //real fBW   =  (D.f[dirBW  ])[kbw];
+  //       //real fBE   =  (D.f[dirBE  ])[kb ];//kbe
+  //       //real fTW   =  (D.f[dirTW  ])[kw ];//ktw
+  //       //real fTN   =  (D.f[dirTN  ])[k  ];//ktn
+  //       //real fBS   =  (D.f[dirBS  ])[kbs];
+  //       //real fBN   =  (D.f[dirBN  ])[kb ];//kbn
+  //       //real fTS   =  (D.f[dirTS  ])[ks ];//kts
+  //       //real fZERO =  (D.f[dirZERO])[k  ];//kzero
+  //       //real fTNE   = (D.f[dirTNE ])[k  ];//ktne
+  //       //real fTSW   = (D.f[dirTSW ])[ksw];//ktsw
+  //       //real fTSE   = (D.f[dirTSE ])[ks ];//ktse
+  //       //real fTNW   = (D.f[dirTNW ])[kw ];//ktnw
+  //       //real fBNE   = (D.f[dirBNE ])[kb ];//kbne
+  //       //real fBSW   = (D.f[dirBSW ])[kbsw];
+  //       //real fBSE   = (D.f[dirBSE ])[kbs];//kbse
+  //       //real fBNW   = (D.f[dirBNW ])[kbw];//kbnw
   //       ////////////////////////////////////////////////////////////////////////////////////
-  //       //doubflo rho0   =  (fTNE+fBSW)+(fTSW+fBNE)+(fTSE+fBNW)+(fTNW+fBSE)+(fNE+fSW)+(fNW+fSE)+(fTE+fBW)+(fBE+fTW)+(fTN+fBS)+(fBN+fTS)+(fE+fW)+(fN+fS)+(fT+fB)+fZERO;
-  //       //doubflo rho    =  rho0 + one;
-  //       //doubflo OORho  =  one/rho;
-  //       //doubflo vx     =  OORho*((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
-  //       //doubflo vy     =  OORho*((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
-  //       //doubflo vz     =  OORho*((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
+  //       //real rho0   =  (fTNE+fBSW)+(fTSW+fBNE)+(fTSE+fBNW)+(fTNW+fBSE)+(fNE+fSW)+(fNW+fSE)+(fTE+fBW)+(fBE+fTW)+(fTN+fBS)+(fBN+fTS)+(fE+fW)+(fN+fS)+(fT+fB)+fZERO;
+  //       //real rho    =  rho0 + one;
+  //       //real OORho  =  one/rho;
+  //       //real vx     =  OORho*((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW));
+  //       //real vy     =  OORho*((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS));
+  //       //real vz     =  OORho*((fTNE-fBSW)+(fTSW-fBNE)+(fTSE-fBNW)+(fTNW-fBSE) +(fTE-fBW)+(fTW-fBE)+(fTN-fBS)+(fTS-fBN)+(fT-fB));
   //       ////////////////////////////////////////////////////////////////////////////////////
 
 
@@ -12626,11 +12626,11 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
   //       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   //       //BGK
   //       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-  //       //doubflo drho    =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
-  //       //doubflo vx1     =  (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW);
-  //       //doubflo vx2     =  (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW);
-  //       //doubflo vx3     =  (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW);
-  //       //doubflo cusq    =  c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+  //       //real drho    =  fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW;
+  //       //real vx1     =  (fE -fW +fNE-fSW+fSE-fNW+fTE-fBW+fBE-fTW+ fTNE-fTSW+fTSE-fTNW+ fBNE-fBSW+fBSE-fBNW);
+  //       //real vx2     =  (fN -fS +fNE-fSW-fSE+fNW+fTN-fBS+fBN-fTS+ fTNE-fTSW-fTSE+fTNW+ fBNE-fBSW-fBSE+fBNW);
+  //       //real vx3     =  (fT -fB +fTE-fBW-fBE+fTW+fTN-fBS-fBN+fTS+ fTNE+fTSW+fTSE+fTNW- fBNE-fBSW-fBSE-fBNW);
+  //       //real cusq    =  c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
   //       //fZERO = fZERO *(one+(-omega))-(-omega)*   c8over27*  (drho-cusq);
   //       //fE    = fE    *(one+(-omega))-(-omega)*   c2over27*  (drho+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq);
@@ -12664,56 +12664,56 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
 
 
   // //      //////////////////////////////////////////////////////////////////////////////////
-  // //      doubflo vx2    = vx*vx;
-  // //      doubflo vy2    = vy*vy;
-  // //      doubflo vz2    = vz*vz;
-  // //      doubflo vxy    = vx*vy;
-  // //      doubflo vxz    = vx*vz;
-  // //      doubflo vyz    = vy*vz;
-  // //      doubflo vx2y   = vx*vx*vy;
-  // //      doubflo vx2z   = vx*vx*vz;
-  // //      doubflo vy2z   = vy*vy*vz;
-  // //      doubflo vxy2   = vx*vy*vy;
-  // //      doubflo vyz2   = vy*vz*vz;
-  // //      doubflo vxz2   = vx*vz*vz;
-  // //      doubflo vxyz   = vx*vy*vz;
+  // //      real vx2    = vx*vx;
+  // //      real vy2    = vy*vy;
+  // //      real vz2    = vz*vz;
+  // //      real vxy    = vx*vy;
+  // //      real vxz    = vx*vz;
+  // //      real vyz    = vy*vz;
+  // //      real vx2y   = vx*vx*vy;
+  // //      real vx2z   = vx*vx*vz;
+  // //      real vy2z   = vy*vy*vz;
+  // //      real vxy2   = vx*vy*vy;
+  // //      real vyz2   = vy*vz*vz;
+  // //      real vxz2   = vx*vz*vz;
+  // //      real vxyz   = vx*vy*vz;
 		// //////nur für 6.
-  // ////      doubflo vx2y2  = vx*vx*vy*vy;
-  // ////      doubflo vx2z2  = vx*vx*vz*vz;
-  // ////      doubflo vy2z2  = vy*vy*vz*vz;
-  // ////      doubflo vx2yz  = vx*vx*vy*vz;
-  // ////      doubflo vxyz2  = vx*vy*vz*vz;
-  // ////      doubflo vxy2z  = vx*vy*vy*vz;
-  // ////      doubflo vx2y2z = vx*vx*vy*vy*vz;
-  // ////      doubflo vx2yz2 = vx*vx*vy*vz*vz;
-  // ////      doubflo vxy2z2 = vx*vy*vy*vz*vz;
-  // ////      doubflo vx2y2z2= vx*vx*vy*vy*vz*vz;
+  // ////      real vx2y2  = vx*vx*vy*vy;
+  // ////      real vx2z2  = vx*vx*vz*vz;
+  // ////      real vy2z2  = vy*vy*vz*vz;
+  // ////      real vx2yz  = vx*vx*vy*vz;
+  // ////      real vxyz2  = vx*vy*vz*vz;
+  // ////      real vxy2z  = vx*vy*vy*vz;
+  // ////      real vx2y2z = vx*vx*vy*vy*vz;
+  // ////      real vx2yz2 = vx*vx*vy*vz*vz;
+  // ////      real vxy2z2 = vx*vy*vy*vz*vz;
+  // ////      real vx2y2z2= vx*vx*vy*vy*vz*vz;
   // //      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-  // //      doubflo mu200   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE))) + ((fNE+fSW) + (fNW+fSE)) + ((fTE+fBW) + (fTW+fBE))                           + (fE+fW)                    );
-  // //      doubflo mu020   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE))) + ((fNE+fSW) + (fNW+fSE))                           + ((fTN+fBS) + (fTS+fBN))           + (fN+fS)          );
-  // //      doubflo mu002   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                           + ((fTE+fBW) + (fTW+fBE)) + ((fTN+fBS) + (fTS+fBN))                     + (fT+fB));
-  // //      doubflo mu110   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) - ((fTSE+fBNW) - (fTSW+fBNE))) + ((fNE+fSW) - (fNW+fSE))                                                                                  );
-  // //      doubflo mu101   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) + ((fTSE+fBNW) - (fTSW+fBNE)))                           + ((fTE+fBW) - (fTW+fBE))                                                        );
-  // //      doubflo mu011   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) - ((fTSE+fBNW) + (fTSW+fBNE)))                                                     + ((fTN+fBS) - (fTS+fBN))                              );
-  // //      doubflo mu210   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) - ((fTSE-fBNW) + (fTSW-fBNE))) + ((fNE-fSW) + (fNW-fSE))                                                                                  );
-  // //      doubflo mu120   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) + ((fTSE-fBNW) - (fTSW-fBNE))) + ((fNE-fSW) - (fNW-fSE))                                                                                  );
-  // //      doubflo mu102   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) + ((fTSE-fBNW) - (fTSW-fBNE)))                           + ((fTE-fBW) - (fTW-fBE))                                                        );
-  // //      doubflo mu111   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) - ((fTSE-fBNW) - (fTSW-fBNE)))                                                                                                            );
-  // //      doubflo mu201   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) + ((fTSE-fBNW) + (fTSW-fBNE)))                           + ((fTE-fBW) + (fTW-fBE))                                                        );
-  // //      doubflo mu021   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) + ((fTSE-fBNW) + (fTSW-fBNE)))                                                     + ((fTN-fBS) + (fTS-fBN))                              );
-  // //      doubflo mu012   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) - ((fTSE-fBNW) + (fTSW-fBNE)))                                                     + ((fTN-fBS) - (fTS-fBN))                              );
-  // //      doubflo mu220   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE))) + ((fNE+fSW) + (fNW+fSE))                                                                                  );
-  // //      doubflo mu121   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) + ((fTSE+fBNW) - (fTSW+fBNE)))                                                                                                            );
-  // //      doubflo mu202   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                           + ((fTE+fBW) + (fTW+fBE))                                                        );
-  // //      doubflo mu211   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) - ((fTSE+fBNW) + (fTSW+fBNE)))                                                                                                            );
-  // //      doubflo mu112   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) - ((fTSE+fBNW) - (fTSW+fBNE)))                                                                                                            );
-  // //      doubflo mu022   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                                                     + ((fTN+fBS) + (fTS+fBN))                              );
-  // //      doubflo mu221   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) + ((fTSE-fBNW) + (fTSW-fBNE)))                                                                                                            );
-  // //      doubflo mu122   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) + ((fTSE-fBNW) - (fTSW-fBNE)))                                                                                                            );
-  // //      doubflo mu212   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) - ((fTSE-fBNW) + (fTSW-fBNE)))                                                                                                            );
-  // //      doubflo mu222   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                                                                                                            );
+  // //      real mu200   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE))) + ((fNE+fSW) + (fNW+fSE)) + ((fTE+fBW) + (fTW+fBE))                           + (fE+fW)                    );
+  // //      real mu020   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE))) + ((fNE+fSW) + (fNW+fSE))                           + ((fTN+fBS) + (fTS+fBN))           + (fN+fS)          );
+  // //      real mu002   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                           + ((fTE+fBW) + (fTW+fBE)) + ((fTN+fBS) + (fTS+fBN))                     + (fT+fB));
+  // //      real mu110   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) - ((fTSE+fBNW) - (fTSW+fBNE))) + ((fNE+fSW) - (fNW+fSE))                                                                                  );
+  // //      real mu101   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) + ((fTSE+fBNW) - (fTSW+fBNE)))                           + ((fTE+fBW) - (fTW+fBE))                                                        );
+  // //      real mu011   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) - ((fTSE+fBNW) + (fTSW+fBNE)))                                                     + ((fTN+fBS) - (fTS+fBN))                              );
+  // //      real mu210   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) - ((fTSE-fBNW) + (fTSW-fBNE))) + ((fNE-fSW) + (fNW-fSE))                                                                                  );
+  // //      real mu120   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) + ((fTSE-fBNW) - (fTSW-fBNE))) + ((fNE-fSW) - (fNW-fSE))                                                                                  );
+  // //      real mu102   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) + ((fTSE-fBNW) - (fTSW-fBNE)))                           + ((fTE-fBW) - (fTW-fBE))                                                        );
+  // //      real mu111   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) - ((fTSE-fBNW) - (fTSW-fBNE)))                                                                                                            );
+  // //      real mu201   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) + ((fTSE-fBNW) + (fTSW-fBNE)))                           + ((fTE-fBW) + (fTW-fBE))                                                        );
+  // //      real mu021   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) + ((fTSE-fBNW) + (fTSW-fBNE)))                                                     + ((fTN-fBS) + (fTS-fBN))                              );
+  // //      real mu012   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) - ((fTSE-fBNW) + (fTSW-fBNE)))                                                     + ((fTN-fBS) - (fTS-fBN))                              );
+  // //      real mu220   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE))) + ((fNE+fSW) + (fNW+fSE))                                                                                  );
+  // //      real mu121   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) + ((fTSE+fBNW) - (fTSW+fBNE)))                                                                                                            );
+  // //      real mu202   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                           + ((fTE+fBW) + (fTW+fBE))                                                        );
+  // //      real mu211   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) - ((fTSE+fBNW) + (fTSW+fBNE)))                                                                                                            );
+  // //      real mu112   = OORho * ((((fTNE+fBSW) - (fTNW+fBSE)) - ((fTSE+fBNW) - (fTSW+fBNE)))                                                                                                            );
+  // //      real mu022   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                                                     + ((fTN+fBS) + (fTS+fBN))                              );
+  // //      real mu221   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) + ((fTSE-fBNW) + (fTSW-fBNE)))                                                                                                            );
+  // //      real mu122   = OORho * ((((fTNE-fBSW) - (fTNW-fBSE)) + ((fTSE-fBNW) - (fTSW-fBNE)))                                                                                                            );
+  // //      real mu212   = OORho * ((((fTNE-fBSW) + (fTNW-fBSE)) - ((fTSE-fBNW) + (fTSW-fBNE)))                                                                                                            );
+  // //      real mu222   = OORho * ((((fTNE+fBSW) + (fTNW+fBSE)) + ((fTSE+fBNW) + (fTSW+fBNE)))                                                                                                            );
   // //      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-  // //      doubflo MzXX,MzYY,MzZZ,MzXY,MzXZ,MzYZ,MzXXY,MzXYY,MzXXZ,MzXZZ,MzYYZ,MzYZZ,MzXYZ,MzXXYY,MzXXZZ,MzYYZZ,MzXXYZ,MzXYYZ,MzXYZZ,MzXXYYZ,MzXXYZZ,MzXYYZZ,MzXXYYZZ;
+  // //      real MzXX,MzYY,MzZZ,MzXY,MzXZ,MzYZ,MzXXY,MzXYY,MzXXZ,MzXZZ,MzYYZ,MzYZZ,MzXYZ,MzXXYY,MzXXZZ,MzYYZZ,MzXXYZ,MzXYYZ,MzXYZZ,MzXXYYZ,MzXXYZZ,MzXYYZZ,MzXXYYZZ;
   // //      {
   // //         //2.
   // //         MzXX      =   mu200-vx2;
@@ -12723,9 +12723,9 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
   // //         MzYZ      =   mu011-vyz;
   // //         MzZZ      =   mu002-vz2;
 
-  // //         doubflo pimpmu200 = mu200 + c1o3 * OORho;
-  // //         doubflo pimpmu020 = mu020 + c1o3 * OORho;
-  // //         doubflo pimpmu002 = mu002 + c1o3 * OORho;
+  // //         real pimpmu200 = mu200 + c1o3 * OORho;
+  // //         real pimpmu020 = mu020 + c1o3 * OORho;
+  // //         real pimpmu002 = mu002 + c1o3 * OORho;
 
   // //         //3.
   // //         MzXXY     =    two*vx2y - two*vx*mu110 - vy*pimpmu200 + mu210; 
@@ -12751,9 +12751,9 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
   // //         MzXYZZ    =   /*-three*vxyz2+*/pimpmu002*vxy/*+two*vxz*mu011*/-mu012*vx/*+two*vyz*mu101*/-vy*mu102/*+vz2*mu110-two*vz*mu111*/+mu112; 
   // //         MzYYZZ    =   /*-three*vy2z2+*/pimpmu002*vy2/*+four*vyz*mu011*/-two*vy*mu012+vz2*pimpmu020-two*vz*mu021+mu022; 
 
-  // //         doubflo pimpmu220 = mu220 + c1o9 * OORho;
-  // //         doubflo pimpmu202 = mu202 + c1o9 * OORho;
-  // //         doubflo pimpmu022 = mu022 + c1o9 * OORho;
+  // //         real pimpmu220 = mu220 + c1o9 * OORho;
+  // //         real pimpmu202 = mu202 + c1o9 * OORho;
+  // //         real pimpmu022 = mu022 + c1o9 * OORho;
 
   // //         //5.
   // //         //MzXXYYZ   =    four*(vx2y2z-vxyz*mu110+vxy*mu111)+ 
@@ -12790,22 +12790,22 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
   // //         //               two*(vy*mu212/*-vy2z*mu201-vxz2*mu120-vyz2*mu210-vxy2*mu102-vx2z*mu021-vx2y*mu012*/-vx*mu122-vz*mu221); 
   // //      }
   // //      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-  // //      doubflo MXXpMYYpMZZ,MXXmMYY, MXXmMZZ, MXXYpMYZZ,MXXZpMYYZ,MXYYpMXZZ, MXXYmMYZZ,MXXZmMYYZ,MXYYmMXZZ;
+  // //      real MXXpMYYpMZZ,MXXmMYY, MXXmMZZ, MXXYpMYZZ,MXXZpMYYZ,MXYYpMXZZ, MXXYmMYZZ,MXXZmMYYZ,MXYYmMXZZ;
   // //      {
   // //         //coll faktoren:
-  // //         doubflo w1 =  (-omega);
-  // //         doubflo w2 = -one;//(-omega);
-  // //         doubflo w3 = -(two+(-omega));//-one;
-  // //         doubflo w4 = -(two+(-omega));//-one;
-  // //         doubflo w5 = -(two+(-omega));//-one;
-  // //         doubflo w6 = -one;
-  // //         doubflo w7 = -one;
-  // //         doubflo w8 = -one;
-  // //         doubflo w9 = -one;
-  // //         doubflo w10= -one;
-
-		//	//doubflo wadjust;
-		//	//doubflo qudricLimit = c1o100;
+  // //         real w1 =  (-omega);
+  // //         real w2 = -one;//(-omega);
+  // //         real w3 = -(two+(-omega));//-one;
+  // //         real w4 = -(two+(-omega));//-one;
+  // //         real w5 = -(two+(-omega));//-one;
+  // //         real w6 = -one;
+  // //         real w7 = -one;
+  // //         real w8 = -one;
+  // //         real w9 = -one;
+  // //         real w10= -one;
+
+		//	//real wadjust;
+		//	//real qudricLimit = c1o100;
 
   // //         ////////lin kombi bilden:
   // //         MXXpMYYpMZZ =  MzXX + MzYY + MzZZ;
@@ -12819,9 +12819,9 @@ extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(   doubflo omega,
   // //         MXYYpMXZZ   =  MzXYY+MzXZZ;
   // //         MXYYmMXZZ   =  MzXYY-MzXZZ;
 
-  // //         doubflo MXXYYppp    = MzXXYY + MzXXZZ + MzYYZZ;
-  // //         doubflo MXXYYpm2p   = MzXXYY - two*MzXXZZ + MzYYZZ;
-  // //         doubflo MXXYYppm2   = MzXXYY + MzXXZZ - two*MzYYZZ;
+  // //         real MXXYYppp    = MzXXYY + MzXXZZ + MzYYZZ;
+  // //         real MXXYYpm2p   = MzXXYY - two*MzXXZZ + MzYYZZ;
+  // //         real MXXYYppm2   = MzXXYY + MzXXZZ - two*MzYYZZ;
 
   // //         //relaxation:
   // //         MXXpMYYpMZZ -= w2*(one-OORho-MXXpMYYpMZZ);
diff --git a/src/VirtualFluids_GPU/GPU/DragLift27.cu b/src/VirtualFluids_GPU/GPU/DragLift27.cu
index 7005392bc..8480b3df0 100644
--- a/src/VirtualFluids_GPU/GPU/DragLift27.cu
+++ b/src/VirtualFluids_GPU/GPU/DragLift27.cu
@@ -3,9 +3,9 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void DragLiftPost27(  doubflo* DD, 
+extern "C" __global__ void DragLiftPost27(  real* DD, 
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											int kQ, 
 											double *DragX,
 											double *DragY,
@@ -92,7 +92,7 @@ extern "C" __global__ void DragLiftPost27(  doubflo* DD,
 	{
 		unsigned int sizeQ = kQ;
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+		real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
 			*q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
 			*q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
 			*q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -154,7 +154,7 @@ extern "C" __global__ void DragLiftPost27(  doubflo* DD,
 		unsigned int ktne = KQK;
 		unsigned int kbsw = neighborZ[ksw];
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+		real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
                 f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
 		f_W    = (D.f[dirE   ])[ke   ];
@@ -191,7 +191,7 @@ extern "C" __global__ void DragLiftPost27(  doubflo* DD,
 				OnTNE = zero, OnTSW = zero, OnTSE = zero, OnTNW = zero, 
 				OnBNE = zero, OnBSW = zero, OnBSE = zero, OnBNW = zero;
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo q;
+		real q;
 		q = q_dirE[k];		if (q>=zero && q<=one) OnE   = one;
 		q = q_dirW[k];		if (q>=zero && q<=one) OnW   = one;
 		q = q_dirN[k];		if (q>=zero && q<=one) OnN   = one;
@@ -269,9 +269,9 @@ extern "C" __global__ void DragLiftPost27(  doubflo* DD,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void DragLiftPre27(   doubflo* DD, 
+extern "C" __global__ void DragLiftPre27(   real* DD, 
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											int kQ, 
 											double *DragX,
 											double *DragY,
@@ -358,7 +358,7 @@ extern "C" __global__ void DragLiftPre27(   doubflo* DD,
 	{
 		unsigned int sizeQ = kQ;
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+		real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
 			*q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
 			*q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
 			*q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -420,7 +420,7 @@ extern "C" __global__ void DragLiftPre27(   doubflo* DD,
 		unsigned int ktne = KQK;
 		unsigned int kbsw = neighborZ[ksw];
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+		real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
                 f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
 		f_E   = (D.f[dirE   ])[ke   ];
@@ -457,7 +457,7 @@ extern "C" __global__ void DragLiftPre27(   doubflo* DD,
 				OnTNE = zero, OnTSW = zero, OnTSE = zero, OnTNW = zero, 
 				OnBNE = zero, OnBSW = zero, OnBSE = zero, OnBNW = zero;
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo q;
+		real q;
 		q = q_dirE[k];		if (q>=zero && q<=one) OnW   = one;
 		q = q_dirW[k];		if (q>=zero && q<=one) OnE   = one;
 		q = q_dirN[k];		if (q>=zero && q<=one) OnS   = one;
diff --git a/src/VirtualFluids_GPU/GPU/ExchangeData27.cu b/src/VirtualFluids_GPU/GPU/ExchangeData27.cu
index 3c1c04e76..c8abd6809 100644
--- a/src/VirtualFluids_GPU/GPU/ExchangeData27.cu
+++ b/src/VirtualFluids_GPU/GPU/ExchangeData27.cu
@@ -3,8 +3,8 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void getSendFsPost27(doubflo* DD,
-										   doubflo* bufferFs,
+extern "C" __global__ void getSendFsPost27(real* DD,
+										   real* bufferFs,
 										   int* sendIndex,
                                            int buffmax,
                                            unsigned int* neighborX,
@@ -239,8 +239,8 @@ extern "C" __global__ void getSendFsPost27(doubflo* DD,
 
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void setRecvFsPost27(doubflo* DD,
-										   doubflo* bufferFs,
+extern "C" __global__ void setRecvFsPost27(real* DD,
+										   real* bufferFs,
 										   int* recvIndex,
                                            int buffmax,
                                            unsigned int* neighborX,
@@ -474,8 +474,8 @@ extern "C" __global__ void setRecvFsPost27(doubflo* DD,
 
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void getSendFsPre27(doubflo* DD,
-										  doubflo* bufferFs,
+extern "C" __global__ void getSendFsPre27(real* DD,
+										  real* bufferFs,
 										  int* sendIndex,
                                           int buffmax,
                                           unsigned int* neighborX,
@@ -683,8 +683,8 @@ extern "C" __global__ void getSendFsPre27(doubflo* DD,
 
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void setRecvFsPre27(doubflo* DD,
-										  doubflo* bufferFs,
+extern "C" __global__ void setRecvFsPre27(real* DD,
+										  real* bufferFs,
 										  int* recvIndex,
                                           int buffmax,
                                           unsigned int* neighborX,
diff --git a/src/VirtualFluids_GPU/GPU/GPU_Interface.h b/src/VirtualFluids_GPU/GPU/GPU_Interface.h
index 6bb09e065..834ff289d 100644
--- a/src/VirtualFluids_GPU/GPU/GPU_Interface.h
+++ b/src/VirtualFluids_GPU/GPU/GPU_Interface.h
@@ -2,7 +2,6 @@
 #include <curand.h>
 #include <curand_kernel.h>
 
-extern "C" int devCheck(  int gpudevice);
 
 //////////////////////////////////////////////////////////////////////////
 //Kernel
@@ -10,380 +9,380 @@ extern "C" int devCheck(  int gpudevice);
 extern "C" void KernelCas27(unsigned int grid_nx, 
                             unsigned int grid_ny, 
                             unsigned int grid_nz, 
-                            doubflo s9,
+                            real s9,
                             unsigned int* bcMatD,
                             unsigned int* neighborX,
                             unsigned int* neighborY,
                             unsigned int* neighborZ,
-                            doubflo* DD,
+                            real* DD,
                             int size_Mat,
                             bool EvenOrOdd);
 
 extern "C" void KernelCasSP27(unsigned int numberOfThreads, 
-                              doubflo s9,
+                              real s9,
                               unsigned int* bcMatD,
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
-                              doubflo* DD,
+                              real* DD,
                               int size_Mat,
                               bool EvenOrOdd);
 
 extern "C" void KernelCasSPMS27(unsigned int numberOfThreads, 
-                                doubflo s9,
+                                real s9,
                                 unsigned int* bcMatD,
                                 unsigned int* neighborX,
                                 unsigned int* neighborY,
                                 unsigned int* neighborZ,
-                                doubflo* DD,
+                                real* DD,
                                 int size_Mat,
                                 bool EvenOrOdd);
 
 extern "C" void KernelCasSPMSOHM27( unsigned int numberOfThreads, 
-                                   doubflo s9,
+                                   real s9,
                                    unsigned int* bcMatD,
                                    unsigned int* neighborX,
                                    unsigned int* neighborY,
                                    unsigned int* neighborZ,
-                                   doubflo* DD,
+                                   real* DD,
                                    int size_Mat,
                                    bool EvenOrOdd);
 
 extern "C" void KernelCasKumSP27(unsigned int numberOfThreads, 
-								 doubflo s9,
+								 real s9,
 								 unsigned int* bcMatD,
 								 unsigned int* neighborX,
 								 unsigned int* neighborY,
 								 unsigned int* neighborZ,
-								 doubflo* DD,
+								 real* DD,
 								 int size_Mat,
 								 bool EvenOrOdd);
 
 extern "C" void KernelBGKPlusSP27(unsigned int numberOfThreads, 
-								  doubflo s9,
+								  real s9,
 								  unsigned int* bcMatD,
 								  unsigned int* neighborX,
 								  unsigned int* neighborY,
 								  unsigned int* neighborZ,
-								  doubflo* DD,
+								  real* DD,
 								  int size_Mat,
 								  bool EvenOrOdd);
 
 extern "C" void KernelBGKPlusCompSP27(unsigned int numberOfThreads, 
-									  doubflo s9,
+									  real s9,
 									  unsigned int* bcMatD,
 									  unsigned int* neighborX,
 									  unsigned int* neighborY,
 									  unsigned int* neighborZ,
-									  doubflo* DD,
+									  real* DD,
 									  int size_Mat,
 									  bool EvenOrOdd);
 
 extern "C" void KernelBGKCompSP27(unsigned int numberOfThreads, 
-								  doubflo s9,
+								  real s9,
 								  unsigned int* bcMatD,
 								  unsigned int* neighborX,
 								  unsigned int* neighborY,
 								  unsigned int* neighborZ,
-								  doubflo* DD,
+								  real* DD,
 								  int size_Mat,
 								  bool EvenOrOdd);
 
 extern "C" void KernelBGKSP27(unsigned int numberOfThreads, 
-							  doubflo s9,
+							  real s9,
 							  unsigned int* bcMatD,
 							  unsigned int* neighborX,
 							  unsigned int* neighborY,
 							  unsigned int* neighborZ,
-							  doubflo* DD,
+							  real* DD,
 							  int size_Mat,
 							  bool EvenOrOdd);
 
 extern "C" void KernelMRTSP27(unsigned int numberOfThreads, 
-							  doubflo s9,
+							  real s9,
 							  unsigned int* bcMatD,
 							  unsigned int* neighborX,
 							  unsigned int* neighborY,
 							  unsigned int* neighborZ,
-							  doubflo* DD,
+							  real* DD,
 							  int size_Mat,
 							  bool EvenOrOdd);
 
 extern "C" void KernelMRTCompSP27(unsigned int numberOfThreads, 
-								  doubflo s9,
+								  real s9,
 								  unsigned int* bcMatD,
 								  unsigned int* neighborX,
 								  unsigned int* neighborY,
 								  unsigned int* neighborZ,
-								  doubflo* DD,
+								  real* DD,
 								  int size_Mat,
 								  bool EvenOrOdd);
 
 extern "C" void KernelCumulantD3Q27All4(unsigned int numberOfThreads,
-									    doubflo s9,
+									    real s9,
 									    unsigned int* bcMatD,
 									    unsigned int* neighborX,
 									    unsigned int* neighborY,
 									    unsigned int* neighborZ,
-									    doubflo* DD,
+									    real* DD,
 									    int size_Mat,
 									    int level,
-									    doubflo* forces,
+									    real* forces,
 									    bool EvenOrOdd);
 
 extern "C" void KernelCumulantD3Q27F3(unsigned int numberOfThreads,
-									  doubflo s9,
+									  real s9,
 									  unsigned int* bcMatD,
 									  unsigned int* neighborX,
 									  unsigned int* neighborY,
 									  unsigned int* neighborZ,
-									  doubflo* DD,
-									  doubflo* F3,
+									  real* DD,
+									  real* F3,
 									  int size_Mat,
 									  int level,
-									  doubflo* forces,
+									  real* forces,
 									  bool EvenOrOdd);
 
 extern "C" void KernelKumAA2016CompBulkSP27(unsigned int numberOfThreads, 
-											doubflo s9,
+											real s9,
 											unsigned int* bcMatD,
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
-											doubflo* DD,
+											real* DD,
 											int size_Mat,
 											int size_Array,
 											int level,
-											doubflo* forces,
+											real* forces,
 											bool EvenOrOdd);
 
 extern "C" void KernelKumAA2016CompSP27(unsigned int numberOfThreads, 
-										doubflo s9,
+										real s9,
 										unsigned int* bcMatD,
 										unsigned int* neighborX,
 										unsigned int* neighborY,
 										unsigned int* neighborZ,
-										doubflo* DD,
+										real* DD,
 										int size_Mat,
 										int level,
-										doubflo* forces,
+										real* forces,
 										bool EvenOrOdd);
 
 extern "C" void KernelKumNewCompSpongeSP27(unsigned int numberOfThreads, 
-										   doubflo s9,
+										   real s9,
 										   unsigned int* bcMatD,
 										   unsigned int* neighborX,
 										   unsigned int* neighborY,
 										   unsigned int* neighborZ,
-										   doubflo* coordX,
-										   doubflo* coordY,
-										   doubflo* coordZ,
-										   doubflo* DD,
+										   real* coordX,
+										   real* coordY,
+										   real* coordZ,
+										   real* DD,
 										   int size_Mat,
 										   bool EvenOrOdd);
 
 extern "C" void KernelKum1hSP27(    unsigned int numberOfThreads, 
-									doubflo omega,
-									doubflo deltaPhi,
-									doubflo angularVelocity,
+									real omega,
+									real deltaPhi,
+									real angularVelocity,
 									unsigned int* bcMatD,
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
-									doubflo* coordX,
-									doubflo* coordY,
-									doubflo* coordZ,
-									doubflo* DDStart,
+									real* coordX,
+									real* coordY,
+									real* coordZ,
+									real* DDStart,
 									int size_Mat,
 									bool EvenOrOdd);
 
 extern "C" void KernelCascadeSP27(unsigned int numberOfThreads, 
-								  doubflo s9,
+								  real s9,
 								  unsigned int* bcMatD,
 								  unsigned int* neighborX,
 								  unsigned int* neighborY,
 								  unsigned int* neighborZ,
-								  doubflo* DD,
+								  real* DD,
 								  int size_Mat,
 								  bool EvenOrOdd);
 
 extern "C" void KernelCascadeCompSP27(  unsigned int numberOfThreads, 
-										doubflo s9,
+										real s9,
 										unsigned int* bcMatD,
 										unsigned int* neighborX,
 										unsigned int* neighborY,
 										unsigned int* neighborZ,
-										doubflo* DD,
+										real* DD,
 										int size_Mat,
 										bool EvenOrOdd);
 
 extern "C" void KernelKumNewSP27(   unsigned int numberOfThreads, 
-									doubflo s9,
+									real s9,
 									unsigned int* bcMatD,
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
-									doubflo* DD,
+									real* DD,
 									int size_Mat,
 									bool EvenOrOdd);
 
 extern "C" void KernelKumNewCompBulkSP27(   unsigned int numberOfThreads, 
-											doubflo s9,
+											real s9,
 											unsigned int* bcMatD,
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
-											doubflo* DD,
+											real* DD,
 											int size_Mat,
 											int level,
-											doubflo* forces,
+											real* forces,
 											bool EvenOrOdd);
 
 extern "C" void KernelKumNewCompSP27(   unsigned int numberOfThreads, 
-										doubflo s9,
+										real s9,
 										unsigned int* bcMatD,
 										unsigned int* neighborX,
 										unsigned int* neighborY,
 										unsigned int* neighborZ,
-										doubflo* DD,
+										real* DD,
 										int size_Mat,
 										int size_Array,
 										int level,
-										doubflo* forces,
+										real* forces,
 										bool EvenOrOdd);
 
 extern "C" void KernelKumIsoTestSP27(unsigned int numberOfThreads, 
-									 doubflo s9,
+									 real s9,
 									 unsigned int* bcMatD,
 									 unsigned int* neighborX,
 									 unsigned int* neighborY,
 									 unsigned int* neighborZ,
-									 doubflo* DD,
-									 doubflo* dxxUx,
-									 doubflo* dyyUy,
-									 doubflo* dzzUz,
+									 real* DD,
+									 real* dxxUx,
+									 real* dyyUy,
+									 real* dzzUz,
 									 int size_Mat,
 									 bool EvenOrOdd);
 
 extern "C" void KernelKumCompSP27(  unsigned int numberOfThreads, 
-									doubflo s9,
+									real s9,
 									unsigned int* bcMatD,
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
-									doubflo* DD,
+									real* DD,
 									int size_Mat,
 									bool EvenOrOdd);
 
 extern "C" void KernelWaleCumOneCompSP27(unsigned int numberOfThreads,
-										 doubflo s9,
+										 real s9,
 										 unsigned int* bcMatD,
 										 unsigned int* neighborX,
 										 unsigned int* neighborY,
 										 unsigned int* neighborZ,
 										 unsigned int* neighborWSB,
-										 doubflo* veloX,
-										 doubflo* veloY,
-										 doubflo* veloZ,
-										 doubflo* DD,
-										 doubflo* turbulentViscosity,
+										 real* veloX,
+										 real* veloY,
+										 real* veloZ,
+										 real* DD,
+										 real* turbulentViscosity,
 										 int size_Mat,
 										 int size_Array,
 										 int level,
-										 doubflo* forces,
+										 real* forces,
 										 bool EvenOrOdd);
 
 extern "C" void KernelWaleCumAA2016CompSP27( unsigned int numberOfThreads,
-											 doubflo s9,
+											 real s9,
 											 unsigned int* bcMatD,
 											 unsigned int* neighborX,
 											 unsigned int* neighborY,
 											 unsigned int* neighborZ,
 											 unsigned int* neighborWSB,
-											 doubflo* veloX,
-											 doubflo* veloY,
-											 doubflo* veloZ,
-											 doubflo* DD,
-											 doubflo* turbulentViscosity,
+											 real* veloX,
+											 real* veloY,
+											 real* veloZ,
+											 real* DD,
+											 real* turbulentViscosity,
 											 int size_Mat,
 											 int size_Array,
 											 int level,
-											 doubflo* forces,
+											 real* forces,
 											 bool EvenOrOdd);
 
 extern "C" void KernelPMCumOneCompSP27(unsigned int numberOfThreads, 
-									   doubflo omega,
+									   real omega,
 									   unsigned int* neighborX,
 									   unsigned int* neighborY,
 									   unsigned int* neighborZ,
-									   doubflo* DD,
+									   real* DD,
 									   int size_Mat,
 									   int level,
-									   doubflo* forces,
-									   doubflo porosity,
-									   doubflo darcy,
-									   doubflo forchheimer,
+									   real* forces,
+									   real porosity,
+									   real darcy,
+									   real forchheimer,
 									   unsigned int sizeOfPorousMedia,
 									   unsigned int* nodeIdsPorousMedia, 
 									   bool EvenOrOdd);
 
 extern "C" void KernelThS7(unsigned int numberOfThreads, 
-                           doubflo diffusivity,
+                           real diffusivity,
                            unsigned int* bcMatD,
                            unsigned int* neighborX,
                            unsigned int* neighborY,
                            unsigned int* neighborZ,
-                           doubflo* DD,
-                           doubflo* DD7,
+                           real* DD,
+                           real* DD7,
                            int size_Mat,
                            bool EvenOrOdd);
 
 extern "C" void KernelThS27(unsigned int numberOfThreads, 
-                            doubflo diffusivity,
+                            real diffusivity,
                             unsigned int* bcMatD,
                             unsigned int* neighborX,
                             unsigned int* neighborY,
                             unsigned int* neighborZ,
-                            doubflo* DD,
-                            doubflo* DD7,
+                            real* DD,
+                            real* DD7,
                             int size_Mat,
                             bool EvenOrOdd);
 
 extern "C" void KernelADincomp7(   unsigned int numberOfThreads, 
-								   doubflo diffusivity,
+								   real diffusivity,
 								   unsigned int* bcMatD,
 								   unsigned int* neighborX,
 								   unsigned int* neighborY,
 								   unsigned int* neighborZ,
-								   doubflo* DD,
-								   doubflo* DD7,
+								   real* DD,
+								   real* DD7,
 								   int size_Mat,
 								   bool EvenOrOdd);
 
 extern "C" void KernelADincomp27(   unsigned int numberOfThreads, 
-									doubflo diffusivity,
+									real diffusivity,
 									unsigned int* bcMatD,
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
-									doubflo* DD,
-									doubflo* DD7,
+									real* DD,
+									real* DD7,
 									int size_Mat,
 									bool EvenOrOdd);
 
 extern "C" void Init27(int myid,
                        int numprocs,
-                       doubflo u0,
+                       real u0,
                        unsigned int* geoD,
                        unsigned int* neighborX,
                        unsigned int* neighborY,
                        unsigned int* neighborZ,
-                       doubflo* vParab,
+                       real* vParab,
                        unsigned int size_Mat,
                        unsigned int grid_nx, 
                        unsigned int grid_ny, 
                        unsigned int grid_nz, 
-                       doubflo* DD,
+                       real* DD,
                        int level,
                        int maxlevel);
 
@@ -392,12 +391,12 @@ extern "C" void InitF3(     unsigned int numberOfThreads,
                             unsigned int* neighborY,
                             unsigned int* neighborZ,
                             unsigned int* geoD,
-                            doubflo* rho,
-                            doubflo* ux,
-                            doubflo* uy,
-                            doubflo* uz,
+                            real* rho,
+                            real* ux,
+                            real* uy,
+                            real* uz,
                             unsigned int size_Mat,
-                            doubflo* G6,
+                            real* G6,
                             bool EvenOrOdd);
 
 extern "C" void InitSP27(unsigned int numberOfThreads,
@@ -405,12 +404,12 @@ extern "C" void InitSP27(unsigned int numberOfThreads,
                          unsigned int* neighborY,
                          unsigned int* neighborZ,
                          unsigned int* geoD,
-                         doubflo* rho,
-                         doubflo* ux,
-                         doubflo* uy,
-                         doubflo* uz,
+                         real* rho,
+                         real* ux,
+                         real* uy,
+                         real* uz,
                          unsigned int size_Mat,
-                         doubflo* DD,
+                         real* DD,
                          bool EvenOrOdd);
 
 extern "C" void InitCompSP27(unsigned int numberOfThreads,
@@ -418,12 +417,12 @@ extern "C" void InitCompSP27(unsigned int numberOfThreads,
 							 unsigned int* neighborY,
 							 unsigned int* neighborZ,
 							 unsigned int* geoD,
-							 doubflo* rho,
-							 doubflo* ux,
-							 doubflo* uy,
-							 doubflo* uz,
+							 real* rho,
+							 real* ux,
+							 real* uy,
+							 real* uz,
 							 unsigned int size_Mat,
-							 doubflo* DD,
+							 real* DD,
 							 bool EvenOrOdd);
 
 extern "C" void InitThS7(  unsigned int numberOfThreads,
@@ -431,12 +430,12 @@ extern "C" void InitThS7(  unsigned int numberOfThreads,
                            unsigned int* neighborY,
                            unsigned int* neighborZ,
                            unsigned int* geoD,
-                           doubflo* Conc,
-                           doubflo* ux,
-                           doubflo* uy,
-                           doubflo* uz,
+                           real* Conc,
+                           real* ux,
+                           real* uy,
+                           real* uz,
                            unsigned int size_Mat,
-                           doubflo* DD7,
+                           real* DD7,
                            bool EvenOrOdd);
 
 extern "C" void InitThS27( unsigned int numberOfThreads,
@@ -444,12 +443,12 @@ extern "C" void InitThS27( unsigned int numberOfThreads,
                            unsigned int* neighborY,
                            unsigned int* neighborZ,
                            unsigned int* geoD,
-                           doubflo* Conc,
-                           doubflo* ux,
-                           doubflo* uy,
-                           doubflo* uz,
+                           real* Conc,
+                           real* ux,
+                           real* uy,
+                           real* uz,
                            unsigned int size_Mat,
-                           doubflo* DD27,
+                           real* DD27,
                            bool EvenOrOdd);
 
 extern "C" void InitIncompAD7(   unsigned int numberOfThreads,
@@ -457,12 +456,12 @@ extern "C" void InitIncompAD7(   unsigned int numberOfThreads,
 								 unsigned int* neighborY,
 								 unsigned int* neighborZ,
 								 unsigned int* geoD,
-								 doubflo* Conc,
-								 doubflo* ux,
-								 doubflo* uy,
-								 doubflo* uz,
+								 real* Conc,
+								 real* ux,
+								 real* uy,
+								 real* uz,
 								 unsigned int size_Mat,
-								 doubflo* DD7,
+								 real* DD7,
 								 bool EvenOrOdd);
 
 extern "C" void InitIncompAD27(   unsigned int numberOfThreads,
@@ -470,18 +469,18 @@ extern "C" void InitIncompAD27(   unsigned int numberOfThreads,
 								  unsigned int* neighborY,
 								  unsigned int* neighborZ,
 								  unsigned int* geoD,
-								  doubflo* Conc,
-								  doubflo* ux,
-								  doubflo* uy,
-								  doubflo* uz,
+								  real* Conc,
+								  real* ux,
+								  real* uy,
+								  real* uz,
 								  unsigned int size_Mat,
-								  doubflo* DD27,
+								  real* DD27,
 								  bool EvenOrOdd);
 
-extern "C" void CalcMac27( doubflo* vxD,
-                          doubflo* vyD,
-                          doubflo* vzD,
-                          doubflo* rhoD,
+extern "C" void CalcMac27( real* vxD,
+                          real* vyD,
+                          real* vzD,
+                          real* rhoD,
                           unsigned int* geoD,
                           unsigned int* neighborX,
                           unsigned int* neighborY,
@@ -490,48 +489,48 @@ extern "C" void CalcMac27( doubflo* vxD,
                           unsigned int grid_nx, 
                           unsigned int grid_ny, 
                           unsigned int grid_nz, 
-                          doubflo* DD,
+                          real* DD,
                           bool evenOrOdd);
 
-extern "C" void CalcMacSP27(doubflo* vxD,
-                            doubflo* vyD,
-                            doubflo* vzD,
-                            doubflo* rhoD,
-                            doubflo* pressD,
+extern "C" void CalcMacSP27(real* vxD,
+                            real* vyD,
+                            real* vzD,
+                            real* rhoD,
+                            real* pressD,
                             unsigned int* geoD,
                             unsigned int* neighborX,
                             unsigned int* neighborY,
                             unsigned int* neighborZ,
                             unsigned int size_Mat,
                             unsigned int numberOfThreads, 
-                            doubflo* DD,
+                            real* DD,
                             bool evenOrOdd);
 
-extern "C" void CalcMacCompSP27(doubflo* vxD,
-								doubflo* vyD,
-								doubflo* vzD,
-								doubflo* rhoD,
-								doubflo* pressD,
+extern "C" void CalcMacCompSP27(real* vxD,
+								real* vyD,
+								real* vzD,
+								real* rhoD,
+								real* pressD,
 								unsigned int* geoD,
 								unsigned int* neighborX,
 								unsigned int* neighborY,
 								unsigned int* neighborZ,
 								unsigned int size_Mat,
 								unsigned int numberOfThreads, 
-								doubflo* DD,
+								real* DD,
 								bool evenOrOdd);
 
-extern "C" void CalcMacThS7(  doubflo* Conc,
+extern "C" void CalcMacThS7(  real* Conc,
                               unsigned int* geoD,
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
                               unsigned int size_Mat,
                               unsigned int numberOfThreads, 
-                              doubflo* DD7,
+                              real* DD7,
                               bool evenOrOdd);
 
-extern "C" void PlaneConcThS7(doubflo* Conc,
+extern "C" void PlaneConcThS7(real* Conc,
 							  int* kPC,
 							  unsigned int numberOfPointskPC,
 							  unsigned int* geoD,
@@ -540,10 +539,10 @@ extern "C" void PlaneConcThS7(doubflo* Conc,
 							  unsigned int* neighborZ,
 							  unsigned int size_Mat,
 							  unsigned int numberOfThreads, 
-							  doubflo* DD7,
+							  real* DD7,
 							  bool evenOrOdd);
 
-extern "C" void PlaneConcThS27(doubflo* Conc,
+extern "C" void PlaneConcThS27(real* Conc,
 							   int* kPC,
 							   unsigned int numberOfPointskPC,
 							   unsigned int* geoD,
@@ -552,52 +551,52 @@ extern "C" void PlaneConcThS27(doubflo* Conc,
 							   unsigned int* neighborZ,
 							   unsigned int size_Mat,
 							   unsigned int numberOfThreads, 
-							   doubflo* DD27,
+							   real* DD27,
 							   bool evenOrOdd);
 
-extern "C" void CalcMacThS27( doubflo* Conc,
+extern "C" void CalcMacThS27( real* Conc,
                               unsigned int* geoD,
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
                               unsigned int size_Mat,
                               unsigned int numberOfThreads, 
-                              doubflo* DD27,
+                              real* DD27,
                               bool evenOrOdd);
 
-extern "C" void CalcMedSP27(  doubflo* vxD,
-                              doubflo* vyD,
-                              doubflo* vzD,
-                              doubflo* rhoD,
-                              doubflo* pressD,
+extern "C" void CalcMedSP27(  real* vxD,
+                              real* vyD,
+                              real* vzD,
+                              real* rhoD,
+                              real* pressD,
                               unsigned int* geoD,
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
                               unsigned int size_Mat,
                               unsigned int numberOfThreads, 
-                              doubflo* DD,
+                              real* DD,
                               bool evenOrOdd);
 
-extern "C" void CalcMedCompSP27(doubflo* vxD,
-								doubflo* vyD,
-								doubflo* vzD,
-								doubflo* rhoD,
-								doubflo* pressD,
+extern "C" void CalcMedCompSP27(real* vxD,
+								real* vyD,
+								real* vzD,
+								real* rhoD,
+								real* pressD,
 								unsigned int* geoD,
 								unsigned int* neighborX,
 								unsigned int* neighborY,
 								unsigned int* neighborZ,
 								unsigned int size_Mat,
 								unsigned int numberOfThreads, 
-								doubflo* DD,
+								real* DD,
 								bool evenOrOdd);
 
-extern "C" void CalcMacMedSP27(  doubflo* vxD,
-                                 doubflo* vyD,
-                                 doubflo* vzD,
-                                 doubflo* rhoD,
-                                 doubflo* pressD,
+extern "C" void CalcMacMedSP27(  real* vxD,
+                                 real* vyD,
+                                 real* vzD,
+                                 real* rhoD,
+                                 real* pressD,
                                  unsigned int* geoD,
                                  unsigned int* neighborX,
                                  unsigned int* neighborY,
@@ -607,108 +606,108 @@ extern "C" void CalcMacMedSP27(  doubflo* vxD,
                                  unsigned int numberOfThreads, 
                                  bool evenOrOdd);
 
-extern "C" void Calc2ndMomentsIncompSP27(doubflo* kxyFromfcNEQ,
-										 doubflo* kyzFromfcNEQ,
-										 doubflo* kxzFromfcNEQ,
-										 doubflo* kxxMyyFromfcNEQ,
-										 doubflo* kxxMzzFromfcNEQ,
+extern "C" void Calc2ndMomentsIncompSP27(real* kxyFromfcNEQ,
+										 real* kyzFromfcNEQ,
+										 real* kxzFromfcNEQ,
+										 real* kxxMyyFromfcNEQ,
+										 real* kxxMzzFromfcNEQ,
 										 unsigned int* geoD,
 										 unsigned int* neighborX,
 										 unsigned int* neighborY,
 										 unsigned int* neighborZ,
 										 unsigned int size_Mat,
 										 unsigned int numberOfThreads, 
-										 doubflo* DD,
+										 real* DD,
 										 bool evenOrOdd);
 
-extern "C" void Calc2ndMomentsCompSP27(doubflo* kxyFromfcNEQ,
-									   doubflo* kyzFromfcNEQ,
-									   doubflo* kxzFromfcNEQ,
-									   doubflo* kxxMyyFromfcNEQ,
-									   doubflo* kxxMzzFromfcNEQ,
+extern "C" void Calc2ndMomentsCompSP27(real* kxyFromfcNEQ,
+									   real* kyzFromfcNEQ,
+									   real* kxzFromfcNEQ,
+									   real* kxxMyyFromfcNEQ,
+									   real* kxxMzzFromfcNEQ,
 									   unsigned int* geoD,
 									   unsigned int* neighborX,
 									   unsigned int* neighborY,
 									   unsigned int* neighborZ,
 									   unsigned int size_Mat,
 									   unsigned int numberOfThreads, 
-									   doubflo* DD,
+									   real* DD,
 									   bool evenOrOdd);
 
-extern "C" void Calc3rdMomentsIncompSP27(doubflo* CUMbbb,
-										 doubflo* CUMabc,
-										 doubflo* CUMbac,
-										 doubflo* CUMbca,
-										 doubflo* CUMcba,
-										 doubflo* CUMacb,
-										 doubflo* CUMcab,
+extern "C" void Calc3rdMomentsIncompSP27(real* CUMbbb,
+										 real* CUMabc,
+										 real* CUMbac,
+										 real* CUMbca,
+										 real* CUMcba,
+										 real* CUMacb,
+										 real* CUMcab,
 										 unsigned int* geoD,
 										 unsigned int* neighborX,
 										 unsigned int* neighborY,
 										 unsigned int* neighborZ,
 										 unsigned int size_Mat,
 										 unsigned int numberOfThreads, 
-										 doubflo* DD,
+										 real* DD,
 										 bool evenOrOdd);
 
-extern "C" void Calc3rdMomentsCompSP27(doubflo* CUMbbb,
-									   doubflo* CUMabc,
-									   doubflo* CUMbac,
-									   doubflo* CUMbca,
-									   doubflo* CUMcba,
-									   doubflo* CUMacb,
-									   doubflo* CUMcab,
+extern "C" void Calc3rdMomentsCompSP27(real* CUMbbb,
+									   real* CUMabc,
+									   real* CUMbac,
+									   real* CUMbca,
+									   real* CUMcba,
+									   real* CUMacb,
+									   real* CUMcab,
 									   unsigned int* geoD,
 									   unsigned int* neighborX,
 									   unsigned int* neighborY,
 									   unsigned int* neighborZ,
 									   unsigned int size_Mat,
 									   unsigned int numberOfThreads, 
-									   doubflo* DD,
+									   real* DD,
 									   bool evenOrOdd);
 
-extern "C" void CalcHigherMomentsIncompSP27(doubflo* CUMcbb,
-											doubflo* CUMbcb,
-											doubflo* CUMbbc,
-											doubflo* CUMcca,
-											doubflo* CUMcac,
-											doubflo* CUMacc,
-											doubflo* CUMbcc,
-											doubflo* CUMcbc,
-											doubflo* CUMccb,
-											doubflo* CUMccc,
+extern "C" void CalcHigherMomentsIncompSP27(real* CUMcbb,
+											real* CUMbcb,
+											real* CUMbbc,
+											real* CUMcca,
+											real* CUMcac,
+											real* CUMacc,
+											real* CUMbcc,
+											real* CUMcbc,
+											real* CUMccb,
+											real* CUMccc,
 											unsigned int* geoD,
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
 											unsigned int size_Mat,
 											unsigned int numberOfThreads, 
-											doubflo* DD,
+											real* DD,
 											bool evenOrOdd);
 
-extern "C" void CalcHigherMomentsCompSP27(doubflo* CUMcbb,
-										  doubflo* CUMbcb,
-										  doubflo* CUMbbc,
-										  doubflo* CUMcca,
-										  doubflo* CUMcac,
-										  doubflo* CUMacc,
-										  doubflo* CUMbcc,
-										  doubflo* CUMcbc,
-										  doubflo* CUMccb,
-										  doubflo* CUMccc,
+extern "C" void CalcHigherMomentsCompSP27(real* CUMcbb,
+										  real* CUMbcb,
+										  real* CUMbbc,
+										  real* CUMcca,
+										  real* CUMcac,
+										  real* CUMacc,
+										  real* CUMbcc,
+										  real* CUMcbc,
+										  real* CUMccb,
+										  real* CUMccc,
 										  unsigned int* geoD,
 										  unsigned int* neighborX,
 										  unsigned int* neighborY,
 										  unsigned int* neighborZ,
 										  unsigned int size_Mat,
 										  unsigned int numberOfThreads, 
-										  doubflo* DD,
+										  real* DD,
 										  bool evenOrOdd);
 
-extern "C" void LBCalcMeasurePoints27(doubflo* vxMP,
-                                      doubflo* vyMP,
-                                      doubflo* vzMP,
-                                      doubflo* rhoMP,
+extern "C" void LBCalcMeasurePoints27(real* vxMP,
+                                      real* vyMP,
+                                      real* vzMP,
+                                      real* rhoMP,
                                       unsigned int* kMP,
                                       unsigned int numberOfPointskMP,
                                       unsigned int MPClockCycle,
@@ -718,7 +717,7 @@ extern "C" void LBCalcMeasurePoints27(doubflo* vxMP,
                                       unsigned int* neighborY,
                                       unsigned int* neighborZ,
                                       unsigned int size_Mat,
-                                      doubflo* DD,
+                                      real* DD,
                                       unsigned int numberOfThreads, 
                                       bool evenOrOdd);
 
@@ -731,7 +730,7 @@ extern "C" void BcPress27(int nx,
                           unsigned int* neighborX,
                           unsigned int* neighborY,
                           unsigned int* neighborZ,
-                          doubflo* DD, 
+                          real* DD, 
                           unsigned int size_Mat, 
                           bool evenOrOdd);
 
@@ -745,21 +744,21 @@ extern "C" void BcVel27(int nx,
                         unsigned int* neighborX,
                         unsigned int* neighborY,
                         unsigned int* neighborZ,
-                        doubflo* DD, 
+                        real* DD, 
                         unsigned int size_Mat, 
                         bool evenOrOdd, 
-                        doubflo u0x, 
-                        doubflo om);
+                        real u0x, 
+                        real om);
 
 extern "C" void QDev27( unsigned int numberOfThreads,
                         int nx,
                         int ny,
-                        doubflo* DD, 
+                        real* DD, 
                         int* k_Q, 
-                        doubflo* QQ,
+                        real* QQ,
                         unsigned int sizeQ,
                         unsigned int kQ, 
-                        doubflo om1, 
+                        real om1, 
                         unsigned int* neighborX,
                         unsigned int* neighborY,
                         unsigned int* neighborZ,
@@ -769,12 +768,12 @@ extern "C" void QDev27( unsigned int numberOfThreads,
 extern "C" void QDevComp27(unsigned int numberOfThreads,
 						   int nx,
 						   int ny,
-						   doubflo* DD, 
+						   real* DD, 
 						   int* k_Q, 
-						   doubflo* QQ,
+						   real* QQ,
 						   unsigned int sizeQ,
 						   unsigned int kQ, 
-						   doubflo om1, 
+						   real om1, 
 						   unsigned int* neighborX,
 						   unsigned int* neighborY,
 						   unsigned int* neighborZ,
@@ -784,12 +783,12 @@ extern "C" void QDevComp27(unsigned int numberOfThreads,
 extern "C" void QDevCompThinWallsPartOne27( unsigned int numberOfThreads,
 											int nx,
 											int ny,
-											doubflo* DD, 
+											real* DD, 
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											unsigned int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
@@ -799,12 +798,12 @@ extern "C" void QDevCompThinWallsPartOne27( unsigned int numberOfThreads,
 extern "C" void QDevCompThinWallsPartTwo27( unsigned int numberOfThreads,
 											int nx,
 											int ny,
-											doubflo* DD, 
+											real* DD, 
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											unsigned int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* geom,
 											unsigned int* neighborX,
 											unsigned int* neighborY,
@@ -816,12 +815,12 @@ extern "C" void QDevCompThinWallsPartTwo27( unsigned int numberOfThreads,
 extern "C" void QDev3rdMomentsComp27(  unsigned int numberOfThreads,
 									   int nx,
 									   int ny,
-									   doubflo* DD, 
+									   real* DD, 
 									   int* k_Q, 
-									   doubflo* QQ,
+									   real* QQ,
 									   unsigned int sizeQ,
 									   unsigned int kQ, 
-									   doubflo om1, 
+									   real om1, 
 									   unsigned int* neighborX,
 									   unsigned int* neighborY,
 									   unsigned int* neighborZ,
@@ -831,12 +830,12 @@ extern "C" void QDev3rdMomentsComp27(  unsigned int numberOfThreads,
 extern "C" void QDevIncompHighNu27(  unsigned int numberOfThreads,
 									 int nx,
 									 int ny,
-									 doubflo* DD, 
+									 real* DD, 
 									 int* k_Q, 
-									 doubflo* QQ,
+									 real* QQ,
 									 unsigned int sizeQ,
 									 unsigned int kQ, 
-									 doubflo om1, 
+									 real om1, 
 									 unsigned int* neighborX,
 									 unsigned int* neighborY,
 									 unsigned int* neighborZ,
@@ -846,12 +845,12 @@ extern "C" void QDevIncompHighNu27(  unsigned int numberOfThreads,
 extern "C" void QDevCompHighNu27(unsigned int numberOfThreads,
 								 int nx,
 								 int ny,
-								 doubflo* DD, 
+								 real* DD, 
 								 int* k_Q, 
-								 doubflo* QQ,
+								 real* QQ,
 								 unsigned int sizeQ,
 								 unsigned int kQ, 
-								 doubflo om1, 
+								 real om1, 
 								 unsigned int* neighborX,
 								 unsigned int* neighborY,
 								 unsigned int* neighborZ,
@@ -859,15 +858,15 @@ extern "C" void QDevCompHighNu27(unsigned int numberOfThreads,
 								 bool evenOrOdd);
 
 extern "C" void QVelDevicePlainBB27(unsigned int numberOfThreads,
-									doubflo* vx,
-									doubflo* vy,
-									doubflo* vz,
-									doubflo* DD,
+									real* vx,
+									real* vy,
+									real* vz,
+									real* DD,
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									unsigned int sizeQ,
 									int kQ, 
-									doubflo om1, 
+									real om1, 
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -875,15 +874,15 @@ extern "C" void QVelDevicePlainBB27(unsigned int numberOfThreads,
 									bool evenOrOdd);
 	
 extern "C" void QVelDeviceCouhette27(unsigned int numberOfThreads,
-									doubflo* vx,
-									doubflo* vy,
-									doubflo* vz,
-									doubflo* DD,
+									real* vx,
+									real* vy,
+									real* vz,
+									real* DD,
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									unsigned int sizeQ,
 									int kQ, 
-									doubflo om1, 
+									real om1, 
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -893,38 +892,38 @@ extern "C" void QVelDeviceCouhette27(unsigned int numberOfThreads,
 extern "C" void QVelDevice1h27( unsigned int numberOfThreads,
 								int nx,
 								int ny,
-								doubflo* vx,
-								doubflo* vy,
-								doubflo* vz,
-								doubflo* DD, 
+								real* vx,
+								real* vy,
+								real* vz,
+								real* DD, 
 								int* k_Q, 
-								doubflo* QQ,
+								real* QQ,
 								unsigned int sizeQ,
 								unsigned int kQ, 
-								doubflo om1, 
-								doubflo Phi, 
-								doubflo angularVelocity,
+								real om1, 
+								real Phi, 
+								real angularVelocity,
 								unsigned int* neighborX,
 								unsigned int* neighborY,
 								unsigned int* neighborZ,
-								doubflo* coordX,
-								doubflo* coordY,
-								doubflo* coordZ,
+								real* coordX,
+								real* coordY,
+								real* coordZ,
 								unsigned int size_Mat, 
 								bool evenOrOdd);
 
 extern "C" void QVelDev27(unsigned int numberOfThreads,
                           int nx,
                           int ny,
-                          doubflo* vx,
-                          doubflo* vy,
-                          doubflo* vz,
-                          doubflo* DD, 
+                          real* vx,
+                          real* vy,
+                          real* vz,
+                          real* DD, 
                           int* k_Q, 
-                          doubflo* QQ,
+                          real* QQ,
                           unsigned int sizeQ,
                           unsigned int kQ, 
-                          doubflo om1, 
+                          real om1, 
                           unsigned int* neighborX,
                           unsigned int* neighborY,
                           unsigned int* neighborZ,
@@ -934,15 +933,15 @@ extern "C" void QVelDev27(unsigned int numberOfThreads,
 extern "C" void QVelDevCompPlusSlip27(unsigned int numberOfThreads,
 									  int nx,
 									  int ny,
-									  doubflo* vx,
-									  doubflo* vy,
-									  doubflo* vz,
-									  doubflo* DD, 
+									  real* vx,
+									  real* vy,
+									  real* vz,
+									  real* DD, 
 									  int* k_Q, 
-									  doubflo* QQ,
+									  real* QQ,
 									  unsigned int sizeQ,
 									  unsigned int kQ, 
-									  doubflo om1, 
+									  real om1, 
 									  unsigned int* neighborX,
 									  unsigned int* neighborY,
 									  unsigned int* neighborZ,
@@ -952,15 +951,15 @@ extern "C" void QVelDevCompPlusSlip27(unsigned int numberOfThreads,
 extern "C" void QVelDevComp27(unsigned int numberOfThreads,
 							  int nx,
 							  int ny,
-							  doubflo* vx,
-							  doubflo* vy,
-							  doubflo* vz,
-							  doubflo* DD, 
+							  real* vx,
+							  real* vy,
+							  real* vz,
+							  real* DD, 
 							  int* k_Q, 
-							  doubflo* QQ,
+							  real* QQ,
 							  unsigned int sizeQ,
 							  unsigned int kQ, 
-							  doubflo om1, 
+							  real om1, 
 							  unsigned int* neighborX,
 							  unsigned int* neighborY,
 							  unsigned int* neighborZ,
@@ -970,15 +969,15 @@ extern "C" void QVelDevComp27(unsigned int numberOfThreads,
 extern "C" void QVelDevCompZeroPress27(unsigned int numberOfThreads,
 									   int nx,
 									   int ny,
-									   doubflo* vx,
-									   doubflo* vy,
-									   doubflo* vz,
-									   doubflo* DD, 
+									   real* vx,
+									   real* vy,
+									   real* vz,
+									   real* DD, 
 									   int* k_Q, 
-									   doubflo* QQ,
+									   real* QQ,
 									   unsigned int sizeQ,
 									   int kArray, 
-									   doubflo om1, 
+									   real om1, 
 									   unsigned int* neighborX,
 									   unsigned int* neighborY,
 									   unsigned int* neighborZ,
@@ -988,15 +987,15 @@ extern "C" void QVelDevCompZeroPress27(unsigned int numberOfThreads,
 extern "C" void QVelDevIncompHighNu27(  unsigned int numberOfThreads,
 										int nx,
 										int ny,
-										doubflo* vx,
-										doubflo* vy,
-										doubflo* vz,
-										doubflo* DD, 
+										real* vx,
+										real* vy,
+										real* vz,
+										real* DD, 
 										int* k_Q, 
-										doubflo* QQ,
+										real* QQ,
 										unsigned int sizeQ,
 										unsigned int kQ, 
-										doubflo om1, 
+										real om1, 
 										unsigned int* neighborX,
 										unsigned int* neighborY,
 										unsigned int* neighborZ,
@@ -1006,15 +1005,15 @@ extern "C" void QVelDevIncompHighNu27(  unsigned int numberOfThreads,
 extern "C" void QVelDevCompHighNu27(unsigned int numberOfThreads,
 									int nx,
 									int ny,
-									doubflo* vx,
-									doubflo* vy,
-									doubflo* vz,
-									doubflo* DD, 
+									real* vx,
+									real* vy,
+									real* vz,
+									real* DD, 
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									unsigned int sizeQ,
 									unsigned int kQ, 
-									doubflo om1, 
+									real om1, 
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -1022,13 +1021,13 @@ extern "C" void QVelDevCompHighNu27(unsigned int numberOfThreads,
 									bool evenOrOdd);
 
 extern "C" void QVeloDevEQ27(unsigned int numberOfThreads,
-							 doubflo* VeloX,
-							 doubflo* VeloY,
-							 doubflo* VeloZ,
-							 doubflo* DD, 
+							 real* VeloX,
+							 real* VeloY,
+							 real* VeloZ,
+							 real* DD, 
 							 int* k_Q, 
 							 int kQ, 
-							 doubflo om1, 
+							 real om1, 
 							 unsigned int* neighborX,
 							 unsigned int* neighborY,
 							 unsigned int* neighborZ,
@@ -1036,11 +1035,11 @@ extern "C" void QVeloDevEQ27(unsigned int numberOfThreads,
 							 bool evenOrOdd);
 
 extern "C" void QSlipDev27( unsigned int numberOfThreads,
-							doubflo* DD, 
+							real* DD, 
 							int* k_Q, 
-							doubflo* QQ,
+							real* QQ,
 							unsigned int sizeQ,
-							doubflo om1, 
+							real om1, 
 							unsigned int* neighborX,
 							unsigned int* neighborY,
 							unsigned int* neighborZ,
@@ -1048,11 +1047,11 @@ extern "C" void QSlipDev27( unsigned int numberOfThreads,
 							bool evenOrOdd);
 
 extern "C" void QSlipDevComp27(unsigned int numberOfThreads,
-							   doubflo* DD, 
+							   real* DD, 
 							   int* k_Q, 
-							   doubflo* QQ,
+							   real* QQ,
 							   unsigned int sizeQ,
-							   doubflo om1, 
+							   real om1, 
 							   unsigned int* neighborX,
 							   unsigned int* neighborY,
 							   unsigned int* neighborZ,
@@ -1060,14 +1059,14 @@ extern "C" void QSlipDevComp27(unsigned int numberOfThreads,
 							   bool evenOrOdd);
 
 extern "C" void QSlipGeomDevComp27( unsigned int numberOfThreads,
-									doubflo* DD, 
+									real* DD, 
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									unsigned int sizeQ,
-									doubflo om1, 
-									doubflo* NormalX,
-									doubflo* NormalY,
-									doubflo* NormalZ,
+									real om1, 
+									real* NormalX,
+									real* NormalY,
+									real* NormalZ,
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -1075,14 +1074,14 @@ extern "C" void QSlipGeomDevComp27( unsigned int numberOfThreads,
 									bool evenOrOdd);
 
 extern "C" void QSlipNormDevComp27(unsigned int numberOfThreads,
-								   doubflo* DD, 
+								   real* DD, 
 								   int* k_Q, 
-								   doubflo* QQ,
+								   real* QQ,
 								   unsigned int sizeQ,
-								   doubflo om1, 
-								   doubflo* NormalX,
-								   doubflo* NormalY,
-								   doubflo* NormalZ,
+								   real om1, 
+								   real* NormalX,
+								   real* NormalY,
+								   real* NormalZ,
 								   unsigned int* neighborX,
 								   unsigned int* neighborY,
 								   unsigned int* neighborZ,
@@ -1092,13 +1091,13 @@ extern "C" void QSlipNormDevComp27(unsigned int numberOfThreads,
 extern "C" void QPressDev27(unsigned int numberOfThreads,
                           int nx,
                           int ny,
-                          doubflo* rhoBC,
-                          doubflo* DD, 
+                          real* rhoBC,
+                          real* DD, 
                           int* k_Q, 
-                          doubflo* QQ,
+                          real* QQ,
                           unsigned int sizeQ,
                           unsigned int kQ, 
-                          doubflo om1, 
+                          real om1, 
                           unsigned int* neighborX,
                           unsigned int* neighborY,
                           unsigned int* neighborZ,
@@ -1106,11 +1105,11 @@ extern "C" void QPressDev27(unsigned int numberOfThreads,
                           bool evenOrOdd);
 
 extern "C" void QPressDevFixBackflow27(unsigned int numberOfThreads,
-                                       doubflo* rhoBC,
-                                       doubflo* DD, 
+                                       real* rhoBC,
+                                       real* DD, 
                                        int* k_Q, 
                                        unsigned int kQ, 
-                                       doubflo om1, 
+                                       real om1, 
                                        unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
@@ -1118,11 +1117,11 @@ extern "C" void QPressDevFixBackflow27(unsigned int numberOfThreads,
                                        bool evenOrOdd);
 
 extern "C" void QPressDevDirDepBot27(unsigned int numberOfThreads,
-                                     doubflo* rhoBC,
-                                     doubflo* DD, 
+                                     real* rhoBC,
+                                     real* DD, 
                                      int* k_Q, 
                                      unsigned int kQ, 
-                                     doubflo om1, 
+                                     real om1, 
                                      unsigned int* neighborX,
                                      unsigned int* neighborY,
                                      unsigned int* neighborZ,
@@ -1130,12 +1129,12 @@ extern "C" void QPressDevDirDepBot27(unsigned int numberOfThreads,
                                      bool evenOrOdd);
 
 extern "C" void QPressNoRhoDev27(  unsigned int numberOfThreads,
-								   doubflo* rhoBC,
-								   doubflo* DD, 
+								   real* rhoBC,
+								   real* DD, 
 								   int* k_Q, 
 								   int* k_N, 
 								   unsigned int kQ, 
-								   doubflo om1, 
+								   real om1, 
 								   unsigned int* neighborX,
 								   unsigned int* neighborY,
 								   unsigned int* neighborZ,
@@ -1143,12 +1142,12 @@ extern "C" void QPressNoRhoDev27(  unsigned int numberOfThreads,
 								   bool evenOrOdd);
 
 extern "C" void QInflowScaleByPressDev27(unsigned int numberOfThreads,
-										 doubflo* rhoBC,
-										 doubflo* DD, 
+										 real* rhoBC,
+										 real* DD, 
 										 int* k_Q, 
 										 int* k_N, 
 										 unsigned int kQ, 
-										 doubflo om1, 
+										 real om1, 
 										 unsigned int* neighborX,
 										 unsigned int* neighborY,
 										 unsigned int* neighborZ,
@@ -1156,12 +1155,12 @@ extern "C" void QInflowScaleByPressDev27(unsigned int numberOfThreads,
 										 bool evenOrOdd);
 
 extern "C" void QPressDevOld27(unsigned int numberOfThreads,
-                               doubflo* rhoBC,
-                               doubflo* DD, 
+                               real* rhoBC,
+                               real* DD, 
                                int* k_Q, 
                                int* k_N, 
                                unsigned int kQ, 
-                               doubflo om1, 
+                               real om1, 
                                unsigned int* neighborX,
                                unsigned int* neighborY,
                                unsigned int* neighborZ,
@@ -1169,12 +1168,12 @@ extern "C" void QPressDevOld27(unsigned int numberOfThreads,
                                bool evenOrOdd);
 
 extern "C" void QPressDevIncompNEQ27(unsigned int numberOfThreads,
-									 doubflo* rhoBC,
-									 doubflo* DD, 
+									 real* rhoBC,
+									 real* DD, 
 									 int* k_Q, 
 									 int* k_N, 
 									 unsigned int kQ, 
-									 doubflo om1, 
+									 real om1, 
 									 unsigned int* neighborX,
 									 unsigned int* neighborY,
 									 unsigned int* neighborZ,
@@ -1182,12 +1181,12 @@ extern "C" void QPressDevIncompNEQ27(unsigned int numberOfThreads,
 									 bool evenOrOdd);
 
 extern "C" void QPressDevNEQ27(unsigned int numberOfThreads,
-							   doubflo* rhoBC,
-							   doubflo* DD, 
+							   real* rhoBC,
+							   real* DD, 
 							   int* k_Q, 
 							   int* k_N, 
 							   unsigned int kQ, 
-							   doubflo om1, 
+							   real om1, 
 							   unsigned int* neighborX,
 							   unsigned int* neighborY,
 							   unsigned int* neighborZ,
@@ -1195,13 +1194,13 @@ extern "C" void QPressDevNEQ27(unsigned int numberOfThreads,
 							   bool evenOrOdd);
 
 extern "C" void QPressDevEQZ27(unsigned int numberOfThreads,
-							   doubflo* rhoBC,
-							   doubflo* DD, 
+							   real* rhoBC,
+							   real* DD, 
 							   int* k_Q, 
 							   int* k_N, 
-							   doubflo* kTestRE, 
+							   real* kTestRE, 
 							   unsigned int kQ, 
-							   doubflo om1, 
+							   real om1, 
 							   unsigned int* neighborX,
 							   unsigned int* neighborY,
 							   unsigned int* neighborZ,
@@ -1209,7 +1208,7 @@ extern "C" void QPressDevEQZ27(unsigned int numberOfThreads,
 							   bool evenOrOdd);
 
 extern "C" void QPressDevZero27(unsigned int numberOfThreads,
-                                doubflo* DD, 
+                                real* DD, 
                                 int* k_Q, 
                                 unsigned int kQ, 
                                 unsigned int* neighborX,
@@ -1219,12 +1218,12 @@ extern "C" void QPressDevZero27(unsigned int numberOfThreads,
                                 bool evenOrOdd);
 
 extern "C" void QPressDevFake27(   unsigned int numberOfThreads,
-								   doubflo* rhoBC,
-								   doubflo* DD, 
+								   real* rhoBC,
+								   real* DD, 
 								   int* k_Q, 
 								   int* k_N, 
 								   unsigned int kQ, 
-								   doubflo om1, 
+								   real om1, 
 								   unsigned int* neighborX,
 								   unsigned int* neighborY,
 								   unsigned int* neighborZ,
@@ -1234,12 +1233,12 @@ extern "C" void QPressDevFake27(   unsigned int numberOfThreads,
 extern "C" void BBDev27( unsigned int numberOfThreads,
                         int nx,
                         int ny,
-                        doubflo* DD, 
+                        real* DD, 
                         int* k_Q, 
-                        doubflo* QQ,
+                        real* QQ,
                         unsigned int sizeQ,
                         unsigned int kQ, 
-                        doubflo om1, 
+                        real om1, 
                         unsigned int* neighborX,
                         unsigned int* neighborY,
                         unsigned int* neighborZ,
@@ -1247,13 +1246,13 @@ extern "C" void BBDev27( unsigned int numberOfThreads,
                         bool evenOrOdd);
 
 extern "C" void QPressDev27_IntBB(  unsigned int numberOfThreads,
-									doubflo* rho,
-									doubflo* DD, 
+									real* rho,
+									real* DD, 
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									unsigned int sizeQ,
 									unsigned int kQ, 
-									doubflo om1, 
+									real om1, 
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -1261,15 +1260,15 @@ extern "C" void QPressDev27_IntBB(  unsigned int numberOfThreads,
 									bool evenOrOdd);
 
 extern "C" void QPressDevAntiBB27(  unsigned int numberOfThreads,
-								  doubflo* rhoBC,
-								  doubflo* vx,
-								  doubflo* vy,
-								  doubflo* vz,
-								  doubflo* DD, 
+								  real* rhoBC,
+								  real* vx,
+								  real* vy,
+								  real* vz,
+								  real* DD, 
 								  int* k_Q, 
-								  doubflo* QQ,
+								  real* QQ,
 								  int kQ, 
-								  doubflo om1, 
+								  real om1, 
 								  unsigned int* neighborX,
 								  unsigned int* neighborY,
 								  unsigned int* neighborZ,
@@ -1277,16 +1276,16 @@ extern "C" void QPressDevAntiBB27(  unsigned int numberOfThreads,
 								  bool evenOrOdd);
 
 extern "C" void PressSchlaffer27(unsigned int numberOfThreads,
-                                 doubflo* rhoBC,
-                                 doubflo* DD,
-                                 doubflo* vx0,
-                                 doubflo* vy0,
-                                 doubflo* vz0,
-                                 doubflo* deltaVz0,
+                                 real* rhoBC,
+                                 real* DD,
+                                 real* vx0,
+                                 real* vy0,
+                                 real* vz0,
+                                 real* deltaVz0,
                                  int* k_Q, 
                                  int* k_N, 
                                  int kQ, 
-                                 doubflo om1, 
+                                 real om1, 
                                  unsigned int* neighborX,
                                  unsigned int* neighborY,
                                  unsigned int* neighborZ,
@@ -1295,13 +1294,13 @@ extern "C" void PressSchlaffer27(unsigned int numberOfThreads,
 
 extern "C" void VelSchlaffer27(  unsigned int numberOfThreads,
                                  int t,
-                                 doubflo* DD,
-                                 doubflo* vz0,
-                                 doubflo* deltaVz0,
+                                 real* DD,
+                                 real* vz0,
+                                 real* deltaVz0,
                                  int* k_Q, 
                                  int* k_N, 
                                  int kQ, 
-                                 doubflo om1, 
+                                 real om1, 
                                  unsigned int* neighborX,
                                  unsigned int* neighborY,
                                  unsigned int* neighborZ,
@@ -1311,15 +1310,15 @@ extern "C" void VelSchlaffer27(  unsigned int numberOfThreads,
 extern "C" void QADDev7(unsigned int numberOfThreads,
                         int nx,
                         int ny,
-                        doubflo* DD, 
-                        doubflo* DD7,
-                        doubflo* temp,
-                        doubflo diffusivity,
+                        real* DD, 
+                        real* DD7,
+                        real* temp,
+                        real diffusivity,
                         int* k_Q, 
-                        doubflo* QQ,
+                        real* QQ,
                         unsigned int sizeQ,
                         unsigned int kQ, 
-                        doubflo om1, 
+                        real om1, 
                         unsigned int* neighborX,
                         unsigned int* neighborY,
                         unsigned int* neighborZ,
@@ -1330,15 +1329,15 @@ extern "C" void QADDev7(unsigned int numberOfThreads,
 extern "C" void QADDirichletDev27( unsigned int numberOfThreads,
 								   int nx,
 								   int ny,
-								   doubflo* DD, 
-								   doubflo* DD27,
-								   doubflo* temp,
-								   doubflo diffusivity,
+								   real* DD, 
+								   real* DD27,
+								   real* temp,
+								   real diffusivity,
 								   int* k_Q, 
-								   doubflo* QQ,
+								   real* QQ,
 								   unsigned int sizeQ,
 								   unsigned int kQ, 
-								   doubflo om1, 
+								   real om1, 
 								   unsigned int* neighborX,
 								   unsigned int* neighborY,
 								   unsigned int* neighborZ,
@@ -1348,15 +1347,15 @@ extern "C" void QADDirichletDev27( unsigned int numberOfThreads,
 extern "C" void QADBBDev27(  unsigned int numberOfThreads,
 							 int nx,
 							 int ny,
-							 doubflo* DD, 
-							 doubflo* DD27,
-							 doubflo* temp,
-							 doubflo diffusivity,
+							 real* DD, 
+							 real* DD27,
+							 real* temp,
+							 real diffusivity,
 							 int* k_Q, 
-							 doubflo* QQ,
+							 real* QQ,
 							 unsigned int sizeQ,
 							 unsigned int kQ, 
-							 doubflo om1, 
+							 real om1, 
 							 unsigned int* neighborX,
 							 unsigned int* neighborY,
 							 unsigned int* neighborZ,
@@ -1366,16 +1365,16 @@ extern "C" void QADBBDev27(  unsigned int numberOfThreads,
 extern "C" void QADVelDev7(unsigned int numberOfThreads,
                            int nx,
                            int ny,
-                           doubflo* DD, 
-                           doubflo* DD7,
-                           doubflo* temp,
-                           doubflo* velo,
-                           doubflo diffusivity,
+                           real* DD, 
+                           real* DD7,
+                           real* temp,
+                           real* velo,
+                           real diffusivity,
                            int* k_Q, 
-                           doubflo* QQ,
+                           real* QQ,
                            unsigned int sizeQ,
                            unsigned int kQ, 
-                           doubflo om1, 
+                           real om1, 
                            unsigned int* neighborX,
                            unsigned int* neighborY,
                            unsigned int* neighborZ,
@@ -1386,16 +1385,16 @@ extern "C" void QADVelDev7(unsigned int numberOfThreads,
 extern "C" void QADVelDev27(  unsigned int numberOfThreads,
                               int nx,
                               int ny,
-                              doubflo* DD, 
-                              doubflo* DD27,
-                              doubflo* temp,
-                              doubflo* velo,
-                              doubflo diffusivity,
+                              real* DD, 
+                              real* DD27,
+                              real* temp,
+                              real* velo,
+                              real diffusivity,
                               int* k_Q, 
-                              doubflo* QQ,
+                              real* QQ,
                               unsigned int sizeQ,
                               unsigned int kQ, 
-                              doubflo om1, 
+                              real om1, 
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
@@ -1405,16 +1404,16 @@ extern "C" void QADVelDev27(  unsigned int numberOfThreads,
 extern "C" void QADPressDev7( unsigned int numberOfThreads,
                               int nx,
                               int ny,
-                              doubflo* DD, 
-                              doubflo* DD7,
-                              doubflo* temp,
-                              doubflo* velo,
-                              doubflo diffusivity,
+                              real* DD, 
+                              real* DD7,
+                              real* temp,
+                              real* velo,
+                              real diffusivity,
                               int* k_Q, 
-                              doubflo* QQ,
+                              real* QQ,
                               unsigned int sizeQ,
                               unsigned int kQ, 
-                              doubflo om1, 
+                              real om1, 
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
@@ -1424,16 +1423,16 @@ extern "C" void QADPressDev7( unsigned int numberOfThreads,
 extern "C" void QADPressDev27(unsigned int numberOfThreads,
                               int nx,
                               int ny,
-                              doubflo* DD, 
-                              doubflo* DD27,
-                              doubflo* temp,
-                              doubflo* velo,
-                              doubflo diffusivity,
+                              real* DD, 
+                              real* DD27,
+                              real* temp,
+                              real* velo,
+                              real diffusivity,
                               int* k_Q, 
-                              doubflo* QQ,
+                              real* QQ,
                               unsigned int sizeQ,
                               unsigned int kQ, 
-                              doubflo om1, 
+                              real om1, 
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
@@ -1443,15 +1442,15 @@ extern "C" void QADPressDev27(unsigned int numberOfThreads,
 extern "C" void QNoSlipADincompDev7(unsigned int numberOfThreads,
 									int nx,
 									int ny,
-									doubflo* DD, 
-									doubflo* DD7,
-									doubflo* temp,
-									doubflo diffusivity,
+									real* DD, 
+									real* DD7,
+									real* temp,
+									real diffusivity,
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									unsigned int sizeQ,
 									unsigned int kQ, 
-									doubflo om1, 
+									real om1, 
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -1461,15 +1460,15 @@ extern "C" void QNoSlipADincompDev7(unsigned int numberOfThreads,
 extern "C" void QNoSlipADincompDev27(unsigned int numberOfThreads,
 									 int nx,
 									 int ny,
-									 doubflo* DD, 
-									 doubflo* DD27,
-									 doubflo* temp,
-									 doubflo diffusivity,
+									 real* DD, 
+									 real* DD27,
+									 real* temp,
+									 real diffusivity,
 									 int* k_Q, 
-									 doubflo* QQ,
+									 real* QQ,
 									 unsigned int sizeQ,
 									 unsigned int kQ, 
-									 doubflo om1, 
+									 real om1, 
 									 unsigned int* neighborX,
 									 unsigned int* neighborY,
 									 unsigned int* neighborZ,
@@ -1479,16 +1478,16 @@ extern "C" void QNoSlipADincompDev27(unsigned int numberOfThreads,
 extern "C" void QADVeloIncompDev7( unsigned int numberOfThreads,
 								   int nx,
 								   int ny,
-								   doubflo* DD, 
-								   doubflo* DD7,
-								   doubflo* temp,
-								   doubflo* velo,
-								   doubflo diffusivity,
+								   real* DD, 
+								   real* DD7,
+								   real* temp,
+								   real* velo,
+								   real diffusivity,
 								   int* k_Q, 
-								   doubflo* QQ,
+								   real* QQ,
 								   unsigned int sizeQ,
 								   unsigned int kQ, 
-								   doubflo om1, 
+								   real om1, 
 								   unsigned int* neighborX,
 								   unsigned int* neighborY,
 								   unsigned int* neighborZ,
@@ -1499,16 +1498,16 @@ extern "C" void QADVeloIncompDev7( unsigned int numberOfThreads,
 extern "C" void QADVeloIncompDev27( unsigned int numberOfThreads,
 									int nx,
 									int ny,
-									doubflo* DD, 
-									doubflo* DD27,
-									doubflo* temp,
-									doubflo* velo,
-									doubflo diffusivity,
+									real* DD, 
+									real* DD27,
+									real* temp,
+									real* velo,
+									real diffusivity,
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									unsigned int sizeQ,
 									unsigned int kQ, 
-									doubflo om1, 
+									real om1, 
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -1518,16 +1517,16 @@ extern "C" void QADVeloIncompDev27( unsigned int numberOfThreads,
 extern "C" void QADPressIncompDev7(  unsigned int numberOfThreads,
 									 int nx,
 									 int ny,
-									 doubflo* DD, 
-									 doubflo* DD7,
-									 doubflo* temp,
-									 doubflo* velo,
-									 doubflo diffusivity,
+									 real* DD, 
+									 real* DD7,
+									 real* temp,
+									 real* velo,
+									 real diffusivity,
 									 int* k_Q, 
-									 doubflo* QQ,
+									 real* QQ,
 									 unsigned int sizeQ,
 									 unsigned int kQ, 
-									 doubflo om1, 
+									 real om1, 
 									 unsigned int* neighborX,
 									 unsigned int* neighborY,
 									 unsigned int* neighborZ,
@@ -1537,16 +1536,16 @@ extern "C" void QADPressIncompDev7(  unsigned int numberOfThreads,
 extern "C" void QADPressIncompDev27(  unsigned int numberOfThreads,
 									  int nx,
 									  int ny,
-									  doubflo* DD, 
-									  doubflo* DD27,
-									  doubflo* temp,
-									  doubflo* velo,
-									  doubflo diffusivity,
+									  real* DD, 
+									  real* DD27,
+									  real* temp,
+									  real* velo,
+									  real diffusivity,
 									  int* k_Q, 
-									  doubflo* QQ,
+									  real* QQ,
 									  unsigned int sizeQ,
 									  unsigned int kQ, 
-									  doubflo om1, 
+									  real om1, 
 									  unsigned int* neighborX,
 									  unsigned int* neighborY,
 									  unsigned int* neighborZ,
@@ -1557,19 +1556,19 @@ extern "C" void PropVelo(   unsigned int numberOfThreads,
 							unsigned int* neighborX,
 							unsigned int* neighborY,
 							unsigned int* neighborZ,
-							doubflo* rho,
-							doubflo* ux,
-							doubflo* uy,
-							doubflo* uz,
+							real* rho,
+							real* ux,
+							real* uy,
+							real* uz,
 							int* k_Q, 
 							unsigned int size_Prop,
 							unsigned int size_Mat,
 							unsigned int* bcMatD,
-							doubflo* DD,
+							real* DD,
 							bool EvenOrOdd);
 
-extern "C" void ScaleCF27( doubflo* DC, 
-                           doubflo* DF, 
+extern "C" void ScaleCF27( real* DC, 
+                           real* DF, 
                            unsigned int* neighborCX,
                            unsigned int* neighborCY,
                            unsigned int* neighborCZ,
@@ -1582,17 +1581,17 @@ extern "C" void ScaleCF27( doubflo* DC,
                            unsigned int* posCSWB, 
                            unsigned int* posFSWB, 
                            unsigned int kCF, 
-                           doubflo omCoarse, 
-                           doubflo omFine, 
-                           doubflo nu, 
+                           real omCoarse, 
+                           real omFine, 
+                           real nu, 
                            unsigned int nxC, 
                            unsigned int nyC, 
                            unsigned int nxF, 
                            unsigned int nyF,
                            unsigned int numberOfThreads);
 
-extern "C" void ScaleFC27( doubflo* DC, 
-                           doubflo* DF, 
+extern "C" void ScaleFC27( real* DC, 
+                           real* DF, 
                            unsigned int* neighborCX,
                            unsigned int* neighborCY,
                            unsigned int* neighborCZ,
@@ -1605,17 +1604,17 @@ extern "C" void ScaleFC27( doubflo* DC,
                            unsigned int* posC, 
                            unsigned int* posFSWB, 
                            unsigned int kFC, 
-                           doubflo omCoarse, 
-                           doubflo omFine, 
-                           doubflo nu, 
+                           real omCoarse, 
+                           real omFine, 
+                           real nu, 
                            unsigned int nxC, 
                            unsigned int nyC, 
                            unsigned int nxF, 
                            unsigned int nyF,
                            unsigned int numberOfThreads);
 
-extern "C" void ScaleCFEff27(doubflo* DC, 
-                             doubflo* DF, 
+extern "C" void ScaleCFEff27(real* DC, 
+                             real* DF, 
                              unsigned int* neighborCX,
                              unsigned int* neighborCY,
                              unsigned int* neighborCZ,
@@ -1628,9 +1627,9 @@ extern "C" void ScaleCFEff27(doubflo* DC,
                              unsigned int* posCSWB, 
                              unsigned int* posFSWB, 
                              unsigned int kCF, 
-                             doubflo omCoarse, 
-                             doubflo omFine, 
-                             doubflo nu, 
+                             real omCoarse, 
+                             real omFine, 
+                             real nu, 
                              unsigned int nxC, 
                              unsigned int nyC, 
                              unsigned int nxF, 
@@ -1638,8 +1637,8 @@ extern "C" void ScaleCFEff27(doubflo* DC,
                              unsigned int numberOfThreads,
                              OffCF offCF);
 
-extern "C" void ScaleFCEff27(doubflo* DC, 
-                             doubflo* DF, 
+extern "C" void ScaleFCEff27(real* DC, 
+                             real* DF, 
                              unsigned int* neighborCX,
                              unsigned int* neighborCY,
                              unsigned int* neighborCZ,
@@ -1652,9 +1651,9 @@ extern "C" void ScaleFCEff27(doubflo* DC,
                              unsigned int* posC, 
                              unsigned int* posFSWB, 
                              unsigned int kFC, 
-                             doubflo omCoarse, 
-                             doubflo omFine, 
-                             doubflo nu, 
+                             real omCoarse, 
+                             real omFine, 
+                             real nu, 
                              unsigned int nxC, 
                              unsigned int nyC, 
                              unsigned int nxF, 
@@ -1662,8 +1661,8 @@ extern "C" void ScaleFCEff27(doubflo* DC,
                              unsigned int numberOfThreads,
                              OffFC offFC);
 
-extern "C" void ScaleCFLast27(doubflo* DC, 
-                              doubflo* DF, 
+extern "C" void ScaleCFLast27(real* DC, 
+                              real* DF, 
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -1676,9 +1675,9 @@ extern "C" void ScaleCFLast27(doubflo* DC,
                               unsigned int* posCSWB, 
                               unsigned int* posFSWB, 
                               unsigned int kCF, 
-                              doubflo omCoarse, 
-                              doubflo omFine, 
-                              doubflo nu, 
+                              real omCoarse, 
+                              real omFine, 
+                              real nu, 
                               unsigned int nxC, 
                               unsigned int nyC, 
                               unsigned int nxF, 
@@ -1686,8 +1685,8 @@ extern "C" void ScaleCFLast27(doubflo* DC,
                               unsigned int numberOfThreads,
                               OffCF offCF);
 
-extern "C" void ScaleFCLast27(doubflo* DC, 
-                              doubflo* DF, 
+extern "C" void ScaleFCLast27(real* DC, 
+                              real* DF, 
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -1700,9 +1699,9 @@ extern "C" void ScaleFCLast27(doubflo* DC,
                               unsigned int* posC, 
                               unsigned int* posFSWB, 
                               unsigned int kFC, 
-                              doubflo omCoarse, 
-                              doubflo omFine, 
-                              doubflo nu, 
+                              real omCoarse, 
+                              real omFine, 
+                              real nu, 
                               unsigned int nxC, 
                               unsigned int nyC, 
                               unsigned int nxF, 
@@ -1710,8 +1709,8 @@ extern "C" void ScaleFCLast27(doubflo* DC,
                               unsigned int numberOfThreads,
                               OffFC offFC);
 
-extern "C" void ScaleCFpress27(doubflo* DC, 
-                              doubflo* DF, 
+extern "C" void ScaleCFpress27(real* DC, 
+                              real* DF, 
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -1724,9 +1723,9 @@ extern "C" void ScaleCFpress27(doubflo* DC,
                               unsigned int* posCSWB, 
                               unsigned int* posFSWB, 
                               unsigned int kCF, 
-                              doubflo omCoarse, 
-                              doubflo omFine, 
-                              doubflo nu, 
+                              real omCoarse, 
+                              real omFine, 
+                              real nu, 
                               unsigned int nxC, 
                               unsigned int nyC, 
                               unsigned int nxF, 
@@ -1734,8 +1733,8 @@ extern "C" void ScaleCFpress27(doubflo* DC,
                               unsigned int numberOfThreads,
                               OffCF offCF);
 
-extern "C" void ScaleFCpress27(  doubflo* DC, 
-                                 doubflo* DF, 
+extern "C" void ScaleFCpress27(  real* DC, 
+                                 real* DF, 
                                  unsigned int* neighborCX,
                                  unsigned int* neighborCY,
                                  unsigned int* neighborCZ,
@@ -1748,9 +1747,9 @@ extern "C" void ScaleFCpress27(  doubflo* DC,
                                  unsigned int* posC, 
                                  unsigned int* posFSWB, 
                                  unsigned int kFC, 
-                                 doubflo omCoarse, 
-                                 doubflo omFine, 
-                                 doubflo nu, 
+                                 real omCoarse, 
+                                 real omFine, 
+                                 real nu, 
                                  unsigned int nxC, 
                                  unsigned int nyC, 
                                  unsigned int nxF, 
@@ -1758,8 +1757,8 @@ extern "C" void ScaleFCpress27(  doubflo* DC,
                                  unsigned int numberOfThreads,
                                  OffFC offFC);
 
-extern "C" void ScaleCF_Fix_27(doubflo* DC, 
-                              doubflo* DF, 
+extern "C" void ScaleCF_Fix_27(real* DC, 
+                              real* DF, 
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -1772,9 +1771,9 @@ extern "C" void ScaleCF_Fix_27(doubflo* DC,
                               unsigned int* posCSWB, 
                               unsigned int* posFSWB, 
                               unsigned int kCF, 
-                              doubflo omCoarse, 
-                              doubflo omFine, 
-                              doubflo nu, 
+                              real omCoarse, 
+                              real omFine, 
+                              real nu, 
                               unsigned int nxC, 
                               unsigned int nyC, 
                               unsigned int nxF, 
@@ -1782,8 +1781,8 @@ extern "C" void ScaleCF_Fix_27(doubflo* DC,
                               unsigned int numberOfThreads,
                               OffCF offCF);
 
-extern "C" void ScaleCF_Fix_comp_27(   doubflo* DC, 
-									   doubflo* DF, 
+extern "C" void ScaleCF_Fix_comp_27(   real* DC, 
+									   real* DF, 
 									   unsigned int* neighborCX,
 									   unsigned int* neighborCY,
 									   unsigned int* neighborCZ,
@@ -1796,9 +1795,9 @@ extern "C" void ScaleCF_Fix_comp_27(   doubflo* DC,
 									   unsigned int* posCSWB, 
 									   unsigned int* posFSWB, 
 									   unsigned int kCF, 
-									   doubflo omCoarse, 
-									   doubflo omFine, 
-									   doubflo nu, 
+									   real omCoarse, 
+									   real omFine, 
+									   real nu, 
 									   unsigned int nxC, 
 									   unsigned int nyC, 
 									   unsigned int nxF, 
@@ -1806,8 +1805,8 @@ extern "C" void ScaleCF_Fix_comp_27(   doubflo* DC,
 									   unsigned int numberOfThreads,
 									   OffCF offCF);
 
-extern "C" void ScaleCF_0817_comp_27(  doubflo* DC, 
-									   doubflo* DF, 
+extern "C" void ScaleCF_0817_comp_27(  real* DC, 
+									   real* DF, 
 									   unsigned int* neighborCX,
 									   unsigned int* neighborCY,
 									   unsigned int* neighborCZ,
@@ -1820,9 +1819,9 @@ extern "C" void ScaleCF_0817_comp_27(  doubflo* DC,
 									   unsigned int* posCSWB, 
 									   unsigned int* posFSWB, 
 									   unsigned int kCF, 
-									   doubflo omCoarse, 
-									   doubflo omFine, 
-									   doubflo nu, 
+									   real omCoarse, 
+									   real omFine, 
+									   real nu, 
 									   unsigned int nxC, 
 									   unsigned int nyC, 
 									   unsigned int nxF, 
@@ -1830,8 +1829,8 @@ extern "C" void ScaleCF_0817_comp_27(  doubflo* DC,
 									   unsigned int numberOfThreads,
 									   OffCF offCF);
 
-extern "C" void ScaleCF_staggered_time_comp_27( doubflo* DC, 
-												doubflo* DF, 
+extern "C" void ScaleCF_staggered_time_comp_27( real* DC, 
+												real* DF, 
 												unsigned int* neighborCX,
 												unsigned int* neighborCY,
 												unsigned int* neighborCZ,
@@ -1844,9 +1843,9 @@ extern "C" void ScaleCF_staggered_time_comp_27( doubflo* DC,
 												unsigned int* posCSWB, 
 												unsigned int* posFSWB, 
 												unsigned int kCF, 
-												doubflo omCoarse, 
-												doubflo omFine, 
-												doubflo nu, 
+												real omCoarse, 
+												real omFine, 
+												real nu, 
 												unsigned int nxC, 
 												unsigned int nyC, 
 												unsigned int nxF, 
@@ -1854,8 +1853,8 @@ extern "C" void ScaleCF_staggered_time_comp_27( doubflo* DC,
 												unsigned int numberOfThreads,
 												OffCF offCF);
 
-extern "C" void ScaleCF_RhoSq_comp_27(  doubflo* DC, 
-										doubflo* DF, 
+extern "C" void ScaleCF_RhoSq_comp_27(  real* DC, 
+										real* DF, 
 										unsigned int* neighborCX,
 										unsigned int* neighborCY,
 										unsigned int* neighborCZ,
@@ -1868,9 +1867,9 @@ extern "C" void ScaleCF_RhoSq_comp_27(  doubflo* DC,
 										unsigned int* posCSWB, 
 										unsigned int* posFSWB, 
 										unsigned int kCF, 
-										doubflo omCoarse, 
-										doubflo omFine, 
-										doubflo nu, 
+										real omCoarse, 
+										real omFine, 
+										real nu, 
 										unsigned int nxC, 
 										unsigned int nyC, 
 										unsigned int nxF, 
@@ -1878,8 +1877,8 @@ extern "C" void ScaleCF_RhoSq_comp_27(  doubflo* DC,
 										unsigned int numberOfThreads,
 										OffCF offCF);
 
-extern "C" void ScaleCF_RhoSq_3rdMom_comp_27( doubflo* DC, 
-											  doubflo* DF, 
+extern "C" void ScaleCF_RhoSq_3rdMom_comp_27( real* DC, 
+											  real* DF, 
 											  unsigned int* neighborCX,
 											  unsigned int* neighborCY,
 											  unsigned int* neighborCZ,
@@ -1892,9 +1891,9 @@ extern "C" void ScaleCF_RhoSq_3rdMom_comp_27( doubflo* DC,
 											  unsigned int* posCSWB, 
 											  unsigned int* posFSWB, 
 											  unsigned int kCF, 
-											  doubflo omCoarse, 
-											  doubflo omFine, 
-											  doubflo nu, 
+											  real omCoarse, 
+											  real omFine, 
+											  real nu, 
 											  unsigned int nxC, 
 											  unsigned int nyC, 
 											  unsigned int nxF, 
@@ -1902,8 +1901,8 @@ extern "C" void ScaleCF_RhoSq_3rdMom_comp_27( doubflo* DC,
 											  unsigned int numberOfThreads,
 											  OffCF offCF);
 
-extern "C" void ScaleCF_AA2016_comp_27( doubflo* DC, 
-										doubflo* DF, 
+extern "C" void ScaleCF_AA2016_comp_27( real* DC, 
+										real* DF, 
 										unsigned int* neighborCX,
 										unsigned int* neighborCY,
 										unsigned int* neighborCZ,
@@ -1916,9 +1915,9 @@ extern "C" void ScaleCF_AA2016_comp_27( doubflo* DC,
 										unsigned int* posCSWB, 
 										unsigned int* posFSWB, 
 										unsigned int kCF, 
-										doubflo omCoarse, 
-										doubflo omFine, 
-										doubflo nu, 
+										real omCoarse, 
+										real omFine, 
+										real nu, 
 										unsigned int nxC, 
 										unsigned int nyC, 
 										unsigned int nxF, 
@@ -1926,8 +1925,8 @@ extern "C" void ScaleCF_AA2016_comp_27( doubflo* DC,
 										unsigned int numberOfThreads,
 										OffCF offCF);
 
-extern "C" void ScaleCF_NSPress_27(doubflo* DC, 
-								  doubflo* DF, 
+extern "C" void ScaleCF_NSPress_27(real* DC, 
+								  real* DF, 
 								  unsigned int* neighborCX,
 								  unsigned int* neighborCY,
 								  unsigned int* neighborCZ,
@@ -1940,9 +1939,9 @@ extern "C" void ScaleCF_NSPress_27(doubflo* DC,
 								  unsigned int* posCSWB, 
 								  unsigned int* posFSWB, 
 								  unsigned int kCF, 
-								  doubflo omCoarse, 
-								  doubflo omFine, 
-								  doubflo nu, 
+								  real omCoarse, 
+								  real omFine, 
+								  real nu, 
 								  unsigned int nxC, 
 								  unsigned int nyC, 
 								  unsigned int nxF, 
@@ -1950,8 +1949,8 @@ extern "C" void ScaleCF_NSPress_27(doubflo* DC,
 								  unsigned int numberOfThreads,
 								  OffCF offCF);
 
-extern "C" void ScaleFC_Fix_27(  doubflo* DC, 
-                                 doubflo* DF, 
+extern "C" void ScaleFC_Fix_27(  real* DC, 
+                                 real* DF, 
                                  unsigned int* neighborCX,
                                  unsigned int* neighborCY,
                                  unsigned int* neighborCZ,
@@ -1964,9 +1963,9 @@ extern "C" void ScaleFC_Fix_27(  doubflo* DC,
                                  unsigned int* posC, 
                                  unsigned int* posFSWB, 
                                  unsigned int kFC, 
-                                 doubflo omCoarse, 
-                                 doubflo omFine, 
-                                 doubflo nu, 
+                                 real omCoarse, 
+                                 real omFine, 
+                                 real nu, 
                                  unsigned int nxC, 
                                  unsigned int nyC, 
                                  unsigned int nxF, 
@@ -1974,8 +1973,8 @@ extern "C" void ScaleFC_Fix_27(  doubflo* DC,
                                  unsigned int numberOfThreads,
                                  OffFC offFC);
 
-extern "C" void ScaleFC_Fix_comp_27(   doubflo* DC, 
-									   doubflo* DF, 
+extern "C" void ScaleFC_Fix_comp_27(   real* DC, 
+									   real* DF, 
 									   unsigned int* neighborCX,
 									   unsigned int* neighborCY,
 									   unsigned int* neighborCZ,
@@ -1988,9 +1987,9 @@ extern "C" void ScaleFC_Fix_comp_27(   doubflo* DC,
 									   unsigned int* posC, 
 									   unsigned int* posFSWB, 
 									   unsigned int kFC, 
-									   doubflo omCoarse, 
-									   doubflo omFine, 
-									   doubflo nu, 
+									   real omCoarse, 
+									   real omFine, 
+									   real nu, 
 									   unsigned int nxC, 
 									   unsigned int nyC, 
 									   unsigned int nxF, 
@@ -1998,8 +1997,8 @@ extern "C" void ScaleFC_Fix_comp_27(   doubflo* DC,
 									   unsigned int numberOfThreads,
 									   OffFC offFC);
 
-extern "C" void ScaleFC_0817_comp_27(  doubflo* DC, 
-									   doubflo* DF, 
+extern "C" void ScaleFC_0817_comp_27(  real* DC, 
+									   real* DF, 
 									   unsigned int* neighborCX,
 									   unsigned int* neighborCY,
 									   unsigned int* neighborCZ,
@@ -2012,9 +2011,9 @@ extern "C" void ScaleFC_0817_comp_27(  doubflo* DC,
 									   unsigned int* posC, 
 									   unsigned int* posFSWB, 
 									   unsigned int kFC, 
-									   doubflo omCoarse, 
-									   doubflo omFine, 
-									   doubflo nu, 
+									   real omCoarse, 
+									   real omFine, 
+									   real nu, 
 									   unsigned int nxC, 
 									   unsigned int nyC, 
 									   unsigned int nxF, 
@@ -2022,8 +2021,8 @@ extern "C" void ScaleFC_0817_comp_27(  doubflo* DC,
 									   unsigned int numberOfThreads,
 									   OffFC offFC);
 
-extern "C" void ScaleFC_staggered_time_comp_27( doubflo* DC, 
-												doubflo* DF, 
+extern "C" void ScaleFC_staggered_time_comp_27( real* DC, 
+												real* DF, 
 												unsigned int* neighborCX,
 												unsigned int* neighborCY,
 												unsigned int* neighborCZ,
@@ -2036,9 +2035,9 @@ extern "C" void ScaleFC_staggered_time_comp_27( doubflo* DC,
 												unsigned int* posC, 
 												unsigned int* posFSWB, 
 												unsigned int kFC, 
-												doubflo omCoarse, 
-												doubflo omFine, 
-												doubflo nu, 
+												real omCoarse, 
+												real omFine, 
+												real nu, 
 												unsigned int nxC, 
 												unsigned int nyC, 
 												unsigned int nxF, 
@@ -2046,8 +2045,8 @@ extern "C" void ScaleFC_staggered_time_comp_27( doubflo* DC,
 												unsigned int numberOfThreads,
 												OffFC offFC);
 
-extern "C" void ScaleFC_RhoSq_comp_27(  doubflo* DC, 
-										doubflo* DF, 
+extern "C" void ScaleFC_RhoSq_comp_27(  real* DC, 
+										real* DF, 
 										unsigned int* neighborCX,
 										unsigned int* neighborCY,
 										unsigned int* neighborCZ,
@@ -2060,9 +2059,9 @@ extern "C" void ScaleFC_RhoSq_comp_27(  doubflo* DC,
 										unsigned int* posC, 
 										unsigned int* posFSWB, 
 										unsigned int kFC, 
-										doubflo omCoarse, 
-										doubflo omFine, 
-										doubflo nu, 
+										real omCoarse, 
+										real omFine, 
+										real nu, 
 										unsigned int nxC, 
 										unsigned int nyC, 
 										unsigned int nxF, 
@@ -2070,8 +2069,8 @@ extern "C" void ScaleFC_RhoSq_comp_27(  doubflo* DC,
 										unsigned int numberOfThreads,
 										OffFC offFC);
 
-extern "C" void ScaleFC_RhoSq_3rdMom_comp_27( doubflo* DC, 
-											  doubflo* DF, 
+extern "C" void ScaleFC_RhoSq_3rdMom_comp_27( real* DC, 
+											  real* DF, 
 											  unsigned int* neighborCX,
 											  unsigned int* neighborCY,
 											  unsigned int* neighborCZ,
@@ -2084,9 +2083,9 @@ extern "C" void ScaleFC_RhoSq_3rdMom_comp_27( doubflo* DC,
 											  unsigned int* posC, 
 											  unsigned int* posFSWB, 
 											  unsigned int kFC, 
-											  doubflo omCoarse, 
-											  doubflo omFine, 
-											  doubflo nu, 
+											  real omCoarse, 
+											  real omFine, 
+											  real nu, 
 											  unsigned int nxC, 
 											  unsigned int nyC, 
 											  unsigned int nxF, 
@@ -2094,8 +2093,8 @@ extern "C" void ScaleFC_RhoSq_3rdMom_comp_27( doubflo* DC,
 											  unsigned int numberOfThreads,
 											  OffFC offFC);
 
-extern "C" void ScaleFC_AA2016_comp_27( doubflo* DC, 
-										doubflo* DF, 
+extern "C" void ScaleFC_AA2016_comp_27( real* DC, 
+										real* DF, 
 										unsigned int* neighborCX,
 										unsigned int* neighborCY,
 										unsigned int* neighborCZ,
@@ -2108,9 +2107,9 @@ extern "C" void ScaleFC_AA2016_comp_27( doubflo* DC,
 										unsigned int* posC, 
 										unsigned int* posFSWB, 
 										unsigned int kFC, 
-										doubflo omCoarse, 
-										doubflo omFine, 
-										doubflo nu, 
+										real omCoarse, 
+										real omFine, 
+										real nu, 
 										unsigned int nxC, 
 										unsigned int nyC, 
 										unsigned int nxF, 
@@ -2118,8 +2117,8 @@ extern "C" void ScaleFC_AA2016_comp_27( doubflo* DC,
 										unsigned int numberOfThreads,
 										OffFC offFC);
 
-extern "C" void ScaleFC_NSPress_27(  doubflo* DC, 
-									 doubflo* DF, 
+extern "C" void ScaleFC_NSPress_27(  real* DC, 
+									 real* DF, 
 									 unsigned int* neighborCX,
 									 unsigned int* neighborCY,
 									 unsigned int* neighborCZ,
@@ -2132,9 +2131,9 @@ extern "C" void ScaleFC_NSPress_27(  doubflo* DC,
 									 unsigned int* posC, 
 									 unsigned int* posFSWB, 
 									 unsigned int kFC, 
-									 doubflo omCoarse, 
-									 doubflo omFine, 
-									 doubflo nu, 
+									 real omCoarse, 
+									 real omFine, 
+									 real nu, 
 									 unsigned int nxC, 
 									 unsigned int nyC, 
 									 unsigned int nxF, 
@@ -2142,10 +2141,10 @@ extern "C" void ScaleFC_NSPress_27(  doubflo* DC,
 									 unsigned int numberOfThreads,
 									 OffFC offFC);
 
-extern "C" void ScaleCFThS7(  doubflo* DC, 
-                              doubflo* DF, 
-                              doubflo* DD7C, 
-                              doubflo* DD7F,
+extern "C" void ScaleCFThS7(  real* DC, 
+                              real* DF, 
+                              real* DD7C, 
+                              real* DD7F,
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -2158,14 +2157,14 @@ extern "C" void ScaleCFThS7(  doubflo* DC,
                               unsigned int* posCSWB, 
                               unsigned int* posFSWB, 
                               unsigned int kCF, 
-                              doubflo nu,
-                              doubflo diffusivity_fine,
+                              real nu,
+                              real diffusivity_fine,
                               unsigned int numberOfThreads);
 
-extern "C" void ScaleFCThS7(  doubflo* DC, 
-                              doubflo* DF,
-                              doubflo* DD7C, 
-                              doubflo* DD7F,
+extern "C" void ScaleFCThS7(  real* DC, 
+                              real* DF,
+                              real* DD7C, 
+                              real* DD7F,
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -2178,14 +2177,14 @@ extern "C" void ScaleFCThS7(  doubflo* DC,
                               unsigned int* posC, 
                               unsigned int* posFSWB, 
                               unsigned int kFC, 
-                              doubflo nu,
-                              doubflo diffusivity_coarse,
+                              real nu,
+                              real diffusivity_coarse,
                               unsigned int numberOfThreads);
 
-extern "C" void ScaleCFThSMG7(   doubflo* DC, 
-                                 doubflo* DF,
-                                 doubflo* DD7C, 
-                                 doubflo* DD7F,
+extern "C" void ScaleCFThSMG7(   real* DC, 
+                                 real* DF,
+                                 real* DD7C, 
+                                 real* DD7F,
                                  unsigned int* neighborCX,
                                  unsigned int* neighborCY,
                                  unsigned int* neighborCZ,
@@ -2198,15 +2197,15 @@ extern "C" void ScaleCFThSMG7(   doubflo* DC,
                                  unsigned int* posCSWB, 
                                  unsigned int* posFSWB, 
                                  unsigned int kCF, 
-                                 doubflo nu,
-                                 doubflo diffusivity_fine,
+                                 real nu,
+                                 real diffusivity_fine,
                                  unsigned int numberOfThreads,
                                  OffCF offCF);
 
-extern "C" void ScaleFCThSMG7(doubflo* DC, 
-                              doubflo* DF,
-                              doubflo* DD7C, 
-                              doubflo* DD7F,
+extern "C" void ScaleFCThSMG7(real* DC, 
+                              real* DF,
+                              real* DD7C, 
+                              real* DD7F,
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -2219,15 +2218,15 @@ extern "C" void ScaleFCThSMG7(doubflo* DC,
                               unsigned int* posC, 
                               unsigned int* posFSWB, 
                               unsigned int kFC, 
-                              doubflo nu,
-                              doubflo diffusivity_coarse,
+                              real nu,
+                              real diffusivity_coarse,
                               unsigned int numberOfThreads,
                               OffFC offFC);
 
-extern "C" void ScaleCFThS27( doubflo* DC, 
-                              doubflo* DF, 
-                              doubflo* DD27C, 
-                              doubflo* DD27F,
+extern "C" void ScaleCFThS27( real* DC, 
+                              real* DF, 
+                              real* DD27C, 
+                              real* DD27F,
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -2240,15 +2239,15 @@ extern "C" void ScaleCFThS27( doubflo* DC,
                               unsigned int* posCSWB, 
                               unsigned int* posFSWB, 
                               unsigned int kCF, 
-                              doubflo nu,
-                              doubflo diffusivity_fine,
+                              real nu,
+                              real diffusivity_fine,
 							  unsigned int numberOfThreads,
 							  OffCF offCF);
 
-extern "C" void ScaleFCThS27( doubflo* DC, 
-                              doubflo* DF,
-                              doubflo* DD27C, 
-                              doubflo* DD27F,
+extern "C" void ScaleFCThS27( real* DC, 
+                              real* DF,
+                              real* DD27C, 
+                              real* DD27F,
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -2261,14 +2260,14 @@ extern "C" void ScaleFCThS27( doubflo* DC,
                               unsigned int* posC, 
                               unsigned int* posFSWB, 
                               unsigned int kFC, 
-                              doubflo nu,
-                              doubflo diffusivity_coarse,
+                              real nu,
+                              real diffusivity_coarse,
 							  unsigned int numberOfThreads,
 							  OffFC offFC);
 
-extern "C" void DragLiftPostD27(doubflo* DD, 
+extern "C" void DragLiftPostD27(real* DD, 
 								int* k_Q, 
-								doubflo* QQ,
+								real* QQ,
 								int kQ, 
 								double *DragX,
 								double *DragY,
@@ -2280,9 +2279,9 @@ extern "C" void DragLiftPostD27(doubflo* DD,
 								bool evenOrOdd,
 								unsigned int numberOfThreads);
 
-extern "C" void DragLiftPreD27( doubflo* DD, 
+extern "C" void DragLiftPreD27( real* DD, 
 								int* k_Q, 
-								doubflo* QQ,
+								real* QQ,
 								int kQ, 
 								double *DragX,
 								double *DragY,
@@ -2294,7 +2293,7 @@ extern "C" void DragLiftPreD27( doubflo* DD,
 								bool evenOrOdd,
 								unsigned int numberOfThreads);
 
-extern "C" void CalcCPtop27(doubflo* DD, 
+extern "C" void CalcCPtop27(real* DD, 
 							int* cpIndex, 
 							int nonCp, 
 							double *cpPress,
@@ -2305,7 +2304,7 @@ extern "C" void CalcCPtop27(doubflo* DD,
 							bool evenOrOdd,
 							unsigned int numberOfThreads);
 
-extern "C" void CalcCPbottom27(doubflo* DD, 
+extern "C" void CalcCPbottom27(real* DD, 
 							   int* cpIndex, 
 							   int nonCp, 
 							   double *cpPress,
@@ -2316,8 +2315,8 @@ extern "C" void CalcCPbottom27(doubflo* DD,
 							   bool evenOrOdd,
 							   unsigned int numberOfThreads);
 
-extern "C" void GetSendFsPreDev27(doubflo* DD,
-								  doubflo* bufferFs,
+extern "C" void GetSendFsPreDev27(real* DD,
+								  real* bufferFs,
 								  int* sendIndex,
 								  int buffmax,
 								  unsigned int* neighborX,
@@ -2327,8 +2326,8 @@ extern "C" void GetSendFsPreDev27(doubflo* DD,
 								  bool evenOrOdd,
 								  unsigned int numberOfThreads);
 
-extern "C" void GetSendFsPostDev27(doubflo* DD,
-								   doubflo* bufferFs,
+extern "C" void GetSendFsPostDev27(real* DD,
+								   real* bufferFs,
 								   int* sendIndex,
 								   int buffmax,
 								   unsigned int* neighborX,
@@ -2338,8 +2337,8 @@ extern "C" void GetSendFsPostDev27(doubflo* DD,
 								   bool evenOrOdd,
 								   unsigned int numberOfThreads);
 
-extern "C" void SetRecvFsPreDev27(doubflo* DD,
-								  doubflo* bufferFs,
+extern "C" void SetRecvFsPreDev27(real* DD,
+								  real* bufferFs,
 								  int* recvIndex,
 								  int buffmax,
 								  unsigned int* neighborX,
@@ -2349,8 +2348,8 @@ extern "C" void SetRecvFsPreDev27(doubflo* DD,
 								  bool evenOrOdd,
 								  unsigned int numberOfThreads);
 
-extern "C" void SetRecvFsPostDev27(doubflo* DD,
-								   doubflo* bufferFs,
+extern "C" void SetRecvFsPostDev27(real* DD,
+								   real* bufferFs,
 								   int* recvIndex,
 								   int buffmax,
 								   unsigned int* neighborX,
@@ -2363,15 +2362,15 @@ extern "C" void SetRecvFsPostDev27(doubflo* DD,
 extern "C" void WallFuncDev27(unsigned int numberOfThreads,
 							  int nx,
 							  int ny,
-							  doubflo* vx,
-							  doubflo* vy,
-							  doubflo* vz,
-							  doubflo* DD, 
+							  real* vx,
+							  real* vy,
+							  real* vz,
+							  real* DD, 
 							  int* k_Q, 
-							  doubflo* QQ,
+							  real* QQ,
 							  unsigned int sizeQ,
 							  unsigned int kQ, 
-							  doubflo om1, 
+							  real om1, 
 							  unsigned int* neighborX,
 							  unsigned int* neighborY,
 							  unsigned int* neighborZ,
@@ -2379,50 +2378,50 @@ extern "C" void WallFuncDev27(unsigned int numberOfThreads,
 							  bool evenOrOdd);
 
 extern "C" void SetOutputWallVelocitySP27(unsigned int numberOfThreads,
-										  doubflo* vxD,
-										  doubflo* vyD,
-										  doubflo* vzD,
-										  doubflo* vxWall,
-										  doubflo* vyWall,
-										  doubflo* vzWall,
+										  real* vxD,
+										  real* vyD,
+										  real* vzD,
+										  real* vxWall,
+										  real* vyWall,
+										  real* vzWall,
 										  int numberOfWallNodes, 
 										  int* kWallNodes, 
-										  doubflo* rhoD,
-										  doubflo* pressD,
+										  real* rhoD,
+										  real* pressD,
 										  unsigned int* geoD,
 										  unsigned int* neighborX,
 										  unsigned int* neighborY,
 										  unsigned int* neighborZ,
 										  unsigned int size_Mat,
-										  doubflo* DD,
+										  real* DD,
 										  bool evenOrOdd);
 
 extern "C" void GetVelotoForce27(unsigned int numberOfThreads,
-								 doubflo* DD, 
+								 real* DD, 
 								 int* bcIndex, 
 								 int nonAtBC, 
-								 doubflo* Vx,
-								 doubflo* Vy,
-								 doubflo* Vz,
+								 real* Vx,
+								 real* Vy,
+								 real* Vz,
 								 unsigned int* neighborX,
 								 unsigned int* neighborY,
 								 unsigned int* neighborZ,
 								 unsigned int size_Mat, 
 								 bool evenOrOdd);
 
-extern "C" void InitParticlesDevice(doubflo* coordX,
-									doubflo* coordY,
-									doubflo* coordZ, 
-									doubflo* coordParticleXlocal,
-									doubflo* coordParticleYlocal,
-									doubflo* coordParticleZlocal, 
-									doubflo* coordParticleXglobal,
-									doubflo* coordParticleYglobal,
-									doubflo* coordParticleZglobal,
-									doubflo* veloParticleX,
-									doubflo* veloParticleY,
-									doubflo* veloParticleZ,
-									doubflo* randArray,
+extern "C" void InitParticlesDevice(real* coordX,
+									real* coordY,
+									real* coordZ, 
+									real* coordParticleXlocal,
+									real* coordParticleYlocal,
+									real* coordParticleZlocal, 
+									real* coordParticleXglobal,
+									real* coordParticleYglobal,
+									real* coordParticleZglobal,
+									real* veloParticleX,
+									real* veloParticleY,
+									real* veloParticleZ,
+									real* randArray,
 									unsigned int* particleID,
 									unsigned int* cellBaseID,
 									unsigned int* bcMatD,
@@ -2435,20 +2434,20 @@ extern "C" void InitParticlesDevice(doubflo* coordX,
 									unsigned int size_Mat,
 									unsigned int numberOfThreads);
 
-extern "C" void MoveParticlesDevice(doubflo* coordX,
-									doubflo* coordY,
-									doubflo* coordZ, 
-									doubflo* coordParticleXlocal,
-									doubflo* coordParticleYlocal,
-									doubflo* coordParticleZlocal, 
-									doubflo* coordParticleXglobal,
-									doubflo* coordParticleYglobal,
-									doubflo* coordParticleZglobal,
-									doubflo* veloParticleX,
-									doubflo* veloParticleY,
-									doubflo* veloParticleZ,
-									doubflo* DD,
-									doubflo  omega,
+extern "C" void MoveParticlesDevice(real* coordX,
+									real* coordY,
+									real* coordZ, 
+									real* coordParticleXlocal,
+									real* coordParticleYlocal,
+									real* coordParticleZlocal, 
+									real* coordParticleXglobal,
+									real* coordParticleYglobal,
+									real* coordParticleZglobal,
+									real* veloParticleX,
+									real* veloParticleY,
+									real* veloParticleZ,
+									real* DD,
+									real  omega,
 									unsigned int* particleID,
 									unsigned int* cellBaseID,
 									unsigned int* bcMatD,
@@ -2470,6 +2469,6 @@ extern "C" void initRandomDevice(curandState* state,
 
 extern "C" void generateRandomValuesDevice(curandState* state,
 										   unsigned int size_Mat,
-										   doubflo* randArray,
+										   real* randArray,
 										   unsigned int numberOfThreads);
 
diff --git a/src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh b/src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh
index 9e4b4b0be..0e8836b1c 100644
--- a/src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh
+++ b/src/VirtualFluids_GPU/GPU/GPU_Kernels.cuh
@@ -5,347 +5,347 @@
 #include <curand.h>
 #include <curand_kernel.h>
 
-extern "C" __global__ void LB_Kernel_Casc27(doubflo s9,
+extern "C" __global__ void LB_Kernel_Casc27(real s9,
                                             unsigned int* bcMatD,
                                             unsigned int* neighborX,
                                             unsigned int* neighborY,
                                             unsigned int* neighborZ,
-                                            doubflo* DDStart,
+                                            real* DDStart,
                                             int size_Mat,
                                             bool EvenOrOdd); 
 
-extern "C" __global__ void LB_Kernel_Casc_SP_27(  doubflo s9,
+extern "C" __global__ void LB_Kernel_Casc_SP_27(  real s9,
                                                   unsigned int* bcMatD,
                                                   unsigned int* neighborX,
                                                   unsigned int* neighborY,
                                                   unsigned int* neighborZ,
-                                                  doubflo* DDStart,
+                                                  real* DDStart,
                                                   int size_Mat,
                                                   bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Casc_SP_MS_27(   doubflo s9,
+extern "C" __global__ void LB_Kernel_Casc_SP_MS_27(   real s9,
                                                       unsigned int* bcMatD,
                                                       unsigned int* neighborX,
                                                       unsigned int* neighborY,
                                                       unsigned int* neighborZ,
-                                                      doubflo* DDStart,
+                                                      real* DDStart,
                                                       int size_Mat,
                                                       bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27(  doubflo s9,
+extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27(  real s9,
                                                          unsigned int* bcMatD,
                                                          unsigned int* neighborX,
                                                          unsigned int* neighborY,
                                                          unsigned int* neighborZ,
-                                                         doubflo* DDStart,
+                                                         real* DDStart,
                                                          int size_Mat,
                                                          bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(doubflo s9,
+extern "C" __global__ void LB_Kernel_Casc_Kum_SP_27(real s9,
                                                     unsigned int* bcMatD,
                                                     unsigned int* neighborX,
                                                     unsigned int* neighborY,
                                                     unsigned int* neighborZ,
-                                                    doubflo* DDStart,
+                                                    real* DDStart,
                                                     int size_Mat,
                                                     bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_BGK_Plus_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_BGK_Plus_SP_27(real omega,
 													unsigned int* bcMatD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
-													doubflo* DDStart,
+													real* DDStart,
 													int size_Mat,
 													bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_BGK_Plus_Comp_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_BGK_Plus_Comp_SP_27(real omega,
 														 unsigned int* bcMatD,
 														 unsigned int* neighborX,
 														 unsigned int* neighborY,
 														 unsigned int* neighborZ,
-														 doubflo* DDStart,
+														 real* DDStart,
 														 int size_Mat,
 														 bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_BGK_Comp_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_BGK_Comp_SP_27(real omega,
 													unsigned int* bcMatD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
-													doubflo* DDStart,
+													real* DDStart,
 													int size_Mat,
 													bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_BGK_SP_27( doubflo omega,
+extern "C" __global__ void LB_Kernel_BGK_SP_27( real omega,
 												unsigned int* bcMatD,
 												unsigned int* neighborX,
 												unsigned int* neighborY,
 												unsigned int* neighborZ,
-												doubflo* DDStart,
+												real* DDStart,
 												int size_Mat,
 												bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_MRT_SP_27( doubflo omega,
+extern "C" __global__ void LB_Kernel_MRT_SP_27( real omega,
 												unsigned int* bcMatD,
 												unsigned int* neighborX,
 												unsigned int* neighborY,
 												unsigned int* neighborZ,
-												doubflo* DDStart,
+												real* DDStart,
 												int size_Mat,
 												bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_MRT_Comp_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_MRT_Comp_SP_27(real omega,
 													unsigned int* bcMatD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
-													doubflo* DDStart,
+													real* DDStart,
 													int size_Mat,
 													bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(doubflo omega,
+extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4(real omega,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
+														real* DDStart,
 														int size_Mat,
 														int level,
-														doubflo* forces,
+														real* forces,
 														bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	doubflo omega,
+extern "C" __global__ void LB_Kernel_Cumulant_D3Q27F3(	real omega,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
-														doubflo* F3,
+														real* DDStart,
+														real* F3,
 														int size_Mat,
 														int level,
-														doubflo* forces,
+														real* forces,
 														bool EvenOrOdd);
 
 	
-extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(real omega,
 																unsigned int* bcMatD,
 																unsigned int* neighborX,
 																unsigned int* neighborY,
 																unsigned int* neighborZ,
-																doubflo* DDStart,
+																real* DDStart,
 																int size_Mat,
 																int level,
-																doubflo* forces,
+																real* forces,
 																bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_SP_27(real omega,
 														   unsigned int* bcMatD,
 														   unsigned int* neighborX,
 														   unsigned int* neighborY,
 														   unsigned int* neighborZ,
-														   doubflo* DDStart,
+														   real* DDStart,
 														   int size_Mat,
 														   int level,
-														   doubflo* forces,
+														   real* forces,
 														   bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Kum_New_Comp_Sponge_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_Kum_New_Comp_Sponge_SP_27(real omega,
 														       unsigned int* bcMatD,
 														       unsigned int* neighborX,
 														       unsigned int* neighborY,
 														       unsigned int* neighborZ,
-													           doubflo* coordX,
-													           doubflo* coordY,
-													           doubflo* coordZ,
-														       doubflo* DDStart,
+													           real* coordX,
+													           real* coordY,
+													           real* coordZ,
+														       real* DDStart,
 														       int size_Mat,
 														       bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  doubflo omega,
-													doubflo deltaPhi,
-													doubflo angularVelocity,
+extern "C" __global__ void LB_Kernel_Kum_1h_SP_27(  real omega,
+													real deltaPhi,
+													real angularVelocity,
 													unsigned int* bcMatD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
-													doubflo* coordX,
-													doubflo* coordY,
-													doubflo* coordZ,
-													doubflo* DDStart,
+													real* coordX,
+													real* coordY,
+													real* coordZ,
+													real* DDStart,
 													int size_Mat,
 													bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Cascade_SP_27( doubflo s9,
+extern "C" __global__ void LB_Kernel_Cascade_SP_27( real s9,
 													unsigned int* bcMatD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
-													doubflo* DDStart,
+													real* DDStart,
 													int size_Mat,
 													bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Cascade_Comp_SP_27(doubflo s9,
+extern "C" __global__ void LB_Kernel_Cascade_Comp_SP_27(real s9,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
+														real* DDStart,
 														int size_Mat,
 														bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Kum_New_SP_27( doubflo s9,
+extern "C" __global__ void LB_Kernel_Kum_New_SP_27( real s9,
 													unsigned int* bcMatD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
-													doubflo* DDStart,
+													real* DDStart,
 													int size_Mat,
 													bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Kum_New_Comp_Bulk_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_Kum_New_Comp_Bulk_SP_27(real omega,
 															 unsigned int* bcMatD,
 															 unsigned int* neighborX,
 															 unsigned int* neighborY,
 															 unsigned int* neighborZ,
-															 doubflo* DDStart,
+															 real* DDStart,
 															 int size_Mat,
 															 int level,
-															 doubflo* forces,
+															 real* forces,
 															 bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_Kum_New_Comp_SP_27(real omega,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
+														real* DDStart,
 														int size_Mat,
 														int level,
-														doubflo* forces,
+														real* forces,
 														bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( doubflo omega,
+extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( real omega,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
-														doubflo* dxxUx,
-														doubflo* dyyUy,
-														doubflo* dzzUz,
+														real* DDStart,
+														real* dxxUx,
+														real* dyyUy,
+														real* dzzUz,
 														int size_Mat,
 														bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27(doubflo s9,
+extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27(real s9,
 													unsigned int* bcMatD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
-													doubflo* DDStart,
+													real* DDStart,
 													int size_Mat,
 													bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(real omega,
 															 unsigned int* bcMatD,
 															 unsigned int* neighborX,
 															 unsigned int* neighborY,
 															 unsigned int* neighborZ,
 															 unsigned int* neighborWSB,
-															 doubflo* veloX,
-															 doubflo* veloY,
-															 doubflo* veloZ,
-															 doubflo* DDStart,
-															 doubflo* turbulentViscosity,
+															 real* veloX,
+															 real* veloY,
+															 real* veloZ,
+															 real* DDStart,
+															 real* turbulentViscosity,
 															 int size_Mat,
 															 int level,
-															 doubflo* forces,
+															 real* forces,
 															 bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_Wale_Cum_AA2016_Comp_SP_27( doubflo omega,
+extern "C" __global__ void LB_Kernel_Wale_Cum_AA2016_Comp_SP_27( real omega,
 																 unsigned int* bcMatD,
 																 unsigned int* neighborX,
 																 unsigned int* neighborY,
 																 unsigned int* neighborZ,
 																 unsigned int* neighborWSB,
-																 doubflo* veloX,
-																 doubflo* veloY,
-																 doubflo* veloZ,
-																 doubflo* DDStart,
-																 doubflo* turbulentViscosity,
+																 real* veloX,
+																 real* veloY,
+																 real* veloZ,
+																 real* DDStart,
+																 real* turbulentViscosity,
 																 int size_Mat,
 																 int level,
-																 doubflo* forces,
+																 real* forces,
 																 bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27( doubflo omega,
+extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27( real omega,
 															unsigned int* neighborX,
 															unsigned int* neighborY,
 															unsigned int* neighborZ,
-															doubflo* DDStart,
+															real* DDStart,
 															int size_Mat,
 															int level,
-															doubflo* forces,
-															doubflo porosity,
-															doubflo darcy,
-															doubflo forchheimer,
+															real* forces,
+															real porosity,
+															real darcy,
+															real forchheimer,
 															unsigned int sizeOfPorousMedia,
 															unsigned int* nodeIdsPorousMedia,
 															bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_ThS7(doubflo diffusivity,
+extern "C" __global__ void LB_Kernel_ThS7(real diffusivity,
                                           unsigned int* bcMatD,
                                           unsigned int* neighborX,
                                           unsigned int* neighborY,
                                           unsigned int* neighborZ,
-                                          doubflo* DDStart,
-                                          doubflo* DD7,
+                                          real* DDStart,
+                                          real* DD7,
                                           int size_Mat,
                                           bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_ThS27(doubflo diffusivity,
+extern "C" __global__ void LB_Kernel_ThS27(real diffusivity,
                                            unsigned int* bcMatD,
                                            unsigned int* neighborX,
                                            unsigned int* neighborY,
                                            unsigned int* neighborZ,
-                                           doubflo* DDStart,
-                                           doubflo* DD27,
+                                           real* DDStart,
+                                           real* DD27,
                                            int size_Mat,
                                            bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_AD_Incomp_7( doubflo diffusivity,
+extern "C" __global__ void LB_Kernel_AD_Incomp_7( real diffusivity,
 												  unsigned int* bcMatD,
 												  unsigned int* neighborX,
 												  unsigned int* neighborY,
 												  unsigned int* neighborZ,
-												  doubflo* DDStart,
-												  doubflo* DD7,
+												  real* DDStart,
+												  real* DD7,
 												  int size_Mat,
 												  bool EvenOrOdd);
 
-extern "C" __global__ void LB_Kernel_AD_Incomp_27( doubflo diffusivity,
+extern "C" __global__ void LB_Kernel_AD_Incomp_27( real diffusivity,
 												   unsigned int* bcMatD,
 												   unsigned int* neighborX,
 												   unsigned int* neighborY,
 												   unsigned int* neighborZ,
-												   doubflo* DDStart,
-												   doubflo* DD27,
+												   real* DDStart,
+												   real* DD27,
 												   int size_Mat,
 												   bool EvenOrOdd);
 
 extern "C" __global__ void LBInit27( int myid,
                                      int numprocs,
-                                     doubflo u0,
+                                     real u0,
                                      unsigned int* geoD,
                                      unsigned int* neighborX,
                                      unsigned int* neighborY,
                                      unsigned int* neighborZ,
-                                     doubflo* vParabel,
+                                     real* vParabel,
                                      unsigned int size_Mat,
                                      unsigned int grid_nx, 
                                      unsigned int grid_ny, 
                                      unsigned int grid_nz, 
-                                     doubflo* DD,
+                                     real* DD,
                                      int lev,
                                      int maxlev);
 
@@ -353,134 +353,134 @@ extern "C" __global__ void LBInitF3(unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
 									unsigned int* geoD,
-									doubflo* rho,
-									doubflo* ux,
-									doubflo* uy,
-									doubflo* uz,
+									real* rho,
+									real* ux,
+									real* uy,
+									real* uz,
 									unsigned int size_Mat,
-									doubflo* G6,
+									real* G6,
 									bool EvenOrOdd);
 
 extern "C" __global__ void LBInitSP27( unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
                                        unsigned int* geoD,
-                                       doubflo* rho,
-                                       doubflo* ux,
-                                       doubflo* uy,
-                                       doubflo* uz,
+                                       real* rho,
+                                       real* ux,
+                                       real* uy,
+                                       real* uz,
                                        unsigned int size_Mat,
-                                       doubflo* DD,
+                                       real* DD,
                                        bool EvenOrOdd);
 
 extern "C" __global__ void LBInitCompSP27( unsigned int* neighborX,
 										   unsigned int* neighborY,
 										   unsigned int* neighborZ,
 										   unsigned int* geoD,
-										   doubflo* rho,
-										   doubflo* ux,
-										   doubflo* uy,
-										   doubflo* uz,
+										   real* rho,
+										   real* ux,
+										   real* uy,
+										   real* uz,
 										   unsigned int size_Mat,
-										   doubflo* DD,
+										   real* DD,
 										   bool EvenOrOdd);
 
 extern "C" __global__ void LBInitThS7( unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
                                        unsigned int* geoD,
-                                       doubflo* Conc,
-                                       doubflo* ux,
-                                       doubflo* uy,
-                                       doubflo* uz,
+                                       real* Conc,
+                                       real* ux,
+                                       real* uy,
+                                       real* uz,
                                        unsigned int size_Mat,
-                                       doubflo* DD7,
+                                       real* DD7,
                                        bool EvenOrOdd);
 
 extern "C" __global__ void LBInitThS27(unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
                                        unsigned int* geoD,
-                                       doubflo* Conc,
-                                       doubflo* ux,
-                                       doubflo* uy,
-                                       doubflo* uz,
+                                       real* Conc,
+                                       real* ux,
+                                       real* uy,
+                                       real* uz,
                                        unsigned int size_Mat,
-                                       doubflo* DD27,
+                                       real* DD27,
                                        bool EvenOrOdd);
 
 extern "C" __global__ void LBInitIncompAD7(unsigned int* neighborX,
 										   unsigned int* neighborY,
 										   unsigned int* neighborZ,
 										   unsigned int* geoD,
-										   doubflo* Conc,
-										   doubflo* ux,
-										   doubflo* uy,
-										   doubflo* uz,
+										   real* Conc,
+										   real* ux,
+										   real* uy,
+										   real* uz,
 										   unsigned int size_Mat,
-										   doubflo* DD7,
+										   real* DD7,
 										   bool EvenOrOdd);
 
 extern "C" __global__ void LBInitIncompAD27(unsigned int* neighborX,
 										    unsigned int* neighborY,
 										    unsigned int* neighborZ,
 										    unsigned int* geoD,
-										    doubflo* Conc,
-										    doubflo* ux,
-										    doubflo* uy,
-										    doubflo* uz,
+										    real* Conc,
+										    real* ux,
+										    real* uy,
+										    real* uz,
 										    unsigned int size_Mat,
-										    doubflo* DD27,
+										    real* DD27,
 										    bool EvenOrOdd);
 
-extern "C" __global__ void LBCalcMac27( doubflo* vxD,
-                                        doubflo* vyD,
-                                        doubflo* vzD,
-                                        doubflo* rhoD,
+extern "C" __global__ void LBCalcMac27( real* vxD,
+                                        real* vyD,
+                                        real* vzD,
+                                        real* rhoD,
                                         unsigned int* neighborX,
                                         unsigned int* neighborY,
                                         unsigned int* neighborZ,
                                         unsigned int* geoD,
                                         unsigned int size_Mat,
-                                        doubflo* DD,
+                                        real* DD,
                                         bool evenOrOdd);
 
-extern "C" __global__ void LBCalcMacSP27( doubflo* vxD,
-                                          doubflo* vyD,
-                                          doubflo* vzD,
-                                          doubflo* rhoD,
-                                          doubflo* pressD,
+extern "C" __global__ void LBCalcMacSP27( real* vxD,
+                                          real* vyD,
+                                          real* vzD,
+                                          real* rhoD,
+                                          real* pressD,
                                           unsigned int* geoD,
                                           unsigned int* neighborX,
                                           unsigned int* neighborY,
                                           unsigned int* neighborZ,
                                           unsigned int size_Mat,
-                                          doubflo* DD,
+                                          real* DD,
                                           bool evenOrOdd);
 
-extern "C" __global__ void LBCalcMacCompSP27( doubflo* vxD,
-											  doubflo* vyD,
-											  doubflo* vzD,
-											  doubflo* rhoD,
-											  doubflo* pressD,
+extern "C" __global__ void LBCalcMacCompSP27( real* vxD,
+											  real* vyD,
+											  real* vzD,
+											  real* rhoD,
+											  real* pressD,
 											  unsigned int* geoD,
 											  unsigned int* neighborX,
 											  unsigned int* neighborY,
 											  unsigned int* neighborZ,
 											  unsigned int size_Mat,
-											  doubflo* DD,
+											  real* DD,
 											  bool evenOrOdd);
 
-extern "C" __global__ void LBCalcMacThS7( doubflo* Conc,
+extern "C" __global__ void LBCalcMacThS7( real* Conc,
                                           unsigned int* geoD,
                                           unsigned int* neighborX,
                                           unsigned int* neighborY,
                                           unsigned int* neighborZ,
                                           unsigned int size_Mat,
-                                          doubflo* DD7,
+                                          real* DD7,
                                           bool evenOrOdd);
 
-extern "C" __global__ void GetPlaneConcThS7(doubflo* Conc,
+extern "C" __global__ void GetPlaneConcThS7(real* Conc,
 								            int* kPC,
 								            unsigned int numberOfPointskPC,
 											unsigned int* geoD,
@@ -488,10 +488,10 @@ extern "C" __global__ void GetPlaneConcThS7(doubflo* Conc,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
 											unsigned int size_Mat,
-											doubflo* DD7,
+											real* DD7,
 											bool evenOrOdd);
 
-extern "C" __global__ void GetPlaneConcThS27(doubflo* Conc,
+extern "C" __global__ void GetPlaneConcThS27(real* Conc,
 								             int* kPC,
 								             unsigned int numberOfPointskPC,
 											 unsigned int* geoD,
@@ -499,49 +499,49 @@ extern "C" __global__ void GetPlaneConcThS27(doubflo* Conc,
 											 unsigned int* neighborY,
 											 unsigned int* neighborZ,
 											 unsigned int size_Mat,
-											 doubflo* DD27,
+											 real* DD27,
 											 bool evenOrOdd);
 
-extern "C" __global__ void LBCalcMacThS27(doubflo* Conc,
+extern "C" __global__ void LBCalcMacThS27(real* Conc,
                                           unsigned int* geoD,
                                           unsigned int* neighborX,
                                           unsigned int* neighborY,
                                           unsigned int* neighborZ,
                                           unsigned int size_Mat,
-                                          doubflo* DD27,
+                                          real* DD27,
                                           bool evenOrOdd);
 
-extern "C" __global__ void LBCalcMedSP27( doubflo* vxD,
-                                          doubflo* vyD,
-                                          doubflo* vzD,
-                                          doubflo* rhoD,
-                                          doubflo* pressD,
+extern "C" __global__ void LBCalcMedSP27( real* vxD,
+                                          real* vyD,
+                                          real* vzD,
+                                          real* rhoD,
+                                          real* pressD,
                                           unsigned int* geoD,
                                           unsigned int* neighborX,
                                           unsigned int* neighborY,
                                           unsigned int* neighborZ,
                                           unsigned int size_Mat,
-                                          doubflo* DD,
+                                          real* DD,
                                           bool evenOrOdd);
 
-extern "C" __global__ void LBCalcMedCompSP27( doubflo* vxD,
-											  doubflo* vyD,
-											  doubflo* vzD,
-											  doubflo* rhoD,
-											  doubflo* pressD,
+extern "C" __global__ void LBCalcMedCompSP27( real* vxD,
+											  real* vyD,
+											  real* vzD,
+											  real* rhoD,
+											  real* pressD,
 											  unsigned int* geoD,
 											  unsigned int* neighborX,
 											  unsigned int* neighborY,
 											  unsigned int* neighborZ,
 											  unsigned int size_Mat,
-											  doubflo* DD,
+											  real* DD,
 											  bool evenOrOdd);
 
-extern "C" __global__ void LBCalcMacMedSP27( doubflo* vxD,
-                                             doubflo* vyD,
-                                             doubflo* vzD,
-                                             doubflo* rhoD,
-                                             doubflo* pressD,
+extern "C" __global__ void LBCalcMacMedSP27( real* vxD,
+                                             real* vyD,
+                                             real* vzD,
+                                             real* rhoD,
+                                             real* pressD,
                                              unsigned int* geoD,
                                              unsigned int* neighborX,
                                              unsigned int* neighborY,
@@ -550,102 +550,102 @@ extern "C" __global__ void LBCalcMacMedSP27( doubflo* vxD,
                                              unsigned int size_Mat,
                                              bool evenOrOdd);
 
-extern "C" __global__ void LBCalc2ndMomentsIncompSP27(  doubflo* kxyFromfcNEQ,
-														doubflo* kyzFromfcNEQ,
-														doubflo* kxzFromfcNEQ,
-														doubflo* kxxMyyFromfcNEQ,
-														doubflo* kxxMzzFromfcNEQ,
+extern "C" __global__ void LBCalc2ndMomentsIncompSP27(  real* kxyFromfcNEQ,
+														real* kyzFromfcNEQ,
+														real* kxzFromfcNEQ,
+														real* kxxMyyFromfcNEQ,
+														real* kxxMzzFromfcNEQ,
 														unsigned int* geoD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
 														unsigned int size_Mat,
-														doubflo* DD,
+														real* DD,
 														bool evenOrOdd);
 
-extern "C" __global__ void LBCalc2ndMomentsCompSP27(doubflo* kxyFromfcNEQ,
-													doubflo* kyzFromfcNEQ,
-													doubflo* kxzFromfcNEQ,
-													doubflo* kxxMyyFromfcNEQ,
-													doubflo* kxxMzzFromfcNEQ,
+extern "C" __global__ void LBCalc2ndMomentsCompSP27(real* kxyFromfcNEQ,
+													real* kyzFromfcNEQ,
+													real* kxzFromfcNEQ,
+													real* kxxMyyFromfcNEQ,
+													real* kxxMzzFromfcNEQ,
 													unsigned int* geoD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
 													unsigned int size_Mat,
-													doubflo* DD,
+													real* DD,
 													bool evenOrOdd);
 
-extern "C" __global__ void LBCalc3rdMomentsIncompSP27(  doubflo* CUMbbb,
-														doubflo* CUMabc,
-														doubflo* CUMbac,
-														doubflo* CUMbca,
-														doubflo* CUMcba,
-														doubflo* CUMacb,
-														doubflo* CUMcab,
+extern "C" __global__ void LBCalc3rdMomentsIncompSP27(  real* CUMbbb,
+														real* CUMabc,
+														real* CUMbac,
+														real* CUMbca,
+														real* CUMcba,
+														real* CUMacb,
+														real* CUMcab,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
+														real* DDStart,
 														int size_Mat,
 														bool EvenOrOdd);
 
-extern "C" __global__ void LBCalc3rdMomentsCompSP27(doubflo* CUMbbb,
-													doubflo* CUMabc,
-													doubflo* CUMbac,
-													doubflo* CUMbca,
-													doubflo* CUMcba,
-													doubflo* CUMacb,
-													doubflo* CUMcab,
+extern "C" __global__ void LBCalc3rdMomentsCompSP27(real* CUMbbb,
+													real* CUMabc,
+													real* CUMbac,
+													real* CUMbca,
+													real* CUMcba,
+													real* CUMacb,
+													real* CUMcab,
 													unsigned int* bcMatD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
-													doubflo* DDStart,
+													real* DDStart,
 													int size_Mat,
 													bool EvenOrOdd);
 
-extern "C" __global__ void LBCalcHigherMomentsIncompSP27(   doubflo* CUMcbb,
-															doubflo* CUMbcb,
-															doubflo* CUMbbc,
-															doubflo* CUMcca,
-															doubflo* CUMcac,
-															doubflo* CUMacc,
-															doubflo* CUMbcc,
-															doubflo* CUMcbc,
-															doubflo* CUMccb,
-															doubflo* CUMccc,
+extern "C" __global__ void LBCalcHigherMomentsIncompSP27(   real* CUMcbb,
+															real* CUMbcb,
+															real* CUMbbc,
+															real* CUMcca,
+															real* CUMcac,
+															real* CUMacc,
+															real* CUMbcc,
+															real* CUMcbc,
+															real* CUMccb,
+															real* CUMccc,
 															unsigned int* bcMatD,
 															unsigned int* neighborX,
 															unsigned int* neighborY,
 															unsigned int* neighborZ,
-															doubflo* DDStart,
+															real* DDStart,
 															int size_Mat,
 															bool EvenOrOdd);
 
-extern "C" __global__ void LBCalcHigherMomentsCompSP27( doubflo* CUMcbb,
-														doubflo* CUMbcb,
-														doubflo* CUMbbc,
-														doubflo* CUMcca,
-														doubflo* CUMcac,
-														doubflo* CUMacc,
-														doubflo* CUMbcc,
-														doubflo* CUMcbc,
-														doubflo* CUMccb,
-														doubflo* CUMccc,
+extern "C" __global__ void LBCalcHigherMomentsCompSP27( real* CUMcbb,
+														real* CUMbcb,
+														real* CUMbbc,
+														real* CUMcca,
+														real* CUMcac,
+														real* CUMacc,
+														real* CUMbcc,
+														real* CUMcbc,
+														real* CUMccb,
+														real* CUMccc,
 														unsigned int* bcMatD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* DDStart,
+														real* DDStart,
 														int size_Mat,
 														bool EvenOrOdd);
 
-extern "C" __global__ void LBCalcMeasurePoints(doubflo* vxMP,
-                                               doubflo* vyMP,
-                                               doubflo* vzMP,
-                                               doubflo* rhoMP,
+extern "C" __global__ void LBCalcMeasurePoints(real* vxMP,
+                                               real* vyMP,
+                                               real* vzMP,
+                                               real* rhoMP,
                                                unsigned int* kMP,
                                                unsigned int numberOfPointskMP,
                                                unsigned int MPClockCycle,
@@ -655,7 +655,7 @@ extern "C" __global__ void LBCalcMeasurePoints(doubflo* vxMP,
                                                unsigned int* neighborY,
                                                unsigned int* neighborZ,
                                                unsigned int size_Mat,
-                                               doubflo* DD,
+                                               real* DD,
                                                bool evenOrOdd);
 
 extern "C" __global__ void LB_BC_Press_East27( int nx, 
@@ -665,7 +665,7 @@ extern "C" __global__ void LB_BC_Press_East27( int nx,
                                                unsigned int* neighborX,
                                                unsigned int* neighborY,
                                                unsigned int* neighborZ,
-                                               doubflo* DD, 
+                                               real* DD, 
                                                unsigned int size_Mat, 
                                                bool evenOrOdd) ;
 
@@ -677,22 +677,22 @@ extern "C" __global__ void LB_BC_Vel_West_27( int nx,
                                               unsigned int* neighborX,
                                               unsigned int* neighborY,
                                               unsigned int* neighborZ,
-                                              doubflo* DD, 
+                                              real* DD, 
                                               unsigned int size_Mat, 
                                               bool evenOrOdd, 
-                                              doubflo u0x, 
+                                              real u0x, 
                                               unsigned int grid_nx, 
                                               unsigned int grid_ny, 
-                                              doubflo om); 
+                                              real om); 
 
 extern "C" __global__ void QDevice27(int inx,
                                      int iny,
-                                     doubflo* DD, 
+                                     real* DD, 
                                      int* k_Q, 
-                                     doubflo* QQ,
+                                     real* QQ,
                                      unsigned int sizeQ,
                                      int kQ, 
-                                     doubflo minusomega, 
+                                     real minusomega, 
                                      unsigned int* neighborX,
                                      unsigned int* neighborY,
                                      unsigned int* neighborZ,
@@ -701,12 +701,12 @@ extern "C" __global__ void QDevice27(int inx,
 
 extern "C" __global__ void QDeviceComp27(int inx,
 										 int iny,
-										 doubflo* DD, 
+										 real* DD, 
 										 int* k_Q, 
-										 doubflo* QQ,
+										 real* QQ,
 										 unsigned int sizeQ,
 										 int kQ, 
-										 doubflo minusomega, 
+										 real minusomega, 
 										 unsigned int* neighborX,
 										 unsigned int* neighborY,
 										 unsigned int* neighborZ,
@@ -715,12 +715,12 @@ extern "C" __global__ void QDeviceComp27(int inx,
 
 extern "C" __global__ void QDeviceCompThinWallsPartOne27(int inx,
 														 int iny,
-														 doubflo* DD, 
+														 real* DD, 
 														 int* k_Q, 
-														 doubflo* QQ,
+														 real* QQ,
 														 unsigned int sizeQ,
 														 int kQ, 
-														 doubflo om1, 
+														 real om1, 
 														 unsigned int* neighborX,
 														 unsigned int* neighborY,
 														 unsigned int* neighborZ,
@@ -729,12 +729,12 @@ extern "C" __global__ void QDeviceCompThinWallsPartOne27(int inx,
 
 extern "C" __global__ void QDeviceCompThinWallsPartTwo27(int inx,
 														 int iny,
-														 doubflo* DD, 
+														 real* DD, 
 														 int* k_Q, 
-														 doubflo* QQ,
+														 real* QQ,
 														 unsigned int sizeQ,
 														 int kQ, 
-														 doubflo om1, 
+														 real om1, 
 														 unsigned int* geom,
 														 unsigned int* neighborX,
 														 unsigned int* neighborY,
@@ -747,12 +747,12 @@ extern "C" __global__ void QDeviceCompThinWallsPartTwo27(int inx,
 
 extern "C" __global__ void QDevice3rdMomentsComp27(  int inx,
 													 int iny,
-													 doubflo* DD, 
+													 real* DD, 
 													 int* k_Q, 
-													 doubflo* QQ,
+													 real* QQ,
 													 unsigned int sizeQ,
 													 int kQ, 
-													 doubflo minusomega, 
+													 real minusomega, 
 													 unsigned int* neighborX,
 													 unsigned int* neighborY,
 													 unsigned int* neighborZ,
@@ -761,12 +761,12 @@ extern "C" __global__ void QDevice3rdMomentsComp27(  int inx,
 
 extern "C" __global__ void QDeviceIncompHighNu27(int inx,
 												 int iny,
-												 doubflo* DD, 
+												 real* DD, 
 												 int* k_Q, 
-												 doubflo* QQ,
+												 real* QQ,
 												 unsigned int sizeQ,
 												 int kQ, 
-												 doubflo om1, 
+												 real om1, 
 												 unsigned int* neighborX,
 												 unsigned int* neighborY,
 												 unsigned int* neighborZ,
@@ -775,42 +775,42 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx,
 
 extern "C" __global__ void QDeviceCompHighNu27(  int inx,
 												 int iny,
-												 doubflo* DD, 
+												 real* DD, 
 												 int* k_Q, 
-												 doubflo* QQ,
+												 real* QQ,
 												 unsigned int sizeQ,
 												 int kQ, 
-												 doubflo om1, 
+												 real om1, 
 												 unsigned int* neighborX,
 												 unsigned int* neighborY,
 												 unsigned int* neighborZ,
 												 unsigned int size_Mat, 
 												 bool evenOrOdd);
 
-extern "C" __global__ void QVelDevPlainBB27(doubflo* vx,
-											doubflo* vy,
-											doubflo* vz,
-											doubflo* DD,
+extern "C" __global__ void QVelDevPlainBB27(real* vx,
+											real* vy,
+											real* vz,
+											real* DD,
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
 											unsigned int size_Mat, 
 											bool evenOrOdd);
 
-extern "C" __global__ void QVelDevCouhette27(doubflo* vx,
-											doubflo* vy,
-											doubflo* vz,
-											doubflo* DD,
+extern "C" __global__ void QVelDevCouhette27(real* vx,
+											real* vy,
+											real* vz,
+											real* DD,
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
@@ -819,37 +819,37 @@ extern "C" __global__ void QVelDevCouhette27(doubflo* vx,
 
 extern "C" __global__ void QVelDev1h27( int inx,
 										int iny,
-										doubflo* vx,
-										doubflo* vy,
-										doubflo* vz,
-										doubflo* DD, 
+										real* vx,
+										real* vy,
+										real* vz,
+										real* DD, 
 										int* k_Q, 
-										doubflo* QQ,
+										real* QQ,
 										unsigned int sizeQ,
 										int kQ, 
-										doubflo om1,
-										doubflo Phi,
-										doubflo angularVelocity,
+										real om1,
+										real Phi,
+										real angularVelocity,
 										unsigned int* neighborX,
 										unsigned int* neighborY,
 										unsigned int* neighborZ,
-										doubflo* coordX,
-										doubflo* coordY,
-										doubflo* coordZ,
+										real* coordX,
+										real* coordY,
+										real* coordZ,
 										unsigned int size_Mat, 
 										bool evenOrOdd);
 
 extern "C" __global__ void QVelDevice27(int inx,
                                         int iny,
-                                        doubflo* vx,
-                                        doubflo* vy,
-                                        doubflo* vz,
-                                        doubflo* DD, 
+                                        real* vx,
+                                        real* vy,
+                                        real* vz,
+                                        real* DD, 
                                         int* k_Q, 
-                                        doubflo* QQ,
+                                        real* QQ,
                                         unsigned int sizeQ,
                                         int kQ, 
-                                        doubflo om1, 
+                                        real om1, 
                                         unsigned int* neighborX,
                                         unsigned int* neighborY,
                                         unsigned int* neighborZ,
@@ -858,15 +858,15 @@ extern "C" __global__ void QVelDevice27(int inx,
 
 extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx,
 													int iny,
-													doubflo* vx,
-													doubflo* vy,
-													doubflo* vz,
-													doubflo* DD, 
+													real* vx,
+													real* vy,
+													real* vz,
+													real* DD, 
 													int* k_Q, 
-													doubflo* QQ,
+													real* QQ,
 													unsigned int sizeQ,
 													int kQ, 
-													doubflo om1, 
+													real om1, 
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
@@ -875,15 +875,15 @@ extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx,
 
 extern "C" __global__ void QVelDeviceComp27(int inx,
 											int iny,
-											doubflo* vx,
-											doubflo* vy,
-											doubflo* vz,
-											doubflo* DD, 
+											real* vx,
+											real* vy,
+											real* vz,
+											real* DD, 
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
@@ -892,15 +892,15 @@ extern "C" __global__ void QVelDeviceComp27(int inx,
 
 extern "C" __global__ void QVelDeviceCompZeroPress27(   int inx,
 														int iny,
-														doubflo* vx,
-														doubflo* vy,
-														doubflo* vz,
-														doubflo* DD, 
+														real* vx,
+														real* vy,
+														real* vz,
+														real* DD, 
 														int* k_Q, 
-														doubflo* QQ,
+														real* QQ,
 														unsigned int sizeQ,
 														//int kQ, 
-														doubflo om1, 
+														real om1, 
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
@@ -909,15 +909,15 @@ extern "C" __global__ void QVelDeviceCompZeroPress27(   int inx,
 
 extern "C" __global__ void QVelDeviceIncompHighNu27(int inx,
 													int iny,
-													doubflo* vx,
-													doubflo* vy,
-													doubflo* vz,
-													doubflo* DD, 
+													real* vx,
+													real* vy,
+													real* vz,
+													real* DD, 
 													int* k_Q, 
-													doubflo* QQ,
+													real* QQ,
 													unsigned int sizeQ,
 													int kQ, 
-													doubflo om1, 
+													real om1, 
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
@@ -926,78 +926,78 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx,
 
 extern "C" __global__ void QVelDeviceCompHighNu27(  int inx,
 													int iny,
-													doubflo* vx,
-													doubflo* vy,
-													doubflo* vz,
-													doubflo* DD, 
+													real* vx,
+													real* vy,
+													real* vz,
+													real* DD, 
 													int* k_Q, 
-													doubflo* QQ,
+													real* QQ,
 													unsigned int sizeQ,
 													int kQ, 
-													doubflo om1, 
+													real om1, 
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
 													unsigned int size_Mat, 
 													bool evenOrOdd);
 
-extern "C" __global__ void QVeloDeviceEQ27(doubflo* VeloX,
-										   doubflo* VeloY,
-										   doubflo* VeloZ,
-                                           doubflo* DD, 
+extern "C" __global__ void QVeloDeviceEQ27(real* VeloX,
+										   real* VeloY,
+										   real* VeloZ,
+                                           real* DD, 
                                            int* k_Q, 
                                            int kQ, 
-                                           doubflo om1, 
+                                           real om1, 
                                            unsigned int* neighborX,
                                            unsigned int* neighborY,
                                            unsigned int* neighborZ,
                                            unsigned int size_Mat, 
                                            bool evenOrOdd);
 
-extern "C" __global__ void QSlipDevice27(doubflo* DD, 
+extern "C" __global__ void QSlipDevice27(real* DD, 
                                          int* k_Q, 
-                                         doubflo* QQ,
+                                         real* QQ,
                                          unsigned int sizeQ,
-                                         doubflo om1, 
+                                         real om1, 
                                          unsigned int* neighborX,
                                          unsigned int* neighborY,
                                          unsigned int* neighborZ,
                                          unsigned int size_Mat, 
                                          bool evenOrOdd);
 
-extern "C" __global__ void QSlipDeviceComp27(doubflo* DD, 
+extern "C" __global__ void QSlipDeviceComp27(real* DD, 
 											 int* k_Q, 
-											 doubflo* QQ,
+											 real* QQ,
 											 unsigned int sizeQ,
-											 doubflo om1, 
+											 real om1, 
 											 unsigned int* neighborX,
 											 unsigned int* neighborY,
 											 unsigned int* neighborZ,
 											 unsigned int size_Mat, 
 											 bool evenOrOdd);
 
-extern "C" __global__ void QSlipGeomDeviceComp27(doubflo* DD, 
+extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, 
 												 int* k_Q, 
-												 doubflo* QQ,
+												 real* QQ,
 												 unsigned int sizeQ,
-												 doubflo om1, 
-												 doubflo* NormalX,
-												 doubflo* NormalY,
-												 doubflo* NormalZ,
+												 real om1, 
+												 real* NormalX,
+												 real* NormalY,
+												 real* NormalZ,
 												 unsigned int* neighborX,
 												 unsigned int* neighborY,
 												 unsigned int* neighborZ,
 												 unsigned int size_Mat, 
 												 bool evenOrOdd);
 
-extern "C" __global__ void QSlipNormDeviceComp27(doubflo* DD, 
+extern "C" __global__ void QSlipNormDeviceComp27(real* DD, 
 												 int* k_Q, 
-												 doubflo* QQ,
+												 real* QQ,
 												 unsigned int sizeQ,
-												 doubflo om1, 
-												 doubflo* NormalX,
-												 doubflo* NormalY,
-												 doubflo* NormalZ,
+												 real om1, 
+												 real* NormalX,
+												 real* NormalY,
+												 real* NormalZ,
 												 unsigned int* neighborX,
 												 unsigned int* neighborY,
 												 unsigned int* neighborZ,
@@ -1006,130 +1006,130 @@ extern "C" __global__ void QSlipNormDeviceComp27(doubflo* DD,
 
 extern "C" __global__ void QPressDevice27(int inx,
                                            int iny,
-                                           doubflo* rhoBC,
-                                           doubflo* DD, 
+                                           real* rhoBC,
+                                           real* DD, 
                                            int* k_Q, 
-                                           doubflo* QQ,
+                                           real* QQ,
                                            unsigned int sizeQ,
                                            int kQ, 
-                                           doubflo om1, 
+                                           real om1, 
                                            unsigned int* neighborX,
                                            unsigned int* neighborY,
                                            unsigned int* neighborZ,
                                            unsigned int size_Mat, 
                                            bool evenOrOdd);
 
-extern "C" __global__ void QPressDeviceAntiBB27(   doubflo* rhoBC,
-												   doubflo* vx,
-												   doubflo* vy,
-												   doubflo* vz,
-												   doubflo* DD, 
+extern "C" __global__ void QPressDeviceAntiBB27(   real* rhoBC,
+												   real* vx,
+												   real* vy,
+												   real* vz,
+												   real* DD, 
 												   int* k_Q, 
-												   doubflo* QQ,
+												   real* QQ,
 												   int kQ, 
-												   doubflo om1, 
+												   real om1, 
 												   unsigned int* neighborX,
 												   unsigned int* neighborY,
 												   unsigned int* neighborZ,
 												   unsigned int size_Mat, 
 												   bool evenOrOdd);
 
-extern "C" __global__ void QPressDeviceFixBackflow27( doubflo* rhoBC,
-                                                      doubflo* DD, 
+extern "C" __global__ void QPressDeviceFixBackflow27( real* rhoBC,
+                                                      real* DD, 
                                                       int* k_Q, 
                                                       int kQ, 
-                                                      doubflo om1, 
+                                                      real om1, 
                                                       unsigned int* neighborX,
                                                       unsigned int* neighborY,
                                                       unsigned int* neighborZ,
                                                       unsigned int size_Mat, 
                                                       bool evenOrOdd);
 
-extern "C" __global__ void QPressDeviceDirDepBot27(  doubflo* rhoBC,
-                                                     doubflo* DD, 
+extern "C" __global__ void QPressDeviceDirDepBot27(  real* rhoBC,
+                                                     real* DD, 
                                                      int* k_Q, 
                                                      int kQ, 
-                                                     doubflo om1, 
+                                                     real om1, 
                                                      unsigned int* neighborX,
                                                      unsigned int* neighborY,
                                                      unsigned int* neighborZ,
                                                      unsigned int size_Mat, 
                                                      bool evenOrOdd);
 
-extern "C" __global__ void QPressNoRhoDevice27(  doubflo* rhoBC,
-												 doubflo* DD, 
+extern "C" __global__ void QPressNoRhoDevice27(  real* rhoBC,
+												 real* DD, 
 												 int* k_Q, 
 												 int* k_N, 
 												 int kQ, 
-												 doubflo om1, 
+												 real om1, 
 												 unsigned int* neighborX,
 												 unsigned int* neighborY,
 												 unsigned int* neighborZ,
 												 unsigned int size_Mat, 
 												 bool evenOrOdd);
 
-extern "C" __global__ void QInflowScaleByPressDevice27(  doubflo* rhoBC,
-														 doubflo* DD, 
+extern "C" __global__ void QInflowScaleByPressDevice27(  real* rhoBC,
+														 real* DD, 
 														 int* k_Q, 
 														 int* k_N, 
 														 int kQ, 
-														 doubflo om1, 
+														 real om1, 
 														 unsigned int* neighborX,
 														 unsigned int* neighborY,
 														 unsigned int* neighborZ,
 														 unsigned int size_Mat, 
 														 bool evenOrOdd);
 
-extern "C" __global__ void QPressDeviceOld27(doubflo* rhoBC,
-                                             doubflo* DD, 
+extern "C" __global__ void QPressDeviceOld27(real* rhoBC,
+                                             real* DD, 
                                              int* k_Q, 
                                              int* k_N, 
                                              int kQ, 
-                                             doubflo om1, 
+                                             real om1, 
                                              unsigned int* neighborX,
                                              unsigned int* neighborY,
                                              unsigned int* neighborZ,
                                              unsigned int size_Mat, 
                                              bool evenOrOdd);
 
-extern "C" __global__ void QPressDeviceIncompNEQ27( doubflo* rhoBC,
-													doubflo* DD, 
+extern "C" __global__ void QPressDeviceIncompNEQ27( real* rhoBC,
+													real* DD, 
 													int* k_Q, 
 													int* k_N, 
 													int kQ, 
-													doubflo om1, 
+													real om1, 
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
 													unsigned int size_Mat, 
 													bool evenOrOdd);
 
-extern "C" __global__ void QPressDeviceNEQ27(doubflo* rhoBC,
-                                             doubflo* DD, 
+extern "C" __global__ void QPressDeviceNEQ27(real* rhoBC,
+                                             real* DD, 
                                              int* k_Q, 
                                              int* k_N, 
                                              int kQ, 
-                                             doubflo om1, 
+                                             real om1, 
                                              unsigned int* neighborX,
                                              unsigned int* neighborY,
                                              unsigned int* neighborZ,
                                              unsigned int size_Mat, 
                                              bool evenOrOdd);
 
-extern "C" __global__ void QPressDeviceEQZ27(doubflo* rhoBC,
-                                             doubflo* DD, 
+extern "C" __global__ void QPressDeviceEQZ27(real* rhoBC,
+                                             real* DD, 
                                              int* k_Q, 
                                              int* k_N, 
-                                             doubflo* kTestRE, 
+                                             real* kTestRE, 
                                              int kQ, 
-                                             doubflo om1, 
+                                             real om1, 
                                              unsigned int* neighborX,
                                              unsigned int* neighborY,
                                              unsigned int* neighborZ,
                                              unsigned int size_Mat, 
                                              bool evenOrOdd);
 
-extern "C" __global__ void QPressDeviceZero27(  doubflo* DD, 
+extern "C" __global__ void QPressDeviceZero27(  real* DD, 
 												int* k_Q, 
 												unsigned int kQ, 
 												unsigned int* neighborX,
@@ -1138,12 +1138,12 @@ extern "C" __global__ void QPressDeviceZero27(  doubflo* DD,
 												unsigned int size_Mat, 
 												bool evenOrOdd);
 
-extern "C" __global__ void QPressDeviceFake27(doubflo* rhoBC,
-                                             doubflo* DD, 
+extern "C" __global__ void QPressDeviceFake27(real* rhoBC,
+                                             real* DD, 
                                              int* k_Q, 
                                              int* k_N, 
                                              int kQ, 
-                                             doubflo om1, 
+                                             real om1, 
                                              unsigned int* neighborX,
                                              unsigned int* neighborY,
                                              unsigned int* neighborZ,
@@ -1152,41 +1152,41 @@ extern "C" __global__ void QPressDeviceFake27(doubflo* rhoBC,
 
 extern "C" __global__ void BBDevice27(int inx,
                                      int iny,
-                                     doubflo* DD, 
+                                     real* DD, 
                                      int* k_Q, 
-                                     doubflo* QQ,
+                                     real* QQ,
                                      unsigned int sizeQ,
                                      int kQ, 
-                                     doubflo om1, 
+                                     real om1, 
                                      unsigned int* neighborX,
                                      unsigned int* neighborY,
                                      unsigned int* neighborZ,
                                      unsigned int size_Mat, 
                                      bool evenOrOdd);
 
-extern "C" __global__ void QPressDevice27_IntBB(doubflo* rho,
-												doubflo* DD, 
+extern "C" __global__ void QPressDevice27_IntBB(real* rho,
+												real* DD, 
 												int* k_Q, 
-												doubflo* QQ,
+												real* QQ,
 												unsigned int sizeQ,
 												int kQ, 
-												doubflo om1, 
+												real om1, 
 												unsigned int* neighborX,
 												unsigned int* neighborY,
 												unsigned int* neighborZ,
 												unsigned int size_Mat, 
 												bool evenOrOdd);
 
-extern "C" __global__ void PressSchlaff27(doubflo* rhoBC,
-                                          doubflo* DD,
-                                          doubflo* vx0,
-                                          doubflo* vy0,
-                                          doubflo* vz0,
-                                          doubflo* deltaVz0,
+extern "C" __global__ void PressSchlaff27(real* rhoBC,
+                                          real* DD,
+                                          real* vx0,
+                                          real* vy0,
+                                          real* vz0,
+                                          real* deltaVz0,
                                           int* k_Q, 
                                           int* k_N, 
                                           int kQ, 
-                                          doubflo om1, 
+                                          real om1, 
                                           unsigned int* neighborX,
                                           unsigned int* neighborY,
                                           unsigned int* neighborZ,
@@ -1194,13 +1194,13 @@ extern "C" __global__ void PressSchlaff27(doubflo* rhoBC,
                                           bool evenOrOdd);
 
 extern "C" __global__ void VelSchlaff27(  int t,
-                                          doubflo* DD,
-                                          doubflo* vz0,
-                                          doubflo* deltaVz0,
+                                          real* DD,
+                                          real* vz0,
+                                          real* deltaVz0,
                                           int* k_Q, 
                                           int* k_N, 
                                           int kQ, 
-                                          doubflo om1, 
+                                          real om1, 
                                           unsigned int* neighborX,
                                           unsigned int* neighborY,
                                           unsigned int* neighborZ,
@@ -1209,15 +1209,15 @@ extern "C" __global__ void VelSchlaff27(  int t,
 
 extern "C" __global__ void QAD7( int inx,
                                  int iny,
-                                 doubflo* DD, 
-                                 doubflo* DD7, 
-                                 doubflo* temp,
-                                 doubflo diffusivity,
+                                 real* DD, 
+                                 real* DD7, 
+                                 real* temp,
+                                 real diffusivity,
                                  int* k_Q, 
-                                 doubflo* QQ,
+                                 real* QQ,
                                  unsigned int sizeQ,
                                  int kQ, 
-                                 doubflo om1, 
+                                 real om1, 
                                  unsigned int* neighborX,
                                  unsigned int* neighborY,
                                  unsigned int* neighborZ,
@@ -1226,15 +1226,15 @@ extern "C" __global__ void QAD7( int inx,
 
 extern "C" __global__ void QADDirichlet27(   int inx,
 											 int iny,
-											 doubflo* DD, 
-											 doubflo* DD27, 
-											 doubflo* temp, 
-											 doubflo diffusivity,
+											 real* DD, 
+											 real* DD27, 
+											 real* temp, 
+											 real diffusivity,
 											 int* k_Q, 
-											 doubflo* QQ,
+											 real* QQ,
 											 unsigned int sizeQ,
 											 int kQ, 
-											 doubflo om1, 
+											 real om1, 
 											 unsigned int* neighborX,
 											 unsigned int* neighborY,
 											 unsigned int* neighborZ,
@@ -1243,15 +1243,15 @@ extern "C" __global__ void QADDirichlet27(   int inx,
 
 extern "C" __global__ void QADBB27(  int inx,
 									 int iny,
-									 doubflo* DD, 
-									 doubflo* DD27, 
-									 doubflo* temp, 
-									 doubflo diffusivity,
+									 real* DD, 
+									 real* DD27, 
+									 real* temp, 
+									 real diffusivity,
 									 int* k_Q, 
-									 doubflo* QQ,
+									 real* QQ,
 									 unsigned int sizeQ,
 									 int kQ, 
-									 doubflo om1, 
+									 real om1, 
 									 unsigned int* neighborX,
 									 unsigned int* neighborY,
 									 unsigned int* neighborZ,
@@ -1260,16 +1260,16 @@ extern "C" __global__ void QADBB27(  int inx,
 
 extern "C" __global__ void QADVel7( int inx,
                                     int iny,
-                                    doubflo* DD, 
-                                    doubflo* DD7, 
-                                    doubflo* temp,
-                                    doubflo* velo,
-                                    doubflo diffusivity,
+                                    real* DD, 
+                                    real* DD7, 
+                                    real* temp,
+                                    real* velo,
+                                    real diffusivity,
                                     int* k_Q, 
-                                    doubflo* QQ,
+                                    real* QQ,
                                     unsigned int sizeQ,
                                     int kQ, 
-                                    doubflo om1, 
+                                    real om1, 
                                     unsigned int* neighborX,
                                     unsigned int* neighborY,
                                     unsigned int* neighborZ,
@@ -1278,16 +1278,16 @@ extern "C" __global__ void QADVel7( int inx,
 
 extern "C" __global__ void QADVel27(int inx,
                                     int iny,
-                                    doubflo* DD, 
-                                    doubflo* DD27, 
-                                    doubflo* temp, 
-                                    doubflo* velo, 
-                                    doubflo diffusivity,
+                                    real* DD, 
+                                    real* DD27, 
+                                    real* temp, 
+                                    real* velo, 
+                                    real diffusivity,
                                     int* k_Q, 
-                                    doubflo* QQ,
+                                    real* QQ,
                                     unsigned int sizeQ,
                                     int kQ, 
-                                    doubflo om1, 
+                                    real om1, 
                                     unsigned int* neighborX,
                                     unsigned int* neighborY,
                                     unsigned int* neighborZ,
@@ -1296,16 +1296,16 @@ extern "C" __global__ void QADVel27(int inx,
 
 extern "C" __global__ void QADPress7(  int inx,
                                        int iny,
-                                       doubflo* DD, 
-                                       doubflo* DD7, 
-                                       doubflo* temp,
-                                       doubflo* velo,
-                                       doubflo diffusivity,
+                                       real* DD, 
+                                       real* DD7, 
+                                       real* temp,
+                                       real* velo,
+                                       real diffusivity,
                                        int* k_Q, 
-                                       doubflo* QQ,
+                                       real* QQ,
                                        unsigned int sizeQ,
                                        int kQ, 
-                                       doubflo om1, 
+                                       real om1, 
                                        unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
@@ -1314,16 +1314,16 @@ extern "C" __global__ void QADPress7(  int inx,
 
 extern "C" __global__ void QADPress27( int inx,
                                        int iny,
-                                       doubflo* DD, 
-                                       doubflo* DD27, 
-                                       doubflo* temp, 
-                                       doubflo* velo, 
-                                       doubflo diffusivity,
+                                       real* DD, 
+                                       real* DD27, 
+                                       real* temp, 
+                                       real* velo, 
+                                       real diffusivity,
                                        int* k_Q, 
-                                       doubflo* QQ,
+                                       real* QQ,
                                        unsigned int sizeQ,
                                        int kQ, 
-                                       doubflo om1, 
+                                       real om1, 
                                        unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
@@ -1332,15 +1332,15 @@ extern "C" __global__ void QADPress27( int inx,
 
 extern "C" __global__ void QNoSlipADincomp7( int inx,
 											 int iny,
-											 doubflo* DD, 
-											 doubflo* DD7, 
-											 doubflo* temp,
-											 doubflo diffusivity,
+											 real* DD, 
+											 real* DD7, 
+											 real* temp,
+											 real diffusivity,
 											 int* k_Q, 
-											 doubflo* QQ,
+											 real* QQ,
 											 unsigned int sizeQ,
 											 int kQ, 
-											 doubflo om1, 
+											 real om1, 
 											 unsigned int* neighborX,
 											 unsigned int* neighborY,
 											 unsigned int* neighborZ,
@@ -1349,15 +1349,15 @@ extern "C" __global__ void QNoSlipADincomp7( int inx,
 
 extern "C" __global__ void QNoSlipADincomp27(int inx,
 											 int iny,
-											 doubflo* DD, 
-											 doubflo* DD27, 
-											 doubflo* temp, 
-											 doubflo diffusivity,
+											 real* DD, 
+											 real* DD27, 
+											 real* temp, 
+											 real diffusivity,
 											 int* k_Q, 
-											 doubflo* QQ,
+											 real* QQ,
 											 unsigned int sizeQ,
 											 int kQ, 
-											 doubflo om1, 
+											 real om1, 
 											 unsigned int* neighborX,
 											 unsigned int* neighborY,
 											 unsigned int* neighborZ,
@@ -1366,16 +1366,16 @@ extern "C" __global__ void QNoSlipADincomp27(int inx,
 
 extern "C" __global__ void QADVeloIncomp7(  int inx,
 											int iny,
-											doubflo* DD, 
-											doubflo* DD7, 
-											doubflo* temp,
-											doubflo* velo,
-											doubflo diffusivity,
+											real* DD, 
+											real* DD7, 
+											real* temp,
+											real* velo,
+											real diffusivity,
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
@@ -1384,16 +1384,16 @@ extern "C" __global__ void QADVeloIncomp7(  int inx,
 
 extern "C" __global__ void QADVeloIncomp27( int inx,
 											int iny,
-											doubflo* DD, 
-											doubflo* DD27, 
-											doubflo* temp, 
-											doubflo* velo, 
-											doubflo diffusivity,
+											real* DD, 
+											real* DD27, 
+											real* temp, 
+											real* velo, 
+											real diffusivity,
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
@@ -1402,16 +1402,16 @@ extern "C" __global__ void QADVeloIncomp27( int inx,
 
 extern "C" __global__ void QADPressIncomp7(int inx,
 										   int iny,
-										   doubflo* DD, 
-										   doubflo* DD7, 
-										   doubflo* temp,
-										   doubflo* velo,
-										   doubflo diffusivity,
+										   real* DD, 
+										   real* DD7, 
+										   real* temp,
+										   real* velo,
+										   real diffusivity,
 										   int* k_Q, 
-										   doubflo* QQ,
+										   real* QQ,
 										   unsigned int sizeQ,
 										   int kQ, 
-										   doubflo om1, 
+										   real om1, 
 										   unsigned int* neighborX,
 										   unsigned int* neighborY,
 										   unsigned int* neighborZ,
@@ -1420,16 +1420,16 @@ extern "C" __global__ void QADPressIncomp7(int inx,
 
 extern "C" __global__ void QADPressIncomp27(   int inx,
 											   int iny,
-											   doubflo* DD, 
-											   doubflo* DD27, 
-											   doubflo* temp, 
-											   doubflo* velo, 
-											   doubflo diffusivity,
+											   real* DD, 
+											   real* DD27, 
+											   real* temp, 
+											   real* velo, 
+											   real diffusivity,
 											   int* k_Q, 
-											   doubflo* QQ,
+											   real* QQ,
 											   unsigned int sizeQ,
 											   int kQ, 
-											   doubflo om1, 
+											   real om1, 
 											   unsigned int* neighborX,
 											   unsigned int* neighborY,
 											   unsigned int* neighborZ,
@@ -1439,22 +1439,22 @@ extern "C" __global__ void QADPressIncomp27(   int inx,
 extern "C" __global__ void PropellerBC(unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
-                                       doubflo* rho,
-                                       doubflo* ux,
-                                       doubflo* uy,
-                                       doubflo* uz,
+                                       real* rho,
+                                       real* ux,
+                                       real* uy,
+                                       real* uz,
                                        int* k_Q, 
 									   unsigned int size_Prop,
                                        unsigned int size_Mat,
                                        unsigned int* bcMatD,
-                                       doubflo* DD,
+                                       real* DD,
                                        bool EvenOrOdd);
 
 
 
 //coarse to fine
-extern "C" __global__ void scaleCF27(doubflo* DC, 
-                                     doubflo* DF, 
+extern "C" __global__ void scaleCF27(real* DC, 
+                                     real* DF, 
                                     unsigned int* neighborCX,
                                     unsigned int* neighborCY,
                                     unsigned int* neighborCZ,
@@ -1467,16 +1467,16 @@ extern "C" __global__ void scaleCF27(doubflo* DC,
                                      unsigned int* posCSWB, 
                                      unsigned int* posFSWB, 
                                      unsigned int kCF, 
-										       doubflo omCoarse, 
-										       doubflo omFine, 
-										       doubflo nu, 
+										       real omCoarse, 
+										       real omFine, 
+										       real nu, 
 										       unsigned int nxC, 
 										       unsigned int nyC, 
 										       unsigned int nxF, 
 										       unsigned int nyF);
 
-extern "C" __global__ void scaleCFEff27(doubflo* DC, 
-                                        doubflo* DF, 
+extern "C" __global__ void scaleCFEff27(real* DC, 
+                                        real* DF, 
                                         unsigned int* neighborCX,
                                         unsigned int* neighborCY,
                                         unsigned int* neighborCZ,
@@ -1489,17 +1489,17 @@ extern "C" __global__ void scaleCFEff27(doubflo* DC,
                                         unsigned int* posCSWB, 
                                         unsigned int* posFSWB, 
                                         unsigned int kCF, 
-									             doubflo omCoarse, 
-									             doubflo omFine, 
-									             doubflo nu, 
+									             real omCoarse, 
+									             real omFine, 
+									             real nu, 
 									             unsigned int nxC, 
 									             unsigned int nyC, 
 									             unsigned int nxF, 
                                         unsigned int nyF,
                                         OffCF offCF);
 
-extern "C" __global__ void scaleCFLast27( doubflo* DC, 
-                                          doubflo* DF, 
+extern "C" __global__ void scaleCFLast27( real* DC, 
+                                          real* DF, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -1512,17 +1512,17 @@ extern "C" __global__ void scaleCFLast27( doubflo* DC,
                                           unsigned int* posCSWB, 
                                           unsigned int* posFSWB, 
                                           unsigned int kCF, 
-                                          doubflo omCoarse, 
-                                          doubflo omFine, 
-                                          doubflo nu, 
+                                          real omCoarse, 
+                                          real omFine, 
+                                          real nu, 
                                           unsigned int nxC, 
                                           unsigned int nyC, 
                                           unsigned int nxF, 
                                           unsigned int nyF,
                                           OffCF offCF);
 
-extern "C" __global__ void scaleCFpress27(doubflo* DC, 
-                                          doubflo* DF, 
+extern "C" __global__ void scaleCFpress27(real* DC, 
+                                          real* DF, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -1535,17 +1535,17 @@ extern "C" __global__ void scaleCFpress27(doubflo* DC,
                                           unsigned int* posCSWB, 
                                           unsigned int* posFSWB, 
                                           unsigned int kCF, 
-                                          doubflo omCoarse, 
-                                          doubflo omFine, 
-                                          doubflo nu, 
+                                          real omCoarse, 
+                                          real omFine, 
+                                          real nu, 
                                           unsigned int nxC, 
                                           unsigned int nyC, 
                                           unsigned int nxF, 
                                           unsigned int nyF,
                                           OffCF offCF);
 
-extern "C" __global__ void scaleCF_Fix_27(doubflo* DC, 
-                                          doubflo* DF, 
+extern "C" __global__ void scaleCF_Fix_27(real* DC, 
+                                          real* DF, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -1558,17 +1558,17 @@ extern "C" __global__ void scaleCF_Fix_27(doubflo* DC,
                                           unsigned int* posCSWB, 
                                           unsigned int* posFSWB, 
                                           unsigned int kCF, 
-                                          doubflo omCoarse, 
-                                          doubflo omFine, 
-                                          doubflo nu, 
+                                          real omCoarse, 
+                                          real omFine, 
+                                          real nu, 
                                           unsigned int nxC, 
                                           unsigned int nyC, 
                                           unsigned int nxF, 
                                           unsigned int nyF,
                                           OffCF offCF);
 
-extern "C" __global__ void scaleCF_Fix_comp_27(   doubflo* DC, 
-												  doubflo* DF, 
+extern "C" __global__ void scaleCF_Fix_comp_27(   real* DC, 
+												  real* DF, 
 												  unsigned int* neighborCX,
 												  unsigned int* neighborCY,
 												  unsigned int* neighborCZ,
@@ -1581,17 +1581,17 @@ extern "C" __global__ void scaleCF_Fix_comp_27(   doubflo* DC,
 												  unsigned int* posCSWB, 
 												  unsigned int* posFSWB, 
 												  unsigned int kCF, 
-												  doubflo omCoarse, 
-												  doubflo omFine, 
-												  doubflo nu, 
+												  real omCoarse, 
+												  real omFine, 
+												  real nu, 
 												  unsigned int nxC, 
 												  unsigned int nyC, 
 												  unsigned int nxF, 
 												  unsigned int nyF,
 												  OffCF offCF);
 
-extern "C" __global__ void scaleCF_0817_comp_27(  doubflo* DC, 
-												  doubflo* DF, 
+extern "C" __global__ void scaleCF_0817_comp_27(  real* DC, 
+												  real* DF, 
 												  unsigned int* neighborCX,
 												  unsigned int* neighborCY,
 												  unsigned int* neighborCZ,
@@ -1604,17 +1604,17 @@ extern "C" __global__ void scaleCF_0817_comp_27(  doubflo* DC,
 												  unsigned int* posCSWB, 
 												  unsigned int* posFSWB, 
 												  unsigned int kCF, 
-												  doubflo omCoarse, 
-												  doubflo omFine, 
-												  doubflo nu, 
+												  real omCoarse, 
+												  real omFine, 
+												  real nu, 
 												  unsigned int nxC, 
 												  unsigned int nyC, 
 												  unsigned int nxF, 
 												  unsigned int nyF,
 												  OffCF offCF);
 
-extern "C" __global__ void scaleCF_staggered_time_comp_27(doubflo* DC, 
-														  doubflo* DF, 
+extern "C" __global__ void scaleCF_staggered_time_comp_27(real* DC, 
+														  real* DF, 
 														  unsigned int* neighborCX,
 														  unsigned int* neighborCY,
 														  unsigned int* neighborCZ,
@@ -1627,17 +1627,17 @@ extern "C" __global__ void scaleCF_staggered_time_comp_27(doubflo* DC,
 														  unsigned int* posCSWB, 
 														  unsigned int* posFSWB, 
 														  unsigned int kCF, 
-														  doubflo omCoarse, 
-														  doubflo omFine, 
-														  doubflo nu, 
+														  real omCoarse, 
+														  real omFine, 
+														  real nu, 
 														  unsigned int nxC, 
 														  unsigned int nyC, 
 														  unsigned int nxF, 
 														  unsigned int nyF,
 														  OffCF offCF);
 
-extern "C" __global__ void scaleCF_RhoSq_comp_27( doubflo* DC, 
-												  doubflo* DF, 
+extern "C" __global__ void scaleCF_RhoSq_comp_27( real* DC, 
+												  real* DF, 
 												  unsigned int* neighborCX,
 												  unsigned int* neighborCY,
 												  unsigned int* neighborCZ,
@@ -1650,17 +1650,17 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27( doubflo* DC,
 												  unsigned int* posCSWB, 
 												  unsigned int* posFSWB, 
 												  unsigned int kCF, 
-												  doubflo omCoarse, 
-												  doubflo omFine, 
-												  doubflo nu, 
+												  real omCoarse, 
+												  real omFine, 
+												  real nu, 
 												  unsigned int nxC, 
 												  unsigned int nyC, 
 												  unsigned int nxF, 
 												  unsigned int nyF,
 												  OffCF offCF);
 
-extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC, 
-														doubflo* DF, 
+extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(real* DC, 
+														real* DF, 
 														unsigned int* neighborCX,
 														unsigned int* neighborCY,
 														unsigned int* neighborCZ,
@@ -1673,17 +1673,17 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 														unsigned int* posCSWB, 
 														unsigned int* posFSWB, 
 														unsigned int kCF, 
-														doubflo omCoarse, 
-														doubflo omFine, 
-														doubflo nu, 
+														real omCoarse, 
+														real omFine, 
+														real nu, 
 														unsigned int nxC, 
 														unsigned int nyC, 
 														unsigned int nxF, 
 														unsigned int nyF,
 														OffCF offCF);
 
-extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC, 
-												  doubflo* DF, 
+extern "C" __global__ void scaleCF_AA2016_comp_27(real* DC, 
+												  real* DF, 
 												  unsigned int* neighborCX,
 												  unsigned int* neighborCY,
 												  unsigned int* neighborCZ,
@@ -1696,17 +1696,17 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 												  unsigned int* posCSWB, 
 												  unsigned int* posFSWB, 
 												  unsigned int kCF, 
-												  doubflo omCoarse, 
-												  doubflo omFine, 
-												  doubflo nu, 
+												  real omCoarse, 
+												  real omFine, 
+												  real nu, 
 												  unsigned int nxC, 
 												  unsigned int nyC, 
 												  unsigned int nxF, 
 												  unsigned int nyF,
 												  OffCF offCF);
 
-extern "C" __global__ void scaleCF_NSPress_27(doubflo* DC, 
-											  doubflo* DF, 
+extern "C" __global__ void scaleCF_NSPress_27(real* DC, 
+											  real* DF, 
 											  unsigned int* neighborCX,
 											  unsigned int* neighborCY,
 											  unsigned int* neighborCZ,
@@ -1719,19 +1719,19 @@ extern "C" __global__ void scaleCF_NSPress_27(doubflo* DC,
 											  unsigned int* posCSWB, 
 											  unsigned int* posFSWB, 
 											  unsigned int kCF, 
-											  doubflo omCoarse, 
-											  doubflo omFine, 
-											  doubflo nu, 
+											  real omCoarse, 
+											  real omFine, 
+											  real nu, 
 											  unsigned int nxC, 
 											  unsigned int nyC, 
 											  unsigned int nxF, 
 											  unsigned int nyF,
 											  OffCF offCF);
 
-extern "C" __global__ void scaleCFThSMG7( doubflo* DC, 
-                                          doubflo* DF,
-                                          doubflo* DD7C, 
-                                          doubflo* DD7F, 
+extern "C" __global__ void scaleCFThSMG7( real* DC, 
+                                          real* DF,
+                                          real* DD7C, 
+                                          real* DD7F, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -1744,14 +1744,14 @@ extern "C" __global__ void scaleCFThSMG7( doubflo* DC,
                                           unsigned int* posCSWB, 
                                           unsigned int* posFSWB, 
                                           unsigned int kCF, 
-                                          doubflo nu,
-                                          doubflo diffusivity_fine,
+                                          real nu,
+                                          real diffusivity_fine,
                                           OffCF offCF);
 
-extern "C" __global__ void scaleCFThS7(doubflo* DC, 
-                                       doubflo* DF,
-                                       doubflo* DD7C, 
-                                       doubflo* DD7F, 
+extern "C" __global__ void scaleCFThS7(real* DC, 
+                                       real* DF,
+                                       real* DD7C, 
+                                       real* DD7F, 
                                        unsigned int* neighborCX,
                                        unsigned int* neighborCY,
                                        unsigned int* neighborCZ,
@@ -1764,13 +1764,13 @@ extern "C" __global__ void scaleCFThS7(doubflo* DC,
                                        unsigned int* posCSWB, 
                                        unsigned int* posFSWB, 
                                        unsigned int kCF, 
-                                       doubflo nu,
-                                       doubflo diffusivity_fine);
+                                       real nu,
+                                       real diffusivity_fine);
 
-extern "C" __global__ void scaleCFThS27(doubflo* DC, 
-                                        doubflo* DF,
-                                        doubflo* DD27C, 
-                                        doubflo* DD27F, 
+extern "C" __global__ void scaleCFThS27(real* DC, 
+                                        real* DF,
+                                        real* DD27C, 
+                                        real* DD27F, 
                                         unsigned int* neighborCX,
                                         unsigned int* neighborCY,
                                         unsigned int* neighborCZ,
@@ -1783,13 +1783,13 @@ extern "C" __global__ void scaleCFThS27(doubflo* DC,
                                         unsigned int* posCSWB, 
                                         unsigned int* posFSWB, 
                                         unsigned int kCF, 
-                                        doubflo nu,
-                                        doubflo diffusivity_fine,
+                                        real nu,
+                                        real diffusivity_fine,
 										OffCF offCF);
 
 //fine to coarse 
-extern "C" __global__ void scaleFC27(doubflo* DC, 
-                                     doubflo* DF, 
+extern "C" __global__ void scaleFC27(real* DC, 
+                                     real* DF, 
                                     unsigned int* neighborCX,
                                     unsigned int* neighborCY,
                                     unsigned int* neighborCZ,
@@ -1802,16 +1802,16 @@ extern "C" __global__ void scaleFC27(doubflo* DC,
                                      unsigned int* posC, 
                                      unsigned int* posFSWB, 
                                      unsigned int kFC, 
-										       doubflo omCoarse, 
-										       doubflo omFine, 
-										       doubflo nu, 
+										       real omCoarse, 
+										       real omFine, 
+										       real nu, 
 										       unsigned int nxC, 
 										       unsigned int nyC, 
 										       unsigned int nxF, 
                                      unsigned int nyF);
 
-extern "C" __global__ void scaleFCEff27(doubflo* DC, 
-                                        doubflo* DF, 
+extern "C" __global__ void scaleFCEff27(real* DC, 
+                                        real* DF, 
                                         unsigned int* neighborCX,
                                         unsigned int* neighborCY,
                                         unsigned int* neighborCZ,
@@ -1824,17 +1824,17 @@ extern "C" __global__ void scaleFCEff27(doubflo* DC,
                                         unsigned int* posC, 
                                         unsigned int* posFSWB, 
                                         unsigned int kFC, 
-                                        doubflo omCoarse, 
-                                        doubflo omFine, 
-                                        doubflo nu, 
+                                        real omCoarse, 
+                                        real omFine, 
+                                        real nu, 
                                         unsigned int nxC, 
                                         unsigned int nyC, 
                                         unsigned int nxF, 
                                         unsigned int nyF,
                                         OffFC offFC);
 
-extern "C" __global__ void scaleFCLast27( doubflo* DC, 
-                                          doubflo* DF, 
+extern "C" __global__ void scaleFCLast27( real* DC, 
+                                          real* DF, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -1847,17 +1847,17 @@ extern "C" __global__ void scaleFCLast27( doubflo* DC,
                                           unsigned int* posC, 
                                           unsigned int* posFSWB, 
                                           unsigned int kFC, 
-                                          doubflo omCoarse, 
-                                          doubflo omFine, 
-                                          doubflo nu, 
+                                          real omCoarse, 
+                                          real omFine, 
+                                          real nu, 
                                           unsigned int nxC, 
                                           unsigned int nyC, 
                                           unsigned int nxF, 
                                           unsigned int nyF,
                                           OffFC offFC);
 
-extern "C" __global__ void scaleFCpress27( doubflo* DC, 
-                                          doubflo* DF, 
+extern "C" __global__ void scaleFCpress27( real* DC, 
+                                          real* DF, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -1870,17 +1870,17 @@ extern "C" __global__ void scaleFCpress27( doubflo* DC,
                                           unsigned int* posC, 
                                           unsigned int* posFSWB, 
                                           unsigned int kFC, 
-                                          doubflo omCoarse, 
-                                          doubflo omFine, 
-                                          doubflo nu, 
+                                          real omCoarse, 
+                                          real omFine, 
+                                          real nu, 
                                           unsigned int nxC, 
                                           unsigned int nyC, 
                                           unsigned int nxF, 
                                           unsigned int nyF,
                                           OffFC offFC);
 
-extern "C" __global__ void scaleFC_Fix_27( doubflo* DC, 
-                                          doubflo* DF, 
+extern "C" __global__ void scaleFC_Fix_27( real* DC, 
+                                          real* DF, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -1893,17 +1893,17 @@ extern "C" __global__ void scaleFC_Fix_27( doubflo* DC,
                                           unsigned int* posC, 
                                           unsigned int* posFSWB, 
                                           unsigned int kFC, 
-                                          doubflo omCoarse, 
-                                          doubflo omFine, 
-                                          doubflo nu, 
+                                          real omCoarse, 
+                                          real omFine, 
+                                          real nu, 
                                           unsigned int nxC, 
                                           unsigned int nyC, 
                                           unsigned int nxF, 
                                           unsigned int nyF,
                                           OffFC offFC);
 
-extern "C" __global__ void scaleFC_Fix_comp_27(   doubflo* DC, 
-												  doubflo* DF, 
+extern "C" __global__ void scaleFC_Fix_comp_27(   real* DC, 
+												  real* DF, 
 												  unsigned int* neighborCX,
 												  unsigned int* neighborCY,
 												  unsigned int* neighborCZ,
@@ -1916,17 +1916,17 @@ extern "C" __global__ void scaleFC_Fix_comp_27(   doubflo* DC,
 												  unsigned int* posC, 
 												  unsigned int* posFSWB, 
 												  unsigned int kFC, 
-												  doubflo omCoarse, 
-												  doubflo omFine, 
-												  doubflo nu, 
+												  real omCoarse, 
+												  real omFine, 
+												  real nu, 
 												  unsigned int nxC, 
 												  unsigned int nyC, 
 												  unsigned int nxF, 
 												  unsigned int nyF,
 												  OffFC offFC);
 
-extern "C" __global__ void scaleFC_0817_comp_27(  doubflo* DC, 
-												  doubflo* DF, 
+extern "C" __global__ void scaleFC_0817_comp_27(  real* DC, 
+												  real* DF, 
 												  unsigned int* neighborCX,
 												  unsigned int* neighborCY,
 												  unsigned int* neighborCZ,
@@ -1939,17 +1939,17 @@ extern "C" __global__ void scaleFC_0817_comp_27(  doubflo* DC,
 												  unsigned int* posC, 
 												  unsigned int* posFSWB, 
 												  unsigned int kFC, 
-												  doubflo omCoarse, 
-												  doubflo omFine, 
-												  doubflo nu, 
+												  real omCoarse, 
+												  real omFine, 
+												  real nu, 
 												  unsigned int nxC, 
 												  unsigned int nyC, 
 												  unsigned int nxF, 
 												  unsigned int nyF,
 												  OffFC offFC);
 
-extern "C" __global__ void scaleFC_staggered_time_comp_27(doubflo* DC, 
-														  doubflo* DF, 
+extern "C" __global__ void scaleFC_staggered_time_comp_27(real* DC, 
+														  real* DF, 
 														  unsigned int* neighborCX,
 														  unsigned int* neighborCY,
 														  unsigned int* neighborCZ,
@@ -1962,17 +1962,17 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27(doubflo* DC,
 														  unsigned int* posC, 
 														  unsigned int* posFSWB, 
 														  unsigned int kFC, 
-														  doubflo omCoarse, 
-														  doubflo omFine, 
-														  doubflo nu, 
+														  real omCoarse, 
+														  real omFine, 
+														  real nu, 
 														  unsigned int nxC, 
 														  unsigned int nyC, 
 														  unsigned int nxF, 
 														  unsigned int nyF,
 														  OffFC offFC);
 
-extern "C" __global__ void scaleFC_RhoSq_comp_27( doubflo* DC, 
-												  doubflo* DF, 
+extern "C" __global__ void scaleFC_RhoSq_comp_27( real* DC, 
+												  real* DF, 
 												  unsigned int* neighborCX,
 												  unsigned int* neighborCY,
 												  unsigned int* neighborCZ,
@@ -1985,17 +1985,17 @@ extern "C" __global__ void scaleFC_RhoSq_comp_27( doubflo* DC,
 												  unsigned int* posC, 
 												  unsigned int* posFSWB, 
 												  unsigned int kFC, 
-												  doubflo omCoarse, 
-												  doubflo omFine, 
-												  doubflo nu, 
+												  real omCoarse, 
+												  real omFine, 
+												  real nu, 
 												  unsigned int nxC, 
 												  unsigned int nyC, 
 												  unsigned int nxF, 
 												  unsigned int nyF,
 												  OffFC offFC);
 
-extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC, 
-														doubflo* DF, 
+extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(real* DC, 
+														real* DF, 
 														unsigned int* neighborCX,
 														unsigned int* neighborCY,
 														unsigned int* neighborCZ,
@@ -2008,17 +2008,17 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 														unsigned int* posC, 
 														unsigned int* posFSWB, 
 														unsigned int kFC, 
-														doubflo omCoarse, 
-														doubflo omFine, 
-														doubflo nu, 
+														real omCoarse, 
+														real omFine, 
+														real nu, 
 														unsigned int nxC, 
 														unsigned int nyC, 
 														unsigned int nxF, 
 														unsigned int nyF,
 														OffFC offFC);
 
-extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC, 
-												  doubflo* DF, 
+extern "C" __global__ void scaleFC_AA2016_comp_27(real* DC, 
+												  real* DF, 
 												  unsigned int* neighborCX,
 												  unsigned int* neighborCY,
 												  unsigned int* neighborCZ,
@@ -2031,17 +2031,17 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 												  unsigned int* posC, 
 												  unsigned int* posFSWB, 
 												  unsigned int kFC, 
-												  doubflo omCoarse, 
-												  doubflo omFine, 
-												  doubflo nu, 
+												  real omCoarse, 
+												  real omFine, 
+												  real nu, 
 												  unsigned int nxC, 
 												  unsigned int nyC, 
 												  unsigned int nxF, 
 												  unsigned int nyF,
 												  OffFC offFC);
 
-extern "C" __global__ void scaleFC_NSPress_27(doubflo* DC, 
-											  doubflo* DF, 
+extern "C" __global__ void scaleFC_NSPress_27(real* DC, 
+											  real* DF, 
 											  unsigned int* neighborCX,
 											  unsigned int* neighborCY,
 											  unsigned int* neighborCZ,
@@ -2054,19 +2054,19 @@ extern "C" __global__ void scaleFC_NSPress_27(doubflo* DC,
 											  unsigned int* posC, 
 											  unsigned int* posFSWB, 
 											  unsigned int kFC, 
-											  doubflo omCoarse, 
-											  doubflo omFine, 
-											  doubflo nu, 
+											  real omCoarse, 
+											  real omFine, 
+											  real nu, 
 											  unsigned int nxC, 
 											  unsigned int nyC, 
 											  unsigned int nxF, 
 											  unsigned int nyF,
 											  OffFC offFC);
 
-extern "C" __global__ void scaleFCThSMG7( doubflo* DC, 
-                                          doubflo* DF, 
-                                          doubflo* DD7C, 
-                                          doubflo* DD7F, 
+extern "C" __global__ void scaleFCThSMG7( real* DC, 
+                                          real* DF, 
+                                          real* DD7C, 
+                                          real* DD7F, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -2079,14 +2079,14 @@ extern "C" __global__ void scaleFCThSMG7( doubflo* DC,
                                           unsigned int* posC, 
                                           unsigned int* posFSWB, 
                                           unsigned int kFC, 
-                                          doubflo nu,
-                                          doubflo diffusivity_coarse,
+                                          real nu,
+                                          real diffusivity_coarse,
                                           OffFC offFC);
 
-extern "C" __global__ void scaleFCThS7(doubflo* DC, 
-                                       doubflo* DF, 
-                                       doubflo* DD7C, 
-                                       doubflo* DD7F, 
+extern "C" __global__ void scaleFCThS7(real* DC, 
+                                       real* DF, 
+                                       real* DD7C, 
+                                       real* DD7F, 
                                        unsigned int* neighborCX,
                                        unsigned int* neighborCY,
                                        unsigned int* neighborCZ,
@@ -2099,13 +2099,13 @@ extern "C" __global__ void scaleFCThS7(doubflo* DC,
                                        unsigned int* posC, 
                                        unsigned int* posFSWB, 
                                        unsigned int kFC, 
-                                       doubflo nu,
-                                       doubflo diffusivity_coarse);
+                                       real nu,
+                                       real diffusivity_coarse);
 
-extern "C" __global__ void scaleFCThS27(  doubflo* DC, 
-                                          doubflo* DF, 
-                                          doubflo* DD27C, 
-                                          doubflo* DD27F, 
+extern "C" __global__ void scaleFCThS27(  real* DC, 
+                                          real* DF, 
+                                          real* DD27C, 
+                                          real* DD27F, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -2118,13 +2118,13 @@ extern "C" __global__ void scaleFCThS27(  doubflo* DC,
                                           unsigned int* posC, 
                                           unsigned int* posFSWB, 
                                           unsigned int kFC, 
-                                          doubflo nu,
-                                          doubflo diffusivity_coarse,
+                                          real nu,
+                                          real diffusivity_coarse,
 										  OffFC offFC);
 
-extern "C" __global__ void DragLiftPost27(  doubflo* DD, 
+extern "C" __global__ void DragLiftPost27(  real* DD, 
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											int kQ, 
 											double *DragX,
 											double *DragY,
@@ -2135,9 +2135,9 @@ extern "C" __global__ void DragLiftPost27(  doubflo* DD,
 											unsigned int size_Mat, 
 											bool evenOrOdd);
 
-extern "C" __global__ void DragLiftPre27(   doubflo* DD, 
+extern "C" __global__ void DragLiftPre27(   real* DD, 
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											int kQ, 
 											double *DragX,
 											double *DragY,
@@ -2148,7 +2148,7 @@ extern "C" __global__ void DragLiftPre27(   doubflo* DD,
 											unsigned int size_Mat, 
 											bool evenOrOdd);
 
-extern "C" __global__ void CalcCP27(doubflo* DD, 
+extern "C" __global__ void CalcCP27(real* DD, 
 									int* cpIndex, 
 									int nonCp, 
 									double *cpPress,
@@ -2158,8 +2158,8 @@ extern "C" __global__ void CalcCP27(doubflo* DD,
 									unsigned int size_Mat, 
 									bool evenOrOdd);
 
-extern "C" __global__ void getSendFsPre27(doubflo* DD,
-										  doubflo* bufferFs,
+extern "C" __global__ void getSendFsPre27(real* DD,
+										  real* bufferFs,
 										  int* sendIndex,
                                           int buffmax,
                                           unsigned int* neighborX,
@@ -2168,8 +2168,8 @@ extern "C" __global__ void getSendFsPre27(doubflo* DD,
                                           unsigned int size_Mat, 
                                           bool evenOrOdd);
 
-extern "C" __global__ void getSendFsPost27(doubflo* DD,
-										   doubflo* bufferFs,
+extern "C" __global__ void getSendFsPost27(real* DD,
+										   real* bufferFs,
 										   int* sendIndex,
                                            int buffmax,
                                            unsigned int* neighborX,
@@ -2178,8 +2178,8 @@ extern "C" __global__ void getSendFsPost27(doubflo* DD,
                                            unsigned int size_Mat, 
                                            bool evenOrOdd);
 
-extern "C" __global__ void setRecvFsPre27(doubflo* DD,
-										  doubflo* bufferFs,
+extern "C" __global__ void setRecvFsPre27(real* DD,
+										  real* bufferFs,
 										  int* recvIndex,
                                           int buffmax,
                                           unsigned int* neighborX,
@@ -2188,8 +2188,8 @@ extern "C" __global__ void setRecvFsPre27(doubflo* DD,
                                           unsigned int size_Mat, 
                                           bool evenOrOdd);
 
-extern "C" __global__ void setRecvFsPost27(doubflo* DD,
-										   doubflo* bufferFs,
+extern "C" __global__ void setRecvFsPost27(real* DD,
+										   real* bufferFs,
 										   int* recvIndex,
                                            int buffmax,
                                            unsigned int* neighborX,
@@ -2200,64 +2200,64 @@ extern "C" __global__ void setRecvFsPost27(doubflo* DD,
 
 extern "C" __global__ void WallFunction27(  int inx,
 											int iny,
-											doubflo* vx,
-											doubflo* vy,
-											doubflo* vz,
-											doubflo* DD, 
+											real* vx,
+											real* vy,
+											real* vz,
+											real* DD, 
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
 											unsigned int size_Mat, 
 											bool evenOrOdd);
 
-extern "C" __global__ void LBSetOutputWallVelocitySP27( doubflo* vxD,
-														doubflo* vyD,
-														doubflo* vzD,
-														doubflo* vxWall,
-														doubflo* vyWall,
-														doubflo* vzWall,
+extern "C" __global__ void LBSetOutputWallVelocitySP27( real* vxD,
+														real* vyD,
+														real* vzD,
+														real* vxWall,
+														real* vyWall,
+														real* vzWall,
 														int numberOfWallNodes, 
 														int* kWallNodes, 
-														doubflo* rhoD,
-														doubflo* pressD,
+														real* rhoD,
+														real* pressD,
 														unsigned int* geoD,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
 														unsigned int size_Mat,
-														doubflo* DD,
+														real* DD,
 														bool evenOrOdd);
 
-extern "C" __global__ void GetVeloforForcing27( doubflo* DD, 
+extern "C" __global__ void GetVeloforForcing27( real* DD, 
 												int* bcIndex, 
 												int nonAtBC, 
-												doubflo* Vx,
-												doubflo* Vy,
-												doubflo* Vz,
+												real* Vx,
+												real* Vy,
+												real* Vz,
 												unsigned int* neighborX,
 												unsigned int* neighborY,
 												unsigned int* neighborZ,
 												unsigned int size_Mat, 
 												bool evenOrOdd);
 
-extern "C" __global__ void InitParticles( doubflo* coordX,
-										  doubflo* coordY,
-										  doubflo* coordZ, 
-										  doubflo* coordParticleXlocal,
-										  doubflo* coordParticleYlocal,
-										  doubflo* coordParticleZlocal, 
-										  doubflo* coordParticleXglobal,
-										  doubflo* coordParticleYglobal,
-										  doubflo* coordParticleZglobal,
-										  doubflo* veloParticleX,
-										  doubflo* veloParticleY,
-										  doubflo* veloParticleZ,
-										  doubflo* randArray,
+extern "C" __global__ void InitParticles( real* coordX,
+										  real* coordY,
+										  real* coordZ, 
+										  real* coordParticleXlocal,
+										  real* coordParticleYlocal,
+										  real* coordParticleZlocal, 
+										  real* coordParticleXglobal,
+										  real* coordParticleYglobal,
+										  real* coordParticleZglobal,
+										  real* veloParticleX,
+										  real* veloParticleY,
+										  real* veloParticleZ,
+										  real* randArray,
 										  unsigned int* particleID,
 										  unsigned int* cellBaseID,
 										  unsigned int* bcMatD,
@@ -2269,20 +2269,20 @@ extern "C" __global__ void InitParticles( doubflo* coordX,
 									      unsigned int numberOfParticles, 
 										  unsigned int size_Mat);
 
-extern "C" __global__ void MoveParticles( doubflo* coordX,
-										  doubflo* coordY,
-										  doubflo* coordZ, 
-										  doubflo* coordParticleXlocal,
-										  doubflo* coordParticleYlocal,
-										  doubflo* coordParticleZlocal,
-										  doubflo* coordParticleXglobal,
-										  doubflo* coordParticleYglobal,
-										  doubflo* coordParticleZglobal,
-										  doubflo* veloParticleX,
-										  doubflo* veloParticleY,
-										  doubflo* veloParticleZ,
-										  doubflo* DD,
-										  doubflo  omega,
+extern "C" __global__ void MoveParticles( real* coordX,
+										  real* coordY,
+										  real* coordZ, 
+										  real* coordParticleXlocal,
+										  real* coordParticleYlocal,
+										  real* coordParticleZlocal,
+										  real* coordParticleXglobal,
+										  real* coordParticleYglobal,
+										  real* coordParticleZglobal,
+										  real* veloParticleX,
+										  real* veloParticleY,
+										  real* veloParticleZ,
+										  real* DD,
+										  real  omega,
 										  unsigned int* particleID,
 										  unsigned int* cellBaseID,
 										  unsigned int* bcMatD,
@@ -2297,20 +2297,20 @@ extern "C" __global__ void MoveParticles( doubflo* coordX,
 										  unsigned int size_Mat,
 										  bool evenOrOdd);
 
-extern "C" __global__ void MoveParticlesWithoutBCs(   doubflo* coordX,
-													  doubflo* coordY,
-													  doubflo* coordZ, 
-													  doubflo* coordParticleXlocal,
-													  doubflo* coordParticleYlocal,
-													  doubflo* coordParticleZlocal,
-													  doubflo* coordParticleXglobal,
-													  doubflo* coordParticleYglobal,
-													  doubflo* coordParticleZglobal,
-													  doubflo* veloParticleX,
-													  doubflo* veloParticleY,
-													  doubflo* veloParticleZ,
-													  doubflo* DD,
-													  doubflo  omega,
+extern "C" __global__ void MoveParticlesWithoutBCs(   real* coordX,
+													  real* coordY,
+													  real* coordZ, 
+													  real* coordParticleXlocal,
+													  real* coordParticleYlocal,
+													  real* coordParticleZlocal,
+													  real* coordParticleXglobal,
+													  real* coordParticleYglobal,
+													  real* coordParticleZglobal,
+													  real* veloParticleX,
+													  real* veloParticleY,
+													  real* veloParticleZ,
+													  real* DD,
+													  real  omega,
 													  unsigned int* particleID,
 													  unsigned int* cellBaseID,
 													  unsigned int* bcMatD,
@@ -2328,7 +2328,7 @@ extern "C" __global__ void MoveParticlesWithoutBCs(   doubflo* coordX,
 extern "C" __global__ void initRandom(curandState* state);
 
 extern "C" __global__ void generateRandomValues(curandState* state, 
-												doubflo* randArray);
+												real* randArray);
 
 
 #endif
diff --git a/src/VirtualFluids_GPU/GPU/Init27.cu b/src/VirtualFluids_GPU/GPU/Init27.cu
index 65134370f..87843c4d0 100644
--- a/src/VirtualFluids_GPU/GPU/Init27.cu
+++ b/src/VirtualFluids_GPU/GPU/Init27.cu
@@ -8,12 +8,12 @@ extern "C" __global__ void LBInitF3(unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
 									unsigned int* geoD,
-									doubflo* rho,
-									doubflo* ux,
-									doubflo* uy,
-									doubflo* uz,
+									real* rho,
+									real* ux,
+									real* uy,
+									real* uz,
 									unsigned int size_Mat,
-									doubflo* G6,
+									real* G6,
 									bool EvenOrOdd)
 {
 	////////////////////////////////////////////////////////////////////////////////
@@ -85,17 +85,17 @@ extern "C" __global__ void LBInitF3(unsigned int* neighborX,
 ////////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void LBInit27( int myid,
                                      int numprocs,
-                                     doubflo u0,
+                                     real u0,
                                      unsigned int* geoD,
                                      unsigned int* neighborX,
                                      unsigned int* neighborY,
                                      unsigned int* neighborZ,
-                                     doubflo* vParabel,
+                                     real* vParabel,
                                      unsigned int size_Mat,
                                      unsigned int grid_nx, 
                                      unsigned int grid_ny, 
                                      unsigned int grid_nz, 
-                                     doubflo* DD,
+                                     real* DD,
                                      int lev,
                                      int maxlev)
 {
@@ -159,18 +159,18 @@ extern "C" __global__ void LBInit27( int myid,
       unsigned int centerX = grid_nx / 2;
       unsigned int centerY = grid_ny / 2;
       unsigned int centerZ = grid_nz / 2;
-      doubflo        radius  = grid_ny / 2.56;
+      real        radius  = grid_ny / 2.56;
 
       unsigned int distSq = (centerX-tx)*(centerX-tx)+(centerY-by)*(centerY-by)+(centerZ-bz)*(centerZ-bz);
-      doubflo radiSq = radius*radius;
+      real radiSq = radius*radius;
 
       if( distSq < radiSq)        geoD[k] = GEO_SOLID;
    }
    //////////////////////////////////////////////////////////////////////////
-   doubflo drho = zero;
-   doubflo  vx1 = zero;
-   doubflo  vx2 = zero;
-   doubflo  vx3 = u0;
+   real drho = zero;
+   real  vx1 = zero;
+   real  vx2 = zero;
+   real  vx3 = u0;
    vParabel[k] = vx3;
    ////////////////////////////////////////////////////////////////////////////////
    //index
@@ -215,7 +215,7 @@ extern "C" __global__ void LBInit27( int myid,
    unsigned int kbsw = k + nxny + nx + 1;
    //////////////////////////////////////////////////////////////////////////
 
-   doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+   real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
    (D.f[dirZERO])[kzero] =   c8over27* (drho-cu_sq);
    (D.f[dirE   ])[ke   ] =   c2over27* (drho+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
@@ -262,12 +262,12 @@ extern "C" __global__ void LBInitSP27( unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
                                        unsigned int* geoD,
-                                       doubflo* rho,
-                                       doubflo* ux,
-                                       doubflo* uy,
-                                       doubflo* uz,
+                                       real* rho,
+                                       real* ux,
+                                       real* uy,
+                                       real* uz,
                                        unsigned int size_Mat,
-                                       doubflo* DD,
+                                       real* DD,
                                        bool EvenOrOdd)
 {
    ////////////////////////////////////////////////////////////////////////////////
@@ -351,10 +351,10 @@ extern "C" __global__ void LBInitSP27( unsigned int* neighborX,
             D.f[dirTSE ] = &DD[dirBNW *size_Mat];
          }
          //////////////////////////////////////////////////////////////////////////
-         doubflo drho = rho[k];//0.0f;//
-         doubflo  vx1 = ux[k]; //0.0f;//
-         doubflo  vx2 = uy[k]; //0.0f;//
-         doubflo  vx3 = uz[k]; //0.0f;//
+         real drho = rho[k];//0.0f;//
+         real  vx1 = ux[k]; //0.0f;//
+         real  vx2 = uy[k]; //0.0f;//
+         real  vx3 = uz[k]; //0.0f;//
          //////////////////////////////////////////////////////////////////////////
          //index
          //////////////////////////////////////////////////////////////////////////
@@ -386,7 +386,7 @@ extern "C" __global__ void LBInitSP27( unsigned int* neighborX,
          unsigned int ktne = k;
          unsigned int kbsw = neighborZ[ksw];
          //////////////////////////////////////////////////////////////////////////
-         doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+         real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
          (D.f[dirZERO])[kzero] =   c8over27* (drho-cu_sq);
          (D.f[dirE   ])[ke   ] =   c2over27* (drho+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
@@ -439,12 +439,12 @@ extern "C" __global__ void LBInitCompSP27( unsigned int* neighborX,
 										   unsigned int* neighborY,
 										   unsigned int* neighborZ,
 										   unsigned int* geoD,
-										   doubflo* rho,
-										   doubflo* ux,
-										   doubflo* uy,
-										   doubflo* uz,
+										   real* rho,
+										   real* ux,
+										   real* uy,
+										   real* uz,
 										   unsigned int size_Mat,
-										   doubflo* DD,
+										   real* DD,
 										   bool EvenOrOdd)
 {
    ////////////////////////////////////////////////////////////////////////////////
@@ -528,10 +528,10 @@ extern "C" __global__ void LBInitCompSP27( unsigned int* neighborX,
             D.f[dirTSE ] = &DD[dirBNW *size_Mat];
          }
          //////////////////////////////////////////////////////////////////////////
-         doubflo drho = rho[k];//0.0f;//
-         doubflo  vx1 = ux[k]; //0.0f;//
-         doubflo  vx2 = uy[k]; //0.0f;//
-         doubflo  vx3 = uz[k]; //0.0f;//
+         real drho = rho[k];//0.0f;//
+         real  vx1 = ux[k]; //0.0f;//
+         real  vx2 = uy[k]; //0.0f;//
+         real  vx3 = uz[k]; //0.0f;//
          //////////////////////////////////////////////////////////////////////////
          //index
          //////////////////////////////////////////////////////////////////////////
@@ -563,7 +563,7 @@ extern "C" __global__ void LBInitCompSP27( unsigned int* neighborX,
          unsigned int ktne = k;
          unsigned int kbsw = neighborZ[ksw];
          //////////////////////////////////////////////////////////////////////////
-         doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+         real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
          (D.f[dirZERO])[kzero] =   c8over27* (drho-cu_sq*(one+drho));
          (D.f[dirE   ])[ke   ] =   c2over27* (drho+ (one+drho) * (three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq));
@@ -615,12 +615,12 @@ extern "C" __global__ void LBInitThS7( unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
                                        unsigned int* geoD,
-                                       doubflo* Conc,
-                                       doubflo* ux,
-                                       doubflo* uy,
-                                       doubflo* uz,
+                                       real* Conc,
+                                       real* ux,
+                                       real* uy,
+                                       real* uz,
                                        unsigned int size_Mat,
-                                       doubflo* DD7,
+                                       real* DD7,
                                        bool EvenOrOdd)
 {
    ////////////////////////////////////////////////////////////////////////////////
@@ -664,18 +664,18 @@ extern "C" __global__ void LBInitThS7( unsigned int* neighborX,
             D7.f[5] = &DD7[6*size_Mat];
          }
          //////////////////////////////////////////////////////////////////////////
-         doubflo ConcD = Conc[k];
-         doubflo   vx1 = ux[k];
-         doubflo   vx2 = uy[k];
-         doubflo   vx3 = uz[k];
-         doubflo lambdaD     = -three + sqrt(three);
-         doubflo Diffusivity = c1o20;
-         doubflo Lam         = -(c1o2+one/lambdaD);
-         doubflo nue_d       = Lam/three;
-         doubflo ae          = Diffusivity/nue_d - one;
-         doubflo ux_sq       = vx1 * vx1;
-         doubflo uy_sq       = vx2 * vx2;
-         doubflo uz_sq       = vx3 * vx3;
+         real ConcD = Conc[k];
+         real   vx1 = ux[k];
+         real   vx2 = uy[k];
+         real   vx3 = uz[k];
+         real lambdaD     = -three + sqrt(three);
+         real Diffusivity = c1o20;
+         real Lam         = -(c1o2+one/lambdaD);
+         real nue_d       = Lam/three;
+         real ae          = Diffusivity/nue_d - one;
+         real ux_sq       = vx1 * vx1;
+         real uy_sq       = vx2 * vx2;
+         real uz_sq       = vx3 * vx3;
          //////////////////////////////////////////////////////////////////////////
          //index
          //////////////////////////////////////////////////////////////////////////
@@ -715,12 +715,12 @@ extern "C" __global__ void LBInitThS27(unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
                                        unsigned int* geoD,
-                                       doubflo* Conc,
-                                       doubflo* ux,
-                                       doubflo* uy,
-                                       doubflo* uz,
+                                       real* Conc,
+                                       real* ux,
+                                       real* uy,
+                                       real* uz,
                                        unsigned int size_Mat,
-                                       doubflo* DD27,
+                                       real* DD27,
                                        bool EvenOrOdd)
 {
    ////////////////////////////////////////////////////////////////////////////////
@@ -804,18 +804,18 @@ extern "C" __global__ void LBInitThS27(unsigned int* neighborX,
             D27.f[dirTSE ] = &DD27[dirBNW *size_Mat];
          }
          //////////////////////////////////////////////////////////////////////////
-         doubflo ConcD = Conc[k];
-         doubflo   vx1 = ux[k];
-         doubflo   vx2 = uy[k];
-         doubflo   vx3 = uz[k];
-         //doubflo lambdaD     = -three + sqrt(three);
-         //doubflo Diffusivity = c1o20;
-         //doubflo Lam         = -(c1o2+one/lambdaD);
-         //doubflo nue_d       = Lam/three;
-         //doubflo ae          = Diffusivity/nue_d - one;
-         //doubflo ux_sq       = vx1 * vx1;
-         //doubflo uy_sq       = vx2 * vx2;
-         //doubflo uz_sq       = vx3 * vx3;
+         real ConcD = Conc[k];
+         real   vx1 = ux[k];
+         real   vx2 = uy[k];
+         real   vx3 = uz[k];
+         //real lambdaD     = -three + sqrt(three);
+         //real Diffusivity = c1o20;
+         //real Lam         = -(c1o2+one/lambdaD);
+         //real nue_d       = Lam/three;
+         //real ae          = Diffusivity/nue_d - one;
+         //real ux_sq       = vx1 * vx1;
+         //real uy_sq       = vx2 * vx2;
+         //real uz_sq       = vx3 * vx3;
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          //D3Q7
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -870,7 +870,7 @@ extern "C" __global__ void LBInitThS27(unsigned int* neighborX,
          unsigned int ktne = k;
          unsigned int kbsw = neighborZ[ksw];
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+         real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
          (D27.f[dirZERO])[kzero] =   c8over27* ConcD*(one-cu_sq);
          (D27.f[dirE   ])[ke   ] =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
@@ -923,12 +923,12 @@ extern "C" __global__ void LBInitIncompAD7(unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
 											unsigned int* geoD,
-											doubflo* Conc,
-											doubflo* ux,
-											doubflo* uy,
-											doubflo* uz,
+											real* Conc,
+											real* ux,
+											real* uy,
+											real* uz,
 											unsigned int size_Mat,
-											doubflo* DD7,
+											real* DD7,
 											bool EvenOrOdd)
 {
    ////////////////////////////////////////////////////////////////////////////////
@@ -972,18 +972,18 @@ extern "C" __global__ void LBInitIncompAD7(unsigned int* neighborX,
             D7.f[5] = &DD7[6*size_Mat];
          }
          //////////////////////////////////////////////////////////////////////////
-         doubflo ConcD = Conc[k];
-         doubflo   vx1 = ux[k];
-         doubflo   vx2 = uy[k];
-         doubflo   vx3 = uz[k];
-         doubflo lambdaD     = -three + sqrt(three);
-         doubflo Diffusivity = c1o20;
-         doubflo Lam         = -(c1o2+one/lambdaD);
-         doubflo nue_d       = Lam/three;
-         doubflo ae          = Diffusivity/nue_d - one;
-         doubflo ux_sq       = vx1 * vx1;
-         doubflo uy_sq       = vx2 * vx2;
-         doubflo uz_sq       = vx3 * vx3;
+         real ConcD = Conc[k];
+         real   vx1 = ux[k];
+         real   vx2 = uy[k];
+         real   vx3 = uz[k];
+         real lambdaD     = -three + sqrt(three);
+         real Diffusivity = c1o20;
+         real Lam         = -(c1o2+one/lambdaD);
+         real nue_d       = Lam/three;
+         real ae          = Diffusivity/nue_d - one;
+         real ux_sq       = vx1 * vx1;
+         real uy_sq       = vx2 * vx2;
+         real uz_sq       = vx3 * vx3;
          //////////////////////////////////////////////////////////////////////////
          //index
          //////////////////////////////////////////////////////////////////////////
@@ -1023,12 +1023,12 @@ extern "C" __global__ void LBInitIncompAD27(unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
 											unsigned int* geoD,
-											doubflo* Conc,
-											doubflo* ux,
-											doubflo* uy,
-											doubflo* uz,
+											real* Conc,
+											real* ux,
+											real* uy,
+											real* uz,
 											unsigned int size_Mat,
-											doubflo* DD27,
+											real* DD27,
 											bool EvenOrOdd)
 {
    ////////////////////////////////////////////////////////////////////////////////
@@ -1112,18 +1112,18 @@ extern "C" __global__ void LBInitIncompAD27(unsigned int* neighborX,
             D27.f[dirTSE ] = &DD27[dirBNW *size_Mat];
          }
          //////////////////////////////////////////////////////////////////////////
-         doubflo ConcD = Conc[k];
-         doubflo   vx1 = ux[k];
-         doubflo   vx2 = uy[k];
-         doubflo   vx3 = uz[k];
-         //doubflo lambdaD     = -three + sqrt(three);
-         //doubflo Diffusivity = c1o20;
-         //doubflo Lam         = -(c1o2+one/lambdaD);
-         //doubflo nue_d       = Lam/three;
-         //doubflo ae          = Diffusivity/nue_d - one;
-         //doubflo ux_sq       = vx1 * vx1;
-         //doubflo uy_sq       = vx2 * vx2;
-         //doubflo uz_sq       = vx3 * vx3;
+         real ConcD = Conc[k];
+         real   vx1 = ux[k];
+         real   vx2 = uy[k];
+         real   vx3 = uz[k];
+         //real lambdaD     = -three + sqrt(three);
+         //real Diffusivity = c1o20;
+         //real Lam         = -(c1o2+one/lambdaD);
+         //real nue_d       = Lam/three;
+         //real ae          = Diffusivity/nue_d - one;
+         //real ux_sq       = vx1 * vx1;
+         //real uy_sq       = vx2 * vx2;
+         //real uz_sq       = vx3 * vx3;
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          //D3Q7
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1178,7 +1178,7 @@ extern "C" __global__ void LBInitIncompAD27(unsigned int* neighborX,
          unsigned int ktne = k;
          unsigned int kbsw = neighborZ[ksw];
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-         doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+         real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
          (D27.f[dirZERO])[kzero] =   c8over27* ConcD*(one-cu_sq);
          (D27.f[dirE   ])[ke   ] =   c2over27* ConcD*(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
diff --git a/src/VirtualFluids_GPU/GPU/LBMKernel.cu b/src/VirtualFluids_GPU/GPU/LBMKernel.cu
index 3528884df..a545d8414 100644
--- a/src/VirtualFluids_GPU/GPU/LBMKernel.cu
+++ b/src/VirtualFluids_GPU/GPU/LBMKernel.cu
@@ -8,12 +8,12 @@
 extern "C" void KernelCas27( unsigned int grid_nx, 
                              unsigned int grid_ny, 
                              unsigned int grid_nz, 
-                             doubflo s9,
+                             real s9,
                              unsigned int* bcMatD,
                              unsigned int* neighborX,
                              unsigned int* neighborY,
                              unsigned int* neighborZ,
-                             doubflo* DD,
+                             real* DD,
                              int size_Mat,
                              bool EvenOrOdd)
 {
@@ -32,12 +32,12 @@ extern "C" void KernelCas27( unsigned int grid_nx,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelCasSP27( unsigned int numberOfThreads, 
-                               doubflo s9,
+                               real s9,
                                unsigned int* bcMatD,
                                unsigned int* neighborX,
                                unsigned int* neighborY,
                                unsigned int* neighborZ,
-                               doubflo* DD,
+                               real* DD,
                                int size_Mat,
                                bool EvenOrOdd)
 {
@@ -68,12 +68,12 @@ extern "C" void KernelCasSP27( unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelCasSPMS27( unsigned int numberOfThreads, 
-                                 doubflo s9,
+                                 real s9,
                                  unsigned int* bcMatD,
                                  unsigned int* neighborX,
                                  unsigned int* neighborY,
                                  unsigned int* neighborZ,
-                                 doubflo* DD,
+                                 real* DD,
                                  int size_Mat,
                                  bool EvenOrOdd)
 {
@@ -104,12 +104,12 @@ extern "C" void KernelCasSPMS27( unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelCasSPMSOHM27( unsigned int numberOfThreads, 
-                                    doubflo s9,
+                                    real s9,
                                     unsigned int* bcMatD,
                                     unsigned int* neighborX,
                                     unsigned int* neighborY,
                                     unsigned int* neighborZ,
-                                    doubflo* DD,
+                                    real* DD,
                                     int size_Mat,
                                     bool EvenOrOdd)
 {
@@ -140,12 +140,12 @@ extern "C" void KernelCasSPMSOHM27( unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelCasKumSP27(unsigned int numberOfThreads, 
-                                 doubflo s9,
+                                 real s9,
                                  unsigned int* bcMatD,
                                  unsigned int* neighborX,
                                  unsigned int* neighborY,
                                  unsigned int* neighborZ,
-                                 doubflo* DD,
+                                 real* DD,
                                  int size_Mat,
                                  bool EvenOrOdd)
 {
@@ -176,12 +176,12 @@ extern "C" void KernelCasKumSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelBGKPlusSP27(unsigned int numberOfThreads, 
-								  doubflo s9,
+								  real s9,
 								  unsigned int* bcMatD,
 								  unsigned int* neighborX,
 								  unsigned int* neighborY,
 								  unsigned int* neighborZ,
-								  doubflo* DD,
+								  real* DD,
 								  int size_Mat,
 								  bool EvenOrOdd)
 {
@@ -212,12 +212,12 @@ extern "C" void KernelBGKPlusSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelBGKPlusCompSP27(unsigned int numberOfThreads, 
-									  doubflo s9,
+									  real s9,
 									  unsigned int* bcMatD,
 									  unsigned int* neighborX,
 									  unsigned int* neighborY,
 									  unsigned int* neighborZ,
-									  doubflo* DD,
+									  real* DD,
 									  int size_Mat,
 									  bool EvenOrOdd)
 {
@@ -248,12 +248,12 @@ extern "C" void KernelBGKPlusCompSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelBGKCompSP27(unsigned int numberOfThreads, 
-								  doubflo s9,
+								  real s9,
 								  unsigned int* bcMatD,
 								  unsigned int* neighborX,
 								  unsigned int* neighborY,
 								  unsigned int* neighborZ,
-								  doubflo* DD,
+								  real* DD,
 								  int size_Mat,
 								  bool EvenOrOdd)
 {
@@ -284,12 +284,12 @@ extern "C" void KernelBGKCompSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelBGKSP27(unsigned int numberOfThreads, 
-							  doubflo s9,
+							  real s9,
 							  unsigned int* bcMatD,
 							  unsigned int* neighborX,
 							  unsigned int* neighborY,
 							  unsigned int* neighborZ,
-							  doubflo* DD,
+							  real* DD,
 							  int size_Mat,
 							  bool EvenOrOdd)
 {
@@ -320,12 +320,12 @@ extern "C" void KernelBGKSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelMRTSP27(unsigned int numberOfThreads, 
-							  doubflo s9,
+							  real s9,
 							  unsigned int* bcMatD,
 							  unsigned int* neighborX,
 							  unsigned int* neighborY,
 							  unsigned int* neighborZ,
-							  doubflo* DD,
+							  real* DD,
 							  int size_Mat,
 							  bool EvenOrOdd)
 {
@@ -356,12 +356,12 @@ extern "C" void KernelMRTSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelMRTCompSP27(unsigned int numberOfThreads, 
-								  doubflo s9,
+								  real s9,
 								  unsigned int* bcMatD,
 								  unsigned int* neighborX,
 								  unsigned int* neighborY,
 								  unsigned int* neighborZ,
-								  doubflo* DD,
+								  real* DD,
 								  int size_Mat,
 								  bool EvenOrOdd)
 {
@@ -392,15 +392,15 @@ extern "C" void KernelMRTCompSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelCumulantD3Q27All4(unsigned int numberOfThreads,
-									    doubflo s9,
+									    real s9,
 									    unsigned int* bcMatD,
 									    unsigned int* neighborX,
 									    unsigned int* neighborY,
 									    unsigned int* neighborZ,
-									    doubflo* DD,
+									    real* DD,
 									    int size_Mat,
 									    int level,
-									    doubflo* forces,
+									    real* forces,
 									    bool EvenOrOdd)
 {
 	int Grid = (size_Mat / numberOfThreads)+1;
@@ -432,16 +432,16 @@ extern "C" void KernelCumulantD3Q27All4(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelCumulantD3Q27F3(unsigned int numberOfThreads,
-									  doubflo s9,
+									  real s9,
 									  unsigned int* bcMatD,
 									  unsigned int* neighborX,
 									  unsigned int* neighborY,
 									  unsigned int* neighborZ,
-									  doubflo* DD,
-									  doubflo* F3,
+									  real* DD,
+									  real* F3,
 									  int size_Mat,
 									  int level,
-									  doubflo* forces,
+									  real* forces,
 									  bool EvenOrOdd)
 {
 	int Grid = (size_Mat / numberOfThreads)+1;
@@ -474,16 +474,16 @@ extern "C" void KernelCumulantD3Q27F3(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelKumAA2016CompBulkSP27(unsigned int numberOfThreads, 
-											doubflo s9,
+											real s9,
 											unsigned int* bcMatD,
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
-											doubflo* DD,
+											real* DD,
 											int size_Mat,
 											int size_Array,
 											int level,
-											doubflo* forces,
+											real* forces,
 											bool EvenOrOdd)
 {
 	int Grid = size_Array / numberOfThreads;
@@ -504,15 +504,15 @@ extern "C" void KernelKumAA2016CompBulkSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelKumAA2016CompSP27(unsigned int numberOfThreads, 
-										doubflo s9,
+										real s9,
 										unsigned int* bcMatD,
 										unsigned int* neighborX,
 										unsigned int* neighborY,
 										unsigned int* neighborZ,
-										doubflo* DD,
+										real* DD,
 										int size_Mat,
 										int level,
-										doubflo* forces,
+										real* forces,
 										bool EvenOrOdd)
 {
 	int Grid = (size_Mat / numberOfThreads)+1;
@@ -544,15 +544,15 @@ extern "C" void KernelKumAA2016CompSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelKumNewCompSpongeSP27(unsigned int numberOfThreads, 
-									       doubflo s9,
+									       real s9,
 									       unsigned int* bcMatD,
 									       unsigned int* neighborX,
 									       unsigned int* neighborY,
 									       unsigned int* neighborZ,
-									       doubflo* coordX,
-									       doubflo* coordY,
-									       doubflo* coordZ,
-									       doubflo* DD,
+									       real* coordX,
+									       real* coordY,
+									       real* coordZ,
+									       real* DD,
 									       int size_Mat,
 									       bool EvenOrOdd)
 {
@@ -586,17 +586,17 @@ extern "C" void KernelKumNewCompSpongeSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelKum1hSP27(    unsigned int numberOfThreads, 
-									doubflo omega,
-									doubflo deltaPhi,
-									doubflo angularVelocity,
+									real omega,
+									real deltaPhi,
+									real angularVelocity,
 									unsigned int* bcMatD,
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
-									doubflo* coordX,
-									doubflo* coordY,
-									doubflo* coordZ,
-									doubflo* DDStart,
+									real* coordX,
+									real* coordY,
+									real* coordZ,
+									real* DDStart,
 									int size_Mat,
 									bool EvenOrOdd)
 {
@@ -632,12 +632,12 @@ extern "C" void KernelKum1hSP27(    unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelCascadeSP27(  unsigned int numberOfThreads, 
-									doubflo s9,
+									real s9,
 									unsigned int* bcMatD,
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
-									doubflo* DD,
+									real* DD,
 									int size_Mat,
 									bool EvenOrOdd)
 {
@@ -668,12 +668,12 @@ extern "C" void KernelCascadeSP27(  unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelCascadeCompSP27(  unsigned int numberOfThreads, 
-										doubflo s9,
+										real s9,
 										unsigned int* bcMatD,
 										unsigned int* neighborX,
 										unsigned int* neighborY,
 										unsigned int* neighborZ,
-										doubflo* DD,
+										real* DD,
 										int size_Mat,
 										bool EvenOrOdd)
 {
@@ -704,12 +704,12 @@ extern "C" void KernelCascadeCompSP27(  unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelKumNewSP27(   unsigned int numberOfThreads, 
-									doubflo s9,
+									real s9,
 									unsigned int* bcMatD,
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
-									doubflo* DD,
+									real* DD,
 									int size_Mat,
 									bool EvenOrOdd)
 {
@@ -740,15 +740,15 @@ extern "C" void KernelKumNewSP27(   unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelKumNewCompBulkSP27(unsigned int numberOfThreads, 
-										 doubflo s9,
+										 real s9,
 										 unsigned int* bcMatD,
 										 unsigned int* neighborX,
 										 unsigned int* neighborY,
 										 unsigned int* neighborZ,
-										 doubflo* DD,
+										 real* DD,
 										 int size_Mat,
 										 int level,
-										 doubflo* forces,
+										 real* forces,
 										 bool EvenOrOdd)
 {
 	int Grid = (size_Mat / numberOfThreads)+1;
@@ -780,16 +780,16 @@ extern "C" void KernelKumNewCompBulkSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelKumNewCompSP27(unsigned int numberOfThreads, 
-									doubflo s9,
+									real s9,
 									unsigned int* bcMatD,
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
-									doubflo* DD,
+									real* DD,
 									int size_Mat,
 									int size_Array,
 									int level,
-									doubflo* forces,
+									real* forces,
 									bool EvenOrOdd)
 {
 	//int Grid = size_Array / numberOfThreads;
@@ -825,15 +825,15 @@ extern "C" void KernelKumNewCompSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelKumIsoTestSP27(unsigned int numberOfThreads, 
-									 doubflo s9,
+									 real s9,
 									 unsigned int* bcMatD,
 									 unsigned int* neighborX,
 									 unsigned int* neighborY,
 									 unsigned int* neighborZ,
-									 doubflo* DD,
-									 doubflo* dxxUx,
-									 doubflo* dyyUy,
-									 doubflo* dzzUz,
+									 real* DD,
+									 real* dxxUx,
+									 real* dyyUy,
+									 real* dzzUz,
 									 int size_Mat,
 									 bool EvenOrOdd)
 {
@@ -867,12 +867,12 @@ extern "C" void KernelKumIsoTestSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelKumCompSP27(  unsigned int numberOfThreads, 
-									doubflo s9,
+									real s9,
 									unsigned int* bcMatD,
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
-									doubflo* DD,
+									real* DD,
 									int size_Mat,
 									bool EvenOrOdd)
 {
@@ -903,21 +903,21 @@ extern "C" void KernelKumCompSP27(  unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelWaleCumOneCompSP27(unsigned int numberOfThreads,
-										 doubflo s9,
+										 real s9,
 										 unsigned int* bcMatD,
 										 unsigned int* neighborX,
 										 unsigned int* neighborY,
 										 unsigned int* neighborZ,
 										 unsigned int* neighborWSB,
-										 doubflo* veloX,
-										 doubflo* veloY,
-										 doubflo* veloZ,
-										 doubflo* DD,
-										 doubflo* turbulentViscosity,
+										 real* veloX,
+										 real* veloY,
+										 real* veloZ,
+										 real* DD,
+										 real* turbulentViscosity,
 										 int size_Mat,
 										 int size_Array,
 										 int level,
-										 doubflo* forces,
+										 real* forces,
 										 bool EvenOrOdd)
 {
 	//int Grid = size_Array / numberOfThreads;
@@ -958,17 +958,17 @@ extern "C" void KernelWaleCumOneCompSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelPMCumOneCompSP27(unsigned int numberOfThreads, 
-									   doubflo omega,
+									   real omega,
 									   unsigned int* neighborX,
 									   unsigned int* neighborY,
 									   unsigned int* neighborZ,
-									   doubflo* DD,
+									   real* DD,
 									   int size_Mat,
 									   int level,
-									   doubflo* forces,
-									   doubflo porosity,
-									   doubflo darcy,
-									   doubflo forchheimer,
+									   real* forces,
+									   real porosity,
+									   real darcy,
+									   real forchheimer,
 									   unsigned int sizeOfPorousMedia,
 									   unsigned int* nodeIdsPorousMedia, 
 									   bool EvenOrOdd)
@@ -1006,21 +1006,21 @@ extern "C" void KernelPMCumOneCompSP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelWaleCumAA2016CompSP27( unsigned int numberOfThreads,
-											 doubflo s9,
+											 real s9,
 											 unsigned int* bcMatD,
 											 unsigned int* neighborX,
 											 unsigned int* neighborY,
 											 unsigned int* neighborZ,
 											 unsigned int* neighborWSB,
-											 doubflo* veloX,
-											 doubflo* veloY,
-											 doubflo* veloZ,
-											 doubflo* DD,
-											 doubflo* turbulentViscosity,
+											 real* veloX,
+											 real* veloY,
+											 real* veloZ,
+											 real* DD,
+											 real* turbulentViscosity,
 											 int size_Mat,
 											 int size_Array,
 											 int level,
-											 doubflo* forces,
+											 real* forces,
 											 bool EvenOrOdd)
 {
 	//int Grid = size_Array / numberOfThreads;
@@ -1061,13 +1061,13 @@ extern "C" void KernelWaleCumAA2016CompSP27( unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelThS7(unsigned int numberOfThreads, 
-                           doubflo diffusivity,
+                           real diffusivity,
                            unsigned int* bcMatD,
                            unsigned int* neighborX,
                            unsigned int* neighborY,
                            unsigned int* neighborZ,
-                           doubflo* DD,
-                           doubflo* DD7,
+                           real* DD,
+                           real* DD7,
                            int size_Mat,
                            bool EvenOrOdd)
 {
@@ -1099,13 +1099,13 @@ extern "C" void KernelThS7(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelThS27(  unsigned int numberOfThreads, 
-                              doubflo diffusivity,
+                              real diffusivity,
                               unsigned int* bcMatD,
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
-                              doubflo* DD,
-                              doubflo* DD27,
+                              real* DD,
+                              real* DD27,
                               int size_Mat,
                               bool EvenOrOdd)
 {
@@ -1137,13 +1137,13 @@ extern "C" void KernelThS27(  unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelADincomp7(   unsigned int numberOfThreads, 
-								   doubflo diffusivity,
+								   real diffusivity,
 								   unsigned int* bcMatD,
 								   unsigned int* neighborX,
 								   unsigned int* neighborY,
 								   unsigned int* neighborZ,
-								   doubflo* DD,
-								   doubflo* DD7,
+								   real* DD,
+								   real* DD7,
 								   int size_Mat,
 								   bool EvenOrOdd)
 {
@@ -1175,13 +1175,13 @@ extern "C" void KernelADincomp7(   unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void KernelADincomp27( unsigned int numberOfThreads, 
-								  doubflo diffusivity,
+								  real diffusivity,
 								  unsigned int* bcMatD,
 								  unsigned int* neighborX,
 								  unsigned int* neighborY,
 								  unsigned int* neighborZ,
-								  doubflo* DD,
-								  doubflo* DD27,
+								  real* DD,
+								  real* DD27,
 								  int size_Mat,
 								  bool EvenOrOdd)
 {
@@ -1214,17 +1214,17 @@ extern "C" void KernelADincomp27( unsigned int numberOfThreads,
 //////////////////////////////////////////////////////////////////////////
 extern "C" void Init27( int myid,
                         int numprocs,
-                        doubflo u0,
+                        real u0,
                         unsigned int* geoD,
                         unsigned int* neighborX,
                         unsigned int* neighborY,
                         unsigned int* neighborZ,
-                        doubflo* vParab,
+                        real* vParab,
                         unsigned int size_Mat,
                         unsigned int grid_nx, 
                         unsigned int grid_ny, 
                         unsigned int grid_nz, 
-                        doubflo* DD,
+                        real* DD,
                         int level,
                         int maxlevel)
 { 
@@ -1254,12 +1254,12 @@ extern "C" void InitF3(     unsigned int numberOfThreads,
                             unsigned int* neighborY,
                             unsigned int* neighborZ,
                             unsigned int* geoD,
-                            doubflo* rho,
-                            doubflo* ux,
-                            doubflo* uy,
-                            doubflo* uz,
+                            real* rho,
+                            real* ux,
+                            real* uy,
+                            real* uz,
                             unsigned int size_Mat,
-                            doubflo* G6,
+                            real* G6,
                             bool EvenOrOdd)
 {
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1296,12 +1296,12 @@ extern "C" void InitSP27(   unsigned int numberOfThreads,
                             unsigned int* neighborY,
                             unsigned int* neighborZ,
                             unsigned int* geoD,
-                            doubflo* rho,
-                            doubflo* ux,
-                            doubflo* uy,
-                            doubflo* uz,
+                            real* rho,
+                            real* ux,
+                            real* uy,
+                            real* uz,
                             unsigned int size_Mat,
-                            doubflo* DD,
+                            real* DD,
                             bool EvenOrOdd)
 {
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1338,12 +1338,12 @@ extern "C" void InitCompSP27(   unsigned int numberOfThreads,
 								unsigned int* neighborY,
 								unsigned int* neighborZ,
 								unsigned int* geoD,
-								doubflo* rho,
-								doubflo* ux,
-								doubflo* uy,
-								doubflo* uz,
+								real* rho,
+								real* ux,
+								real* uy,
+								real* uz,
 								unsigned int size_Mat,
-								doubflo* DD,
+								real* DD,
 								bool EvenOrOdd)
 {
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1380,12 +1380,12 @@ extern "C" void InitThS7(     unsigned int numberOfThreads,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
                               unsigned int* geoD,
-                              doubflo* Conc,
-                              doubflo* ux,
-                              doubflo* uy,
-                              doubflo* uz,
+                              real* Conc,
+                              real* ux,
+                              real* uy,
+                              real* uz,
                               unsigned int size_Mat,
-                              doubflo* DD7,
+                              real* DD7,
                               bool EvenOrOdd)
 {
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1422,12 +1422,12 @@ extern "C" void InitThS27( unsigned int numberOfThreads,
                            unsigned int* neighborY,
                            unsigned int* neighborZ,
                            unsigned int* geoD,
-                           doubflo* Conc,
-                           doubflo* ux,
-                           doubflo* uy,
-                           doubflo* uz,
+                           real* Conc,
+                           real* ux,
+                           real* uy,
+                           real* uz,
                            unsigned int size_Mat,
-                           doubflo* DD27,
+                           real* DD27,
                            bool EvenOrOdd)
 {
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1464,12 +1464,12 @@ extern "C" void InitIncompAD7(unsigned int numberOfThreads,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
                               unsigned int* geoD,
-                              doubflo* Conc,
-                              doubflo* ux,
-                              doubflo* uy,
-                              doubflo* uz,
+                              real* Conc,
+                              real* ux,
+                              real* uy,
+                              real* uz,
                               unsigned int size_Mat,
-                              doubflo* DD7,
+                              real* DD7,
                               bool EvenOrOdd)
 {
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1506,12 +1506,12 @@ extern "C" void InitIncompAD27(unsigned int numberOfThreads,
 							   unsigned int* neighborY,
 							   unsigned int* neighborZ,
 							   unsigned int* geoD,
-							   doubflo* Conc,
-							   doubflo* ux,
-							   doubflo* uy,
-							   doubflo* uz,
+							   real* Conc,
+							   real* ux,
+							   real* uy,
+							   real* uz,
 							   unsigned int size_Mat,
-							   doubflo* DD27,
+							   real* DD27,
 							   bool EvenOrOdd)
 {
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1543,10 +1543,10 @@ extern "C" void InitIncompAD27(unsigned int numberOfThreads,
       getLastCudaError("LBInitIncompAD27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void CalcMac27( doubflo* vxD,
-                           doubflo* vyD,
-                           doubflo* vzD,
-                           doubflo* rhoD,
+extern "C" void CalcMac27( real* vxD,
+                           real* vyD,
+                           real* vzD,
+                           real* rhoD,
                            unsigned int* geoD,
                            unsigned int* neighborX,
                            unsigned int* neighborY,
@@ -1555,7 +1555,7 @@ extern "C" void CalcMac27( doubflo* vxD,
                            unsigned int grid_nx, 
                            unsigned int grid_ny, 
                            unsigned int grid_nz, 
-                           doubflo* DD,
+                           real* DD,
                            bool evenOrOdd)
 { 
    dim3 threads       ( grid_nx, 1, 1 );
@@ -1575,18 +1575,18 @@ extern "C" void CalcMac27( doubflo* vxD,
       getLastCudaError("LBCalcMac27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void CalcMacSP27( doubflo* vxD,
-                             doubflo* vyD,
-                             doubflo* vzD,
-                             doubflo* rhoD,
-                             doubflo* pressD,
+extern "C" void CalcMacSP27( real* vxD,
+                             real* vyD,
+                             real* vzD,
+                             real* rhoD,
+                             real* pressD,
                              unsigned int* geoD,
                              unsigned int* neighborX,
                              unsigned int* neighborY,
                              unsigned int* neighborZ,
                              unsigned int size_Mat,
                              unsigned int numberOfThreads, 
-                             doubflo* DD,
+                             real* DD,
                              bool evenOrOdd)
 { 
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1619,18 +1619,18 @@ extern "C" void CalcMacSP27( doubflo* vxD,
       getLastCudaError("LBCalcMacSP27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void CalcMacCompSP27( doubflo* vxD,
-								 doubflo* vyD,
-								 doubflo* vzD,
-								 doubflo* rhoD,
-								 doubflo* pressD,
+extern "C" void CalcMacCompSP27( real* vxD,
+								 real* vyD,
+								 real* vzD,
+								 real* rhoD,
+								 real* pressD,
 								 unsigned int* geoD,
 								 unsigned int* neighborX,
 								 unsigned int* neighborY,
 								 unsigned int* neighborZ,
 								 unsigned int size_Mat,
 								 unsigned int numberOfThreads, 
-								 doubflo* DD,
+								 real* DD,
 								 bool evenOrOdd)
 { 
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1663,14 +1663,14 @@ extern "C" void CalcMacCompSP27( doubflo* vxD,
       getLastCudaError("LBCalcMacSP27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void CalcMacThS7(  doubflo* Conc,
+extern "C" void CalcMacThS7(  real* Conc,
                               unsigned int* geoD,
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
                               unsigned int size_Mat,
                               unsigned int numberOfThreads, 
-                              doubflo* DD7,
+                              real* DD7,
                               bool evenOrOdd)
 { 
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1699,7 +1699,7 @@ extern "C" void CalcMacThS7(  doubflo* Conc,
       getLastCudaError("LBCalcMacThS7 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void PlaneConcThS7(doubflo* Conc,
+extern "C" void PlaneConcThS7(real* Conc,
 							  int* kPC,
 							  unsigned int numberOfPointskPC,
 							  unsigned int* geoD,
@@ -1708,7 +1708,7 @@ extern "C" void PlaneConcThS7(doubflo* Conc,
 							  unsigned int* neighborZ,
 							  unsigned int size_Mat,
                               unsigned int numberOfThreads, 
-							  doubflo* DD7,
+							  real* DD7,
 							  bool evenOrOdd)
 { 
    int Grid = (numberOfPointskPC / numberOfThreads)+1;
@@ -1739,7 +1739,7 @@ extern "C" void PlaneConcThS7(doubflo* Conc,
       getLastCudaError("GetPlaneConcThS7 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void PlaneConcThS27(doubflo* Conc,
+extern "C" void PlaneConcThS27(real* Conc,
 							   int* kPC,
 							   unsigned int numberOfPointskPC,
 							   unsigned int* geoD,
@@ -1748,7 +1748,7 @@ extern "C" void PlaneConcThS27(doubflo* Conc,
 							   unsigned int* neighborZ,
 							   unsigned int size_Mat,
                                unsigned int numberOfThreads, 
-							   doubflo* DD27,
+							   real* DD27,
 							   bool evenOrOdd)
 { 
    int Grid = (numberOfPointskPC / numberOfThreads)+1;
@@ -1779,14 +1779,14 @@ extern "C" void PlaneConcThS27(doubflo* Conc,
       getLastCudaError("GetPlaneConcThS27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void CalcMacThS27( doubflo* Conc,
+extern "C" void CalcMacThS27( real* Conc,
                               unsigned int* geoD,
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
                               unsigned int size_Mat,
                               unsigned int numberOfThreads, 
-                              doubflo* DD27,
+                              real* DD27,
                               bool evenOrOdd)
 { 
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1815,18 +1815,18 @@ extern "C" void CalcMacThS27( doubflo* Conc,
       getLastCudaError("LBCalcMacThS27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void CalcMedSP27(  doubflo* vxD,
-                              doubflo* vyD,
-                              doubflo* vzD,
-                              doubflo* rhoD,
-                              doubflo* pressD,
+extern "C" void CalcMedSP27(  real* vxD,
+                              real* vyD,
+                              real* vzD,
+                              real* rhoD,
+                              real* pressD,
                               unsigned int* geoD,
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
                               unsigned int size_Mat,
                               unsigned int numberOfThreads, 
-                              doubflo* DD,
+                              real* DD,
                               bool evenOrOdd)
 { 
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1859,18 +1859,18 @@ extern "C" void CalcMedSP27(  doubflo* vxD,
       getLastCudaError("LBCalcMedSP27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void CalcMedCompSP27(  doubflo* vxD,
-								  doubflo* vyD,
-								  doubflo* vzD,
-								  doubflo* rhoD,
-								  doubflo* pressD,
+extern "C" void CalcMedCompSP27(  real* vxD,
+								  real* vyD,
+								  real* vzD,
+								  real* rhoD,
+								  real* pressD,
 								  unsigned int* geoD,
 								  unsigned int* neighborX,
 								  unsigned int* neighborY,
 								  unsigned int* neighborZ,
 								  unsigned int size_Mat,
 								  unsigned int numberOfThreads, 
-								  doubflo* DD,
+								  real* DD,
 								  bool evenOrOdd)
 { 
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1903,11 +1903,11 @@ extern "C" void CalcMedCompSP27(  doubflo* vxD,
       getLastCudaError("LBCalcMedSP27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void CalcMacMedSP27(  doubflo* vxD,
-                                 doubflo* vyD,
-                                 doubflo* vzD,
-                                 doubflo* rhoD,
-                                 doubflo* pressD,
+extern "C" void CalcMacMedSP27(  real* vxD,
+                                 real* vyD,
+                                 real* vzD,
+                                 real* rhoD,
+                                 real* pressD,
                                  unsigned int* geoD,
                                  unsigned int* neighborX,
                                  unsigned int* neighborY,
@@ -1947,18 +1947,18 @@ extern "C" void CalcMacMedSP27(  doubflo* vxD,
       getLastCudaError("LBCalcMacMedSP27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void Calc2ndMomentsIncompSP27(doubflo* kxyFromfcNEQ,
-										 doubflo* kyzFromfcNEQ,
-										 doubflo* kxzFromfcNEQ,
-										 doubflo* kxxMyyFromfcNEQ,
-										 doubflo* kxxMzzFromfcNEQ,
+extern "C" void Calc2ndMomentsIncompSP27(real* kxyFromfcNEQ,
+										 real* kyzFromfcNEQ,
+										 real* kxzFromfcNEQ,
+										 real* kxxMyyFromfcNEQ,
+										 real* kxxMzzFromfcNEQ,
 										 unsigned int* geoD,
 										 unsigned int* neighborX,
 										 unsigned int* neighborY,
 										 unsigned int* neighborZ,
 										 unsigned int size_Mat,
 										 unsigned int numberOfThreads, 
-										 doubflo* DD,
+										 real* DD,
 										 bool evenOrOdd)
 { 
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -1991,18 +1991,18 @@ extern "C" void Calc2ndMomentsIncompSP27(doubflo* kxyFromfcNEQ,
       getLastCudaError("LBCalc2ndMomentsIncompSP27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void Calc2ndMomentsCompSP27( doubflo* kxyFromfcNEQ,
-										doubflo* kyzFromfcNEQ,
-										doubflo* kxzFromfcNEQ,
-										doubflo* kxxMyyFromfcNEQ,
-										doubflo* kxxMzzFromfcNEQ,
+extern "C" void Calc2ndMomentsCompSP27( real* kxyFromfcNEQ,
+										real* kyzFromfcNEQ,
+										real* kxzFromfcNEQ,
+										real* kxxMyyFromfcNEQ,
+										real* kxxMzzFromfcNEQ,
 										unsigned int* geoD,
 										unsigned int* neighborX,
 										unsigned int* neighborY,
 										unsigned int* neighborZ,
 										unsigned int size_Mat,
 										unsigned int numberOfThreads, 
-										doubflo* DD,
+										real* DD,
 										bool evenOrOdd)
 { 
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -2035,20 +2035,20 @@ extern "C" void Calc2ndMomentsCompSP27( doubflo* kxyFromfcNEQ,
       getLastCudaError("LBCalc2ndMomentsCompSP27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void Calc3rdMomentsIncompSP27(doubflo* CUMbbb,
-										 doubflo* CUMabc,
-										 doubflo* CUMbac,
-										 doubflo* CUMbca,
-										 doubflo* CUMcba,
-										 doubflo* CUMacb,
-										 doubflo* CUMcab,
+extern "C" void Calc3rdMomentsIncompSP27(real* CUMbbb,
+										 real* CUMabc,
+										 real* CUMbac,
+										 real* CUMbca,
+										 real* CUMcba,
+										 real* CUMacb,
+										 real* CUMcab,
 										 unsigned int* geoD,
 										 unsigned int* neighborX,
 										 unsigned int* neighborY,
 										 unsigned int* neighborZ,
 										 unsigned int size_Mat,
 										 unsigned int numberOfThreads, 
-										 doubflo* DD,
+										 real* DD,
 										 bool evenOrOdd)
 { 
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -2083,20 +2083,20 @@ extern "C" void Calc3rdMomentsIncompSP27(doubflo* CUMbbb,
       getLastCudaError("LBCalc3rdMomentsIncompSP27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void Calc3rdMomentsCompSP27( doubflo* CUMbbb,
-										doubflo* CUMabc,
-										doubflo* CUMbac,
-										doubflo* CUMbca,
-										doubflo* CUMcba,
-										doubflo* CUMacb,
-										doubflo* CUMcab,
+extern "C" void Calc3rdMomentsCompSP27( real* CUMbbb,
+										real* CUMabc,
+										real* CUMbac,
+										real* CUMbca,
+										real* CUMcba,
+										real* CUMacb,
+										real* CUMcab,
 										unsigned int* geoD,
 										unsigned int* neighborX,
 										unsigned int* neighborY,
 										unsigned int* neighborZ,
 										unsigned int size_Mat,
 										unsigned int numberOfThreads, 
-										doubflo* DD,
+										real* DD,
 										bool evenOrOdd)
 { 
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -2131,23 +2131,23 @@ extern "C" void Calc3rdMomentsCompSP27( doubflo* CUMbbb,
       getLastCudaError("LBCalc3rdMomentsCompSP27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void CalcHigherMomentsIncompSP27(doubflo* CUMcbb,
-											doubflo* CUMbcb,
-											doubflo* CUMbbc,
-											doubflo* CUMcca,
-											doubflo* CUMcac,
-											doubflo* CUMacc,
-											doubflo* CUMbcc,
-											doubflo* CUMcbc,
-											doubflo* CUMccb,
-											doubflo* CUMccc,
+extern "C" void CalcHigherMomentsIncompSP27(real* CUMcbb,
+											real* CUMbcb,
+											real* CUMbbc,
+											real* CUMcca,
+											real* CUMcac,
+											real* CUMacc,
+											real* CUMbcc,
+											real* CUMcbc,
+											real* CUMccb,
+											real* CUMccc,
 											unsigned int* geoD,
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
 											unsigned int size_Mat,
 											unsigned int numberOfThreads, 
-											doubflo* DD,
+											real* DD,
 											bool evenOrOdd)
 { 
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -2185,23 +2185,23 @@ extern "C" void CalcHigherMomentsIncompSP27(doubflo* CUMcbb,
       getLastCudaError("LBCalcHigherMomentsIncompSP27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void CalcHigherMomentsCompSP27(  doubflo* CUMcbb,
-											doubflo* CUMbcb,
-											doubflo* CUMbbc,
-											doubflo* CUMcca,
-											doubflo* CUMcac,
-											doubflo* CUMacc,
-											doubflo* CUMbcc,
-											doubflo* CUMcbc,
-											doubflo* CUMccb,
-											doubflo* CUMccc,
+extern "C" void CalcHigherMomentsCompSP27(  real* CUMcbb,
+											real* CUMbcb,
+											real* CUMbbc,
+											real* CUMcca,
+											real* CUMcac,
+											real* CUMacc,
+											real* CUMbcc,
+											real* CUMcbc,
+											real* CUMccb,
+											real* CUMccc,
 											unsigned int* geoD,
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
 											unsigned int size_Mat,
 											unsigned int numberOfThreads, 
-											doubflo* DD,
+											real* DD,
 											bool evenOrOdd)
 { 
    int Grid = (size_Mat / numberOfThreads)+1;
@@ -2239,10 +2239,10 @@ extern "C" void CalcHigherMomentsCompSP27(  doubflo* CUMcbb,
       getLastCudaError("LBCalcHigherMomentsCompSP27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void LBCalcMeasurePoints27(doubflo* vxMP,
-                                      doubflo* vyMP,
-                                      doubflo* vzMP,
-                                      doubflo* rhoMP,
+extern "C" void LBCalcMeasurePoints27(real* vxMP,
+                                      real* vyMP,
+                                      real* vzMP,
+                                      real* rhoMP,
                                       unsigned int* kMP,
                                       unsigned int numberOfPointskMP,
                                       unsigned int MPClockCycle,
@@ -2252,7 +2252,7 @@ extern "C" void LBCalcMeasurePoints27(doubflo* vxMP,
                                       unsigned int* neighborY,
                                       unsigned int* neighborZ,
                                       unsigned int size_Mat,
-                                      doubflo* DD,
+                                      real* DD,
                                       unsigned int numberOfThreads, 
                                       bool evenOrOdd)
 { 
@@ -2298,7 +2298,7 @@ extern "C" void BcPress27( int nx,
                            unsigned int* neighborX,
                            unsigned int* neighborY,
                            unsigned int* neighborZ,
-                           doubflo* DD, 
+                           real* DD, 
                            unsigned int size_Mat, 
                            bool evenOrOdd) 
 {
@@ -2328,11 +2328,11 @@ extern "C" void BcVel27(int nx,
                         unsigned int* neighborX,
                         unsigned int* neighborY,
                         unsigned int* neighborZ,
-                        doubflo* DD, 
+                        real* DD, 
                         unsigned int size_Mat, 
                         bool evenOrOdd, 
-                        doubflo u0x, 
-                        doubflo om)
+                        real u0x, 
+                        real om)
 {
    dim3 threads       ( grid_nx, 1, 1 );
    dim3 grid          ( grid_ny, 1 );
@@ -2358,16 +2358,16 @@ extern "C" void BcVel27(int nx,
 extern "C" void QADPressDev7( unsigned int numberOfThreads,
                               int nx,
                               int ny,
-                              doubflo* DD, 
-                              doubflo* DD7,
-                              doubflo* temp,
-                              doubflo* velo,
-                              doubflo diffusivity,
+                              real* DD, 
+                              real* DD7,
+                              real* temp,
+                              real* velo,
+                              real diffusivity,
                               int* k_Q, 
-                              doubflo* QQ,
+                              real* QQ,
                               unsigned int sizeQ,
                               unsigned int kQ, 
-                              doubflo om1, 
+                              real om1, 
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
@@ -2412,16 +2412,16 @@ extern "C" void QADPressDev7( unsigned int numberOfThreads,
 extern "C" void QADPressDev27(unsigned int numberOfThreads,
                               int nx,
                               int ny,
-                              doubflo* DD, 
-                              doubflo* DD27,
-                              doubflo* temp,
-                              doubflo* velo,
-                              doubflo diffusivity,
+                              real* DD, 
+                              real* DD27,
+                              real* temp,
+                              real* velo,
+                              real diffusivity,
                               int* k_Q, 
-                              doubflo* QQ,
+                              real* QQ,
                               unsigned int sizeQ,
                               unsigned int kQ, 
-                              doubflo om1, 
+                              real om1, 
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
@@ -2466,16 +2466,16 @@ extern "C" void QADPressDev27(unsigned int numberOfThreads,
 extern "C" void QADVelDev7(unsigned int numberOfThreads,
                            int nx,
                            int ny,
-                           doubflo* DD, 
-                           doubflo* DD7,
-                           doubflo* temp,
-                           doubflo* velo,
-                           doubflo diffusivity,
+                           real* DD, 
+                           real* DD7,
+                           real* temp,
+                           real* velo,
+                           real diffusivity,
                            int* k_Q, 
-                           doubflo* QQ,
+                           real* QQ,
                            unsigned int sizeQ,
                            unsigned int kQ, 
-                           doubflo om1, 
+                           real om1, 
                            unsigned int* neighborX,
                            unsigned int* neighborY,
                            unsigned int* neighborZ,
@@ -2520,16 +2520,16 @@ extern "C" void QADVelDev7(unsigned int numberOfThreads,
 extern "C" void QADVelDev27(  unsigned int numberOfThreads,
                               int nx,
                               int ny,
-                              doubflo* DD, 
-                              doubflo* DD27,
-                              doubflo* temp,
-                              doubflo* velo,
-                              doubflo diffusivity,
+                              real* DD, 
+                              real* DD27,
+                              real* temp,
+                              real* velo,
+                              real diffusivity,
                               int* k_Q, 
-                              doubflo* QQ,
+                              real* QQ,
                               unsigned int sizeQ,
                               unsigned int kQ, 
-                              doubflo om1, 
+                              real om1, 
                               unsigned int* neighborX,
                               unsigned int* neighborY,
                               unsigned int* neighborZ,
@@ -2574,15 +2574,15 @@ extern "C" void QADVelDev27(  unsigned int numberOfThreads,
 extern "C" void QADDev7(unsigned int numberOfThreads,
                         int nx,
                         int ny,
-                        doubflo* DD, 
-                        doubflo* DD7,
-                        doubflo* temp,
-                        doubflo diffusivity,
+                        real* DD, 
+                        real* DD7,
+                        real* temp,
+                        real diffusivity,
                         int* k_Q, 
-                        doubflo* QQ,
+                        real* QQ,
                         unsigned int sizeQ,
                         unsigned int kQ, 
-                        doubflo om1, 
+                        real om1, 
                         unsigned int* neighborX,
                         unsigned int* neighborY,
                         unsigned int* neighborZ,
@@ -2626,15 +2626,15 @@ extern "C" void QADDev7(unsigned int numberOfThreads,
 extern "C" void QADDirichletDev27( unsigned int numberOfThreads,
 								   int nx,
 								   int ny,
-								   doubflo* DD, 
-								   doubflo* DD27,
-								   doubflo* temp,
-								   doubflo diffusivity,
+								   real* DD, 
+								   real* DD27,
+								   real* temp,
+								   real diffusivity,
 								   int* k_Q, 
-								   doubflo* QQ,
+								   real* QQ,
 								   unsigned int sizeQ,
 								   unsigned int kQ, 
-								   doubflo om1, 
+								   real om1, 
 								   unsigned int* neighborX,
 								   unsigned int* neighborY,
 								   unsigned int* neighborZ,
@@ -2678,15 +2678,15 @@ extern "C" void QADDirichletDev27( unsigned int numberOfThreads,
 extern "C" void QADBBDev27(unsigned int numberOfThreads,
                            int nx,
                            int ny,
-                           doubflo* DD, 
-                           doubflo* DD27,
-                           doubflo* temp,
-                           doubflo diffusivity,
+                           real* DD, 
+                           real* DD27,
+                           real* temp,
+                           real diffusivity,
                            int* k_Q, 
-                           doubflo* QQ,
+                           real* QQ,
                            unsigned int sizeQ,
                            unsigned int kQ, 
-                           doubflo om1, 
+                           real om1, 
                            unsigned int* neighborX,
                            unsigned int* neighborY,
                            unsigned int* neighborZ,
@@ -2730,15 +2730,15 @@ extern "C" void QADBBDev27(unsigned int numberOfThreads,
 extern "C" void QNoSlipADincompDev7(unsigned int numberOfThreads,
 									int nx,
 									int ny,
-									doubflo* DD, 
-									doubflo* DD7,
-									doubflo* temp,
-									doubflo diffusivity,
+									real* DD, 
+									real* DD7,
+									real* temp,
+									real diffusivity,
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									unsigned int sizeQ,
 									unsigned int kQ, 
-									doubflo om1, 
+									real om1, 
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -2782,15 +2782,15 @@ extern "C" void QNoSlipADincompDev7(unsigned int numberOfThreads,
 extern "C" void QNoSlipADincompDev27(  unsigned int numberOfThreads,
 									   int nx,
 									   int ny,
-									   doubflo* DD, 
-									   doubflo* DD27,
-									   doubflo* temp,
-									   doubflo diffusivity,
+									   real* DD, 
+									   real* DD27,
+									   real* temp,
+									   real diffusivity,
 									   int* k_Q, 
-									   doubflo* QQ,
+									   real* QQ,
 									   unsigned int sizeQ,
 									   unsigned int kQ, 
-									   doubflo om1, 
+									   real om1, 
 									   unsigned int* neighborX,
 									   unsigned int* neighborY,
 									   unsigned int* neighborZ,
@@ -2834,16 +2834,16 @@ extern "C" void QNoSlipADincompDev27(  unsigned int numberOfThreads,
 extern "C" void QADVeloIncompDev7( unsigned int numberOfThreads,
 								   int nx,
 								   int ny,
-								   doubflo* DD, 
-								   doubflo* DD7,
-								   doubflo* temp,
-								   doubflo* velo,
-								   doubflo diffusivity,
+								   real* DD, 
+								   real* DD7,
+								   real* temp,
+								   real* velo,
+								   real diffusivity,
 								   int* k_Q, 
-								   doubflo* QQ,
+								   real* QQ,
 								   unsigned int sizeQ,
 								   unsigned int kQ, 
-								   doubflo om1, 
+								   real om1, 
 								   unsigned int* neighborX,
 								   unsigned int* neighborY,
 								   unsigned int* neighborZ,
@@ -2888,16 +2888,16 @@ extern "C" void QADVeloIncompDev7( unsigned int numberOfThreads,
 extern "C" void QADVeloIncompDev27(   unsigned int numberOfThreads,
 									  int nx,
 									  int ny,
-									  doubflo* DD, 
-									  doubflo* DD27,
-									  doubflo* temp,
-									  doubflo* velo,
-									  doubflo diffusivity,
+									  real* DD, 
+									  real* DD27,
+									  real* temp,
+									  real* velo,
+									  real diffusivity,
 									  int* k_Q, 
-									  doubflo* QQ,
+									  real* QQ,
 									  unsigned int sizeQ,
 									  unsigned int kQ, 
-									  doubflo om1, 
+									  real om1, 
 									  unsigned int* neighborX,
 									  unsigned int* neighborY,
 									  unsigned int* neighborZ,
@@ -2942,16 +2942,16 @@ extern "C" void QADVeloIncompDev27(   unsigned int numberOfThreads,
 extern "C" void QADPressIncompDev7(   unsigned int numberOfThreads,
 									  int nx,
 									  int ny,
-									  doubflo* DD, 
-									  doubflo* DD7,
-									  doubflo* temp,
-									  doubflo* velo,
-									  doubflo diffusivity,
+									  real* DD, 
+									  real* DD7,
+									  real* temp,
+									  real* velo,
+									  real diffusivity,
 									  int* k_Q, 
-									  doubflo* QQ,
+									  real* QQ,
 									  unsigned int sizeQ,
 									  unsigned int kQ, 
-									  doubflo om1, 
+									  real om1, 
 									  unsigned int* neighborX,
 									  unsigned int* neighborY,
 									  unsigned int* neighborZ,
@@ -2996,16 +2996,16 @@ extern "C" void QADPressIncompDev7(   unsigned int numberOfThreads,
 extern "C" void QADPressIncompDev27(  unsigned int numberOfThreads,
 									  int nx,
 									  int ny,
-									  doubflo* DD, 
-									  doubflo* DD27,
-									  doubflo* temp,
-									  doubflo* velo,
-									  doubflo diffusivity,
+									  real* DD, 
+									  real* DD27,
+									  real* temp,
+									  real* velo,
+									  real diffusivity,
 									  int* k_Q, 
-									  doubflo* QQ,
+									  real* QQ,
 									  unsigned int sizeQ,
 									  unsigned int kQ, 
-									  doubflo om1, 
+									  real om1, 
 									  unsigned int* neighborX,
 									  unsigned int* neighborY,
 									  unsigned int* neighborZ,
@@ -3050,12 +3050,12 @@ extern "C" void QADPressIncompDev27(  unsigned int numberOfThreads,
 extern "C" void QDev27( unsigned int numberOfThreads,
                         int nx,
                         int ny,
-                        doubflo* DD, 
+                        real* DD, 
                         int* k_Q, 
-                        doubflo* QQ,
+                        real* QQ,
                         unsigned int sizeQ,
                         unsigned int kQ, 
-                        doubflo om1, 
+                        real om1, 
                         unsigned int* neighborX,
                         unsigned int* neighborY,
                         unsigned int* neighborZ,
@@ -3096,12 +3096,12 @@ extern "C" void QDev27( unsigned int numberOfThreads,
 extern "C" void QDevComp27( unsigned int numberOfThreads,
 							int nx,
 							int ny,
-							doubflo* DD, 
+							real* DD, 
 							int* k_Q, 
-							doubflo* QQ,
+							real* QQ,
 							unsigned int sizeQ,
 							unsigned int kQ, 
-							doubflo om1, 
+							real om1, 
 							unsigned int* neighborX,
 							unsigned int* neighborY,
 							unsigned int* neighborZ,
@@ -3142,12 +3142,12 @@ extern "C" void QDevComp27( unsigned int numberOfThreads,
 extern "C" void QDevCompThinWallsPartOne27( unsigned int numberOfThreads,
 											int nx,
 											int ny,
-											doubflo* DD, 
+											real* DD, 
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											unsigned int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
@@ -3188,12 +3188,12 @@ extern "C" void QDevCompThinWallsPartOne27( unsigned int numberOfThreads,
 extern "C" void QDevCompThinWallsPartTwo27( unsigned int numberOfThreads,
 											int nx,
 											int ny,
-											doubflo* DD, 
+											real* DD, 
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											unsigned int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* geom,
 											unsigned int* neighborX,
 											unsigned int* neighborY,
@@ -3238,12 +3238,12 @@ extern "C" void QDevCompThinWallsPartTwo27( unsigned int numberOfThreads,
 extern "C" void QDev3rdMomentsComp27(   unsigned int numberOfThreads,
 										int nx,
 										int ny,
-										doubflo* DD, 
+										real* DD, 
 										int* k_Q, 
-										doubflo* QQ,
+										real* QQ,
 										unsigned int sizeQ,
 										unsigned int kQ, 
-										doubflo om1, 
+										real om1, 
 										unsigned int* neighborX,
 										unsigned int* neighborY,
 										unsigned int* neighborZ,
@@ -3284,12 +3284,12 @@ extern "C" void QDev3rdMomentsComp27(   unsigned int numberOfThreads,
 extern "C" void QDevIncompHighNu27( unsigned int numberOfThreads,
 									int nx,
 									int ny,
-									doubflo* DD, 
+									real* DD, 
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									unsigned int sizeQ,
 									unsigned int kQ, 
-									doubflo om1, 
+									real om1, 
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -3330,12 +3330,12 @@ extern "C" void QDevIncompHighNu27( unsigned int numberOfThreads,
 extern "C" void QDevCompHighNu27(   unsigned int numberOfThreads,
 									int nx,
 									int ny,
-									doubflo* DD, 
+									real* DD, 
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									unsigned int sizeQ,
 									unsigned int kQ, 
-									doubflo om1, 
+									real om1, 
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -3374,15 +3374,15 @@ extern "C" void QDevCompHighNu27(   unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QVelDevicePlainBB27(unsigned int numberOfThreads,
-									doubflo* vx,
-									doubflo* vy,
-									doubflo* vz,
-									doubflo* DD,
+									real* vx,
+									real* vy,
+									real* vz,
+									real* DD,
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									unsigned int sizeQ,
 									int kQ, 
-									doubflo om1, 
+									real om1, 
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -3422,15 +3422,15 @@ extern "C" void QVelDevicePlainBB27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QVelDeviceCouhette27(unsigned int numberOfThreads,
-									doubflo* vx,
-									doubflo* vy,
-									doubflo* vz,
-									doubflo* DD,
+									real* vx,
+									real* vy,
+									real* vz,
+									real* DD,
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									unsigned int sizeQ,
 									int kQ, 
-									doubflo om1, 
+									real om1, 
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -3472,23 +3472,23 @@ extern "C" void QVelDeviceCouhette27(unsigned int numberOfThreads,
 extern "C" void QVelDevice1h27(   unsigned int numberOfThreads,
 								  int nx,
 								  int ny,
-								  doubflo* vx,
-								  doubflo* vy,
-								  doubflo* vz,
-								  doubflo* DD, 
+								  real* vx,
+								  real* vy,
+								  real* vz,
+								  real* DD, 
 								  int* k_Q, 
-								  doubflo* QQ,
+								  real* QQ,
 								  unsigned int sizeQ,
 								  unsigned int kQ, 
-								  doubflo om1, 
-								  doubflo Phi, 
-								  doubflo angularVelocity,
+								  real om1, 
+								  real Phi, 
+								  real angularVelocity,
 								  unsigned int* neighborX,
 								  unsigned int* neighborY,
 								  unsigned int* neighborZ,
-								  doubflo* coordX,
-								  doubflo* coordY,
-								  doubflo* coordZ,
+								  real* coordX,
+								  real* coordY,
+								  real* coordZ,
 								  unsigned int size_Mat, 
 								  bool evenOrOdd)
 {
@@ -3534,15 +3534,15 @@ extern "C" void QVelDevice1h27(   unsigned int numberOfThreads,
 extern "C" void QVelDev27(unsigned int numberOfThreads,
                           int nx,
                           int ny,
-                          doubflo* vx,
-                          doubflo* vy,
-                          doubflo* vz,
-                          doubflo* DD, 
+                          real* vx,
+                          real* vy,
+                          real* vz,
+                          real* DD, 
                           int* k_Q, 
-                          doubflo* QQ,
+                          real* QQ,
                           unsigned int sizeQ,
                           unsigned int kQ, 
-                          doubflo om1, 
+                          real om1, 
                           unsigned int* neighborX,
                           unsigned int* neighborY,
                           unsigned int* neighborZ,
@@ -3586,15 +3586,15 @@ extern "C" void QVelDev27(unsigned int numberOfThreads,
 extern "C" void QVelDevCompPlusSlip27(unsigned int numberOfThreads,
 									  int nx,
 									  int ny,
-									  doubflo* vx,
-									  doubflo* vy,
-									  doubflo* vz,
-									  doubflo* DD, 
+									  real* vx,
+									  real* vy,
+									  real* vz,
+									  real* DD, 
 									  int* k_Q, 
-									  doubflo* QQ,
+									  real* QQ,
 									  unsigned int sizeQ,
 									  unsigned int kQ, 
-									  doubflo om1, 
+									  real om1, 
 									  unsigned int* neighborX,
 									  unsigned int* neighborY,
 									  unsigned int* neighborZ,
@@ -3638,15 +3638,15 @@ extern "C" void QVelDevCompPlusSlip27(unsigned int numberOfThreads,
 extern "C" void QVelDevComp27(unsigned int numberOfThreads,
 							  int nx,
 							  int ny,
-							  doubflo* vx,
-							  doubflo* vy,
-							  doubflo* vz,
-							  doubflo* DD, 
+							  real* vx,
+							  real* vy,
+							  real* vz,
+							  real* DD, 
 							  int* k_Q, 
-							  doubflo* QQ,
+							  real* QQ,
 							  unsigned int sizeQ,
 							  unsigned int kQ, 
-							  doubflo om1, 
+							  real om1, 
 							  unsigned int* neighborX,
 							  unsigned int* neighborY,
 							  unsigned int* neighborZ,
@@ -3690,15 +3690,15 @@ extern "C" void QVelDevComp27(unsigned int numberOfThreads,
 extern "C" void QVelDevCompZeroPress27(   unsigned int numberOfThreads,
 										  int nx,
 										  int ny,
-										  doubflo* vx,
-										  doubflo* vy,
-										  doubflo* vz,
-										  doubflo* DD, 
+										  real* vx,
+										  real* vy,
+										  real* vz,
+										  real* DD, 
 										  int* k_Q, 
-										  doubflo* QQ,
+										  real* QQ,
 										  unsigned int sizeQ,
 										  int kArray, 
-										  doubflo om1, 
+										  real om1, 
 										  unsigned int* neighborX,
 										  unsigned int* neighborY,
 										  unsigned int* neighborZ,
@@ -3744,15 +3744,15 @@ extern "C" void QVelDevCompZeroPress27(   unsigned int numberOfThreads,
 extern "C" void QVelDevIncompHighNu27(unsigned int numberOfThreads,
 									  int nx,
 									  int ny,
-									  doubflo* vx,
-									  doubflo* vy,
-									  doubflo* vz,
-									  doubflo* DD, 
+									  real* vx,
+									  real* vy,
+									  real* vz,
+									  real* DD, 
 									  int* k_Q, 
-									  doubflo* QQ,
+									  real* QQ,
 									  unsigned int sizeQ,
 									  unsigned int kQ, 
-									  doubflo om1, 
+									  real om1, 
 									  unsigned int* neighborX,
 									  unsigned int* neighborY,
 									  unsigned int* neighborZ,
@@ -3796,15 +3796,15 @@ extern "C" void QVelDevIncompHighNu27(unsigned int numberOfThreads,
 extern "C" void QVelDevCompHighNu27(  unsigned int numberOfThreads,
 									  int nx,
 									  int ny,
-									  doubflo* vx,
-									  doubflo* vy,
-									  doubflo* vz,
-									  doubflo* DD, 
+									  real* vx,
+									  real* vy,
+									  real* vz,
+									  real* DD, 
 									  int* k_Q, 
-									  doubflo* QQ,
+									  real* QQ,
 									  unsigned int sizeQ,
 									  unsigned int kQ, 
-									  doubflo om1, 
+									  real om1, 
 									  unsigned int* neighborX,
 									  unsigned int* neighborY,
 									  unsigned int* neighborZ,
@@ -3846,13 +3846,13 @@ extern "C" void QVelDevCompHighNu27(  unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QVeloDevEQ27(unsigned int numberOfThreads,
-							 doubflo* VeloX,
-							 doubflo* VeloY,
-							 doubflo* VeloZ,
-							 doubflo* DD, 
+							 real* VeloX,
+							 real* VeloY,
+							 real* VeloZ,
+							 real* DD, 
 							 int* k_Q, 
 							 int kQ, 
-							 doubflo om1, 
+							 real om1, 
 							 unsigned int* neighborX,
 							 unsigned int* neighborY,
 							 unsigned int* neighborZ,
@@ -3890,11 +3890,11 @@ extern "C" void QVeloDevEQ27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QSlipDev27(unsigned int numberOfThreads,
-                           doubflo* DD, 
+                           real* DD, 
                            int* k_Q, 
-                           doubflo* QQ,
+                           real* QQ,
                            unsigned int sizeQ,
-                           doubflo om1, 
+                           real om1, 
                            unsigned int* neighborX,
                            unsigned int* neighborY,
                            unsigned int* neighborZ,
@@ -3930,11 +3930,11 @@ extern "C" void QSlipDev27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QSlipDevComp27(unsigned int numberOfThreads,
-							   doubflo* DD, 
+							   real* DD, 
 							   int* k_Q, 
-							   doubflo* QQ,
+							   real* QQ,
 							   unsigned int sizeQ,
-							   doubflo om1, 
+							   real om1, 
 							   unsigned int* neighborX,
 							   unsigned int* neighborY,
 							   unsigned int* neighborZ,
@@ -3970,14 +3970,14 @@ extern "C" void QSlipDevComp27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QSlipGeomDevComp27(unsigned int numberOfThreads,
-								   doubflo* DD, 
+								   real* DD, 
 								   int* k_Q, 
-								   doubflo* QQ,
+								   real* QQ,
 								   unsigned int sizeQ,
-								   doubflo om1, 
-								   doubflo* NormalX,
-								   doubflo* NormalY,
-								   doubflo* NormalZ,
+								   real om1, 
+								   real* NormalX,
+								   real* NormalY,
+								   real* NormalZ,
 								   unsigned int* neighborX,
 								   unsigned int* neighborY,
 								   unsigned int* neighborZ,
@@ -4016,14 +4016,14 @@ extern "C" void QSlipGeomDevComp27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QSlipNormDevComp27(unsigned int numberOfThreads,
-								   doubflo* DD, 
+								   real* DD, 
 								   int* k_Q, 
-								   doubflo* QQ,
+								   real* QQ,
 								   unsigned int sizeQ,
-								   doubflo om1, 
-								   doubflo* NormalX,
-								   doubflo* NormalY,
-								   doubflo* NormalZ,
+								   real om1, 
+								   real* NormalX,
+								   real* NormalY,
+								   real* NormalZ,
 								   unsigned int* neighborX,
 								   unsigned int* neighborY,
 								   unsigned int* neighborZ,
@@ -4064,13 +4064,13 @@ extern "C" void QSlipNormDevComp27(unsigned int numberOfThreads,
 extern "C" void QPressDev27(unsigned int numberOfThreads,
                              int nx,
                              int ny,
-                             doubflo* rhoBC,
-                             doubflo* DD, 
+                             real* rhoBC,
+                             real* DD, 
                              int* k_Q, 
-                             doubflo* QQ,
+                             real* QQ,
                              unsigned int sizeQ,
                              unsigned int kQ, 
-                             doubflo om1, 
+                             real om1, 
                              unsigned int* neighborX,
                              unsigned int* neighborY,
                              unsigned int* neighborZ,
@@ -4110,15 +4110,15 @@ extern "C" void QPressDev27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QPressDevAntiBB27(  unsigned int numberOfThreads,
-                                    doubflo* rhoBC,
-									doubflo* vx,
-									doubflo* vy,
-									doubflo* vz,
-									doubflo* DD, 
+                                    real* rhoBC,
+									real* vx,
+									real* vy,
+									real* vz,
+									real* DD, 
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									int kQ, 
-									doubflo om1, 
+									real om1, 
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -4158,11 +4158,11 @@ extern "C" void QPressDevAntiBB27(  unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QPressDevFixBackflow27( unsigned int numberOfThreads,
-                                        doubflo* rhoBC,
-                                        doubflo* DD, 
+                                        real* rhoBC,
+                                        real* DD, 
                                         int* k_Q, 
                                         unsigned int kQ, 
-                                        doubflo om1, 
+                                        real om1, 
                                         unsigned int* neighborX,
                                         unsigned int* neighborY,
                                         unsigned int* neighborZ,
@@ -4198,11 +4198,11 @@ extern "C" void QPressDevFixBackflow27( unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QPressDevDirDepBot27(  unsigned int numberOfThreads,
-                                       doubflo* rhoBC,
-                                       doubflo* DD, 
+                                       real* rhoBC,
+                                       real* DD, 
                                        int* k_Q, 
                                        unsigned int kQ, 
-                                       doubflo om1, 
+                                       real om1, 
                                        unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
@@ -4238,12 +4238,12 @@ extern "C" void QPressDevDirDepBot27(  unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QPressNoRhoDev27(unsigned int numberOfThreads,
-                                 doubflo* rhoBC,
-                                 doubflo* DD, 
+                                 real* rhoBC,
+                                 real* DD, 
                                  int* k_Q, 
                                  int* k_N, 
                                  unsigned int kQ, 
-                                 doubflo om1, 
+                                 real om1, 
                                  unsigned int* neighborX,
                                  unsigned int* neighborY,
                                  unsigned int* neighborZ,
@@ -4280,12 +4280,12 @@ extern "C" void QPressNoRhoDev27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QInflowScaleByPressDev27(unsigned int numberOfThreads,
-										 doubflo* rhoBC,
-										 doubflo* DD, 
+										 real* rhoBC,
+										 real* DD, 
 										 int* k_Q, 
 										 int* k_N, 
 										 unsigned int kQ, 
-										 doubflo om1, 
+										 real om1, 
 										 unsigned int* neighborX,
 										 unsigned int* neighborY,
 										 unsigned int* neighborZ,
@@ -4322,12 +4322,12 @@ extern "C" void QInflowScaleByPressDev27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QPressDevOld27(  unsigned int numberOfThreads,
-                                     doubflo* rhoBC,
-                                     doubflo* DD, 
+                                     real* rhoBC,
+                                     real* DD, 
                                      int* k_Q, 
                                      int* k_N, 
                                      unsigned int kQ, 
-                                     doubflo om1, 
+                                     real om1, 
                                      unsigned int* neighborX,
                                      unsigned int* neighborY,
                                      unsigned int* neighborZ,
@@ -4364,12 +4364,12 @@ extern "C" void QPressDevOld27(  unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QPressDevIncompNEQ27(unsigned int numberOfThreads,
-                                     doubflo* rhoBC,
-                                     doubflo* DD, 
+                                     real* rhoBC,
+                                     real* DD, 
                                      int* k_Q, 
                                      int* k_N, 
                                      unsigned int kQ, 
-                                     doubflo om1, 
+                                     real om1, 
                                      unsigned int* neighborX,
                                      unsigned int* neighborY,
                                      unsigned int* neighborZ,
@@ -4406,12 +4406,12 @@ extern "C" void QPressDevIncompNEQ27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QPressDevNEQ27(  unsigned int numberOfThreads,
-                                     doubflo* rhoBC,
-                                     doubflo* DD, 
+                                     real* rhoBC,
+                                     real* DD, 
                                      int* k_Q, 
                                      int* k_N, 
                                      unsigned int kQ, 
-                                     doubflo om1, 
+                                     real om1, 
                                      unsigned int* neighborX,
                                      unsigned int* neighborY,
                                      unsigned int* neighborZ,
@@ -4448,13 +4448,13 @@ extern "C" void QPressDevNEQ27(  unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QPressDevEQZ27(  unsigned int numberOfThreads,
-                                     doubflo* rhoBC,
-                                     doubflo* DD, 
+                                     real* rhoBC,
+                                     real* DD, 
                                      int* k_Q, 
                                      int* k_N, 
-                                     doubflo* kTestRE, 
+                                     real* kTestRE, 
                                      unsigned int kQ, 
-                                     doubflo om1, 
+                                     real om1, 
                                      unsigned int* neighborX,
                                      unsigned int* neighborY,
                                      unsigned int* neighborZ,
@@ -4492,7 +4492,7 @@ extern "C" void QPressDevEQZ27(  unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QPressDevZero27(unsigned int numberOfThreads,
-                                doubflo* DD, 
+                                real* DD, 
                                 int* k_Q, 
                                 unsigned int kQ, 
                                 unsigned int* neighborX,
@@ -4528,12 +4528,12 @@ extern "C" void QPressDevZero27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QPressDevFake27(     unsigned int numberOfThreads,
-                                     doubflo* rhoBC,
-                                     doubflo* DD, 
+                                     real* rhoBC,
+                                     real* DD, 
                                      int* k_Q, 
                                      int* k_N, 
                                      unsigned int kQ, 
-                                     doubflo om1, 
+                                     real om1, 
                                      unsigned int* neighborX,
                                      unsigned int* neighborY,
                                      unsigned int* neighborZ,
@@ -4572,12 +4572,12 @@ extern "C" void QPressDevFake27(     unsigned int numberOfThreads,
 extern "C" void BBDev27( unsigned int numberOfThreads,
                        int nx,
                        int ny,
-                       doubflo* DD, 
+                       real* DD, 
                        int* k_Q, 
-                       doubflo* QQ,
+                       real* QQ,
                        unsigned int sizeQ,
                        unsigned int kQ, 
-                       doubflo om1, 
+                       real om1, 
                        unsigned int* neighborX,
                        unsigned int* neighborY,
                        unsigned int* neighborZ,
@@ -4616,13 +4616,13 @@ extern "C" void BBDev27( unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void QPressDev27_IntBB(  unsigned int numberOfThreads,
-									doubflo* rho,
-									doubflo* DD, 
+									real* rho,
+									real* DD, 
 									int* k_Q, 
-									doubflo* QQ,
+									real* QQ,
 									unsigned int sizeQ,
 									unsigned int kQ, 
-									doubflo om1, 
+									real om1, 
 									unsigned int* neighborX,
 									unsigned int* neighborY,
 									unsigned int* neighborZ,
@@ -4660,16 +4660,16 @@ extern "C" void QPressDev27_IntBB(  unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void PressSchlaffer27(unsigned int numberOfThreads,
-                                 doubflo* rhoBC,
-                                 doubflo* DD,
-                                 doubflo* vx0,
-                                 doubflo* vy0,
-                                 doubflo* vz0,
-                                 doubflo* deltaVz0,
+                                 real* rhoBC,
+                                 real* DD,
+                                 real* vx0,
+                                 real* vy0,
+                                 real* vz0,
+                                 real* deltaVz0,
                                  int* k_Q, 
                                  int* k_N, 
                                  int kQ, 
-                                 doubflo om1, 
+                                 real om1, 
                                  unsigned int* neighborX,
                                  unsigned int* neighborY,
                                  unsigned int* neighborZ,
@@ -4711,13 +4711,13 @@ extern "C" void PressSchlaffer27(unsigned int numberOfThreads,
 //////////////////////////////////////////////////////////////////////////
 extern "C" void VelSchlaffer27(  unsigned int numberOfThreads,  
                                  int t,
-                                 doubflo* DD,
-                                 doubflo* vz0,
-                                 doubflo* deltaVz0,
+                                 real* DD,
+                                 real* vz0,
+                                 real* deltaVz0,
                                  int* k_Q, 
                                  int* k_N, 
                                  int kQ, 
-                                 doubflo om1, 
+                                 real om1, 
                                  unsigned int* neighborX,
                                  unsigned int* neighborY,
                                  unsigned int* neighborZ,
@@ -4759,15 +4759,15 @@ extern "C" void PropVelo(   unsigned int numberOfThreads,
                             unsigned int* neighborX,
                             unsigned int* neighborY,
                             unsigned int* neighborZ,
-                            doubflo* rho,
-                            doubflo* ux,
-                            doubflo* uy,
-                            doubflo* uz,
+                            real* rho,
+                            real* ux,
+                            real* uy,
+                            real* uz,
                             int* k_Q, 
 							unsigned int size_Prop,
                             unsigned int size_Mat,
                             unsigned int* bcMatD,
-                            doubflo* DD,
+                            real* DD,
                             bool EvenOrOdd)
 {
    int Grid = (size_Prop / numberOfThreads)+1;
@@ -4801,8 +4801,8 @@ extern "C" void PropVelo(   unsigned int numberOfThreads,
       getLastCudaError("PropellerBC execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCF27( doubflo* DC, 
-                        doubflo* DF, 
+extern "C" void ScaleCF27( real* DC, 
+                        real* DF, 
                         unsigned int* neighborCX,
                         unsigned int* neighborCY,
                         unsigned int* neighborCZ,
@@ -4815,9 +4815,9 @@ extern "C" void ScaleCF27( doubflo* DC,
                         unsigned int* posCSWB, 
                         unsigned int* posFSWB, 
                         unsigned int kCF, 
-                        doubflo omCoarse, 
-                        doubflo omFine, 
-                        doubflo nu, 
+                        real omCoarse, 
+                        real omFine, 
+                        real nu, 
                         unsigned int nxC, 
                         unsigned int nyC, 
                         unsigned int nxF, 
@@ -4863,8 +4863,8 @@ extern "C" void ScaleCF27( doubflo* DC,
       getLastCudaError("scaleCF27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCFEff27(doubflo* DC, 
-                             doubflo* DF, 
+extern "C" void ScaleCFEff27(real* DC, 
+                             real* DF, 
                              unsigned int* neighborCX,
                              unsigned int* neighborCY,
                              unsigned int* neighborCZ,
@@ -4877,9 +4877,9 @@ extern "C" void ScaleCFEff27(doubflo* DC,
                              unsigned int* posCSWB, 
                              unsigned int* posFSWB, 
                              unsigned int kCF, 
-                             doubflo omCoarse, 
-                             doubflo omFine, 
-                             doubflo nu, 
+                             real omCoarse, 
+                             real omFine, 
+                             real nu, 
                              unsigned int nxC, 
                              unsigned int nyC, 
                              unsigned int nxF, 
@@ -4927,8 +4927,8 @@ extern "C" void ScaleCFEff27(doubflo* DC,
       getLastCudaError("scaleCFEff27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCFLast27(doubflo* DC, 
-                              doubflo* DF, 
+extern "C" void ScaleCFLast27(real* DC, 
+                              real* DF, 
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -4941,9 +4941,9 @@ extern "C" void ScaleCFLast27(doubflo* DC,
                               unsigned int* posCSWB, 
                               unsigned int* posFSWB, 
                               unsigned int kCF, 
-                              doubflo omCoarse, 
-                              doubflo omFine, 
-                              doubflo nu, 
+                              real omCoarse, 
+                              real omFine, 
+                              real nu, 
                               unsigned int nxC, 
                               unsigned int nyC, 
                               unsigned int nxF, 
@@ -4991,8 +4991,8 @@ extern "C" void ScaleCFLast27(doubflo* DC,
       getLastCudaError("scaleCFLast27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCFpress27(  doubflo* DC, 
-                                 doubflo* DF, 
+extern "C" void ScaleCFpress27(  real* DC, 
+                                 real* DF, 
                                  unsigned int* neighborCX,
                                  unsigned int* neighborCY,
                                  unsigned int* neighborCZ,
@@ -5005,9 +5005,9 @@ extern "C" void ScaleCFpress27(  doubflo* DC,
                                  unsigned int* posCSWB, 
                                  unsigned int* posFSWB, 
                                  unsigned int kCF, 
-                                 doubflo omCoarse, 
-                                 doubflo omFine, 
-                                 doubflo nu, 
+                                 real omCoarse, 
+                                 real omFine, 
+                                 real nu, 
                                  unsigned int nxC, 
                                  unsigned int nyC, 
                                  unsigned int nxF, 
@@ -5055,8 +5055,8 @@ extern "C" void ScaleCFpress27(  doubflo* DC,
       getLastCudaError("scaleCFpress27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCF_Fix_27(  doubflo* DC, 
-                                 doubflo* DF, 
+extern "C" void ScaleCF_Fix_27(  real* DC, 
+                                 real* DF, 
                                  unsigned int* neighborCX,
                                  unsigned int* neighborCY,
                                  unsigned int* neighborCZ,
@@ -5069,9 +5069,9 @@ extern "C" void ScaleCF_Fix_27(  doubflo* DC,
                                  unsigned int* posCSWB, 
                                  unsigned int* posFSWB, 
                                  unsigned int kCF, 
-                                 doubflo omCoarse, 
-                                 doubflo omFine, 
-                                 doubflo nu, 
+                                 real omCoarse, 
+                                 real omFine, 
+                                 real nu, 
                                  unsigned int nxC, 
                                  unsigned int nyC, 
                                  unsigned int nxF, 
@@ -5119,8 +5119,8 @@ extern "C" void ScaleCF_Fix_27(  doubflo* DC,
       getLastCudaError("scaleCF_Fix_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCF_Fix_comp_27( doubflo* DC, 
-									 doubflo* DF, 
+extern "C" void ScaleCF_Fix_comp_27( real* DC, 
+									 real* DF, 
 									 unsigned int* neighborCX,
 									 unsigned int* neighborCY,
 									 unsigned int* neighborCZ,
@@ -5133,9 +5133,9 @@ extern "C" void ScaleCF_Fix_comp_27( doubflo* DC,
 									 unsigned int* posCSWB, 
 									 unsigned int* posFSWB, 
 									 unsigned int kCF, 
-									 doubflo omCoarse, 
-									 doubflo omFine, 
-									 doubflo nu, 
+									 real omCoarse, 
+									 real omFine, 
+									 real nu, 
 									 unsigned int nxC, 
 									 unsigned int nyC, 
 									 unsigned int nxF, 
@@ -5183,8 +5183,8 @@ extern "C" void ScaleCF_Fix_comp_27( doubflo* DC,
       getLastCudaError("scaleCF_Fix_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCF_0817_comp_27(doubflo* DC, 
-									 doubflo* DF, 
+extern "C" void ScaleCF_0817_comp_27(real* DC, 
+									 real* DF, 
 									 unsigned int* neighborCX,
 									 unsigned int* neighborCY,
 									 unsigned int* neighborCZ,
@@ -5197,9 +5197,9 @@ extern "C" void ScaleCF_0817_comp_27(doubflo* DC,
 									 unsigned int* posCSWB, 
 									 unsigned int* posFSWB, 
 									 unsigned int kCF, 
-									 doubflo omCoarse, 
-									 doubflo omFine, 
-									 doubflo nu, 
+									 real omCoarse, 
+									 real omFine, 
+									 real nu, 
 									 unsigned int nxC, 
 									 unsigned int nyC, 
 									 unsigned int nxF, 
@@ -5247,8 +5247,8 @@ extern "C" void ScaleCF_0817_comp_27(doubflo* DC,
       getLastCudaError("scaleCF_0817_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCF_staggered_time_comp_27(  doubflo* DC, 
-												 doubflo* DF, 
+extern "C" void ScaleCF_staggered_time_comp_27(  real* DC, 
+												 real* DF, 
 												 unsigned int* neighborCX,
 												 unsigned int* neighborCY,
 												 unsigned int* neighborCZ,
@@ -5261,9 +5261,9 @@ extern "C" void ScaleCF_staggered_time_comp_27(  doubflo* DC,
 												 unsigned int* posCSWB, 
 												 unsigned int* posFSWB, 
 												 unsigned int kCF, 
-												 doubflo omCoarse, 
-												 doubflo omFine, 
-												 doubflo nu, 
+												 real omCoarse, 
+												 real omFine, 
+												 real nu, 
 												 unsigned int nxC, 
 												 unsigned int nyC, 
 												 unsigned int nxF, 
@@ -5311,8 +5311,8 @@ extern "C" void ScaleCF_staggered_time_comp_27(  doubflo* DC,
       getLastCudaError("scaleCF_Fix_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCF_RhoSq_comp_27(   doubflo* DC, 
-										 doubflo* DF, 
+extern "C" void ScaleCF_RhoSq_comp_27(   real* DC, 
+										 real* DF, 
 										 unsigned int* neighborCX,
 										 unsigned int* neighborCY,
 										 unsigned int* neighborCZ,
@@ -5325,9 +5325,9 @@ extern "C" void ScaleCF_RhoSq_comp_27(   doubflo* DC,
 										 unsigned int* posCSWB, 
 										 unsigned int* posFSWB, 
 										 unsigned int kCF, 
-										 doubflo omCoarse, 
-										 doubflo omFine, 
-										 doubflo nu, 
+										 real omCoarse, 
+										 real omFine, 
+										 real nu, 
 										 unsigned int nxC, 
 										 unsigned int nyC, 
 										 unsigned int nxF, 
@@ -5375,8 +5375,8 @@ extern "C" void ScaleCF_RhoSq_comp_27(   doubflo* DC,
       getLastCudaError("scaleCF_RhoSq_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCF_RhoSq_3rdMom_comp_27(doubflo* DC, 
-											 doubflo* DF, 
+extern "C" void ScaleCF_RhoSq_3rdMom_comp_27(real* DC, 
+											 real* DF, 
 											 unsigned int* neighborCX,
 											 unsigned int* neighborCY,
 											 unsigned int* neighborCZ,
@@ -5389,9 +5389,9 @@ extern "C" void ScaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 											 unsigned int* posCSWB, 
 											 unsigned int* posFSWB, 
 											 unsigned int kCF, 
-											 doubflo omCoarse, 
-											 doubflo omFine, 
-											 doubflo nu, 
+											 real omCoarse, 
+											 real omFine, 
+											 real nu, 
 											 unsigned int nxC, 
 											 unsigned int nyC, 
 											 unsigned int nxF, 
@@ -5439,8 +5439,8 @@ extern "C" void ScaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
       getLastCudaError("scaleCF_RhoSq_3rdMom_comp_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCF_AA2016_comp_27(doubflo* DC, 
-									   doubflo* DF, 
+extern "C" void ScaleCF_AA2016_comp_27(real* DC, 
+									   real* DF, 
 									   unsigned int* neighborCX,
 									   unsigned int* neighborCY,
 									   unsigned int* neighborCZ,
@@ -5453,9 +5453,9 @@ extern "C" void ScaleCF_AA2016_comp_27(doubflo* DC,
 									   unsigned int* posCSWB, 
 									   unsigned int* posFSWB, 
 									   unsigned int kCF, 
-									   doubflo omCoarse, 
-									   doubflo omFine, 
-									   doubflo nu, 
+									   real omCoarse, 
+									   real omFine, 
+									   real nu, 
 									   unsigned int nxC, 
 									   unsigned int nyC, 
 									   unsigned int nxF, 
@@ -5503,8 +5503,8 @@ extern "C" void ScaleCF_AA2016_comp_27(doubflo* DC,
       getLastCudaError("scaleCF_AA2016_comp_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCF_NSPress_27(  doubflo* DC, 
-									 doubflo* DF, 
+extern "C" void ScaleCF_NSPress_27(  real* DC, 
+									 real* DF, 
 									 unsigned int* neighborCX,
 									 unsigned int* neighborCY,
 									 unsigned int* neighborCZ,
@@ -5517,9 +5517,9 @@ extern "C" void ScaleCF_NSPress_27(  doubflo* DC,
 									 unsigned int* posCSWB, 
 									 unsigned int* posFSWB, 
 									 unsigned int kCF, 
-									 doubflo omCoarse, 
-									 doubflo omFine, 
-									 doubflo nu, 
+									 real omCoarse, 
+									 real omFine, 
+									 real nu, 
 									 unsigned int nxC, 
 									 unsigned int nyC, 
 									 unsigned int nxF, 
@@ -5567,10 +5567,10 @@ extern "C" void ScaleCF_NSPress_27(  doubflo* DC,
       getLastCudaError("scaleCF_Fix_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCFThSMG7(   doubflo* DC, 
-                                 doubflo* DF,
-                                 doubflo* DD7C, 
-                                 doubflo* DD7F,
+extern "C" void ScaleCFThSMG7(   real* DC, 
+                                 real* DF,
+                                 real* DD7C, 
+                                 real* DD7F,
                                  unsigned int* neighborCX,
                                  unsigned int* neighborCY,
                                  unsigned int* neighborCZ,
@@ -5583,8 +5583,8 @@ extern "C" void ScaleCFThSMG7(   doubflo* DC,
                                  unsigned int* posCSWB, 
                                  unsigned int* posFSWB, 
                                  unsigned int kCF, 
-                                 doubflo nu,
-                                 doubflo diffusivity_fine,
+                                 real nu,
+                                 real diffusivity_fine,
                                  unsigned int numberOfThreads,
                                  OffCF offCF)
 {
@@ -5625,10 +5625,10 @@ extern "C" void ScaleCFThSMG7(   doubflo* DC,
       getLastCudaError("scaleCFThSMG7 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCFThS7(  doubflo* DC, 
-                              doubflo* DF,
-                              doubflo* DD7C, 
-                              doubflo* DD7F,
+extern "C" void ScaleCFThS7(  real* DC, 
+                              real* DF,
+                              real* DD7C, 
+                              real* DD7F,
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -5641,8 +5641,8 @@ extern "C" void ScaleCFThS7(  doubflo* DC,
                               unsigned int* posCSWB, 
                               unsigned int* posFSWB, 
                               unsigned int kCF, 
-                              doubflo nu,
-                              doubflo diffusivity_fine,
+                              real nu,
+                              real diffusivity_fine,
                               unsigned int numberOfThreads)
 {
    int Grid = (kCF / numberOfThreads)+1;
@@ -5681,10 +5681,10 @@ extern "C" void ScaleCFThS7(  doubflo* DC,
       getLastCudaError("scaleCFThS7 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleCFThS27( doubflo* DC, 
-                              doubflo* DF,
-                              doubflo* DD27C, 
-                              doubflo* DD27F,
+extern "C" void ScaleCFThS27( real* DC, 
+                              real* DF,
+                              real* DD27C, 
+                              real* DD27F,
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -5697,8 +5697,8 @@ extern "C" void ScaleCFThS27( doubflo* DC,
                               unsigned int* posCSWB, 
                               unsigned int* posFSWB, 
                               unsigned int kCF, 
-                              doubflo nu,
-                              doubflo diffusivity_fine,
+                              real nu,
+                              real diffusivity_fine,
                               unsigned int numberOfThreads,
 							  OffCF offCF)
 {
@@ -5739,8 +5739,8 @@ extern "C" void ScaleCFThS27( doubflo* DC,
       getLastCudaError("scaleCFThS27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFC27( doubflo* DC, 
-                           doubflo* DF, 
+extern "C" void ScaleFC27( real* DC, 
+                           real* DF, 
                            unsigned int* neighborCX,
                            unsigned int* neighborCY,
                            unsigned int* neighborCZ,
@@ -5753,9 +5753,9 @@ extern "C" void ScaleFC27( doubflo* DC,
                            unsigned int* posC, 
                            unsigned int* posFSWB, 
                            unsigned int kFC, 
-                           doubflo omCoarse, 
-                           doubflo omFine, 
-                           doubflo nu, 
+                           real omCoarse, 
+                           real omFine, 
+                           real nu, 
                            unsigned int nxC, 
                            unsigned int nyC, 
                            unsigned int nxF, 
@@ -5801,8 +5801,8 @@ extern "C" void ScaleFC27( doubflo* DC,
       getLastCudaError("scaleFC27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFCEff27(doubflo* DC, 
-                             doubflo* DF, 
+extern "C" void ScaleFCEff27(real* DC, 
+                             real* DF, 
                              unsigned int* neighborCX,
                              unsigned int* neighborCY,
                              unsigned int* neighborCZ,
@@ -5815,9 +5815,9 @@ extern "C" void ScaleFCEff27(doubflo* DC,
                              unsigned int* posC, 
                              unsigned int* posFSWB, 
                              unsigned int kFC, 
-                             doubflo omCoarse, 
-                             doubflo omFine, 
-                             doubflo nu, 
+                             real omCoarse, 
+                             real omFine, 
+                             real nu, 
                              unsigned int nxC, 
                              unsigned int nyC, 
                              unsigned int nxF, 
@@ -5865,8 +5865,8 @@ extern "C" void ScaleFCEff27(doubflo* DC,
       getLastCudaError("scaleFCEff27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFCLast27(doubflo* DC, 
-                              doubflo* DF, 
+extern "C" void ScaleFCLast27(real* DC, 
+                              real* DF, 
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -5879,9 +5879,9 @@ extern "C" void ScaleFCLast27(doubflo* DC,
                               unsigned int* posC, 
                               unsigned int* posFSWB, 
                               unsigned int kFC, 
-                              doubflo omCoarse, 
-                              doubflo omFine, 
-                              doubflo nu, 
+                              real omCoarse, 
+                              real omFine, 
+                              real nu, 
                               unsigned int nxC, 
                               unsigned int nyC, 
                               unsigned int nxF, 
@@ -5929,8 +5929,8 @@ extern "C" void ScaleFCLast27(doubflo* DC,
       getLastCudaError("Kernel execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFCpress27(doubflo* DC, 
-                              doubflo* DF, 
+extern "C" void ScaleFCpress27(real* DC, 
+                              real* DF, 
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -5943,9 +5943,9 @@ extern "C" void ScaleFCpress27(doubflo* DC,
                               unsigned int* posC, 
                               unsigned int* posFSWB, 
                               unsigned int kFC, 
-                              doubflo omCoarse, 
-                              doubflo omFine, 
-                              doubflo nu, 
+                              real omCoarse, 
+                              real omFine, 
+                              real nu, 
                               unsigned int nxC, 
                               unsigned int nyC, 
                               unsigned int nxF, 
@@ -5993,8 +5993,8 @@ extern "C" void ScaleFCpress27(doubflo* DC,
       getLastCudaError("scaleFCpress27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFC_Fix_27(doubflo* DC, 
-                              doubflo* DF, 
+extern "C" void ScaleFC_Fix_27(real* DC, 
+                              real* DF, 
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -6007,9 +6007,9 @@ extern "C" void ScaleFC_Fix_27(doubflo* DC,
                               unsigned int* posC, 
                               unsigned int* posFSWB, 
                               unsigned int kFC, 
-                              doubflo omCoarse, 
-                              doubflo omFine, 
-                              doubflo nu, 
+                              real omCoarse, 
+                              real omFine, 
+                              real nu, 
                               unsigned int nxC, 
                               unsigned int nyC, 
                               unsigned int nxF, 
@@ -6057,8 +6057,8 @@ extern "C" void ScaleFC_Fix_27(doubflo* DC,
       getLastCudaError("scaleFC_Fix_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFC_Fix_comp_27(  doubflo* DC, 
-									  doubflo* DF, 
+extern "C" void ScaleFC_Fix_comp_27(  real* DC, 
+									  real* DF, 
 									  unsigned int* neighborCX,
 									  unsigned int* neighborCY,
 									  unsigned int* neighborCZ,
@@ -6071,9 +6071,9 @@ extern "C" void ScaleFC_Fix_comp_27(  doubflo* DC,
 									  unsigned int* posC, 
 									  unsigned int* posFSWB, 
 									  unsigned int kFC, 
-									  doubflo omCoarse, 
-									  doubflo omFine, 
-									  doubflo nu, 
+									  real omCoarse, 
+									  real omFine, 
+									  real nu, 
 									  unsigned int nxC, 
 									  unsigned int nyC, 
 									  unsigned int nxF, 
@@ -6120,8 +6120,8 @@ extern "C" void ScaleFC_Fix_comp_27(  doubflo* DC,
 													   offFC);
       getLastCudaError("scaleFC_Fix_27 execution failed"); 
 }
-extern "C" void ScaleFC_0817_comp_27( doubflo* DC, 
-									  doubflo* DF, 
+extern "C" void ScaleFC_0817_comp_27( real* DC, 
+									  real* DF, 
 									  unsigned int* neighborCX,
 									  unsigned int* neighborCY,
 									  unsigned int* neighborCZ,
@@ -6134,9 +6134,9 @@ extern "C" void ScaleFC_0817_comp_27( doubflo* DC,
 									  unsigned int* posC, 
 									  unsigned int* posFSWB, 
 									  unsigned int kFC, 
-									  doubflo omCoarse, 
-									  doubflo omFine, 
-									  doubflo nu, 
+									  real omCoarse, 
+									  real omFine, 
+									  real nu, 
 									  unsigned int nxC, 
 									  unsigned int nyC, 
 									  unsigned int nxF, 
@@ -6184,8 +6184,8 @@ extern "C" void ScaleFC_0817_comp_27( doubflo* DC,
       getLastCudaError("scaleFC_0817_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFC_staggered_time_comp_27(   doubflo* DC, 
-												  doubflo* DF, 
+extern "C" void ScaleFC_staggered_time_comp_27(   real* DC, 
+												  real* DF, 
 												  unsigned int* neighborCX,
 												  unsigned int* neighborCY,
 												  unsigned int* neighborCZ,
@@ -6198,9 +6198,9 @@ extern "C" void ScaleFC_staggered_time_comp_27(   doubflo* DC,
 												  unsigned int* posC, 
 												  unsigned int* posFSWB, 
 												  unsigned int kFC, 
-												  doubflo omCoarse, 
-												  doubflo omFine, 
-												  doubflo nu, 
+												  real omCoarse, 
+												  real omFine, 
+												  real nu, 
 												  unsigned int nxC, 
 												  unsigned int nyC, 
 												  unsigned int nxF, 
@@ -6248,8 +6248,8 @@ extern "C" void ScaleFC_staggered_time_comp_27(   doubflo* DC,
       getLastCudaError("scaleFC_Fix_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFC_RhoSq_comp_27(doubflo* DC, 
-									  doubflo* DF, 
+extern "C" void ScaleFC_RhoSq_comp_27(real* DC, 
+									  real* DF, 
 									  unsigned int* neighborCX,
 									  unsigned int* neighborCY,
 									  unsigned int* neighborCZ,
@@ -6262,9 +6262,9 @@ extern "C" void ScaleFC_RhoSq_comp_27(doubflo* DC,
 									  unsigned int* posC, 
 									  unsigned int* posFSWB, 
 									  unsigned int kFC, 
-									  doubflo omCoarse, 
-									  doubflo omFine, 
-									  doubflo nu, 
+									  real omCoarse, 
+									  real omFine, 
+									  real nu, 
 									  unsigned int nxC, 
 									  unsigned int nyC, 
 									  unsigned int nxF, 
@@ -6312,8 +6312,8 @@ extern "C" void ScaleFC_RhoSq_comp_27(doubflo* DC,
       getLastCudaError("scaleFC_RhoSq_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFC_RhoSq_3rdMom_comp_27( doubflo* DC, 
-											  doubflo* DF, 
+extern "C" void ScaleFC_RhoSq_3rdMom_comp_27( real* DC, 
+											  real* DF, 
 											  unsigned int* neighborCX,
 											  unsigned int* neighborCY,
 											  unsigned int* neighborCZ,
@@ -6326,9 +6326,9 @@ extern "C" void ScaleFC_RhoSq_3rdMom_comp_27( doubflo* DC,
 											  unsigned int* posC, 
 											  unsigned int* posFSWB, 
 											  unsigned int kFC, 
-											  doubflo omCoarse, 
-											  doubflo omFine, 
-											  doubflo nu, 
+											  real omCoarse, 
+											  real omFine, 
+											  real nu, 
 											  unsigned int nxC, 
 											  unsigned int nyC, 
 											  unsigned int nxF, 
@@ -6376,8 +6376,8 @@ extern "C" void ScaleFC_RhoSq_3rdMom_comp_27( doubflo* DC,
       getLastCudaError("scaleFC_RhoSq_3rdMom_comp_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFC_AA2016_comp_27( doubflo* DC, 
-										doubflo* DF, 
+extern "C" void ScaleFC_AA2016_comp_27( real* DC, 
+										real* DF, 
 										unsigned int* neighborCX,
 										unsigned int* neighborCY,
 										unsigned int* neighborCZ,
@@ -6390,9 +6390,9 @@ extern "C" void ScaleFC_AA2016_comp_27( doubflo* DC,
 										unsigned int* posC, 
 										unsigned int* posFSWB, 
 										unsigned int kFC, 
-										doubflo omCoarse, 
-										doubflo omFine, 
-										doubflo nu, 
+										real omCoarse, 
+										real omFine, 
+										real nu, 
 										unsigned int nxC, 
 										unsigned int nyC, 
 										unsigned int nxF, 
@@ -6440,8 +6440,8 @@ extern "C" void ScaleFC_AA2016_comp_27( doubflo* DC,
       getLastCudaError("scaleFC_AA2016_comp_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFC_NSPress_27(doubflo* DC, 
-								  doubflo* DF, 
+extern "C" void ScaleFC_NSPress_27(real* DC, 
+								  real* DF, 
 								  unsigned int* neighborCX,
 								  unsigned int* neighborCY,
 								  unsigned int* neighborCZ,
@@ -6454,9 +6454,9 @@ extern "C" void ScaleFC_NSPress_27(doubflo* DC,
 								  unsigned int* posC, 
 								  unsigned int* posFSWB, 
 								  unsigned int kFC, 
-								  doubflo omCoarse, 
-								  doubflo omFine, 
-								  doubflo nu, 
+								  real omCoarse, 
+								  real omFine, 
+								  real nu, 
 								  unsigned int nxC, 
 								  unsigned int nyC, 
 								  unsigned int nxF, 
@@ -6504,10 +6504,10 @@ extern "C" void ScaleFC_NSPress_27(doubflo* DC,
       getLastCudaError("scaleFC_Fix_27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFCThSMG7(doubflo* DC, 
-                              doubflo* DF,
-                              doubflo* DD7C, 
-                              doubflo* DD7F,
+extern "C" void ScaleFCThSMG7(real* DC, 
+                              real* DF,
+                              real* DD7C, 
+                              real* DD7F,
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -6520,8 +6520,8 @@ extern "C" void ScaleFCThSMG7(doubflo* DC,
                               unsigned int* posC, 
                               unsigned int* posFSWB, 
                               unsigned int kFC, 
-                              doubflo nu,
-                              doubflo diffusivity_coarse,
+                              real nu,
+                              real diffusivity_coarse,
                               unsigned int numberOfThreads,
                               OffFC offFC)
 {
@@ -6562,10 +6562,10 @@ extern "C" void ScaleFCThSMG7(doubflo* DC,
       getLastCudaError("scaleFCThSMG7 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFCThS7(  doubflo* DC, 
-                              doubflo* DF,
-                              doubflo* DD7C, 
-                              doubflo* DD7F,
+extern "C" void ScaleFCThS7(  real* DC, 
+                              real* DF,
+                              real* DD7C, 
+                              real* DD7F,
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -6578,8 +6578,8 @@ extern "C" void ScaleFCThS7(  doubflo* DC,
                               unsigned int* posC, 
                               unsigned int* posFSWB, 
                               unsigned int kFC, 
-                              doubflo nu,
-                              doubflo diffusivity_coarse,
+                              real nu,
+                              real diffusivity_coarse,
                               unsigned int numberOfThreads)
 {
    int Grid = (kFC / numberOfThreads)+1;
@@ -6618,10 +6618,10 @@ extern "C" void ScaleFCThS7(  doubflo* DC,
       getLastCudaError("scaleFCThS7 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void ScaleFCThS27( doubflo* DC, 
-                              doubflo* DF,
-                              doubflo* DD27C, 
-                              doubflo* DD27F,
+extern "C" void ScaleFCThS27( real* DC, 
+                              real* DF,
+                              real* DD27C, 
+                              real* DD27F,
                               unsigned int* neighborCX,
                               unsigned int* neighborCY,
                               unsigned int* neighborCZ,
@@ -6634,8 +6634,8 @@ extern "C" void ScaleFCThS27( doubflo* DC,
                               unsigned int* posC, 
                               unsigned int* posFSWB, 
                               unsigned int kFC, 
-                              doubflo nu,
-                              doubflo diffusivity_coarse,
+                              real nu,
+                              real diffusivity_coarse,
                               unsigned int numberOfThreads,
 							  OffFC offFC)
 {
@@ -6676,9 +6676,9 @@ extern "C" void ScaleFCThS27( doubflo* DC,
       getLastCudaError("scaleFCThS27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void DragLiftPostD27(doubflo* DD, 
+extern "C" void DragLiftPostD27(real* DD, 
 								int* k_Q, 
-								doubflo* QQ,
+								real* QQ,
 								int kQ, 
 								double *DragX,
 								double *DragY,
@@ -6720,9 +6720,9 @@ extern "C" void DragLiftPostD27(doubflo* DD,
 	getLastCudaError("DragLift27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void DragLiftPreD27( doubflo* DD, 
+extern "C" void DragLiftPreD27( real* DD, 
 								int* k_Q, 
-								doubflo* QQ,
+								real* QQ,
 								int kQ, 
 								double *DragX,
 								double *DragY,
@@ -6764,7 +6764,7 @@ extern "C" void DragLiftPreD27( doubflo* DD,
 	getLastCudaError("DragLift27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void CalcCPtop27(doubflo* DD, 
+extern "C" void CalcCPtop27(real* DD, 
 							int* cpIndex, 
 							int nonCp, 
 							double *cpPress,
@@ -6802,7 +6802,7 @@ extern "C" void CalcCPtop27(doubflo* DD,
 	getLastCudaError("CalcCP27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void CalcCPbottom27( doubflo* DD, 
+extern "C" void CalcCPbottom27( real* DD, 
 								int* cpIndex, 
 								int nonCp, 
 								double *cpPress,
@@ -6840,8 +6840,8 @@ extern "C" void CalcCPbottom27( doubflo* DD,
 	getLastCudaError("CalcCP27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void GetSendFsPreDev27(doubflo* DD,
-								  doubflo* bufferFs,
+extern "C" void GetSendFsPreDev27(real* DD,
+								  real* bufferFs,
 								  int* sendIndex,
 								  int buffmax,
 								  unsigned int* neighborX,
@@ -6878,8 +6878,8 @@ extern "C" void GetSendFsPreDev27(doubflo* DD,
 	getLastCudaError("getSendFsPre27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void GetSendFsPostDev27(doubflo* DD,
-								   doubflo* bufferFs,
+extern "C" void GetSendFsPostDev27(real* DD,
+								   real* bufferFs,
 								   int* sendIndex,
 								   int buffmax,
 								   unsigned int* neighborX,
@@ -6916,8 +6916,8 @@ extern "C" void GetSendFsPostDev27(doubflo* DD,
 	getLastCudaError("getSendFsPost27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void SetRecvFsPreDev27(doubflo* DD,
-								  doubflo* bufferFs,
+extern "C" void SetRecvFsPreDev27(real* DD,
+								  real* bufferFs,
 								  int* recvIndex,
 								  int buffmax,
 								  unsigned int* neighborX,
@@ -6954,8 +6954,8 @@ extern "C" void SetRecvFsPreDev27(doubflo* DD,
 	getLastCudaError("setRecvFsPre27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void SetRecvFsPostDev27(doubflo* DD,
-								   doubflo* bufferFs,
+extern "C" void SetRecvFsPostDev27(real* DD,
+								   real* bufferFs,
 								   int* recvIndex,
 								   int buffmax,
 								   unsigned int* neighborX,
@@ -6995,15 +6995,15 @@ extern "C" void SetRecvFsPostDev27(doubflo* DD,
 extern "C" void WallFuncDev27(unsigned int numberOfThreads,
 							  int nx,
 							  int ny,
-							  doubflo* vx,
-							  doubflo* vy,
-							  doubflo* vz,
-							  doubflo* DD, 
+							  real* vx,
+							  real* vy,
+							  real* vz,
+							  real* DD, 
 							  int* k_Q, 
-							  doubflo* QQ,
+							  real* QQ,
 							  unsigned int sizeQ,
 							  unsigned int kQ, 
-							  doubflo om1, 
+							  real om1, 
 							  unsigned int* neighborX,
 							  unsigned int* neighborY,
 							  unsigned int* neighborZ,
@@ -7045,22 +7045,22 @@ extern "C" void WallFuncDev27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void SetOutputWallVelocitySP27(unsigned int numberOfThreads,
-										  doubflo* vxD,
-										  doubflo* vyD,
-										  doubflo* vzD,
-										  doubflo* vxWall,
-										  doubflo* vyWall,
-										  doubflo* vzWall,
+										  real* vxD,
+										  real* vyD,
+										  real* vzD,
+										  real* vxWall,
+										  real* vyWall,
+										  real* vzWall,
 										  int numberOfWallNodes, 
 										  int* kWallNodes, 
-										  doubflo* rhoD,
-										  doubflo* pressD,
+										  real* rhoD,
+										  real* pressD,
 										  unsigned int* geoD,
 										  unsigned int* neighborX,
 										  unsigned int* neighborY,
 										  unsigned int* neighborZ,
 										  unsigned int size_Mat,
-										  doubflo* DD,
+										  real* DD,
 										  bool evenOrOdd)
 {
    int Grid = (numberOfWallNodes / numberOfThreads)+1;
@@ -7099,12 +7099,12 @@ extern "C" void SetOutputWallVelocitySP27(unsigned int numberOfThreads,
 }
 //////////////////////////////////////////////////////////////////////////
 extern "C" void GetVelotoForce27(unsigned int numberOfThreads,
-								 doubflo* DD, 
+								 real* DD, 
 								 int* bcIndex, 
 								 int nonAtBC, 
-								 doubflo* Vx,
-								 doubflo* Vy,
-								 doubflo* Vz,
+								 real* Vx,
+								 real* Vy,
+								 real* Vz,
 								 unsigned int* neighborX,
 								 unsigned int* neighborY,
 								 unsigned int* neighborZ,
@@ -7140,19 +7140,19 @@ extern "C" void GetVelotoForce27(unsigned int numberOfThreads,
       getLastCudaError("GetVeloforForcing27 execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void InitParticlesDevice(doubflo* coordX,
-									doubflo* coordY,
-									doubflo* coordZ, 
-									doubflo* coordParticleXlocal,
-									doubflo* coordParticleYlocal,
-									doubflo* coordParticleZlocal, 
-									doubflo* coordParticleXglobal,
-									doubflo* coordParticleYglobal,
-									doubflo* coordParticleZglobal,
-									doubflo* veloParticleX,
-									doubflo* veloParticleY,
-									doubflo* veloParticleZ,
-									doubflo* randArray,
+extern "C" void InitParticlesDevice(real* coordX,
+									real* coordY,
+									real* coordZ, 
+									real* coordParticleXlocal,
+									real* coordParticleYlocal,
+									real* coordParticleZlocal, 
+									real* coordParticleXglobal,
+									real* coordParticleYglobal,
+									real* coordParticleZglobal,
+									real* veloParticleX,
+									real* veloParticleY,
+									real* veloParticleZ,
+									real* randArray,
 									unsigned int* particleID,
 									unsigned int* cellBaseID,
 									unsigned int* bcMatD,
@@ -7206,20 +7206,20 @@ extern "C" void InitParticlesDevice(doubflo* coordX,
       getLastCudaError("InitParticles execution failed"); 
 }
 //////////////////////////////////////////////////////////////////////////
-extern "C" void MoveParticlesDevice(doubflo* coordX,
-									doubflo* coordY,
-									doubflo* coordZ, 
-									doubflo* coordParticleXlocal,
-									doubflo* coordParticleYlocal,
-									doubflo* coordParticleZlocal, 
-									doubflo* coordParticleXglobal,
-									doubflo* coordParticleYglobal,
-									doubflo* coordParticleZglobal,
-									doubflo* veloParticleX,
-									doubflo* veloParticleY,
-									doubflo* veloParticleZ,
-									doubflo* DD,
-									doubflo  omega,
+extern "C" void MoveParticlesDevice(real* coordX,
+									real* coordY,
+									real* coordZ, 
+									real* coordParticleXlocal,
+									real* coordParticleYlocal,
+									real* coordParticleZlocal, 
+									real* coordParticleXglobal,
+									real* coordParticleYglobal,
+									real* coordParticleZglobal,
+									real* veloParticleX,
+									real* veloParticleY,
+									real* veloParticleZ,
+									real* DD,
+									real  omega,
 									unsigned int* particleID,
 									unsigned int* cellBaseID,
 									unsigned int* bcMatD,
@@ -7305,7 +7305,7 @@ extern "C" void initRandomDevice(curandState* state,
 //////////////////////////////////////////////////////////////////////////
 extern "C" void generateRandomValuesDevice( curandState* state,
 											unsigned int size_Mat,
-											doubflo* randArray,
+											real* randArray,
 											unsigned int numberOfThreads)
 {
    int Grid = (size_Mat / numberOfThreads)+1;
diff --git a/src/VirtualFluids_GPU/GPU/MRTuTRT27.cu b/src/VirtualFluids_GPU/GPU/MRTuTRT27.cu
index f1ff4b4cf..a718b5f85 100644
--- a/src/VirtualFluids_GPU/GPU/MRTuTRT27.cu
+++ b/src/VirtualFluids_GPU/GPU/MRTuTRT27.cu
@@ -4,12 +4,12 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_MRT_SP_27( doubflo omega,
+extern "C" __global__ void LB_Kernel_MRT_SP_27( real omega,
 												unsigned int* bcMatD,
 												unsigned int* neighborX,
 												unsigned int* neighborY,
 												unsigned int* neighborZ,
-												doubflo* DDStart,
+												real* DDStart,
 												int size_Mat,
 												bool EvenOrOdd)
 {
@@ -124,72 +124,72 @@ extern "C" __global__ void LB_Kernel_MRT_SP_27( doubflo omega,
 			//unsigned int ktne = k;
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			real mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb));
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab));
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba));
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 								   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 								   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr
-			//doubflo vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
+			//real vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
 			//				mfcba-mfabc + mfcbc-mfaba + mfcab-mfacb + mfccb-mfaab +
 			//				mfcbb-mfabb;
-			//doubflo vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
+			//real vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
 			//				mfbca-mfbac + mfbcc-mfbaa + mfacb-mfcab + mfccb-mfaab +
 			//				mfbcb-mfbab;
-			//doubflo vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
+			//real vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
 			//				mfbac-mfbca + mfbcc-mfbaa + mfabc-mfcba + mfcbc-mfaba +
 			//				mfbbc-mfbba;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo m0, m1, m2;	
-			doubflo vx2;
-			doubflo vy2;
-			doubflo vz2;
+			real m0, m1, m2;	
+			real vx2;
+			real vy2;
+			real vz2;
 			vx2=vvx*vvx;
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimit = 0.01f;
+			real wadjust;
+			real qudricLimit = 0.01f;
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
 			////////////////////////////////////////////////////////////////////////////////////
@@ -423,23 +423,23 @@ extern "C" __global__ void LB_Kernel_MRT_SP_27( doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// MRT
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = omega;
-			doubflo OxyyPxzz  = one;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
-			doubflo OxyyMxzz  = one;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
-			doubflo O4        = one;
-			doubflo O5        = one;
-			doubflo O6        = one;
+			real OxxPyyPzz = omega;
+			real OxyyPxzz  = one;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
+			real OxyyMxzz  = one;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
+			real O4        = one;
+			real O5        = one;
+			real O6        = one;
 
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 
 			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//incl. correction
 			{
-				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz-two*vx2+vy2+vz2) + c1o2 * OxxPyyPzz * (mfaaa+vx2+vy2+vz2 - mxxPyyPzz);
-				doubflo dyuy = dxux + omega * c3o2 * (mxxMyy-vx2+vy2);
-				doubflo dzuz = dxux + omega * c3o2 * (mxxMzz-vx2+vz2);
+				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz-two*vx2+vy2+vz2) + c1o2 * OxxPyyPzz * (mfaaa+vx2+vy2+vz2 - mxxPyyPzz);
+				real dyuy = dxux + omega * c3o2 * (mxxMyy-vx2+vy2);
+				real dzuz = dxux + omega * c3o2 * (mxxMzz-vx2+vz2);
 
 				//relax
 				mxxPyyPzz += OxxPyyPzz*(mfaaa +vx2+vy2+vz2 - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -466,14 +466,14 @@ extern "C" __global__ void LB_Kernel_MRT_SP_27( doubflo omega,
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			mxxyMyzz += OxyyMxzz*((vx2-vz2)*vvy-mxxyMyzz);
 			mxxzMyyz += OxyyMxzz*((vx2-vy2)*vvz-mxxzMyyz);
@@ -801,12 +801,12 @@ extern "C" __global__ void LB_Kernel_MRT_SP_27( doubflo omega,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_MRT_Comp_SP_27(doubflo omega,
+extern "C" __global__ void LB_Kernel_MRT_Comp_SP_27(real omega,
 													unsigned int* bcMatD,
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
-													doubflo* DDStart,
+													real* DDStart,
 													int size_Mat,
 													bool EvenOrOdd)
 {
@@ -921,77 +921,77 @@ extern "C" __global__ void LB_Kernel_MRT_Comp_SP_27(doubflo omega,
 			//unsigned int ktne = k;
 			unsigned int kbsw = neighborZ[ksw];
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
-			doubflo mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
-			doubflo mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
-			doubflo mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
-			doubflo mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
-			doubflo mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
-			doubflo mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
-			doubflo mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
-			doubflo mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
-			doubflo mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
-			doubflo mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
-			doubflo mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
-			doubflo mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
-			doubflo mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
-			doubflo mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
-			doubflo mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo rho = (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real mfcbb = (D.f[dirE   ])[k  ];//[ke   ];// +  c2over27 ;(D.f[dirE   ])[k  ];//ke
+			real mfabb = (D.f[dirW   ])[kw ];//[kw   ];// +  c2over27 ;(D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];//[kn   ];// +  c2over27 ;(D.f[dirN   ])[k  ];//kn
+			real mfbab = (D.f[dirS   ])[ks ];//[ks   ];// +  c2over27 ;(D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];//[kt   ];// +  c2over27 ;(D.f[dirT   ])[k  ];//kt
+			real mfbba = (D.f[dirB   ])[kb ];//[kb   ];// +  c2over27 ;(D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];//[kne  ];// +  c1over54 ;(D.f[dirNE  ])[k  ];//kne
+			real mfaab = (D.f[dirSW  ])[ksw];//[ksw  ];// +  c1over54 ;(D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];//[kse  ];// +  c1over54 ;(D.f[dirSE  ])[ks ];//kse
+			real mfacb = (D.f[dirNW  ])[kw ];//[knw  ];// +  c1over54 ;(D.f[dirNW  ])[kw ];//knw
+			real mfcbc = (D.f[dirTE  ])[k  ];//[kte  ];// +  c1over54 ;(D.f[dirTE  ])[k  ];//kte
+			real mfaba = (D.f[dirBW  ])[kbw];//[kbw  ];// +  c1over54 ;(D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];//[kbe  ];// +  c1over54 ;(D.f[dirBE  ])[kb ];//kbe
+			real mfabc = (D.f[dirTW  ])[kw ];//[ktw  ];// +  c1over54 ;(D.f[dirTW  ])[kw ];//ktw
+			real mfbcc = (D.f[dirTN  ])[k  ];//[ktn  ];// +  c1over54 ;(D.f[dirTN  ])[k  ];//ktn
+			real mfbaa = (D.f[dirBS  ])[kbs];//[kbs  ];// +  c1over54 ;(D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];//[kbn  ];// +  c1over54 ;(D.f[dirBN  ])[kb ];//kbn
+			real mfbac = (D.f[dirTS  ])[ks ];//[kts  ];// +  c1over54 ;(D.f[dirTS  ])[ks ];//kts
+			real mfbbb = (D.f[dirZERO])[k  ];//[kzero];// +  c8over27 ;(D.f[dirZERO])[k  ];//kzero
+			real mfccc = (D.f[dirTNE ])[k  ];//[ktne ];// +  c1over216;(D.f[dirTNE ])[k  ];//ktne
+			real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// +  c1over216;(D.f[dirTSW ])[ksw];//ktsw
+			real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// +  c1over216;(D.f[dirTSE ])[ks ];//ktse
+			real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// +  c1over216;(D.f[dirTNW ])[kw ];//ktnw
+			real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// +  c1over216;(D.f[dirBNE ])[kb ];//kbne
+			real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// +  c1over216;(D.f[dirBSW ])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// +  c1over216;(D.f[dirBSE ])[kbs];//kbse
+			real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// +  c1over216;(D.f[dirBNW ])[kbw];//kbnw
+			////////////////////////////////////////////////////////////////////////////////////
+			real rho = (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) + one ;//  !!!Achtung + one
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			//doubflo oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 			//					   (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 			//						((mfabb+mfcbb) + (mfbab+mfbcb)  +  (mfbba+mfbbc)));//fehlt mfbbb
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb)) / rho;
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab)) / rho;
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one; // comp special
-			//doubflo oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real oMdrho = one; // comp special
+			//real oMdrho = one - (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
 			//					   mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb +
 			//					   mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb);//fehlt mfbbb nicht mehr
-			//doubflo vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
+			//real vvx    =mfccc-mfaaa + mfcac-mfaca + mfcaa-mfacc + mfcca-mfaac + 
 			//				mfcba-mfabc + mfcbc-mfaba + mfcab-mfacb + mfccb-mfaab +
 			//				mfcbb-mfabb;
-			//doubflo vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
+			//real vvy    =mfccc-mfaaa + mfaca-mfcac + mfacc-mfcaa + mfcca-mfaac + 
 			//				mfbca-mfbac + mfbcc-mfbaa + mfacb-mfcab + mfccb-mfaab +
 			//				mfbcb-mfbab;
-			//doubflo vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
+			//real vvz    =mfccc-mfaaa + mfcac-mfaca + mfacc-mfcaa + mfaac-mfcca + 
 			//				mfbac-mfbca + mfbcc-mfbaa + mfabc-mfcba + mfcbc-mfaba +
 			//				mfbbc-mfbba;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo m0, m1, m2;	
-			doubflo vx2;
-			doubflo vy2;
-			doubflo vz2;
+			real m0, m1, m2;	
+			real vx2;
+			real vy2;
+			real vz2;
 			vx2=vvx*vvx;
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimit = 0.01f;
+			real wadjust;
+			real qudricLimit = 0.01f;
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
 			////////////////////////////////////////////////////////////////////////////////////
@@ -1225,23 +1225,23 @@ extern "C" __global__ void LB_Kernel_MRT_Comp_SP_27(doubflo omega,
 			////////////////////////////////////////////////////////////////////////////////////
 			// MRT
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = one;
-			doubflo OxyyPxzz  = one;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
-			doubflo OxyyMxzz  = one;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
-			doubflo O4        = one;
-			doubflo O5        = one;
-			doubflo O6        = one;
+			real OxxPyyPzz = one;
+			real OxyyPxzz  = one;//two-omega;//eight*(two-omega)/(eight -omega);//one;//omega;//two-omega;//
+			real OxyyMxzz  = one;//omega;//one;//eight*(two-omega)/(eight -omega);//one;//two-omega;//one;// 
+			real O4        = one;
+			real O5        = one;
+			real O6        = one;
 
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	  = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	  = mfcaa - mfaac;
 
 			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			//incl. correction
 			{
-				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz+(-two*vx2+vy2+vz2)*rho) + c1o2 * OxxPyyPzz * (mfaaa+(vx2+vy2+vz2)*rho - mxxPyyPzz);
-				doubflo dyuy = dxux + omega * c3o2 * (mxxMyy+(-vx2+vy2)*rho);
-				doubflo dzuz = dxux + omega * c3o2 * (mxxMzz+(-vx2+vz2)*rho);
+				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz+(-two*vx2+vy2+vz2)*rho) + c1o2 * OxxPyyPzz * (mfaaa+(vx2+vy2+vz2)*rho - mxxPyyPzz);
+				real dyuy = dxux + omega * c3o2 * (mxxMyy+(-vx2+vy2)*rho);
+				real dzuz = dxux + omega * c3o2 * (mxxMzz+(-vx2+vz2)*rho);
 
 				//relax
 				mxxPyyPzz += OxxPyyPzz*(mfaaa +(vx2+vy2+vz2)*rho - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -1268,14 +1268,14 @@ extern "C" __global__ void LB_Kernel_MRT_Comp_SP_27(doubflo omega,
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			mxxyMyzz += OxyyMxzz*((vx2-vz2)*vvy*rho-mxxyMyzz);
 			mxxzMyyz += OxyyMxzz*((vx2-vy2)*vvz*rho-mxxzMyyz);
diff --git a/src/VirtualFluids_GPU/GPU/NoSlipBCs27.cu b/src/VirtualFluids_GPU/GPU/NoSlipBCs27.cu
index bca8f48d4..64ae52f36 100644
--- a/src/VirtualFluids_GPU/GPU/NoSlipBCs27.cu
+++ b/src/VirtualFluids_GPU/GPU/NoSlipBCs27.cu
@@ -5,12 +5,12 @@
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QDeviceCompThinWallsPartOne27(int inx,
 														 int iny,
-														 doubflo* DD, 
+														 real* DD, 
 														 int* k_Q, 
-														 doubflo* QQ,
+														 real* QQ,
 														 unsigned int sizeQ,
 														 int kQ, 
-														 doubflo om1, 
+														 real om1, 
 														 unsigned int* neighborX,
 														 unsigned int* neighborY,
 														 unsigned int* neighborZ,
@@ -92,7 +92,7 @@ extern "C" __global__ void QDeviceCompThinWallsPartOne27(int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -154,7 +154,7 @@ extern "C" __global__ void QDeviceCompThinWallsPartOne27(int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
             f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -184,7 +184,7 @@ extern "C" __global__ void QDeviceCompThinWallsPartOne27(int inx,
       f_TNW  = (D.f[dirBSE ])[kbse ];
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
 				f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
 				f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -202,7 +202,7 @@ extern "C" __global__ void QDeviceCompThinWallsPartOne27(int inx,
                   (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                   (f_T - f_B)) / (one + drho); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
 
       //////////////////////////////////////////////////////////////////////////
       //if (evenOrOdd==false)
@@ -525,12 +525,12 @@ extern "C" __global__ void QDeviceCompThinWallsPartOne27(int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QDeviceCompThinWallsPartTwo27(int inx,
 														 int iny,
-														 doubflo* DD, 
+														 real* DD, 
 														 int* k_Q, 
-														 doubflo* QQ,
+														 real* QQ,
 														 unsigned int sizeQ,
 														 int kQ, 
-														 doubflo om1, 
+														 real om1, 
 														 unsigned int* geom,
 														 unsigned int* neighborX,
 														 unsigned int* neighborY,
@@ -553,7 +553,7 @@ extern "C" __global__ void QDeviceCompThinWallsPartTwo27(int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -759,7 +759,7 @@ extern "C" __global__ void QDeviceCompThinWallsPartTwo27(int inx,
 	  //directions exchange if solid neighbor
 	  //( 1  1  1) ( 1  0  0) ( 0  1  0) ( 0  0  1) ( 1  1  0) ( 1  0  1) ( 0  1  1) (-1 -1  1) (-1  1 -1) ( 1 -1 -1) (-1  1  0) (-1  0  1) ( 0 -1  1)
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo q, tmp;
+	  real q, tmp;
       q = q_dirE[k];   if (q>=zero && q<=one){ if (geom[kw  ] < GEO_FLUID){tmp = (DN.f[dirW  ])[kw  ]; (DN.f[dirW  ])[kw  ]=(D.f[dirW  ])[kw  ]; (D.f[dirW  ])[kw  ]=tmp;}}
 	  q = q_dirW[k];   if (q>=zero && q<=one){                            {tmp = (DN.f[dirE  ])[ke  ]; (DN.f[dirE  ])[ke  ]=(D.f[dirE  ])[ke  ]; (D.f[dirE  ])[ke  ]=tmp;}}
       q = q_dirN[k];   if (q>=zero && q<=one){ if (geom[ks  ] < GEO_FLUID){tmp = (DN.f[dirS  ])[ks  ]; (DN.f[dirS  ])[ks  ]=(D.f[dirS  ])[ks  ]; (D.f[dirS  ])[ks  ]=tmp;}}
@@ -831,12 +831,12 @@ extern "C" __global__ void QDeviceCompThinWallsPartTwo27(int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QDevice3rdMomentsComp27(  int inx,
 													 int iny,
-													 doubflo* DD, 
+													 real* DD, 
 													 int* k_Q, 
-													 doubflo* QQ,
+													 real* QQ,
 													 unsigned int sizeQ,
 													 int kQ, 
-													 doubflo om1, 
+													 real om1, 
 													 unsigned int* neighborX,
 													 unsigned int* neighborY,
 													 unsigned int* neighborZ,
@@ -918,7 +918,7 @@ extern "C" __global__ void QDevice3rdMomentsComp27(  int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -980,7 +980,7 @@ extern "C" __global__ void QDevice3rdMomentsComp27(  int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
             f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -1010,7 +1010,7 @@ extern "C" __global__ void QDevice3rdMomentsComp27(  int inx,
       f_TNW  = (D.f[dirBSE ])[kbse ];
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q, m3;
+      real vx1, vx2, vx3, drho, feq, q, m3;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
 				f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
 				f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -1028,7 +1028,7 @@ extern "C" __global__ void QDevice3rdMomentsComp27(  int inx,
                   (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                   (f_T - f_B)) / (one + drho); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -1377,12 +1377,12 @@ extern "C" __global__ void QDevice3rdMomentsComp27(  int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QDeviceIncompHighNu27(int inx,
 												 int iny,
-												 doubflo* DD, 
+												 real* DD, 
 												 int* k_Q, 
-												 doubflo* QQ,
+												 real* QQ,
 												 unsigned int sizeQ,
 												 int kQ, 
-												 doubflo om1, 
+												 real om1, 
 												 unsigned int* neighborX,
 												 unsigned int* neighborY,
 												 unsigned int* neighborZ,
@@ -1464,7 +1464,7 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -1526,7 +1526,7 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
             f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_E   = (D.f[dirE   ])[ke   ];
@@ -1556,7 +1556,7 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx,
       f_BSE = (D.f[dirBSE ])[kbse ];
       f_BNW = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
 				f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
 				f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -1574,7 +1574,7 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx,
                   (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                   (f_T - f_B));// / (one + drho); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);// * (one + drho);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);// * (one + drho);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -1641,9 +1641,9 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx,
       //Test
          //(D.f[dirZERO])[k]=c1o10;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo VeloX = zero;
-      doubflo VeloY = zero;
-      doubflo VeloZ = zero;
+      real VeloX = zero;
+      real VeloY = zero;
+      real VeloZ = zero;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  
 	  
@@ -1875,12 +1875,12 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QDeviceCompHighNu27(  int inx,
 												 int iny,
-												 doubflo* DD, 
+												 real* DD, 
 												 int* k_Q, 
-												 doubflo* QQ,
+												 real* QQ,
 												 unsigned int sizeQ,
 												 int kQ, 
-												 doubflo om1, 
+												 real om1, 
 												 unsigned int* neighborX,
 												 unsigned int* neighborY,
 												 unsigned int* neighborZ,
@@ -1962,7 +1962,7 @@ extern "C" __global__ void QDeviceCompHighNu27(  int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -2024,7 +2024,7 @@ extern "C" __global__ void QDeviceCompHighNu27(  int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
             f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_E   = (D.f[dirE   ])[ke   ];
@@ -2080,7 +2080,7 @@ extern "C" __global__ void QDeviceCompHighNu27(  int inx,
       //f_TNW  = (D.f[dirBSE ])[kbse ];
       //f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
 				f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
 				f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -2098,7 +2098,7 @@ extern "C" __global__ void QDeviceCompHighNu27(  int inx,
                   (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                   (f_T - f_B)) / (one + drho); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -2165,9 +2165,9 @@ extern "C" __global__ void QDeviceCompHighNu27(  int inx,
       //Test
          //(D.f[dirZERO])[k]=c1o10;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo VeloX = zero;
-      doubflo VeloY = zero;
-      doubflo VeloZ = zero;
+      real VeloX = zero;
+      real VeloY = zero;
+      real VeloZ = zero;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  
 	  
@@ -2451,12 +2451,12 @@ extern "C" __global__ void QDeviceCompHighNu27(  int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QDeviceComp27(int inx,
 										 int iny,
-										 doubflo* DD, 
+										 real* DD, 
 										 int* k_Q, 
-										 doubflo* QQ,
+										 real* QQ,
 										 unsigned int sizeQ,
 										 int kQ, 
-										 doubflo om1, 
+										 real om1, 
 										 unsigned int* neighborX,
 										 unsigned int* neighborY,
 										 unsigned int* neighborZ,
@@ -2538,7 +2538,7 @@ extern "C" __global__ void QDeviceComp27(int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -2600,7 +2600,7 @@ extern "C" __global__ void QDeviceComp27(int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
             f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -2630,7 +2630,7 @@ extern "C" __global__ void QDeviceComp27(int inx,
       f_TNW  = (D.f[dirBSE ])[kbse ];
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
 				f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
 				f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -2648,7 +2648,7 @@ extern "C" __global__ void QDeviceComp27(int inx,
                   (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                   (f_T - f_B)) / (one + drho); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -2971,12 +2971,12 @@ extern "C" __global__ void QDeviceComp27(int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QDevice27(int inx,
                                      int iny,
-                                     doubflo* DD, 
+                                     real* DD, 
                                      int* k_Q, 
-                                     doubflo* QQ,
+                                     real* QQ,
                                      unsigned int sizeQ,
                                      int kQ, 
-                                     doubflo om1, 
+                                     real om1, 
                                      unsigned int* neighborX,
                                      unsigned int* neighborY,
                                      unsigned int* neighborZ,
@@ -3058,7 +3058,7 @@ extern "C" __global__ void QDevice27(int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -3148,7 +3148,7 @@ extern "C" __global__ void QDevice27(int inx,
       //unsigned int ktne = KQK;
       //unsigned int kbsw = KQK + nxny + nx + 1;
       ////////////////////////////////////////////////////////////////////////////////
-      //doubflo vx1, vx2, vx3, drho, feq, q;
+      //real vx1, vx2, vx3, drho, feq, q;
       //drho    =   (D.f[dirE   ])[ke  ]+ (D.f[dirW   ])[kw  ]+ 
       //            (D.f[dirN   ])[kn  ]+ (D.f[dirS   ])[ks  ]+
       //            (D.f[dirT   ])[kt  ]+ (D.f[dirB   ])[kb  ]+
@@ -3194,9 +3194,9 @@ extern "C" __global__ void QDevice27(int inx,
       //            (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]- 
       //            (D.f[dirBSE ])[kbse]- (D.f[dirBNW ])[kbnw];
 
-      //doubflo cu_sq=1.5f*(vx1*vx1+vx2*vx2+vx3*vx3);
+      //real cu_sq=1.5f*(vx1*vx1+vx2*vx2+vx3*vx3);
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
             f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -3226,7 +3226,7 @@ extern "C" __global__ void QDevice27(int inx,
       f_TNW  = (D.f[dirBSE ])[kbse ];
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
 				f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
 				f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -3244,7 +3244,7 @@ extern "C" __global__ void QDevice27(int inx,
                   (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                   (f_T - f_B); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
 	  //böser lecktest
 	  //q = q_dirE[k];
@@ -3907,12 +3907,12 @@ extern "C" __global__ void QDevice27(int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void BBDevice27(int inx,
                                      int iny,
-                                     doubflo* DD, 
+                                     real* DD, 
                                      int* k_Q, 
-                                     doubflo* QQ,
+                                     real* QQ,
                                      unsigned int sizeQ,
                                      int kQ, 
-                                     doubflo om1, 
+                                     real om1, 
                                      unsigned int* neighborX,
                                      unsigned int* neighborY,
                                      unsigned int* neighborZ,
@@ -3994,7 +3994,7 @@ extern "C" __global__ void BBDevice27(int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
          *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
          *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
          *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -4086,7 +4086,7 @@ extern "C" __global__ void BBDevice27(int inx,
       ////////////////////////////////////////////////////////////////////////////////
      
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
          f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -4181,7 +4181,7 @@ extern "C" __global__ void BBDevice27(int inx,
       //Test
       //(D.f[dirZERO])[k]=c1o10;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo q;
+      real q;
       q = q_dirE[k];
       if (q>=zero && q<=one)
       {
diff --git a/src/VirtualFluids_GPU/GPU/Particles.cu b/src/VirtualFluids_GPU/GPU/Particles.cu
index ed570ddf3..50e3a9cf8 100644
--- a/src/VirtualFluids_GPU/GPU/Particles.cu
+++ b/src/VirtualFluids_GPU/GPU/Particles.cu
@@ -4,19 +4,19 @@
 
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void InitParticles( doubflo* coordX,
-										  doubflo* coordY,
-										  doubflo* coordZ, 
-										  doubflo* coordParticleXlocal,
-										  doubflo* coordParticleYlocal,
-										  doubflo* coordParticleZlocal,
-										  doubflo* coordParticleXglobal,
-										  doubflo* coordParticleYglobal,
-										  doubflo* coordParticleZglobal,
-										  doubflo* veloParticleX,
-										  doubflo* veloParticleY,
-										  doubflo* veloParticleZ,
-										  doubflo* randArray,
+extern "C" __global__ void InitParticles( real* coordX,
+										  real* coordY,
+										  real* coordZ, 
+										  real* coordParticleXlocal,
+										  real* coordParticleYlocal,
+										  real* coordParticleZlocal,
+										  real* coordParticleXglobal,
+										  real* coordParticleYglobal,
+										  real* coordParticleZglobal,
+										  real* veloParticleX,
+										  real* veloParticleY,
+										  real* veloParticleZ,
+										  real* randArray,
 										  unsigned int* particleID,
 										  unsigned int* cellBaseID,
 										  unsigned int* bcMatD,
@@ -41,25 +41,25 @@ extern "C" __global__ void InitParticles( doubflo* coordX,
 
    if(k < numberOfParticles)
    {
-	 //   doubflo centerX = one;						//uebergabeparameter
-	 //   doubflo centerY = 10.5f;					//uebergabeparameter
-		//doubflo centerZ = 10.5f;					//uebergabeparameter
-		//doubflo diameter = 21.0f;					//uebergabeparameter
+	 //   real centerX = one;						//uebergabeparameter
+	 //   real centerY = 10.5f;					//uebergabeparameter
+		//real centerZ = 10.5f;					//uebergabeparameter
+		//real diameter = 21.0f;					//uebergabeparameter
 		//unsigned int numberOfParticleSizes = 41;	//uebergabeparameter
 		//unsigned int nops = (unsigned int)(randArray[k]*numberOfParticleSizes);
-		//doubflo xCoordPart = one;
-		//doubflo yCoordPart = (doubflo)(randArray[k]*diameter);
-		//doubflo zCoordPart = one;
+		//real xCoordPart = one;
+		//real yCoordPart = (real)(randArray[k]*diameter);
+		//real zCoordPart = one;
 		//if (k==0)
 		//{
-		//	zCoordPart = (doubflo)(randArray[k+1]*diameter);
+		//	zCoordPart = (real)(randArray[k+1]*diameter);
 		//}
 		//else
 		//{
-		//	zCoordPart = (doubflo)(randArray[k-1]*diameter);
+		//	zCoordPart = (real)(randArray[k-1]*diameter);
 		//}
-		//doubflo distance = powf((zCoordPart-centerZ),2) + powf((yCoordPart-centerY),2);
-		//doubflo refDistance = powf((diameter*c1o2),2);
+		//real distance = powf((zCoordPart-centerZ),2) + powf((yCoordPart-centerY),2);
+		//real refDistance = powf((diameter*c1o2),2);
 		//if (distance > refDistance)
 		//{
 		//	zCoordPart = sqrtf(powf((diameter*c1o2),2) - powf((yCoordPart-centerY),2)) + centerZ;
@@ -77,9 +77,9 @@ extern "C" __global__ void InitParticles( doubflo* coordX,
 			cbID = (unsigned int)(randArray[k]*(size_Mat - i)); 
 		}
 	   
-		doubflo coordinateX;
-		doubflo coordinateY;
-		doubflo coordinateZ;
+		real coordinateX;
+		real coordinateY;
+		real coordinateZ;
 
 		unsigned int BC  = bcMatD[cbID];
 		unsigned int BCx = bcMatD[neighborX[cbID]];
@@ -109,17 +109,17 @@ extern "C" __global__ void InitParticles( doubflo* coordX,
 		}
 
 
-		doubflo localX = randArray[k] / (doubflo)(pow(two,level));
-		doubflo localY = randArray[k] / (doubflo)(pow(two,level));
-		doubflo localZ = randArray[k] / (doubflo)(pow(two,level));
+		real localX = randArray[k] / (real)(pow(two,level));
+		real localY = randArray[k] / (real)(pow(two,level));
+		real localZ = randArray[k] / (real)(pow(two,level));
 
-		doubflo globalX = coordinateX + localX;
-		doubflo globalY = coordinateY + localY;
-		doubflo globalZ = coordinateZ + localZ;
+		real globalX = coordinateX + localX;
+		real globalY = coordinateY + localY;
+		real globalZ = coordinateZ + localZ;
 
-  		doubflo veloX = zero;
-		doubflo veloY = zero;
-		doubflo veloZ = zero;
+  		real veloX = zero;
+		real veloY = zero;
+		real veloZ = zero;
 
 		particleID[k]           = k      ;
 		cellBaseID[k]           = cbID   ;
@@ -155,20 +155,20 @@ extern "C" __global__ void InitParticles( doubflo* coordX,
 
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void MoveParticles( doubflo* coordX,
-										  doubflo* coordY,
-										  doubflo* coordZ, 
-										  doubflo* coordParticleXlocal,
-										  doubflo* coordParticleYlocal,
-										  doubflo* coordParticleZlocal,
-										  doubflo* coordParticleXglobal,
-										  doubflo* coordParticleYglobal,
-										  doubflo* coordParticleZglobal,
-										  doubflo* veloParticleX,
-										  doubflo* veloParticleY,
-										  doubflo* veloParticleZ,
-										  doubflo* DD,
-										  doubflo  omega,
+extern "C" __global__ void MoveParticles( real* coordX,
+										  real* coordY,
+										  real* coordZ, 
+										  real* coordParticleXlocal,
+										  real* coordParticleYlocal,
+										  real* coordParticleZlocal,
+										  real* coordParticleXglobal,
+										  real* coordParticleYglobal,
+										  real* coordParticleZglobal,
+										  real* veloParticleX,
+										  real* veloParticleY,
+										  real* veloParticleZ,
+										  real* DD,
+										  real  omega,
 										  unsigned int* particleID,
 										  unsigned int* cellBaseID,
 										  unsigned int* bcMatD,
@@ -194,29 +194,29 @@ extern "C" __global__ void MoveParticles( doubflo* coordX,
    const unsigned k = nx*(ny*iz + iy) + ix;
    //////////////////////////////////////////////////////////////////////////
 
-   doubflo press,vx1,vx2,vx3;
-   doubflo drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
-   doubflo kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
-   doubflo d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
-
-   doubflo x,y,z;
+   real press,vx1,vx2,vx3;
+   real drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
+   real kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+   real d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
+
+   real x,y,z;
 
    if(k < numberOfParticles)
    {
@@ -873,30 +873,30 @@ extern "C" __global__ void MoveParticles( doubflo* coordX,
 
 			  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			  unsigned int kTimeStepOld = kTimeStep - numberOfParticles;
-			  doubflo localX = coordParticleXlocal[kTimeStepOld];
-			  doubflo localY = coordParticleYlocal[kTimeStepOld];
-			  doubflo localZ = coordParticleZlocal[kTimeStepOld];
+			  real localX = coordParticleXlocal[kTimeStepOld];
+			  real localY = coordParticleYlocal[kTimeStepOld];
+			  real localZ = coordParticleZlocal[kTimeStepOld];
 
-			  x = (localX * (doubflo)(pow(two,level))) - c1o2; //-c1o4;
-			  y = (localY * (doubflo)(pow(two,level))) - c1o2; //-c1o4;
-			  z = (localZ * (doubflo)(pow(two,level))) - c1o2; //-c1o4;
+			  x = (localX * (real)(pow(two,level))) - c1o2; //-c1o4;
+			  y = (localY * (real)(pow(two,level))) - c1o2; //-c1o4;
+			  z = (localZ * (real)(pow(two,level))) - c1o2; //-c1o4;
 			  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
 			  vx1 = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
 			  vx2 = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
 			  vx3 = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
 
-			  doubflo veloPreX = veloParticleX[kTimeStepOld];
-			  doubflo veloPreY = veloParticleY[kTimeStepOld];
-			  doubflo veloPreZ = veloParticleZ[kTimeStepOld];
+			  real veloPreX = veloParticleX[kTimeStepOld];
+			  real veloPreY = veloParticleY[kTimeStepOld];
+			  real veloPreZ = veloParticleZ[kTimeStepOld];
 
-			  doubflo veloPostX = (veloPreX + vx1) * c1o2;
-			  doubflo veloPostY = (veloPreY + vx2) * c1o2;
-			  doubflo veloPostZ = (veloPreZ + vx3) * c1o2;
+			  real veloPostX = (veloPreX + vx1) * c1o2;
+			  real veloPostY = (veloPreY + vx2) * c1o2;
+			  real veloPostZ = (veloPreZ + vx3) * c1o2;
 
-			  //doubflo veloPostX = vx1;
-			  //doubflo veloPostY = vx2;
-			  //doubflo veloPostZ = vx3;
+			  //real veloPostX = vx1;
+			  //real veloPostY = vx2;
+			  //real veloPostZ = vx3;
 
 			  veloParticleX[kTimeStep] = veloPostX;
 			  veloParticleY[kTimeStep] = veloPostY;
@@ -928,9 +928,9 @@ extern "C" __global__ void MoveParticles( doubflo* coordX,
 				  z = z - one;
 			  }
 
-			  doubflo tempX = x;
-			  doubflo tempY = y;
-			  doubflo tempZ = z;
+			  real tempX = x;
+			  real tempY = y;
+			  real tempZ = z;
 
 			  if ((x < -c1o2) || (y < -c1o2) || (z < -c1o2))
 			  {
@@ -960,18 +960,18 @@ extern "C" __global__ void MoveParticles( doubflo* coordX,
 			  y = tempY;
 			  z = tempZ;
 
-			  localX = (x + c1o2) / (doubflo)(pow(two,level));
-			  localY = (y + c1o2) / (doubflo)(pow(two,level));
-			  localZ = (z + c1o2) / (doubflo)(pow(two,level));
+			  localX = (x + c1o2) / (real)(pow(two,level));
+			  localY = (y + c1o2) / (real)(pow(two,level));
+			  localZ = (z + c1o2) / (real)(pow(two,level));
 			  coordParticleXlocal[kTimeStep] = localX;
 			  coordParticleYlocal[kTimeStep] = localY;
 			  coordParticleZlocal[kTimeStep] = localZ;
 			  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 			  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			  doubflo globalX = localX + coordX[cbID];
-			  doubflo globalY = localY + coordY[cbID];
-			  doubflo globalZ = localZ + coordZ[cbID];
+			  real globalX = localX + coordX[cbID];
+			  real globalY = localY + coordY[cbID];
+			  real globalZ = localZ + coordZ[cbID];
 			  coordParticleXglobal[kTimeStep] = globalX;
 			  coordParticleYglobal[kTimeStep] = globalY;
 			  coordParticleZglobal[kTimeStep] = globalZ;
@@ -1026,20 +1026,20 @@ extern "C" __global__ void MoveParticles( doubflo* coordX,
 
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void MoveParticlesWithoutBCs(   doubflo* coordX,
-													  doubflo* coordY,
-													  doubflo* coordZ, 
-													  doubflo* coordParticleXlocal,
-													  doubflo* coordParticleYlocal,
-													  doubflo* coordParticleZlocal,
-													  doubflo* coordParticleXglobal,
-													  doubflo* coordParticleYglobal,
-													  doubflo* coordParticleZglobal,
-													  doubflo* veloParticleX,
-													  doubflo* veloParticleY,
-													  doubflo* veloParticleZ,
-													  doubflo* DD,
-													  doubflo  omega,
+extern "C" __global__ void MoveParticlesWithoutBCs(   real* coordX,
+													  real* coordY,
+													  real* coordZ, 
+													  real* coordParticleXlocal,
+													  real* coordParticleYlocal,
+													  real* coordParticleZlocal,
+													  real* coordParticleXglobal,
+													  real* coordParticleYglobal,
+													  real* coordParticleZglobal,
+													  real* veloParticleX,
+													  real* veloParticleY,
+													  real* veloParticleZ,
+													  real* DD,
+													  real  omega,
 													  unsigned int* particleID,
 													  unsigned int* cellBaseID,
 													  unsigned int* bcMatD,
@@ -1065,29 +1065,29 @@ extern "C" __global__ void MoveParticlesWithoutBCs(   doubflo* coordX,
    const unsigned k = nx*(ny*iz + iy) + ix;
    //////////////////////////////////////////////////////////////////////////
 
-   doubflo press,vx1,vx2,vx3;
-   doubflo drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
-   doubflo kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
-   doubflo d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
-
-   doubflo x,y,z;
+   real press,vx1,vx2,vx3;
+   real drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
+   real kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+   real d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
+
+   real x,y,z;
 
    if(k < numberOfParticles)
    {
@@ -1738,30 +1738,30 @@ extern "C" __global__ void MoveParticlesWithoutBCs(   doubflo* coordX,
 
 			  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			  unsigned int kTimeStepOld = kTimeStep - numberOfParticles;
-			  doubflo localX = coordParticleXlocal[kTimeStepOld];
-			  doubflo localY = coordParticleYlocal[kTimeStepOld];
-			  doubflo localZ = coordParticleZlocal[kTimeStepOld];
+			  real localX = coordParticleXlocal[kTimeStepOld];
+			  real localY = coordParticleYlocal[kTimeStepOld];
+			  real localZ = coordParticleZlocal[kTimeStepOld];
 
-			  x = (localX * (doubflo)(pow(two,level))) - c1o2; //-c1o4;
-			  y = (localY * (doubflo)(pow(two,level))) - c1o2; //-c1o4;
-			  z = (localZ * (doubflo)(pow(two,level))) - c1o2; //-c1o4;
+			  x = (localX * (real)(pow(two,level))) - c1o2; //-c1o4;
+			  y = (localY * (real)(pow(two,level))) - c1o2; //-c1o4;
+			  z = (localZ * (real)(pow(two,level))) - c1o2; //-c1o4;
 			  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			  press = d0 + x*dx + y*dy + z*dz + x*y*dxy + x*z*dxz + y*z*dyz + x*y*z*dxyz;
 			  vx1 = (a0 + x*ax + y*ay + z*az + x*x*axx + y*y*ayy + z*z*azz + x*y*axy + x*z*axz + y*z*ayz + x*y*z*axyz);
 			  vx2 = (b0 + x*bx + y*by + z*bz + x*x*bxx + y*y*byy + z*z*bzz + x*y*bxy + x*z*bxz + y*z*byz + x*y*z*bxyz);
 			  vx3 = (c0 + x*cx + y*cy + z*cz + x*x*cxx + y*y*cyy + z*z*czz + x*y*cxy + x*z*cxz + y*z*cyz + x*y*z*cxyz);
 
-			  doubflo veloPreX = veloParticleX[kTimeStepOld];
-			  doubflo veloPreY = veloParticleY[kTimeStepOld];
-			  doubflo veloPreZ = veloParticleZ[kTimeStepOld];
+			  real veloPreX = veloParticleX[kTimeStepOld];
+			  real veloPreY = veloParticleY[kTimeStepOld];
+			  real veloPreZ = veloParticleZ[kTimeStepOld];
 
-			  doubflo veloPostX = (veloPreX + vx1) * c1o2;
-			  doubflo veloPostY = (veloPreY + vx2) * c1o2;
-			  doubflo veloPostZ = (veloPreZ + vx3) * c1o2;
+			  real veloPostX = (veloPreX + vx1) * c1o2;
+			  real veloPostY = (veloPreY + vx2) * c1o2;
+			  real veloPostZ = (veloPreZ + vx3) * c1o2;
 
-			  //doubflo veloPostX = vx1;
-			  //doubflo veloPostY = vx2;
-			  //doubflo veloPostZ = vx3;
+			  //real veloPostX = vx1;
+			  //real veloPostY = vx2;
+			  //real veloPostZ = vx3;
 
 			  veloParticleX[kTimeStep] = veloPostX;
 			  veloParticleY[kTimeStep] = veloPostY;
@@ -1793,9 +1793,9 @@ extern "C" __global__ void MoveParticlesWithoutBCs(   doubflo* coordX,
 				  z = z - one;
 			  }
 
-			  doubflo tempX = x;
-			  doubflo tempY = y;
-			  doubflo tempZ = z;
+			  real tempX = x;
+			  real tempY = y;
+			  real tempZ = z;
 
 			  if ((x < -c1o2) || (y < -c1o2) || (z < -c1o2))
 			  {
@@ -1825,18 +1825,18 @@ extern "C" __global__ void MoveParticlesWithoutBCs(   doubflo* coordX,
 			  y = tempY;
 			  z = tempZ;
 
-			  localX = (x + c1o2) / (doubflo)(pow(two,level));
-			  localY = (y + c1o2) / (doubflo)(pow(two,level));
-			  localZ = (z + c1o2) / (doubflo)(pow(two,level));
+			  localX = (x + c1o2) / (real)(pow(two,level));
+			  localY = (y + c1o2) / (real)(pow(two,level));
+			  localZ = (z + c1o2) / (real)(pow(two,level));
 			  coordParticleXlocal[kTimeStep] = localX;
 			  coordParticleYlocal[kTimeStep] = localY;
 			  coordParticleZlocal[kTimeStep] = localZ;
 			  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 			  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			  doubflo globalX = localX + coordX[cbID];
-			  doubflo globalY = localY + coordY[cbID];
-			  doubflo globalZ = localZ + coordZ[cbID];
+			  real globalX = localX + coordX[cbID];
+			  real globalY = localY + coordY[cbID];
+			  real globalZ = localZ + coordZ[cbID];
 			  coordParticleXglobal[kTimeStep] = globalX;
 			  coordParticleYglobal[kTimeStep] = globalY;
 			  coordParticleZglobal[kTimeStep] = globalZ;
@@ -1891,21 +1891,21 @@ extern "C" __global__ void MoveParticlesWithoutBCs(   doubflo* coordX,
 
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void ParticleNoSlipDeviceComp27(doubflo* coordX,
-													  doubflo* coordY,
-													  doubflo* coordZ, 
-													  doubflo* coordParticleXlocal,
-													  doubflo* coordParticleYlocal,
-													  doubflo* coordParticleZlocal,
-													  doubflo* coordParticleXglobal,
-													  doubflo* coordParticleYglobal,
-													  doubflo* coordParticleZglobal,
-													  doubflo* veloParticleX,
-													  doubflo* veloParticleY,
-													  doubflo* veloParticleZ,
-													  doubflo* randArray,
-													  doubflo* DD,
-													  doubflo  omega,
+extern "C" __global__ void ParticleNoSlipDeviceComp27(real* coordX,
+													  real* coordY,
+													  real* coordZ, 
+													  real* coordParticleXlocal,
+													  real* coordParticleYlocal,
+													  real* coordParticleZlocal,
+													  real* coordParticleXglobal,
+													  real* coordParticleYglobal,
+													  real* coordParticleZglobal,
+													  real* veloParticleX,
+													  real* veloParticleY,
+													  real* veloParticleZ,
+													  real* randArray,
+													  real* DD,
+													  real  omega,
 													  unsigned int* particleID,
 													  unsigned int* cellBaseID,
 													  unsigned int* bcMatD,
@@ -1918,11 +1918,11 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(doubflo* coordX,
 													  unsigned int timestep, 
 													  unsigned int numberOfParticles, 
 													  int* k_Q, 
-													  doubflo* QQ,
+													  real* QQ,
 													  unsigned int sizeQ,
-													  doubflo* NormalX,
-													  doubflo* NormalY,
-													  doubflo* NormalZ,
+													  real* NormalX,
+													  real* NormalY,
+													  real* NormalZ,
 													  unsigned int size_Mat, 
 													  bool evenOrOdd)
 {
@@ -2001,7 +2001,7 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(doubflo* coordX,
    if(k<sizeQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -2033,7 +2033,7 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(doubflo* coordX,
       q_dirBSE = &QQ[dirBSE *sizeQ];
       q_dirBNW = &QQ[dirBNW *sizeQ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *nx_dirE,   *nx_dirW,   *nx_dirN,   *nx_dirS,   *nx_dirT,   *nx_dirB, 
+      real *nx_dirE,   *nx_dirW,   *nx_dirN,   *nx_dirS,   *nx_dirT,   *nx_dirB, 
               *nx_dirNE,  *nx_dirSW,  *nx_dirSE,  *nx_dirNW,  *nx_dirTE,  *nx_dirBW,
               *nx_dirBE,  *nx_dirTW,  *nx_dirTN,  *nx_dirBS,  *nx_dirBN,  *nx_dirTS,
               *nx_dirTNE, *nx_dirTSW, *nx_dirTSE, *nx_dirTNW, *nx_dirBNE, *nx_dirBSW,
@@ -2065,7 +2065,7 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(doubflo* coordX,
       nx_dirBSE = &NormalX[dirBSE *sizeQ];
       nx_dirBNW = &NormalX[dirBNW *sizeQ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *ny_dirE,   *ny_dirW,   *ny_dirN,   *ny_dirS,   *ny_dirT,   *ny_dirB, 
+      real *ny_dirE,   *ny_dirW,   *ny_dirN,   *ny_dirS,   *ny_dirT,   *ny_dirB, 
               *ny_dirNE,  *ny_dirSW,  *ny_dirSE,  *ny_dirNW,  *ny_dirTE,  *ny_dirBW,
               *ny_dirBE,  *ny_dirTW,  *ny_dirTN,  *ny_dirBS,  *ny_dirBN,  *ny_dirTS,
               *ny_dirTNE, *ny_dirTSW, *ny_dirTSE, *ny_dirTNW, *ny_dirBNE, *ny_dirBSW,
@@ -2097,7 +2097,7 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(doubflo* coordX,
       ny_dirBSE = &NormalY[dirBSE *sizeQ];
       ny_dirBNW = &NormalY[dirBNW *sizeQ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *nz_dirE,   *nz_dirW,   *nz_dirN,   *nz_dirS,   *nz_dirT,   *nz_dirB, 
+      real *nz_dirE,   *nz_dirW,   *nz_dirN,   *nz_dirS,   *nz_dirT,   *nz_dirB, 
               *nz_dirNE,  *nz_dirSW,  *nz_dirSE,  *nz_dirNW,  *nz_dirTE,  *nz_dirBW,
               *nz_dirBE,  *nz_dirTW,  *nz_dirTN,  *nz_dirBS,  *nz_dirBN,  *nz_dirTS,
               *nz_dirTNE, *nz_dirTSW, *nz_dirTSE, *nz_dirTNW, *nz_dirBNE, *nz_dirBSW,
@@ -2181,34 +2181,34 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(doubflo* coordX,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
                 f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
                 f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -2226,7 +2226,7 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(doubflo* coordX,
                  (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                  (f_T - f_B)) / (one + drho); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -2290,9 +2290,9 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(doubflo* coordX,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo VeloX = vx1;
-	  doubflo VeloY = vx2;
-	  doubflo VeloZ = vx3;
+	  real VeloX = vx1;
+	  real VeloY = vx2;
+	  real VeloZ = vx3;
 
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    }
diff --git a/src/VirtualFluids_GPU/GPU/PorousMediaCumulant27.cu b/src/VirtualFluids_GPU/GPU/PorousMediaCumulant27.cu
index 124eab96c..affa3839c 100644
--- a/src/VirtualFluids_GPU/GPU/PorousMediaCumulant27.cu
+++ b/src/VirtualFluids_GPU/GPU/PorousMediaCumulant27.cu
@@ -4,17 +4,17 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27( doubflo omega,
+extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27( real omega,
 															unsigned int* neighborX,
 															unsigned int* neighborY,
 															unsigned int* neighborZ,
-															doubflo* DDStart,
+															real* DDStart,
 															int size_Mat,
 															int level,
-															doubflo* forces,
-															doubflo porosity,
-															doubflo darcy,
-															doubflo forchheimer,
+															real* forces,
+															real porosity,
+															real darcy,
+															real forchheimer,
 															unsigned int sizeOfPorousMedia,
 															unsigned int* nodeIdsPorousMedia,
 															bool EvenOrOdd)
@@ -105,52 +105,52 @@ extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27( doubflo omega,
 		unsigned int kbs  = neighborZ[ks];
 		unsigned int kbsw = neighborZ[ksw];
 		//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-		doubflo mfcbb = (D.f[dirE   ])[k  ];
-		doubflo mfabb = (D.f[dirW   ])[kw ];
-		doubflo mfbcb = (D.f[dirN   ])[k  ];
-		doubflo mfbab = (D.f[dirS   ])[ks ];
-		doubflo mfbbc = (D.f[dirT   ])[k  ];
-		doubflo mfbba = (D.f[dirB   ])[kb ];
-		doubflo mfccb = (D.f[dirNE  ])[k  ];
-		doubflo mfaab = (D.f[dirSW  ])[ksw];
-		doubflo mfcab = (D.f[dirSE  ])[ks ];
-		doubflo mfacb = (D.f[dirNW  ])[kw ];
-		doubflo mfcbc = (D.f[dirTE  ])[k  ];
-		doubflo mfaba = (D.f[dirBW  ])[kbw];
-		doubflo mfcba = (D.f[dirBE  ])[kb ];
-		doubflo mfabc = (D.f[dirTW  ])[kw ];
-		doubflo mfbcc = (D.f[dirTN  ])[k  ];
-		doubflo mfbaa = (D.f[dirBS  ])[kbs];
-		doubflo mfbca = (D.f[dirBN  ])[kb ];
-		doubflo mfbac = (D.f[dirTS  ])[ks ];
-		doubflo mfbbb = (D.f[dirZERO])[k  ];
-		doubflo mfccc = (D.f[dirTNE ])[k  ];
-		doubflo mfaac = (D.f[dirTSW ])[ksw];
-		doubflo mfcac = (D.f[dirTSE ])[ks ];
-		doubflo mfacc = (D.f[dirTNW ])[kw ];
-		doubflo mfcca = (D.f[dirBNE ])[kb ];
-		doubflo mfaaa = (D.f[dirBSW])[kbsw];
-		doubflo mfcaa = (D.f[dirBSE ])[kbs];
-		doubflo mfaca = (D.f[dirBNW ])[kbw];
-		////////////////////////////////////////////////////////////////////////////////////
-		doubflo drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+		real mfcbb = (D.f[dirE   ])[k  ];
+		real mfabb = (D.f[dirW   ])[kw ];
+		real mfbcb = (D.f[dirN   ])[k  ];
+		real mfbab = (D.f[dirS   ])[ks ];
+		real mfbbc = (D.f[dirT   ])[k  ];
+		real mfbba = (D.f[dirB   ])[kb ];
+		real mfccb = (D.f[dirNE  ])[k  ];
+		real mfaab = (D.f[dirSW  ])[ksw];
+		real mfcab = (D.f[dirSE  ])[ks ];
+		real mfacb = (D.f[dirNW  ])[kw ];
+		real mfcbc = (D.f[dirTE  ])[k  ];
+		real mfaba = (D.f[dirBW  ])[kbw];
+		real mfcba = (D.f[dirBE  ])[kb ];
+		real mfabc = (D.f[dirTW  ])[kw ];
+		real mfbcc = (D.f[dirTN  ])[k  ];
+		real mfbaa = (D.f[dirBS  ])[kbs];
+		real mfbca = (D.f[dirBN  ])[kb ];
+		real mfbac = (D.f[dirTS  ])[ks ];
+		real mfbbb = (D.f[dirZERO])[k  ];
+		real mfccc = (D.f[dirTNE ])[k  ];
+		real mfaac = (D.f[dirTSW ])[ksw];
+		real mfcac = (D.f[dirTSE ])[ks ];
+		real mfacc = (D.f[dirTNW ])[kw ];
+		real mfcca = (D.f[dirBNE ])[kb ];
+		real mfaaa = (D.f[dirBSW])[kbsw];
+		real mfcaa = (D.f[dirBSE ])[kbs];
+		real mfaca = (D.f[dirBNW ])[kbw];
+		////////////////////////////////////////////////////////////////////////////////////
+		real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 						(((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 						((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb;
 
-		doubflo rho = one+drho;
+		real rho = one+drho;
 		////////////////////////////////////////////////////////////////////////////////////
-		doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+		real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 					     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 					       (mfcbb-mfabb)) / rho;
-		doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+		real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 			             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 			               (mfbcb-mfbab)) / rho;
-		doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+		real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 			             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 			               (mfbbc-mfbba)) / rho;
-		doubflo vx2    = vvx*vvx;
-		doubflo vy2    = vvy*vvy;
-		doubflo vz2    = vvz*vvz;
+		real vx2    = vvx*vvx;
+		real vy2    = vvy*vvy;
+		real vz2    = vvz*vvz;
 		////////////////////////////////////////////////////////////////////////////////////
 		//porous media
 		vvx = -(two * vvx) / (-two - darcy - forchheimer * sqrtf(vx2 + vy2 + vz2));
@@ -161,23 +161,23 @@ extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27( doubflo omega,
 		//vvz = (two * vvz) / (two + 134.4 + 0.0068287 * sqrtf(vx2 + vy2 + vz2));
 		////////////////////////////////////////////////////////////////////////////////////
 		//the force be with you
-		doubflo fx = forces[0]/(pow(two,level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
-		doubflo fy = forces[1]/(pow(two,level)); //zero;
-		doubflo fz = forces[2]/(pow(two,level)); //zero;
+		real fx = forces[0]/(pow(two,level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+		real fy = forces[1]/(pow(two,level)); //zero;
+		real fz = forces[2]/(pow(two,level)); //zero;
 		vvx += fx*c1o2;
 		vvy += fy*c1o2;
 		vvz += fz*c1o2;
 		////////////////////////////////////////////////////////////////////////////////////
-		//doubflo omega = omega_in;
+		//real omega = omega_in;
 		////////////////////////////////////////////////////////////////////////////////////
-		doubflo oMdrho = one; // comp special
+		real oMdrho = one; // comp special
 		////////////////////////////////////////////////////////////////////////////////////
-		doubflo m0, m1, m2;	
+		real m0, m1, m2;	
 		//////////////////////////////////////////////////////////////////////////////////////
-		doubflo wadjust;
-		doubflo qudricLimitP = 0.01f;// * 0.0001f;
-		doubflo qudricLimitM = 0.01f;// * 0.0001f;
-		doubflo qudricLimitD = 0.01f;// * 0.001f;
+		real wadjust;
+		real qudricLimitP = 0.01f;// * 0.0001f;
+		real qudricLimitM = 0.01f;// * 0.0001f;
+		real qudricLimitD = 0.01f;// * 0.001f;
 		////////////////////////////////////////////////////////////////////////////////////
 		//Hin
 		////////////////////////////////////////////////////////////////////////////////////
@@ -412,47 +412,47 @@ extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27( doubflo omega,
 		////////////////////////////////////////////////////////////////////////////////////
 		// Cumulants
 		////////////////////////////////////////////////////////////////////////////////////
-		doubflo OxxPyyPzz = one;	//set the bulk viscosity one is high / two is very low and zero is (too) high
+		real OxxPyyPzz = one;	//set the bulk viscosity one is high / two is very low and zero is (too) high
 
 		////////////////////////////////////////////////////////////
 		//3.
 		//////////////////////////////
-		doubflo OxyyPxzz  = one;
-		doubflo OxyyMxzz  = one;
-		doubflo Oxyz      = one;
+		real OxyyPxzz  = one;
+		real OxyyMxzz  = one;
+		real Oxyz      = one;
 		////////////////////////////////////////////////////////////
 		//4.
 		//////////////////////////////
-		doubflo O4        = one;
+		real O4        = one;
 		////////////////////////////////////////////////////////////
 		//5.
 		//////////////////////////////
-		doubflo O5        = one;
+		real O5        = one;
 		////////////////////////////////////////////////////////////
 		//6.
 		//////////////////////////////
-		doubflo O6        = one;
+		real O6        = one;
 		////////////////////////////////////////////////////////////
 
 
 		//central moments to cumulants
 		//4.
-		doubflo CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
-		doubflo CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
-		doubflo CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
+		real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
+		real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
+		real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
 			  	 		
-		doubflo CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
-		doubflo CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
-		doubflo CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
+		real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
+		real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
+		real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
 
 		//5.
-		doubflo CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
-		doubflo CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
-		doubflo CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
+		real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
+		real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
+		real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
 		
 		//6.
 
-		doubflo CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
+		real CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
 						-           (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 						-    four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 						-     two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
@@ -471,17 +471,17 @@ extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27( doubflo omega,
 
 		//2.
 		// linear combinations
-		doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-		doubflo mxxMyy    = mfcaa - mfaca;
-		doubflo mxxMzz	  = mfcaa - mfaac;
+		real mxxPyyPzz = mfcaa + mfaca + mfaac;
+		real mxxMyy    = mfcaa - mfaca;
+		real mxxMzz	  = mfcaa - mfaac;
 		
 		//////////////////////////////////////////////////////////////////////////
-		doubflo magicBulk=(CUMacc+CUMcac+CUMcca)*(one/OxxPyyPzz-c1o2)*c3o2*8.;
+		real magicBulk=(CUMacc+CUMcac+CUMcca)*(one/OxxPyyPzz-c1o2)*c3o2*8.;
 
 		//////////////////////////////////////////////////////////////////////////
 		//limiter-Scheise Teil 1
-		//doubflo oxxyy,oxxzz,oxy,oxz,oyz;
-		//doubflo smag=0.001;
+		//real oxxyy,oxxzz,oxy,oxz,oyz;
+		//real smag=0.001;
 		//oxxyy    = omega+(one-omega)*abs(mxxMyy)/(abs(mxxMyy)+smag);
 		//oxxzz    = omega+(one-omega)*abs(mxxMzz)/(abs(mxxMzz)+smag);
 		//oxy      = omega+(one-omega)*abs(mfbba)/(abs(mfbba)+smag);
@@ -490,14 +490,14 @@ extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27( doubflo omega,
 
 		////////////////////////////////////////////////////////////////////////////
 		////Teil 1b
-		//doubflo constante = 1000.0;
-		//doubflo nuEddi = constante * abs(mxxPyyPzz);
-		//doubflo omegaLimit = one / (one / omega + three * nuEddi);
+		//real constante = 1000.0;
+		//real nuEddi = constante * abs(mxxPyyPzz);
+		//real omegaLimit = one / (one / omega + three * nuEddi);
 
 		//{
-		//	doubflo dxux = c1o2 * (-omegaLimit) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-		//	doubflo dyuy = dxux + omegaLimit * c3o2 * mxxMyy;
-		//	doubflo dzuz = dxux + omegaLimit * c3o2 * mxxMzz;
+		//	real dxux = c1o2 * (-omegaLimit) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+		//	real dyuy = dxux + omegaLimit * c3o2 * mxxMyy;
+		//	real dzuz = dxux + omegaLimit * c3o2 * mxxMzz;
 
 			////relax
 			//mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -513,9 +513,9 @@ extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27( doubflo omega,
 		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 		//incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
 		{
-			doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-			doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
-			doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+			real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+			real dyuy = dxux + omega * c3o2 * mxxMyy;
+			real dzuz = dxux + omega * c3o2 * mxxMzz;
 
 			////relax original
 			//mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
@@ -567,14 +567,14 @@ extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27( doubflo omega,
 		//3.
 		// linear combinations
 
-		doubflo mxxyPyzz = mfcba + mfabc;
-		doubflo mxxyMyzz = mfcba - mfabc;
+		real mxxyPyzz = mfcba + mfabc;
+		real mxxyMyzz = mfcba - mfabc;
 
-		doubflo mxxzPyyz = mfcab + mfacb;
-		doubflo mxxzMyyz = mfcab - mfacb;
+		real mxxzPyyz = mfcab + mfacb;
+		real mxxzMyyz = mfcab - mfacb;
 
-		doubflo mxyyPxzz = mfbca + mfbac;
-		doubflo mxyyMxzz = mfbca - mfbac;
+		real mxyyPxzz = mfbca + mfbac;
+		real mxyyMxzz = mfbca - mfbac;
 
 		//relax
 		//////////////////////////////////////////////////////////////////////////
diff --git a/src/VirtualFluids_GPU/GPU/PressBCs27.cu b/src/VirtualFluids_GPU/GPU/PressBCs27.cu
index 224f0c596..47fa7ec57 100644
--- a/src/VirtualFluids_GPU/GPU/PressBCs27.cu
+++ b/src/VirtualFluids_GPU/GPU/PressBCs27.cu
@@ -3,12 +3,12 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QInflowScaleByPressDevice27(  doubflo* rhoBC,
-														 doubflo* DD, 
+extern "C" __global__ void QInflowScaleByPressDevice27(  real* rhoBC,
+														 real* DD, 
 														 int* k_Q, 
 														 int* k_N, 
 														 int kQ, 
-														 doubflo om1, 
+														 real om1, 
 														 unsigned int* neighborX,
 														 unsigned int* neighborY,
 														 unsigned int* neighborZ,
@@ -151,63 +151,63 @@ extern "C" __global__ void QInflowScaleByPressDevice27(  doubflo* rhoBC,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo f1_E    = (D.f[dirE   ])[k1e   ];
-      doubflo f1_W    = (D.f[dirW   ])[k1w   ];
-      doubflo f1_N    = (D.f[dirN   ])[k1n   ];
-      doubflo f1_S    = (D.f[dirS   ])[k1s   ];
-      doubflo f1_T    = (D.f[dirT   ])[k1t   ];
-      doubflo f1_B    = (D.f[dirB   ])[k1b   ];
-      doubflo f1_NE   = (D.f[dirNE  ])[k1ne  ];
-      doubflo f1_SW   = (D.f[dirSW  ])[k1sw  ];
-      doubflo f1_SE   = (D.f[dirSE  ])[k1se  ];
-      doubflo f1_NW   = (D.f[dirNW  ])[k1nw  ];
-      doubflo f1_TE   = (D.f[dirTE  ])[k1te  ];
-      doubflo f1_BW   = (D.f[dirBW  ])[k1bw  ];
-      doubflo f1_BE   = (D.f[dirBE  ])[k1be  ];
-      doubflo f1_TW   = (D.f[dirTW  ])[k1tw  ];
-      doubflo f1_TN   = (D.f[dirTN  ])[k1tn  ];
-      doubflo f1_BS   = (D.f[dirBS  ])[k1bs  ];
-      doubflo f1_BN   = (D.f[dirBN  ])[k1bn  ];
-      doubflo f1_TS   = (D.f[dirTS  ])[k1ts  ];
-      doubflo f1_ZERO = (D.f[dirZERO])[k1zero];
-      doubflo f1_TNE  = (D.f[dirTNE ])[k1tne ];
-      doubflo f1_TSW  = (D.f[dirTSW ])[k1tsw ];
-      doubflo f1_TSE  = (D.f[dirTSE ])[k1tse ];
-      doubflo f1_TNW  = (D.f[dirTNW ])[k1tnw ];
-      doubflo f1_BNE  = (D.f[dirBNE ])[k1bne ];
-      doubflo f1_BSW  = (D.f[dirBSW ])[k1bsw ];
-      doubflo f1_BSE  = (D.f[dirBSE ])[k1bse ];
-      doubflo f1_BNW  = (D.f[dirBNW ])[k1bnw ];
+      real f1_E    = (D.f[dirE   ])[k1e   ];
+      real f1_W    = (D.f[dirW   ])[k1w   ];
+      real f1_N    = (D.f[dirN   ])[k1n   ];
+      real f1_S    = (D.f[dirS   ])[k1s   ];
+      real f1_T    = (D.f[dirT   ])[k1t   ];
+      real f1_B    = (D.f[dirB   ])[k1b   ];
+      real f1_NE   = (D.f[dirNE  ])[k1ne  ];
+      real f1_SW   = (D.f[dirSW  ])[k1sw  ];
+      real f1_SE   = (D.f[dirSE  ])[k1se  ];
+      real f1_NW   = (D.f[dirNW  ])[k1nw  ];
+      real f1_TE   = (D.f[dirTE  ])[k1te  ];
+      real f1_BW   = (D.f[dirBW  ])[k1bw  ];
+      real f1_BE   = (D.f[dirBE  ])[k1be  ];
+      real f1_TW   = (D.f[dirTW  ])[k1tw  ];
+      real f1_TN   = (D.f[dirTN  ])[k1tn  ];
+      real f1_BS   = (D.f[dirBS  ])[k1bs  ];
+      real f1_BN   = (D.f[dirBN  ])[k1bn  ];
+      real f1_TS   = (D.f[dirTS  ])[k1ts  ];
+      real f1_ZERO = (D.f[dirZERO])[k1zero];
+      real f1_TNE  = (D.f[dirTNE ])[k1tne ];
+      real f1_TSW  = (D.f[dirTSW ])[k1tsw ];
+      real f1_TSE  = (D.f[dirTSE ])[k1tse ];
+      real f1_TNW  = (D.f[dirTNW ])[k1tnw ];
+      real f1_BNE  = (D.f[dirBNE ])[k1bne ];
+      real f1_BSW  = (D.f[dirBSW ])[k1bsw ];
+      real f1_BSE  = (D.f[dirBSE ])[k1bse ];
+      real f1_BNW  = (D.f[dirBNW ])[k1bnw ];
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E    = (D.f[dirE   ])[ke   ];
-      doubflo f_W    = (D.f[dirW   ])[kw   ];
-      doubflo f_N    = (D.f[dirN   ])[kn   ];
-      doubflo f_S    = (D.f[dirS   ])[ks   ];
-      doubflo f_T    = (D.f[dirT   ])[kt   ];
-      doubflo f_B    = (D.f[dirB   ])[kb   ];
-      doubflo f_NE   = (D.f[dirNE  ])[kne  ];
-      doubflo f_SW   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_SE   = (D.f[dirSE  ])[kse  ];
-      doubflo f_NW   = (D.f[dirNW  ])[knw  ];
-      doubflo f_TE   = (D.f[dirTE  ])[kte  ];
-      doubflo f_BW   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_BE   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_TW   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_TN   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_BS   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_BN   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_TS   = (D.f[dirTS  ])[kts  ];
-      doubflo f_ZERO = (D.f[dirZERO])[kzero];
-      doubflo f_TNE  = (D.f[dirTNE ])[ktne ];
-      doubflo f_TSW  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_TSE  = (D.f[dirTSE ])[ktse ];
-      doubflo f_TNW  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_BNE  = (D.f[dirBNE ])[kbne ];
-      doubflo f_BSW  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_BSE  = (D.f[dirBSE ])[kbse ];
-      doubflo f_BNW  = (D.f[dirBNW ])[kbnw ];
+      real f_E    = (D.f[dirE   ])[ke   ];
+      real f_W    = (D.f[dirW   ])[kw   ];
+      real f_N    = (D.f[dirN   ])[kn   ];
+      real f_S    = (D.f[dirS   ])[ks   ];
+      real f_T    = (D.f[dirT   ])[kt   ];
+      real f_B    = (D.f[dirB   ])[kb   ];
+      real f_NE   = (D.f[dirNE  ])[kne  ];
+      real f_SW   = (D.f[dirSW  ])[ksw  ];
+      real f_SE   = (D.f[dirSE  ])[kse  ];
+      real f_NW   = (D.f[dirNW  ])[knw  ];
+      real f_TE   = (D.f[dirTE  ])[kte  ];
+      real f_BW   = (D.f[dirBW  ])[kbw  ];
+      real f_BE   = (D.f[dirBE  ])[kbe  ];
+      real f_TW   = (D.f[dirTW  ])[ktw  ];
+      real f_TN   = (D.f[dirTN  ])[ktn  ];
+      real f_BS   = (D.f[dirBS  ])[kbs  ];
+      real f_BN   = (D.f[dirBN  ])[kbn  ];
+      real f_TS   = (D.f[dirTS  ])[kts  ];
+      real f_ZERO = (D.f[dirZERO])[kzero];
+      real f_TNE  = (D.f[dirTNE ])[ktne ];
+      real f_TSW  = (D.f[dirTSW ])[ktsw ];
+      real f_TSE  = (D.f[dirTSE ])[ktse ];
+      real f_TNW  = (D.f[dirTNW ])[ktnw ];
+      real f_BNE  = (D.f[dirBNE ])[kbne ];
+      real f_BSW  = (D.f[dirBSW ])[kbsw ];
+      real f_BSE  = (D.f[dirBSE ])[kbse ];
+      real f_BNW  = (D.f[dirBNW ])[kbnw ];
       //////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, drho1;
+      real vx1, vx2, vx3, drho, drho1;
       //////////////////////////////////////////////////////////////////////////
 	  //Dichte
       drho1  =  f1_TSE + f1_TNW + f1_TNE + f1_TSW + f1_BSE + f1_BNW + f1_BNE + f1_BSW +
@@ -218,11 +218,11 @@ extern "C" __global__ void QInflowScaleByPressDevice27(  doubflo* rhoBC,
                 f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
       //////////////////////////////////////////////////////////////////////////
 	  //Schallgeschwindigkeit
-	  doubflo cs = one / sqrtf(three);
+	  real cs = one / sqrtf(three);
       //////////////////////////////////////////////////////////////////////////
-	  doubflo rhoInterpol = drho1 * cs + (one - cs) * drho; 
-	  //doubflo diffRho = (rhoBC[k] + one) / (rhoInterpol + one);
-	  doubflo diffRhoToAdd = rhoBC[k] - rhoInterpol;
+	  real rhoInterpol = drho1 * cs + (one - cs) * drho; 
+	  //real diffRho = (rhoBC[k] + one) / (rhoInterpol + one);
+	  real diffRhoToAdd = rhoBC[k] - rhoInterpol;
 	  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //no velocity
 	  //////////////////////////////////////////
@@ -459,12 +459,12 @@ extern "C" __global__ void QInflowScaleByPressDevice27(  doubflo* rhoBC,
 
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QPressDeviceIncompNEQ27( doubflo* rhoBC,
-													doubflo* DD, 
+extern "C" __global__ void QPressDeviceIncompNEQ27( real* rhoBC,
+													real* DD, 
 													int* k_Q, 
 													int* k_N, 
 													int kQ, 
-													doubflo om1, 
+													real om1, 
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
@@ -607,7 +607,7 @@ extern "C" __global__ void QPressDeviceIncompNEQ27( doubflo* rhoBC,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
+      real        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
                      f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW;
 
       f1_W    = (D.f[dirE   ])[k1e   ];
@@ -639,23 +639,23 @@ extern "C" __global__ void QPressDeviceIncompNEQ27( doubflo* rhoBC,
       f1_TSE  = (D.f[dirBNW ])[k1bnw ];
 
       //////////////////////////////////////////////////////////////////////////
-      doubflo drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+
+      real drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+
                           f1_TNE+f1_TSW+f1_TSE+f1_TNW+f1_BNE+f1_BSW+f1_BSE+f1_BNW;
 
-      doubflo vx1      =  ((f1_TSE - f1_BNW) - (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) - (f1_TSW - f1_BNE)) +
+      real vx1      =  ((f1_TSE - f1_BNW) - (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) - (f1_TSW - f1_BNE)) +
 						  ((f1_BE - f1_TW)   + (f1_TE - f1_BW))   + ((f1_SE - f1_NW)   + (f1_NE - f1_SW)) +
 						  (f1_E - f1_W); 
 
 
-      doubflo vx2    =   (-(f1_TSE - f1_BNW) + (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) - (f1_TSW - f1_BNE)) +
+      real vx2    =   (-(f1_TSE - f1_BNW) + (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) - (f1_TSW - f1_BNE)) +
 						 ((f1_BN - f1_TS)   + (f1_TN - f1_BS))    + (-(f1_SE - f1_NW)  + (f1_NE - f1_SW)) +
 						 (f1_N - f1_S); 
 
-      doubflo vx3    =   ((f1_TSE - f1_BNW) + (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) + (f1_TSW - f1_BNE)) +
+      real vx3    =   ((f1_TSE - f1_BNW) + (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) + (f1_TSW - f1_BNE)) +
 						 (-(f1_BN - f1_TS)  + (f1_TN - f1_BS))   + ((f1_TE - f1_BW)   - (f1_BE - f1_TW)) +
 						 (f1_T - f1_B); 
 
-      doubflo cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
       f1_ZERO  -= c8over27*  (drho1-(drho1+one)*cusq);
       f1_E     -= c2over27*  (drho1+(drho1+one)*(three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq));
@@ -798,12 +798,12 @@ extern "C" __global__ void QPressDeviceIncompNEQ27( doubflo* rhoBC,
 
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QPressDeviceNEQ27(doubflo* rhoBC,
-                                             doubflo* DD, 
+extern "C" __global__ void QPressDeviceNEQ27(real* rhoBC,
+                                             real* DD, 
                                              int* k_Q, 
                                              int* k_N, 
                                              int kQ, 
-                                             doubflo om1, 
+                                             real om1, 
                                              unsigned int* neighborX,
                                              unsigned int* neighborY,
                                              unsigned int* neighborZ,
@@ -946,7 +946,7 @@ extern "C" __global__ void QPressDeviceNEQ27(doubflo* rhoBC,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
+      real        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
                      f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW;
 
       f1_W    = (D.f[dirE   ])[k1e   ];
@@ -978,19 +978,19 @@ extern "C" __global__ void QPressDeviceNEQ27(doubflo* rhoBC,
       f1_TSE  = (D.f[dirBNW ])[k1bnw ];
 
       //////////////////////////////////////////////////////////////////////////
-      doubflo drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+
+      real drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+
                           f1_TNE+f1_TSW+f1_TSE+f1_TNW+f1_BNE+f1_BSW+f1_BSE+f1_BNW;
 
-      doubflo vx1      =  ((f1_TSE - f1_BNW) - (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) - (f1_TSW - f1_BNE)) +
+      real vx1      =  ((f1_TSE - f1_BNW) - (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) - (f1_TSW - f1_BNE)) +
 						  ((f1_BE - f1_TW)   + (f1_TE - f1_BW))   + ((f1_SE - f1_NW)   + (f1_NE - f1_SW)) +
 						  (f1_E - f1_W); 
 
 
-      doubflo vx2    =   (-(f1_TSE - f1_BNW) + (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) - (f1_TSW - f1_BNE)) +
+      real vx2    =   (-(f1_TSE - f1_BNW) + (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) - (f1_TSW - f1_BNE)) +
 						 ((f1_BN - f1_TS)   + (f1_TN - f1_BS))    + (-(f1_SE - f1_NW)  + (f1_NE - f1_SW)) +
 						 (f1_N - f1_S); 
 
-      doubflo vx3    =   ((f1_TSE - f1_BNW) + (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) + (f1_TSW - f1_BNE)) +
+      real vx3    =   ((f1_TSE - f1_BNW) + (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) + (f1_TSW - f1_BNE)) +
 						 (-(f1_BN - f1_TS)  + (f1_TN - f1_BS))   + ((f1_TE - f1_BW)   - (f1_BE - f1_TW)) +
 						 (f1_T - f1_B); 
 
@@ -998,7 +998,7 @@ extern "C" __global__ void QPressDeviceNEQ27(doubflo* rhoBC,
 	  vx2 /= (drho1+one);
 	  vx3 /= (drho1+one);
 
-      doubflo cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
       f1_ZERO  -= c8over27*  (drho1-(drho1+one)*cusq);
       f1_E     -= c2over27*  (drho1+(drho1+one)*(three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq));
@@ -1141,7 +1141,7 @@ extern "C" __global__ void LB_BC_Press_East27( int nx,
                                                unsigned int* neighborX,
                                                unsigned int* neighborY,
                                                unsigned int* neighborZ,
-                                               doubflo* DD, 
+                                               real* DD, 
                                                unsigned int size_Mat, 
                                                bool evenOrOdd) 
 {
@@ -1336,7 +1336,7 @@ extern "C" __global__ void LB_BC_Press_East27( int nx,
       //unsigned int k1tne = k1;
       //unsigned int k1bsw = k1 + nxny + nx + 1;
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
+      real        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
                    f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW;
 
       f1_W    = (D.f[dirE   ])[k1e   ];
@@ -1367,7 +1367,7 @@ extern "C" __global__ void LB_BC_Press_East27( int nx,
       f1_TNW  = (D.f[dirBSE ])[k1bse ];
       f1_TSE  = (D.f[dirBNW ])[k1bnw ];
 
-      doubflo drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+
+      real drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+
                         f1_TNE+f1_TSW+f1_TSE+f1_TNW+f1_BNE+f1_BSW+f1_BSE+f1_BNW;
 
       __syncthreads();
@@ -1445,13 +1445,13 @@ extern "C" __global__ void LB_BC_Press_East27( int nx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QPressDevice27(int inx,
                                            int iny,
-                                           doubflo* rhoBC,
-                                           doubflo* DD, 
+                                           real* rhoBC,
+                                           real* DD, 
                                            int* k_Q, 
-                                           doubflo* QQ,
+                                           real* QQ,
                                            unsigned int sizeQ,
                                            int kQ, 
-                                           doubflo om1, 
+                                           real om1, 
                                            unsigned int* neighborX,
                                            unsigned int* neighborY,
                                            unsigned int* neighborZ,
@@ -1532,7 +1532,7 @@ extern "C" __global__ void QPressDevice27(int inx,
 
    if(k<kQ)
    {
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
          *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
          *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
          *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -1594,7 +1594,7 @@ extern "C" __global__ void QPressDevice27(int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
          f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -1624,7 +1624,7 @@ extern "C" __global__ void QPressDevice27(int inx,
       f_TNW  = (D.f[dirBSE ])[kbse ];
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo q, vx1, vx2, vx3, drho;
+      real q, vx1, vx2, vx3, drho;
       vx1    =  ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) +
                   ((f_BE - f_TW)   + (f_TE - f_BW))   + ((f_SE - f_NW)   + (f_NE - f_SW)) +
                   (f_E - f_W); 
@@ -1638,7 +1638,7 @@ extern "C" __global__ void QPressDevice27(int inx,
                   (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                   (f_T - f_B); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
       //////////////////////////////////////////////////////////////////////////
       ////////////////////////////////////////////////////////////////////////////////
       drho = rhoBC[k];
@@ -1929,15 +1929,15 @@ extern "C" __global__ void QPressDevice27(int inx,
 
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QPressDeviceAntiBB27(   doubflo* rhoBC,
-												   doubflo* vx,
-												   doubflo* vy,
-												   doubflo* vz,
-												   doubflo* DD, 
+extern "C" __global__ void QPressDeviceAntiBB27(   real* rhoBC,
+												   real* vx,
+												   real* vy,
+												   real* vz,
+												   real* DD, 
 												   int* k_Q, 
-												   doubflo* QQ,
+												   real* QQ,
 												   int kQ, 
-												   doubflo om1, 
+												   real om1, 
 												   unsigned int* neighborX,
 												   unsigned int* neighborY,
 												   unsigned int* neighborZ,
@@ -2018,7 +2018,7 @@ extern "C" __global__ void QPressDeviceAntiBB27(   doubflo* rhoBC,
 
    if(k<kQ)
    {
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
          *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
          *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
          *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -2080,7 +2080,7 @@ extern "C" __global__ void QPressDeviceAntiBB27(   doubflo* rhoBC,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
          f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW, f_ZERO;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -2111,7 +2111,7 @@ extern "C" __global__ void QPressDeviceAntiBB27(   doubflo* rhoBC,
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       f_ZERO = (D.f[dirZERO])[kzero];
       ////////////////////////////////////////////////////////////////////////////////
-      //doubflo vx1, vx2, vx3, drho;
+      //real vx1, vx2, vx3, drho;
       //vx1    =  ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) +
       //            ((f_BE - f_TW)   + (f_TE - f_BW))   + ((f_SE - f_NW)   + (f_NE - f_SW)) +
       //            (f_E - f_W); 
@@ -2125,14 +2125,14 @@ extern "C" __global__ void QPressDeviceAntiBB27(   doubflo* rhoBC,
       //            (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
       //            (f_T - f_B); 
 
-      //doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      //real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
       //////////////////////////////////////////////////////////////////////////
-      doubflo drho    = f_ZERO+f_E+f_W+f_N+f_S+f_T+f_B+f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TN+f_BS+f_BN+f_TS+
+      real drho    = f_ZERO+f_E+f_W+f_N+f_S+f_T+f_B+f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TN+f_BS+f_BN+f_TS+
 						f_TNE+f_TSW+f_TSE+f_TNW+f_BNE+f_BSW+f_BSE+f_BNW;
       drho = drho - rhoBC[k];
 	  drho *= 0.01f;
       ////////////////////////////////////////////////////////////////////////////////
-	  doubflo q;
+	  real q;
       //deltaRho = (rhoBC[k] + one) / (deltaRho + one);
       ////////////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -2394,11 +2394,11 @@ extern "C" __global__ void QPressDeviceAntiBB27(   doubflo* rhoBC,
 
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QPressDeviceFixBackflow27( doubflo* rhoBC,
-                                                      doubflo* DD, 
+extern "C" __global__ void QPressDeviceFixBackflow27( real* rhoBC,
+                                                      real* DD, 
                                                       int* k_Q, 
                                                       int kQ, 
-                                                      doubflo om1, 
+                                                      real om1, 
                                                       unsigned int* neighborX,
                                                       unsigned int* neighborY,
                                                       unsigned int* neighborZ,
@@ -2449,7 +2449,7 @@ extern "C" __global__ void QPressDeviceFixBackflow27( doubflo* rhoBC,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo deltaRho;
+      real deltaRho;
       ////////////////////////////////////////////////////////////////////////////////
       deltaRho = rhoBC[k];
       ////////////////////////////////////////////////////////////////////////////////
@@ -2585,11 +2585,11 @@ extern "C" __global__ void QPressDeviceFixBackflow27( doubflo* rhoBC,
 
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QPressDeviceDirDepBot27(  doubflo* rhoBC,
-                                                     doubflo* DD, 
+extern "C" __global__ void QPressDeviceDirDepBot27(  real* rhoBC,
+                                                     real* DD, 
                                                      int* k_Q, 
                                                      int kQ, 
-                                                     doubflo om1, 
+                                                     real om1, 
                                                      unsigned int* neighborX,
                                                      unsigned int* neighborY,
                                                      unsigned int* neighborZ,
@@ -2640,7 +2640,7 @@ extern "C" __global__ void QPressDeviceDirDepBot27(  doubflo* rhoBC,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo rho;
+      real rho;
       ////////////////////////////////////////////////////////////////////////////////
       rho = rhoBC[k];
       ////////////////////////////////////////////////////////////////////////////////
@@ -2706,7 +2706,7 @@ extern "C" __global__ void QPressDeviceDirDepBot27(  doubflo* rhoBC,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,f_W,f_N,f_S,f_T,f_NE,f_SW,f_SE,f_NW,f_TE,f_TW,f_TN,f_TS,f_ZERO,f_TNE,f_TSW,f_TSE,f_TNW;//,
+      real f_E,f_W,f_N,f_S,f_T,f_NE,f_SW,f_SE,f_NW,f_TE,f_TW,f_TN,f_TS,f_ZERO,f_TNE,f_TSW,f_TSE,f_TNW;//,
             //f_B,f_BW,f_BE,f_BS,f_BN,f_BSW,f_BNE,f_BNW,f_BSE;
 
       f_E    = (D.f[dirE   ])[ke   ];
@@ -2739,12 +2739,12 @@ extern "C" __global__ void QPressDeviceDirDepBot27(  doubflo* rhoBC,
       //f_BNW = ( two*rho-  two*f_SW-      four*f_TSW+     f_W-    four*f_TW+ four*f_NW-      four*f_TNW-five*f_S-    four*f_TS- two*f_ZERO-four*f_T+     f_N-    four*f_TN-eight*f_SE+sixtyeight*f_TSE-five*f_E-    four*f_TE-  two*f_NE-      four*f_TNE)/seventytwo;
       //f_BSE = ( two*rho-  two*f_SW-      four*f_TSW-five*f_W-    four*f_TW-eight*f_NW+sixtyeight*f_TNW+     f_S-    four*f_TS- two*f_ZERO-four*f_T-five*f_N-    four*f_TN+ four*f_SE-      four*f_TSE+     f_E-    four*f_TE-  two*f_NE-      four*f_TNE)/seventytwo;
 
-      //doubflo drho   =    f_ZERO+f_E+f_W+f_N+f_S+f_T+f_B+f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TN+f_BS+f_BN+f_TS+f_TNE+f_TSW+f_TSE+f_TNW+f_BNE+f_BSW+f_BSE+f_BNW;
-      //doubflo vx1     =  (f_E -f_W +f_NE-f_SW+f_SE-f_NW+f_TE-f_BW+f_BE-f_TW+ f_TNE-f_TSW+f_TSE-f_TNW+ f_BNE-f_BSW+f_BSE-f_BNW);
-      //doubflo vx2     =  (f_N -f_S +f_NE-f_SW-f_SE+f_NW+f_TN-f_BS+f_BN-f_TS+ f_TNE-f_TSW-f_TSE+f_TNW+ f_BNE-f_BSW-f_BSE+f_BNW);
-      //doubflo vx3     =  (f_T -f_B +f_TE-f_BW-f_BE+f_TW+f_TN-f_BS-f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW- f_BNE-f_BSW-f_BSE-f_BNW);
+      //real drho   =    f_ZERO+f_E+f_W+f_N+f_S+f_T+f_B+f_NE+f_SW+f_SE+f_NW+f_TE+f_BW+f_BE+f_TW+f_TN+f_BS+f_BN+f_TS+f_TNE+f_TSW+f_TSE+f_TNW+f_BNE+f_BSW+f_BSE+f_BNW;
+      //real vx1     =  (f_E -f_W +f_NE-f_SW+f_SE-f_NW+f_TE-f_BW+f_BE-f_TW+ f_TNE-f_TSW+f_TSE-f_TNW+ f_BNE-f_BSW+f_BSE-f_BNW);
+      //real vx2     =  (f_N -f_S +f_NE-f_SW-f_SE+f_NW+f_TN-f_BS+f_BN-f_TS+ f_TNE-f_TSW-f_TSE+f_TNW+ f_BNE-f_BSW-f_BSE+f_BNW);
+      //real vx3     =  (f_T -f_B +f_TE-f_BW-f_BE+f_TW+f_TN-f_BS-f_BN+f_TS+ f_TNE+f_TSW+f_TSE+f_TNW- f_BNE-f_BSW-f_BSE-f_BNW);
 
-      //doubflo cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      //real cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
       //(D.f[dirZERO])[kzero] = c8over27*  (drho-cusq);
       //(D.f[dirE])[ke]    = c2over27*  (drho+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq);
@@ -2773,8 +2773,8 @@ extern "C" __global__ void QPressDeviceDirDepBot27(  doubflo* rhoBC,
       //(D.f[dirBNW])[kbnw]  =  c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq);
       //(D.f[dirBSE])[kbse]  =  c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq);
       //(D.f[dirTNW])[ktnw]  =  c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq);
-      doubflo drho   =    f_ZERO+f_E+f_W+f_N+f_S+f_T+f_NE+f_SW+f_SE+f_NW+f_TE+f_TW+f_TN+f_TS+f_TNE+f_TSW+f_TSE+f_TNW;
-      doubflo dTop   =    f_T+f_TE+f_TW+f_TN+f_TS+f_TNE+f_TSW+f_TSE+f_TNW;
+      real drho   =    f_ZERO+f_E+f_W+f_N+f_S+f_T+f_NE+f_SW+f_SE+f_NW+f_TE+f_TW+f_TN+f_TS+f_TNE+f_TSW+f_TSE+f_TNW;
+      real dTop   =    f_T+f_TE+f_TW+f_TN+f_TS+f_TNE+f_TSW+f_TSE+f_TNW;
       (D.f[dirB])[kb]     = (f_T+c2over27)*(rho-drho+one/six)/(dTop+one/six)-c2over27;
       (D.f[dirBW])[kbw]   = (f_TW+c1over54)*(rho-drho+one/six)/(dTop+one/six)-c1over54;
       (D.f[dirBE])[kbe]   = (f_TE+c1over54)*(rho-drho+one/six)/(dTop+one/six)-c1over54;
@@ -2827,12 +2827,12 @@ extern "C" __global__ void QPressDeviceDirDepBot27(  doubflo* rhoBC,
 
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QPressNoRhoDevice27(  doubflo* rhoBC,
-												 doubflo* DD, 
+extern "C" __global__ void QPressNoRhoDevice27(  real* rhoBC,
+												 real* DD, 
 												 int* k_Q, 
 												 int* k_N, 
 												 int kQ, 
-												 doubflo om1, 
+												 real om1, 
 												 unsigned int* neighborX,
 												 unsigned int* neighborY,
 												 unsigned int* neighborZ,
@@ -2975,65 +2975,65 @@ extern "C" __global__ void QPressNoRhoDevice27(  doubflo* rhoBC,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo f1_E    = (D.f[dirE   ])[k1e   ];
-      doubflo f1_W    = (D.f[dirW   ])[k1w   ];
-      doubflo f1_N    = (D.f[dirN   ])[k1n   ];
-      doubflo f1_S    = (D.f[dirS   ])[k1s   ];
-      doubflo f1_T    = (D.f[dirT   ])[k1t   ];
-      doubflo f1_B    = (D.f[dirB   ])[k1b   ];
-      doubflo f1_NE   = (D.f[dirNE  ])[k1ne  ];
-      doubflo f1_SW   = (D.f[dirSW  ])[k1sw  ];
-      doubflo f1_SE   = (D.f[dirSE  ])[k1se  ];
-      doubflo f1_NW   = (D.f[dirNW  ])[k1nw  ];
-      doubflo f1_TE   = (D.f[dirTE  ])[k1te  ];
-      doubflo f1_BW   = (D.f[dirBW  ])[k1bw  ];
-      doubflo f1_BE   = (D.f[dirBE  ])[k1be  ];
-      doubflo f1_TW   = (D.f[dirTW  ])[k1tw  ];
-      doubflo f1_TN   = (D.f[dirTN  ])[k1tn  ];
-      doubflo f1_BS   = (D.f[dirBS  ])[k1bs  ];
-      doubflo f1_BN   = (D.f[dirBN  ])[k1bn  ];
-      doubflo f1_TS   = (D.f[dirTS  ])[k1ts  ];
-      doubflo f1_ZERO = (D.f[dirZERO])[k1zero];
-      doubflo f1_TNE  = (D.f[dirTNE ])[k1tne ];
-      doubflo f1_TSW  = (D.f[dirTSW ])[k1tsw ];
-      doubflo f1_TSE  = (D.f[dirTSE ])[k1tse ];
-      doubflo f1_TNW  = (D.f[dirTNW ])[k1tnw ];
-      doubflo f1_BNE  = (D.f[dirBNE ])[k1bne ];
-      doubflo f1_BSW  = (D.f[dirBSW ])[k1bsw ];
-      doubflo f1_BSE  = (D.f[dirBSE ])[k1bse ];
-      doubflo f1_BNW  = (D.f[dirBNW ])[k1bnw ];
+      real f1_E    = (D.f[dirE   ])[k1e   ];
+      real f1_W    = (D.f[dirW   ])[k1w   ];
+      real f1_N    = (D.f[dirN   ])[k1n   ];
+      real f1_S    = (D.f[dirS   ])[k1s   ];
+      real f1_T    = (D.f[dirT   ])[k1t   ];
+      real f1_B    = (D.f[dirB   ])[k1b   ];
+      real f1_NE   = (D.f[dirNE  ])[k1ne  ];
+      real f1_SW   = (D.f[dirSW  ])[k1sw  ];
+      real f1_SE   = (D.f[dirSE  ])[k1se  ];
+      real f1_NW   = (D.f[dirNW  ])[k1nw  ];
+      real f1_TE   = (D.f[dirTE  ])[k1te  ];
+      real f1_BW   = (D.f[dirBW  ])[k1bw  ];
+      real f1_BE   = (D.f[dirBE  ])[k1be  ];
+      real f1_TW   = (D.f[dirTW  ])[k1tw  ];
+      real f1_TN   = (D.f[dirTN  ])[k1tn  ];
+      real f1_BS   = (D.f[dirBS  ])[k1bs  ];
+      real f1_BN   = (D.f[dirBN  ])[k1bn  ];
+      real f1_TS   = (D.f[dirTS  ])[k1ts  ];
+      real f1_ZERO = (D.f[dirZERO])[k1zero];
+      real f1_TNE  = (D.f[dirTNE ])[k1tne ];
+      real f1_TSW  = (D.f[dirTSW ])[k1tsw ];
+      real f1_TSE  = (D.f[dirTSE ])[k1tse ];
+      real f1_TNW  = (D.f[dirTNW ])[k1tnw ];
+      real f1_BNE  = (D.f[dirBNE ])[k1bne ];
+      real f1_BSW  = (D.f[dirBSW ])[k1bsw ];
+      real f1_BSE  = (D.f[dirBSE ])[k1bse ];
+      real f1_BNW  = (D.f[dirBNW ])[k1bnw ];
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E    = (D.f[dirE   ])[ke   ];
-      doubflo f_W    = (D.f[dirW   ])[kw   ];
-      doubflo f_N    = (D.f[dirN   ])[kn   ];
-      doubflo f_S    = (D.f[dirS   ])[ks   ];
-      doubflo f_T    = (D.f[dirT   ])[kt   ];
-      doubflo f_B    = (D.f[dirB   ])[kb   ];
-      doubflo f_NE   = (D.f[dirNE  ])[kne  ];
-      doubflo f_SW   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_SE   = (D.f[dirSE  ])[kse  ];
-      doubflo f_NW   = (D.f[dirNW  ])[knw  ];
-      doubflo f_TE   = (D.f[dirTE  ])[kte  ];
-      doubflo f_BW   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_BE   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_TW   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_TN   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_BS   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_BN   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_TS   = (D.f[dirTS  ])[kts  ];
-      doubflo f_ZERO = (D.f[dirZERO])[kzero];
-      doubflo f_TNE  = (D.f[dirTNE ])[ktne ];
-      doubflo f_TSW  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_TSE  = (D.f[dirTSE ])[ktse ];
-      doubflo f_TNW  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_BNE  = (D.f[dirBNE ])[kbne ];
-      doubflo f_BSW  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_BSE  = (D.f[dirBSE ])[kbse ];
-      doubflo f_BNW  = (D.f[dirBNW ])[kbnw ];
+      real f_E    = (D.f[dirE   ])[ke   ];
+      real f_W    = (D.f[dirW   ])[kw   ];
+      real f_N    = (D.f[dirN   ])[kn   ];
+      real f_S    = (D.f[dirS   ])[ks   ];
+      real f_T    = (D.f[dirT   ])[kt   ];
+      real f_B    = (D.f[dirB   ])[kb   ];
+      real f_NE   = (D.f[dirNE  ])[kne  ];
+      real f_SW   = (D.f[dirSW  ])[ksw  ];
+      real f_SE   = (D.f[dirSE  ])[kse  ];
+      real f_NW   = (D.f[dirNW  ])[knw  ];
+      real f_TE   = (D.f[dirTE  ])[kte  ];
+      real f_BW   = (D.f[dirBW  ])[kbw  ];
+      real f_BE   = (D.f[dirBE  ])[kbe  ];
+      real f_TW   = (D.f[dirTW  ])[ktw  ];
+      real f_TN   = (D.f[dirTN  ])[ktn  ];
+      real f_BS   = (D.f[dirBS  ])[kbs  ];
+      real f_BN   = (D.f[dirBN  ])[kbn  ];
+      real f_TS   = (D.f[dirTS  ])[kts  ];
+      real f_ZERO = (D.f[dirZERO])[kzero];
+      real f_TNE  = (D.f[dirTNE ])[ktne ];
+      real f_TSW  = (D.f[dirTSW ])[ktsw ];
+      real f_TSE  = (D.f[dirTSE ])[ktse ];
+      real f_TNW  = (D.f[dirTNW ])[ktnw ];
+      real f_BNE  = (D.f[dirBNE ])[kbne ];
+      real f_BSW  = (D.f[dirBSW ])[kbsw ];
+      real f_BSE  = (D.f[dirBSE ])[kbse ];
+      real f_BNW  = (D.f[dirBNW ])[kbnw ];
       //////////////////////////////////////////////////////////////////////////
 
-      //doubflo vx1, vx2, vx3, drho;
-      doubflo vx1, vx2, vx3, drho, drho1;
+      //real vx1, vx2, vx3, drho;
+      real vx1, vx2, vx3, drho, drho1;
       //////////////////////////////////////////////////////////////////////////
 	  //Dichte
       drho1  =  f1_TSE + f1_TNW + f1_TNE + f1_TSW + f1_BSE + f1_BNW + f1_BNE + f1_BSW +
@@ -3060,44 +3060,44 @@ extern "C" __global__ void QPressNoRhoDevice27(  doubflo* rhoBC,
    //               (f_T - f_B)) /(one + drho); 
 
 
-      //doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      //real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
    //   //////////////////////////////////////////////////////////////////////////
-	  ////doubflo omega = om1;
-   //   doubflo cusq  = c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+	  ////real omega = om1;
+   //   real cusq  = c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
    //   //////////////////////////////////////////////////////////////////////////
 	  ////Täst MK
 	  ////if(vx1 < zero) vx1 = zero;
    //   //////////////////////////////////////////////////////////////////////////
-   //   doubflo fZERO = c8over27*  (drho1-(one + drho1)*(cusq))                                                           ;
-   //   doubflo fE    = c2over27*  (drho1+(one + drho1)*(three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq));
-   //   doubflo fW    = c2over27*  (drho1+(one + drho1)*(three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cusq));
-   //   doubflo fN    = c2over27*  (drho1+(one + drho1)*(three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cusq));
-   //   doubflo fS    = c2over27*  (drho1+(one + drho1)*(three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cusq));
-   //   doubflo fT    = c2over27*  (drho1+(one + drho1)*(three*(         vx3)+c9over2*(         vx3)*(         vx3)-cusq));
-   //   doubflo fB    = c2over27*  (drho1+(one + drho1)*(three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cusq));
-   //   doubflo fNE   = c1over54*  (drho1+(one + drho1)*(three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cusq));
-   //   doubflo fSW   = c1over54*  (drho1+(one + drho1)*(three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cusq));
-   //   doubflo fSE   = c1over54*  (drho1+(one + drho1)*(three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cusq));
-   //   doubflo fNW   = c1over54*  (drho1+(one + drho1)*(three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cusq));
-   //   doubflo fTE   = c1over54*  (drho1+(one + drho1)*(three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cusq));
-   //   doubflo fBW   = c1over54*  (drho1+(one + drho1)*(three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cusq));
-   //   doubflo fBE   = c1over54*  (drho1+(one + drho1)*(three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cusq));
-   //   doubflo fTW   = c1over54*  (drho1+(one + drho1)*(three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cusq));
-   //   doubflo fTN   = c1over54*  (drho1+(one + drho1)*(three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cusq));
-   //   doubflo fBS   = c1over54*  (drho1+(one + drho1)*(three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cusq));
-   //   doubflo fBN   = c1over54*  (drho1+(one + drho1)*(three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cusq));
-   //   doubflo fTS   = c1over54*  (drho1+(one + drho1)*(three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cusq));
-   //   doubflo fTNE  = c1over216* (drho1+(one + drho1)*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq));
-   //   doubflo fBSW  = c1over216* (drho1+(one + drho1)*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq));
-   //   doubflo fBNE  = c1over216* (drho1+(one + drho1)*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq));
-   //   doubflo fTSW  = c1over216* (drho1+(one + drho1)*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq));
-   //   doubflo fTSE  = c1over216* (drho1+(one + drho1)*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq));
-   //   doubflo fBNW  = c1over216* (drho1+(one + drho1)*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq));
-   //   doubflo fBSE  = c1over216* (drho1+(one + drho1)*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq));
-   //   doubflo fTNW  = c1over216* (drho1+(one + drho1)*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq));
-
-	  doubflo cs = one / sqrtf(three);
+   //   real fZERO = c8over27*  (drho1-(one + drho1)*(cusq))                                                           ;
+   //   real fE    = c2over27*  (drho1+(one + drho1)*(three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq));
+   //   real fW    = c2over27*  (drho1+(one + drho1)*(three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cusq));
+   //   real fN    = c2over27*  (drho1+(one + drho1)*(three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cusq));
+   //   real fS    = c2over27*  (drho1+(one + drho1)*(three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cusq));
+   //   real fT    = c2over27*  (drho1+(one + drho1)*(three*(         vx3)+c9over2*(         vx3)*(         vx3)-cusq));
+   //   real fB    = c2over27*  (drho1+(one + drho1)*(three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cusq));
+   //   real fNE   = c1over54*  (drho1+(one + drho1)*(three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cusq));
+   //   real fSW   = c1over54*  (drho1+(one + drho1)*(three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cusq));
+   //   real fSE   = c1over54*  (drho1+(one + drho1)*(three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cusq));
+   //   real fNW   = c1over54*  (drho1+(one + drho1)*(three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cusq));
+   //   real fTE   = c1over54*  (drho1+(one + drho1)*(three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cusq));
+   //   real fBW   = c1over54*  (drho1+(one + drho1)*(three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cusq));
+   //   real fBE   = c1over54*  (drho1+(one + drho1)*(three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cusq));
+   //   real fTW   = c1over54*  (drho1+(one + drho1)*(three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cusq));
+   //   real fTN   = c1over54*  (drho1+(one + drho1)*(three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cusq));
+   //   real fBS   = c1over54*  (drho1+(one + drho1)*(three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cusq));
+   //   real fBN   = c1over54*  (drho1+(one + drho1)*(three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cusq));
+   //   real fTS   = c1over54*  (drho1+(one + drho1)*(three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cusq));
+   //   real fTNE  = c1over216* (drho1+(one + drho1)*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq));
+   //   real fBSW  = c1over216* (drho1+(one + drho1)*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq));
+   //   real fBNE  = c1over216* (drho1+(one + drho1)*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq));
+   //   real fTSW  = c1over216* (drho1+(one + drho1)*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq));
+   //   real fTSE  = c1over216* (drho1+(one + drho1)*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq));
+   //   real fBNW  = c1over216* (drho1+(one + drho1)*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq));
+   //   real fBSE  = c1over216* (drho1+(one + drho1)*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq));
+   //   real fTNW  = c1over216* (drho1+(one + drho1)*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq));
+
+	  real cs = one / sqrtf(three);
 	  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //no velocity
 	  //////////////////////////////////////////
@@ -3132,8 +3132,8 @@ extern "C" __global__ void QPressNoRhoDevice27(  doubflo* rhoBC,
 	  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //with velocity
 	  //if(true){//vx1 >= zero){
-		 // doubflo csMvx = one / sqrtf(three) - vx1;
-		 // //doubflo csMvy = one / sqrtf(three) - vx2;
+		 // real csMvx = one / sqrtf(three) - vx1;
+		 // //real csMvy = one / sqrtf(three) - vx2;
 		 // ///////////////////////////////////////////
 		 // // X
 		 // f_W   = f1_W   * csMvx + (one - csMvx) * f_W   ;//- c2over27  * ((drho + drho1)*c1o2-((drho + drho1)*c1o2 )*three*vx1);
@@ -3344,12 +3344,12 @@ extern "C" __global__ void QPressNoRhoDevice27(  doubflo* rhoBC,
 
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QPressDeviceOld27(doubflo* rhoBC,
-                                             doubflo* DD, 
+extern "C" __global__ void QPressDeviceOld27(real* rhoBC,
+                                             real* DD, 
                                              int* k_Q, 
                                              int* k_N, 
                                              int kQ, 
-                                             doubflo om1, 
+                                             real om1, 
                                              unsigned int* neighborX,
                                              unsigned int* neighborY,
                                              unsigned int* neighborZ,
@@ -3492,7 +3492,7 @@ extern "C" __global__ void QPressDeviceOld27(doubflo* rhoBC,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
+      real        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
                      f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW;
 
       f1_W    = (D.f[dirE   ])[k1e   ];
@@ -3524,7 +3524,7 @@ extern "C" __global__ void QPressDeviceOld27(doubflo* rhoBC,
       f1_TSE  = (D.f[dirBNW ])[k1bnw ];
 
       //////////////////////////////////////////////////////////////////////////
-      doubflo drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+
+      real drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+
                           f1_TNE+f1_TSW+f1_TSE+f1_TNW+f1_BNE+f1_BSW+f1_BSE+f1_BNW;
 
 	  //drho1 = (drho1 + rhoBC[k])/2.f;
@@ -3603,13 +3603,13 @@ extern "C" __global__ void QPressDeviceOld27(doubflo* rhoBC,
 
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QPressDeviceEQZ27(doubflo* rhoBC,
-                                             doubflo* DD, 
+extern "C" __global__ void QPressDeviceEQZ27(real* rhoBC,
+                                             real* DD, 
                                              int* k_Q, 
                                              int* k_N,
-											 doubflo* kTestRE,
+											 real* kTestRE,
                                              int kQ, 
-                                             doubflo om1, 
+                                             real om1, 
                                              unsigned int* neighborX,
                                              unsigned int* neighborY,
                                              unsigned int* neighborZ,
@@ -3781,7 +3781,7 @@ extern "C" __global__ void QPressDeviceEQZ27(doubflo* rhoBC,
          kDistTest.f[dirBSE ] = &kTestRE[dirBSE *kQ];
          kDistTest.f[dirBNW ] = &kTestRE[dirBNW *kQ];
    //   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-   //   //doubflo f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW;
+   //   //real f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW;
    //   //f1_W    = (D.f[dirE   ])[k1e   ];
    //   //f1_E    = (D.f[dirW   ])[k1w   ];
    //   //f1_S    = (D.f[dirN   ])[k1n   ];
@@ -3812,7 +3812,7 @@ extern "C" __global__ void QPressDeviceEQZ27(doubflo* rhoBC,
    //   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
    //   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-   //   doubflo f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW;
+   //   real f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW;
    //   f1_E    = (D.f[dirE   ])[k1e   ];
    //   f1_W    = (D.f[dirW   ])[k1w   ];
    //   f1_N    = (D.f[dirN   ])[k1n   ];
@@ -3843,103 +3843,103 @@ extern "C" __global__ void QPressDeviceEQZ27(doubflo* rhoBC,
    //   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
    //   //////////////////////////////////////////////////////////////////////////
-   //   doubflo drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+ f1_TNE+f1_TSW+f1_TSE+f1_TNW+f1_BNE+f1_BSW+f1_BSE+f1_BNW;
-	  //doubflo vx1      = (((f1_TNE-f1_BSW)+(f1_BSE-f1_TNW)+(f1_BNE-f1_TSW)+(f1_TSE-f1_BNW)) + (((f1_NE-f1_SW)+(f1_TE-f1_BW))+((f1_SE-f1_NW)+(f1_BE-f1_TW))) + (f1_E-f1_W)) / (one + drho1);
-	  //doubflo vx2      = (((f1_TNE-f1_BSW)+(f1_TNW-f1_BSE)+(f1_BNE-f1_TSW)+(f1_BNW-f1_TSE)) + (((f1_NE-f1_SW)+(f1_TN-f1_BS))+((f1_BN-f1_TS)+(f1_NW-f1_SE))) + (f1_N-f1_S)) / (one + drho1);
-	  //doubflo vx3      = (((f1_TNE-f1_BSW)+(f1_TNW-f1_BSE)+(f1_TSW-f1_BNE)+(f1_TSE-f1_BNW)) + (((f1_TE-f1_BW)+(f1_TN-f1_BS))+((f1_TW-f1_BE)+(f1_TS-f1_BN))) + (f1_T-f1_B)) / (one + drho1);
+   //   real drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+ f1_TNE+f1_TSW+f1_TSE+f1_TNW+f1_BNE+f1_BSW+f1_BSE+f1_BNW;
+	  //real vx1      = (((f1_TNE-f1_BSW)+(f1_BSE-f1_TNW)+(f1_BNE-f1_TSW)+(f1_TSE-f1_BNW)) + (((f1_NE-f1_SW)+(f1_TE-f1_BW))+((f1_SE-f1_NW)+(f1_BE-f1_TW))) + (f1_E-f1_W)) / (one + drho1);
+	  //real vx2      = (((f1_TNE-f1_BSW)+(f1_TNW-f1_BSE)+(f1_BNE-f1_TSW)+(f1_BNW-f1_TSE)) + (((f1_NE-f1_SW)+(f1_TN-f1_BS))+((f1_BN-f1_TS)+(f1_NW-f1_SE))) + (f1_N-f1_S)) / (one + drho1);
+	  //real vx3      = (((f1_TNE-f1_BSW)+(f1_TNW-f1_BSE)+(f1_TSW-f1_BNE)+(f1_TSE-f1_BNW)) + (((f1_TE-f1_BW)+(f1_TN-f1_BS))+((f1_TW-f1_BE)+(f1_TS-f1_BN))) + (f1_T-f1_B)) / (one + drho1);
    //   //////////////////////////////////////////////////////////////////////////
-	  ////doubflo omega = om1;
-   //   doubflo cusq  = c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+	  ////real omega = om1;
+   //   real cusq  = c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
    //   //////////////////////////////////////////////////////////////////////////
 	  ////Täst MK
 	  ////if(vx1 < zero) vx1 = zero;
    //   //////////////////////////////////////////////////////////////////////////
 	  ////becomes higher with neighbor source and lower with local source
-   //   //doubflo fZERO = c8over27*  (rhoBC[k]-(one + rhoBC[k])*(cusq))                                                           ;
-   //   //doubflo fE    = c2over27*  (rhoBC[k]+(one + rhoBC[k])*(three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq));
-   //   //doubflo fW    = c2over27*  (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cusq));
-   //   //doubflo fN    = c2over27*  (rhoBC[k]+(one + rhoBC[k])*(three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cusq));
-   //   //doubflo fS    = c2over27*  (rhoBC[k]+(one + rhoBC[k])*(three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cusq));
-   //   //doubflo fT    = c2over27*  (rhoBC[k]+(one + rhoBC[k])*(three*(         vx3)+c9over2*(         vx3)*(         vx3)-cusq));
-   //   //doubflo fB    = c2over27*  (rhoBC[k]+(one + rhoBC[k])*(three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cusq));
-   //   //doubflo fNE   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cusq));
-   //   //doubflo fSW   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cusq));
-   //   //doubflo fSE   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cusq));
-   //   //doubflo fNW   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cusq));
-   //   //doubflo fTE   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cusq));
-   //   //doubflo fBW   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cusq));
-   //   //doubflo fBE   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cusq));
-   //   //doubflo fTW   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cusq));
-   //   //doubflo fTN   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cusq));
-   //   //doubflo fBS   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cusq));
-   //   //doubflo fBN   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cusq));
-   //   //doubflo fTS   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cusq));
-   //   //doubflo fTNE  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq));
-   //   //doubflo fBSW  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq));
-   //   //doubflo fBNE  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq));
-   //   //doubflo fTSW  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq));
-   //   //doubflo fTSE  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq));
-   //   //doubflo fBNW  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq));
-   //   //doubflo fBSE  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq));
-   //   //doubflo fTNW  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq));
+   //   //real fZERO = c8over27*  (rhoBC[k]-(one + rhoBC[k])*(cusq))                                                           ;
+   //   //real fE    = c2over27*  (rhoBC[k]+(one + rhoBC[k])*(three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq));
+   //   //real fW    = c2over27*  (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1        )+c9over2*(-vx1        )*(-vx1        )-cusq));
+   //   //real fN    = c2over27*  (rhoBC[k]+(one + rhoBC[k])*(three*(    vx2     )+c9over2*(     vx2    )*(     vx2    )-cusq));
+   //   //real fS    = c2over27*  (rhoBC[k]+(one + rhoBC[k])*(three*(   -vx2     )+c9over2*(    -vx2    )*(    -vx2    )-cusq));
+   //   //real fT    = c2over27*  (rhoBC[k]+(one + rhoBC[k])*(three*(         vx3)+c9over2*(         vx3)*(         vx3)-cusq));
+   //   //real fB    = c2over27*  (rhoBC[k]+(one + rhoBC[k])*(three*(        -vx3)+c9over2*(        -vx3)*(        -vx3)-cusq));
+   //   //real fNE   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*( vx1+vx2    )+c9over2*( vx1+vx2    )*( vx1+vx2    )-cusq));
+   //   //real fSW   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1-vx2    )+c9over2*(-vx1-vx2    )*(-vx1-vx2    )-cusq));
+   //   //real fSE   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*( vx1-vx2    )+c9over2*( vx1-vx2    )*( vx1-vx2    )-cusq));
+   //   //real fNW   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1+vx2    )+c9over2*(-vx1+vx2    )*(-vx1+vx2    )-cusq));
+   //   //real fTE   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*( vx1    +vx3)+c9over2*( vx1    +vx3)*( vx1    +vx3)-cusq));
+   //   //real fBW   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1    -vx3)+c9over2*(-vx1    -vx3)*(-vx1    -vx3)-cusq));
+   //   //real fBE   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*( vx1    -vx3)+c9over2*( vx1    -vx3)*( vx1    -vx3)-cusq));
+   //   //real fTW   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1    +vx3)+c9over2*(-vx1    +vx3)*(-vx1    +vx3)-cusq));
+   //   //real fTN   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(     vx2+vx3)+c9over2*(     vx2+vx3)*(     vx2+vx3)-cusq));
+   //   //real fBS   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(    -vx2-vx3)+c9over2*(    -vx2-vx3)*(    -vx2-vx3)-cusq));
+   //   //real fBN   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(     vx2-vx3)+c9over2*(     vx2-vx3)*(     vx2-vx3)-cusq));
+   //   //real fTS   = c1over54*  (rhoBC[k]+(one + rhoBC[k])*(three*(    -vx2+vx3)+c9over2*(    -vx2+vx3)*(    -vx2+vx3)-cusq));
+   //   //real fTNE  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq));
+   //   //real fBSW  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq));
+   //   //real fBNE  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq));
+   //   //real fTSW  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq));
+   //   //real fTSE  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq));
+   //   //real fBNW  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq));
+   //   //real fBSE  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq));
+   //   //real fTNW  = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq));
    //   //////////////////////////////////////////////////////////////////////////
 	  //// based on VirtualFluids (kucher + fard)
-   //   doubflo fZERO = c8over27  * rhoBC[k] * (one                                                                      - cusq);
-   //   doubflo fE    = c2over27  * rhoBC[k] * (one + three * ( vx1        ) + c9over2 * ( vx1        ) * ( vx1        ) - cusq);
-   //   doubflo fW    = c2over27  * rhoBC[k] * (one + three * (-vx1        ) + c9over2 * (-vx1        ) * (-vx1        ) - cusq);
-   //   doubflo fN    = c2over27  * rhoBC[k] * (one + three * (     vx2    ) + c9over2 * (     vx2    ) * (     vx2    ) - cusq);
-   //   doubflo fS    = c2over27  * rhoBC[k] * (one + three * (    -vx2    ) + c9over2 * (    -vx2    ) * (    -vx2    ) - cusq);
-   //   doubflo fT    = c2over27  * rhoBC[k] * (one + three * (         vx3) + c9over2 * (         vx3) * (         vx3) - cusq);
-   //   doubflo fB    = c2over27  * rhoBC[k] * (one + three * (        -vx3) + c9over2 * (        -vx3) * (        -vx3) - cusq);
-   //   doubflo fNE   = c1over54  * rhoBC[k] * (one + three * ( vx1+vx2    ) + c9over2 * ( vx1+vx2    ) * ( vx1+vx2    ) - cusq);
-   //   doubflo fSW   = c1over54  * rhoBC[k] * (one + three * (-vx1-vx2    ) + c9over2 * (-vx1-vx2    ) * (-vx1-vx2    ) - cusq);
-   //   doubflo fSE   = c1over54  * rhoBC[k] * (one + three * ( vx1-vx2    ) + c9over2 * ( vx1-vx2    ) * ( vx1-vx2    ) - cusq);
-   //   doubflo fNW   = c1over54  * rhoBC[k] * (one + three * (-vx1+vx2    ) + c9over2 * (-vx1+vx2    ) * (-vx1+vx2    ) - cusq);
-   //   doubflo fTE   = c1over54  * rhoBC[k] * (one + three * ( vx1    +vx3) + c9over2 * ( vx1    +vx3) * ( vx1    +vx3) - cusq);
-   //   doubflo fBW   = c1over54  * rhoBC[k] * (one + three * (-vx1    -vx3) + c9over2 * (-vx1    -vx3) * (-vx1    -vx3) - cusq);
-   //   doubflo fBE   = c1over54  * rhoBC[k] * (one + three * ( vx1    -vx3) + c9over2 * ( vx1    -vx3) * ( vx1    -vx3) - cusq);
-   //   doubflo fTW   = c1over54  * rhoBC[k] * (one + three * (-vx1    +vx3) + c9over2 * (-vx1    +vx3) * (-vx1    +vx3) - cusq);
-   //   doubflo fTN   = c1over54  * rhoBC[k] * (one + three * (     vx2+vx3) + c9over2 * (     vx2+vx3) * (     vx2+vx3) - cusq);
-   //   doubflo fBS   = c1over54  * rhoBC[k] * (one + three * (    -vx2-vx3) + c9over2 * (    -vx2-vx3) * (    -vx2-vx3) - cusq);
-   //   doubflo fBN   = c1over54  * rhoBC[k] * (one + three * (     vx2-vx3) + c9over2 * (     vx2-vx3) * (     vx2-vx3) - cusq);
-   //   doubflo fTS   = c1over54  * rhoBC[k] * (one + three * (    -vx2+vx3) + c9over2 * (    -vx2+vx3) * (    -vx2+vx3) - cusq);
-   //   doubflo fTNE  = c1over216 * rhoBC[k] * (one + three * ( vx1+vx2+vx3) + c9over2 * ( vx1+vx2+vx3) * ( vx1+vx2+vx3) - cusq);
-   //   doubflo fBSW  = c1over216 * rhoBC[k] * (one + three * (-vx1-vx2-vx3) + c9over2 * (-vx1-vx2-vx3) * (-vx1-vx2-vx3) - cusq);
-   //   doubflo fBNE  = c1over216 * rhoBC[k] * (one + three * ( vx1+vx2-vx3) + c9over2 * ( vx1+vx2-vx3) * ( vx1+vx2-vx3) - cusq);
-   //   doubflo fTSW  = c1over216 * rhoBC[k] * (one + three * (-vx1-vx2+vx3) + c9over2 * (-vx1-vx2+vx3) * (-vx1-vx2+vx3) - cusq);
-   //   doubflo fTSE  = c1over216 * rhoBC[k] * (one + three * ( vx1-vx2+vx3) + c9over2 * ( vx1-vx2+vx3) * ( vx1-vx2+vx3) - cusq);
-   //   doubflo fBNW  = c1over216 * rhoBC[k] * (one + three * (-vx1+vx2-vx3) + c9over2 * (-vx1+vx2-vx3) * (-vx1+vx2-vx3) - cusq);
-   //   doubflo fBSE  = c1over216 * rhoBC[k] * (one + three * ( vx1-vx2-vx3) + c9over2 * ( vx1-vx2-vx3) * ( vx1-vx2-vx3) - cusq);
-   //   doubflo fTNW  = c1over216 * rhoBC[k] * (one + three * (-vx1+vx2+vx3) + c9over2 * (-vx1+vx2+vx3) * (-vx1+vx2+vx3) - cusq);
+   //   real fZERO = c8over27  * rhoBC[k] * (one                                                                      - cusq);
+   //   real fE    = c2over27  * rhoBC[k] * (one + three * ( vx1        ) + c9over2 * ( vx1        ) * ( vx1        ) - cusq);
+   //   real fW    = c2over27  * rhoBC[k] * (one + three * (-vx1        ) + c9over2 * (-vx1        ) * (-vx1        ) - cusq);
+   //   real fN    = c2over27  * rhoBC[k] * (one + three * (     vx2    ) + c9over2 * (     vx2    ) * (     vx2    ) - cusq);
+   //   real fS    = c2over27  * rhoBC[k] * (one + three * (    -vx2    ) + c9over2 * (    -vx2    ) * (    -vx2    ) - cusq);
+   //   real fT    = c2over27  * rhoBC[k] * (one + three * (         vx3) + c9over2 * (         vx3) * (         vx3) - cusq);
+   //   real fB    = c2over27  * rhoBC[k] * (one + three * (        -vx3) + c9over2 * (        -vx3) * (        -vx3) - cusq);
+   //   real fNE   = c1over54  * rhoBC[k] * (one + three * ( vx1+vx2    ) + c9over2 * ( vx1+vx2    ) * ( vx1+vx2    ) - cusq);
+   //   real fSW   = c1over54  * rhoBC[k] * (one + three * (-vx1-vx2    ) + c9over2 * (-vx1-vx2    ) * (-vx1-vx2    ) - cusq);
+   //   real fSE   = c1over54  * rhoBC[k] * (one + three * ( vx1-vx2    ) + c9over2 * ( vx1-vx2    ) * ( vx1-vx2    ) - cusq);
+   //   real fNW   = c1over54  * rhoBC[k] * (one + three * (-vx1+vx2    ) + c9over2 * (-vx1+vx2    ) * (-vx1+vx2    ) - cusq);
+   //   real fTE   = c1over54  * rhoBC[k] * (one + three * ( vx1    +vx3) + c9over2 * ( vx1    +vx3) * ( vx1    +vx3) - cusq);
+   //   real fBW   = c1over54  * rhoBC[k] * (one + three * (-vx1    -vx3) + c9over2 * (-vx1    -vx3) * (-vx1    -vx3) - cusq);
+   //   real fBE   = c1over54  * rhoBC[k] * (one + three * ( vx1    -vx3) + c9over2 * ( vx1    -vx3) * ( vx1    -vx3) - cusq);
+   //   real fTW   = c1over54  * rhoBC[k] * (one + three * (-vx1    +vx3) + c9over2 * (-vx1    +vx3) * (-vx1    +vx3) - cusq);
+   //   real fTN   = c1over54  * rhoBC[k] * (one + three * (     vx2+vx3) + c9over2 * (     vx2+vx3) * (     vx2+vx3) - cusq);
+   //   real fBS   = c1over54  * rhoBC[k] * (one + three * (    -vx2-vx3) + c9over2 * (    -vx2-vx3) * (    -vx2-vx3) - cusq);
+   //   real fBN   = c1over54  * rhoBC[k] * (one + three * (     vx2-vx3) + c9over2 * (     vx2-vx3) * (     vx2-vx3) - cusq);
+   //   real fTS   = c1over54  * rhoBC[k] * (one + three * (    -vx2+vx3) + c9over2 * (    -vx2+vx3) * (    -vx2+vx3) - cusq);
+   //   real fTNE  = c1over216 * rhoBC[k] * (one + three * ( vx1+vx2+vx3) + c9over2 * ( vx1+vx2+vx3) * ( vx1+vx2+vx3) - cusq);
+   //   real fBSW  = c1over216 * rhoBC[k] * (one + three * (-vx1-vx2-vx3) + c9over2 * (-vx1-vx2-vx3) * (-vx1-vx2-vx3) - cusq);
+   //   real fBNE  = c1over216 * rhoBC[k] * (one + three * ( vx1+vx2-vx3) + c9over2 * ( vx1+vx2-vx3) * ( vx1+vx2-vx3) - cusq);
+   //   real fTSW  = c1over216 * rhoBC[k] * (one + three * (-vx1-vx2+vx3) + c9over2 * (-vx1-vx2+vx3) * (-vx1-vx2+vx3) - cusq);
+   //   real fTSE  = c1over216 * rhoBC[k] * (one + three * ( vx1-vx2+vx3) + c9over2 * ( vx1-vx2+vx3) * ( vx1-vx2+vx3) - cusq);
+   //   real fBNW  = c1over216 * rhoBC[k] * (one + three * (-vx1+vx2-vx3) + c9over2 * (-vx1+vx2-vx3) * (-vx1+vx2-vx3) - cusq);
+   //   real fBSE  = c1over216 * rhoBC[k] * (one + three * ( vx1-vx2-vx3) + c9over2 * ( vx1-vx2-vx3) * ( vx1-vx2-vx3) - cusq);
+   //   real fTNW  = c1over216 * rhoBC[k] * (one + three * (-vx1+vx2+vx3) + c9over2 * (-vx1+vx2+vx3) * (-vx1+vx2+vx3) - cusq);
    ////   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //////test
-   ////   doubflo fZERO = c8over27  * ((drho1 + rhoBC[k]) / two) * (one                                                                      - cusq);
-   ////   doubflo fE    = c2over27  * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1        ) + c9over2 * ( vx1        ) * ( vx1        ) - cusq);
-   ////   doubflo fW    = c2over27  * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1        ) + c9over2 * (-vx1        ) * (-vx1        ) - cusq);
-   ////   doubflo fN    = c2over27  * ((drho1 + rhoBC[k]) / two) * (one + three * (     vx2    ) + c9over2 * (     vx2    ) * (     vx2    ) - cusq);
-   ////   doubflo fS    = c2over27  * ((drho1 + rhoBC[k]) / two) * (one + three * (    -vx2    ) + c9over2 * (    -vx2    ) * (    -vx2    ) - cusq);
-   ////   doubflo fT    = c2over27  * ((drho1 + rhoBC[k]) / two) * (one + three * (         vx3) + c9over2 * (         vx3) * (         vx3) - cusq);
-   ////   doubflo fB    = c2over27  * ((drho1 + rhoBC[k]) / two) * (one + three * (        -vx3) + c9over2 * (        -vx3) * (        -vx3) - cusq);
-   ////   doubflo fNE   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1+vx2    ) + c9over2 * ( vx1+vx2    ) * ( vx1+vx2    ) - cusq);
-   ////   doubflo fSW   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1-vx2    ) + c9over2 * (-vx1-vx2    ) * (-vx1-vx2    ) - cusq);
-   ////   doubflo fSE   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1-vx2    ) + c9over2 * ( vx1-vx2    ) * ( vx1-vx2    ) - cusq);
-   ////   doubflo fNW   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1+vx2    ) + c9over2 * (-vx1+vx2    ) * (-vx1+vx2    ) - cusq);
-   ////   doubflo fTE   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1    +vx3) + c9over2 * ( vx1    +vx3) * ( vx1    +vx3) - cusq);
-   ////   doubflo fBW   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1    -vx3) + c9over2 * (-vx1    -vx3) * (-vx1    -vx3) - cusq);
-   ////   doubflo fBE   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1    -vx3) + c9over2 * ( vx1    -vx3) * ( vx1    -vx3) - cusq);
-   ////   doubflo fTW   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1    +vx3) + c9over2 * (-vx1    +vx3) * (-vx1    +vx3) - cusq);
-   ////   doubflo fTN   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (     vx2+vx3) + c9over2 * (     vx2+vx3) * (     vx2+vx3) - cusq);
-   ////   doubflo fBS   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (    -vx2-vx3) + c9over2 * (    -vx2-vx3) * (    -vx2-vx3) - cusq);
-   ////   doubflo fBN   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (     vx2-vx3) + c9over2 * (     vx2-vx3) * (     vx2-vx3) - cusq);
-   ////   doubflo fTS   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (    -vx2+vx3) + c9over2 * (    -vx2+vx3) * (    -vx2+vx3) - cusq);
-   ////   doubflo fTNE  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1+vx2+vx3) + c9over2 * ( vx1+vx2+vx3) * ( vx1+vx2+vx3) - cusq);
-   ////   doubflo fBSW  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1-vx2-vx3) + c9over2 * (-vx1-vx2-vx3) * (-vx1-vx2-vx3) - cusq);
-   ////   doubflo fBNE  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1+vx2-vx3) + c9over2 * ( vx1+vx2-vx3) * ( vx1+vx2-vx3) - cusq);
-   ////   doubflo fTSW  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1-vx2+vx3) + c9over2 * (-vx1-vx2+vx3) * (-vx1-vx2+vx3) - cusq);
-   ////   doubflo fTSE  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1-vx2+vx3) + c9over2 * ( vx1-vx2+vx3) * ( vx1-vx2+vx3) - cusq);
-   ////   doubflo fBNW  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1+vx2-vx3) + c9over2 * (-vx1+vx2-vx3) * (-vx1+vx2-vx3) - cusq);
-   ////   doubflo fBSE  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1-vx2-vx3) + c9over2 * ( vx1-vx2-vx3) * ( vx1-vx2-vx3) - cusq);
-   ////   doubflo fTNW  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1+vx2+vx3) + c9over2 * (-vx1+vx2+vx3) * (-vx1+vx2+vx3) - cusq);
+   ////   real fZERO = c8over27  * ((drho1 + rhoBC[k]) / two) * (one                                                                      - cusq);
+   ////   real fE    = c2over27  * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1        ) + c9over2 * ( vx1        ) * ( vx1        ) - cusq);
+   ////   real fW    = c2over27  * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1        ) + c9over2 * (-vx1        ) * (-vx1        ) - cusq);
+   ////   real fN    = c2over27  * ((drho1 + rhoBC[k]) / two) * (one + three * (     vx2    ) + c9over2 * (     vx2    ) * (     vx2    ) - cusq);
+   ////   real fS    = c2over27  * ((drho1 + rhoBC[k]) / two) * (one + three * (    -vx2    ) + c9over2 * (    -vx2    ) * (    -vx2    ) - cusq);
+   ////   real fT    = c2over27  * ((drho1 + rhoBC[k]) / two) * (one + three * (         vx3) + c9over2 * (         vx3) * (         vx3) - cusq);
+   ////   real fB    = c2over27  * ((drho1 + rhoBC[k]) / two) * (one + three * (        -vx3) + c9over2 * (        -vx3) * (        -vx3) - cusq);
+   ////   real fNE   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1+vx2    ) + c9over2 * ( vx1+vx2    ) * ( vx1+vx2    ) - cusq);
+   ////   real fSW   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1-vx2    ) + c9over2 * (-vx1-vx2    ) * (-vx1-vx2    ) - cusq);
+   ////   real fSE   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1-vx2    ) + c9over2 * ( vx1-vx2    ) * ( vx1-vx2    ) - cusq);
+   ////   real fNW   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1+vx2    ) + c9over2 * (-vx1+vx2    ) * (-vx1+vx2    ) - cusq);
+   ////   real fTE   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1    +vx3) + c9over2 * ( vx1    +vx3) * ( vx1    +vx3) - cusq);
+   ////   real fBW   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1    -vx3) + c9over2 * (-vx1    -vx3) * (-vx1    -vx3) - cusq);
+   ////   real fBE   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1    -vx3) + c9over2 * ( vx1    -vx3) * ( vx1    -vx3) - cusq);
+   ////   real fTW   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1    +vx3) + c9over2 * (-vx1    +vx3) * (-vx1    +vx3) - cusq);
+   ////   real fTN   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (     vx2+vx3) + c9over2 * (     vx2+vx3) * (     vx2+vx3) - cusq);
+   ////   real fBS   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (    -vx2-vx3) + c9over2 * (    -vx2-vx3) * (    -vx2-vx3) - cusq);
+   ////   real fBN   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (     vx2-vx3) + c9over2 * (     vx2-vx3) * (     vx2-vx3) - cusq);
+   ////   real fTS   = c1over54  * ((drho1 + rhoBC[k]) / two) * (one + three * (    -vx2+vx3) + c9over2 * (    -vx2+vx3) * (    -vx2+vx3) - cusq);
+   ////   real fTNE  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1+vx2+vx3) + c9over2 * ( vx1+vx2+vx3) * ( vx1+vx2+vx3) - cusq);
+   ////   real fBSW  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1-vx2-vx3) + c9over2 * (-vx1-vx2-vx3) * (-vx1-vx2-vx3) - cusq);
+   ////   real fBNE  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1+vx2-vx3) + c9over2 * ( vx1+vx2-vx3) * ( vx1+vx2-vx3) - cusq);
+   ////   real fTSW  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1-vx2+vx3) + c9over2 * (-vx1-vx2+vx3) * (-vx1-vx2+vx3) - cusq);
+   ////   real fTSE  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1-vx2+vx3) + c9over2 * ( vx1-vx2+vx3) * ( vx1-vx2+vx3) - cusq);
+   ////   real fBNW  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1+vx2-vx3) + c9over2 * (-vx1+vx2-vx3) * (-vx1+vx2-vx3) - cusq);
+   ////   real fBSE  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1-vx2-vx3) + c9over2 * ( vx1-vx2-vx3) * ( vx1-vx2-vx3) - cusq);
+   ////   real fTNW  = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1+vx2+vx3) + c9over2 * (-vx1+vx2+vx3) * (-vx1+vx2+vx3) - cusq);
 
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
             // based on BGK Plus Comp
@@ -3971,77 +3971,77 @@ extern "C" __global__ void QPressDeviceEQZ27(doubflo* rhoBC,
 			//double mfccc = (D.f[dirBSW ])[k1bsw ];
 			//double mfacc = (D.f[dirBSE ])[k1bse ];
 			//double mfcac = (D.f[dirBNW ])[k1bnw ];
-			doubflo mfabb = (D.f[dirE   ])[k1e   ];
-			doubflo mfcbb = (D.f[dirW   ])[k1w   ];
-			doubflo mfbab = (D.f[dirN   ])[k1n   ];
-			doubflo mfbcb = (D.f[dirS   ])[k1s   ];
-			doubflo mfbba = (D.f[dirT   ])[k1t   ];
-			doubflo mfbbc = (D.f[dirB   ])[k1b   ];
-			doubflo mfaab = (D.f[dirNE  ])[k1ne  ];
-			doubflo mfccb = (D.f[dirSW  ])[k1sw  ];
-			doubflo mfacb = (D.f[dirSE  ])[k1se  ];
-			doubflo mfcab = (D.f[dirNW  ])[k1nw  ];
-			doubflo mfaba = (D.f[dirTE  ])[k1te  ];
-			doubflo mfcbc = (D.f[dirBW  ])[k1bw  ];
-			doubflo mfabc = (D.f[dirBE  ])[k1be  ];
-			doubflo mfcba = (D.f[dirTW  ])[k1tw  ];
-			doubflo mfbaa = (D.f[dirTN  ])[k1tn  ];
-			doubflo mfbcc = (D.f[dirBS  ])[k1bs  ];
-			doubflo mfbac = (D.f[dirBN  ])[k1bn  ];
-			doubflo mfbca = (D.f[dirTS  ])[k1ts  ];
-			doubflo mfbbb = (D.f[dirZERO])[k1zero];
-			doubflo mfaaa = (D.f[dirTNE ])[k1tne ];
-			doubflo mfcca = (D.f[dirTSW ])[k1tsw ];
-			doubflo mfaca = (D.f[dirTSE ])[k1tse ];
-			doubflo mfcaa = (D.f[dirTNW ])[k1tnw ];
-			doubflo mfaac = (D.f[dirBNE ])[k1bne ];
-			doubflo mfccc = (D.f[dirBSW ])[k1bsw ];
-			doubflo mfacc = (D.f[dirBSE ])[k1bse ];
-			doubflo mfcac = (D.f[dirBNW ])[k1bnw ];
-
-			//doubflo mfcbb = (D.f[dirE   ])[ke   ];
-			//doubflo mfabb = (D.f[dirW   ])[kw   ];
-			//doubflo mfbcb = (D.f[dirN   ])[kn   ];
-			//doubflo mfbab = (D.f[dirS   ])[ks   ];
-			//doubflo mfbbc = (D.f[dirT   ])[kt   ];
-			//doubflo mfbba = (D.f[dirB   ])[kb   ];
-			//doubflo mfccb = (D.f[dirNE  ])[kne  ];
-			//doubflo mfaab = (D.f[dirSW  ])[ksw  ];
-			//doubflo mfcab = (D.f[dirSE  ])[kse  ];
-			//doubflo mfacb = (D.f[dirNW  ])[knw  ];
-			//doubflo mfcbc = (D.f[dirTE  ])[kte  ];
-			//doubflo mfaba = (D.f[dirBW  ])[kbw  ];
-			//doubflo mfcba = (D.f[dirBE  ])[kbe  ];
-			//doubflo mfabc = (D.f[dirTW  ])[ktw  ];
-			//doubflo mfbcc = (D.f[dirTN  ])[ktn  ];
-			//doubflo mfbaa = (D.f[dirBS  ])[kbs  ];
-			//doubflo mfbca = (D.f[dirBN  ])[kbn  ];
-			//doubflo mfbac = (D.f[dirTS  ])[kts  ];
-			//doubflo mfbbb = (D.f[dirZERO])[kzero];
-			//doubflo mfccc = (D.f[dirTNE ])[ktne ];
-			//doubflo mfaac = (D.f[dirTSW ])[ktsw ];
-			//doubflo mfcac = (D.f[dirTSE ])[ktse ];
-			//doubflo mfacc = (D.f[dirTNW ])[ktnw ];
-			//doubflo mfcca = (D.f[dirBNE ])[kbne ];
-			//doubflo mfaaa = (D.f[dirBSW ])[kbsw ];
-			//doubflo mfcaa = (D.f[dirBSE ])[kbse ];
-			//doubflo mfaca = (D.f[dirBNW ])[kbnw ];
+			real mfabb = (D.f[dirE   ])[k1e   ];
+			real mfcbb = (D.f[dirW   ])[k1w   ];
+			real mfbab = (D.f[dirN   ])[k1n   ];
+			real mfbcb = (D.f[dirS   ])[k1s   ];
+			real mfbba = (D.f[dirT   ])[k1t   ];
+			real mfbbc = (D.f[dirB   ])[k1b   ];
+			real mfaab = (D.f[dirNE  ])[k1ne  ];
+			real mfccb = (D.f[dirSW  ])[k1sw  ];
+			real mfacb = (D.f[dirSE  ])[k1se  ];
+			real mfcab = (D.f[dirNW  ])[k1nw  ];
+			real mfaba = (D.f[dirTE  ])[k1te  ];
+			real mfcbc = (D.f[dirBW  ])[k1bw  ];
+			real mfabc = (D.f[dirBE  ])[k1be  ];
+			real mfcba = (D.f[dirTW  ])[k1tw  ];
+			real mfbaa = (D.f[dirTN  ])[k1tn  ];
+			real mfbcc = (D.f[dirBS  ])[k1bs  ];
+			real mfbac = (D.f[dirBN  ])[k1bn  ];
+			real mfbca = (D.f[dirTS  ])[k1ts  ];
+			real mfbbb = (D.f[dirZERO])[k1zero];
+			real mfaaa = (D.f[dirTNE ])[k1tne ];
+			real mfcca = (D.f[dirTSW ])[k1tsw ];
+			real mfaca = (D.f[dirTSE ])[k1tse ];
+			real mfcaa = (D.f[dirTNW ])[k1tnw ];
+			real mfaac = (D.f[dirBNE ])[k1bne ];
+			real mfccc = (D.f[dirBSW ])[k1bsw ];
+			real mfacc = (D.f[dirBSE ])[k1bse ];
+			real mfcac = (D.f[dirBNW ])[k1bnw ];
+
+			//real mfcbb = (D.f[dirE   ])[ke   ];
+			//real mfabb = (D.f[dirW   ])[kw   ];
+			//real mfbcb = (D.f[dirN   ])[kn   ];
+			//real mfbab = (D.f[dirS   ])[ks   ];
+			//real mfbbc = (D.f[dirT   ])[kt   ];
+			//real mfbba = (D.f[dirB   ])[kb   ];
+			//real mfccb = (D.f[dirNE  ])[kne  ];
+			//real mfaab = (D.f[dirSW  ])[ksw  ];
+			//real mfcab = (D.f[dirSE  ])[kse  ];
+			//real mfacb = (D.f[dirNW  ])[knw  ];
+			//real mfcbc = (D.f[dirTE  ])[kte  ];
+			//real mfaba = (D.f[dirBW  ])[kbw  ];
+			//real mfcba = (D.f[dirBE  ])[kbe  ];
+			//real mfabc = (D.f[dirTW  ])[ktw  ];
+			//real mfbcc = (D.f[dirTN  ])[ktn  ];
+			//real mfbaa = (D.f[dirBS  ])[kbs  ];
+			//real mfbca = (D.f[dirBN  ])[kbn  ];
+			//real mfbac = (D.f[dirTS  ])[kts  ];
+			//real mfbbb = (D.f[dirZERO])[kzero];
+			//real mfccc = (D.f[dirTNE ])[ktne ];
+			//real mfaac = (D.f[dirTSW ])[ktsw ];
+			//real mfcac = (D.f[dirTSE ])[ktse ];
+			//real mfacc = (D.f[dirTNW ])[ktnw ];
+			//real mfcca = (D.f[dirBNE ])[kbne ];
+			//real mfaaa = (D.f[dirBSW ])[kbsw ];
+			//real mfcaa = (D.f[dirBSE ])[kbse ];
+			//real mfaca = (D.f[dirBNW ])[kbnw ];
 			////////////////////////////////////////////////////////////////////////////////////
-			//doubflo rho   = (((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			//real rho   = (((((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) + one;//!!!!Achtung + one
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo rho = rhoBC[k];
+			real rho = rhoBC[k];
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OoRho = one / (rho * 1.5f);
+			real OoRho = one / (rho * 1.5f);
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo vvx    = ((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    = ((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb)) * OoRho;
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab)) * OoRho;
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba)) * OoRho;
 			/////////////////////////
@@ -4125,15 +4125,15 @@ extern "C" __global__ void QPressDeviceEQZ27(doubflo* rhoBC,
 			double vz2    = vvz * vvz;
 			//////////////////////////////////////////////////////////////////////////////////
 			//original
-            doubflo XXb    = -c2o3 + vx2;
-            doubflo XXc    = -c1o2 * (XXb + one + vvx);
-            doubflo XXa    = XXc + vvx;
-            doubflo YYb    = -c2o3 + vy2;
-            doubflo YYc    = -c1o2 * (YYb + one + vvy);
-            doubflo YYa    = YYc + vvy;
-            doubflo ZZb    = -c2o3 + vz2;
-            doubflo ZZc    = -c1o2 * (ZZb + one + vvz);
-            doubflo ZZa    = ZZc + vvz;
+            real XXb    = -c2o3 + vx2;
+            real XXc    = -c1o2 * (XXb + one + vvx);
+            real XXa    = XXc + vvx;
+            real YYb    = -c2o3 + vy2;
+            real YYc    = -c1o2 * (YYb + one + vvy);
+            real YYa    = YYc + vvy;
+            real ZZb    = -c2o3 + vz2;
+            real ZZc    = -c1o2 * (ZZb + one + vvz);
+            real ZZa    = ZZc + vvz;
 			//////////////////////////////////////////////////////////////////////////////////
 			//unkonditioniert
             mfcbb = -(rhoBC[k] + one) * XXc * YYb * ZZb - c2over27; 
@@ -4384,7 +4384,7 @@ extern "C" __global__ void QPressDeviceEQZ27(doubflo* rhoBC,
 
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QPressDeviceZero27(	 doubflo* DD, 
+extern "C" __global__ void QPressDeviceZero27(	 real* DD, 
 												 int* k_Q, 
 												 int kQ, 
 												 unsigned int* neighborX,
@@ -4571,12 +4571,12 @@ extern "C" __global__ void QPressDeviceZero27(	 doubflo* DD,
 
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QPressDeviceFake27(	 doubflo* rhoBC,
-												 doubflo* DD, 
+extern "C" __global__ void QPressDeviceFake27(	 real* rhoBC,
+												 real* DD, 
 												 int* k_Q, 
 												 int* k_N, 
 												 int kQ, 
-												 doubflo om1, 
+												 real om1, 
 												 unsigned int* neighborX,
 												 unsigned int* neighborY,
 												 unsigned int* neighborZ,
@@ -4719,7 +4719,7 @@ extern "C" __global__ void QPressDeviceFake27(	 doubflo* rhoBC,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
+      real        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
          f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW;
 
       f1_W    = (D.f[dirE   ])[k1e   ];
@@ -4751,7 +4751,7 @@ extern "C" __global__ void QPressDeviceFake27(	 doubflo* rhoBC,
       f1_TSE  = (D.f[dirBNW ])[k1bnw ];
 
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3;
+      real vx1, vx2, vx3;
       vx1    =  ((f1_TSE - f1_BNW) - (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) - (f1_TSW - f1_BNE)) +
                   ((f1_BE - f1_TW)   + (f1_TE - f1_BW))   + ((f1_SE - f1_NW)   + (f1_NE - f1_SW)) +
                   (f1_E - f1_W); 
@@ -4765,9 +4765,9 @@ extern "C" __global__ void QPressDeviceFake27(	 doubflo* rhoBC,
                   (-(f1_BN - f1_TS)  + (f1_TN - f1_BS))   + ((f1_TE - f1_BW)   - (f1_BE - f1_TW)) +
                   (f1_T - f1_B); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
       //////////////////////////////////////////////////////////////////////////
-      doubflo drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+
+      real drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+
          f1_TNE+f1_TSW+f1_TSE+f1_TNW+f1_BNE+f1_BSW+f1_BSE+f1_BNW;
 
 	  //drho1 = (drho1 + rhoBC[k])/2.f;
@@ -4845,13 +4845,13 @@ extern "C" __global__ void QPressDeviceFake27(	 doubflo* rhoBC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QPressDevice27_IntBB(doubflo* rho,
-												doubflo* DD, 
+extern "C" __global__ void QPressDevice27_IntBB(real* rho,
+												real* DD, 
 												int* k_Q, 
-												doubflo* QQ,
+												real* QQ,
 												unsigned int sizeQ,
 												int kQ, 
-												doubflo om1, 
+												real om1, 
 												unsigned int* neighborX,
 												unsigned int* neighborY,
 												unsigned int* neighborZ,
@@ -4933,11 +4933,11 @@ extern "C" __global__ void QPressDevice27_IntBB(doubflo* rho,
 	if(k<kQ)
 	{
 		////////////////////////////////////////////////////////////////////////////////
-		//doubflo VeloX = vx[k];
-		//doubflo VeloY = vy[k];
-		//doubflo VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
+		//real VeloX = vx[k];
+		//real VeloY = vy[k];
+		//real VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+		real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
 			*q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
 			*q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
 			*q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -4999,7 +4999,7 @@ extern "C" __global__ void QPressDevice27_IntBB(doubflo* rho,
 		unsigned int ktne = KQK;
 		unsigned int kbsw = neighborZ[ksw];
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+		real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
 			f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
 		f_W    = (D.f[dirE   ])[ke   ];
@@ -5029,7 +5029,7 @@ extern "C" __global__ void QPressDevice27_IntBB(doubflo* rho,
 		f_TNW  = (D.f[dirBSE ])[kbse ];
 		f_TSE  = (D.f[dirBNW ])[kbnw ];
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo vx1, vx2, vx3, drho, feq, q;
+		real vx1, vx2, vx3, drho, feq, q;
 		drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
 			f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
 			f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -5047,7 +5047,7 @@ extern "C" __global__ void QPressDevice27_IntBB(doubflo* rho,
 			(-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
 			(f_T - f_B))/(one+drho); 
 
-		doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+		real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
 		//////////////////////////////////////////////////////////////////////////
 		if (evenOrOdd==false)
@@ -5113,10 +5113,10 @@ extern "C" __global__ void QPressDevice27_IntBB(doubflo* rho,
 		////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 		//Test
 		//(D.f[dirZERO])[k]=c1o10;
-		doubflo rhoDiff = drho - rho[k];
-		doubflo VeloX = vx1;
-		doubflo VeloY = vx2;
-		doubflo VeloZ = vx3;
+		real rhoDiff = drho - rho[k];
+		real VeloX = vx1;
+		real VeloY = vx2;
+		real VeloZ = vx3;
 		////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 		q = q_dirE[k];
diff --git a/src/VirtualFluids_GPU/GPU/Random.cu b/src/VirtualFluids_GPU/GPU/Random.cu
index 152d8da3d..963efc464 100644
--- a/src/VirtualFluids_GPU/GPU/Random.cu
+++ b/src/VirtualFluids_GPU/GPU/Random.cu
@@ -31,7 +31,7 @@ extern "C" __global__ void initRandom(curandState* state)
 
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void generateRandomValues(curandState* state, doubflo* randArray)
+extern "C" __global__ void generateRandomValues(curandState* state, real* randArray)
 {
    ////////////////////////////////////////////////////////////////////////////////
    const unsigned  x = threadIdx.x;  // Globaler x-Index 
@@ -44,7 +44,7 @@ extern "C" __global__ void generateRandomValues(curandState* state, doubflo* ran
    const unsigned k = nx*(ny*z + y) + x;
    //////////////////////////////////////////////////////////////////////////
 
-   randArray[k] = (doubflo)curand_uniform(&state[k]);
+   randArray[k] = (real)curand_uniform(&state[k]);
 
    //////////////////////////////////////////////////////////////////////////
 }
diff --git a/src/VirtualFluids_GPU/GPU/ScaleCF27.cu b/src/VirtualFluids_GPU/GPU/ScaleCF27.cu
index 6651e9ba2..565d2051d 100644
--- a/src/VirtualFluids_GPU/GPU/ScaleCF27.cu
+++ b/src/VirtualFluids_GPU/GPU/ScaleCF27.cu
@@ -4,8 +4,8 @@
 #include "GPU/constant.h"
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCF_0817_comp_27( doubflo* DC, 
-												 doubflo* DF, 
+extern "C" __global__ void scaleCF_0817_comp_27( real* DC, 
+												 real* DF, 
 												 unsigned int* neighborCX,
 												 unsigned int* neighborCY,
 												 unsigned int* neighborCZ,
@@ -18,16 +18,16 @@ extern "C" __global__ void scaleCF_0817_comp_27( doubflo* DC,
 												 unsigned int* posCSWB, 
 												 unsigned int* posFSWB, 
 												 unsigned int kCF, 
-												 doubflo omCoarse, 
-												 doubflo omFine, 
-												 doubflo nu, 
+												 real omCoarse, 
+												 real omFine, 
+												 real nu, 
 												 unsigned int nxC, 
 												 unsigned int nyC, 
 												 unsigned int nxF, 
 												 unsigned int nyF,
 												 OffCF offCF)
 {
-	doubflo
+	real
 		*fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest,
 		*fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest,
 		*f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest;
@@ -61,7 +61,7 @@ extern "C" __global__ void scaleCF_0817_comp_27( doubflo* DC,
 	fPMPdest = &DF[dirTSE *size_MatF];
 	fPMMdest = &DF[dirBSE *size_MatF];
 
-	doubflo
+	real
 		*fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source,
 		*fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource,
 		*f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource;
@@ -138,40 +138,40 @@ extern "C" __global__ void scaleCF_0817_comp_27( doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = c1o2;
-   doubflo omegaS = omCoarse;//-omCoarse;
-   doubflo o  = omFine;//-omFine;
-   doubflo oP = o;//:(
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        vvx, vvy, vvz, vx2, vy2, vz2, drho;
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP;
-   doubflo        /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP;
-   doubflo        /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP;
-   doubflo        /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP;
-   doubflo        /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM;
-   doubflo        /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM;
-   doubflo        /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM;
-   doubflo        /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM;
-   doubflo        fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM;
-   //doubflo        feqP00,feqM00,feq0P0,feq0M0,feq00P,feq00M,feqPP0,feqMM0,feqPM0,feqMP0,feqP0P,feqM0M,feqP0M,feqM0P,feq0PP,feq0MM,feq0PM,feq0MP,feq000,feqPPP, feqMMP, feqPMP, feqMPP, feqPPM, feqMMM, feqPMM, feqMPM;
-   doubflo        kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP;
-   doubflo        kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP;
-   doubflo        kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP;
-   doubflo        kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP;
-   doubflo        kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM;
-   doubflo        kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM;
-   doubflo        kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM;
-   doubflo        kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
-
-   doubflo x,y,z;
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   real oP = o;//:(
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        vvx, vvy, vvz, vx2, vy2, vz2, drho;
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP;
+   real        /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP;
+   real        /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP;
+   real        /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP;
+   real        /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM;
+   real        /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM;
+   real        /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM;
+   real        /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM;
+   real        fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM;
+   //real        feqP00,feqM00,feq0P0,feq0M0,feq00P,feq00M,feqPP0,feqMM0,feqPM0,feqMP0,feqP0P,feqM0M,feqP0M,feqM0P,feq0PP,feq0MM,feq0PM,feq0MP,feq000,feqPPP, feqMMP, feqPMP, feqMPP, feqPPM, feqMMM, feqPMM, feqMPM;
+   real        kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP;
+   real        kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP;
+   real        kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP;
+   real        kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP;
+   real        kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM;
+   real        kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM;
+   real        kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM;
+   real        kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+   real        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
+
+   real x,y,z;
 
 
    if(k<kCF)
@@ -687,11 +687,11 @@ extern "C" __global__ void scaleCF_0817_comp_27( doubflo* DC,
 	  b0 -= c1o4*(bxx + byy + bzz);
 	  c0 -= c1o4*(cxx + cyy + czz);
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage = zero;
-	  doubflo kyzAverage = zero;
-	  doubflo kxzAverage = zero;
-	  doubflo kxxMyyAverage = zero;
-	  doubflo kxxMzzAverage = zero;
+	  real kxyAverage = zero;
+	  real kyzAverage = zero;
+	  real kxzAverage = zero;
+	  real kxxMyyAverage = zero;
+	  real kxxMzzAverage = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //Press
 	  //d0   = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8;
@@ -739,41 +739,41 @@ extern "C" __global__ void scaleCF_0817_comp_27( doubflo* DC,
 	  dy = dy + xoff * dxy + zoff * dyz;
 	  dz = dz + xoff * dxz + yoff * dyz;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	  
-	  doubflo mfcbb = zero;
-	  doubflo mfabb = zero;
-	  doubflo mfbcb = zero;
-	  doubflo mfbab = zero;
-	  doubflo mfbbc = zero;
-	  doubflo mfbba = zero;
-	  doubflo mfccb = zero;
-	  doubflo mfaab = zero;
-	  doubflo mfcab = zero;
-	  doubflo mfacb = zero;
-	  doubflo mfcbc = zero;
-	  doubflo mfaba = zero;
-	  doubflo mfcba = zero;
-	  doubflo mfabc = zero;
-	  doubflo mfbcc = zero;
-	  doubflo mfbaa = zero;
-	  doubflo mfbca = zero;
-	  doubflo mfbac = zero;
-	  doubflo mfbbb = zero;
-	  doubflo mfccc = zero;
-	  doubflo mfaac = zero;
-	  doubflo mfcac = zero;
-	  doubflo mfacc = zero;
-	  doubflo mfcca = zero;
-	  doubflo mfaaa = zero;
-	  doubflo mfcaa = zero;
-	  doubflo mfaca = zero;
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo m0, m1, m2, oMdrho;
-	  doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  //doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  //doubflo O3 = two - o;
-	  //doubflo residu, residutmp;
+	  real m0, m1, m2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  //real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  //real O3 = two - o;
+	  //real residu, residutmp;
 	  //residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -785,9 +785,9 @@ extern "C" __global__ void scaleCF_0817_comp_27( doubflo* DC,
 	  y = -c1o4;
 	  z = -c1o4;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //drho = c3o64*drho_NEB+c1o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c27o64*drho_SWB+c9o64*drho_SWT;
 	  //press = press_SWT * (c9o64  + c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + 
@@ -4070,8 +4070,8 @@ extern "C" __global__ void scaleCF_0817_comp_27( doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC, 
-												  doubflo* DF, 
+extern "C" __global__ void scaleCF_AA2016_comp_27(real* DC, 
+												  real* DF, 
 												  unsigned int* neighborCX,
 												  unsigned int* neighborCY,
 												  unsigned int* neighborCZ,
@@ -4084,16 +4084,16 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 												  unsigned int* posCSWB, 
 												  unsigned int* posFSWB, 
 												  unsigned int kCF, 
-												  doubflo omCoarse, 
-												  doubflo omFine, 
-												  doubflo nu, 
+												  real omCoarse, 
+												  real omFine, 
+												  real nu, 
 												  unsigned int nxC, 
 												  unsigned int nyC, 
 												  unsigned int nxF, 
 												  unsigned int nyF,
 												  OffCF offCF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -4124,7 +4124,7 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -4200,56 +4200,56 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = c1o2;
-   doubflo omegaS = omCoarse;//-omCoarse;
-   doubflo o  = omFine;//-omFine;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
-   doubflo        x,y,z;
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+   real        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
+   real        x,y,z;
 	//////////////////////////////////////////////////////////////////////////////////////
-    doubflo	mfcbb, mfabb, mfbcb, mfbab, mfbbc, mfbba, mfccb, mfaab, mfcab, mfacb, mfcbc, mfaba, mfcba, mfabc, mfbcc, mfbaa, mfbca, mfbac, mfbbb, mfccc, mfaac, mfcac, mfacc, mfcca, mfaaa, mfcaa, mfaca;
-	doubflo wadjust;
-	doubflo qudricLimitP = 0.01f;// * 0.0001f;
-	doubflo qudricLimitM = 0.01f;// * 0.0001f;
-	doubflo qudricLimitD = 0.01f;// * 0.001f;
-	doubflo omega = omCoarse;
+    real	mfcbb, mfabb, mfbcb, mfbab, mfbbc, mfbba, mfccb, mfaab, mfcab, mfacb, mfcbc, mfaba, mfcba, mfabc, mfbcc, mfbaa, mfbca, mfbac, mfbbb, mfccc, mfaac, mfcac, mfacc, mfcca, mfaaa, mfcaa, mfaca;
+	real wadjust;
+	real qudricLimitP = 0.01f;// * 0.0001f;
+	real qudricLimitM = 0.01f;// * 0.0001f;
+	real qudricLimitD = 0.01f;// * 0.001f;
+	real omega = omCoarse;
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	doubflo NeqOn = one;
-	doubflo drho, rho;
+	real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	real NeqOn = one;
+	real drho, rho;
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	doubflo OxxPyyPzz;
-	doubflo OxyyPxzz;
-	doubflo OxyyMxzz;
-	doubflo Oxyz    ;
-	doubflo O4, O5, O6;
-	doubflo CUMcbb, CUMbcb, CUMbbc, CUMcca, CUMcac, CUMacc, CUMbcc, CUMcbc, CUMccb, CUMccc;
+	real OxxPyyPzz;
+	real OxyyPxzz;
+	real OxyyMxzz;
+	real Oxyz    ;
+	real O4, O5, O6;
+	real CUMcbb, CUMbcb, CUMbbc, CUMcca, CUMcac, CUMacc, CUMbcc, CUMcbc, CUMccb, CUMccc;
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
@@ -4617,13 +4617,13 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SWB    = mfbbb;
-			doubflo mxxyPyzz_SWB = mxxyPyzz;
-			doubflo mxxyMyzz_SWB = mxxyMyzz;
-			doubflo mxxzPyyz_SWB = mxxzPyyz;
-			doubflo mxxzMyyz_SWB = mxxzMyyz;
-			doubflo mxyyPxzz_SWB = mxyyPxzz;
-			doubflo mxyyMxzz_SWB = mxyyMxzz;
+			real mfbbb_SWB    = mfbbb;
+			real mxxyPyzz_SWB = mxxyPyzz;
+			real mxxyMyzz_SWB = mxxyMyzz;
+			real mxxzPyyz_SWB = mxxzPyyz;
+			real mxxzMyyz_SWB = mxxzMyyz;
+			real mxyyPxzz_SWB = mxyyPxzz;
+			real mxyyMxzz_SWB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -5023,13 +5023,13 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SWT    = mfbbb;
-			doubflo mxxyPyzz_SWT = mxxyPyzz;
-			doubflo mxxyMyzz_SWT = mxxyMyzz;
-			doubflo mxxzPyyz_SWT = mxxzPyyz;
-			doubflo mxxzMyyz_SWT = mxxzMyyz;
-			doubflo mxyyPxzz_SWT = mxyyPxzz;
-			doubflo mxyyMxzz_SWT = mxyyMxzz;
+			real mfbbb_SWT    = mfbbb;
+			real mxxyPyzz_SWT = mxxyPyzz;
+			real mxxyMyzz_SWT = mxxyMyzz;
+			real mxxzPyyz_SWT = mxxzPyyz;
+			real mxxzMyyz_SWT = mxxzMyyz;
+			real mxyyPxzz_SWT = mxyyPxzz;
+			real mxyyMxzz_SWT = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -5430,13 +5430,13 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SET    = mfbbb;
-			doubflo mxxyPyzz_SET = mxxyPyzz;
-			doubflo mxxyMyzz_SET = mxxyMyzz;
-			doubflo mxxzPyyz_SET = mxxzPyyz;
-			doubflo mxxzMyyz_SET = mxxzMyyz;
-			doubflo mxyyPxzz_SET = mxyyPxzz;
-			doubflo mxyyMxzz_SET = mxyyMxzz;
+			real mfbbb_SET    = mfbbb;
+			real mxxyPyzz_SET = mxxyPyzz;
+			real mxxyMyzz_SET = mxxyMyzz;
+			real mxxzPyyz_SET = mxxzPyyz;
+			real mxxzMyyz_SET = mxxzMyyz;
+			real mxyyPxzz_SET = mxyyPxzz;
+			real mxyyMxzz_SET = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -5837,13 +5837,13 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SEB    = mfbbb;
-			doubflo mxxyPyzz_SEB = mxxyPyzz;
-			doubflo mxxyMyzz_SEB = mxxyMyzz;
-			doubflo mxxzPyyz_SEB = mxxzPyyz;
-			doubflo mxxzMyyz_SEB = mxxzMyyz;
-			doubflo mxyyPxzz_SEB = mxyyPxzz;
-			doubflo mxyyMxzz_SEB = mxyyMxzz;
+			real mfbbb_SEB    = mfbbb;
+			real mxxyPyzz_SEB = mxxyPyzz;
+			real mxxyMyzz_SEB = mxxyMyzz;
+			real mxxzPyyz_SEB = mxxzPyyz;
+			real mxxzMyyz_SEB = mxxzMyyz;
+			real mxyyPxzz_SEB = mxyyPxzz;
+			real mxyyMxzz_SEB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -6254,13 +6254,13 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NWB    = mfbbb;
-			doubflo mxxyPyzz_NWB = mxxyPyzz;
-			doubflo mxxyMyzz_NWB = mxxyMyzz;
-			doubflo mxxzPyyz_NWB = mxxzPyyz;
-			doubflo mxxzMyyz_NWB = mxxzMyyz;
-			doubflo mxyyPxzz_NWB = mxyyPxzz;
-			doubflo mxyyMxzz_NWB = mxyyMxzz;
+			real mfbbb_NWB    = mfbbb;
+			real mxxyPyzz_NWB = mxxyPyzz;
+			real mxxyMyzz_NWB = mxxyMyzz;
+			real mxxzPyyz_NWB = mxxzPyyz;
+			real mxxzMyyz_NWB = mxxzMyyz;
+			real mxyyPxzz_NWB = mxyyPxzz;
+			real mxyyMxzz_NWB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -6661,13 +6661,13 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NWT    = mfbbb;
-			doubflo mxxyPyzz_NWT = mxxyPyzz;
-			doubflo mxxyMyzz_NWT = mxxyMyzz;
-			doubflo mxxzPyyz_NWT = mxxzPyyz;
-			doubflo mxxzMyyz_NWT = mxxzMyyz;
-			doubflo mxyyPxzz_NWT = mxyyPxzz;
-			doubflo mxyyMxzz_NWT = mxyyMxzz;
+			real mfbbb_NWT    = mfbbb;
+			real mxxyPyzz_NWT = mxxyPyzz;
+			real mxxyMyzz_NWT = mxxyMyzz;
+			real mxxzPyyz_NWT = mxxzPyyz;
+			real mxxzMyyz_NWT = mxxzMyyz;
+			real mxyyPxzz_NWT = mxyyPxzz;
+			real mxyyMxzz_NWT = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -7068,13 +7068,13 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NET    = mfbbb;
-			doubflo mxxyPyzz_NET = mxxyPyzz;
-			doubflo mxxyMyzz_NET = mxxyMyzz;
-			doubflo mxxzPyyz_NET = mxxzPyyz;
-			doubflo mxxzMyyz_NET = mxxzMyyz;
-			doubflo mxyyPxzz_NET = mxyyPxzz;
-			doubflo mxyyMxzz_NET = mxyyMxzz;
+			real mfbbb_NET    = mfbbb;
+			real mxxyPyzz_NET = mxxyPyzz;
+			real mxxyMyzz_NET = mxxyMyzz;
+			real mxxzPyyz_NET = mxxzPyyz;
+			real mxxzMyyz_NET = mxxzMyyz;
+			real mxyyPxzz_NET = mxyyPxzz;
+			real mxyyMxzz_NET = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -7475,13 +7475,13 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NEB    = mfbbb;
-			doubflo mxxyPyzz_NEB = mxxyPyzz;
-			doubflo mxxyMyzz_NEB = mxxyMyzz;
-			doubflo mxxzPyyz_NEB = mxxzPyyz;
-			doubflo mxxzMyyz_NEB = mxxzMyyz;
-			doubflo mxyyPxzz_NEB = mxyyPxzz;
-			doubflo mxyyMxzz_NEB = mxyyMxzz;
+			real mfbbb_NEB    = mfbbb;
+			real mxxyPyzz_NEB = mxxyPyzz;
+			real mxxyMyzz_NEB = mxxyMyzz;
+			real mxxzPyyz_NEB = mxxzPyyz;
+			real mxxzMyyz_NEB = mxxzMyyz;
+			real mxyyPxzz_NEB = mxyyPxzz;
+			real mxyyMxzz_NEB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -7539,13 +7539,13 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 
 
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo mfbbbMean    = c1o8 * (mfbbb_SWB    + mfbbb_SWT    + mfbbb_SET    + mfbbb_SEB    + mfbbb_NWB    + mfbbb_NWT    + mfbbb_NET    + mfbbb_NEB);
-	  doubflo mxxyPyzzMean = c1o8 * (mxxyPyzz_SWB + mxxyPyzz_SWT + mxxyPyzz_SET + mxxyPyzz_SEB + mxxyPyzz_NWB + mxxyPyzz_NWT + mxxyPyzz_NET + mxxyPyzz_NEB);
-	  doubflo mxxyMyzzMean = c1o8 * (mxxyMyzz_SWB + mxxyMyzz_SWT + mxxyMyzz_SET + mxxyMyzz_SEB + mxxyMyzz_NWB + mxxyMyzz_NWT + mxxyMyzz_NET + mxxyMyzz_NEB);
-	  doubflo mxxzPyyzMean = c1o8 * (mxxzPyyz_SWB + mxxzPyyz_SWT + mxxzPyyz_SET + mxxzPyyz_SEB + mxxzPyyz_NWB + mxxzPyyz_NWT + mxxzPyyz_NET + mxxzPyyz_NEB);
-	  doubflo mxxzMyyzMean = c1o8 * (mxxzMyyz_SWB + mxxzMyyz_SWT + mxxzMyyz_SET + mxxzMyyz_SEB + mxxzMyyz_NWB + mxxzMyyz_NWT + mxxzMyyz_NET + mxxzMyyz_NEB);
-	  doubflo mxyyPxzzMean = c1o8 * (mxyyPxzz_SWB + mxyyPxzz_SWT + mxyyPxzz_SET + mxyyPxzz_SEB + mxyyPxzz_NWB + mxyyPxzz_NWT + mxyyPxzz_NET + mxyyPxzz_NEB);
-	  doubflo mxyyMxzzMean = c1o8 * (mxyyMxzz_SWB + mxyyMxzz_SWT + mxyyMxzz_SET + mxyyMxzz_SEB + mxyyMxzz_NWB + mxyyMxzz_NWT + mxyyMxzz_NET + mxyyMxzz_NEB);
+	  real mfbbbMean    = c1o8 * (mfbbb_SWB    + mfbbb_SWT    + mfbbb_SET    + mfbbb_SEB    + mfbbb_NWB    + mfbbb_NWT    + mfbbb_NET    + mfbbb_NEB);
+	  real mxxyPyzzMean = c1o8 * (mxxyPyzz_SWB + mxxyPyzz_SWT + mxxyPyzz_SET + mxxyPyzz_SEB + mxxyPyzz_NWB + mxxyPyzz_NWT + mxxyPyzz_NET + mxxyPyzz_NEB);
+	  real mxxyMyzzMean = c1o8 * (mxxyMyzz_SWB + mxxyMyzz_SWT + mxxyMyzz_SET + mxxyMyzz_SEB + mxxyMyzz_NWB + mxxyMyzz_NWT + mxxyMyzz_NET + mxxyMyzz_NEB);
+	  real mxxzPyyzMean = c1o8 * (mxxzPyyz_SWB + mxxzPyyz_SWT + mxxzPyyz_SET + mxxzPyyz_SEB + mxxzPyyz_NWB + mxxzPyyz_NWT + mxxzPyyz_NET + mxxzPyyz_NEB);
+	  real mxxzMyyzMean = c1o8 * (mxxzMyyz_SWB + mxxzMyyz_SWT + mxxzMyyz_SET + mxxzMyyz_SEB + mxxzMyyz_NWB + mxxzMyyz_NWT + mxxzMyyz_NET + mxxzMyyz_NEB);
+	  real mxyyPxzzMean = c1o8 * (mxyyPxzz_SWB + mxyyPxzz_SWT + mxyyPxzz_SET + mxyyPxzz_SEB + mxyyPxzz_NWB + mxyyPxzz_NWT + mxyyPxzz_NET + mxyyPxzz_NEB);
+	  real mxyyMxzzMean = c1o8 * (mxyyMxzz_SWB + mxyyMxzz_SWT + mxyyMxzz_SET + mxyyMxzz_SEB + mxyyMxzz_NWB + mxyyMxzz_NWT + mxyyMxzz_NET + mxyyMxzz_NEB);
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //  kxyFromfcNEQ_SWB    = zero;
 	  //kyzFromfcNEQ_SWB    = zero;
@@ -7707,12 +7707,12 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
       cxyz=-vx3_NEB + vx3_NET + vx3_NWB - vx3_NWT + vx3_SEB - vx3_SET - vx3_SWB + vx3_SWT;
 
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage	 = zero;
-	  doubflo kyzAverage	 = zero;
-	  doubflo kxzAverage	 = zero;
-	  doubflo kxxMyyAverage	 = zero;
-	  doubflo kxxMzzAverage	 = zero;
-	  //doubflo kxyAverage	 =(kxyFromfcNEQ_SWB+
+	  real kxyAverage	 = zero;
+	  real kyzAverage	 = zero;
+	  real kxzAverage	 = zero;
+	  real kxxMyyAverage	 = zero;
+	  real kxxMzzAverage	 = zero;
+	  //real kxyAverage	 =(kxyFromfcNEQ_SWB+
 			//				   kxyFromfcNEQ_SWT+
 			//				   kxyFromfcNEQ_SET+
 			//				   kxyFromfcNEQ_SEB+
@@ -7720,7 +7720,7 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 			//				   kxyFromfcNEQ_NWT+
 			//				   kxyFromfcNEQ_NET+
 			//				   kxyFromfcNEQ_NEB)*c1o8-(ay+bx);
-	  //doubflo kyzAverage	 =(kyzFromfcNEQ_SWB+
+	  //real kyzAverage	 =(kyzFromfcNEQ_SWB+
 			//				   kyzFromfcNEQ_SWT+
 			//				   kyzFromfcNEQ_SET+
 			//				   kyzFromfcNEQ_SEB+
@@ -7728,7 +7728,7 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 			//				   kyzFromfcNEQ_NWT+
 			//				   kyzFromfcNEQ_NET+
 			//				   kyzFromfcNEQ_NEB)*c1o8-(bz+cy);
-	  //doubflo kxzAverage	 =(kxzFromfcNEQ_SWB+
+	  //real kxzAverage	 =(kxzFromfcNEQ_SWB+
 			//				   kxzFromfcNEQ_SWT+
 			//				   kxzFromfcNEQ_SET+
 			//				   kxzFromfcNEQ_SEB+
@@ -7736,7 +7736,7 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 			//				   kxzFromfcNEQ_NWT+
 			//				   kxzFromfcNEQ_NET+
 			//				   kxzFromfcNEQ_NEB)*c1o8-(az+cx);
-	  //doubflo kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
+	  //real kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
 			//				   kxxMyyFromfcNEQ_SWT+
 			//				   kxxMyyFromfcNEQ_SET+
 			//				   kxxMyyFromfcNEQ_SEB+
@@ -7744,7 +7744,7 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 			//				   kxxMyyFromfcNEQ_NWT+
 			//				   kxxMyyFromfcNEQ_NET+
 			//				   kxxMyyFromfcNEQ_NEB)*c1o8-(ax-by);
-	  //doubflo kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
+	  //real kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
 			//				   kxxMzzFromfcNEQ_SWT+
 			//				   kxxMzzFromfcNEQ_SET+
 			//				   kxxMzzFromfcNEQ_SEB+
@@ -7767,7 +7767,7 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 	  //dxyz =  -press_NEB + press_NET + press_NWB - press_NWT + press_SEB - press_SET - press_SWB + press_SWT;
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //drho
-	  doubflo LapRho = ((xoff != zero) || (yoff != zero) || (zoff != zero)) ? zero : -three*(ax*ax + by*by + cz*cz) - six * (bx*ay + cx*az + cy*bz); 
+	  real LapRho = ((xoff != zero) || (yoff != zero) || (zoff != zero)) ? zero : -three*(ax*ax + by*by + cz*cz) - six * (bx*ay + cx*az + cy*bz); 
 	  d0   = ( drho_NEB + drho_NET + drho_NWB + drho_NWT + drho_SEB + drho_SET + drho_SWB + drho_SWT) * c1o8;
 	  dx   = ( drho_NEB + drho_NET - drho_NWB - drho_NWT + drho_SEB + drho_SET - drho_SWB - drho_SWT) * c1o4;
 	  dy   = ( drho_NEB + drho_NET + drho_NWB + drho_NWT - drho_SEB - drho_SET - drho_SWB - drho_SWT) * c1o4;
@@ -7882,13 +7882,13 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 	  mfcaa = zero;
 	  mfaca = zero;
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	  //doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  ////doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  ////doubflo O3 = two - o;
-	  ////doubflo residu, residutmp;
+	  //real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	  //real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  ////real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  ////real O3 = two - o;
+	  ////real residu, residutmp;
 	  ////residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  //doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  //real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -7900,9 +7900,9 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 	  y = -c1o4;
 	  z = -c1o4;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //drho = c3o64*drho_NEB+c1o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c27o64*drho_SWB+c9o64*drho_SWT;
 	  //press = press_SWT * (c9o64  + c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + 
@@ -10953,8 +10953,8 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC, 
-														doubflo* DF, 
+extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(real* DC, 
+														real* DF, 
 														unsigned int* neighborCX,
 														unsigned int* neighborCY,
 														unsigned int* neighborCZ,
@@ -10967,16 +10967,16 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 														unsigned int* posCSWB, 
 														unsigned int* posFSWB, 
 														unsigned int kCF, 
-														doubflo omCoarse, 
-														doubflo omFine, 
-														doubflo nu, 
+														real omCoarse, 
+														real omFine, 
+														real nu, 
 														unsigned int nxC, 
 														unsigned int nyC, 
 														unsigned int nxF, 
 														unsigned int nyF,
 														OffCF offCF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -11007,7 +11007,7 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -11083,56 +11083,56 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = c1o2;
-   doubflo omegaS = omCoarse;//-omCoarse;
-   doubflo o  = omFine;//-omFine;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
-   doubflo        x,y,z;
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+   real        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
+   real        x,y,z;
 	//////////////////////////////////////////////////////////////////////////////////////
-    doubflo	mfcbb, mfabb, mfbcb, mfbab, mfbbc, mfbba, mfccb, mfaab, mfcab, mfacb, mfcbc, mfaba, mfcba, mfabc, mfbcc, mfbaa, mfbca, mfbac, mfbbb, mfccc, mfaac, mfcac, mfacc, mfcca, mfaaa, mfcaa, mfaca;
-	doubflo wadjust;
-	doubflo qudricLimitP = 0.01f;// * 0.0001f;
-	doubflo qudricLimitM = 0.01f;// * 0.0001f;
-	doubflo qudricLimitD = 0.01f;// * 0.001f;
-	doubflo omega = omCoarse;
+    real	mfcbb, mfabb, mfbcb, mfbab, mfbbc, mfbba, mfccb, mfaab, mfcab, mfacb, mfcbc, mfaba, mfcba, mfabc, mfbcc, mfbaa, mfbca, mfbac, mfbbb, mfccc, mfaac, mfcac, mfacc, mfcca, mfaaa, mfcaa, mfaca;
+	real wadjust;
+	real qudricLimitP = 0.01f;// * 0.0001f;
+	real qudricLimitM = 0.01f;// * 0.0001f;
+	real qudricLimitD = 0.01f;// * 0.001f;
+	real omega = omCoarse;
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	doubflo NeqOn = one;
-	doubflo drho, rho;
+	real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	real NeqOn = one;
+	real drho, rho;
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	doubflo OxxPyyPzz;
-	doubflo OxyyPxzz;
-	doubflo OxyyMxzz;
-	doubflo Oxyz    ;
-	doubflo O4, O5, O6;
-	doubflo CUMcbb, CUMbcb, CUMbbc, CUMcca, CUMcac, CUMacc, CUMbcc, CUMcbc, CUMccb, CUMccc;
+	real OxxPyyPzz;
+	real OxyyPxzz;
+	real OxyyMxzz;
+	real Oxyz    ;
+	real O4, O5, O6;
+	real CUMcbb, CUMbcb, CUMbbc, CUMcca, CUMcac, CUMacc, CUMbcc, CUMcbc, CUMccb, CUMccc;
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
@@ -11500,13 +11500,13 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SWB    = mfbbb;
-			doubflo mxxyPyzz_SWB = mxxyPyzz;
-			doubflo mxxyMyzz_SWB = mxxyMyzz;
-			doubflo mxxzPyyz_SWB = mxxzPyyz;
-			doubflo mxxzMyyz_SWB = mxxzMyyz;
-			doubflo mxyyPxzz_SWB = mxyyPxzz;
-			doubflo mxyyMxzz_SWB = mxyyMxzz;
+			real mfbbb_SWB    = mfbbb;
+			real mxxyPyzz_SWB = mxxyPyzz;
+			real mxxyMyzz_SWB = mxxyMyzz;
+			real mxxzPyyz_SWB = mxxzPyyz;
+			real mxxzMyyz_SWB = mxxzMyyz;
+			real mxyyPxzz_SWB = mxyyPxzz;
+			real mxyyMxzz_SWB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -11906,13 +11906,13 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SWT    = mfbbb;
-			doubflo mxxyPyzz_SWT = mxxyPyzz;
-			doubflo mxxyMyzz_SWT = mxxyMyzz;
-			doubflo mxxzPyyz_SWT = mxxzPyyz;
-			doubflo mxxzMyyz_SWT = mxxzMyyz;
-			doubflo mxyyPxzz_SWT = mxyyPxzz;
-			doubflo mxyyMxzz_SWT = mxyyMxzz;
+			real mfbbb_SWT    = mfbbb;
+			real mxxyPyzz_SWT = mxxyPyzz;
+			real mxxyMyzz_SWT = mxxyMyzz;
+			real mxxzPyyz_SWT = mxxzPyyz;
+			real mxxzMyyz_SWT = mxxzMyyz;
+			real mxyyPxzz_SWT = mxyyPxzz;
+			real mxyyMxzz_SWT = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -12313,13 +12313,13 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SET    = mfbbb;
-			doubflo mxxyPyzz_SET = mxxyPyzz;
-			doubflo mxxyMyzz_SET = mxxyMyzz;
-			doubflo mxxzPyyz_SET = mxxzPyyz;
-			doubflo mxxzMyyz_SET = mxxzMyyz;
-			doubflo mxyyPxzz_SET = mxyyPxzz;
-			doubflo mxyyMxzz_SET = mxyyMxzz;
+			real mfbbb_SET    = mfbbb;
+			real mxxyPyzz_SET = mxxyPyzz;
+			real mxxyMyzz_SET = mxxyMyzz;
+			real mxxzPyyz_SET = mxxzPyyz;
+			real mxxzMyyz_SET = mxxzMyyz;
+			real mxyyPxzz_SET = mxyyPxzz;
+			real mxyyMxzz_SET = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -12720,13 +12720,13 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SEB    = mfbbb;
-			doubflo mxxyPyzz_SEB = mxxyPyzz;
-			doubflo mxxyMyzz_SEB = mxxyMyzz;
-			doubflo mxxzPyyz_SEB = mxxzPyyz;
-			doubflo mxxzMyyz_SEB = mxxzMyyz;
-			doubflo mxyyPxzz_SEB = mxyyPxzz;
-			doubflo mxyyMxzz_SEB = mxyyMxzz;
+			real mfbbb_SEB    = mfbbb;
+			real mxxyPyzz_SEB = mxxyPyzz;
+			real mxxyMyzz_SEB = mxxyMyzz;
+			real mxxzPyyz_SEB = mxxzPyyz;
+			real mxxzMyyz_SEB = mxxzMyyz;
+			real mxyyPxzz_SEB = mxyyPxzz;
+			real mxyyMxzz_SEB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -13137,13 +13137,13 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NWB    = mfbbb;
-			doubflo mxxyPyzz_NWB = mxxyPyzz;
-			doubflo mxxyMyzz_NWB = mxxyMyzz;
-			doubflo mxxzPyyz_NWB = mxxzPyyz;
-			doubflo mxxzMyyz_NWB = mxxzMyyz;
-			doubflo mxyyPxzz_NWB = mxyyPxzz;
-			doubflo mxyyMxzz_NWB = mxyyMxzz;
+			real mfbbb_NWB    = mfbbb;
+			real mxxyPyzz_NWB = mxxyPyzz;
+			real mxxyMyzz_NWB = mxxyMyzz;
+			real mxxzPyyz_NWB = mxxzPyyz;
+			real mxxzMyyz_NWB = mxxzMyyz;
+			real mxyyPxzz_NWB = mxyyPxzz;
+			real mxyyMxzz_NWB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -13544,13 +13544,13 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NWT    = mfbbb;
-			doubflo mxxyPyzz_NWT = mxxyPyzz;
-			doubflo mxxyMyzz_NWT = mxxyMyzz;
-			doubflo mxxzPyyz_NWT = mxxzPyyz;
-			doubflo mxxzMyyz_NWT = mxxzMyyz;
-			doubflo mxyyPxzz_NWT = mxyyPxzz;
-			doubflo mxyyMxzz_NWT = mxyyMxzz;
+			real mfbbb_NWT    = mfbbb;
+			real mxxyPyzz_NWT = mxxyPyzz;
+			real mxxyMyzz_NWT = mxxyMyzz;
+			real mxxzPyyz_NWT = mxxzPyyz;
+			real mxxzMyyz_NWT = mxxzMyyz;
+			real mxyyPxzz_NWT = mxyyPxzz;
+			real mxyyMxzz_NWT = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -13951,13 +13951,13 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NET    = mfbbb;
-			doubflo mxxyPyzz_NET = mxxyPyzz;
-			doubflo mxxyMyzz_NET = mxxyMyzz;
-			doubflo mxxzPyyz_NET = mxxzPyyz;
-			doubflo mxxzMyyz_NET = mxxzMyyz;
-			doubflo mxyyPxzz_NET = mxyyPxzz;
-			doubflo mxyyMxzz_NET = mxyyMxzz;
+			real mfbbb_NET    = mfbbb;
+			real mxxyPyzz_NET = mxxyPyzz;
+			real mxxyMyzz_NET = mxxyMyzz;
+			real mxxzPyyz_NET = mxxzPyyz;
+			real mxxzMyyz_NET = mxxzMyyz;
+			real mxyyPxzz_NET = mxyyPxzz;
+			real mxyyMxzz_NET = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -14358,13 +14358,13 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NEB    = mfbbb;
-			doubflo mxxyPyzz_NEB = mxxyPyzz;
-			doubflo mxxyMyzz_NEB = mxxyMyzz;
-			doubflo mxxzPyyz_NEB = mxxzPyyz;
-			doubflo mxxzMyyz_NEB = mxxzMyyz;
-			doubflo mxyyPxzz_NEB = mxyyPxzz;
-			doubflo mxyyMxzz_NEB = mxyyMxzz;
+			real mfbbb_NEB    = mfbbb;
+			real mxxyPyzz_NEB = mxxyPyzz;
+			real mxxyMyzz_NEB = mxxyMyzz;
+			real mxxzPyyz_NEB = mxxzPyyz;
+			real mxxzMyyz_NEB = mxxzMyyz;
+			real mxyyPxzz_NEB = mxyyPxzz;
+			real mxyyMxzz_NEB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -14422,13 +14422,13 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo mfbbbMean    = c1o8 * (mfbbb_SWB    + mfbbb_SWT    + mfbbb_SET    + mfbbb_SEB    + mfbbb_NWB    + mfbbb_NWT    + mfbbb_NET    + mfbbb_NEB);
-	  doubflo mxxyPyzzMean = c1o8 * (mxxyPyzz_SWB + mxxyPyzz_SWT + mxxyPyzz_SET + mxxyPyzz_SEB + mxxyPyzz_NWB + mxxyPyzz_NWT + mxxyPyzz_NET + mxxyPyzz_NEB);
-	  doubflo mxxyMyzzMean = c1o8 * (mxxyMyzz_SWB + mxxyMyzz_SWT + mxxyMyzz_SET + mxxyMyzz_SEB + mxxyMyzz_NWB + mxxyMyzz_NWT + mxxyMyzz_NET + mxxyMyzz_NEB);
-	  doubflo mxxzPyyzMean = c1o8 * (mxxzPyyz_SWB + mxxzPyyz_SWT + mxxzPyyz_SET + mxxzPyyz_SEB + mxxzPyyz_NWB + mxxzPyyz_NWT + mxxzPyyz_NET + mxxzPyyz_NEB);
-	  doubflo mxxzMyyzMean = c1o8 * (mxxzMyyz_SWB + mxxzMyyz_SWT + mxxzMyyz_SET + mxxzMyyz_SEB + mxxzMyyz_NWB + mxxzMyyz_NWT + mxxzMyyz_NET + mxxzMyyz_NEB);
-	  doubflo mxyyPxzzMean = c1o8 * (mxyyPxzz_SWB + mxyyPxzz_SWT + mxyyPxzz_SET + mxyyPxzz_SEB + mxyyPxzz_NWB + mxyyPxzz_NWT + mxyyPxzz_NET + mxyyPxzz_NEB);
-	  doubflo mxyyMxzzMean = c1o8 * (mxyyMxzz_SWB + mxyyMxzz_SWT + mxyyMxzz_SET + mxyyMxzz_SEB + mxyyMxzz_NWB + mxyyMxzz_NWT + mxyyMxzz_NET + mxyyMxzz_NEB);
+	  real mfbbbMean    = c1o8 * (mfbbb_SWB    + mfbbb_SWT    + mfbbb_SET    + mfbbb_SEB    + mfbbb_NWB    + mfbbb_NWT    + mfbbb_NET    + mfbbb_NEB);
+	  real mxxyPyzzMean = c1o8 * (mxxyPyzz_SWB + mxxyPyzz_SWT + mxxyPyzz_SET + mxxyPyzz_SEB + mxxyPyzz_NWB + mxxyPyzz_NWT + mxxyPyzz_NET + mxxyPyzz_NEB);
+	  real mxxyMyzzMean = c1o8 * (mxxyMyzz_SWB + mxxyMyzz_SWT + mxxyMyzz_SET + mxxyMyzz_SEB + mxxyMyzz_NWB + mxxyMyzz_NWT + mxxyMyzz_NET + mxxyMyzz_NEB);
+	  real mxxzPyyzMean = c1o8 * (mxxzPyyz_SWB + mxxzPyyz_SWT + mxxzPyyz_SET + mxxzPyyz_SEB + mxxzPyyz_NWB + mxxzPyyz_NWT + mxxzPyyz_NET + mxxzPyyz_NEB);
+	  real mxxzMyyzMean = c1o8 * (mxxzMyyz_SWB + mxxzMyyz_SWT + mxxzMyyz_SET + mxxzMyyz_SEB + mxxzMyyz_NWB + mxxzMyyz_NWT + mxxzMyyz_NET + mxxzMyyz_NEB);
+	  real mxyyPxzzMean = c1o8 * (mxyyPxzz_SWB + mxyyPxzz_SWT + mxyyPxzz_SET + mxyyPxzz_SEB + mxyyPxzz_NWB + mxyyPxzz_NWT + mxyyPxzz_NET + mxyyPxzz_NEB);
+	  real mxyyMxzzMean = c1o8 * (mxyyMxzz_SWB + mxyyMxzz_SWT + mxyyMxzz_SET + mxyyMxzz_SEB + mxyyMxzz_NWB + mxyyMxzz_NWT + mxyyMxzz_NET + mxyyMxzz_NEB);
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //  kxyFromfcNEQ_SWB    = zero;
 	  //kyzFromfcNEQ_SWB    = zero;
@@ -14590,12 +14590,12 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
       cxyz=-vx3_NEB + vx3_NET + vx3_NWB - vx3_NWT + vx3_SEB - vx3_SET - vx3_SWB + vx3_SWT;
 
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage	 = zero;
-	  doubflo kyzAverage	 = zero;
-	  doubflo kxzAverage	 = zero;
-	  doubflo kxxMyyAverage	 = zero;
-	  doubflo kxxMzzAverage	 = zero;
-	  //doubflo kxyAverage	 =(kxyFromfcNEQ_SWB+
+	  real kxyAverage	 = zero;
+	  real kyzAverage	 = zero;
+	  real kxzAverage	 = zero;
+	  real kxxMyyAverage	 = zero;
+	  real kxxMzzAverage	 = zero;
+	  //real kxyAverage	 =(kxyFromfcNEQ_SWB+
 			//				   kxyFromfcNEQ_SWT+
 			//				   kxyFromfcNEQ_SET+
 			//				   kxyFromfcNEQ_SEB+
@@ -14603,7 +14603,7 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 			//				   kxyFromfcNEQ_NWT+
 			//				   kxyFromfcNEQ_NET+
 			//				   kxyFromfcNEQ_NEB)*c1o8-(ay+bx);
-	  //doubflo kyzAverage	 =(kyzFromfcNEQ_SWB+
+	  //real kyzAverage	 =(kyzFromfcNEQ_SWB+
 			//				   kyzFromfcNEQ_SWT+
 			//				   kyzFromfcNEQ_SET+
 			//				   kyzFromfcNEQ_SEB+
@@ -14611,7 +14611,7 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 			//				   kyzFromfcNEQ_NWT+
 			//				   kyzFromfcNEQ_NET+
 			//				   kyzFromfcNEQ_NEB)*c1o8-(bz+cy);
-	  //doubflo kxzAverage	 =(kxzFromfcNEQ_SWB+
+	  //real kxzAverage	 =(kxzFromfcNEQ_SWB+
 			//				   kxzFromfcNEQ_SWT+
 			//				   kxzFromfcNEQ_SET+
 			//				   kxzFromfcNEQ_SEB+
@@ -14619,7 +14619,7 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 			//				   kxzFromfcNEQ_NWT+
 			//				   kxzFromfcNEQ_NET+
 			//				   kxzFromfcNEQ_NEB)*c1o8-(az+cx);
-	  //doubflo kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
+	  //real kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
 			//				   kxxMyyFromfcNEQ_SWT+
 			//				   kxxMyyFromfcNEQ_SET+
 			//				   kxxMyyFromfcNEQ_SEB+
@@ -14627,7 +14627,7 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 			//				   kxxMyyFromfcNEQ_NWT+
 			//				   kxxMyyFromfcNEQ_NET+
 			//				   kxxMyyFromfcNEQ_NEB)*c1o8-(ax-by);
-	  //doubflo kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
+	  //real kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
 			//				   kxxMzzFromfcNEQ_SWT+
 			//				   kxxMzzFromfcNEQ_SET+
 			//				   kxxMzzFromfcNEQ_SEB+
@@ -14650,7 +14650,7 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 	  //dxyz =  -press_NEB + press_NET + press_NWB - press_NWT + press_SEB - press_SET - press_SWB + press_SWT;
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //drho
-	  doubflo LapRho = ((xoff != zero) || (yoff != zero) || (zoff != zero)) ? zero : -three*(ax*ax + by*by + cz*cz) - six * (bx*ay + cx*az + cy*bz); 
+	  real LapRho = ((xoff != zero) || (yoff != zero) || (zoff != zero)) ? zero : -three*(ax*ax + by*by + cz*cz) - six * (bx*ay + cx*az + cy*bz); 
 	  d0   = ( drho_NEB + drho_NET + drho_NWB + drho_NWT + drho_SEB + drho_SET + drho_SWB + drho_SWT) * c1o8;
 	  dx   = ( drho_NEB + drho_NET - drho_NWB - drho_NWT + drho_SEB + drho_SET - drho_SWB - drho_SWT) * c1o4;
 	  dy   = ( drho_NEB + drho_NET + drho_NWB + drho_NWT - drho_SEB - drho_SET - drho_SWB - drho_SWT) * c1o4;
@@ -14765,13 +14765,13 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 	  mfcaa = zero;
 	  mfaca = zero;
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	  //doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  ////doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  ////doubflo O3 = two - o;
-	  ////doubflo residu, residutmp;
+	  //real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	  //real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  ////real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  ////real O3 = two - o;
+	  ////real residu, residutmp;
 	  ////residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  //doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  //real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -14783,9 +14783,9 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 	  y = -c1o4;
 	  z = -c1o4;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //drho = c3o64*drho_NEB+c1o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c27o64*drho_SWB+c9o64*drho_SWT;
 	  //press = press_SWT * (c9o64  + c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + 
@@ -17828,8 +17828,8 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCF_RhoSq_comp_27(doubflo* DC, 
-												 doubflo* DF, 
+extern "C" __global__ void scaleCF_RhoSq_comp_27(real* DC, 
+												 real* DF, 
 												 unsigned int* neighborCX,
 												 unsigned int* neighborCY,
 												 unsigned int* neighborCZ,
@@ -17842,16 +17842,16 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27(doubflo* DC,
 												 unsigned int* posCSWB, 
 												 unsigned int* posFSWB, 
 												 unsigned int kCF, 
-												 doubflo omCoarse, 
-												 doubflo omFine, 
-												 doubflo nu, 
+												 real omCoarse, 
+												 real omFine, 
+												 real nu, 
 												 unsigned int nxC, 
 												 unsigned int nyC, 
 												 unsigned int nxF, 
 												 unsigned int nyF,
 												 OffCF offCF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -17882,7 +17882,7 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27(doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -17958,38 +17958,38 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27(doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = c1o2;
-   doubflo omegaS = omCoarse;//-omCoarse;
-   doubflo o  = omFine;//-omFine;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
-
-   doubflo x,y,z;
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+   real        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
+
+   real x,y,z;
 
 
    if(k<kCF)
@@ -18598,12 +18598,12 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27(doubflo* DC,
       cxyz=-vx3_NEB + vx3_NET + vx3_NWB - vx3_NWT + vx3_SEB - vx3_SET - vx3_SWB + vx3_SWT;
 
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage	 = zero;
-	  doubflo kyzAverage	 = zero;
-	  doubflo kxzAverage	 = zero;
-	  doubflo kxxMyyAverage	 = zero;
-	  doubflo kxxMzzAverage	 = zero;
-	  //doubflo kxyAverage	 =(kxyFromfcNEQ_SWB+
+	  real kxyAverage	 = zero;
+	  real kyzAverage	 = zero;
+	  real kxzAverage	 = zero;
+	  real kxxMyyAverage	 = zero;
+	  real kxxMzzAverage	 = zero;
+	  //real kxyAverage	 =(kxyFromfcNEQ_SWB+
 			//				   kxyFromfcNEQ_SWT+
 			//				   kxyFromfcNEQ_SET+
 			//				   kxyFromfcNEQ_SEB+
@@ -18611,7 +18611,7 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27(doubflo* DC,
 			//				   kxyFromfcNEQ_NWT+
 			//				   kxyFromfcNEQ_NET+
 			//				   kxyFromfcNEQ_NEB)*c1o8-(ay+bx);
-	  //doubflo kyzAverage	 =(kyzFromfcNEQ_SWB+
+	  //real kyzAverage	 =(kyzFromfcNEQ_SWB+
 			//				   kyzFromfcNEQ_SWT+
 			//				   kyzFromfcNEQ_SET+
 			//				   kyzFromfcNEQ_SEB+
@@ -18619,7 +18619,7 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27(doubflo* DC,
 			//				   kyzFromfcNEQ_NWT+
 			//				   kyzFromfcNEQ_NET+
 			//				   kyzFromfcNEQ_NEB)*c1o8-(bz+cy);
-	  //doubflo kxzAverage	 =(kxzFromfcNEQ_SWB+
+	  //real kxzAverage	 =(kxzFromfcNEQ_SWB+
 			//				   kxzFromfcNEQ_SWT+
 			//				   kxzFromfcNEQ_SET+
 			//				   kxzFromfcNEQ_SEB+
@@ -18627,7 +18627,7 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27(doubflo* DC,
 			//				   kxzFromfcNEQ_NWT+
 			//				   kxzFromfcNEQ_NET+
 			//				   kxzFromfcNEQ_NEB)*c1o8-(az+cx);
-	  //doubflo kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
+	  //real kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
 			//				   kxxMyyFromfcNEQ_SWT+
 			//				   kxxMyyFromfcNEQ_SET+
 			//				   kxxMyyFromfcNEQ_SEB+
@@ -18635,7 +18635,7 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27(doubflo* DC,
 			//				   kxxMyyFromfcNEQ_NWT+
 			//				   kxxMyyFromfcNEQ_NET+
 			//				   kxxMyyFromfcNEQ_NEB)*c1o8-(ax-by);
-	  //doubflo kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
+	  //real kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
 			//				   kxxMzzFromfcNEQ_SWT+
 			//				   kxxMzzFromfcNEQ_SET+
 			//				   kxxMzzFromfcNEQ_SEB+
@@ -18658,7 +18658,7 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27(doubflo* DC,
 	  //dxyz =  -press_NEB + press_NET + press_NWB - press_NWT + press_SEB - press_SET - press_SWB + press_SWT;
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //drho
-	  doubflo LapRho = ((xoff != zero) || (yoff != zero) || (zoff != zero)) ? zero : -three*(ax*ax + by*by + cz*cz) - six * (bx*ay + cx*az + cy*bz); 
+	  real LapRho = ((xoff != zero) || (yoff != zero) || (zoff != zero)) ? zero : -three*(ax*ax + by*by + cz*cz) - six * (bx*ay + cx*az + cy*bz); 
 	  d0   = ( drho_NEB + drho_NET + drho_NWB + drho_NWT + drho_SEB + drho_SET + drho_SWB + drho_SWT) * c1o8;
 	  dx   = ( drho_NEB + drho_NET - drho_NWB - drho_NWT + drho_SEB + drho_SET - drho_SWB - drho_SWT) * c1o4;
 	  dy   = ( drho_NEB + drho_NET + drho_NWB + drho_NWT - drho_SEB - drho_SET - drho_SWB - drho_SWT) * c1o4;
@@ -18745,41 +18745,41 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27(doubflo* DC,
 	  //b0=zero;
 	  //c0=c1o100;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	  
-	  doubflo mfcbb = zero;
-	  doubflo mfabb = zero;
-	  doubflo mfbcb = zero;
-	  doubflo mfbab = zero;
-	  doubflo mfbbc = zero;
-	  doubflo mfbba = zero;
-	  doubflo mfccb = zero;
-	  doubflo mfaab = zero;
-	  doubflo mfcab = zero;
-	  doubflo mfacb = zero;
-	  doubflo mfcbc = zero;
-	  doubflo mfaba = zero;
-	  doubflo mfcba = zero;
-	  doubflo mfabc = zero;
-	  doubflo mfbcc = zero;
-	  doubflo mfbaa = zero;
-	  doubflo mfbca = zero;
-	  doubflo mfbac = zero;
-	  doubflo mfbbb = zero;
-	  doubflo mfccc = zero;
-	  doubflo mfaac = zero;
-	  doubflo mfcac = zero;
-	  doubflo mfacc = zero;
-	  doubflo mfcca = zero;
-	  doubflo mfaaa = zero;
-	  doubflo mfcaa = zero;
-	  doubflo mfaca = zero;
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	  doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  //doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  //doubflo O3 = two - o;
-	  //doubflo residu, residutmp;
+	  real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  //real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  //real O3 = two - o;
+	  //real residu, residutmp;
 	  //residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -18791,9 +18791,9 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27(doubflo* DC,
 	  y = -c1o4;
 	  z = -c1o4;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //drho = c3o64*drho_NEB+c1o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c27o64*drho_SWB+c9o64*drho_SWT;
 	  //press = press_SWT * (c9o64  + c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + 
@@ -22076,8 +22076,8 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27(doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCF_staggered_time_comp_27(   doubflo* DC, 
-															 doubflo* DF, 
+extern "C" __global__ void scaleCF_staggered_time_comp_27(   real* DC, 
+															 real* DF, 
 															 unsigned int* neighborCX,
 															 unsigned int* neighborCY,
 															 unsigned int* neighborCZ,
@@ -22090,16 +22090,16 @@ extern "C" __global__ void scaleCF_staggered_time_comp_27(   doubflo* DC,
 															 unsigned int* posCSWB, 
 															 unsigned int* posFSWB, 
 															 unsigned int kCF, 
-															 doubflo omCoarse, 
-															 doubflo omFine, 
-															 doubflo nu, 
+															 real omCoarse, 
+															 real omFine, 
+															 real nu, 
 															 unsigned int nxC, 
 															 unsigned int nyC, 
 															 unsigned int nxF, 
 															 unsigned int nyF,
 															 OffCF offCF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -22130,7 +22130,7 @@ extern "C" __global__ void scaleCF_staggered_time_comp_27(   doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -22206,38 +22206,38 @@ extern "C" __global__ void scaleCF_staggered_time_comp_27(   doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = c1o2;
-   doubflo omegaS = omCoarse;//-omCoarse;
-   doubflo o  = omFine;//-omFine;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
-
-   doubflo x,y,z;
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+   real        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
+
+   real x,y,z;
 
 
    if(k<kCF)
@@ -22846,7 +22846,7 @@ extern "C" __global__ void scaleCF_staggered_time_comp_27(   doubflo* DC,
       cxyz=-vx3_NEB + vx3_NET + vx3_NWB - vx3_NWT + vx3_SEB - vx3_SET - vx3_SWB + vx3_SWT;
 
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage	 =(kxyFromfcNEQ_SWB+
+	  real kxyAverage	 =(kxyFromfcNEQ_SWB+
 							   kxyFromfcNEQ_SWT+
 							   kxyFromfcNEQ_SET+
 							   kxyFromfcNEQ_SEB+
@@ -22854,7 +22854,7 @@ extern "C" __global__ void scaleCF_staggered_time_comp_27(   doubflo* DC,
 							   kxyFromfcNEQ_NWT+
 							   kxyFromfcNEQ_NET+
 							   kxyFromfcNEQ_NEB)*c1o8-(ay+bx);
-	  doubflo kyzAverage	 =(kyzFromfcNEQ_SWB+
+	  real kyzAverage	 =(kyzFromfcNEQ_SWB+
 							   kyzFromfcNEQ_SWT+
 							   kyzFromfcNEQ_SET+
 							   kyzFromfcNEQ_SEB+
@@ -22862,7 +22862,7 @@ extern "C" __global__ void scaleCF_staggered_time_comp_27(   doubflo* DC,
 							   kyzFromfcNEQ_NWT+
 							   kyzFromfcNEQ_NET+
 							   kyzFromfcNEQ_NEB)*c1o8-(bz+cy);
-	  doubflo kxzAverage	 =(kxzFromfcNEQ_SWB+
+	  real kxzAverage	 =(kxzFromfcNEQ_SWB+
 							   kxzFromfcNEQ_SWT+
 							   kxzFromfcNEQ_SET+
 							   kxzFromfcNEQ_SEB+
@@ -22870,7 +22870,7 @@ extern "C" __global__ void scaleCF_staggered_time_comp_27(   doubflo* DC,
 							   kxzFromfcNEQ_NWT+
 							   kxzFromfcNEQ_NET+
 							   kxzFromfcNEQ_NEB)*c1o8-(az+cx);
-	  doubflo kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
+	  real kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
 							   kxxMyyFromfcNEQ_SWT+
 							   kxxMyyFromfcNEQ_SET+
 							   kxxMyyFromfcNEQ_SEB+
@@ -22878,7 +22878,7 @@ extern "C" __global__ void scaleCF_staggered_time_comp_27(   doubflo* DC,
 							   kxxMyyFromfcNEQ_NWT+
 							   kxxMyyFromfcNEQ_NET+
 							   kxxMyyFromfcNEQ_NEB)*c1o8-(ax-by);
-	  doubflo kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
+	  real kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
 							   kxxMzzFromfcNEQ_SWT+
 							   kxxMzzFromfcNEQ_SET+
 							   kxxMzzFromfcNEQ_SEB+
@@ -22987,41 +22987,41 @@ extern "C" __global__ void scaleCF_staggered_time_comp_27(   doubflo* DC,
 	  //b0=zero;
 	  //c0=c1o100;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	  
-	  doubflo mfcbb = zero;
-	  doubflo mfabb = zero;
-	  doubflo mfbcb = zero;
-	  doubflo mfbab = zero;
-	  doubflo mfbbc = zero;
-	  doubflo mfbba = zero;
-	  doubflo mfccb = zero;
-	  doubflo mfaab = zero;
-	  doubflo mfcab = zero;
-	  doubflo mfacb = zero;
-	  doubflo mfcbc = zero;
-	  doubflo mfaba = zero;
-	  doubflo mfcba = zero;
-	  doubflo mfabc = zero;
-	  doubflo mfbcc = zero;
-	  doubflo mfbaa = zero;
-	  doubflo mfbca = zero;
-	  doubflo mfbac = zero;
-	  doubflo mfbbb = zero;
-	  doubflo mfccc = zero;
-	  doubflo mfaac = zero;
-	  doubflo mfcac = zero;
-	  doubflo mfacc = zero;
-	  doubflo mfcca = zero;
-	  doubflo mfaaa = zero;
-	  doubflo mfcaa = zero;
-	  doubflo mfaca = zero;
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	  doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  //doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  //doubflo O3 = two - o;
-	  //doubflo residu, residutmp;
+	  real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  //real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  //real O3 = two - o;
+	  //real residu, residutmp;
 	  //residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -23033,9 +23033,9 @@ extern "C" __global__ void scaleCF_staggered_time_comp_27(   doubflo* DC,
 	  y = -c1o4;
 	  z = -c1o4;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //drho = c3o64*drho_NEB+c1o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c27o64*drho_SWB+c9o64*drho_SWT;
 	  //press = press_SWT * (c9o64  + c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + 
@@ -26312,8 +26312,8 @@ extern "C" __global__ void scaleCF_staggered_time_comp_27(   doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCF_Fix_comp_27(  doubflo* DC, 
-												 doubflo* DF, 
+extern "C" __global__ void scaleCF_Fix_comp_27(  real* DC, 
+												 real* DF, 
 												 unsigned int* neighborCX,
 												 unsigned int* neighborCY,
 												 unsigned int* neighborCZ,
@@ -26326,16 +26326,16 @@ extern "C" __global__ void scaleCF_Fix_comp_27(  doubflo* DC,
 												 unsigned int* posCSWB, 
 												 unsigned int* posFSWB, 
 												 unsigned int kCF, 
-												 doubflo omCoarse, 
-												 doubflo omFine, 
-												 doubflo nu, 
+												 real omCoarse, 
+												 real omFine, 
+												 real nu, 
 												 unsigned int nxC, 
 												 unsigned int nyC, 
 												 unsigned int nxF, 
 												 unsigned int nyF,
 												 OffCF offCF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -26366,7 +26366,7 @@ extern "C" __global__ void scaleCF_Fix_comp_27(  doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -26442,40 +26442,40 @@ extern "C" __global__ void scaleCF_Fix_comp_27(  doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = c1o2;
-   doubflo omegaS = omCoarse;//-omCoarse;
-   doubflo o  = omFine;//-omFine;
-   doubflo oP = o;//:(
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        vvx, vvy, vvz, vx2, vy2, vz2, drho;
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT, kyyMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT, kyyMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET, kyyMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET, kyyMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB, kyyMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB, kyyMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB, kyyMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB, kyyMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
-
-   doubflo x,y,z;
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   real oP = o;//:(
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        vvx, vvy, vvz, vx2, vy2, vz2, drho;
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT, kyyMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT, kyyMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET, kyyMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET, kyyMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB, kyyMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB, kyyMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB, kyyMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB, kyyMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+   real        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
+
+   real x,y,z;
 
 
    if(k<kCF)
@@ -27592,13 +27592,13 @@ extern "C" __global__ void scaleCF_Fix_comp_27(  doubflo* DC,
    //   cxyz=-vx3_NEB + vx3_NET + vx3_NWB - vx3_NWT + vx3_SEB - vx3_SET - vx3_SWB + vx3_SWT;
 
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage = zero;
-	  doubflo kyzAverage = zero;
-	  doubflo kxzAverage = zero;
-	  doubflo kxxMyyAverage = zero;
-	  doubflo kxxMzzAverage = zero;
+	  real kxyAverage = zero;
+	  real kyzAverage = zero;
+	  real kxzAverage = zero;
+	  real kxxMyyAverage = zero;
+	  real kxxMzzAverage = zero;
 
-	  //doubflo kxyAverage	 =(kxyFromfcNEQ_SWB+
+	  //real kxyAverage	 =(kxyFromfcNEQ_SWB+
 			//				   kxyFromfcNEQ_SWT+
 			//				   kxyFromfcNEQ_SET+
 			//				   kxyFromfcNEQ_SEB+
@@ -27606,7 +27606,7 @@ extern "C" __global__ void scaleCF_Fix_comp_27(  doubflo* DC,
 			//				   kxyFromfcNEQ_NWT+
 			//				   kxyFromfcNEQ_NET+
 			//				   kxyFromfcNEQ_NEB)*c1o8-(ay+bx);
-	  //doubflo kyzAverage	 =(kyzFromfcNEQ_SWB+
+	  //real kyzAverage	 =(kyzFromfcNEQ_SWB+
 			//				   kyzFromfcNEQ_SWT+
 			//				   kyzFromfcNEQ_SET+
 			//				   kyzFromfcNEQ_SEB+
@@ -27614,7 +27614,7 @@ extern "C" __global__ void scaleCF_Fix_comp_27(  doubflo* DC,
 			//				   kyzFromfcNEQ_NWT+
 			//				   kyzFromfcNEQ_NET+
 			//				   kyzFromfcNEQ_NEB)*c1o8-(bz+cy);
-	  //doubflo kxzAverage	 =(kxzFromfcNEQ_SWB+
+	  //real kxzAverage	 =(kxzFromfcNEQ_SWB+
 			//				   kxzFromfcNEQ_SWT+
 			//				   kxzFromfcNEQ_SET+
 			//				   kxzFromfcNEQ_SEB+
@@ -27622,7 +27622,7 @@ extern "C" __global__ void scaleCF_Fix_comp_27(  doubflo* DC,
 			//				   kxzFromfcNEQ_NWT+
 			//				   kxzFromfcNEQ_NET+
 			//				   kxzFromfcNEQ_NEB)*c1o8-(az+cx);
-	  //doubflo kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
+	  //real kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
 			//				   kxxMyyFromfcNEQ_SWT+
 			//				   kxxMyyFromfcNEQ_SET+
 			//				   kxxMyyFromfcNEQ_SEB+
@@ -27630,7 +27630,7 @@ extern "C" __global__ void scaleCF_Fix_comp_27(  doubflo* DC,
 			//				   kxxMyyFromfcNEQ_NWT+
 			//				   kxxMyyFromfcNEQ_NET+
 			//				   kxxMyyFromfcNEQ_NEB)*c1o8-(ax-by);
-	  //doubflo kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
+	  //real kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
 			//				   kxxMzzFromfcNEQ_SWT+
 			//				   kxxMzzFromfcNEQ_SET+
 			//				   kxxMzzFromfcNEQ_SEB+
@@ -27746,41 +27746,41 @@ extern "C" __global__ void scaleCF_Fix_comp_27(  doubflo* DC,
 	  //b0=zero;
 	  //c0=c1o100;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	  
-	  doubflo mfcbb = zero;
-	  doubflo mfabb = zero;
-	  doubflo mfbcb = zero;
-	  doubflo mfbab = zero;
-	  doubflo mfbbc = zero;
-	  doubflo mfbba = zero;
-	  doubflo mfccb = zero;
-	  doubflo mfaab = zero;
-	  doubflo mfcab = zero;
-	  doubflo mfacb = zero;
-	  doubflo mfcbc = zero;
-	  doubflo mfaba = zero;
-	  doubflo mfcba = zero;
-	  doubflo mfabc = zero;
-	  doubflo mfbcc = zero;
-	  doubflo mfbaa = zero;
-	  doubflo mfbca = zero;
-	  doubflo mfbac = zero;
-	  doubflo mfbbb = zero;
-	  doubflo mfccc = zero;
-	  doubflo mfaac = zero;
-	  doubflo mfcac = zero;
-	  doubflo mfacc = zero;
-	  doubflo mfcca = zero;
-	  doubflo mfaaa = zero;
-	  doubflo mfcaa = zero;
-	  doubflo mfaca = zero;
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo m0, m1, m2, oMdrho;
-	  doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  //doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  //doubflo O3 = two - o;
-	  //doubflo residu, residutmp;
+	  real m0, m1, m2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  //real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  //real O3 = two - o;
+	  //real residu, residutmp;
 	  //residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -27792,9 +27792,9 @@ extern "C" __global__ void scaleCF_Fix_comp_27(  doubflo* DC,
 	  y = -c1o4;
 	  z = -c1o4;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //drho = c3o64*drho_NEB+c1o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c27o64*drho_SWB+c9o64*drho_SWT;
 	  //press = press_SWT * (c9o64  + c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + 
@@ -31077,8 +31077,8 @@ extern "C" __global__ void scaleCF_Fix_comp_27(  doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCF_NSPress_27(   doubflo* DC, 
-												 doubflo* DF, 
+extern "C" __global__ void scaleCF_NSPress_27(   real* DC, 
+												 real* DF, 
 												 unsigned int* neighborCX,
 												 unsigned int* neighborCY,
 												 unsigned int* neighborCZ,
@@ -31091,16 +31091,16 @@ extern "C" __global__ void scaleCF_NSPress_27(   doubflo* DC,
 												 unsigned int* posCSWB, 
 												 unsigned int* posFSWB, 
 												 unsigned int kCF, 
-												 doubflo omCoarse, 
-												 doubflo omFine, 
-												 doubflo nu, 
+												 real omCoarse, 
+												 real omFine, 
+												 real nu, 
 												 unsigned int nxC, 
 												 unsigned int nyC, 
 												 unsigned int nxF, 
 												 unsigned int nyF,
 												 OffCF offCF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -31131,7 +31131,7 @@ extern "C" __global__ void scaleCF_NSPress_27(   doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -31207,37 +31207,37 @@ extern "C" __global__ void scaleCF_NSPress_27(   doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = c1o2;
-   doubflo omegaS = omCoarse;//-omCoarse;
-   doubflo o  = omFine;//-omFine;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        press_SWT,drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        press_NWT,drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        press_NET,drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        press_SET,drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        press_SWB,drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        press_NWB,drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        press_NEB,drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        press_SEB,drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
-
-   doubflo x,y,z;
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press;//,drho,vx1,vx2,vx3;
+   real        press_SWT,drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        press_NWT,drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        press_NET,drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        press_SET,drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        press_SWB,drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        press_NWB,drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        press_NEB,drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        press_SEB,drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+
+   real x,y,z;
 
 
    if(k<kCF)
@@ -31860,8 +31860,8 @@ extern "C" __global__ void scaleCF_NSPress_27(   doubflo* DC,
       cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz;
       cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz;
 
-	  doubflo dx, dy, dz;
-	  doubflo pressCenter=(press_SWT+press_NWT+press_SET+press_NET+press_NEB+press_NWB+press_SEB+press_SWB)*c1o8;
+	  real dx, dy, dz;
+	  real pressCenter=(press_SWT+press_NWT+press_SET+press_NET+press_NEB+press_NWB+press_SEB+press_SWB)*c1o8;
 
 
 	 // if(xoff!=zero || yoff!=zero || zoff!=zero)
@@ -31881,39 +31881,39 @@ extern "C" __global__ void scaleCF_NSPress_27(   doubflo* DC,
 	  //b0=zero;
 	  //c0=c1o100;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	  
-	  doubflo mfcbb = zero;
-	  doubflo mfabb = zero;
-	  doubflo mfbcb = zero;
-	  doubflo mfbab = zero;
-	  doubflo mfbbc = zero;
-	  doubflo mfbba = zero;
-	  doubflo mfccb = zero;
-	  doubflo mfaab = zero;
-	  doubflo mfcab = zero;
-	  doubflo mfacb = zero;
-	  doubflo mfcbc = zero;
-	  doubflo mfaba = zero;
-	  doubflo mfcba = zero;
-	  doubflo mfabc = zero;
-	  doubflo mfbcc = zero;
-	  doubflo mfbaa = zero;
-	  doubflo mfbca = zero;
-	  doubflo mfbac = zero;
-	  doubflo mfbbb = zero;
-	  doubflo mfccc = zero;
-	  doubflo mfaac = zero;
-	  doubflo mfcac = zero;
-	  doubflo mfacc = zero;
-	  doubflo mfcca = zero;
-	  doubflo mfaaa = zero;
-	  doubflo mfcaa = zero;
-	  doubflo mfaca = zero;
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	  doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  doubflo O3 = two - o;
-	  doubflo residu, residutmp;
+	  real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  real O3 = two - o;
+	  real residu, residutmp;
 	  residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -35021,8 +35021,8 @@ extern "C" __global__ void scaleCF_NSPress_27(   doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCF_Fix_27(   doubflo* DC, 
-                                             doubflo* DF, 
+extern "C" __global__ void scaleCF_Fix_27(   real* DC, 
+                                             real* DF, 
                                              unsigned int* neighborCX,
                                              unsigned int* neighborCY,
                                              unsigned int* neighborCZ,
@@ -35035,16 +35035,16 @@ extern "C" __global__ void scaleCF_Fix_27(   doubflo* DC,
                                              unsigned int* posCSWB, 
                                              unsigned int* posFSWB, 
                                              unsigned int kCF, 
-                                             doubflo omCoarse, 
-                                             doubflo omFine, 
-                                             doubflo nu, 
+                                             real omCoarse, 
+                                             real omFine, 
+                                             real nu, 
                                              unsigned int nxC, 
                                              unsigned int nyC, 
                                              unsigned int nxF, 
                                              unsigned int nyF,
                                              OffCF offCF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -35075,7 +35075,7 @@ extern "C" __global__ void scaleCF_Fix_27(   doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -35151,38 +35151,38 @@ extern "C" __global__ void scaleCF_Fix_27(   doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = c1o2;
-   doubflo omegaS = omCoarse;//-omCoarse;
-   doubflo o  = omFine;//-omFine;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
-
-   doubflo x,y,z;
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+   real        d0, dx, dy, dz, dxy, dxz, dyz, dxyz;
+
+   real x,y,z;
 
 
    if(k<kCF)
@@ -35831,7 +35831,7 @@ extern "C" __global__ void scaleCF_Fix_27(   doubflo* DC,
       cxyz=-vx3_NEB + vx3_NET + vx3_NWB - vx3_NWT + vx3_SEB - vx3_SET - vx3_SWB + vx3_SWT;
 
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage	 =(kxyFromfcNEQ_SWB+
+	  real kxyAverage	 =(kxyFromfcNEQ_SWB+
 							   kxyFromfcNEQ_SWT+
 							   kxyFromfcNEQ_SET+
 							   kxyFromfcNEQ_SEB+
@@ -35839,7 +35839,7 @@ extern "C" __global__ void scaleCF_Fix_27(   doubflo* DC,
 							   kxyFromfcNEQ_NWT+
 							   kxyFromfcNEQ_NET+
 							   kxyFromfcNEQ_NEB)*c1o8-(ay+bx);
-	  doubflo kyzAverage	 =(kyzFromfcNEQ_SWB+
+	  real kyzAverage	 =(kyzFromfcNEQ_SWB+
 							   kyzFromfcNEQ_SWT+
 							   kyzFromfcNEQ_SET+
 							   kyzFromfcNEQ_SEB+
@@ -35847,7 +35847,7 @@ extern "C" __global__ void scaleCF_Fix_27(   doubflo* DC,
 							   kyzFromfcNEQ_NWT+
 							   kyzFromfcNEQ_NET+
 							   kyzFromfcNEQ_NEB)*c1o8-(bz+cy);
-	  doubflo kxzAverage	 =(kxzFromfcNEQ_SWB+
+	  real kxzAverage	 =(kxzFromfcNEQ_SWB+
 							   kxzFromfcNEQ_SWT+
 							   kxzFromfcNEQ_SET+
 							   kxzFromfcNEQ_SEB+
@@ -35855,7 +35855,7 @@ extern "C" __global__ void scaleCF_Fix_27(   doubflo* DC,
 							   kxzFromfcNEQ_NWT+
 							   kxzFromfcNEQ_NET+
 							   kxzFromfcNEQ_NEB)*c1o8-(az+cx);
-	  doubflo kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
+	  real kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
 							   kxxMyyFromfcNEQ_SWT+
 							   kxxMyyFromfcNEQ_SET+
 							   kxxMyyFromfcNEQ_SEB+
@@ -35863,7 +35863,7 @@ extern "C" __global__ void scaleCF_Fix_27(   doubflo* DC,
 							   kxxMyyFromfcNEQ_NWT+
 							   kxxMyyFromfcNEQ_NET+
 							   kxxMyyFromfcNEQ_NEB)*c1o8-(ax-by);
-	  doubflo kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
+	  real kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
 							   kxxMzzFromfcNEQ_SWT+
 							   kxxMzzFromfcNEQ_SET+
 							   kxxMzzFromfcNEQ_SEB+
@@ -35972,41 +35972,41 @@ extern "C" __global__ void scaleCF_Fix_27(   doubflo* DC,
 	  //b0=zero;
 	  //c0=c1o100;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	  
-	  doubflo mfcbb = zero;
-	  doubflo mfabb = zero;
-	  doubflo mfbcb = zero;
-	  doubflo mfbab = zero;
-	  doubflo mfbbc = zero;
-	  doubflo mfbba = zero;
-	  doubflo mfccb = zero;
-	  doubflo mfaab = zero;
-	  doubflo mfcab = zero;
-	  doubflo mfacb = zero;
-	  doubflo mfcbc = zero;
-	  doubflo mfaba = zero;
-	  doubflo mfcba = zero;
-	  doubflo mfabc = zero;
-	  doubflo mfbcc = zero;
-	  doubflo mfbaa = zero;
-	  doubflo mfbca = zero;
-	  doubflo mfbac = zero;
-	  doubflo mfbbb = zero;
-	  doubflo mfccc = zero;
-	  doubflo mfaac = zero;
-	  doubflo mfcac = zero;
-	  doubflo mfacc = zero;
-	  doubflo mfcca = zero;
-	  doubflo mfaaa = zero;
-	  doubflo mfcaa = zero;
-	  doubflo mfaca = zero;
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	  doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  //doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  //doubflo O3 = two - o;
-	  //doubflo residu, residutmp;
+	  real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  //real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  //real O3 = two - o;
+	  //real residu, residutmp;
 	  //residutmp = zero;// /*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -36018,9 +36018,9 @@ extern "C" __global__ void scaleCF_Fix_27(   doubflo* DC,
 	  y = -c1o4;
 	  z = -c1o4;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //drho = c3o64*drho_NEB+c1o64*drho_NET+c9o64*drho_NWB+c3o64*drho_NWT+c9o64*drho_SEB+c3o64*drho_SET+c27o64*drho_SWB+c9o64*drho_SWT;
 	  //press = press_SWT * (c9o64  + c3o16 * mxoff + c3o16 * myoff - c9o16 * mzoff) + 
@@ -39279,8 +39279,8 @@ extern "C" __global__ void scaleCF_Fix_27(   doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCFpress27(   doubflo* DC, 
-                                             doubflo* DF, 
+extern "C" __global__ void scaleCFpress27(   real* DC, 
+                                             real* DF, 
                                              unsigned int* neighborCX,
                                              unsigned int* neighborCY,
                                              unsigned int* neighborCZ,
@@ -39293,16 +39293,16 @@ extern "C" __global__ void scaleCFpress27(   doubflo* DC,
                                              unsigned int* posCSWB, 
                                              unsigned int* posFSWB, 
                                              unsigned int kCF, 
-                                             doubflo omCoarse, 
-                                             doubflo omFine, 
-                                             doubflo nu, 
+                                             real omCoarse, 
+                                             real omFine, 
+                                             real nu, 
                                              unsigned int nxC, 
                                              unsigned int nyC, 
                                              unsigned int nxF, 
                                              unsigned int nyF,
                                              OffCF offCF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -39333,7 +39333,7 @@ extern "C" __global__ void scaleCFpress27(   doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -39409,37 +39409,37 @@ extern "C" __global__ void scaleCFpress27(   doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = c1o2;
-   doubflo omegaS = omCoarse;//-omCoarse;
-   doubflo o  = omFine;//-omFine;
-   //doubflo op = one;
-   doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press,drho,vx1,vx2,vx3;
-   doubflo        press_SWT,drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        press_NWT,drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        press_NET,drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        press_SET,drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        press_SWB,drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        press_NWB,drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        press_NEB,drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        press_SEB,drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
-
-   doubflo x,y,z;
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   //real op = one;
+   real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press,drho,vx1,vx2,vx3;
+   real        press_SWT,drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        press_NWT,drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        press_NET,drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        press_SET,drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        press_SWB,drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        press_NWB,drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        press_NEB,drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        press_SEB,drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+
+   real x,y,z;
 
 
    if(k<kCF)
@@ -40062,12 +40062,12 @@ extern "C" __global__ void scaleCFpress27(   doubflo* DC,
       cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz;
       cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo  x_E,  x_N,  x_T,  x_NE,  x_SE,  x_BE,  x_TE,  x_TN,  x_BN,  x_TNE,  x_TNW,  x_TSE,  x_TSW,  x_ZERO;
-      doubflo  y_E,  y_N,  y_T,  y_NE,  y_SE,  y_BE,  y_TE,  y_TN,  y_BN,  y_TNE,  y_TNW,  y_TSE,  y_TSW,  y_ZERO;
-      doubflo  z_E,  z_N,  z_T,  z_NE,  z_SE,  z_BE,  z_TE,  z_TN,  z_BN,  z_TNE,  z_TNW,  z_TSE,  z_TSW,  z_ZERO;
-      doubflo xy_E, xy_N, xy_T, xy_NE, xy_SE, xy_BE, xy_TE, xy_TN, xy_BN, xy_TNE, xy_TNW, xy_TSE, xy_TSW/*, xy_ZERO*/;
-      doubflo xz_E, xz_N, xz_T, xz_NE, xz_SE, xz_BE, xz_TE, xz_TN, xz_BN, xz_TNE, xz_TNW, xz_TSE, xz_TSW/*, xz_ZERO*/;
-      doubflo yz_E, yz_N, yz_T, yz_NE, yz_SE, yz_BE, yz_TE, yz_TN, yz_BN, yz_TNE, yz_TNW, yz_TSE, yz_TSW/*, yz_ZERO*/;
+      real  x_E,  x_N,  x_T,  x_NE,  x_SE,  x_BE,  x_TE,  x_TN,  x_BN,  x_TNE,  x_TNW,  x_TSE,  x_TSW,  x_ZERO;
+      real  y_E,  y_N,  y_T,  y_NE,  y_SE,  y_BE,  y_TE,  y_TN,  y_BN,  y_TNE,  y_TNW,  y_TSE,  y_TSW,  y_ZERO;
+      real  z_E,  z_N,  z_T,  z_NE,  z_SE,  z_BE,  z_TE,  z_TN,  z_BN,  z_TNE,  z_TNW,  z_TSE,  z_TSW,  z_ZERO;
+      real xy_E, xy_N, xy_T, xy_NE, xy_SE, xy_BE, xy_TE, xy_TN, xy_BN, xy_TNE, xy_TNW, xy_TSE, xy_TSW/*, xy_ZERO*/;
+      real xz_E, xz_N, xz_T, xz_NE, xz_SE, xz_BE, xz_TE, xz_TN, xz_BN, xz_TNE, xz_TNW, xz_TSE, xz_TSW/*, xz_ZERO*/;
+      real yz_E, yz_N, yz_T, yz_NE, yz_SE, yz_BE, yz_TE, yz_TN, yz_BN, yz_TNE, yz_TNW, yz_TSE, yz_TSW/*, yz_ZERO*/;
 
 
       f_E = eps_new*((two*(-two*ax + by + cz))/(twentyseven*o));
@@ -40953,8 +40953,8 @@ extern "C" __global__ void scaleCFpress27(   doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCFLast27( doubflo* DC, 
-                                          doubflo* DF, 
+extern "C" __global__ void scaleCFLast27( real* DC, 
+                                          real* DF, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -40967,16 +40967,16 @@ extern "C" __global__ void scaleCFLast27( doubflo* DC,
                                           unsigned int* posCSWB, 
                                           unsigned int* posFSWB, 
                                           unsigned int kCF, 
-                                          doubflo omCoarse, 
-                                          doubflo omFine, 
-                                          doubflo nu, 
+                                          real omCoarse, 
+                                          real omFine, 
+                                          real nu, 
                                           unsigned int nxC, 
                                           unsigned int nyC, 
                                           unsigned int nxF, 
                                           unsigned int nyF,
                                           OffCF offCF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -41007,7 +41007,7 @@ extern "C" __global__ void scaleCFLast27( doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -41083,37 +41083,37 @@ extern "C" __global__ void scaleCFLast27( doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = c1o2;
-   doubflo omegaS = omCoarse;//-omCoarse;
-   doubflo o  = omFine;//-omFine;
-   //doubflo op = one;
-   doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        drho,vx1,vx2,vx3;
-   doubflo        drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
-
-   //doubflo x,y,z;
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   //real op = one;
+   real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        drho,vx1,vx2,vx3;
+   real        drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz, axyz, bxyz, cxyz;
+
+   //real x,y,z;
 
 
    if(k<kCF)
@@ -41652,36 +41652,36 @@ extern "C" __global__ void scaleCFLast27( doubflo* DC,
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       //// (_SWT _SEB _NWB _NET)
       ////merged
-      //doubflo tayz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET + kyzFromfcNEQ_SWT + kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
-      //doubflo tbxz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET + kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB + kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET;
-      //doubflo tcxy =-kxyFromfcNEQ_SWT + kxyFromfcNEQ_NWB + kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET; 
-      //doubflo tax  = four*(-vx1_SWT + vx1_SEB - vx1_NWB + vx1_NET) - tayz;
-      //doubflo tby  = four*(-vx2_SWT - vx2_SEB + vx2_NWB + vx2_NET) - tbxz;
-      //doubflo tcz  = four*( vx3_SWT - vx3_SEB - vx3_NWB + vx3_NET) - tcxy;
-      //doubflo taxy = two*( vx1_SWT - vx1_NWB - vx1_SEB + vx1_NET - vx3_SWT - vx3_NWB + vx3_SEB + vx3_NET) - kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET;
-      //doubflo taxz = two*(-vx1_SWT + vx1_NWB - vx1_SEB + vx1_NET - vx2_SWT - vx2_NWB + vx2_SEB + vx2_NET) + kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NET - kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET;
-      //doubflo tbxy = two*( vx2_SWT - vx2_NWB - vx2_SEB + vx2_NET - vx3_SWT + vx3_NWB - vx3_SEB + vx3_NET) + kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NET - kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
-      //doubflo tay  = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) - taxz;
-      //doubflo taz  = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) - taxy;
-      //doubflo tbz  = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) - tbxy;
-      //doubflo tbx  = two*(kxyFromfcNEQ_SWT + kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB + kxyFromfcNEQ_NET) - tay;
-      //doubflo tcy  = two*(kyzFromfcNEQ_SWT + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NWB + kyzFromfcNEQ_NET) - tbz;
-      //doubflo tcx  = two*(kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB + kxzFromfcNEQ_NET) - taz;
-      //doubflo tbyz = four*(-vx2_SWT + vx2_SEB - vx2_NWB + vx2_NET) - tbx;
-      //doubflo tcyz = four*(-vx3_SWT + vx3_SEB - vx3_NWB + vx3_NET) - tcx;
-      //doubflo tcxz = four*(-vx3_SWT - vx3_SEB + vx3_NWB + vx3_NET) - tcy;
-      //doubflo taxx = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) - tbz;
-      //doubflo tayy = four*(-vx2_SWT + vx2_SEB + vx2_NWB - vx2_NET) + two*(-kxyFromfcNEQ_SWT    - kxyFromfcNEQ_SEB    + kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + tbz;
-      //doubflo tazz = four*( vx3_SWT + vx3_SEB - vx3_NWB - vx3_NET) + two*( kxzFromfcNEQ_SWT    - kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tcy;
-      //doubflo tbxx = four*(-vx1_SWT + vx1_SEB + vx1_NWB - vx1_NET) + two*(-kxyFromfcNEQ_SWT    + kxyFromfcNEQ_SEB    - kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + taz;
-      //doubflo tbyy = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) + two*( kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_NET) - taz;
-      //doubflo tbzz = four*( vx3_SWT - vx3_SEB + vx3_NWB - vx3_NET) + two*( kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    - kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tcx;
-      //doubflo tcxx = four*( vx1_SWT + vx1_SEB - vx1_NWB - vx1_NET) + two*(-kxzFromfcNEQ_SWT    + kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tay;
-      //doubflo tcyy = four*( vx2_SWT - vx2_SEB + vx2_NWB - vx2_NET) + two*(-kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    + kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tbx;
-      //doubflo tczz = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) - tay;
-      //doubflo ta0  = eight*( vx1_SWT + vx1_NWB + vx1_SEB + vx1_NET) + two*( kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) + two*(-kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tayy;
-      //doubflo tb0  = eight*( vx2_SWT + vx2_NWB + vx2_SEB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) + two*( kxyFromfcNEQ_SWT - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB - kxyFromfcNEQ_NET   ) - tbzz;
-      //doubflo tc0  = eight*( vx3_SWT + vx3_NWB + vx3_SEB + vx3_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_NET) + two*( kxzFromfcNEQ_SWT - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tcyy;
+      //real tayz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET + kyzFromfcNEQ_SWT + kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
+      //real tbxz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET + kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB + kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET;
+      //real tcxy =-kxyFromfcNEQ_SWT + kxyFromfcNEQ_NWB + kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET; 
+      //real tax  = four*(-vx1_SWT + vx1_SEB - vx1_NWB + vx1_NET) - tayz;
+      //real tby  = four*(-vx2_SWT - vx2_SEB + vx2_NWB + vx2_NET) - tbxz;
+      //real tcz  = four*( vx3_SWT - vx3_SEB - vx3_NWB + vx3_NET) - tcxy;
+      //real taxy = two*( vx1_SWT - vx1_NWB - vx1_SEB + vx1_NET - vx3_SWT - vx3_NWB + vx3_SEB + vx3_NET) - kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET;
+      //real taxz = two*(-vx1_SWT + vx1_NWB - vx1_SEB + vx1_NET - vx2_SWT - vx2_NWB + vx2_SEB + vx2_NET) + kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NET - kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET;
+      //real tbxy = two*( vx2_SWT - vx2_NWB - vx2_SEB + vx2_NET - vx3_SWT + vx3_NWB - vx3_SEB + vx3_NET) + kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NET - kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
+      //real tay  = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) - taxz;
+      //real taz  = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) - taxy;
+      //real tbz  = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) - tbxy;
+      //real tbx  = two*(kxyFromfcNEQ_SWT + kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB + kxyFromfcNEQ_NET) - tay;
+      //real tcy  = two*(kyzFromfcNEQ_SWT + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NWB + kyzFromfcNEQ_NET) - tbz;
+      //real tcx  = two*(kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB + kxzFromfcNEQ_NET) - taz;
+      //real tbyz = four*(-vx2_SWT + vx2_SEB - vx2_NWB + vx2_NET) - tbx;
+      //real tcyz = four*(-vx3_SWT + vx3_SEB - vx3_NWB + vx3_NET) - tcx;
+      //real tcxz = four*(-vx3_SWT - vx3_SEB + vx3_NWB + vx3_NET) - tcy;
+      //real taxx = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) - tbz;
+      //real tayy = four*(-vx2_SWT + vx2_SEB + vx2_NWB - vx2_NET) + two*(-kxyFromfcNEQ_SWT    - kxyFromfcNEQ_SEB    + kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + tbz;
+      //real tazz = four*( vx3_SWT + vx3_SEB - vx3_NWB - vx3_NET) + two*( kxzFromfcNEQ_SWT    - kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tcy;
+      //real tbxx = four*(-vx1_SWT + vx1_SEB + vx1_NWB - vx1_NET) + two*(-kxyFromfcNEQ_SWT    + kxyFromfcNEQ_SEB    - kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + taz;
+      //real tbyy = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) + two*( kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_NET) - taz;
+      //real tbzz = four*( vx3_SWT - vx3_SEB + vx3_NWB - vx3_NET) + two*( kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    - kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tcx;
+      //real tcxx = four*( vx1_SWT + vx1_SEB - vx1_NWB - vx1_NET) + two*(-kxzFromfcNEQ_SWT    + kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tay;
+      //real tcyy = four*( vx2_SWT - vx2_SEB + vx2_NWB - vx2_NET) + two*(-kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    + kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tbx;
+      //real tczz = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) - tay;
+      //real ta0  = eight*( vx1_SWT + vx1_NWB + vx1_SEB + vx1_NET) + two*( kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) + two*(-kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tayy;
+      //real tb0  = eight*( vx2_SWT + vx2_NWB + vx2_SEB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) + two*( kxyFromfcNEQ_SWT - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB - kxyFromfcNEQ_NET   ) - tbzz;
+      //real tc0  = eight*( vx3_SWT + vx3_NWB + vx3_SEB + vx3_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_NET) + two*( kxzFromfcNEQ_SWT - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tcyy;
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       //a0  +=  ta0   ;
       //ax  +=  tax   ;
@@ -42209,12 +42209,12 @@ extern "C" __global__ void scaleCFLast27( doubflo* DC,
       cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz;
       cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo  x_E,  x_N,  x_T,  x_NE,  x_SE,  x_BE,  x_TE,  x_TN,  x_BN,  x_TNE,  x_TNW,  x_TSE,  x_TSW,  x_ZERO;
-      doubflo  y_E,  y_N,  y_T,  y_NE,  y_SE,  y_BE,  y_TE,  y_TN,  y_BN,  y_TNE,  y_TNW,  y_TSE,  y_TSW,  y_ZERO;
-      doubflo  z_E,  z_N,  z_T,  z_NE,  z_SE,  z_BE,  z_TE,  z_TN,  z_BN,  z_TNE,  z_TNW,  z_TSE,  z_TSW,  z_ZERO;
-      doubflo xy_E, xy_N, xy_T, xy_NE, xy_SE, xy_BE, xy_TE, xy_TN, xy_BN, xy_TNE, xy_TNW, xy_TSE, xy_TSW/*, xy_ZERO*/;
-      doubflo xz_E, xz_N, xz_T, xz_NE, xz_SE, xz_BE, xz_TE, xz_TN, xz_BN, xz_TNE, xz_TNW, xz_TSE, xz_TSW/*, xz_ZERO*/;
-      doubflo yz_E, yz_N, yz_T, yz_NE, yz_SE, yz_BE, yz_TE, yz_TN, yz_BN, yz_TNE, yz_TNW, yz_TSE, yz_TSW/*, yz_ZERO*/;
+      real  x_E,  x_N,  x_T,  x_NE,  x_SE,  x_BE,  x_TE,  x_TN,  x_BN,  x_TNE,  x_TNW,  x_TSE,  x_TSW,  x_ZERO;
+      real  y_E,  y_N,  y_T,  y_NE,  y_SE,  y_BE,  y_TE,  y_TN,  y_BN,  y_TNE,  y_TNW,  y_TSE,  y_TSW,  y_ZERO;
+      real  z_E,  z_N,  z_T,  z_NE,  z_SE,  z_BE,  z_TE,  z_TN,  z_BN,  z_TNE,  z_TNW,  z_TSE,  z_TSW,  z_ZERO;
+      real xy_E, xy_N, xy_T, xy_NE, xy_SE, xy_BE, xy_TE, xy_TN, xy_BN, xy_TNE, xy_TNW, xy_TSE, xy_TSW/*, xy_ZERO*/;
+      real xz_E, xz_N, xz_T, xz_NE, xz_SE, xz_BE, xz_TE, xz_TN, xz_BN, xz_TNE, xz_TNW, xz_TSE, xz_TSW/*, xz_ZERO*/;
+      real yz_E, yz_N, yz_T, yz_NE, yz_SE, yz_BE, yz_TE, yz_TN, yz_BN, yz_TNE, yz_TNW, yz_TSE, yz_TSW/*, yz_ZERO*/;
 
 
       f_E = eps_new*((two*(-two*ax + by + cz))/(twentyseven*o));
@@ -43188,10 +43188,10 @@ extern "C" __global__ void scaleCFLast27( doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCFThSMG7(    doubflo* DC, 
-                                             doubflo* DF,
-                                             doubflo* DD7C, 
-                                             doubflo* DD7F, 
+extern "C" __global__ void scaleCFThSMG7(    real* DC, 
+                                             real* DF,
+                                             real* DD7C, 
+                                             real* DD7F, 
                                              unsigned int* neighborCX,
                                              unsigned int* neighborCY,
                                              unsigned int* neighborCZ,
@@ -43204,11 +43204,11 @@ extern "C" __global__ void scaleCFThSMG7(    doubflo* DC,
                                              unsigned int* posCSWB, 
                                              unsigned int* posFSWB, 
                                              unsigned int kCF, 
-                                             doubflo nu,
-                                             doubflo diffusivity_fine,
+                                             real nu,
+                                             real diffusivity_fine,
                                              OffCF offCF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, /**fzeroF,*/ *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, /**fzeroF,*/ *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
    fwF    = &DF[dirW   *size_MatF];
@@ -43238,7 +43238,7 @@ extern "C" __global__ void scaleCFThSMG7(    doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -43347,39 +43347,39 @@ extern "C" __global__ void scaleCFThSMG7(    doubflo* DC,
 
    ////////////////////////////////////////////////////////////////////////////////
 
-   doubflo        /*drho,*/vx1,vx2,vx3;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS/*,f_ZERO*/,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-    doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, axyz;
+   real        /*drho,*/vx1,vx2,vx3;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS/*,f_ZERO*/,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+    real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, axyz;
 
 
-   doubflo x,y,z;
-   doubflo /*f7_ZERO,*/f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
-   doubflo Mx,My,Mz,Mxx,Myy,Mzz,M0; 
-   doubflo Conc_C_SWB, Conc_C_SWT, Conc_C_SET, Conc_C_SEB, Conc_C_NWB, Conc_C_NWT, Conc_C_NET, Conc_C_NEB;
-   doubflo Conc_F;
-   doubflo Diff_Conc_X_F, Diff_Conc_Y_F, Diff_Conc_Z_F;
+   real x,y,z;
+   real /*f7_ZERO,*/f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
+   real Mx,My,Mz,Mxx,Myy,Mzz,M0; 
+   real Conc_C_SWB, Conc_C_SWT, Conc_C_SET, Conc_C_SEB, Conc_C_NWB, Conc_C_NWT, Conc_C_NET, Conc_C_NEB;
+   real Conc_F;
+   real Diff_Conc_X_F, Diff_Conc_Y_F, Diff_Conc_Z_F;
 
-   //doubflo omegaD_C     = two / (six * diffusivity_fine/two + one);
-   //doubflo omegaD_F     = two / (six * diffusivity_fine + one);
-   doubflo omegaD_C     = three - sqrt(three);     //Quick and Dörrrty
-   doubflo omegaD_F     = three - sqrt(three);     //Quick and Dörrrty
-   doubflo Lam         = -(c1o2-one/omegaD_C);
-   doubflo nue_d       = Lam/three;
-   //doubflo ae          = zero;
-   //doubflo ae_C        = zero;
-   doubflo ae          = diffusivity_fine/nue_d - one;
-   doubflo ae_C        = (diffusivity_fine/two)/nue_d - one;
+   //real omegaD_C     = two / (six * diffusivity_fine/two + one);
+   //real omegaD_F     = two / (six * diffusivity_fine + one);
+   real omegaD_C     = three - sqrt(three);     //Quick and Dörrrty
+   real omegaD_F     = three - sqrt(three);     //Quick and Dörrrty
+   real Lam         = -(c1o2-one/omegaD_C);
+   real nue_d       = Lam/three;
+   //real ae          = zero;
+   //real ae_C        = zero;
+   real ae          = diffusivity_fine/nue_d - one;
+   real ae_C        = (diffusivity_fine/two)/nue_d - one;
 
 
    if(k<kCF)
    {
       //////////////////////////////////////////////////////////////////////////
-      doubflo xoff = offCF.xOffCF[k];
-      doubflo yoff = offCF.yOffCF[k];
-      doubflo zoff = offCF.zOffCF[k];      
-      doubflo xoff_sq = xoff * xoff;
-      doubflo yoff_sq = yoff * yoff;
-      doubflo zoff_sq = zoff * zoff;
+      real xoff = offCF.xOffCF[k];
+      real yoff = offCF.yOffCF[k];
+      real zoff = offCF.zOffCF[k];      
+      real xoff_sq = xoff * xoff;
+      real yoff_sq = yoff * yoff;
+      real zoff_sq = zoff * zoff;
       //////////////////////////////////////////////////////////////////////////
       //SWB//
       //////////////////////////////////////////////////////////////////////////
@@ -43448,9 +43448,9 @@ extern "C" __global__ void scaleCFThSMG7(    doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CSWB = (Conc_C_SWB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CSWB = (Conc_C_SWB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CSWB = (Conc_C_SWB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CSWB = (Conc_C_SWB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CSWB = (Conc_C_SWB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CSWB = (Conc_C_SWB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
 
 
@@ -43513,9 +43513,9 @@ extern "C" __global__ void scaleCFThSMG7(    doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CSWT = (Conc_C_SWT * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CSWT = (Conc_C_SWT * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CSWT = (Conc_C_SWT * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CSWT = (Conc_C_SWT * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CSWT = (Conc_C_SWT * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CSWT = (Conc_C_SWT * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
 
 
@@ -43578,9 +43578,9 @@ extern "C" __global__ void scaleCFThSMG7(    doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CSET = (Conc_C_SET * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CSET = (Conc_C_SET * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CSET = (Conc_C_SET * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CSET = (Conc_C_SET * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CSET = (Conc_C_SET * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CSET = (Conc_C_SET * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
 
 
@@ -43643,9 +43643,9 @@ extern "C" __global__ void scaleCFThSMG7(    doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CSEB = (Conc_C_SEB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CSEB = (Conc_C_SEB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CSEB = (Conc_C_SEB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CSEB = (Conc_C_SEB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CSEB = (Conc_C_SEB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CSEB = (Conc_C_SEB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
 
 
@@ -43718,9 +43718,9 @@ extern "C" __global__ void scaleCFThSMG7(    doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CNWB = (Conc_C_NWB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CNWB = (Conc_C_NWB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CNWB = (Conc_C_NWB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CNWB = (Conc_C_NWB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CNWB = (Conc_C_NWB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CNWB = (Conc_C_NWB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
 
 
@@ -43783,9 +43783,9 @@ extern "C" __global__ void scaleCFThSMG7(    doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CNWT = (Conc_C_NWT * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CNWT = (Conc_C_NWT * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CNWT = (Conc_C_NWT * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CNWT = (Conc_C_NWT * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CNWT = (Conc_C_NWT * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CNWT = (Conc_C_NWT * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
 
 
@@ -43848,9 +43848,9 @@ extern "C" __global__ void scaleCFThSMG7(    doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CNET = (Conc_C_NET * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CNET = (Conc_C_NET * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CNET = (Conc_C_NET * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CNET = (Conc_C_NET * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CNET = (Conc_C_NET * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CNET = (Conc_C_NET * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
 
 
@@ -43913,9 +43913,9 @@ extern "C" __global__ void scaleCFThSMG7(    doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CNEB = (Conc_C_NEB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CNEB = (Conc_C_NEB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CNEB = (Conc_C_NEB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CNEB = (Conc_C_NEB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CNEB = (Conc_C_NEB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CNEB = (Conc_C_NEB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
 
 
@@ -43925,16 +43925,16 @@ extern "C" __global__ void scaleCFThSMG7(    doubflo* DC,
 
 
       //linear
-      //doubflo Diff_Conc_XX = zero;
-      //doubflo Diff_Conc_YY = zero;
-      //doubflo Diff_Conc_ZZ = zero;
+      //real Diff_Conc_XX = zero;
+      //real Diff_Conc_YY = zero;
+      //real Diff_Conc_ZZ = zero;
       
 
 
       //quadratic
-      //doubflo Diff_Conc_XX = ((Diff_Conc_X_CNEB + Diff_Conc_X_CSEB + Diff_Conc_X_CNET + Diff_Conc_X_CSET) - (Diff_Conc_X_CNWB + Diff_Conc_X_CSWB + Diff_Conc_X_CNWT + Diff_Conc_X_CSWT)) * c1o4;
-      //doubflo Diff_Conc_YY = ((Diff_Conc_Y_CNEB + Diff_Conc_Y_CNWB + Diff_Conc_Y_CNET + Diff_Conc_Y_CNWT) - (Diff_Conc_Y_CSEB + Diff_Conc_Y_CSWB + Diff_Conc_Y_CSET + Diff_Conc_Y_CSWT)) * c1o4;
-      //doubflo Diff_Conc_ZZ = ((Diff_Conc_Z_CSET + Diff_Conc_Z_CSWT + Diff_Conc_Z_CNET + Diff_Conc_Z_CNWT) - (Diff_Conc_Z_CSEB + Diff_Conc_Z_CSWB + Diff_Conc_Z_CNEB + Diff_Conc_Z_CNWB)) * c1o4;
+      //real Diff_Conc_XX = ((Diff_Conc_X_CNEB + Diff_Conc_X_CSEB + Diff_Conc_X_CNET + Diff_Conc_X_CSET) - (Diff_Conc_X_CNWB + Diff_Conc_X_CSWB + Diff_Conc_X_CNWT + Diff_Conc_X_CSWT)) * c1o4;
+      //real Diff_Conc_YY = ((Diff_Conc_Y_CNEB + Diff_Conc_Y_CNWB + Diff_Conc_Y_CNET + Diff_Conc_Y_CNWT) - (Diff_Conc_Y_CSEB + Diff_Conc_Y_CSWB + Diff_Conc_Y_CSET + Diff_Conc_Y_CSWT)) * c1o4;
+      //real Diff_Conc_ZZ = ((Diff_Conc_Z_CSET + Diff_Conc_Z_CSWT + Diff_Conc_Z_CNET + Diff_Conc_Z_CNWT) - (Diff_Conc_Z_CSEB + Diff_Conc_Z_CSWB + Diff_Conc_Z_CNEB + Diff_Conc_Z_CNWB)) * c1o4;
 
 
 
@@ -44415,10 +44415,10 @@ extern "C" __global__ void scaleCFThSMG7(    doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCFThS7(   doubflo* DC, 
-                                          doubflo* DF,
-                                          doubflo* DD7C, 
-                                          doubflo* DD7F, 
+extern "C" __global__ void scaleCFThS7(   real* DC, 
+                                          real* DF,
+                                          real* DD7C, 
+                                          real* DD7F, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -44431,10 +44431,10 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
                                           unsigned int* posCSWB, 
                                           unsigned int* posFSWB, 
                                           unsigned int kCF, 
-                                          doubflo nu,
-                                          doubflo diffusivity_fine)
+                                          real nu,
+                                          real diffusivity_fine)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, /**fzeroF,*/ *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, /**fzeroF,*/ *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
    fwF    = &DF[dirW   *size_MatF];
@@ -44464,7 +44464,7 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -44572,27 +44572,27 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo        /*drho,*/vx1,vx2,vx3;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS/*,f_ZERO*/,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   real        /*drho,*/vx1,vx2,vx3;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS/*,f_ZERO*/,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
-   //doubflo x,y,z;
-   doubflo /*f7_ZERO,*/f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
-   doubflo Mx,My,Mz,Mxx,Myy,Mzz,M0; 
-   doubflo Conc_C_SWB, Conc_C_SWT, Conc_C_SET, Conc_C_SEB, Conc_C_NWB, Conc_C_NWT, Conc_C_NET, Conc_C_NEB;
-   doubflo Conc_F_SWB, Conc_F_SWT, Conc_F_SET, Conc_F_SEB, Conc_F_NWB, Conc_F_NWT, Conc_F_NET, Conc_F_NEB;
+   //real x,y,z;
+   real /*f7_ZERO,*/f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
+   real Mx,My,Mz,Mxx,Myy,Mzz,M0; 
+   real Conc_C_SWB, Conc_C_SWT, Conc_C_SET, Conc_C_SEB, Conc_C_NWB, Conc_C_NWT, Conc_C_NET, Conc_C_NEB;
+   real Conc_F_SWB, Conc_F_SWT, Conc_F_SET, Conc_F_SEB, Conc_F_NWB, Conc_F_NWT, Conc_F_NET, Conc_F_NEB;
 
-   //doubflo omegaD_C     = two / (six * diffusivity_fine/two + one);
-   //doubflo omegaD_F     = two / (six * diffusivity_fine + one);
-   doubflo omegaD_C     = three - sqrt(three);     //Quick and Dörrrty
-   doubflo omegaD_F     = three - sqrt(three);     //Quick and Dörrrty
-   doubflo Lam         = -(c1o2-one/omegaD_C);
-   doubflo nue_d       = Lam/three;
-   //doubflo ae          = zero;
-   //doubflo ae_C        = zero;
-   doubflo ae          = diffusivity_fine/nue_d - one;
-   doubflo ae_C        = (diffusivity_fine/two)/nue_d - one;
+   //real omegaD_C     = two / (six * diffusivity_fine/two + one);
+   //real omegaD_F     = two / (six * diffusivity_fine + one);
+   real omegaD_C     = three - sqrt(three);     //Quick and Dörrrty
+   real omegaD_F     = three - sqrt(three);     //Quick and Dörrrty
+   real Lam         = -(c1o2-one/omegaD_C);
+   real nue_d       = Lam/three;
+   //real ae          = zero;
+   //real ae_C        = zero;
+   real ae          = diffusivity_fine/nue_d - one;
+   real ae_C        = (diffusivity_fine/two)/nue_d - one;
 
-   //doubflo ux_sq, uy_sq, uz_sq;
+   //real ux_sq, uy_sq, uz_sq;
 
 
    if(k<kCF)
@@ -44665,9 +44665,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CSWB = (Conc_C_SWB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CSWB = (Conc_C_SWB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CSWB = (Conc_C_SWB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CSWB = (Conc_C_SWB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CSWB = (Conc_C_SWB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CSWB = (Conc_C_SWB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
 
       //////////////////////////////////////////////////////////////////////////
@@ -44728,9 +44728,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CSWT = (Conc_C_SWT * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CSWT = (Conc_C_SWT * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CSWT = (Conc_C_SWT * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CSWT = (Conc_C_SWT * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CSWT = (Conc_C_SWT * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CSWT = (Conc_C_SWT * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
       //////////////////////////////////////////////////////////////////////////
       //SET//
@@ -44790,9 +44790,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CSET = (Conc_C_SET * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CSET = (Conc_C_SET * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CSET = (Conc_C_SET * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CSET = (Conc_C_SET * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CSET = (Conc_C_SET * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CSET = (Conc_C_SET * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
       //////////////////////////////////////////////////////////////////////////
       //SEB//
@@ -44852,9 +44852,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CSEB = (Conc_C_SEB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CSEB = (Conc_C_SEB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CSEB = (Conc_C_SEB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CSEB = (Conc_C_SEB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CSEB = (Conc_C_SEB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CSEB = (Conc_C_SEB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
       //////////////////////////////////////////////////////////////////////////
       //NWB//
@@ -44924,9 +44924,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CNWB = (Conc_C_NWB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CNWB = (Conc_C_NWB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CNWB = (Conc_C_NWB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CNWB = (Conc_C_NWB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CNWB = (Conc_C_NWB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CNWB = (Conc_C_NWB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
       //////////////////////////////////////////////////////////////////////////
       //NWT//
@@ -44986,9 +44986,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CNWT = (Conc_C_NWT * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CNWT = (Conc_C_NWT * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CNWT = (Conc_C_NWT * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CNWT = (Conc_C_NWT * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CNWT = (Conc_C_NWT * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CNWT = (Conc_C_NWT * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
       //////////////////////////////////////////////////////////////////////////
       //NET//
@@ -45048,9 +45048,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CNET = (Conc_C_NET * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CNET = (Conc_C_NET * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CNET = (Conc_C_NET * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CNET = (Conc_C_NET * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CNET = (Conc_C_NET * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CNET = (Conc_C_NET * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
       //////////////////////////////////////////////////////////////////////////
       //NEB//
@@ -45110,21 +45110,21 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
       My   =f7_N-f7_S;
       Mz   =f7_T-f7_B;
 
-      doubflo Diff_Conc_X_CNEB = (Conc_C_NEB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Y_CNEB = (Conc_C_NEB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
-      doubflo Diff_Conc_Z_CNEB = (Conc_C_NEB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_X_CNEB = (Conc_C_NEB * vx1 - Mx) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Y_CNEB = (Conc_C_NEB * vx2 - My) * (three*omegaD_C) / (one + ae_C);
+      real Diff_Conc_Z_CNEB = (Conc_C_NEB * vx3 - Mz) * (three*omegaD_C) / (one + ae_C);
 
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
       //linear
-      //doubflo Diff_Conc_XX = zero;
-      //doubflo Diff_Conc_YY = zero;
-      //doubflo Diff_Conc_ZZ = zero;
+      //real Diff_Conc_XX = zero;
+      //real Diff_Conc_YY = zero;
+      //real Diff_Conc_ZZ = zero;
       
       //quadratic
-      doubflo Diff_Conc_XX = ((Diff_Conc_X_CNEB + Diff_Conc_X_CSEB + Diff_Conc_X_CNET + Diff_Conc_X_CSET) - (Diff_Conc_X_CNWB + Diff_Conc_X_CSWB + Diff_Conc_X_CNWT + Diff_Conc_X_CSWT)) * 0.25f;
-      doubflo Diff_Conc_YY = ((Diff_Conc_Y_CNEB + Diff_Conc_Y_CNWB + Diff_Conc_Y_CNET + Diff_Conc_Y_CNWT) - (Diff_Conc_Y_CSEB + Diff_Conc_Y_CSWB + Diff_Conc_Y_CSET + Diff_Conc_Y_CSWT)) * 0.25f;
-      doubflo Diff_Conc_ZZ = ((Diff_Conc_Z_CSET + Diff_Conc_Z_CSWT + Diff_Conc_Z_CNET + Diff_Conc_Z_CNWT) - (Diff_Conc_Z_CSEB + Diff_Conc_Z_CSWB + Diff_Conc_Z_CNEB + Diff_Conc_Z_CNWB)) * 0.25f;
+      real Diff_Conc_XX = ((Diff_Conc_X_CNEB + Diff_Conc_X_CSEB + Diff_Conc_X_CNET + Diff_Conc_X_CSET) - (Diff_Conc_X_CNWB + Diff_Conc_X_CSWB + Diff_Conc_X_CNWT + Diff_Conc_X_CSWT)) * 0.25f;
+      real Diff_Conc_YY = ((Diff_Conc_Y_CNEB + Diff_Conc_Y_CNWB + Diff_Conc_Y_CNET + Diff_Conc_Y_CNWT) - (Diff_Conc_Y_CSEB + Diff_Conc_Y_CSWB + Diff_Conc_Y_CSET + Diff_Conc_Y_CSWT)) * 0.25f;
+      real Diff_Conc_ZZ = ((Diff_Conc_Z_CSET + Diff_Conc_Z_CSWT + Diff_Conc_Z_CNET + Diff_Conc_Z_CNWT) - (Diff_Conc_Z_CSEB + Diff_Conc_Z_CSWB + Diff_Conc_Z_CNEB + Diff_Conc_Z_CNWB)) * 0.25f;
 
 
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -45161,9 +45161,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
 
       Conc_F_SWB = c27o64 * Conc_C_SWB + c9o64 * (Conc_C_SWT+Conc_C_SEB+Conc_C_NWB) + c3o64 * (Conc_C_SET+Conc_C_NWT+Conc_C_NEB) + c1o64 * Conc_C_NET - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      doubflo Diff_Conc_X_FSWB = c1o16 * (nine * Conc_C_SEB - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NWT) - c1o4 * Diff_Conc_XX;
-      doubflo Diff_Conc_Y_FSWB = c1o16 * (nine * Conc_C_NWB - nine * Conc_C_SWB + three * Conc_C_NWT - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_SEB + one * Conc_C_NET - one * Conc_C_SET) - c1o4 * Diff_Conc_YY;
-      doubflo Diff_Conc_Z_FSWB = c1o16 * (nine * Conc_C_SWT - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NEB) - c1o4 * Diff_Conc_ZZ;
+      real Diff_Conc_X_FSWB = c1o16 * (nine * Conc_C_SEB - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NWT) - c1o4 * Diff_Conc_XX;
+      real Diff_Conc_Y_FSWB = c1o16 * (nine * Conc_C_NWB - nine * Conc_C_SWB + three * Conc_C_NWT - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_SEB + one * Conc_C_NET - one * Conc_C_SET) - c1o4 * Diff_Conc_YY;
+      real Diff_Conc_Z_FSWB = c1o16 * (nine * Conc_C_SWT - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NEB) - c1o4 * Diff_Conc_ZZ;
 
       Mx = Conc_F_SWB*vx1-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_X_FSWB;
       My = Conc_F_SWB*vx2-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_Y_FSWB;
@@ -45204,9 +45204,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
 
       Conc_F_SWT = c27o64 * Conc_C_SWT + c9o64 * (Conc_C_SWB+Conc_C_SET+Conc_C_NWT) + c3o64 * (Conc_C_SEB+Conc_C_NWB+Conc_C_NET) + c1o64 * Conc_C_NEB - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      doubflo Diff_Conc_X_FSWT = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SWT + three * Conc_C_SEB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NWT + one * Conc_C_NEB - one * Conc_C_NWB) - c1o4 * Diff_Conc_XX;
-      doubflo Diff_Conc_Y_FSWT = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_SWT + three * Conc_C_NWB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_SET + one * Conc_C_NEB - one * Conc_C_SEB) - c1o4 * Diff_Conc_YY;
-      doubflo Diff_Conc_Z_FSWT = c1o16 * (nine * Conc_C_SWT - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NEB) + c1o4 * Diff_Conc_ZZ;
+      real Diff_Conc_X_FSWT = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SWT + three * Conc_C_SEB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NWT + one * Conc_C_NEB - one * Conc_C_NWB) - c1o4 * Diff_Conc_XX;
+      real Diff_Conc_Y_FSWT = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_SWT + three * Conc_C_NWB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_SET + one * Conc_C_NEB - one * Conc_C_SEB) - c1o4 * Diff_Conc_YY;
+      real Diff_Conc_Z_FSWT = c1o16 * (nine * Conc_C_SWT - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NEB) + c1o4 * Diff_Conc_ZZ;
 
       Mx = Conc_F_SWT*vx1-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_X_FSWT;
       My = Conc_F_SWT*vx2-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_Y_FSWT;
@@ -45248,9 +45248,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
 
 	  Conc_F_SET = c27o64 * Conc_C_SET + c9o64 * (Conc_C_SEB+Conc_C_SWT+Conc_C_NET) + c3o64 * (Conc_C_SWB+Conc_C_NEB+Conc_C_NWT) + c1o64 * Conc_C_NWB - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-	  doubflo Diff_Conc_X_FSET = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SWT + three * Conc_C_SEB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NWT + one * Conc_C_NEB - one * Conc_C_NWB) + c1o4 * Diff_Conc_XX;
-	  doubflo Diff_Conc_Y_FSET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_SET + three * Conc_C_NEB - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_SWT + one * Conc_C_NWB - one * Conc_C_SWB) - c1o4 * Diff_Conc_YY;
-	  doubflo Diff_Conc_Z_FSET = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SEB + three * Conc_C_SWT - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NEB + one * Conc_C_NWT - one * Conc_C_NWB) + c1o4 * Diff_Conc_ZZ;
+	  real Diff_Conc_X_FSET = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SWT + three * Conc_C_SEB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NWT + one * Conc_C_NEB - one * Conc_C_NWB) + c1o4 * Diff_Conc_XX;
+	  real Diff_Conc_Y_FSET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_SET + three * Conc_C_NEB - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_SWT + one * Conc_C_NWB - one * Conc_C_SWB) - c1o4 * Diff_Conc_YY;
+	  real Diff_Conc_Z_FSET = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SEB + three * Conc_C_SWT - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NEB + one * Conc_C_NWT - one * Conc_C_NWB) + c1o4 * Diff_Conc_ZZ;
 
 	  Mx = Conc_F_SET*vx1-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_X_FSET;
 	  My = Conc_F_SET*vx2-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_Y_FSET;
@@ -45292,9 +45292,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
 
       Conc_F_SEB = c27o64 * Conc_C_SEB + c9o64 * (Conc_C_SET+Conc_C_SWB+Conc_C_NEB) + c3o64 * (Conc_C_SWT+Conc_C_NET+Conc_C_NWB) + c1o64 * Conc_C_NWT - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      doubflo Diff_Conc_X_FSEB = c1o16 * (nine * Conc_C_SEB - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NWT) + c1o4 * Diff_Conc_XX;
-      doubflo Diff_Conc_Y_FSEB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_SEB + three * Conc_C_NET - three * Conc_C_SET + three * Conc_C_NWB - three * Conc_C_SWB + one * Conc_C_NWT - one * Conc_C_SWT) - c1o4 * Diff_Conc_YY;
-      doubflo Diff_Conc_Z_FSEB = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SEB + three * Conc_C_SWT - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NEB + one * Conc_C_NWT - one * Conc_C_NWB) - c1o4 * Diff_Conc_ZZ;
+      real Diff_Conc_X_FSEB = c1o16 * (nine * Conc_C_SEB - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NWT) + c1o4 * Diff_Conc_XX;
+      real Diff_Conc_Y_FSEB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_SEB + three * Conc_C_NET - three * Conc_C_SET + three * Conc_C_NWB - three * Conc_C_SWB + one * Conc_C_NWT - one * Conc_C_SWT) - c1o4 * Diff_Conc_YY;
+      real Diff_Conc_Z_FSEB = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SEB + three * Conc_C_SWT - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NEB + one * Conc_C_NWT - one * Conc_C_NWB) - c1o4 * Diff_Conc_ZZ;
 
       Mx = Conc_F_SEB*vx1-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_X_FSEB;
       My = Conc_F_SEB*vx2-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_Y_FSEB;
@@ -45345,9 +45345,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
 
       Conc_F_NWB = c27o64 * Conc_C_NWB + c9o64 * (Conc_C_NWT+Conc_C_NEB+Conc_C_SWB) + c3o64 * (Conc_C_NET+Conc_C_SWT+Conc_C_SEB) + c1o64 * Conc_C_SET - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      doubflo Diff_Conc_X_FNWB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NWT + three * Conc_C_SEB - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SWT) - c1o4 * Diff_Conc_XX;
-      doubflo Diff_Conc_Y_FNWB = c1o16 * (nine * Conc_C_NWB - nine * Conc_C_SWB + three * Conc_C_NWT - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_SEB + one * Conc_C_NET - one * Conc_C_SET) + c1o4 * Diff_Conc_YY;
-      doubflo Diff_Conc_Z_FNWB = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NEB + three * Conc_C_SWT - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SEB) - c1o4 * Diff_Conc_ZZ;
+      real Diff_Conc_X_FNWB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NWT + three * Conc_C_SEB - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SWT) - c1o4 * Diff_Conc_XX;
+      real Diff_Conc_Y_FNWB = c1o16 * (nine * Conc_C_NWB - nine * Conc_C_SWB + three * Conc_C_NWT - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_SEB + one * Conc_C_NET - one * Conc_C_SET) + c1o4 * Diff_Conc_YY;
+      real Diff_Conc_Z_FNWB = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NEB + three * Conc_C_SWT - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SEB) - c1o4 * Diff_Conc_ZZ;
 
       Mx = Conc_F_NWB*vx1-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_X_FNWB;
       My = Conc_F_NWB*vx2-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_Y_FNWB;
@@ -45389,9 +45389,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
 
       Conc_F_NWT = c27o64 * Conc_C_NWT + c9o64 * (Conc_C_NWB+Conc_C_NET+Conc_C_SWT) + c3o64 * (Conc_C_NEB+Conc_C_SWB+Conc_C_SET) + c1o64 * Conc_C_SEB - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      doubflo Diff_Conc_X_FNWT = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NWT + three * Conc_C_NEB - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SWT + one * Conc_C_SEB - one * Conc_C_SWB) - c1o4 * Diff_Conc_XX;
-      doubflo Diff_Conc_Y_FNWT = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_SWT + three * Conc_C_NWB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_SET + one * Conc_C_NEB - one * Conc_C_SEB) + c1o4 * Diff_Conc_YY;
-      doubflo Diff_Conc_Z_FNWT = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NEB + three * Conc_C_SWT - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SEB) + c1o4 * Diff_Conc_ZZ;
+      real Diff_Conc_X_FNWT = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NWT + three * Conc_C_NEB - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SWT + one * Conc_C_SEB - one * Conc_C_SWB) - c1o4 * Diff_Conc_XX;
+      real Diff_Conc_Y_FNWT = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_SWT + three * Conc_C_NWB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_SET + one * Conc_C_NEB - one * Conc_C_SEB) + c1o4 * Diff_Conc_YY;
+      real Diff_Conc_Z_FNWT = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NEB + three * Conc_C_SWT - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SEB) + c1o4 * Diff_Conc_ZZ;
 
       Mx = Conc_F_NWT*vx1-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_X_FNWT;
       My = Conc_F_NWT*vx2-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_Y_FNWT;
@@ -45433,9 +45433,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
 
       Conc_F_NET = c27o64 * Conc_C_NET + c9o64 * (Conc_C_NEB+Conc_C_NWT+Conc_C_SET) + c3o64 * (Conc_C_NWB+Conc_C_SEB+Conc_C_SWT) + c1o64 * Conc_C_SWB - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      doubflo Diff_Conc_X_FNET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NWT + three * Conc_C_NEB - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SWT + one * Conc_C_SEB - one * Conc_C_SWB) + c1o4 * Diff_Conc_XX;
-      doubflo Diff_Conc_Y_FNET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_SET + three * Conc_C_NEB - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_SWT + one * Conc_C_NWB - one * Conc_C_SWB) + c1o4 * Diff_Conc_YY;
-      doubflo Diff_Conc_Z_FNET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NEB + three * Conc_C_NWT - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SEB + one * Conc_C_SWT - one * Conc_C_SWB) + c1o4 * Diff_Conc_ZZ;
+      real Diff_Conc_X_FNET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NWT + three * Conc_C_NEB - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SWT + one * Conc_C_SEB - one * Conc_C_SWB) + c1o4 * Diff_Conc_XX;
+      real Diff_Conc_Y_FNET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_SET + three * Conc_C_NEB - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_SWT + one * Conc_C_NWB - one * Conc_C_SWB) + c1o4 * Diff_Conc_YY;
+      real Diff_Conc_Z_FNET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NEB + three * Conc_C_NWT - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SEB + one * Conc_C_SWT - one * Conc_C_SWB) + c1o4 * Diff_Conc_ZZ;
 
       Mx = Conc_F_NET*vx1-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_X_FNET;
       My = Conc_F_NET*vx2-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_Y_FNET;
@@ -45477,9 +45477,9 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
 
       Conc_F_NEB = c27o64 * Conc_C_NEB + c9o64 * (Conc_C_NET+Conc_C_NWB+Conc_C_SEB) + c3o64 * (Conc_C_NWT+Conc_C_SET+Conc_C_SWB) + c1o64 * Conc_C_SWT - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      doubflo Diff_Conc_X_FNEB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NWT + three * Conc_C_SEB - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SWT) + c1o4 * Diff_Conc_XX;
-      doubflo Diff_Conc_Y_FNEB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_SEB + three * Conc_C_NET - three * Conc_C_SET + three * Conc_C_NWB - three * Conc_C_SWB + one * Conc_C_NWT - one * Conc_C_SWT) + c1o4 * Diff_Conc_YY;
-      doubflo Diff_Conc_Z_FNEB = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NEB + three * Conc_C_NWT - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SEB + one * Conc_C_SWT - one * Conc_C_SWB) - c1o4 * Diff_Conc_ZZ;
+      real Diff_Conc_X_FNEB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NWT + three * Conc_C_SEB - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SWT) + c1o4 * Diff_Conc_XX;
+      real Diff_Conc_Y_FNEB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_SEB + three * Conc_C_NET - three * Conc_C_SET + three * Conc_C_NWB - three * Conc_C_SWB + one * Conc_C_NWT - one * Conc_C_SWT) + c1o4 * Diff_Conc_YY;
+      real Diff_Conc_Z_FNEB = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NEB + three * Conc_C_NWT - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SEB + one * Conc_C_SWT - one * Conc_C_SWB) - c1o4 * Diff_Conc_ZZ;
 
       Mx = Conc_F_NEB*vx1-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_X_FNEB;
       My = Conc_F_NEB*vx2-(one+ae)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_Y_FNEB;
@@ -45538,10 +45538,10 @@ extern "C" __global__ void scaleCFThS7(   doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCFThS27(     doubflo* DC, 
-                                             doubflo* DF,
-                                             doubflo* DD27C, 
-                                             doubflo* DD27F, 
+extern "C" __global__ void scaleCFThS27(     real* DC, 
+                                             real* DF,
+                                             real* DD27C, 
+                                             real* DD27F, 
                                              unsigned int* neighborCX,
                                              unsigned int* neighborCY,
                                              unsigned int* neighborCZ,
@@ -45554,11 +45554,11 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
                                              unsigned int* posCSWB, 
                                              unsigned int* posFSWB, 
                                              unsigned int kCF, 
-                                             doubflo nu,
-                                             doubflo diffusivity_fine,
+                                             real nu,
+                                             real diffusivity_fine,
 											 OffCF offCF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, /**fzeroF,*/ *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, /**fzeroF,*/ *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
    fwF    = &DF[dirW   *size_MatF];
@@ -45588,7 +45588,7 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -45756,30 +45756,30 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo        /*drho,*/vx1,vx2,vx3, cu_sq;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS/*,f_ZERO*/,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-
-   //doubflo x,y,z;
-   doubflo f27E,f27W,f27N,f27S,f27T,f27B,f27NE,f27SW,f27SE,f27NW,f27TE,f27BW,f27BE,f27TW,f27TN,f27BS,f27BN,f27TS,f27ZERO,f27TNE,f27TSW,f27TSE,f27TNW,f27BNE,f27BSW,f27BSE,f27BNW;
-   doubflo Mx,My,Mz/*,Mxx,Myy,Mzz,M0*/; 
-   doubflo Conc_C_SWB, Conc_C_SWT, Conc_C_SET, Conc_C_SEB, Conc_C_NWB, Conc_C_NWT, Conc_C_NET, Conc_C_NEB;
-   doubflo Conc_F_SWB, Conc_F_SWT, Conc_F_SET, Conc_F_SEB, Conc_F_NWB, Conc_F_NWT, Conc_F_NET, Conc_F_NEB;
-
-   doubflo omegaD_C     = two / (six * diffusivity_fine/two + one);
-   doubflo omegaD_F     = two / (six * diffusivity_fine + one);
-   //doubflo omegaD     = -three + sqrt(three);
-   //doubflo Lam         = -(c1o2+one/omegaD);
-   //doubflo nue_d       = Lam/three;
-   //doubflo ae          = zero;
-   //doubflo ae_C        = zero;
-   //doubflo ae          = diffusivity_fine/nue_d - one;
-   //doubflo ae_C        = (diffusivity_fine/two)/nue_d - one;
-
-   //doubflo ux_sq, uy_sq, uz_sq;
-
-   doubflo x,       y,       z;
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
+   real        /*drho,*/vx1,vx2,vx3, cu_sq;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS/*,f_ZERO*/,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+
+   //real x,y,z;
+   real f27E,f27W,f27N,f27S,f27T,f27B,f27NE,f27SW,f27SE,f27NW,f27TE,f27BW,f27BE,f27TW,f27TN,f27BS,f27BN,f27TS,f27ZERO,f27TNE,f27TSW,f27TSE,f27TNW,f27BNE,f27BSW,f27BSE,f27BNW;
+   real Mx,My,Mz/*,Mxx,Myy,Mzz,M0*/; 
+   real Conc_C_SWB, Conc_C_SWT, Conc_C_SET, Conc_C_SEB, Conc_C_NWB, Conc_C_NWT, Conc_C_NET, Conc_C_NEB;
+   real Conc_F_SWB, Conc_F_SWT, Conc_F_SET, Conc_F_SEB, Conc_F_NWB, Conc_F_NWT, Conc_F_NET, Conc_F_NEB;
+
+   real omegaD_C     = two / (six * diffusivity_fine/two + one);
+   real omegaD_F     = two / (six * diffusivity_fine + one);
+   //real omegaD     = -three + sqrt(three);
+   //real Lam         = -(c1o2+one/omegaD);
+   //real nue_d       = Lam/three;
+   //real ae          = zero;
+   //real ae_C        = zero;
+   //real ae          = diffusivity_fine/nue_d - one;
+   //real ae_C        = (diffusivity_fine/two)/nue_d - one;
+
+   //real ux_sq, uy_sq, uz_sq;
+
+   real x,       y,       z;
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
 
    if(k<kCF)
    {
@@ -45880,9 +45880,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_CSWB = (Conc_C_SWB * vx1 - Mx) * (three*omegaD_C);
-      doubflo Diff_Conc_Y_CSWB = (Conc_C_SWB * vx2 - My) * (three*omegaD_C);
-      doubflo Diff_Conc_Z_CSWB = (Conc_C_SWB * vx3 - Mz) * (three*omegaD_C);
+      real Diff_Conc_X_CSWB = (Conc_C_SWB * vx1 - Mx) * (three*omegaD_C);
+      real Diff_Conc_Y_CSWB = (Conc_C_SWB * vx2 - My) * (three*omegaD_C);
+      real Diff_Conc_Z_CSWB = (Conc_C_SWB * vx3 - Mz) * (three*omegaD_C);
 
 
 
@@ -45967,9 +45967,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_CSWT = (Conc_C_SWT * vx1 - Mx) * (three*omegaD_C);
-      doubflo Diff_Conc_Y_CSWT = (Conc_C_SWT * vx2 - My) * (three*omegaD_C);
-      doubflo Diff_Conc_Z_CSWT = (Conc_C_SWT * vx3 - Mz) * (three*omegaD_C);
+      real Diff_Conc_X_CSWT = (Conc_C_SWT * vx1 - Mx) * (three*omegaD_C);
+      real Diff_Conc_Y_CSWT = (Conc_C_SWT * vx2 - My) * (three*omegaD_C);
+      real Diff_Conc_Z_CSWT = (Conc_C_SWT * vx3 - Mz) * (three*omegaD_C);
 
 
 
@@ -46054,9 +46054,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_CSET = (Conc_C_SET * vx1 - Mx) * (three*omegaD_C);
-      doubflo Diff_Conc_Y_CSET = (Conc_C_SET * vx2 - My) * (three*omegaD_C);
-      doubflo Diff_Conc_Z_CSET = (Conc_C_SET * vx3 - Mz) * (three*omegaD_C);
+      real Diff_Conc_X_CSET = (Conc_C_SET * vx1 - Mx) * (three*omegaD_C);
+      real Diff_Conc_Y_CSET = (Conc_C_SET * vx2 - My) * (three*omegaD_C);
+      real Diff_Conc_Z_CSET = (Conc_C_SET * vx3 - Mz) * (three*omegaD_C);
 
 
 
@@ -46141,9 +46141,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_CSEB = (Conc_C_SEB * vx1 - Mx) * (three*omegaD_C);
-      doubflo Diff_Conc_Y_CSEB = (Conc_C_SEB * vx2 - My) * (three*omegaD_C);
-      doubflo Diff_Conc_Z_CSEB = (Conc_C_SEB * vx3 - Mz) * (three*omegaD_C);
+      real Diff_Conc_X_CSEB = (Conc_C_SEB * vx1 - Mx) * (three*omegaD_C);
+      real Diff_Conc_Y_CSEB = (Conc_C_SEB * vx2 - My) * (three*omegaD_C);
+      real Diff_Conc_Z_CSEB = (Conc_C_SEB * vx3 - Mz) * (three*omegaD_C);
 
 
 
@@ -46238,9 +46238,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_CNWB = (Conc_C_NWB * vx1 - Mx) * (three*omegaD_C);
-      doubflo Diff_Conc_Y_CNWB = (Conc_C_NWB * vx2 - My) * (three*omegaD_C);
-      doubflo Diff_Conc_Z_CNWB = (Conc_C_NWB * vx3 - Mz) * (three*omegaD_C);
+      real Diff_Conc_X_CNWB = (Conc_C_NWB * vx1 - Mx) * (three*omegaD_C);
+      real Diff_Conc_Y_CNWB = (Conc_C_NWB * vx2 - My) * (three*omegaD_C);
+      real Diff_Conc_Z_CNWB = (Conc_C_NWB * vx3 - Mz) * (three*omegaD_C);
 
 
 
@@ -46325,9 +46325,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_CNWT = (Conc_C_NWT * vx1 - Mx) * (three*omegaD_C);
-      doubflo Diff_Conc_Y_CNWT = (Conc_C_NWT * vx2 - My) * (three*omegaD_C);
-      doubflo Diff_Conc_Z_CNWT = (Conc_C_NWT * vx3 - Mz) * (three*omegaD_C);
+      real Diff_Conc_X_CNWT = (Conc_C_NWT * vx1 - Mx) * (three*omegaD_C);
+      real Diff_Conc_Y_CNWT = (Conc_C_NWT * vx2 - My) * (three*omegaD_C);
+      real Diff_Conc_Z_CNWT = (Conc_C_NWT * vx3 - Mz) * (three*omegaD_C);
 
 
 
@@ -46412,9 +46412,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_CNET = (Conc_C_NET * vx1 - Mx) * (three*omegaD_C);
-      doubflo Diff_Conc_Y_CNET = (Conc_C_NET * vx2 - My) * (three*omegaD_C);
-      doubflo Diff_Conc_Z_CNET = (Conc_C_NET * vx3 - Mz) * (three*omegaD_C);
+      real Diff_Conc_X_CNET = (Conc_C_NET * vx1 - Mx) * (three*omegaD_C);
+      real Diff_Conc_Y_CNET = (Conc_C_NET * vx2 - My) * (three*omegaD_C);
+      real Diff_Conc_Z_CNET = (Conc_C_NET * vx3 - Mz) * (three*omegaD_C);
 
 
 
@@ -46499,38 +46499,38 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_CNEB = (Conc_C_NEB * vx1 - Mx) * (three*omegaD_C);
-      doubflo Diff_Conc_Y_CNEB = (Conc_C_NEB * vx2 - My) * (three*omegaD_C);
-      doubflo Diff_Conc_Z_CNEB = (Conc_C_NEB * vx3 - Mz) * (three*omegaD_C);
+      real Diff_Conc_X_CNEB = (Conc_C_NEB * vx1 - Mx) * (three*omegaD_C);
+      real Diff_Conc_Y_CNEB = (Conc_C_NEB * vx2 - My) * (three*omegaD_C);
+      real Diff_Conc_Z_CNEB = (Conc_C_NEB * vx3 - Mz) * (three*omegaD_C);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
 
 
       //linear
-      //doubflo Diff_Conc_XX = zero;
-      //doubflo Diff_Conc_YY = zero;
-      //doubflo Diff_Conc_ZZ = zero;
+      //real Diff_Conc_XX = zero;
+      //real Diff_Conc_YY = zero;
+      //real Diff_Conc_ZZ = zero;
       
 
 
 
       //quadratic
-      doubflo Diff_Conc_XX = ((Diff_Conc_X_CNEB + Diff_Conc_X_CSEB + Diff_Conc_X_CNET + Diff_Conc_X_CSET) - (Diff_Conc_X_CNWB + Diff_Conc_X_CSWB + Diff_Conc_X_CNWT + Diff_Conc_X_CSWT)) * c1o4;
-      doubflo Diff_Conc_YY = ((Diff_Conc_Y_CNEB + Diff_Conc_Y_CNWB + Diff_Conc_Y_CNET + Diff_Conc_Y_CNWT) - (Diff_Conc_Y_CSEB + Diff_Conc_Y_CSWB + Diff_Conc_Y_CSET + Diff_Conc_Y_CSWT)) * c1o4;
-      doubflo Diff_Conc_ZZ = ((Diff_Conc_Z_CSET + Diff_Conc_Z_CSWT + Diff_Conc_Z_CNET + Diff_Conc_Z_CNWT) - (Diff_Conc_Z_CSEB + Diff_Conc_Z_CSWB + Diff_Conc_Z_CNEB + Diff_Conc_Z_CNWB)) * c1o4;
-
-	  doubflo dx = c1o4 * (Conc_C_NEB + Conc_C_NET - Conc_C_NWB - Conc_C_NWT + Conc_C_SEB + Conc_C_SET - Conc_C_SWB - Conc_C_SWT);
-	  doubflo dy = c1o4 * (Conc_C_NEB + Conc_C_NET + Conc_C_NWB + Conc_C_NWT - Conc_C_SEB - Conc_C_SET - Conc_C_SWB - Conc_C_SWT);
-	  doubflo dz = c1o4 * (-Conc_C_NEB + Conc_C_NET - Conc_C_NWB + Conc_C_NWT - Conc_C_SEB + Conc_C_SET - Conc_C_SWB + Conc_C_SWT);
-	  doubflo dxx = Diff_Conc_XX * c1o2;
-	  doubflo dyy = Diff_Conc_YY * c1o2;
-	  doubflo dzz = Diff_Conc_ZZ * c1o2;
-	  doubflo dxy = c1o2 * (Conc_C_NEB + Conc_C_NET - Conc_C_NWB - Conc_C_NWT - Conc_C_SEB - Conc_C_SET + Conc_C_SWB + Conc_C_SWT);
-	  doubflo dyz = c1o2 * (-Conc_C_NEB + Conc_C_NET - Conc_C_NWB + Conc_C_NWT + Conc_C_SEB - Conc_C_SET + Conc_C_SWB - Conc_C_SWT);
-	  doubflo dxz = c1o2 * (-Conc_C_NEB + Conc_C_NET + Conc_C_NWB - Conc_C_NWT - Conc_C_SEB + Conc_C_SET + Conc_C_SWB - Conc_C_SWT);
-	  doubflo dxyz = -Conc_C_NEB + Conc_C_NET + Conc_C_NWB - Conc_C_NWT + Conc_C_SEB - Conc_C_SET - Conc_C_SWB + Conc_C_SWT;
-	  doubflo d0 = c1o8 * (-two * dxx - two * dyy - two * dzz + Conc_C_NEB + Conc_C_NET + Conc_C_NWB + Conc_C_NWT + Conc_C_SEB + Conc_C_SET + Conc_C_SWB + Conc_C_SWT);
+      real Diff_Conc_XX = ((Diff_Conc_X_CNEB + Diff_Conc_X_CSEB + Diff_Conc_X_CNET + Diff_Conc_X_CSET) - (Diff_Conc_X_CNWB + Diff_Conc_X_CSWB + Diff_Conc_X_CNWT + Diff_Conc_X_CSWT)) * c1o4;
+      real Diff_Conc_YY = ((Diff_Conc_Y_CNEB + Diff_Conc_Y_CNWB + Diff_Conc_Y_CNET + Diff_Conc_Y_CNWT) - (Diff_Conc_Y_CSEB + Diff_Conc_Y_CSWB + Diff_Conc_Y_CSET + Diff_Conc_Y_CSWT)) * c1o4;
+      real Diff_Conc_ZZ = ((Diff_Conc_Z_CSET + Diff_Conc_Z_CSWT + Diff_Conc_Z_CNET + Diff_Conc_Z_CNWT) - (Diff_Conc_Z_CSEB + Diff_Conc_Z_CSWB + Diff_Conc_Z_CNEB + Diff_Conc_Z_CNWB)) * c1o4;
+
+	  real dx = c1o4 * (Conc_C_NEB + Conc_C_NET - Conc_C_NWB - Conc_C_NWT + Conc_C_SEB + Conc_C_SET - Conc_C_SWB - Conc_C_SWT);
+	  real dy = c1o4 * (Conc_C_NEB + Conc_C_NET + Conc_C_NWB + Conc_C_NWT - Conc_C_SEB - Conc_C_SET - Conc_C_SWB - Conc_C_SWT);
+	  real dz = c1o4 * (-Conc_C_NEB + Conc_C_NET - Conc_C_NWB + Conc_C_NWT - Conc_C_SEB + Conc_C_SET - Conc_C_SWB + Conc_C_SWT);
+	  real dxx = Diff_Conc_XX * c1o2;
+	  real dyy = Diff_Conc_YY * c1o2;
+	  real dzz = Diff_Conc_ZZ * c1o2;
+	  real dxy = c1o2 * (Conc_C_NEB + Conc_C_NET - Conc_C_NWB - Conc_C_NWT - Conc_C_SEB - Conc_C_SET + Conc_C_SWB + Conc_C_SWT);
+	  real dyz = c1o2 * (-Conc_C_NEB + Conc_C_NET - Conc_C_NWB + Conc_C_NWT + Conc_C_SEB - Conc_C_SET + Conc_C_SWB - Conc_C_SWT);
+	  real dxz = c1o2 * (-Conc_C_NEB + Conc_C_NET + Conc_C_NWB - Conc_C_NWT - Conc_C_SEB + Conc_C_SET + Conc_C_SWB - Conc_C_SWT);
+	  real dxyz = -Conc_C_NEB + Conc_C_NET + Conc_C_NWB - Conc_C_NWT + Conc_C_SEB - Conc_C_SET - Conc_C_SWB + Conc_C_SWT;
+	  real d0 = c1o8 * (-two * dxx - two * dyy - two * dzz + Conc_C_NEB + Conc_C_NET + Conc_C_NWB + Conc_C_NWT + Conc_C_SEB + Conc_C_SET + Conc_C_SWB + Conc_C_SWT);
 
      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       //
@@ -46584,15 +46584,15 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
 
       //Conc_F_SWB = c27o64 * Conc_C_SWB + c9o64 * (Conc_C_SWT+Conc_C_SEB+Conc_C_NWB) + c3o64 * (Conc_C_SET+Conc_C_NWT+Conc_C_NEB) + c1o64 * Conc_C_NET - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      //doubflo Diff_Conc_X_FSWB = c1o16 * (nine * Conc_C_SEB - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NWT) - c1o4 * Diff_Conc_XX;
-      //doubflo Diff_Conc_Y_FSWB = c1o16 * (nine * Conc_C_NWB - nine * Conc_C_SWB + three * Conc_C_NWT - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_SEB + one * Conc_C_NET - one * Conc_C_SET) - c1o4 * Diff_Conc_YY;
-      //doubflo Diff_Conc_Z_FSWB = c1o16 * (nine * Conc_C_SWT - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NEB) - c1o4 * Diff_Conc_ZZ;
+      //real Diff_Conc_X_FSWB = c1o16 * (nine * Conc_C_SEB - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NWT) - c1o4 * Diff_Conc_XX;
+      //real Diff_Conc_Y_FSWB = c1o16 * (nine * Conc_C_NWB - nine * Conc_C_SWB + three * Conc_C_NWT - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_SEB + one * Conc_C_NET - one * Conc_C_SET) - c1o4 * Diff_Conc_YY;
+      //real Diff_Conc_Z_FSWB = c1o16 * (nine * Conc_C_SWT - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NEB) - c1o4 * Diff_Conc_ZZ;
 
-      doubflo Conc_F = d0 + dx*x + dy*y + dz*z + dxx*x*x + dyy*y*y + dzz*z*z + dxy*x*y +  dxz*x*z + dyz*y*z + dxyz*x*y*z;
+      real Conc_F = d0 + dx*x + dy*y + dz*z + dxx*x*x + dyy*y*y + dzz*z*z + dxy*x*y +  dxz*x*z + dyz*y*z + dxyz*x*y*z;
 
-      doubflo Diff_Conc_X = dx + x * dxx + y * dxy + z * dxz + y * z * dxyz;
-      doubflo Diff_Conc_Y = dy + y * dyy + x * dxy + z * dyz + x * z * dxyz;
-      doubflo Diff_Conc_Z = dz + z * dzz + x * dxz + y * dyz + x * y * dxyz;
+      real Diff_Conc_X = dx + x * dxx + y * dxy + z * dxz + y * z * dxyz;
+      real Diff_Conc_Y = dy + y * dyy + x * dxy + z * dyz + x * z * dxyz;
+      real Diff_Conc_Z = dz + z * dzz + x * dxz + y * dyz + x * y * dxyz;
 
       Mx = Conc_F*vx1-(one)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_X;
       My = Conc_F*vx2-(one)/(three*omegaD_F)*c1o2/*two*/*Diff_Conc_Y;
@@ -46662,9 +46662,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
 
       //Conc_F_SWT = c27o64 * Conc_C_SWT + c9o64 * (Conc_C_SWB+Conc_C_SET+Conc_C_NWT) + c3o64 * (Conc_C_SEB+Conc_C_NWB+Conc_C_NET) + c1o64 * Conc_C_NEB - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      //doubflo Diff_Conc_X_FSWT = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SWT + three * Conc_C_SEB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NWT + one * Conc_C_NEB - one * Conc_C_NWB) - c1o4 * Diff_Conc_XX;
-      //doubflo Diff_Conc_Y_FSWT = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_SWT + three * Conc_C_NWB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_SET + one * Conc_C_NEB - one * Conc_C_SEB) - c1o4 * Diff_Conc_YY;
-      //doubflo Diff_Conc_Z_FSWT = c1o16 * (nine * Conc_C_SWT - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NEB) + c1o4 * Diff_Conc_ZZ;
+      //real Diff_Conc_X_FSWT = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SWT + three * Conc_C_SEB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NWT + one * Conc_C_NEB - one * Conc_C_NWB) - c1o4 * Diff_Conc_XX;
+      //real Diff_Conc_Y_FSWT = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_SWT + three * Conc_C_NWB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_SET + one * Conc_C_NEB - one * Conc_C_SEB) - c1o4 * Diff_Conc_YY;
+      //real Diff_Conc_Z_FSWT = c1o16 * (nine * Conc_C_SWT - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NEB) + c1o4 * Diff_Conc_ZZ;
 
       Conc_F = d0 + dx*x + dy*y + dz*z + dxx*x*x + dyy*y*y + dzz*z*z + dxy*x*y +  dxz*x*z + dyz*y*z + dxyz*x*y*z;
 
@@ -46740,9 +46740,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
 
       //Conc_F_SET = c27o64 * Conc_C_SET + c9o64 * (Conc_C_SEB+Conc_C_SWT+Conc_C_NET) + c3o64 * (Conc_C_SWB+Conc_C_NEB+Conc_C_NWT) + c1o64 * Conc_C_NWB - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      //doubflo Diff_Conc_X_FSET = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SWT + three * Conc_C_SEB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NWT + one * Conc_C_NEB - one * Conc_C_NWB) + c1o4 * Diff_Conc_XX;
-      //doubflo Diff_Conc_Y_FSET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_SET + three * Conc_C_NEB - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_SWT + one * Conc_C_NWB - one * Conc_C_SWB) - c1o4 * Diff_Conc_YY;
-      //doubflo Diff_Conc_Z_FSET = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SEB + three * Conc_C_SWT - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NEB + one * Conc_C_NWT - one * Conc_C_NWB) + c1o4 * Diff_Conc_ZZ;
+      //real Diff_Conc_X_FSET = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SWT + three * Conc_C_SEB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NWT + one * Conc_C_NEB - one * Conc_C_NWB) + c1o4 * Diff_Conc_XX;
+      //real Diff_Conc_Y_FSET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_SET + three * Conc_C_NEB - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_SWT + one * Conc_C_NWB - one * Conc_C_SWB) - c1o4 * Diff_Conc_YY;
+      //real Diff_Conc_Z_FSET = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SEB + three * Conc_C_SWT - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NEB + one * Conc_C_NWT - one * Conc_C_NWB) + c1o4 * Diff_Conc_ZZ;
 
       Conc_F = d0 + dx*x + dy*y + dz*z + dxx*x*x + dyy*y*y + dzz*z*z + dxy*x*y +  dxz*x*z + dyz*y*z + dxyz*x*y*z;
 
@@ -46818,9 +46818,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
 
       //Conc_F_SEB = c27o64 * Conc_C_SEB + c9o64 * (Conc_C_SET+Conc_C_SWB+Conc_C_NEB) + c3o64 * (Conc_C_SWT+Conc_C_NET+Conc_C_NWB) + c1o64 * Conc_C_NWT - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      //doubflo Diff_Conc_X_FSEB = c1o16 * (nine * Conc_C_SEB - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NWT) + c1o4 * Diff_Conc_XX;
-      //doubflo Diff_Conc_Y_FSEB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_SEB + three * Conc_C_NET - three * Conc_C_SET + three * Conc_C_NWB - three * Conc_C_SWB + one * Conc_C_NWT - one * Conc_C_SWT) - c1o4 * Diff_Conc_YY;
-      //doubflo Diff_Conc_Z_FSEB = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SEB + three * Conc_C_SWT - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NEB + one * Conc_C_NWT - one * Conc_C_NWB) - c1o4 * Diff_Conc_ZZ;
+      //real Diff_Conc_X_FSEB = c1o16 * (nine * Conc_C_SEB - nine * Conc_C_SWB + three * Conc_C_SET - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_NWB + one * Conc_C_NET - one * Conc_C_NWT) + c1o4 * Diff_Conc_XX;
+      //real Diff_Conc_Y_FSEB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_SEB + three * Conc_C_NET - three * Conc_C_SET + three * Conc_C_NWB - three * Conc_C_SWB + one * Conc_C_NWT - one * Conc_C_SWT) - c1o4 * Diff_Conc_YY;
+      //real Diff_Conc_Z_FSEB = c1o16 * (nine * Conc_C_SET - nine * Conc_C_SEB + three * Conc_C_SWT - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_NEB + one * Conc_C_NWT - one * Conc_C_NWB) - c1o4 * Diff_Conc_ZZ;
 
       Conc_F = d0 + dx*x + dy*y + dz*z + dxx*x*x + dyy*y*y + dzz*z*z + dxy*x*y +  dxz*x*z + dyz*y*z + dxyz*x*y*z;
 
@@ -46906,9 +46906,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
 
       //Conc_F_NWB = c27o64 * Conc_C_NWB + c9o64 * (Conc_C_NWT+Conc_C_NEB+Conc_C_SWB) + c3o64 * (Conc_C_NET+Conc_C_SWT+Conc_C_SEB) + c1o64 * Conc_C_SET - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      //doubflo Diff_Conc_X_FNWB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NWT + three * Conc_C_SEB - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SWT) - c1o4 * Diff_Conc_XX;
-      //doubflo Diff_Conc_Y_FNWB = c1o16 * (nine * Conc_C_NWB - nine * Conc_C_SWB + three * Conc_C_NWT - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_SEB + one * Conc_C_NET - one * Conc_C_SET) + c1o4 * Diff_Conc_YY;
-      //doubflo Diff_Conc_Z_FNWB = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NEB + three * Conc_C_SWT - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SEB) - c1o4 * Diff_Conc_ZZ;
+      //real Diff_Conc_X_FNWB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NWT + three * Conc_C_SEB - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SWT) - c1o4 * Diff_Conc_XX;
+      //real Diff_Conc_Y_FNWB = c1o16 * (nine * Conc_C_NWB - nine * Conc_C_SWB + three * Conc_C_NWT - three * Conc_C_SWT + three * Conc_C_NEB - three * Conc_C_SEB + one * Conc_C_NET - one * Conc_C_SET) + c1o4 * Diff_Conc_YY;
+      //real Diff_Conc_Z_FNWB = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NEB + three * Conc_C_SWT - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SEB) - c1o4 * Diff_Conc_ZZ;
 
       Conc_F = d0 + dx*x + dy*y + dz*z + dxx*x*x + dyy*y*y + dzz*z*z + dxy*x*y +  dxz*x*z + dyz*y*z + dxyz*x*y*z;
 
@@ -46984,9 +46984,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
 
       //Conc_F_NWT = c27o64 * Conc_C_NWT + c9o64 * (Conc_C_NWB+Conc_C_NET+Conc_C_SWT) + c3o64 * (Conc_C_NEB+Conc_C_SWB+Conc_C_SET) + c1o64 * Conc_C_SEB - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      //doubflo Diff_Conc_X_FNWT = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NWT + three * Conc_C_NEB - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SWT + one * Conc_C_SEB - one * Conc_C_SWB) - c1o4 * Diff_Conc_XX;
-      //doubflo Diff_Conc_Y_FNWT = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_SWT + three * Conc_C_NWB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_SET + one * Conc_C_NEB - one * Conc_C_SEB) + c1o4 * Diff_Conc_YY;
-      //doubflo Diff_Conc_Z_FNWT = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NEB + three * Conc_C_SWT - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SEB) + c1o4 * Diff_Conc_ZZ;
+      //real Diff_Conc_X_FNWT = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NWT + three * Conc_C_NEB - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SWT + one * Conc_C_SEB - one * Conc_C_SWB) - c1o4 * Diff_Conc_XX;
+      //real Diff_Conc_Y_FNWT = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_SWT + three * Conc_C_NWB - three * Conc_C_SWB + three * Conc_C_NET - three * Conc_C_SET + one * Conc_C_NEB - one * Conc_C_SEB) + c1o4 * Diff_Conc_YY;
+      //real Diff_Conc_Z_FNWT = c1o16 * (nine * Conc_C_NWT - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NEB + three * Conc_C_SWT - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SEB) + c1o4 * Diff_Conc_ZZ;
 
       Conc_F = d0 + dx*x + dy*y + dz*z + dxx*x*x + dyy*y*y + dzz*z*z + dxy*x*y +  dxz*x*z + dyz*y*z + dxyz*x*y*z;
 
@@ -47062,9 +47062,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
 
       //Conc_F_NET = c27o64 * Conc_C_NET + c9o64 * (Conc_C_NEB+Conc_C_NWT+Conc_C_SET) + c3o64 * (Conc_C_NWB+Conc_C_SEB+Conc_C_SWT) + c1o64 * Conc_C_SWB - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      //doubflo Diff_Conc_X_FNET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NWT + three * Conc_C_NEB - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SWT + one * Conc_C_SEB - one * Conc_C_SWB) + c1o4 * Diff_Conc_XX;
-      //doubflo Diff_Conc_Y_FNET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_SET + three * Conc_C_NEB - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_SWT + one * Conc_C_NWB - one * Conc_C_SWB) + c1o4 * Diff_Conc_YY;
-      //doubflo Diff_Conc_Z_FNET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NEB + three * Conc_C_NWT - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SEB + one * Conc_C_SWT - one * Conc_C_SWB) + c1o4 * Diff_Conc_ZZ;
+      //real Diff_Conc_X_FNET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NWT + three * Conc_C_NEB - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SWT + one * Conc_C_SEB - one * Conc_C_SWB) + c1o4 * Diff_Conc_XX;
+      //real Diff_Conc_Y_FNET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_SET + three * Conc_C_NEB - three * Conc_C_SEB + three * Conc_C_NWT - three * Conc_C_SWT + one * Conc_C_NWB - one * Conc_C_SWB) + c1o4 * Diff_Conc_YY;
+      //real Diff_Conc_Z_FNET = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NEB + three * Conc_C_NWT - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SEB + one * Conc_C_SWT - one * Conc_C_SWB) + c1o4 * Diff_Conc_ZZ;
 
       Conc_F = d0 + dx*x + dy*y + dz*z + dxx*x*x + dyy*y*y + dzz*z*z + dxy*x*y +  dxz*x*z + dyz*y*z + dxyz*x*y*z;
 
@@ -47140,9 +47140,9 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
 
       //Conc_F_NEB = c27o64 * Conc_C_NEB + c9o64 * (Conc_C_NET+Conc_C_NWB+Conc_C_SEB) + c3o64 * (Conc_C_NWT+Conc_C_SET+Conc_C_SWB) + c1o64 * Conc_C_SWT - c3o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      //doubflo Diff_Conc_X_FNEB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NWT + three * Conc_C_SEB - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SWT) + c1o4 * Diff_Conc_XX;
-      //doubflo Diff_Conc_Y_FNEB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_SEB + three * Conc_C_NET - three * Conc_C_SET + three * Conc_C_NWB - three * Conc_C_SWB + one * Conc_C_NWT - one * Conc_C_SWT) + c1o4 * Diff_Conc_YY;
-      //doubflo Diff_Conc_Z_FNEB = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NEB + three * Conc_C_NWT - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SEB + one * Conc_C_SWT - one * Conc_C_SWB) - c1o4 * Diff_Conc_ZZ;
+      //real Diff_Conc_X_FNEB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_NWB + three * Conc_C_NET - three * Conc_C_NWT + three * Conc_C_SEB - three * Conc_C_SWB + one * Conc_C_SET - one * Conc_C_SWT) + c1o4 * Diff_Conc_XX;
+      //real Diff_Conc_Y_FNEB = c1o16 * (nine * Conc_C_NEB - nine * Conc_C_SEB + three * Conc_C_NET - three * Conc_C_SET + three * Conc_C_NWB - three * Conc_C_SWB + one * Conc_C_NWT - one * Conc_C_SWT) + c1o4 * Diff_Conc_YY;
+      //real Diff_Conc_Z_FNEB = c1o16 * (nine * Conc_C_NET - nine * Conc_C_NEB + three * Conc_C_NWT - three * Conc_C_NWB + three * Conc_C_SET - three * Conc_C_SEB + one * Conc_C_SWT - one * Conc_C_SWB) - c1o4 * Diff_Conc_ZZ;
 
       Conc_F = d0 + dx*x + dy*y + dz*z + dxx*x*x + dyy*y*y + dzz*z*z + dxy*x*y +  dxz*x*z + dyz*y*z + dxyz*x*y*z;
 
@@ -47228,8 +47228,8 @@ extern "C" __global__ void scaleCFThS27(     doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCFEff27(doubflo* DC, 
-                                        doubflo* DF, 
+extern "C" __global__ void scaleCFEff27(real* DC, 
+                                        real* DF, 
                                         unsigned int* neighborCX,
                                         unsigned int* neighborCY,
                                         unsigned int* neighborCZ,
@@ -47242,16 +47242,16 @@ extern "C" __global__ void scaleCFEff27(doubflo* DC,
                                         unsigned int* posCSWB, 
                                         unsigned int* posFSWB, 
                                         unsigned int kCF, 
-									             doubflo omCoarse, 
-									             doubflo omFine, 
-									             doubflo nu, 
+									             real omCoarse, 
+									             real omFine, 
+									             real nu, 
 									             unsigned int nxC, 
 									             unsigned int nyC, 
 									             unsigned int nxF, 
                                         unsigned int nyF,
                                         OffCF offCF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -47282,7 +47282,7 @@ extern "C" __global__ void scaleCFEff27(doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -47358,37 +47358,37 @@ extern "C" __global__ void scaleCFEff27(doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = c1o2;
-   doubflo omegaS = omCoarse;//-omCoarse;
-   doubflo o  = omFine;//-omFine;
-   doubflo op = one;
-   doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        drho,vx1,vx2,vx3;
-   doubflo        drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz;
-
-   //doubflo x,y,z;
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   real op = one;
+   real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        drho,vx1,vx2,vx3;
+   real        drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz;
+
+   //real x,y,z;
 
 
    if(k<kCF)
@@ -47927,36 +47927,36 @@ extern "C" __global__ void scaleCFEff27(doubflo* DC,
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       // (_SWT _SEB _NWB _NET)
       //merged
-      doubflo tayz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET + kyzFromfcNEQ_SWT + kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
-      doubflo tbxz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET + kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB + kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET;
-      doubflo tcxy =-kxyFromfcNEQ_SWT + kxyFromfcNEQ_NWB + kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET; 
-      doubflo tax  = four*(-vx1_SWT + vx1_SEB - vx1_NWB + vx1_NET) - tayz;
-      doubflo tby  = four*(-vx2_SWT - vx2_SEB + vx2_NWB + vx2_NET) - tbxz;
-      doubflo tcz  = four*( vx3_SWT - vx3_SEB - vx3_NWB + vx3_NET) - tcxy;
-      doubflo taxy = two*( vx1_SWT - vx1_NWB - vx1_SEB + vx1_NET - vx3_SWT - vx3_NWB + vx3_SEB + vx3_NET) - kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET;
-      doubflo taxz = two*(-vx1_SWT + vx1_NWB - vx1_SEB + vx1_NET - vx2_SWT - vx2_NWB + vx2_SEB + vx2_NET) + kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NET - kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET;
-      doubflo tbxy = two*( vx2_SWT - vx2_NWB - vx2_SEB + vx2_NET - vx3_SWT + vx3_NWB - vx3_SEB + vx3_NET) + kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NET - kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
-      doubflo tay  = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) - taxz;
-      doubflo taz  = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) - taxy;
-      doubflo tbz  = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) - tbxy;
-      doubflo tbx  = two*(kxyFromfcNEQ_SWT + kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB + kxyFromfcNEQ_NET) - tay;
-      doubflo tcy  = two*(kyzFromfcNEQ_SWT + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NWB + kyzFromfcNEQ_NET) - tbz;
-      doubflo tcx  = two*(kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB + kxzFromfcNEQ_NET) - taz;
-      doubflo tbyz = four*(-vx2_SWT + vx2_SEB - vx2_NWB + vx2_NET) - tbx;
-      doubflo tcyz = four*(-vx3_SWT + vx3_SEB - vx3_NWB + vx3_NET) - tcx;
-      doubflo tcxz = four*(-vx3_SWT - vx3_SEB + vx3_NWB + vx3_NET) - tcy;
-      doubflo taxx = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) - tbz;
-      doubflo tayy = four*(-vx2_SWT + vx2_SEB + vx2_NWB - vx2_NET) + two*(-kxyFromfcNEQ_SWT    - kxyFromfcNEQ_SEB    + kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + tbz;
-      doubflo tazz = four*( vx3_SWT + vx3_SEB - vx3_NWB - vx3_NET) + two*( kxzFromfcNEQ_SWT    - kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tcy;
-      doubflo tbxx = four*(-vx1_SWT + vx1_SEB + vx1_NWB - vx1_NET) + two*(-kxyFromfcNEQ_SWT    + kxyFromfcNEQ_SEB    - kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + taz;
-      doubflo tbyy = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) + two*( kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_NET) - taz;
-      doubflo tbzz = four*( vx3_SWT - vx3_SEB + vx3_NWB - vx3_NET) + two*( kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    - kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tcx;
-      doubflo tcxx = four*( vx1_SWT + vx1_SEB - vx1_NWB - vx1_NET) + two*(-kxzFromfcNEQ_SWT    + kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tay;
-      doubflo tcyy = four*( vx2_SWT - vx2_SEB + vx2_NWB - vx2_NET) + two*(-kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    + kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tbx;
-      doubflo tczz = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) - tay;
-      doubflo ta0  = eight*( vx1_SWT + vx1_NWB + vx1_SEB + vx1_NET) + two*( kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) + two*(-kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tayy;
-      doubflo tb0  = eight*( vx2_SWT + vx2_NWB + vx2_SEB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) + two*( kxyFromfcNEQ_SWT - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB - kxyFromfcNEQ_NET   ) - tbzz;
-      doubflo tc0  = eight*( vx3_SWT + vx3_NWB + vx3_SEB + vx3_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_NET) + two*( kxzFromfcNEQ_SWT - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tcyy;
+      real tayz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET + kyzFromfcNEQ_SWT + kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
+      real tbxz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET + kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB + kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET;
+      real tcxy =-kxyFromfcNEQ_SWT + kxyFromfcNEQ_NWB + kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET; 
+      real tax  = four*(-vx1_SWT + vx1_SEB - vx1_NWB + vx1_NET) - tayz;
+      real tby  = four*(-vx2_SWT - vx2_SEB + vx2_NWB + vx2_NET) - tbxz;
+      real tcz  = four*( vx3_SWT - vx3_SEB - vx3_NWB + vx3_NET) - tcxy;
+      real taxy = two*( vx1_SWT - vx1_NWB - vx1_SEB + vx1_NET - vx3_SWT - vx3_NWB + vx3_SEB + vx3_NET) - kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET;
+      real taxz = two*(-vx1_SWT + vx1_NWB - vx1_SEB + vx1_NET - vx2_SWT - vx2_NWB + vx2_SEB + vx2_NET) + kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NET - kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET;
+      real tbxy = two*( vx2_SWT - vx2_NWB - vx2_SEB + vx2_NET - vx3_SWT + vx3_NWB - vx3_SEB + vx3_NET) + kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NET - kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
+      real tay  = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) - taxz;
+      real taz  = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) - taxy;
+      real tbz  = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) - tbxy;
+      real tbx  = two*(kxyFromfcNEQ_SWT + kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB + kxyFromfcNEQ_NET) - tay;
+      real tcy  = two*(kyzFromfcNEQ_SWT + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NWB + kyzFromfcNEQ_NET) - tbz;
+      real tcx  = two*(kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB + kxzFromfcNEQ_NET) - taz;
+      real tbyz = four*(-vx2_SWT + vx2_SEB - vx2_NWB + vx2_NET) - tbx;
+      real tcyz = four*(-vx3_SWT + vx3_SEB - vx3_NWB + vx3_NET) - tcx;
+      real tcxz = four*(-vx3_SWT - vx3_SEB + vx3_NWB + vx3_NET) - tcy;
+      real taxx = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) - tbz;
+      real tayy = four*(-vx2_SWT + vx2_SEB + vx2_NWB - vx2_NET) + two*(-kxyFromfcNEQ_SWT    - kxyFromfcNEQ_SEB    + kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + tbz;
+      real tazz = four*( vx3_SWT + vx3_SEB - vx3_NWB - vx3_NET) + two*( kxzFromfcNEQ_SWT    - kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tcy;
+      real tbxx = four*(-vx1_SWT + vx1_SEB + vx1_NWB - vx1_NET) + two*(-kxyFromfcNEQ_SWT    + kxyFromfcNEQ_SEB    - kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + taz;
+      real tbyy = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) + two*( kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_NET) - taz;
+      real tbzz = four*( vx3_SWT - vx3_SEB + vx3_NWB - vx3_NET) + two*( kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    - kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tcx;
+      real tcxx = four*( vx1_SWT + vx1_SEB - vx1_NWB - vx1_NET) + two*(-kxzFromfcNEQ_SWT    + kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tay;
+      real tcyy = four*( vx2_SWT - vx2_SEB + vx2_NWB - vx2_NET) + two*(-kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    + kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tbx;
+      real tczz = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) - tay;
+      real ta0  = eight*( vx1_SWT + vx1_NWB + vx1_SEB + vx1_NET) + two*( kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) + two*(-kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tayy;
+      real tb0  = eight*( vx2_SWT + vx2_NWB + vx2_SEB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) + two*( kxyFromfcNEQ_SWT - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB - kxyFromfcNEQ_NET   ) - tbzz;
+      real tc0  = eight*( vx3_SWT + vx3_NWB + vx3_SEB + vx3_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_NET) + two*( kxzFromfcNEQ_SWT - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tcyy;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       a0  +=  ta0   ;
       ax  +=  tax   ;
@@ -48068,9 +48068,9 @@ extern "C" __global__ void scaleCFEff27(doubflo* DC,
       cy = cy + two * yoff * cyy + xoff * cxy + zoff * cyz;
       cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo x_E, x_N, x_T, x_NE, x_SE, x_BE, x_TE, x_TN, x_BN, x_TNE, x_TNW, x_TSE, x_TSW, x_ZERO;
-      doubflo y_E, y_N, y_T, y_NE, y_SE, y_BE, y_TE, y_TN, y_BN, y_TNE, y_TNW, y_TSE, y_TSW, y_ZERO;
-      doubflo z_E, z_N, z_T, z_NE, z_SE, z_BE, z_TE, z_TN, z_BN, z_TNE, z_TNW, z_TSE, z_TSW, z_ZERO;
+      real x_E, x_N, x_T, x_NE, x_SE, x_BE, x_TE, x_TN, x_BN, x_TNE, x_TNW, x_TSE, x_TSW, x_ZERO;
+      real y_E, y_N, y_T, y_NE, y_SE, y_BE, y_TE, y_TN, y_BN, y_TNE, y_TNW, y_TSE, y_TSW, y_ZERO;
+      real z_E, z_N, z_T, z_NE, z_SE, z_BE, z_TE, z_TN, z_BN, z_TNE, z_TNW, z_TSE, z_TSW, z_ZERO;
 
       f_E    = eps_new *((five*ax*o + five*by*o + five*cz*o - eight*ax*op + four*by*op + four*cz*op)/(fiftyfour*o*op));
       f_N    = f_E  + eps_new *((two*(ax - by))/(nine*o));
@@ -48938,8 +48938,8 @@ extern "C" __global__ void scaleCFEff27(doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleCF27(doubflo* DC, 
-                                     doubflo* DF, 
+extern "C" __global__ void scaleCF27(real* DC, 
+                                     real* DF, 
                                      unsigned int* neighborCX,
                                      unsigned int* neighborCY,
                                      unsigned int* neighborCZ,
@@ -48952,15 +48952,15 @@ extern "C" __global__ void scaleCF27(doubflo* DC,
                                      unsigned int* posCSWB, 
                                      unsigned int* posFSWB, 
                                      unsigned int kCF, 
-                                     doubflo omCoarse, 
-                                     doubflo omFine, 
-                                     doubflo nu, 
+                                     real omCoarse, 
+                                     real omFine, 
+                                     real nu, 
                                      unsigned int nxC, 
                                      unsigned int nyC, 
                                      unsigned int nxF, 
                                      unsigned int nyF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -48991,7 +48991,7 @@ extern "C" __global__ void scaleCF27(doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -49067,36 +49067,36 @@ extern "C" __global__ void scaleCF27(doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo epsylon = one;
-   doubflo eps_new = c1o2;
-   doubflo omegaS = omCoarse;//-omCoarse;
-   doubflo o  = omFine;//-omFine;
-   doubflo op = one;
-   doubflo cu_sq;
-
-
-   doubflo        drho,vx1,vx2,vx3;
-   doubflo        drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz;
-
-   doubflo x,y,z;
+   real epsylon = one;
+   real eps_new = c1o2;
+   real omegaS = omCoarse;//-omCoarse;
+   real o  = omFine;//-omFine;
+   real op = one;
+   real cu_sq;
+
+
+   real        drho,vx1,vx2,vx3;
+   real        drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz;
+
+   real x,y,z;
 
 
    if(k<kCF)
diff --git a/src/VirtualFluids_GPU/GPU/ScaleFC27.cu b/src/VirtualFluids_GPU/GPU/ScaleFC27.cu
index 54fcc89cb..439dc17d5 100644
--- a/src/VirtualFluids_GPU/GPU/ScaleFC27.cu
+++ b/src/VirtualFluids_GPU/GPU/ScaleFC27.cu
@@ -4,8 +4,8 @@
 #include "GPU/constant.h"
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFC_0817_comp_27( doubflo* DC, 
-												 doubflo* DF, 
+extern "C" __global__ void scaleFC_0817_comp_27( real* DC, 
+												 real* DF, 
 												 unsigned int* neighborCX,
 												 unsigned int* neighborCY,
 												 unsigned int* neighborCZ,
@@ -18,16 +18,16 @@ extern "C" __global__ void scaleFC_0817_comp_27( doubflo* DC,
 												 unsigned int* posC, 
 												 unsigned int* posFSWB, 
 												 unsigned int kFC, 
-												 doubflo omCoarse, 
-												 doubflo omFine, 
-												 doubflo nu, 
+												 real omCoarse, 
+												 real omFine, 
+												 real nu, 
 												 unsigned int nxC, 
 												 unsigned int nyC, 
 												 unsigned int nxF, 
 												 unsigned int nyF,
 												 OffFC offFC)
 {
-   doubflo 
+   real 
 	   *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source,
 	   *fMP0source, *fP0Psource, *fM0Msource, *fP0Msource, *fM0Psource, *f0PPsource, *f0MMsource, *f0PMsource, *f0MPsource,
 	   *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource;
@@ -61,7 +61,7 @@ extern "C" __global__ void scaleFC_0817_comp_27( doubflo* DC,
    fPMPsource = &DF[dirTSE *size_MatF];
    fPMMsource = &DF[dirBSE *size_MatF];
 
-   doubflo
+   real
 	   *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest,
 	   *fMP0dest, *fP0Pdest, *fM0Mdest, *fP0Mdest, *fM0Pdest, *f0PPdest, *f0MMdest, *f0PMdest, *f0MPdest,
 	   *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest;
@@ -138,36 +138,36 @@ extern "C" __global__ void scaleFC_0817_comp_27( doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = two;
-   doubflo omegaS = omFine;//-omFine;
-   doubflo o  = omCoarse;//-omCoarse;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        vvx, vvy, vvz, vx2, vy2, vz2, drho;
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM;
-   doubflo        /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP;
-   doubflo        /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP;
-   doubflo        /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM;
-   doubflo        /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM;
-   doubflo        /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP;
-   doubflo        /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP;
-   doubflo        /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM;
-   doubflo        fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM;
-   doubflo        kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM;
-   doubflo        kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP;
-   doubflo        kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP;
-   doubflo        kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM;
-   doubflo        kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM;
-   doubflo        kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP;
-   doubflo        kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP;
-   doubflo        kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        vvx, vvy, vvz, vx2, vy2, vz2, drho;
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*pressMMM,*/drhoMMM,vx1MMM,vx2MMM,vx3MMM;
+   real        /*pressMMP,*/drhoMMP,vx1MMP,vx2MMP,vx3MMP;
+   real        /*pressMPP,*/drhoMPP,vx1MPP,vx2MPP,vx3MPP;
+   real        /*pressMPM,*/drhoMPM,vx1MPM,vx2MPM,vx3MPM;
+   real        /*pressPPM,*/drhoPPM,vx1PPM,vx2PPM,vx3PPM;
+   real        /*pressPPP,*/drhoPPP,vx1PPP,vx2PPP,vx3PPP;
+   real        /*pressPMP,*/drhoPMP,vx1PMP,vx2PMP,vx3PMP;
+   real        /*pressPMM,*/drhoPMM,vx1PMM,vx2PMM,vx3PMM;
+   real        fP00,fM00,f0P0,f0M0,f00P,f00M,fPP0,fMM0,fPM0,fMP0,fP0P,fM0M,fP0M,fM0P,f0PP,f0MM,f0PM,f0MP,f000,fPPP, fMMP, fPMP, fMPP, fPPM, fMMM, fPMM, fMPM;
+   real        kxyFromfcNEQMMM, kyzFromfcNEQMMM, kxzFromfcNEQMMM, kxxMyyFromfcNEQMMM, kxxMzzFromfcNEQMMM, kyyMzzFromfcNEQMMM;
+   real        kxyFromfcNEQMMP, kyzFromfcNEQMMP, kxzFromfcNEQMMP, kxxMyyFromfcNEQMMP, kxxMzzFromfcNEQMMP, kyyMzzFromfcNEQMMP;
+   real        kxyFromfcNEQMPP, kyzFromfcNEQMPP, kxzFromfcNEQMPP, kxxMyyFromfcNEQMPP, kxxMzzFromfcNEQMPP, kyyMzzFromfcNEQMPP;
+   real        kxyFromfcNEQMPM, kyzFromfcNEQMPM, kxzFromfcNEQMPM, kxxMyyFromfcNEQMPM, kxxMzzFromfcNEQMPM, kyyMzzFromfcNEQMPM;
+   real        kxyFromfcNEQPPM, kyzFromfcNEQPPM, kxzFromfcNEQPPM, kxxMyyFromfcNEQPPM, kxxMzzFromfcNEQPPM, kyyMzzFromfcNEQPPM;
+   real        kxyFromfcNEQPPP, kyzFromfcNEQPPP, kxzFromfcNEQPPP, kxxMyyFromfcNEQPPP, kxxMzzFromfcNEQPPP, kyyMzzFromfcNEQPPP;
+   real        kxyFromfcNEQPMP, kyzFromfcNEQPMP, kxzFromfcNEQPMP, kxxMyyFromfcNEQPMP, kxxMzzFromfcNEQPMP, kyyMzzFromfcNEQPMP;
+   real        kxyFromfcNEQPMM, kyzFromfcNEQPMM, kxzFromfcNEQPMM, kxxMyyFromfcNEQPMM, kxxMzzFromfcNEQPMM, kyyMzzFromfcNEQPMM;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
+   real        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
 
    if(k<kFC)
    {
@@ -683,11 +683,11 @@ extern "C" __global__ void scaleFC_0817_comp_27( doubflo* DC,
 	  c0 -= c1o4*(cxx + cyy + czz);
 
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage = zero;
-	  doubflo kyzAverage = zero;
-	  doubflo kxzAverage = zero;
-	  doubflo kxxMyyAverage = zero;
-	  doubflo kxxMzzAverage = zero;
+	  real kxyAverage = zero;
+	  real kyzAverage = zero;
+	  real kxzAverage = zero;
+	  real kxxMyyAverage = zero;
+	  real kxxMzzAverage = zero;
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  ////Press
 	  //d0   = ( pressPPM + pressPPP + pressMPM + pressMPP + pressPMM + pressPMP + pressMMM + pressMMP) * c1o8;
@@ -733,41 +733,41 @@ extern "C" __global__ void scaleFC_0817_comp_27( doubflo* DC,
       cz = cz + two * zoff * czz + xoff * cxz + yoff * cyz;
 	  d0 = d0 + xoff * dx + yoff * dy + zoff * dz + xoff*yoff*dxy + xoff*zoff*dxz + yoff*zoff*dyz;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo mfcbb = zero;
-	  doubflo mfabb = zero;
-	  doubflo mfbcb = zero;
-	  doubflo mfbab = zero;
-	  doubflo mfbbc = zero;
-	  doubflo mfbba = zero;
-	  doubflo mfccb = zero;
-	  doubflo mfaab = zero;
-	  doubflo mfcab = zero;
-	  doubflo mfacb = zero;
-	  doubflo mfcbc = zero;
-	  doubflo mfaba = zero;
-	  doubflo mfcba = zero;
-	  doubflo mfabc = zero;
-	  doubflo mfbcc = zero;
-	  doubflo mfbaa = zero;
-	  doubflo mfbca = zero;
-	  doubflo mfbac = zero;
-	  doubflo mfbbb = zero;
-	  doubflo mfccc = zero;
-	  doubflo mfaac = zero;
-	  doubflo mfcac = zero;
-	  doubflo mfacc = zero;
-	  doubflo mfcca = zero;
-	  doubflo mfaaa = zero;
-	  doubflo mfcaa = zero;
-	  doubflo mfaca = zero;
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo m0, m1, m2, oMdrho;
-	  doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  doubflo O3 = two - o;
-	  doubflo residu, residutmp;
+	  real m0, m1, m2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  real O3 = two - o;
+	  real residu, residutmp;
 	  residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -779,9 +779,9 @@ extern "C" __global__ void scaleFC_0817_comp_27( doubflo* DC,
 	  //y = 0.;
 	  //z = 0.;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //press = pressPPP * (c1o8 - c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
 			//  pressMPP * (c1o8 + c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
@@ -816,7 +816,7 @@ extern "C" __global__ void scaleFC_0817_comp_27( doubflo* DC,
 
 	  //two
 	  // linear combinations
-	  doubflo oP = o;// :(
+	  real oP = o;// :(
 	  mxxPyyPzz = mfaaa    -c2o3*(ax+by+cz)*eps_new/oP*(one+press); 
 	  //mxxMyy    = -c2o3*(ax - by)*eps_new/o;
 	  //mxxMzz    = -c2o3*(ax - cz)*eps_new/o;
@@ -1199,8 +1199,8 @@ extern "C" __global__ void scaleFC_0817_comp_27( doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC, 
-												  doubflo* DF, 
+extern "C" __global__ void scaleFC_AA2016_comp_27(real* DC, 
+												  real* DF, 
 												  unsigned int* neighborCX,
 												  unsigned int* neighborCY,
 												  unsigned int* neighborCZ,
@@ -1213,16 +1213,16 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 												  unsigned int* posC, 
 												  unsigned int* posFSWB, 
 												  unsigned int kFC, 
-												  doubflo omCoarse, 
-												  doubflo omFine, 
-												  doubflo nu, 
+												  real omCoarse, 
+												  real omFine, 
+												  real nu, 
 												  unsigned int nxC, 
 												  unsigned int nyC, 
 												  unsigned int nxF, 
 												  unsigned int nyF,
 												  OffFC offFC)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -1253,7 +1253,7 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -1328,55 +1328,55 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = two;
-   doubflo omegaS = omFine;//-omFine;
-   doubflo o  = omCoarse;//-omCoarse;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
+   real        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
 	//////////////////////////////////////////////////////////////////////////////////////
-    doubflo	mfcbb, mfabb, mfbcb, mfbab, mfbbc, mfbba, mfccb, mfaab, mfcab, mfacb, mfcbc, mfaba, mfcba, mfabc, mfbcc, mfbaa, mfbca, mfbac, mfbbb, mfccc, mfaac, mfcac, mfacc, mfcca, mfaaa, mfcaa, mfaca;
-	doubflo wadjust;
-	doubflo qudricLimitP = 0.01f;// * 0.0001f;
-	doubflo qudricLimitM = 0.01f;// * 0.0001f;
-	doubflo qudricLimitD = 0.01f;// * 0.001f;
-	doubflo omega = omFine;
+    real	mfcbb, mfabb, mfbcb, mfbab, mfbbc, mfbba, mfccb, mfaab, mfcab, mfacb, mfcbc, mfaba, mfcba, mfabc, mfbcc, mfbaa, mfbca, mfbac, mfbbb, mfccc, mfaac, mfcac, mfacc, mfcca, mfaaa, mfcaa, mfaca;
+	real wadjust;
+	real qudricLimitP = 0.01f;// * 0.0001f;
+	real qudricLimitM = 0.01f;// * 0.0001f;
+	real qudricLimitD = 0.01f;// * 0.001f;
+	real omega = omFine;
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	doubflo NeqOn = one;
-	doubflo drho, rho;
+	real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	real NeqOn = one;
+	real drho, rho;
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	doubflo OxxPyyPzz;
-	doubflo OxyyPxzz;
-	doubflo OxyyMxzz;
-	doubflo Oxyz    ;
-	doubflo O4, O5, O6;
-	doubflo CUMcbb, CUMbcb, CUMbbc, CUMcca, CUMcac, CUMacc, CUMbcc, CUMcbc, CUMccb, CUMccc;
+	real OxxPyyPzz;
+	real OxyyPxzz;
+	real OxyyMxzz;
+	real Oxyz    ;
+	real O4, O5, O6;
+	real CUMcbb, CUMbcb, CUMbbc, CUMcca, CUMcac, CUMacc, CUMbcc, CUMcbc, CUMccb, CUMccc;
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
    if(k<kFC)
@@ -1742,13 +1742,13 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SWB    = mfbbb;
-			doubflo mxxyPyzz_SWB = mxxyPyzz;
-			doubflo mxxyMyzz_SWB = mxxyMyzz;
-			doubflo mxxzPyyz_SWB = mxxzPyyz;
-			doubflo mxxzMyyz_SWB = mxxzMyyz;
-			doubflo mxyyPxzz_SWB = mxyyPxzz;
-			doubflo mxyyMxzz_SWB = mxyyMxzz;
+			real mfbbb_SWB    = mfbbb;
+			real mxxyPyzz_SWB = mxxyPyzz;
+			real mxxyMyzz_SWB = mxxyMyzz;
+			real mxxzPyyz_SWB = mxxzPyyz;
+			real mxxzMyyz_SWB = mxxzMyyz;
+			real mxyyPxzz_SWB = mxyyPxzz;
+			real mxyyMxzz_SWB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -2149,13 +2149,13 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SWT    = mfbbb;
-			doubflo mxxyPyzz_SWT = mxxyPyzz;
-			doubflo mxxyMyzz_SWT = mxxyMyzz;
-			doubflo mxxzPyyz_SWT = mxxzPyyz;
-			doubflo mxxzMyyz_SWT = mxxzMyyz;
-			doubflo mxyyPxzz_SWT = mxyyPxzz;
-			doubflo mxyyMxzz_SWT = mxyyMxzz;
+			real mfbbb_SWT    = mfbbb;
+			real mxxyPyzz_SWT = mxxyPyzz;
+			real mxxyMyzz_SWT = mxxyMyzz;
+			real mxxzPyyz_SWT = mxxzPyyz;
+			real mxxzMyyz_SWT = mxxzMyyz;
+			real mxyyPxzz_SWT = mxyyPxzz;
+			real mxyyMxzz_SWT = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -2555,13 +2555,13 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SET    = mfbbb;
-			doubflo mxxyPyzz_SET = mxxyPyzz;
-			doubflo mxxyMyzz_SET = mxxyMyzz;
-			doubflo mxxzPyyz_SET = mxxzPyyz;
-			doubflo mxxzMyyz_SET = mxxzMyyz;
-			doubflo mxyyPxzz_SET = mxyyPxzz;
-			doubflo mxyyMxzz_SET = mxyyMxzz;
+			real mfbbb_SET    = mfbbb;
+			real mxxyPyzz_SET = mxxyPyzz;
+			real mxxyMyzz_SET = mxxyMyzz;
+			real mxxzPyyz_SET = mxxzPyyz;
+			real mxxzMyyz_SET = mxxzMyyz;
+			real mxyyPxzz_SET = mxyyPxzz;
+			real mxyyMxzz_SET = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -2961,13 +2961,13 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SEB    = mfbbb;
-			doubflo mxxyPyzz_SEB = mxxyPyzz;
-			doubflo mxxyMyzz_SEB = mxxyMyzz;
-			doubflo mxxzPyyz_SEB = mxxzPyyz;
-			doubflo mxxzMyyz_SEB = mxxzMyyz;
-			doubflo mxyyPxzz_SEB = mxyyPxzz;
-			doubflo mxyyMxzz_SEB = mxyyMxzz;
+			real mfbbb_SEB    = mfbbb;
+			real mxxyPyzz_SEB = mxxyPyzz;
+			real mxxyMyzz_SEB = mxxyMyzz;
+			real mxxzPyyz_SEB = mxxzPyyz;
+			real mxxzMyyz_SEB = mxxzMyyz;
+			real mxyyPxzz_SEB = mxyyPxzz;
+			real mxyyMxzz_SEB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -3377,13 +3377,13 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NWB    = mfbbb;
-			doubflo mxxyPyzz_NWB = mxxyPyzz;
-			doubflo mxxyMyzz_NWB = mxxyMyzz;
-			doubflo mxxzPyyz_NWB = mxxzPyyz;
-			doubflo mxxzMyyz_NWB = mxxzMyyz;
-			doubflo mxyyPxzz_NWB = mxyyPxzz;
-			doubflo mxyyMxzz_NWB = mxyyMxzz;
+			real mfbbb_NWB    = mfbbb;
+			real mxxyPyzz_NWB = mxxyPyzz;
+			real mxxyMyzz_NWB = mxxyMyzz;
+			real mxxzPyyz_NWB = mxxzPyyz;
+			real mxxzMyyz_NWB = mxxzMyyz;
+			real mxyyPxzz_NWB = mxyyPxzz;
+			real mxyyMxzz_NWB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -3783,13 +3783,13 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NWT    = mfbbb;
-			doubflo mxxyPyzz_NWT = mxxyPyzz;
-			doubflo mxxyMyzz_NWT = mxxyMyzz;
-			doubflo mxxzPyyz_NWT = mxxzPyyz;
-			doubflo mxxzMyyz_NWT = mxxzMyyz;
-			doubflo mxyyPxzz_NWT = mxyyPxzz;
-			doubflo mxyyMxzz_NWT = mxyyMxzz;
+			real mfbbb_NWT    = mfbbb;
+			real mxxyPyzz_NWT = mxxyPyzz;
+			real mxxyMyzz_NWT = mxxyMyzz;
+			real mxxzPyyz_NWT = mxxzPyyz;
+			real mxxzMyyz_NWT = mxxzMyyz;
+			real mxyyPxzz_NWT = mxyyPxzz;
+			real mxyyMxzz_NWT = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -4189,13 +4189,13 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NET    = mfbbb;
-			doubflo mxxyPyzz_NET = mxxyPyzz;
-			doubflo mxxyMyzz_NET = mxxyMyzz;
-			doubflo mxxzPyyz_NET = mxxzPyyz;
-			doubflo mxxzMyyz_NET = mxxzMyyz;
-			doubflo mxyyPxzz_NET = mxyyPxzz;
-			doubflo mxyyMxzz_NET = mxyyMxzz;
+			real mfbbb_NET    = mfbbb;
+			real mxxyPyzz_NET = mxxyPyzz;
+			real mxxyMyzz_NET = mxxyMyzz;
+			real mxxzPyyz_NET = mxxzPyyz;
+			real mxxzMyyz_NET = mxxzMyyz;
+			real mxyyPxzz_NET = mxyyPxzz;
+			real mxyyMxzz_NET = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -4595,13 +4595,13 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NEB    = mfbbb;
-			doubflo mxxyPyzz_NEB = mxxyPyzz;
-			doubflo mxxyMyzz_NEB = mxxyMyzz;
-			doubflo mxxzPyyz_NEB = mxxzPyyz;
-			doubflo mxxzMyyz_NEB = mxxzMyyz;
-			doubflo mxyyPxzz_NEB = mxyyPxzz;
-			doubflo mxyyMxzz_NEB = mxyyMxzz;
+			real mfbbb_NEB    = mfbbb;
+			real mxxyPyzz_NEB = mxxyPyzz;
+			real mxxyMyzz_NEB = mxxyMyzz;
+			real mxxzPyyz_NEB = mxxzPyyz;
+			real mxxzMyyz_NEB = mxxzMyyz;
+			real mxyyPxzz_NEB = mxyyPxzz;
+			real mxyyMxzz_NEB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -4658,13 +4658,13 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 
 
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo mfbbbMean    = c1o8 * (mfbbb_SWB    + mfbbb_SWT    + mfbbb_SET    + mfbbb_SEB    + mfbbb_NWB    + mfbbb_NWT    + mfbbb_NET    + mfbbb_NEB);
-	  doubflo mxxyPyzzMean = c1o8 * (mxxyPyzz_SWB + mxxyPyzz_SWT + mxxyPyzz_SET + mxxyPyzz_SEB + mxxyPyzz_NWB + mxxyPyzz_NWT + mxxyPyzz_NET + mxxyPyzz_NEB);
-	  doubflo mxxyMyzzMean = c1o8 * (mxxyMyzz_SWB + mxxyMyzz_SWT + mxxyMyzz_SET + mxxyMyzz_SEB + mxxyMyzz_NWB + mxxyMyzz_NWT + mxxyMyzz_NET + mxxyMyzz_NEB);
-	  doubflo mxxzPyyzMean = c1o8 * (mxxzPyyz_SWB + mxxzPyyz_SWT + mxxzPyyz_SET + mxxzPyyz_SEB + mxxzPyyz_NWB + mxxzPyyz_NWT + mxxzPyyz_NET + mxxzPyyz_NEB);
-	  doubflo mxxzMyyzMean = c1o8 * (mxxzMyyz_SWB + mxxzMyyz_SWT + mxxzMyyz_SET + mxxzMyyz_SEB + mxxzMyyz_NWB + mxxzMyyz_NWT + mxxzMyyz_NET + mxxzMyyz_NEB);
-	  doubflo mxyyPxzzMean = c1o8 * (mxyyPxzz_SWB + mxyyPxzz_SWT + mxyyPxzz_SET + mxyyPxzz_SEB + mxyyPxzz_NWB + mxyyPxzz_NWT + mxyyPxzz_NET + mxyyPxzz_NEB);
-	  doubflo mxyyMxzzMean = c1o8 * (mxyyMxzz_SWB + mxyyMxzz_SWT + mxyyMxzz_SET + mxyyMxzz_SEB + mxyyMxzz_NWB + mxyyMxzz_NWT + mxyyMxzz_NET + mxyyMxzz_NEB);
+	  real mfbbbMean    = c1o8 * (mfbbb_SWB    + mfbbb_SWT    + mfbbb_SET    + mfbbb_SEB    + mfbbb_NWB    + mfbbb_NWT    + mfbbb_NET    + mfbbb_NEB);
+	  real mxxyPyzzMean = c1o8 * (mxxyPyzz_SWB + mxxyPyzz_SWT + mxxyPyzz_SET + mxxyPyzz_SEB + mxxyPyzz_NWB + mxxyPyzz_NWT + mxxyPyzz_NET + mxxyPyzz_NEB);
+	  real mxxyMyzzMean = c1o8 * (mxxyMyzz_SWB + mxxyMyzz_SWT + mxxyMyzz_SET + mxxyMyzz_SEB + mxxyMyzz_NWB + mxxyMyzz_NWT + mxxyMyzz_NET + mxxyMyzz_NEB);
+	  real mxxzPyyzMean = c1o8 * (mxxzPyyz_SWB + mxxzPyyz_SWT + mxxzPyyz_SET + mxxzPyyz_SEB + mxxzPyyz_NWB + mxxzPyyz_NWT + mxxzPyyz_NET + mxxzPyyz_NEB);
+	  real mxxzMyyzMean = c1o8 * (mxxzMyyz_SWB + mxxzMyyz_SWT + mxxzMyyz_SET + mxxzMyyz_SEB + mxxzMyyz_NWB + mxxzMyyz_NWT + mxxzMyyz_NET + mxxzMyyz_NEB);
+	  real mxyyPxzzMean = c1o8 * (mxyyPxzz_SWB + mxyyPxzz_SWT + mxyyPxzz_SET + mxyyPxzz_SEB + mxyyPxzz_NWB + mxyyPxzz_NWT + mxyyPxzz_NET + mxyyPxzz_NEB);
+	  real mxyyMxzzMean = c1o8 * (mxyyMxzz_SWB + mxyyMxzz_SWT + mxyyMxzz_SET + mxyyMxzz_SEB + mxyyMxzz_NWB + mxyyMxzz_NWT + mxyyMxzz_NET + mxyyMxzz_NEB);
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //kxyFromfcNEQ_SWB    = zero;
 	  //kyzFromfcNEQ_SWB    = zero;
@@ -4820,12 +4820,12 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
       //bxyz=-vx2_NEB + vx2_NET + vx2_NWB - vx2_NWT + vx2_SEB - vx2_SET - vx2_SWB + vx2_SWT;
       //cxyz=-vx3_NEB + vx3_NET + vx3_NWB - vx3_NWT + vx3_SEB - vx3_SET - vx3_SWB + vx3_SWT;
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage	 = zero;
-	  doubflo kyzAverage	 = zero;
-	  doubflo kxzAverage	 = zero;
-	  doubflo kxxMyyAverage	 = zero;
-	  doubflo kxxMzzAverage	 = zero;
-	  //doubflo kxyAverage	 =(kxyFromfcNEQ_SWB+
+	  real kxyAverage	 = zero;
+	  real kyzAverage	 = zero;
+	  real kxzAverage	 = zero;
+	  real kxxMyyAverage	 = zero;
+	  real kxxMzzAverage	 = zero;
+	  //real kxyAverage	 =(kxyFromfcNEQ_SWB+
 			//				   kxyFromfcNEQ_SWT+
 			//				   kxyFromfcNEQ_SET+
 			//				   kxyFromfcNEQ_SEB+
@@ -4833,7 +4833,7 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 			//				   kxyFromfcNEQ_NWT+
 			//				   kxyFromfcNEQ_NET+
 			//				   kxyFromfcNEQ_NEB)*c1o8-(ay+bx);
-	  //doubflo kyzAverage	 =(kyzFromfcNEQ_SWB+
+	  //real kyzAverage	 =(kyzFromfcNEQ_SWB+
 			//				   kyzFromfcNEQ_SWT+
 			//				   kyzFromfcNEQ_SET+
 			//				   kyzFromfcNEQ_SEB+
@@ -4841,7 +4841,7 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 			//				   kyzFromfcNEQ_NWT+
 			//				   kyzFromfcNEQ_NET+
 			//				   kyzFromfcNEQ_NEB)*c1o8-(bz+cy);
-	  //doubflo kxzAverage	 =(kxzFromfcNEQ_SWB+
+	  //real kxzAverage	 =(kxzFromfcNEQ_SWB+
 			//				   kxzFromfcNEQ_SWT+
 			//				   kxzFromfcNEQ_SET+
 			//				   kxzFromfcNEQ_SEB+
@@ -4849,7 +4849,7 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 			//				   kxzFromfcNEQ_NWT+
 			//				   kxzFromfcNEQ_NET+
 			//				   kxzFromfcNEQ_NEB)*c1o8-(az+cx);
-	  //doubflo kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
+	  //real kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
 			//				   kxxMyyFromfcNEQ_SWT+
 			//				   kxxMyyFromfcNEQ_SET+
 			//				   kxxMyyFromfcNEQ_SEB+
@@ -4857,7 +4857,7 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 			//				   kxxMyyFromfcNEQ_NWT+
 			//				   kxxMyyFromfcNEQ_NET+
 			//				   kxxMyyFromfcNEQ_NEB)*c1o8-(ax-by);
-	  //doubflo kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
+	  //real kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
 			//				   kxxMzzFromfcNEQ_SWT+
 			//				   kxxMzzFromfcNEQ_SET+
 			//				   kxxMzzFromfcNEQ_SEB+
@@ -4880,7 +4880,7 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 	  //dxyz =  -press_NEB + press_NET + press_NWB - press_NWT + press_SEB - press_SET - press_SWB + press_SWT;
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //drho
-	  doubflo LapRho = ((xoff != zero) || (yoff != zero) || (zoff != zero)) ? zero : -three*(ax*ax + by*by + cz*cz) - six * (bx*ay + cx*az + cy*bz); 
+	  real LapRho = ((xoff != zero) || (yoff != zero) || (zoff != zero)) ? zero : -three*(ax*ax + by*by + cz*cz) - six * (bx*ay + cx*az + cy*bz); 
 	  d0   = ( drho_NEB + drho_NET + drho_NWB + drho_NWT + drho_SEB + drho_SET + drho_SWB + drho_SWT - two*LapRho) * c1o8;
 	  dx   = ( drho_NEB + drho_NET - drho_NWB - drho_NWT + drho_SEB + drho_SET - drho_SWB - drho_SWT) * c1o4;
 	  dy   = ( drho_NEB + drho_NET + drho_NWB + drho_NWT - drho_SEB - drho_SET - drho_SWB - drho_SWT) * c1o4;
@@ -4976,13 +4976,13 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 	  mfcaa = zero;
 	  mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	  //doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  //doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  //doubflo O3 = two - o;
-	  //doubflo residu, residutmp;
+	  //real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	  //real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  //real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  //real O3 = two - o;
+	  //real residu, residutmp;
 	  //residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  //doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  //real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -4994,9 +4994,9 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 	  //y = 0.;
 	  //z = 0.;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //press = press_NET * (c1o8 - c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
 			//  press_NWT * (c1o8 + c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
@@ -5388,8 +5388,8 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC, 
-														doubflo* DF, 
+extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(real* DC, 
+														real* DF, 
 														unsigned int* neighborCX,
 														unsigned int* neighborCY,
 														unsigned int* neighborCZ,
@@ -5402,16 +5402,16 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 														unsigned int* posC, 
 														unsigned int* posFSWB, 
 														unsigned int kFC, 
-														doubflo omCoarse, 
-														doubflo omFine, 
-														doubflo nu, 
+														real omCoarse, 
+														real omFine, 
+														real nu, 
 														unsigned int nxC, 
 														unsigned int nyC, 
 														unsigned int nxF, 
 														unsigned int nyF,
 														OffFC offFC)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -5442,7 +5442,7 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -5517,55 +5517,55 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = two;
-   doubflo omegaS = omFine;//-omFine;
-   doubflo o  = omCoarse;//-omCoarse;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
+   real        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
 	//////////////////////////////////////////////////////////////////////////////////////
-    doubflo	mfcbb, mfabb, mfbcb, mfbab, mfbbc, mfbba, mfccb, mfaab, mfcab, mfacb, mfcbc, mfaba, mfcba, mfabc, mfbcc, mfbaa, mfbca, mfbac, mfbbb, mfccc, mfaac, mfcac, mfacc, mfcca, mfaaa, mfcaa, mfaca;
-	doubflo wadjust;
-	doubflo qudricLimitP = 0.01f;// * 0.0001f;
-	doubflo qudricLimitM = 0.01f;// * 0.0001f;
-	doubflo qudricLimitD = 0.01f;// * 0.001f;
-	doubflo omega = omFine;
+    real	mfcbb, mfabb, mfbcb, mfbab, mfbbc, mfbba, mfccb, mfaab, mfcab, mfacb, mfcbc, mfaba, mfcba, mfabc, mfbcc, mfbaa, mfbca, mfbac, mfbbb, mfccc, mfaac, mfcac, mfacc, mfcca, mfaaa, mfcaa, mfaca;
+	real wadjust;
+	real qudricLimitP = 0.01f;// * 0.0001f;
+	real qudricLimitM = 0.01f;// * 0.0001f;
+	real qudricLimitD = 0.01f;// * 0.001f;
+	real omega = omFine;
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	doubflo NeqOn = one;
-	doubflo drho, rho;
+	real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	real NeqOn = one;
+	real drho, rho;
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	doubflo OxxPyyPzz;
-	doubflo OxyyPxzz;
-	doubflo OxyyMxzz;
-	doubflo Oxyz    ;
-	doubflo O4, O5, O6;
-	doubflo CUMcbb, CUMbcb, CUMbbc, CUMcca, CUMcac, CUMacc, CUMbcc, CUMcbc, CUMccb, CUMccc;
+	real OxxPyyPzz;
+	real OxyyPxzz;
+	real OxyyMxzz;
+	real Oxyz    ;
+	real O4, O5, O6;
+	real CUMcbb, CUMbcb, CUMbbc, CUMcca, CUMcac, CUMacc, CUMbcc, CUMcbc, CUMccb, CUMccc;
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
    if(k<kFC)
@@ -5931,13 +5931,13 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SWB    = mfbbb;
-			doubflo mxxyPyzz_SWB = mxxyPyzz;
-			doubflo mxxyMyzz_SWB = mxxyMyzz;
-			doubflo mxxzPyyz_SWB = mxxzPyyz;
-			doubflo mxxzMyyz_SWB = mxxzMyyz;
-			doubflo mxyyPxzz_SWB = mxyyPxzz;
-			doubflo mxyyMxzz_SWB = mxyyMxzz;
+			real mfbbb_SWB    = mfbbb;
+			real mxxyPyzz_SWB = mxxyPyzz;
+			real mxxyMyzz_SWB = mxxyMyzz;
+			real mxxzPyyz_SWB = mxxzPyyz;
+			real mxxzMyyz_SWB = mxxzMyyz;
+			real mxyyPxzz_SWB = mxyyPxzz;
+			real mxyyMxzz_SWB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -6338,13 +6338,13 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SWT    = mfbbb;
-			doubflo mxxyPyzz_SWT = mxxyPyzz;
-			doubflo mxxyMyzz_SWT = mxxyMyzz;
-			doubflo mxxzPyyz_SWT = mxxzPyyz;
-			doubflo mxxzMyyz_SWT = mxxzMyyz;
-			doubflo mxyyPxzz_SWT = mxyyPxzz;
-			doubflo mxyyMxzz_SWT = mxyyMxzz;
+			real mfbbb_SWT    = mfbbb;
+			real mxxyPyzz_SWT = mxxyPyzz;
+			real mxxyMyzz_SWT = mxxyMyzz;
+			real mxxzPyyz_SWT = mxxzPyyz;
+			real mxxzMyyz_SWT = mxxzMyyz;
+			real mxyyPxzz_SWT = mxyyPxzz;
+			real mxyyMxzz_SWT = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -6744,13 +6744,13 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SET    = mfbbb;
-			doubflo mxxyPyzz_SET = mxxyPyzz;
-			doubflo mxxyMyzz_SET = mxxyMyzz;
-			doubflo mxxzPyyz_SET = mxxzPyyz;
-			doubflo mxxzMyyz_SET = mxxzMyyz;
-			doubflo mxyyPxzz_SET = mxyyPxzz;
-			doubflo mxyyMxzz_SET = mxyyMxzz;
+			real mfbbb_SET    = mfbbb;
+			real mxxyPyzz_SET = mxxyPyzz;
+			real mxxyMyzz_SET = mxxyMyzz;
+			real mxxzPyyz_SET = mxxzPyyz;
+			real mxxzMyyz_SET = mxxzMyyz;
+			real mxyyPxzz_SET = mxyyPxzz;
+			real mxyyMxzz_SET = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -7150,13 +7150,13 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_SEB    = mfbbb;
-			doubflo mxxyPyzz_SEB = mxxyPyzz;
-			doubflo mxxyMyzz_SEB = mxxyMyzz;
-			doubflo mxxzPyyz_SEB = mxxzPyyz;
-			doubflo mxxzMyyz_SEB = mxxzMyyz;
-			doubflo mxyyPxzz_SEB = mxyyPxzz;
-			doubflo mxyyMxzz_SEB = mxyyMxzz;
+			real mfbbb_SEB    = mfbbb;
+			real mxxyPyzz_SEB = mxxyPyzz;
+			real mxxyMyzz_SEB = mxxyMyzz;
+			real mxxzPyyz_SEB = mxxzPyyz;
+			real mxxzMyyz_SEB = mxxzMyyz;
+			real mxyyPxzz_SEB = mxyyPxzz;
+			real mxyyMxzz_SEB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -7566,13 +7566,13 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NWB    = mfbbb;
-			doubflo mxxyPyzz_NWB = mxxyPyzz;
-			doubflo mxxyMyzz_NWB = mxxyMyzz;
-			doubflo mxxzPyyz_NWB = mxxzPyyz;
-			doubflo mxxzMyyz_NWB = mxxzMyyz;
-			doubflo mxyyPxzz_NWB = mxyyPxzz;
-			doubflo mxyyMxzz_NWB = mxyyMxzz;
+			real mfbbb_NWB    = mfbbb;
+			real mxxyPyzz_NWB = mxxyPyzz;
+			real mxxyMyzz_NWB = mxxyMyzz;
+			real mxxzPyyz_NWB = mxxzPyyz;
+			real mxxzMyyz_NWB = mxxzMyyz;
+			real mxyyPxzz_NWB = mxyyPxzz;
+			real mxyyMxzz_NWB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -7972,13 +7972,13 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NWT    = mfbbb;
-			doubflo mxxyPyzz_NWT = mxxyPyzz;
-			doubflo mxxyMyzz_NWT = mxxyMyzz;
-			doubflo mxxzPyyz_NWT = mxxzPyyz;
-			doubflo mxxzMyyz_NWT = mxxzMyyz;
-			doubflo mxyyPxzz_NWT = mxyyPxzz;
-			doubflo mxyyMxzz_NWT = mxyyMxzz;
+			real mfbbb_NWT    = mfbbb;
+			real mxxyPyzz_NWT = mxxyPyzz;
+			real mxxyMyzz_NWT = mxxyMyzz;
+			real mxxzPyyz_NWT = mxxzPyyz;
+			real mxxzMyyz_NWT = mxxzMyyz;
+			real mxyyPxzz_NWT = mxyyPxzz;
+			real mxyyMxzz_NWT = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -8378,13 +8378,13 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NET    = mfbbb;
-			doubflo mxxyPyzz_NET = mxxyPyzz;
-			doubflo mxxyMyzz_NET = mxxyMyzz;
-			doubflo mxxzPyyz_NET = mxxzPyyz;
-			doubflo mxxzMyyz_NET = mxxzMyyz;
-			doubflo mxyyPxzz_NET = mxyyPxzz;
-			doubflo mxyyMxzz_NET = mxyyMxzz;
+			real mfbbb_NET    = mfbbb;
+			real mxxyPyzz_NET = mxxyPyzz;
+			real mxxyMyzz_NET = mxxyMyzz;
+			real mxxzPyyz_NET = mxxzPyyz;
+			real mxxzMyyz_NET = mxxzMyyz;
+			real mxyyPxzz_NET = mxyyPxzz;
+			real mxyyMxzz_NET = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -8784,13 +8784,13 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 			//////////////////////////////////////////////////////////////////////////
 			//exclusive for this source node
-			doubflo mfbbb_NEB    = mfbbb;
-			doubflo mxxyPyzz_NEB = mxxyPyzz;
-			doubflo mxxyMyzz_NEB = mxxyMyzz;
-			doubflo mxxzPyyz_NEB = mxxzPyyz;
-			doubflo mxxzMyyz_NEB = mxxzMyyz;
-			doubflo mxyyPxzz_NEB = mxyyPxzz;
-			doubflo mxyyMxzz_NEB = mxyyMxzz;
+			real mfbbb_NEB    = mfbbb;
+			real mxxyPyzz_NEB = mxxyPyzz;
+			real mxxyMyzz_NEB = mxxyMyzz;
+			real mxxzPyyz_NEB = mxxzPyyz;
+			real mxxzMyyz_NEB = mxxzMyyz;
+			real mxyyPxzz_NEB = mxyyPxzz;
+			real mxyyMxzz_NEB = mxyyMxzz;
 			//////////////////////////////////////////////////////////////////////////
 
 
@@ -8847,13 +8847,13 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo mfbbbMean    = c1o8 * (mfbbb_SWB    + mfbbb_SWT    + mfbbb_SET    + mfbbb_SEB    + mfbbb_NWB    + mfbbb_NWT    + mfbbb_NET    + mfbbb_NEB);
-	  doubflo mxxyPyzzMean = c1o8 * (mxxyPyzz_SWB + mxxyPyzz_SWT + mxxyPyzz_SET + mxxyPyzz_SEB + mxxyPyzz_NWB + mxxyPyzz_NWT + mxxyPyzz_NET + mxxyPyzz_NEB);
-	  doubflo mxxyMyzzMean = c1o8 * (mxxyMyzz_SWB + mxxyMyzz_SWT + mxxyMyzz_SET + mxxyMyzz_SEB + mxxyMyzz_NWB + mxxyMyzz_NWT + mxxyMyzz_NET + mxxyMyzz_NEB);
-	  doubflo mxxzPyyzMean = c1o8 * (mxxzPyyz_SWB + mxxzPyyz_SWT + mxxzPyyz_SET + mxxzPyyz_SEB + mxxzPyyz_NWB + mxxzPyyz_NWT + mxxzPyyz_NET + mxxzPyyz_NEB);
-	  doubflo mxxzMyyzMean = c1o8 * (mxxzMyyz_SWB + mxxzMyyz_SWT + mxxzMyyz_SET + mxxzMyyz_SEB + mxxzMyyz_NWB + mxxzMyyz_NWT + mxxzMyyz_NET + mxxzMyyz_NEB);
-	  doubflo mxyyPxzzMean = c1o8 * (mxyyPxzz_SWB + mxyyPxzz_SWT + mxyyPxzz_SET + mxyyPxzz_SEB + mxyyPxzz_NWB + mxyyPxzz_NWT + mxyyPxzz_NET + mxyyPxzz_NEB);
-	  doubflo mxyyMxzzMean = c1o8 * (mxyyMxzz_SWB + mxyyMxzz_SWT + mxyyMxzz_SET + mxyyMxzz_SEB + mxyyMxzz_NWB + mxyyMxzz_NWT + mxyyMxzz_NET + mxyyMxzz_NEB);
+	  real mfbbbMean    = c1o8 * (mfbbb_SWB    + mfbbb_SWT    + mfbbb_SET    + mfbbb_SEB    + mfbbb_NWB    + mfbbb_NWT    + mfbbb_NET    + mfbbb_NEB);
+	  real mxxyPyzzMean = c1o8 * (mxxyPyzz_SWB + mxxyPyzz_SWT + mxxyPyzz_SET + mxxyPyzz_SEB + mxxyPyzz_NWB + mxxyPyzz_NWT + mxxyPyzz_NET + mxxyPyzz_NEB);
+	  real mxxyMyzzMean = c1o8 * (mxxyMyzz_SWB + mxxyMyzz_SWT + mxxyMyzz_SET + mxxyMyzz_SEB + mxxyMyzz_NWB + mxxyMyzz_NWT + mxxyMyzz_NET + mxxyMyzz_NEB);
+	  real mxxzPyyzMean = c1o8 * (mxxzPyyz_SWB + mxxzPyyz_SWT + mxxzPyyz_SET + mxxzPyyz_SEB + mxxzPyyz_NWB + mxxzPyyz_NWT + mxxzPyyz_NET + mxxzPyyz_NEB);
+	  real mxxzMyyzMean = c1o8 * (mxxzMyyz_SWB + mxxzMyyz_SWT + mxxzMyyz_SET + mxxzMyyz_SEB + mxxzMyyz_NWB + mxxzMyyz_NWT + mxxzMyyz_NET + mxxzMyyz_NEB);
+	  real mxyyPxzzMean = c1o8 * (mxyyPxzz_SWB + mxyyPxzz_SWT + mxyyPxzz_SET + mxyyPxzz_SEB + mxyyPxzz_NWB + mxyyPxzz_NWT + mxyyPxzz_NET + mxyyPxzz_NEB);
+	  real mxyyMxzzMean = c1o8 * (mxyyMxzz_SWB + mxyyMxzz_SWT + mxyyMxzz_SET + mxyyMxzz_SEB + mxyyMxzz_NWB + mxyyMxzz_NWT + mxyyMxzz_NET + mxyyMxzz_NEB);
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //kxyFromfcNEQ_SWB    = zero;
 	  //kyzFromfcNEQ_SWB    = zero;
@@ -9009,12 +9009,12 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
       //bxyz=-vx2_NEB + vx2_NET + vx2_NWB - vx2_NWT + vx2_SEB - vx2_SET - vx2_SWB + vx2_SWT;
       //cxyz=-vx3_NEB + vx3_NET + vx3_NWB - vx3_NWT + vx3_SEB - vx3_SET - vx3_SWB + vx3_SWT;
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage	 = zero;
-	  doubflo kyzAverage	 = zero;
-	  doubflo kxzAverage	 = zero;
-	  doubflo kxxMyyAverage	 = zero;
-	  doubflo kxxMzzAverage	 = zero;
-	  //doubflo kxyAverage	 =(kxyFromfcNEQ_SWB+
+	  real kxyAverage	 = zero;
+	  real kyzAverage	 = zero;
+	  real kxzAverage	 = zero;
+	  real kxxMyyAverage	 = zero;
+	  real kxxMzzAverage	 = zero;
+	  //real kxyAverage	 =(kxyFromfcNEQ_SWB+
 			//				   kxyFromfcNEQ_SWT+
 			//				   kxyFromfcNEQ_SET+
 			//				   kxyFromfcNEQ_SEB+
@@ -9022,7 +9022,7 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 			//				   kxyFromfcNEQ_NWT+
 			//				   kxyFromfcNEQ_NET+
 			//				   kxyFromfcNEQ_NEB)*c1o8-(ay+bx);
-	  //doubflo kyzAverage	 =(kyzFromfcNEQ_SWB+
+	  //real kyzAverage	 =(kyzFromfcNEQ_SWB+
 			//				   kyzFromfcNEQ_SWT+
 			//				   kyzFromfcNEQ_SET+
 			//				   kyzFromfcNEQ_SEB+
@@ -9030,7 +9030,7 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 			//				   kyzFromfcNEQ_NWT+
 			//				   kyzFromfcNEQ_NET+
 			//				   kyzFromfcNEQ_NEB)*c1o8-(bz+cy);
-	  //doubflo kxzAverage	 =(kxzFromfcNEQ_SWB+
+	  //real kxzAverage	 =(kxzFromfcNEQ_SWB+
 			//				   kxzFromfcNEQ_SWT+
 			//				   kxzFromfcNEQ_SET+
 			//				   kxzFromfcNEQ_SEB+
@@ -9038,7 +9038,7 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 			//				   kxzFromfcNEQ_NWT+
 			//				   kxzFromfcNEQ_NET+
 			//				   kxzFromfcNEQ_NEB)*c1o8-(az+cx);
-	  //doubflo kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
+	  //real kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
 			//				   kxxMyyFromfcNEQ_SWT+
 			//				   kxxMyyFromfcNEQ_SET+
 			//				   kxxMyyFromfcNEQ_SEB+
@@ -9046,7 +9046,7 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 			//				   kxxMyyFromfcNEQ_NWT+
 			//				   kxxMyyFromfcNEQ_NET+
 			//				   kxxMyyFromfcNEQ_NEB)*c1o8-(ax-by);
-	  //doubflo kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
+	  //real kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
 			//				   kxxMzzFromfcNEQ_SWT+
 			//				   kxxMzzFromfcNEQ_SET+
 			//				   kxxMzzFromfcNEQ_SEB+
@@ -9069,7 +9069,7 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 	  //dxyz =  -press_NEB + press_NET + press_NWB - press_NWT + press_SEB - press_SET - press_SWB + press_SWT;
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //drho
-	  doubflo LapRho = ((xoff != zero) || (yoff != zero) || (zoff != zero)) ? zero : -three*(ax*ax + by*by + cz*cz) - six * (bx*ay + cx*az + cy*bz); 
+	  real LapRho = ((xoff != zero) || (yoff != zero) || (zoff != zero)) ? zero : -three*(ax*ax + by*by + cz*cz) - six * (bx*ay + cx*az + cy*bz); 
 	  d0   = ( drho_NEB + drho_NET + drho_NWB + drho_NWT + drho_SEB + drho_SET + drho_SWB + drho_SWT - two*LapRho) * c1o8;
 	  dx   = ( drho_NEB + drho_NET - drho_NWB - drho_NWT + drho_SEB + drho_SET - drho_SWB - drho_SWT) * c1o4;
 	  dy   = ( drho_NEB + drho_NET + drho_NWB + drho_NWT - drho_SEB - drho_SET - drho_SWB - drho_SWT) * c1o4;
@@ -9165,13 +9165,13 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 	  mfcaa = zero;
 	  mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	  //doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  //doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  //doubflo O3 = two - o;
-	  //doubflo residu, residutmp;
+	  //real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	  //real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  //real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  //real O3 = two - o;
+	  //real residu, residutmp;
 	  //residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  //doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  //real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -9183,9 +9183,9 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 	  //y = 0.;
 	  //z = 0.;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //press = press_NET * (c1o8 - c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
 			//  press_NWT * (c1o8 + c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
@@ -9576,8 +9576,8 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFC_RhoSq_comp_27(doubflo* DC, 
-												 doubflo* DF, 
+extern "C" __global__ void scaleFC_RhoSq_comp_27(real* DC, 
+												 real* DF, 
 												 unsigned int* neighborCX,
 												 unsigned int* neighborCY,
 												 unsigned int* neighborCZ,
@@ -9590,16 +9590,16 @@ extern "C" __global__ void scaleFC_RhoSq_comp_27(doubflo* DC,
 												 unsigned int* posC, 
 												 unsigned int* posFSWB, 
 												 unsigned int kFC, 
-												 doubflo omCoarse, 
-												 doubflo omFine, 
-												 doubflo nu, 
+												 real omCoarse, 
+												 real omFine, 
+												 real nu, 
 												 unsigned int nxC, 
 												 unsigned int nyC, 
 												 unsigned int nxF, 
 												 unsigned int nyF,
 												 OffFC offFC)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -9630,7 +9630,7 @@ extern "C" __global__ void scaleFC_RhoSq_comp_27(doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -9705,36 +9705,36 @@ extern "C" __global__ void scaleFC_RhoSq_comp_27(doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = two;
-   doubflo omegaS = omFine;//-omFine;
-   doubflo o  = omCoarse;//-omCoarse;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
+   real        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
 
    if(k<kFC)
    {
@@ -10337,12 +10337,12 @@ extern "C" __global__ void scaleFC_RhoSq_comp_27(doubflo* DC,
       //bxyz=-vx2_NEB + vx2_NET + vx2_NWB - vx2_NWT + vx2_SEB - vx2_SET - vx2_SWB + vx2_SWT;
       //cxyz=-vx3_NEB + vx3_NET + vx3_NWB - vx3_NWT + vx3_SEB - vx3_SET - vx3_SWB + vx3_SWT;
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage	 = zero;
-	  doubflo kyzAverage	 = zero;
-	  doubflo kxzAverage	 = zero;
-	  doubflo kxxMyyAverage	 = zero;
-	  doubflo kxxMzzAverage	 = zero;
-	  //doubflo kxyAverage	 =(kxyFromfcNEQ_SWB+
+	  real kxyAverage	 = zero;
+	  real kyzAverage	 = zero;
+	  real kxzAverage	 = zero;
+	  real kxxMyyAverage	 = zero;
+	  real kxxMzzAverage	 = zero;
+	  //real kxyAverage	 =(kxyFromfcNEQ_SWB+
 			//				   kxyFromfcNEQ_SWT+
 			//				   kxyFromfcNEQ_SET+
 			//				   kxyFromfcNEQ_SEB+
@@ -10350,7 +10350,7 @@ extern "C" __global__ void scaleFC_RhoSq_comp_27(doubflo* DC,
 			//				   kxyFromfcNEQ_NWT+
 			//				   kxyFromfcNEQ_NET+
 			//				   kxyFromfcNEQ_NEB)*c1o8-(ay+bx);
-	  //doubflo kyzAverage	 =(kyzFromfcNEQ_SWB+
+	  //real kyzAverage	 =(kyzFromfcNEQ_SWB+
 			//				   kyzFromfcNEQ_SWT+
 			//				   kyzFromfcNEQ_SET+
 			//				   kyzFromfcNEQ_SEB+
@@ -10358,7 +10358,7 @@ extern "C" __global__ void scaleFC_RhoSq_comp_27(doubflo* DC,
 			//				   kyzFromfcNEQ_NWT+
 			//				   kyzFromfcNEQ_NET+
 			//				   kyzFromfcNEQ_NEB)*c1o8-(bz+cy);
-	  //doubflo kxzAverage	 =(kxzFromfcNEQ_SWB+
+	  //real kxzAverage	 =(kxzFromfcNEQ_SWB+
 			//				   kxzFromfcNEQ_SWT+
 			//				   kxzFromfcNEQ_SET+
 			//				   kxzFromfcNEQ_SEB+
@@ -10366,7 +10366,7 @@ extern "C" __global__ void scaleFC_RhoSq_comp_27(doubflo* DC,
 			//				   kxzFromfcNEQ_NWT+
 			//				   kxzFromfcNEQ_NET+
 			//				   kxzFromfcNEQ_NEB)*c1o8-(az+cx);
-	  //doubflo kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
+	  //real kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
 			//				   kxxMyyFromfcNEQ_SWT+
 			//				   kxxMyyFromfcNEQ_SET+
 			//				   kxxMyyFromfcNEQ_SEB+
@@ -10374,7 +10374,7 @@ extern "C" __global__ void scaleFC_RhoSq_comp_27(doubflo* DC,
 			//				   kxxMyyFromfcNEQ_NWT+
 			//				   kxxMyyFromfcNEQ_NET+
 			//				   kxxMyyFromfcNEQ_NEB)*c1o8-(ax-by);
-	  //doubflo kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
+	  //real kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
 			//				   kxxMzzFromfcNEQ_SWT+
 			//				   kxxMzzFromfcNEQ_SET+
 			//				   kxxMzzFromfcNEQ_SEB+
@@ -10397,7 +10397,7 @@ extern "C" __global__ void scaleFC_RhoSq_comp_27(doubflo* DC,
 	  //dxyz =  -press_NEB + press_NET + press_NWB - press_NWT + press_SEB - press_SET - press_SWB + press_SWT;
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //drho
-	  doubflo LapRho = ((xoff != zero) || (yoff != zero) || (zoff != zero)) ? zero : -three*(ax*ax + by*by + cz*cz) - six * (bx*ay + cx*az + cy*bz); 
+	  real LapRho = ((xoff != zero) || (yoff != zero) || (zoff != zero)) ? zero : -three*(ax*ax + by*by + cz*cz) - six * (bx*ay + cx*az + cy*bz); 
 	  d0   = ( drho_NEB + drho_NET + drho_NWB + drho_NWT + drho_SEB + drho_SET + drho_SWB + drho_SWT - two*LapRho) * c1o8;
 	  dx   = ( drho_NEB + drho_NET - drho_NWB - drho_NWT + drho_SEB + drho_SET - drho_SWB - drho_SWT) * c1o4;
 	  dy   = ( drho_NEB + drho_NET + drho_NWB + drho_NWT - drho_SEB - drho_SET - drho_SWB - drho_SWT) * c1o4;
@@ -10465,41 +10465,41 @@ extern "C" __global__ void scaleFC_RhoSq_comp_27(doubflo* DC,
 	  //cxz=zero;
 	  //cyz=zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	  
-	  doubflo mfcbb = zero;
-	  doubflo mfabb = zero;
-	  doubflo mfbcb = zero;
-	  doubflo mfbab = zero;
-	  doubflo mfbbc = zero;
-	  doubflo mfbba = zero;
-	  doubflo mfccb = zero;
-	  doubflo mfaab = zero;
-	  doubflo mfcab = zero;
-	  doubflo mfacb = zero;
-	  doubflo mfcbc = zero;
-	  doubflo mfaba = zero;
-	  doubflo mfcba = zero;
-	  doubflo mfabc = zero;
-	  doubflo mfbcc = zero;
-	  doubflo mfbaa = zero;
-	  doubflo mfbca = zero;
-	  doubflo mfbac = zero;
-	  doubflo mfbbb = zero;
-	  doubflo mfccc = zero;
-	  doubflo mfaac = zero;
-	  doubflo mfcac = zero;
-	  doubflo mfacc = zero;
-	  doubflo mfcca = zero;
-	  doubflo mfaaa = zero;
-	  doubflo mfcaa = zero;
-	  doubflo mfaca = zero;
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	  doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  doubflo O3 = two - o;
-	  doubflo residu, residutmp;
+	  real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  real O3 = two - o;
+	  real residu, residutmp;
 	  residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -10511,9 +10511,9 @@ extern "C" __global__ void scaleFC_RhoSq_comp_27(doubflo* DC,
 	  //y = 0.;
 	  //z = 0.;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //press = press_NET * (c1o8 - c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
 			//  press_NWT * (c1o8 + c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
@@ -10930,8 +10930,8 @@ extern "C" __global__ void scaleFC_RhoSq_comp_27(doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFC_staggered_time_comp_27(   doubflo* DC, 
-															 doubflo* DF, 
+extern "C" __global__ void scaleFC_staggered_time_comp_27(   real* DC, 
+															 real* DF, 
 															 unsigned int* neighborCX,
 															 unsigned int* neighborCY,
 															 unsigned int* neighborCZ,
@@ -10944,16 +10944,16 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27(   doubflo* DC,
 															 unsigned int* posC, 
 															 unsigned int* posFSWB, 
 															 unsigned int kFC, 
-															 doubflo omCoarse, 
-															 doubflo omFine, 
-															 doubflo nu, 
+															 real omCoarse, 
+															 real omFine, 
+															 real nu, 
 															 unsigned int nxC, 
 															 unsigned int nyC, 
 															 unsigned int nxF, 
 															 unsigned int nyF,
 															 OffFC offFC)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -10984,7 +10984,7 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27(   doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -11059,36 +11059,36 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27(   doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = two;
-   doubflo omegaS = omFine;//-omFine;
-   doubflo o  = omCoarse;//-omCoarse;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
+   real        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
 
    if(k<kFC)
    {
@@ -11599,10 +11599,10 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27(   doubflo* DC,
 		 // ftseC  = &DC[dirBNW *size_MatC];
 	  // }
 
- 	 // doubflo rho_tmp;
-	  //doubflo vx1_tmp;
-	  //doubflo vx2_tmp;
-	  //doubflo vx3_tmp;
+ 	 // real rho_tmp;
+	  //real vx1_tmp;
+	  //real vx2_tmp;
+	  //real vx3_tmp;
 
    //  //////////////////////////////////////////////////////////////////////////
    //   xoff = offFC.xOffFC[k];
@@ -12471,7 +12471,7 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27(   doubflo* DC,
       //bxyz=-vx2_NEB + vx2_NET + vx2_NWB - vx2_NWT + vx2_SEB - vx2_SET - vx2_SWB + vx2_SWT;
       //cxyz=-vx3_NEB + vx3_NET + vx3_NWB - vx3_NWT + vx3_SEB - vx3_SET - vx3_SWB + vx3_SWT;
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage	 =(kxyFromfcNEQ_SWB+
+	  real kxyAverage	 =(kxyFromfcNEQ_SWB+
 							   kxyFromfcNEQ_SWT+
 							   kxyFromfcNEQ_SET+
 							   kxyFromfcNEQ_SEB+
@@ -12479,7 +12479,7 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27(   doubflo* DC,
 							   kxyFromfcNEQ_NWT+
 							   kxyFromfcNEQ_NET+
 							   kxyFromfcNEQ_NEB)*c1o8-(ay+bx);
-	  doubflo kyzAverage	 =(kyzFromfcNEQ_SWB+
+	  real kyzAverage	 =(kyzFromfcNEQ_SWB+
 							   kyzFromfcNEQ_SWT+
 							   kyzFromfcNEQ_SET+
 							   kyzFromfcNEQ_SEB+
@@ -12487,7 +12487,7 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27(   doubflo* DC,
 							   kyzFromfcNEQ_NWT+
 							   kyzFromfcNEQ_NET+
 							   kyzFromfcNEQ_NEB)*c1o8-(bz+cy);
-	  doubflo kxzAverage	 =(kxzFromfcNEQ_SWB+
+	  real kxzAverage	 =(kxzFromfcNEQ_SWB+
 							   kxzFromfcNEQ_SWT+
 							   kxzFromfcNEQ_SET+
 							   kxzFromfcNEQ_SEB+
@@ -12495,7 +12495,7 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27(   doubflo* DC,
 							   kxzFromfcNEQ_NWT+
 							   kxzFromfcNEQ_NET+
 							   kxzFromfcNEQ_NEB)*c1o8-(az+cx);
-	  doubflo kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
+	  real kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
 							   kxxMyyFromfcNEQ_SWT+
 							   kxxMyyFromfcNEQ_SET+
 							   kxxMyyFromfcNEQ_SEB+
@@ -12503,7 +12503,7 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27(   doubflo* DC,
 							   kxxMyyFromfcNEQ_NWT+
 							   kxxMyyFromfcNEQ_NET+
 							   kxxMyyFromfcNEQ_NEB)*c1o8-(ax-by);
-	  doubflo kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
+	  real kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
 							   kxxMzzFromfcNEQ_SWT+
 							   kxxMzzFromfcNEQ_SET+
 							   kxxMzzFromfcNEQ_SEB+
@@ -12593,41 +12593,41 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27(   doubflo* DC,
 	  //cxz=zero;
 	  //cyz=zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	  
-	  doubflo mfcbb = zero;
-	  doubflo mfabb = zero;
-	  doubflo mfbcb = zero;
-	  doubflo mfbab = zero;
-	  doubflo mfbbc = zero;
-	  doubflo mfbba = zero;
-	  doubflo mfccb = zero;
-	  doubflo mfaab = zero;
-	  doubflo mfcab = zero;
-	  doubflo mfacb = zero;
-	  doubflo mfcbc = zero;
-	  doubflo mfaba = zero;
-	  doubflo mfcba = zero;
-	  doubflo mfabc = zero;
-	  doubflo mfbcc = zero;
-	  doubflo mfbaa = zero;
-	  doubflo mfbca = zero;
-	  doubflo mfbac = zero;
-	  doubflo mfbbb = zero;
-	  doubflo mfccc = zero;
-	  doubflo mfaac = zero;
-	  doubflo mfcac = zero;
-	  doubflo mfacc = zero;
-	  doubflo mfcca = zero;
-	  doubflo mfaaa = zero;
-	  doubflo mfcaa = zero;
-	  doubflo mfaca = zero;
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	  doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  doubflo O3 = two - o;
-	  doubflo residu, residutmp;
+	  real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  real O3 = two - o;
+	  real residu, residutmp;
 	  residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -12639,9 +12639,9 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27(   doubflo* DC,
 	  //y = 0.;
 	  //z = 0.;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //press = press_NET * (c1o8 - c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
 			//  press_NWT * (c1o8 + c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
@@ -13051,8 +13051,8 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27(   doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFC_Fix_comp_27(  doubflo* DC, 
-												 doubflo* DF, 
+extern "C" __global__ void scaleFC_Fix_comp_27(  real* DC, 
+												 real* DF, 
 												 unsigned int* neighborCX,
 												 unsigned int* neighborCY,
 												 unsigned int* neighborCZ,
@@ -13065,16 +13065,16 @@ extern "C" __global__ void scaleFC_Fix_comp_27(  doubflo* DC,
 												 unsigned int* posC, 
 												 unsigned int* posFSWB, 
 												 unsigned int kFC, 
-												 doubflo omCoarse, 
-												 doubflo omFine, 
-												 doubflo nu, 
+												 real omCoarse, 
+												 real omFine, 
+												 real nu, 
 												 unsigned int nxC, 
 												 unsigned int nyC, 
 												 unsigned int nxF, 
 												 unsigned int nyF,
 												 OffFC offFC)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -13105,7 +13105,7 @@ extern "C" __global__ void scaleFC_Fix_comp_27(  doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -13180,37 +13180,37 @@ extern "C" __global__ void scaleFC_Fix_comp_27(  doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = two;
-   doubflo omegaS = omFine;//-omFine;
-   doubflo o  = omCoarse;//-omCoarse;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        vvx, vvy, vvz, vx2, vy2, vz2, drho;
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT, kyyMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT, kyyMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET, kyyMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET, kyyMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB, kyyMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB, kyyMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB, kyyMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB, kyyMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        vvx, vvy, vvz, vx2, vy2, vz2, drho;
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT, kyyMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT, kyyMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET, kyyMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET, kyyMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB, kyyMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB, kyyMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB, kyyMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB, kyyMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
+   real        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
 
    if(k<kFC)
    {
@@ -14308,14 +14308,14 @@ extern "C" __global__ void scaleFC_Fix_comp_27(  doubflo* DC,
       //bxyz=-vx2_NEB + vx2_NET + vx2_NWB - vx2_NWT + vx2_SEB - vx2_SET - vx2_SWB + vx2_SWT;
       //cxyz=-vx3_NEB + vx3_NET + vx3_NWB - vx3_NWT + vx3_SEB - vx3_SET - vx3_SWB + vx3_SWT;
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage = zero;
-	  doubflo kyzAverage = zero;
-	  doubflo kxzAverage = zero;
-	  doubflo kxxMyyAverage = zero;
-	  doubflo kxxMzzAverage = zero;
+	  real kxyAverage = zero;
+	  real kyzAverage = zero;
+	  real kxzAverage = zero;
+	  real kxxMyyAverage = zero;
+	  real kxxMzzAverage = zero;
 
 
-	  //doubflo kxyAverage	 =(kxyFromfcNEQ_SWB+
+	  //real kxyAverage	 =(kxyFromfcNEQ_SWB+
 			//				   kxyFromfcNEQ_SWT+
 			//				   kxyFromfcNEQ_SET+
 			//				   kxyFromfcNEQ_SEB+
@@ -14323,7 +14323,7 @@ extern "C" __global__ void scaleFC_Fix_comp_27(  doubflo* DC,
 			//				   kxyFromfcNEQ_NWT+
 			//				   kxyFromfcNEQ_NET+
 			//				   kxyFromfcNEQ_NEB)*c1o8-(ay+bx);
-	  //doubflo kyzAverage	 =(kyzFromfcNEQ_SWB+
+	  //real kyzAverage	 =(kyzFromfcNEQ_SWB+
 			//				   kyzFromfcNEQ_SWT+
 			//				   kyzFromfcNEQ_SET+
 			//				   kyzFromfcNEQ_SEB+
@@ -14331,7 +14331,7 @@ extern "C" __global__ void scaleFC_Fix_comp_27(  doubflo* DC,
 			//				   kyzFromfcNEQ_NWT+
 			//				   kyzFromfcNEQ_NET+
 			//				   kyzFromfcNEQ_NEB)*c1o8-(bz+cy);
-	  //doubflo kxzAverage	 =(kxzFromfcNEQ_SWB+
+	  //real kxzAverage	 =(kxzFromfcNEQ_SWB+
 			//				   kxzFromfcNEQ_SWT+
 			//				   kxzFromfcNEQ_SET+
 			//				   kxzFromfcNEQ_SEB+
@@ -14339,7 +14339,7 @@ extern "C" __global__ void scaleFC_Fix_comp_27(  doubflo* DC,
 			//				   kxzFromfcNEQ_NWT+
 			//				   kxzFromfcNEQ_NET+
 			//				   kxzFromfcNEQ_NEB)*c1o8-(az+cx);
-	  //doubflo kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
+	  //real kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
 			//				   kxxMyyFromfcNEQ_SWT+
 			//				   kxxMyyFromfcNEQ_SET+
 			//				   kxxMyyFromfcNEQ_SEB+
@@ -14347,7 +14347,7 @@ extern "C" __global__ void scaleFC_Fix_comp_27(  doubflo* DC,
 			//				   kxxMyyFromfcNEQ_NWT+
 			//				   kxxMyyFromfcNEQ_NET+
 			//				   kxxMyyFromfcNEQ_NEB)*c1o8-(ax-by);
-	  //doubflo kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
+	  //real kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
 			//				   kxxMzzFromfcNEQ_SWT+
 			//				   kxxMzzFromfcNEQ_SET+
 			//				   kxxMzzFromfcNEQ_SEB+
@@ -14444,41 +14444,41 @@ extern "C" __global__ void scaleFC_Fix_comp_27(  doubflo* DC,
 	  //cxz=zero;
 	  //cyz=zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	  
-	  doubflo mfcbb = zero;
-	  doubflo mfabb = zero;
-	  doubflo mfbcb = zero;
-	  doubflo mfbab = zero;
-	  doubflo mfbbc = zero;
-	  doubflo mfbba = zero;
-	  doubflo mfccb = zero;
-	  doubflo mfaab = zero;
-	  doubflo mfcab = zero;
-	  doubflo mfacb = zero;
-	  doubflo mfcbc = zero;
-	  doubflo mfaba = zero;
-	  doubflo mfcba = zero;
-	  doubflo mfabc = zero;
-	  doubflo mfbcc = zero;
-	  doubflo mfbaa = zero;
-	  doubflo mfbca = zero;
-	  doubflo mfbac = zero;
-	  doubflo mfbbb = zero;
-	  doubflo mfccc = zero;
-	  doubflo mfaac = zero;
-	  doubflo mfcac = zero;
-	  doubflo mfacc = zero;
-	  doubflo mfcca = zero;
-	  doubflo mfaaa = zero;
-	  doubflo mfcaa = zero;
-	  doubflo mfaca = zero;
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo m0, m1, m2, oMdrho;
-	  doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  doubflo O3 = two - o;
-	  doubflo residu, residutmp;
+	  real m0, m1, m2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  real O3 = two - o;
+	  real residu, residutmp;
 	  residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -14490,9 +14490,9 @@ extern "C" __global__ void scaleFC_Fix_comp_27(  doubflo* DC,
 	  //y = 0.;
 	  //z = 0.;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //press = press_NET * (c1o8 - c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
 			//  press_NWT * (c1o8 + c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
@@ -14527,7 +14527,7 @@ extern "C" __global__ void scaleFC_Fix_comp_27(  doubflo* DC,
 
 	  //two
 	  // linear combinations
-	  doubflo oP = o;// :(
+	  real oP = o;// :(
 	  mxxPyyPzz = mfaaa    -c2o3*(ax+by+cz)*eps_new/oP*(one+press); 
 	  //mxxMyy    = -c2o3*(ax - by)*eps_new/o;
 	  //mxxMzz    = -c2o3*(ax - cz)*eps_new/o;
@@ -14910,8 +14910,8 @@ extern "C" __global__ void scaleFC_Fix_comp_27(  doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFC_NSPress_27(   doubflo* DC, 
-												 doubflo* DF, 
+extern "C" __global__ void scaleFC_NSPress_27(   real* DC, 
+												 real* DF, 
 												 unsigned int* neighborCX,
 												 unsigned int* neighborCY,
 												 unsigned int* neighborCZ,
@@ -14924,16 +14924,16 @@ extern "C" __global__ void scaleFC_NSPress_27(   doubflo* DC,
 												 unsigned int* posC, 
 												 unsigned int* posFSWB, 
 												 unsigned int kFC, 
-												 doubflo omCoarse, 
-												 doubflo omFine, 
-												 doubflo nu, 
+												 real omCoarse, 
+												 real omFine, 
+												 real nu, 
 												 unsigned int nxC, 
 												 unsigned int nyC, 
 												 unsigned int nxF, 
 												 unsigned int nyF,
 												 OffFC offFC)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -14964,7 +14964,7 @@ extern "C" __global__ void scaleFC_NSPress_27(   doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -15039,35 +15039,35 @@ extern "C" __global__ void scaleFC_NSPress_27(   doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = two;
-   doubflo omegaS = omFine;//-omFine;
-   doubflo o  = omCoarse;//-omCoarse;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        press_SWT,drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        press_NWT,drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        press_NET,drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        press_SET,drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        press_SWB,drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        press_NWB,drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        press_NEB,drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        press_SEB,drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press;//,drho,vx1,vx2,vx3;
+   real        press_SWT,drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        press_NWT,drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        press_NET,drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        press_SET,drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        press_SWB,drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        press_NWB,drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        press_NEB,drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        press_SEB,drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
 
    if(k<kFC)
    {
@@ -15691,39 +15691,39 @@ extern "C" __global__ void scaleFC_NSPress_27(   doubflo* DC,
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //  FIX  ///////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo mfcbb = zero;
-	  doubflo mfabb = zero;
-	  doubflo mfbcb = zero;
-	  doubflo mfbab = zero;
-	  doubflo mfbbc = zero;
-	  doubflo mfbba = zero;
-	  doubflo mfccb = zero;
-	  doubflo mfaab = zero;
-	  doubflo mfcab = zero;
-	  doubflo mfacb = zero;
-	  doubflo mfcbc = zero;
-	  doubflo mfaba = zero;
-	  doubflo mfcba = zero;
-	  doubflo mfabc = zero;
-	  doubflo mfbcc = zero;
-	  doubflo mfbaa = zero;
-	  doubflo mfbca = zero;
-	  doubflo mfbac = zero;
-	  doubflo mfbbb = zero;
-	  doubflo mfccc = zero;
-	  doubflo mfaac = zero;
-	  doubflo mfcac = zero;
-	  doubflo mfacc = zero;
-	  doubflo mfcca = zero;
-	  doubflo mfaaa = zero;
-	  doubflo mfcaa = zero;
-	  doubflo mfaca = zero;
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	  doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  doubflo O3 = two - o;
-	  doubflo residu, residutmp;
+	  real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  real O3 = two - o;
+	  real residu, residutmp;
 	  residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -15739,7 +15739,7 @@ extern "C" __global__ void scaleFC_NSPress_27(   doubflo* DC,
 	  press = (press_NET + press_NWT + press_SET + press_SWT + press_NEB + press_NWB + press_SEB + press_SWB) * c1o8;
 	  
 	  if(xoff!=zero || yoff!=zero || zoff!=zero){
-		  doubflo dx, dy, dz;
+		  real dx, dy, dz;
 		  dx=two*nu*(axx+ayy+azz);
 		  dy=two*nu*(bxx+byy+bzz);
 		  dz=two*nu*(cxx+cyy+czz);
@@ -16116,8 +16116,8 @@ extern "C" __global__ void scaleFC_NSPress_27(   doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFC_Fix_27(   doubflo* DC, 
-                                             doubflo* DF, 
+extern "C" __global__ void scaleFC_Fix_27(   real* DC, 
+                                             real* DF, 
                                              unsigned int* neighborCX,
                                              unsigned int* neighborCY,
                                              unsigned int* neighborCZ,
@@ -16130,16 +16130,16 @@ extern "C" __global__ void scaleFC_Fix_27(   doubflo* DC,
                                              unsigned int* posC, 
                                              unsigned int* posFSWB, 
                                              unsigned int kFC, 
-                                             doubflo omCoarse, 
-                                             doubflo omFine, 
-                                             doubflo nu, 
+                                             real omCoarse, 
+                                             real omFine, 
+                                             real nu, 
                                              unsigned int nxC, 
                                              unsigned int nyC, 
                                              unsigned int nxF, 
                                              unsigned int nyF,
                                              OffFC offFC)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -16170,7 +16170,7 @@ extern "C" __global__ void scaleFC_Fix_27(   doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -16245,36 +16245,36 @@ extern "C" __global__ void scaleFC_Fix_27(   doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo eps_new = two;
-   doubflo omegaS = omFine;//-omFine;
-   doubflo o  = omCoarse;//-omCoarse;
-   //doubflo op = one;
-   //doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press;//,drho,vx1,vx2,vx3;
-   doubflo        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   //doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
-   doubflo        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   //real op = one;
+   //real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press;//,drho,vx1,vx2,vx3;
+   real        /*press_SWT,*/drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        /*press_NWT,*/drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        /*press_NET,*/drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        /*press_SET,*/drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        /*press_SWB,*/drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        /*press_NWB,*/drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        /*press_NEB,*/drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        /*press_SEB,*/drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   //real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
+   real        d0, dx, dy, dz, dxy, dxz, dyz/*, dxyz*/;
 
    if(k<kFC)
    {
@@ -16916,7 +16916,7 @@ extern "C" __global__ void scaleFC_Fix_27(   doubflo* DC,
       //bxyz=-vx2_NEB + vx2_NET + vx2_NWB - vx2_NWT + vx2_SEB - vx2_SET - vx2_SWB + vx2_SWT;
       //cxyz=-vx3_NEB + vx3_NET + vx3_NWB - vx3_NWT + vx3_SEB - vx3_SET - vx3_SWB + vx3_SWT;
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo kxyAverage	 =(kxyFromfcNEQ_SWB+
+	  real kxyAverage	 =(kxyFromfcNEQ_SWB+
 							   kxyFromfcNEQ_SWT+
 							   kxyFromfcNEQ_SET+
 							   kxyFromfcNEQ_SEB+
@@ -16924,7 +16924,7 @@ extern "C" __global__ void scaleFC_Fix_27(   doubflo* DC,
 							   kxyFromfcNEQ_NWT+
 							   kxyFromfcNEQ_NET+
 							   kxyFromfcNEQ_NEB)*c1o8-(ay+bx);
-	  doubflo kyzAverage	 =(kyzFromfcNEQ_SWB+
+	  real kyzAverage	 =(kyzFromfcNEQ_SWB+
 							   kyzFromfcNEQ_SWT+
 							   kyzFromfcNEQ_SET+
 							   kyzFromfcNEQ_SEB+
@@ -16932,7 +16932,7 @@ extern "C" __global__ void scaleFC_Fix_27(   doubflo* DC,
 							   kyzFromfcNEQ_NWT+
 							   kyzFromfcNEQ_NET+
 							   kyzFromfcNEQ_NEB)*c1o8-(bz+cy);
-	  doubflo kxzAverage	 =(kxzFromfcNEQ_SWB+
+	  real kxzAverage	 =(kxzFromfcNEQ_SWB+
 							   kxzFromfcNEQ_SWT+
 							   kxzFromfcNEQ_SET+
 							   kxzFromfcNEQ_SEB+
@@ -16940,7 +16940,7 @@ extern "C" __global__ void scaleFC_Fix_27(   doubflo* DC,
 							   kxzFromfcNEQ_NWT+
 							   kxzFromfcNEQ_NET+
 							   kxzFromfcNEQ_NEB)*c1o8-(az+cx);
-	  doubflo kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
+	  real kxxMyyAverage	 =(kxxMyyFromfcNEQ_SWB+
 							   kxxMyyFromfcNEQ_SWT+
 							   kxxMyyFromfcNEQ_SET+
 							   kxxMyyFromfcNEQ_SEB+
@@ -16948,7 +16948,7 @@ extern "C" __global__ void scaleFC_Fix_27(   doubflo* DC,
 							   kxxMyyFromfcNEQ_NWT+
 							   kxxMyyFromfcNEQ_NET+
 							   kxxMyyFromfcNEQ_NEB)*c1o8-(ax-by);
-	  doubflo kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
+	  real kxxMzzAverage	 =(kxxMzzFromfcNEQ_SWB+
 							   kxxMzzFromfcNEQ_SWT+
 							   kxxMzzFromfcNEQ_SET+
 							   kxxMzzFromfcNEQ_SEB+
@@ -17038,41 +17038,41 @@ extern "C" __global__ void scaleFC_Fix_27(   doubflo* DC,
 	  //cxz=zero;
 	  //cyz=zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	  
-	  doubflo mfcbb = zero;
-	  doubflo mfabb = zero;
-	  doubflo mfbcb = zero;
-	  doubflo mfbab = zero;
-	  doubflo mfbbc = zero;
-	  doubflo mfbba = zero;
-	  doubflo mfccb = zero;
-	  doubflo mfaab = zero;
-	  doubflo mfcab = zero;
-	  doubflo mfacb = zero;
-	  doubflo mfcbc = zero;
-	  doubflo mfaba = zero;
-	  doubflo mfcba = zero;
-	  doubflo mfabc = zero;
-	  doubflo mfbcc = zero;
-	  doubflo mfbaa = zero;
-	  doubflo mfbca = zero;
-	  doubflo mfbac = zero;
-	  doubflo mfbbb = zero;
-	  doubflo mfccc = zero;
-	  doubflo mfaac = zero;
-	  doubflo mfcac = zero;
-	  doubflo mfacc = zero;
-	  doubflo mfcca = zero;
-	  doubflo mfaaa = zero;
-	  doubflo mfcaa = zero;
-	  doubflo mfaca = zero;
+	  real mfcbb = zero;
+	  real mfabb = zero;
+	  real mfbcb = zero;
+	  real mfbab = zero;
+	  real mfbbc = zero;
+	  real mfbba = zero;
+	  real mfccb = zero;
+	  real mfaab = zero;
+	  real mfcab = zero;
+	  real mfacb = zero;
+	  real mfcbc = zero;
+	  real mfaba = zero;
+	  real mfcba = zero;
+	  real mfabc = zero;
+	  real mfbcc = zero;
+	  real mfbaa = zero;
+	  real mfbca = zero;
+	  real mfbac = zero;
+	  real mfbbb = zero;
+	  real mfccc = zero;
+	  real mfaac = zero;
+	  real mfcac = zero;
+	  real mfacc = zero;
+	  real mfcca = zero;
+	  real mfaaa = zero;
+	  real mfcaa = zero;
+	  real mfaca = zero;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
-	  doubflo mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
-	  doubflo qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
-	  doubflo O3 = two - o;
-	  doubflo residu, residutmp;
+	  real m0, m1, m2, vvx, vvy, vvz, vx2, vy2, vz2, oMdrho;
+	  real mxxPyyPzz, mxxMyy, mxxMzz, mxxyPyzz, mxxyMyzz, mxxzPyyz, mxxzMyyz, mxyyPxzz, mxyyMxzz;
+	  real qudricLimit = c1o100;//ganz schlechte Idee -> muss global sein
+	  real O3 = two - o;
+	  real residu, residutmp;
 	  residutmp = zero;///*-*/ c2o9 * (1./o - c1o2) * eps_new * eps_new;
-	  doubflo NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
+	  real NeqOn = one;//zero;//one;   //.... one = on ..... zero = off 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -17084,9 +17084,9 @@ extern "C" __global__ void scaleFC_Fix_27(   doubflo* DC,
 	  //y = 0.;
 	  //z = 0.;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo mxoff = -xoff;
-	  //doubflo myoff = -yoff;
-	  //doubflo mzoff = -zoff;
+	  //real mxoff = -xoff;
+	  //real myoff = -yoff;
+	  //real mzoff = -zoff;
 	  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //press = press_NET * (c1o8 - c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
 			//  press_NWT * (c1o8 + c1o4 * mxoff - c1o4 * myoff - c1o4 * mzoff) + 
@@ -17476,8 +17476,8 @@ extern "C" __global__ void scaleFC_Fix_27(   doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFCpress27(doubflo* DC, 
-                                          doubflo* DF, 
+extern "C" __global__ void scaleFCpress27(real* DC, 
+                                          real* DF, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -17490,16 +17490,16 @@ extern "C" __global__ void scaleFCpress27(doubflo* DC,
                                           unsigned int* posC, 
                                           unsigned int* posFSWB, 
                                           unsigned int kFC, 
-                                          doubflo omCoarse, 
-                                          doubflo omFine, 
-                                          doubflo nu, 
+                                          real omCoarse, 
+                                          real omFine, 
+                                          real nu, 
                                           unsigned int nxC, 
                                           unsigned int nyC, 
                                           unsigned int nxF, 
                                           unsigned int nyF,
                                           OffFC offFC)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -17530,7 +17530,7 @@ extern "C" __global__ void scaleFCpress27(doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -17605,38 +17605,38 @@ extern "C" __global__ void scaleFCpress27(doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   //doubflo epsylon = one;
-   doubflo eps_new = two;
-   doubflo omegaS = omFine;//-omFine;
-   doubflo o  = omCoarse;//-omCoarse;
-   doubflo op = one;
-   doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        press,drho,vx1,vx2,vx3;
-   doubflo        press_SWT,drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        press_NWT,drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        press_NET,drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        press_SET,drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        press_SWB,drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        press_NWB,drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        press_NEB,drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        press_SEB,drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
-
-   //doubflo x,y,z;
+   //real epsylon = one;
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   real op = one;
+   real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        press,drho,vx1,vx2,vx3;
+   real        press_SWT,drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        press_NWT,drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        press_NET,drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        press_SET,drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        press_SWB,drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        press_NWB,drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        press_NEB,drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        press_SEB,drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
+
+   //real x,y,z;
 
    if(k<kFC)
    {
@@ -18401,8 +18401,8 @@ extern "C" __global__ void scaleFCpress27(doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFCLast27( doubflo* DC, 
-                                          doubflo* DF, 
+extern "C" __global__ void scaleFCLast27( real* DC, 
+                                          real* DF, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -18415,16 +18415,16 @@ extern "C" __global__ void scaleFCLast27( doubflo* DC,
                                           unsigned int* posC, 
                                           unsigned int* posFSWB, 
                                           unsigned int kFC, 
-                                          doubflo omCoarse, 
-                                          doubflo omFine, 
-                                          doubflo nu, 
+                                          real omCoarse, 
+                                          real omFine, 
+                                          real nu, 
                                           unsigned int nxC, 
                                           unsigned int nyC, 
                                           unsigned int nxF, 
                                           unsigned int nyF,
                                           OffFC offFC)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -18455,7 +18455,7 @@ extern "C" __global__ void scaleFCLast27( doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -18530,38 +18530,38 @@ extern "C" __global__ void scaleFCLast27( doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   //doubflo epsylon = one;
-   doubflo eps_new = two;
-   doubflo omegaS = omFine;//-omFine;
-   doubflo o  = omCoarse;//-omCoarse;
-   doubflo op = one;
-   doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
-
-   doubflo        drho,vx1,vx2,vx3;
-   doubflo        drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
-
-   //doubflo x,y,z;
+   //real epsylon = one;
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   real op = one;
+   real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
+
+   real        drho,vx1,vx2,vx3;
+   real        drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz/*, axyz, bxyz, cxyz*/;
+
+   //real x,y,z;
 
    if(k<kFC)
    {
@@ -19099,36 +19099,36 @@ extern "C" __global__ void scaleFCLast27( doubflo* DC,
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       //// (_SWT _SEB _NWB _NET)
       ////merged
-      //doubflo tayz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET + kyzFromfcNEQ_SWT + kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
-      //doubflo tbxz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET + kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB + kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET;
-      //doubflo tcxy =-kxyFromfcNEQ_SWT + kxyFromfcNEQ_NWB + kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET; 
-      //doubflo tax  = four*(-vx1_SWT + vx1_SEB - vx1_NWB + vx1_NET) - tayz;
-      //doubflo tby  = four*(-vx2_SWT - vx2_SEB + vx2_NWB + vx2_NET) - tbxz;
-      //doubflo tcz  = four*( vx3_SWT - vx3_SEB - vx3_NWB + vx3_NET) - tcxy;
-      //doubflo taxy = two*( vx1_SWT - vx1_NWB - vx1_SEB + vx1_NET - vx3_SWT - vx3_NWB + vx3_SEB + vx3_NET) - kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET;
-      //doubflo taxz = two*(-vx1_SWT + vx1_NWB - vx1_SEB + vx1_NET - vx2_SWT - vx2_NWB + vx2_SEB + vx2_NET) + kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NET - kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET;
-      //doubflo tbxy = two*( vx2_SWT - vx2_NWB - vx2_SEB + vx2_NET - vx3_SWT + vx3_NWB - vx3_SEB + vx3_NET) + kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NET - kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
-      //doubflo tay  = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) - taxz;
-      //doubflo taz  = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) - taxy;
-      //doubflo tbz  = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) - tbxy;
-      //doubflo tbx  = two*(kxyFromfcNEQ_SWT + kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB + kxyFromfcNEQ_NET) - tay;
-      //doubflo tcy  = two*(kyzFromfcNEQ_SWT + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NWB + kyzFromfcNEQ_NET) - tbz;
-      //doubflo tcx  = two*(kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB + kxzFromfcNEQ_NET) - taz;
-      //doubflo tbyz = four*(-vx2_SWT + vx2_SEB - vx2_NWB + vx2_NET) - tbx;
-      //doubflo tcyz = four*(-vx3_SWT + vx3_SEB - vx3_NWB + vx3_NET) - tcx;
-      //doubflo tcxz = four*(-vx3_SWT - vx3_SEB + vx3_NWB + vx3_NET) - tcy;
-      //doubflo taxx = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) - tbz;
-      //doubflo tayy = four*(-vx2_SWT + vx2_SEB + vx2_NWB - vx2_NET) + two*(-kxyFromfcNEQ_SWT    - kxyFromfcNEQ_SEB    + kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + tbz;
-      //doubflo tazz = four*( vx3_SWT + vx3_SEB - vx3_NWB - vx3_NET) + two*( kxzFromfcNEQ_SWT    - kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tcy;
-      //doubflo tbxx = four*(-vx1_SWT + vx1_SEB + vx1_NWB - vx1_NET) + two*(-kxyFromfcNEQ_SWT    + kxyFromfcNEQ_SEB    - kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + taz;
-      //doubflo tbyy = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) + two*( kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_NET) - taz;
-      //doubflo tbzz = four*( vx3_SWT - vx3_SEB + vx3_NWB - vx3_NET) + two*( kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    - kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tcx;
-      //doubflo tcxx = four*( vx1_SWT + vx1_SEB - vx1_NWB - vx1_NET) + two*(-kxzFromfcNEQ_SWT    + kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tay;
-      //doubflo tcyy = four*( vx2_SWT - vx2_SEB + vx2_NWB - vx2_NET) + two*(-kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    + kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tbx;
-      //doubflo tczz = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) - tay;
-      //doubflo ta0  = eight*( vx1_SWT + vx1_NWB + vx1_SEB + vx1_NET) + two*( kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) + two*(-kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tayy;
-      //doubflo tb0  = eight*( vx2_SWT + vx2_NWB + vx2_SEB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) + two*( kxyFromfcNEQ_SWT - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB - kxyFromfcNEQ_NET   ) - tbzz;
-      //doubflo tc0  = eight*( vx3_SWT + vx3_NWB + vx3_SEB + vx3_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_NET) + two*( kxzFromfcNEQ_SWT - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tcyy;
+      //real tayz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET + kyzFromfcNEQ_SWT + kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
+      //real tbxz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET + kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB + kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET;
+      //real tcxy =-kxyFromfcNEQ_SWT + kxyFromfcNEQ_NWB + kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET; 
+      //real tax  = four*(-vx1_SWT + vx1_SEB - vx1_NWB + vx1_NET) - tayz;
+      //real tby  = four*(-vx2_SWT - vx2_SEB + vx2_NWB + vx2_NET) - tbxz;
+      //real tcz  = four*( vx3_SWT - vx3_SEB - vx3_NWB + vx3_NET) - tcxy;
+      //real taxy = two*( vx1_SWT - vx1_NWB - vx1_SEB + vx1_NET - vx3_SWT - vx3_NWB + vx3_SEB + vx3_NET) - kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET;
+      //real taxz = two*(-vx1_SWT + vx1_NWB - vx1_SEB + vx1_NET - vx2_SWT - vx2_NWB + vx2_SEB + vx2_NET) + kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NET - kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET;
+      //real tbxy = two*( vx2_SWT - vx2_NWB - vx2_SEB + vx2_NET - vx3_SWT + vx3_NWB - vx3_SEB + vx3_NET) + kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NET - kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
+      //real tay  = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) - taxz;
+      //real taz  = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) - taxy;
+      //real tbz  = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) - tbxy;
+      //real tbx  = two*(kxyFromfcNEQ_SWT + kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB + kxyFromfcNEQ_NET) - tay;
+      //real tcy  = two*(kyzFromfcNEQ_SWT + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NWB + kyzFromfcNEQ_NET) - tbz;
+      //real tcx  = two*(kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB + kxzFromfcNEQ_NET) - taz;
+      //real tbyz = four*(-vx2_SWT + vx2_SEB - vx2_NWB + vx2_NET) - tbx;
+      //real tcyz = four*(-vx3_SWT + vx3_SEB - vx3_NWB + vx3_NET) - tcx;
+      //real tcxz = four*(-vx3_SWT - vx3_SEB + vx3_NWB + vx3_NET) - tcy;
+      //real taxx = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) - tbz;
+      //real tayy = four*(-vx2_SWT + vx2_SEB + vx2_NWB - vx2_NET) + two*(-kxyFromfcNEQ_SWT    - kxyFromfcNEQ_SEB    + kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + tbz;
+      //real tazz = four*( vx3_SWT + vx3_SEB - vx3_NWB - vx3_NET) + two*( kxzFromfcNEQ_SWT    - kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tcy;
+      //real tbxx = four*(-vx1_SWT + vx1_SEB + vx1_NWB - vx1_NET) + two*(-kxyFromfcNEQ_SWT    + kxyFromfcNEQ_SEB    - kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + taz;
+      //real tbyy = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) + two*( kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_NET) - taz;
+      //real tbzz = four*( vx3_SWT - vx3_SEB + vx3_NWB - vx3_NET) + two*( kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    - kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tcx;
+      //real tcxx = four*( vx1_SWT + vx1_SEB - vx1_NWB - vx1_NET) + two*(-kxzFromfcNEQ_SWT    + kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tay;
+      //real tcyy = four*( vx2_SWT - vx2_SEB + vx2_NWB - vx2_NET) + two*(-kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    + kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tbx;
+      //real tczz = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) - tay;
+      //real ta0  = eight*( vx1_SWT + vx1_NWB + vx1_SEB + vx1_NET) + two*( kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) + two*(-kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tayy;
+      //real tb0  = eight*( vx2_SWT + vx2_NWB + vx2_SEB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) + two*( kxyFromfcNEQ_SWT - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB - kxyFromfcNEQ_NET   ) - tbzz;
+      //real tc0  = eight*( vx3_SWT + vx3_NWB + vx3_SEB + vx3_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_NET) + two*( kxzFromfcNEQ_SWT - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tcyy;
       //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       //a0  +=  ta0   ;
       //ax  +=  tax   ;
@@ -19797,10 +19797,10 @@ extern "C" __global__ void scaleFCLast27( doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFCThSMG7(    doubflo* DC, 
-                                             doubflo* DF, 
-                                             doubflo* DD7C, 
-                                             doubflo* DD7F, 
+extern "C" __global__ void scaleFCThSMG7(    real* DC, 
+                                             real* DF, 
+                                             real* DD7C, 
+                                             real* DD7F, 
                                              unsigned int* neighborCX,
                                              unsigned int* neighborCY,
                                              unsigned int* neighborCZ,
@@ -19813,11 +19813,11 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
                                              unsigned int* posC, 
                                              unsigned int* posFSWB, 
                                              unsigned int kFC, 
-                                             doubflo nu,
-                                             doubflo diffusivity_coarse,
+                                             real nu,
+                                             real diffusivity_coarse,
                                              OffFC offFC)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, //*fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, //*fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -19848,7 +19848,7 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -19955,36 +19955,36 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo       /* drho,*/vx1,vx2,vx3;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,/*f_ZERO,*/f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   real       /* drho,*/vx1,vx2,vx3;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,/*f_ZERO,*/f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
-   doubflo /*f7_ZERO,*/f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
-   doubflo Conc_C_C;
-   doubflo Conc_F_SWB, Conc_F_SWT, Conc_F_SET, Conc_F_SEB, Conc_F_NWB, Conc_F_NWT, Conc_F_NET, Conc_F_NEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz/*, axyz*/;
+   real /*f7_ZERO,*/f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
+   real Conc_C_C;
+   real Conc_F_SWB, Conc_F_SWT, Conc_F_SET, Conc_F_SEB, Conc_F_NWB, Conc_F_NWT, Conc_F_NET, Conc_F_NEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz/*, axyz*/;
 
-   //doubflo omegaD_C     = two / (six * diffusivity_coarse + one);
-   //doubflo omegaD_F     = two / (six * diffusivity_coarse*two + one);
-   doubflo omegaD_C     = three - sqrt(three);        //Quick and Dörrrty
-   doubflo omegaD_F     = three - sqrt(three);        //Quick and Dörrrty
-   doubflo Lam         = -(c1o2-one/omegaD_C);
-   doubflo nue_d       = Lam/three;
-   //doubflo ae          = zero;
-   //doubflo ae_F        = zero;
-   doubflo ae          = diffusivity_coarse/nue_d - one;
-   doubflo ae_F        = (diffusivity_coarse*two)/nue_d - one;
+   //real omegaD_C     = two / (six * diffusivity_coarse + one);
+   //real omegaD_F     = two / (six * diffusivity_coarse*two + one);
+   real omegaD_C     = three - sqrt(three);        //Quick and Dörrrty
+   real omegaD_F     = three - sqrt(three);        //Quick and Dörrrty
+   real Lam         = -(c1o2-one/omegaD_C);
+   real nue_d       = Lam/three;
+   //real ae          = zero;
+   //real ae_F        = zero;
+   real ae          = diffusivity_coarse/nue_d - one;
+   real ae_F        = (diffusivity_coarse*two)/nue_d - one;
 
-   doubflo Mx,My,Mz,Mxx,Myy,Mzz,M0; 
+   real Mx,My,Mz,Mxx,Myy,Mzz,M0; 
 
 
    if(k<kFC){
       //////////////////////////////////////////////////////////////////////////
-      doubflo xoff = offFC.xOffFC[k];
-      doubflo yoff = offFC.yOffFC[k];
-      doubflo zoff = offFC.zOffFC[k];      
-      doubflo xoff_sq = xoff * xoff;
-      doubflo yoff_sq = yoff * yoff;
-      doubflo zoff_sq = zoff * zoff;
+      real xoff = offFC.xOffFC[k];
+      real yoff = offFC.yOffFC[k];
+      real zoff = offFC.zOffFC[k];      
+      real xoff_sq = xoff * xoff;
+      real yoff_sq = yoff * yoff;
+      real zoff_sq = zoff * zoff;
       //////////////////////////////////////////////////////////////////////////
       //SWB//
       //////////////////////////////////////////////////////////////////////////
@@ -20053,9 +20053,9 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FSWB = (Conc_F_SWB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FSWB = (Conc_F_SWB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FSWB = (Conc_F_SWB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FSWB = (Conc_F_SWB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FSWB = (Conc_F_SWB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FSWB = (Conc_F_SWB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
 
 
@@ -20118,9 +20118,9 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FSWT = (Conc_F_SWT * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FSWT = (Conc_F_SWT * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FSWT = (Conc_F_SWT * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FSWT = (Conc_F_SWT * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FSWT = (Conc_F_SWT * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FSWT = (Conc_F_SWT * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
 
 
@@ -20183,9 +20183,9 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FSET = (Conc_F_SET * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FSET = (Conc_F_SET * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FSET = (Conc_F_SET * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FSET = (Conc_F_SET * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FSET = (Conc_F_SET * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FSET = (Conc_F_SET * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
 
 
@@ -20248,9 +20248,9 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FSEB = (Conc_F_SEB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FSEB = (Conc_F_SEB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FSEB = (Conc_F_SEB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FSEB = (Conc_F_SEB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FSEB = (Conc_F_SEB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FSEB = (Conc_F_SEB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
 
 
@@ -20323,9 +20323,9 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FNWB = (Conc_F_NWB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FNWB = (Conc_F_NWB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FNWB = (Conc_F_NWB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FNWB = (Conc_F_NWB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FNWB = (Conc_F_NWB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FNWB = (Conc_F_NWB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
 
 
@@ -20388,9 +20388,9 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FNWT = (Conc_F_NWT * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FNWT = (Conc_F_NWT * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FNWT = (Conc_F_NWT * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FNWT = (Conc_F_NWT * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FNWT = (Conc_F_NWT * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FNWT = (Conc_F_NWT * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
 
 
@@ -20453,9 +20453,9 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FNET = (Conc_F_NET * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FNET = (Conc_F_NET * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FNET = (Conc_F_NET * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FNET = (Conc_F_NET * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FNET = (Conc_F_NET * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FNET = (Conc_F_NET * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
 
 
@@ -20518,9 +20518,9 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FNEB = (Conc_F_NEB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FNEB = (Conc_F_NEB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FNEB = (Conc_F_NEB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FNEB = (Conc_F_NEB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FNEB = (Conc_F_NEB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FNEB = (Conc_F_NEB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
 
 
@@ -20532,9 +20532,9 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
 
 
       //linear
-      //doubflo Diff_Conc_XX = zero;
-      //doubflo Diff_Conc_YY = zero;
-      //doubflo Diff_Conc_ZZ = zero;
+      //real Diff_Conc_XX = zero;
+      //real Diff_Conc_YY = zero;
+      //real Diff_Conc_ZZ = zero;
 
 
 
@@ -20613,9 +20613,9 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
 
       Conc_C_C = a0; //c1o8 * (Conc_F_SWB+Conc_F_SWT+Conc_F_SEB+Conc_F_SET+Conc_F_NWB+Conc_F_NWT+Conc_F_NEB+Conc_F_NET) - c4o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      doubflo Diff_Conc_X_C = ax; //c1o4 * (Conc_F_NEB - Conc_F_NWB + Conc_F_NET - Conc_F_NWT + Conc_F_SEB - Conc_F_SWB + Conc_F_SET - Conc_F_SWT);
-      doubflo Diff_Conc_Y_C = ay; //c1o4 * (Conc_F_NEB - Conc_F_SEB + Conc_F_NET - Conc_F_SET + Conc_F_NWB - Conc_F_SWB + Conc_F_NWT - Conc_F_SWT);
-      doubflo Diff_Conc_Z_C = az; //c1o4 * (Conc_F_NET - Conc_F_NEB + Conc_F_NWT - Conc_F_NWB + Conc_F_SET - Conc_F_SEB + Conc_F_SWT - Conc_F_SWB);
+      real Diff_Conc_X_C = ax; //c1o4 * (Conc_F_NEB - Conc_F_NWB + Conc_F_NET - Conc_F_NWT + Conc_F_SEB - Conc_F_SWB + Conc_F_SET - Conc_F_SWT);
+      real Diff_Conc_Y_C = ay; //c1o4 * (Conc_F_NEB - Conc_F_SEB + Conc_F_NET - Conc_F_SET + Conc_F_NWB - Conc_F_SWB + Conc_F_NWT - Conc_F_SWT);
+      real Diff_Conc_Z_C = az; //c1o4 * (Conc_F_NET - Conc_F_NEB + Conc_F_NWT - Conc_F_NWB + Conc_F_SET - Conc_F_SEB + Conc_F_SWT - Conc_F_SWB);
 
       Mx = Conc_C_C*vx1-(one+ae)/(three*omegaD_C)*two/*c1o2*/*Diff_Conc_X_C;
       My = Conc_C_C*vx2-(one+ae)/(three*omegaD_C)*two/*c1o2*/*Diff_Conc_Y_C;
@@ -20670,10 +20670,10 @@ extern "C" __global__ void scaleFCThSMG7(    doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFCThS7(   doubflo* DC, 
-                                          doubflo* DF, 
-                                          doubflo* DD7C, 
-                                          doubflo* DD7F, 
+extern "C" __global__ void scaleFCThS7(   real* DC, 
+                                          real* DF, 
+                                          real* DD7C, 
+                                          real* DD7F, 
                                           unsigned int* neighborCX,
                                           unsigned int* neighborCY,
                                           unsigned int* neighborCZ,
@@ -20686,10 +20686,10 @@ extern "C" __global__ void scaleFCThS7(   doubflo* DC,
                                           unsigned int* posC, 
                                           unsigned int* posFSWB, 
                                           unsigned int kFC, 
-                                          doubflo nu,
-                                          doubflo diffusivity_coarse)
+                                          real nu,
+                                          real diffusivity_coarse)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, //*fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, //*fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -20720,7 +20720,7 @@ extern "C" __global__ void scaleFCThS7(   doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -20827,27 +20827,27 @@ extern "C" __global__ void scaleFCThS7(   doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo       /* drho,*/vx1,vx2,vx3;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,/*f_ZERO,*/f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   real       /* drho,*/vx1,vx2,vx3;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,/*f_ZERO,*/f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
-   //doubflo x,y,z;
-   doubflo /*f7_ZERO,*/f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
-   doubflo Conc_C_C;
-   doubflo Conc_F_SWB, Conc_F_SWT, Conc_F_SET, Conc_F_SEB, Conc_F_NWB, Conc_F_NWT, Conc_F_NET, Conc_F_NEB;
+   //real x,y,z;
+   real /*f7_ZERO,*/f7_E,f7_W,f7_N,f7_S,f7_T,f7_B;
+   real Conc_C_C;
+   real Conc_F_SWB, Conc_F_SWT, Conc_F_SET, Conc_F_SEB, Conc_F_NWB, Conc_F_NWT, Conc_F_NET, Conc_F_NEB;
 
-   //doubflo omegaD_C     = two / (six * diffusivity_coarse + one);
-   //doubflo omegaD_F     = two / (six * diffusivity_coarse*two + one);
-   doubflo omegaD_C     = three - sqrt(three);        //Quick and Dörrrty
-   doubflo omegaD_F     = three - sqrt(three);        //Quick and Dörrrty
-   doubflo Lam         = -(c1o2-one/omegaD_C);
-   doubflo nue_d       = Lam/three;
-   //doubflo ae          = zero;
-   //doubflo ae_F        = zero;
-   doubflo ae          = diffusivity_coarse/nue_d - one;
-   doubflo ae_F        = (diffusivity_coarse*two)/nue_d - one;
+   //real omegaD_C     = two / (six * diffusivity_coarse + one);
+   //real omegaD_F     = two / (six * diffusivity_coarse*two + one);
+   real omegaD_C     = three - sqrt(three);        //Quick and Dörrrty
+   real omegaD_F     = three - sqrt(three);        //Quick and Dörrrty
+   real Lam         = -(c1o2-one/omegaD_C);
+   real nue_d       = Lam/three;
+   //real ae          = zero;
+   //real ae_F        = zero;
+   real ae          = diffusivity_coarse/nue_d - one;
+   real ae_F        = (diffusivity_coarse*two)/nue_d - one;
 
-   //doubflo ux_sq, uy_sq, uz_sq;
-   doubflo Mx,My,Mz,Mxx,Myy,Mzz,M0; 
+   //real ux_sq, uy_sq, uz_sq;
+   real Mx,My,Mz,Mxx,Myy,Mzz,M0; 
 
 
    if(k<kFC){
@@ -20919,9 +20919,9 @@ extern "C" __global__ void scaleFCThS7(   doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FSWB = (Conc_F_SWB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FSWB = (Conc_F_SWB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FSWB = (Conc_F_SWB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FSWB = (Conc_F_SWB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FSWB = (Conc_F_SWB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FSWB = (Conc_F_SWB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
       //////////////////////////////////////////////////////////////////////////
       //SWT//
@@ -20981,9 +20981,9 @@ extern "C" __global__ void scaleFCThS7(   doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FSWT = (Conc_F_SWT * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FSWT = (Conc_F_SWT * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FSWT = (Conc_F_SWT * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FSWT = (Conc_F_SWT * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FSWT = (Conc_F_SWT * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FSWT = (Conc_F_SWT * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
       //////////////////////////////////////////////////////////////////////////
       //SET//
@@ -21043,9 +21043,9 @@ extern "C" __global__ void scaleFCThS7(   doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FSET = (Conc_F_SET * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FSET = (Conc_F_SET * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FSET = (Conc_F_SET * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FSET = (Conc_F_SET * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FSET = (Conc_F_SET * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FSET = (Conc_F_SET * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
       //////////////////////////////////////////////////////////////////////////
       //SEB//
@@ -21105,9 +21105,9 @@ extern "C" __global__ void scaleFCThS7(   doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FSEB = (Conc_F_SEB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FSEB = (Conc_F_SEB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FSEB = (Conc_F_SEB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FSEB = (Conc_F_SEB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FSEB = (Conc_F_SEB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FSEB = (Conc_F_SEB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
       //////////////////////////////////////////////////////////////////////////
       //NWB//
@@ -21177,9 +21177,9 @@ extern "C" __global__ void scaleFCThS7(   doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FNWB = (Conc_F_NWB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FNWB = (Conc_F_NWB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FNWB = (Conc_F_NWB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FNWB = (Conc_F_NWB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FNWB = (Conc_F_NWB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FNWB = (Conc_F_NWB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
       //////////////////////////////////////////////////////////////////////////
       //NWT//
@@ -21239,9 +21239,9 @@ extern "C" __global__ void scaleFCThS7(   doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FNWT = (Conc_F_NWT * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FNWT = (Conc_F_NWT * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FNWT = (Conc_F_NWT * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FNWT = (Conc_F_NWT * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FNWT = (Conc_F_NWT * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FNWT = (Conc_F_NWT * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
       //////////////////////////////////////////////////////////////////////////
       //NET//
@@ -21301,9 +21301,9 @@ extern "C" __global__ void scaleFCThS7(   doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FNET = (Conc_F_NET * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FNET = (Conc_F_NET * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FNET = (Conc_F_NET * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FNET = (Conc_F_NET * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FNET = (Conc_F_NET * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FNET = (Conc_F_NET * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
       //////////////////////////////////////////////////////////////////////////
       //NEB//
@@ -21363,21 +21363,21 @@ extern "C" __global__ void scaleFCThS7(   doubflo* DC,
       My   = f7_N-f7_S;
       Mz   = f7_T-f7_B;
 
-      doubflo Diff_Conc_X_FNEB = (Conc_F_NEB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Y_FNEB = (Conc_F_NEB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
-      doubflo Diff_Conc_Z_FNEB = (Conc_F_NEB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_X_FNEB = (Conc_F_NEB * vx1 - Mx) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Y_FNEB = (Conc_F_NEB * vx2 - My) * (three*omegaD_F) / (one + ae_F);
+      real Diff_Conc_Z_FNEB = (Conc_F_NEB * vx3 - Mz) * (three*omegaD_F) / (one + ae_F);
 
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
       //linear
-      //doubflo Diff_Conc_XX = zero;
-      //doubflo Diff_Conc_YY = zero;
-      //doubflo Diff_Conc_ZZ = zero;
+      //real Diff_Conc_XX = zero;
+      //real Diff_Conc_YY = zero;
+      //real Diff_Conc_ZZ = zero;
 
       //quadratic
-      doubflo Diff_Conc_XX = ((Diff_Conc_X_FNEB + Diff_Conc_X_FSEB + Diff_Conc_X_FNET + Diff_Conc_X_FSET) - (Diff_Conc_X_FNWB + Diff_Conc_X_FSWB + Diff_Conc_X_FNWT + Diff_Conc_X_FSWT)) * c1o4;
-      doubflo Diff_Conc_YY = ((Diff_Conc_Y_FNEB + Diff_Conc_Y_FNWB + Diff_Conc_Y_FNET + Diff_Conc_Y_FNWT) - (Diff_Conc_Y_FSEB + Diff_Conc_Y_FSWB + Diff_Conc_Y_FSET + Diff_Conc_Y_FSWT)) * c1o4;
-      doubflo Diff_Conc_ZZ = ((Diff_Conc_Z_FSET + Diff_Conc_Z_FSWT + Diff_Conc_Z_FNET + Diff_Conc_Z_FNWT) - (Diff_Conc_Z_FSEB + Diff_Conc_Z_FSWB + Diff_Conc_Z_FNEB + Diff_Conc_Z_FNWB)) * c1o4;
+      real Diff_Conc_XX = ((Diff_Conc_X_FNEB + Diff_Conc_X_FSEB + Diff_Conc_X_FNET + Diff_Conc_X_FSET) - (Diff_Conc_X_FNWB + Diff_Conc_X_FSWB + Diff_Conc_X_FNWT + Diff_Conc_X_FSWT)) * c1o4;
+      real Diff_Conc_YY = ((Diff_Conc_Y_FNEB + Diff_Conc_Y_FNWB + Diff_Conc_Y_FNET + Diff_Conc_Y_FNWT) - (Diff_Conc_Y_FSEB + Diff_Conc_Y_FSWB + Diff_Conc_Y_FSET + Diff_Conc_Y_FSWT)) * c1o4;
+      real Diff_Conc_ZZ = ((Diff_Conc_Z_FSET + Diff_Conc_Z_FSWT + Diff_Conc_Z_FNET + Diff_Conc_Z_FNWT) - (Diff_Conc_Z_FSEB + Diff_Conc_Z_FSWB + Diff_Conc_Z_FNEB + Diff_Conc_Z_FNWB)) * c1o4;
 
 
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -21404,9 +21404,9 @@ extern "C" __global__ void scaleFCThS7(   doubflo* DC,
 
       Conc_C_C = c1o8 * (Conc_F_SWB+Conc_F_SWT+Conc_F_SEB+Conc_F_SET+Conc_F_NWB+Conc_F_NWT+Conc_F_NEB+Conc_F_NET) - c4o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      doubflo Diff_Conc_X_C =c1o4 * (Conc_F_NEB - Conc_F_NWB + Conc_F_NET - Conc_F_NWT + Conc_F_SEB - Conc_F_SWB + Conc_F_SET - Conc_F_SWT);
-      doubflo Diff_Conc_Y_C =c1o4 * (Conc_F_NEB - Conc_F_SEB + Conc_F_NET - Conc_F_SET + Conc_F_NWB - Conc_F_SWB + Conc_F_NWT - Conc_F_SWT);
-      doubflo Diff_Conc_Z_C =c1o4 * (Conc_F_NET - Conc_F_NEB + Conc_F_NWT - Conc_F_NWB + Conc_F_SET - Conc_F_SEB + Conc_F_SWT - Conc_F_SWB);
+      real Diff_Conc_X_C =c1o4 * (Conc_F_NEB - Conc_F_NWB + Conc_F_NET - Conc_F_NWT + Conc_F_SEB - Conc_F_SWB + Conc_F_SET - Conc_F_SWT);
+      real Diff_Conc_Y_C =c1o4 * (Conc_F_NEB - Conc_F_SEB + Conc_F_NET - Conc_F_SET + Conc_F_NWB - Conc_F_SWB + Conc_F_NWT - Conc_F_SWT);
+      real Diff_Conc_Z_C =c1o4 * (Conc_F_NET - Conc_F_NEB + Conc_F_NWT - Conc_F_NWB + Conc_F_SET - Conc_F_SEB + Conc_F_SWT - Conc_F_SWB);
 
       Mx = Conc_C_C*vx1-(one+ae)/(three*omegaD_C)*two/*c1o2*/*Diff_Conc_X_C;
       My = Conc_C_C*vx2-(one+ae)/(three*omegaD_C)*two/*c1o2*/*Diff_Conc_Y_C;
@@ -21461,10 +21461,10 @@ extern "C" __global__ void scaleFCThS7(   doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFCThS27(     doubflo* DC, 
-                                             doubflo* DF, 
-                                             doubflo* DD27C, 
-                                             doubflo* DD27F, 
+extern "C" __global__ void scaleFCThS27(     real* DC, 
+                                             real* DF, 
+                                             real* DD27C, 
+                                             real* DD27F, 
                                              unsigned int* neighborCX,
                                              unsigned int* neighborCY,
                                              unsigned int* neighborCZ,
@@ -21477,11 +21477,11 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
                                              unsigned int* posC, 
                                              unsigned int* posFSWB, 
                                              unsigned int kFC, 
-                                             doubflo nu,
-                                             doubflo diffusivity_coarse,
+                                             real nu,
+                                             real diffusivity_coarse,
 											 OffFC offFC)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, //*fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, //*fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -21512,7 +21512,7 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -21679,27 +21679,27 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo       /* drho,*/vx1,vx2,vx3,cu_sq;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,/*f_ZERO,*/f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-
-   doubflo f27E,f27W,f27N,f27S,f27T,f27B,f27NE,f27SW,f27SE,f27NW,f27TE,f27BW,f27BE,f27TW,f27TN,f27BS,f27BN,f27TS,f27ZERO,f27TNE,f27TSW,f27TSE,f27TNW,f27BNE,f27BSW,f27BSE,f27BNW;
-   doubflo Mx,My,Mz/*,Mxx,Myy,Mzz,M0*/; 
-   doubflo Conc_C_C;
-   doubflo Conc_F_SWB, Conc_F_SWT, Conc_F_SET, Conc_F_SEB, Conc_F_NWB, Conc_F_NWT, Conc_F_NET, Conc_F_NEB;
-
-   doubflo omegaD_C     = two / (six * diffusivity_coarse + one);
-   doubflo omegaD_F     = two / (six * diffusivity_coarse*two + one);
-   //doubflo omegaD     = -three + sqrt(three);
-   //doubflo Lam         = -(c1o2+one/omegaD);
-   //doubflo nue_d       = Lam/three;
-   //doubflo ae          = zero;
-   //doubflo ae_F        = zero;
-   //doubflo ae          = diffusivity_fine/nue_d - one;
-   //doubflo ae_F        = (diffusivity_fine/two)/nue_d - one;
-
-   doubflo x,       y,       z;
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
+   real       /* drho,*/vx1,vx2,vx3,cu_sq;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,/*f_ZERO,*/f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+
+   real f27E,f27W,f27N,f27S,f27T,f27B,f27NE,f27SW,f27SE,f27NW,f27TE,f27BW,f27BE,f27TW,f27TN,f27BS,f27BN,f27TS,f27ZERO,f27TNE,f27TSW,f27TSE,f27TNW,f27BNE,f27BSW,f27BSE,f27BNW;
+   real Mx,My,Mz/*,Mxx,Myy,Mzz,M0*/; 
+   real Conc_C_C;
+   real Conc_F_SWB, Conc_F_SWT, Conc_F_SET, Conc_F_SEB, Conc_F_NWB, Conc_F_NWT, Conc_F_NET, Conc_F_NEB;
+
+   real omegaD_C     = two / (six * diffusivity_coarse + one);
+   real omegaD_F     = two / (six * diffusivity_coarse*two + one);
+   //real omegaD     = -three + sqrt(three);
+   //real Lam         = -(c1o2+one/omegaD);
+   //real nue_d       = Lam/three;
+   //real ae          = zero;
+   //real ae_F        = zero;
+   //real ae          = diffusivity_fine/nue_d - one;
+   //real ae_F        = (diffusivity_fine/two)/nue_d - one;
+
+   real x,       y,       z;
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
 
    if(k<kFC){
       //////////////////////////////////////////////////////////////////////////
@@ -21799,9 +21799,9 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_FSWB = (Conc_F_SWB * vx1 - Mx) * (three*omegaD_F);
-      doubflo Diff_Conc_Y_FSWB = (Conc_F_SWB * vx2 - My) * (three*omegaD_F);
-      doubflo Diff_Conc_Z_FSWB = (Conc_F_SWB * vx3 - Mz) * (three*omegaD_F);
+      real Diff_Conc_X_FSWB = (Conc_F_SWB * vx1 - Mx) * (three*omegaD_F);
+      real Diff_Conc_Y_FSWB = (Conc_F_SWB * vx2 - My) * (three*omegaD_F);
+      real Diff_Conc_Z_FSWB = (Conc_F_SWB * vx3 - Mz) * (three*omegaD_F);
 
 
 
@@ -21886,9 +21886,9 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_FSWT = (Conc_F_SWT * vx1 - Mx) * (three*omegaD_F);
-      doubflo Diff_Conc_Y_FSWT = (Conc_F_SWT * vx2 - My) * (three*omegaD_F);
-      doubflo Diff_Conc_Z_FSWT = (Conc_F_SWT * vx3 - Mz) * (three*omegaD_F);
+      real Diff_Conc_X_FSWT = (Conc_F_SWT * vx1 - Mx) * (three*omegaD_F);
+      real Diff_Conc_Y_FSWT = (Conc_F_SWT * vx2 - My) * (three*omegaD_F);
+      real Diff_Conc_Z_FSWT = (Conc_F_SWT * vx3 - Mz) * (three*omegaD_F);
 
 
 
@@ -21973,9 +21973,9 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_FSET = (Conc_F_SET * vx1 - Mx) * (three*omegaD_F);
-      doubflo Diff_Conc_Y_FSET = (Conc_F_SET * vx2 - My) * (three*omegaD_F);
-      doubflo Diff_Conc_Z_FSET = (Conc_F_SET * vx3 - Mz) * (three*omegaD_F);
+      real Diff_Conc_X_FSET = (Conc_F_SET * vx1 - Mx) * (three*omegaD_F);
+      real Diff_Conc_Y_FSET = (Conc_F_SET * vx2 - My) * (three*omegaD_F);
+      real Diff_Conc_Z_FSET = (Conc_F_SET * vx3 - Mz) * (three*omegaD_F);
 
 
 
@@ -22060,9 +22060,9 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_FSEB = (Conc_F_SEB * vx1 - Mx) * (three*omegaD_F);
-      doubflo Diff_Conc_Y_FSEB = (Conc_F_SEB * vx2 - My) * (three*omegaD_F);
-      doubflo Diff_Conc_Z_FSEB = (Conc_F_SEB * vx3 - Mz) * (three*omegaD_F);
+      real Diff_Conc_X_FSEB = (Conc_F_SEB * vx1 - Mx) * (three*omegaD_F);
+      real Diff_Conc_Y_FSEB = (Conc_F_SEB * vx2 - My) * (three*omegaD_F);
+      real Diff_Conc_Z_FSEB = (Conc_F_SEB * vx3 - Mz) * (three*omegaD_F);
 
 
 
@@ -22157,9 +22157,9 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_FNWB = (Conc_F_NWB * vx1 - Mx) * (three*omegaD_F);
-      doubflo Diff_Conc_Y_FNWB = (Conc_F_NWB * vx2 - My) * (three*omegaD_F);
-      doubflo Diff_Conc_Z_FNWB = (Conc_F_NWB * vx3 - Mz) * (three*omegaD_F);
+      real Diff_Conc_X_FNWB = (Conc_F_NWB * vx1 - Mx) * (three*omegaD_F);
+      real Diff_Conc_Y_FNWB = (Conc_F_NWB * vx2 - My) * (three*omegaD_F);
+      real Diff_Conc_Z_FNWB = (Conc_F_NWB * vx3 - Mz) * (three*omegaD_F);
 
 
 
@@ -22244,9 +22244,9 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_FNWT = (Conc_F_NWT * vx1 - Mx) * (three*omegaD_F);
-      doubflo Diff_Conc_Y_FNWT = (Conc_F_NWT * vx2 - My) * (three*omegaD_F);
-      doubflo Diff_Conc_Z_FNWT = (Conc_F_NWT * vx3 - Mz) * (three*omegaD_F);
+      real Diff_Conc_X_FNWT = (Conc_F_NWT * vx1 - Mx) * (three*omegaD_F);
+      real Diff_Conc_Y_FNWT = (Conc_F_NWT * vx2 - My) * (three*omegaD_F);
+      real Diff_Conc_Z_FNWT = (Conc_F_NWT * vx3 - Mz) * (three*omegaD_F);
 
 
 
@@ -22331,9 +22331,9 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_FNET = (Conc_F_NET * vx1 - Mx) * (three*omegaD_F);
-      doubflo Diff_Conc_Y_FNET = (Conc_F_NET * vx2 - My) * (three*omegaD_F);
-      doubflo Diff_Conc_Z_FNET = (Conc_F_NET * vx3 - Mz) * (three*omegaD_F);
+      real Diff_Conc_X_FNET = (Conc_F_NET * vx1 - Mx) * (three*omegaD_F);
+      real Diff_Conc_Y_FNET = (Conc_F_NET * vx2 - My) * (three*omegaD_F);
+      real Diff_Conc_Z_FNET = (Conc_F_NET * vx3 - Mz) * (three*omegaD_F);
 
 
 
@@ -22418,9 +22418,9 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
       My   =f27N+f27NE+f27NW+f27TN+f27BN-f27S-f27SE-f27SW-f27TS-f27BS+f27TNE-f27TSW-f27TSE+f27TNW+f27BNE-f27BSW-f27BSE+f27BNW;
       Mz   =f27T+f27TE+f27TW+f27TN+f27TS-f27B-f27BE-f27BW-f27BN-f27BS+f27TNE+f27TSW+f27TSE+f27TNW-f27BNE-f27BSW-f27BSE-f27BNW;
 
-      doubflo Diff_Conc_X_FNEB = (Conc_F_NEB * vx1 - Mx) * (three*omegaD_F);
-      doubflo Diff_Conc_Y_FNEB = (Conc_F_NEB * vx2 - My) * (three*omegaD_F);
-      doubflo Diff_Conc_Z_FNEB = (Conc_F_NEB * vx3 - Mz) * (three*omegaD_F);
+      real Diff_Conc_X_FNEB = (Conc_F_NEB * vx1 - Mx) * (three*omegaD_F);
+      real Diff_Conc_Y_FNEB = (Conc_F_NEB * vx2 - My) * (three*omegaD_F);
+      real Diff_Conc_Z_FNEB = (Conc_F_NEB * vx3 - Mz) * (three*omegaD_F);
 
 
 
@@ -22432,31 +22432,31 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
 
 
       //linear
-      //doubflo Diff_Conc_XX = zero;
-      //doubflo Diff_Conc_YY = zero;
-      //doubflo Diff_Conc_ZZ = zero;
+      //real Diff_Conc_XX = zero;
+      //real Diff_Conc_YY = zero;
+      //real Diff_Conc_ZZ = zero;
 
 
 
 
 
       //quadratic
-      doubflo Diff_Conc_XX = ((Diff_Conc_X_FNEB + Diff_Conc_X_FSEB + Diff_Conc_X_FNET + Diff_Conc_X_FSET) - (Diff_Conc_X_FNWB + Diff_Conc_X_FSWB + Diff_Conc_X_FNWT + Diff_Conc_X_FSWT)) * c1o4;
-      doubflo Diff_Conc_YY = ((Diff_Conc_Y_FNEB + Diff_Conc_Y_FNWB + Diff_Conc_Y_FNET + Diff_Conc_Y_FNWT) - (Diff_Conc_Y_FSEB + Diff_Conc_Y_FSWB + Diff_Conc_Y_FSET + Diff_Conc_Y_FSWT)) * c1o4;
-      doubflo Diff_Conc_ZZ = ((Diff_Conc_Z_FSET + Diff_Conc_Z_FSWT + Diff_Conc_Z_FNET + Diff_Conc_Z_FNWT) - (Diff_Conc_Z_FSEB + Diff_Conc_Z_FSWB + Diff_Conc_Z_FNEB + Diff_Conc_Z_FNWB)) * c1o4;
-
-
-	  doubflo dx = c1o4 * (Conc_F_NEB + Conc_F_NET - Conc_F_NWB - Conc_F_NWT + Conc_F_SEB + Conc_F_SET - Conc_F_SWB - Conc_F_SWT);
-	  doubflo dy = c1o4 * (Conc_F_NEB + Conc_F_NET + Conc_F_NWB + Conc_F_NWT - Conc_F_SEB - Conc_F_SET - Conc_F_SWB - Conc_F_SWT);
-	  doubflo dz = c1o4 * (-Conc_F_NEB + Conc_F_NET - Conc_F_NWB + Conc_F_NWT - Conc_F_SEB + Conc_F_SET - Conc_F_SWB + Conc_F_SWT);
-	  doubflo dxx = Diff_Conc_XX * c1o2;
-	  doubflo dyy = Diff_Conc_YY * c1o2;
-	  doubflo dzz = Diff_Conc_ZZ * c1o2;
-	  doubflo dxy = c1o2 * (Conc_F_NEB + Conc_F_NET - Conc_F_NWB - Conc_F_NWT - Conc_F_SEB - Conc_F_SET + Conc_F_SWB + Conc_F_SWT);
-	  doubflo dyz = c1o2 * (-Conc_F_NEB + Conc_F_NET - Conc_F_NWB + Conc_F_NWT + Conc_F_SEB - Conc_F_SET + Conc_F_SWB - Conc_F_SWT);
-	  doubflo dxz = c1o2 * (-Conc_F_NEB + Conc_F_NET + Conc_F_NWB - Conc_F_NWT - Conc_F_SEB + Conc_F_SET + Conc_F_SWB - Conc_F_SWT);
-	  //doubflo dxyz = -Conc_F_NEB + Conc_F_NET + Conc_F_NWB - Conc_F_NWT + Conc_F_SEB - Conc_F_SET - Conc_F_SWB + Conc_F_SWT;
-	  doubflo d0 = c1o8 * (-two * dxx - two * dyy - two * dzz + Conc_F_NEB + Conc_F_NET + Conc_F_NWB + Conc_F_NWT + Conc_F_SEB + Conc_F_SET + Conc_F_SWB + Conc_F_SWT);
+      real Diff_Conc_XX = ((Diff_Conc_X_FNEB + Diff_Conc_X_FSEB + Diff_Conc_X_FNET + Diff_Conc_X_FSET) - (Diff_Conc_X_FNWB + Diff_Conc_X_FSWB + Diff_Conc_X_FNWT + Diff_Conc_X_FSWT)) * c1o4;
+      real Diff_Conc_YY = ((Diff_Conc_Y_FNEB + Diff_Conc_Y_FNWB + Diff_Conc_Y_FNET + Diff_Conc_Y_FNWT) - (Diff_Conc_Y_FSEB + Diff_Conc_Y_FSWB + Diff_Conc_Y_FSET + Diff_Conc_Y_FSWT)) * c1o4;
+      real Diff_Conc_ZZ = ((Diff_Conc_Z_FSET + Diff_Conc_Z_FSWT + Diff_Conc_Z_FNET + Diff_Conc_Z_FNWT) - (Diff_Conc_Z_FSEB + Diff_Conc_Z_FSWB + Diff_Conc_Z_FNEB + Diff_Conc_Z_FNWB)) * c1o4;
+
+
+	  real dx = c1o4 * (Conc_F_NEB + Conc_F_NET - Conc_F_NWB - Conc_F_NWT + Conc_F_SEB + Conc_F_SET - Conc_F_SWB - Conc_F_SWT);
+	  real dy = c1o4 * (Conc_F_NEB + Conc_F_NET + Conc_F_NWB + Conc_F_NWT - Conc_F_SEB - Conc_F_SET - Conc_F_SWB - Conc_F_SWT);
+	  real dz = c1o4 * (-Conc_F_NEB + Conc_F_NET - Conc_F_NWB + Conc_F_NWT - Conc_F_SEB + Conc_F_SET - Conc_F_SWB + Conc_F_SWT);
+	  real dxx = Diff_Conc_XX * c1o2;
+	  real dyy = Diff_Conc_YY * c1o2;
+	  real dzz = Diff_Conc_ZZ * c1o2;
+	  real dxy = c1o2 * (Conc_F_NEB + Conc_F_NET - Conc_F_NWB - Conc_F_NWT - Conc_F_SEB - Conc_F_SET + Conc_F_SWB + Conc_F_SWT);
+	  real dyz = c1o2 * (-Conc_F_NEB + Conc_F_NET - Conc_F_NWB + Conc_F_NWT + Conc_F_SEB - Conc_F_SET + Conc_F_SWB - Conc_F_SWT);
+	  real dxz = c1o2 * (-Conc_F_NEB + Conc_F_NET + Conc_F_NWB - Conc_F_NWT - Conc_F_SEB + Conc_F_SET + Conc_F_SWB - Conc_F_SWT);
+	  //real dxyz = -Conc_F_NEB + Conc_F_NET + Conc_F_NWB - Conc_F_NWT + Conc_F_SEB - Conc_F_SET - Conc_F_SWB + Conc_F_SWT;
+	  real d0 = c1o8 * (-two * dxx - two * dyy - two * dzz + Conc_F_NEB + Conc_F_NET + Conc_F_NWB + Conc_F_NWT + Conc_F_SEB + Conc_F_SET + Conc_F_SWB + Conc_F_SWT);
 
      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       //
@@ -22502,15 +22502,15 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
 
       //Conc_C_C = c1o8 * (Conc_F_SWB+Conc_F_SWT+Conc_F_SEB+Conc_F_SET+Conc_F_NWB+Conc_F_NWT+Conc_F_NEB+Conc_F_NET) - c4o32 * (Diff_Conc_XX + Diff_Conc_YY + Diff_Conc_ZZ);
 
-      //doubflo Diff_Conc_X_C = c1o4 * (Conc_F_NEB - Conc_F_NWB + Conc_F_NET - Conc_F_NWT + Conc_F_SEB - Conc_F_SWB + Conc_F_SET - Conc_F_SWT);
-      //doubflo Diff_Conc_Y_C = c1o4 * (Conc_F_NEB - Conc_F_SEB + Conc_F_NET - Conc_F_SET + Conc_F_NWB - Conc_F_SWB + Conc_F_NWT - Conc_F_SWT);
-      //doubflo Diff_Conc_Z_C = c1o4 * (Conc_F_NET - Conc_F_NEB + Conc_F_NWT - Conc_F_NWB + Conc_F_SET - Conc_F_SEB + Conc_F_SWT - Conc_F_SWB);
+      //real Diff_Conc_X_C = c1o4 * (Conc_F_NEB - Conc_F_NWB + Conc_F_NET - Conc_F_NWT + Conc_F_SEB - Conc_F_SWB + Conc_F_SET - Conc_F_SWT);
+      //real Diff_Conc_Y_C = c1o4 * (Conc_F_NEB - Conc_F_SEB + Conc_F_NET - Conc_F_SET + Conc_F_NWB - Conc_F_SWB + Conc_F_NWT - Conc_F_SWT);
+      //real Diff_Conc_Z_C = c1o4 * (Conc_F_NET - Conc_F_NEB + Conc_F_NWT - Conc_F_NWB + Conc_F_SET - Conc_F_SEB + Conc_F_SWT - Conc_F_SWB);
 
-      doubflo Conc_C = d0;
+      real Conc_C = d0;
 
-      doubflo Diff_Conc_X_C = dx;
-      doubflo Diff_Conc_Y_C = dy;
-      doubflo Diff_Conc_Z_C = dz;
+      real Diff_Conc_X_C = dx;
+      real Diff_Conc_Y_C = dy;
+      real Diff_Conc_Z_C = dz;
 
       Mx = Conc_C*vx1-(one)/(three*omegaD_C)*two*Diff_Conc_X_C;
       My = Conc_C*vx2-(one)/(three*omegaD_C)*two*Diff_Conc_Y_C;
@@ -22584,8 +22584,8 @@ extern "C" __global__ void scaleFCThS27(     doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFCEff27(doubflo* DC, 
-                                        doubflo* DF, 
+extern "C" __global__ void scaleFCEff27(real* DC, 
+                                        real* DF, 
                                         unsigned int* neighborCX,
                                         unsigned int* neighborCY,
                                         unsigned int* neighborCZ,
@@ -22598,16 +22598,16 @@ extern "C" __global__ void scaleFCEff27(doubflo* DC,
                                         unsigned int* posC, 
                                         unsigned int* posFSWB, 
                                         unsigned int kFC, 
-                                        doubflo omCoarse, 
-                                        doubflo omFine, 
-                                        doubflo nu, 
+                                        real omCoarse, 
+                                        real omFine, 
+                                        real nu, 
                                         unsigned int nxC, 
                                         unsigned int nyC, 
                                         unsigned int nxF, 
                                         unsigned int nyF,
                                         OffFC offFC)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
       *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -22638,7 +22638,7 @@ extern "C" __global__ void scaleFCEff27(doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
       *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -22713,38 +22713,38 @@ extern "C" __global__ void scaleFCEff27(doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   //doubflo epsylon = one;
-   doubflo eps_new = two;
-   doubflo omegaS = omFine;//-omFine;
-   doubflo o  = omCoarse;//-omCoarse;
-   doubflo op = one;
-   doubflo cu_sq;
-
-   doubflo xoff,    yoff,    zoff;
-   doubflo xoff_sq, yoff_sq, zoff_sq;
+   //real epsylon = one;
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   real op = one;
+   real cu_sq;
+
+   real xoff,    yoff,    zoff;
+   real xoff_sq, yoff_sq, zoff_sq;
    
-   doubflo        drho,vx1,vx2,vx3;
-   doubflo        drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz;
-
-   //doubflo x,y,z;
+   real        drho,vx1,vx2,vx3;
+   real        drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz;
+
+   //real x,y,z;
 
    if(k<kFC)
    {
@@ -23282,36 +23282,36 @@ extern "C" __global__ void scaleFCEff27(doubflo* DC,
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       // (_SWT _SEB _NWB _NET)
       //merged
-      doubflo tayz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET + kyzFromfcNEQ_SWT + kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
-      doubflo tbxz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET + kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB + kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET;
-      doubflo tcxy =-kxyFromfcNEQ_SWT + kxyFromfcNEQ_NWB + kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET; 
-      doubflo tax  = four*(-vx1_SWT + vx1_SEB - vx1_NWB + vx1_NET) - tayz;
-      doubflo tby  = four*(-vx2_SWT - vx2_SEB + vx2_NWB + vx2_NET) - tbxz;
-      doubflo tcz  = four*( vx3_SWT - vx3_SEB - vx3_NWB + vx3_NET) - tcxy;
-      doubflo taxy = two*( vx1_SWT - vx1_NWB - vx1_SEB + vx1_NET - vx3_SWT - vx3_NWB + vx3_SEB + vx3_NET) - kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET;
-      doubflo taxz = two*(-vx1_SWT + vx1_NWB - vx1_SEB + vx1_NET - vx2_SWT - vx2_NWB + vx2_SEB + vx2_NET) + kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NET - kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET;
-      doubflo tbxy = two*( vx2_SWT - vx2_NWB - vx2_SEB + vx2_NET - vx3_SWT + vx3_NWB - vx3_SEB + vx3_NET) + kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NET - kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
-      doubflo tay  = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) - taxz;
-      doubflo taz  = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) - taxy;
-      doubflo tbz  = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) - tbxy;
-      doubflo tbx  = two*(kxyFromfcNEQ_SWT + kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB + kxyFromfcNEQ_NET) - tay;
-      doubflo tcy  = two*(kyzFromfcNEQ_SWT + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NWB + kyzFromfcNEQ_NET) - tbz;
-      doubflo tcx  = two*(kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB + kxzFromfcNEQ_NET) - taz;
-      doubflo tbyz = four*(-vx2_SWT + vx2_SEB - vx2_NWB + vx2_NET) - tbx;
-      doubflo tcyz = four*(-vx3_SWT + vx3_SEB - vx3_NWB + vx3_NET) - tcx;
-      doubflo tcxz = four*(-vx3_SWT - vx3_SEB + vx3_NWB + vx3_NET) - tcy;
-      doubflo taxx = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) - tbz;
-      doubflo tayy = four*(-vx2_SWT + vx2_SEB + vx2_NWB - vx2_NET) + two*(-kxyFromfcNEQ_SWT    - kxyFromfcNEQ_SEB    + kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + tbz;
-      doubflo tazz = four*( vx3_SWT + vx3_SEB - vx3_NWB - vx3_NET) + two*( kxzFromfcNEQ_SWT    - kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tcy;
-      doubflo tbxx = four*(-vx1_SWT + vx1_SEB + vx1_NWB - vx1_NET) + two*(-kxyFromfcNEQ_SWT    + kxyFromfcNEQ_SEB    - kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + taz;
-      doubflo tbyy = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) + two*( kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_NET) - taz;
-      doubflo tbzz = four*( vx3_SWT - vx3_SEB + vx3_NWB - vx3_NET) + two*( kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    - kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tcx;
-      doubflo tcxx = four*( vx1_SWT + vx1_SEB - vx1_NWB - vx1_NET) + two*(-kxzFromfcNEQ_SWT    + kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tay;
-      doubflo tcyy = four*( vx2_SWT - vx2_SEB + vx2_NWB - vx2_NET) + two*(-kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    + kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tbx;
-      doubflo tczz = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) - tay;
-      doubflo ta0  = eight*( vx1_SWT + vx1_NWB + vx1_SEB + vx1_NET) + two*( kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) + two*(-kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tayy;
-      doubflo tb0  = eight*( vx2_SWT + vx2_NWB + vx2_SEB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) + two*( kxyFromfcNEQ_SWT - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB - kxyFromfcNEQ_NET   ) - tbzz;
-      doubflo tc0  = eight*( vx3_SWT + vx3_NWB + vx3_SEB + vx3_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_NET) + two*( kxzFromfcNEQ_SWT - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tcyy;
+      real tayz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET + kyzFromfcNEQ_SWT + kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
+      real tbxz = kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NET + kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB + kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET;
+      real tcxy =-kxyFromfcNEQ_SWT + kxyFromfcNEQ_NWB + kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET - kxzFromfcNEQ_SWT + kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NET; 
+      real tax  = four*(-vx1_SWT + vx1_SEB - vx1_NWB + vx1_NET) - tayz;
+      real tby  = four*(-vx2_SWT - vx2_SEB + vx2_NWB + vx2_NET) - tbxz;
+      real tcz  = four*( vx3_SWT - vx3_SEB - vx3_NWB + vx3_NET) - tcxy;
+      real taxy = two*( vx1_SWT - vx1_NWB - vx1_SEB + vx1_NET - vx3_SWT - vx3_NWB + vx3_SEB + vx3_NET) - kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kxzFromfcNEQ_SWT - kxzFromfcNEQ_NWB - kxzFromfcNEQ_SEB - kxzFromfcNEQ_NET;
+      real taxz = two*(-vx1_SWT + vx1_NWB - vx1_SEB + vx1_NET - vx2_SWT - vx2_NWB + vx2_SEB + vx2_NET) + kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NET - kxyFromfcNEQ_SWT - kxyFromfcNEQ_NWB - kxyFromfcNEQ_SEB - kxyFromfcNEQ_NET;
+      real tbxy = two*( vx2_SWT - vx2_NWB - vx2_SEB + vx2_NET - vx3_SWT + vx3_NWB - vx3_SEB + vx3_NET) + kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NET - kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NET - kyzFromfcNEQ_SWT - kyzFromfcNEQ_NWB - kyzFromfcNEQ_SEB - kyzFromfcNEQ_NET;
+      real tay  = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) - taxz;
+      real taz  = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) - taxy;
+      real tbz  = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) - tbxy;
+      real tbx  = two*(kxyFromfcNEQ_SWT + kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB + kxyFromfcNEQ_NET) - tay;
+      real tcy  = two*(kyzFromfcNEQ_SWT + kyzFromfcNEQ_SEB + kyzFromfcNEQ_NWB + kyzFromfcNEQ_NET) - tbz;
+      real tcx  = two*(kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB + kxzFromfcNEQ_NET) - taz;
+      real tbyz = four*(-vx2_SWT + vx2_SEB - vx2_NWB + vx2_NET) - tbx;
+      real tcyz = four*(-vx3_SWT + vx3_SEB - vx3_NWB + vx3_NET) - tcx;
+      real tcxz = four*(-vx3_SWT - vx3_SEB + vx3_NWB + vx3_NET) - tcy;
+      real taxx = four*( vx2_SWT - vx2_SEB - vx2_NWB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) - tbz;
+      real tayy = four*(-vx2_SWT + vx2_SEB + vx2_NWB - vx2_NET) + two*(-kxyFromfcNEQ_SWT    - kxyFromfcNEQ_SEB    + kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + tbz;
+      real tazz = four*( vx3_SWT + vx3_SEB - vx3_NWB - vx3_NET) + two*( kxzFromfcNEQ_SWT    - kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tcy;
+      real tbxx = four*(-vx1_SWT + vx1_SEB + vx1_NWB - vx1_NET) + two*(-kxyFromfcNEQ_SWT    + kxyFromfcNEQ_SEB    - kxyFromfcNEQ_NWB    + kxyFromfcNEQ_NET   ) + taz;
+      real tbyy = four*( vx1_SWT - vx1_SEB - vx1_NWB + vx1_NET) + two*( kxxMyyFromfcNEQ_SWT + kxxMyyFromfcNEQ_SEB - kxxMyyFromfcNEQ_NWB - kxxMyyFromfcNEQ_NET) - taz;
+      real tbzz = four*( vx3_SWT - vx3_SEB + vx3_NWB - vx3_NET) + two*( kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    - kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tcx;
+      real tcxx = four*( vx1_SWT + vx1_SEB - vx1_NWB - vx1_NET) + two*(-kxzFromfcNEQ_SWT    + kxzFromfcNEQ_SEB    - kxzFromfcNEQ_NWB    + kxzFromfcNEQ_NET   ) + tay;
+      real tcyy = four*( vx2_SWT - vx2_SEB + vx2_NWB - vx2_NET) + two*(-kyzFromfcNEQ_SWT    - kyzFromfcNEQ_SEB    + kyzFromfcNEQ_NWB    + kyzFromfcNEQ_NET   ) + tbx;
+      real tczz = four*(-vx1_SWT - vx1_SEB + vx1_NWB + vx1_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) - tay;
+      real ta0  = eight*( vx1_SWT + vx1_NWB + vx1_SEB + vx1_NET) + two*( kxxMzzFromfcNEQ_SWT - kxxMzzFromfcNEQ_SEB + kxxMzzFromfcNEQ_NWB - kxxMzzFromfcNEQ_NET) + two*(-kxzFromfcNEQ_SWT + kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tayy;
+      real tb0  = eight*( vx2_SWT + vx2_NWB + vx2_SEB + vx2_NET) + two*(-kxxMyyFromfcNEQ_SWT - kxxMyyFromfcNEQ_SEB + kxxMyyFromfcNEQ_NWB + kxxMyyFromfcNEQ_NET) + two*( kxyFromfcNEQ_SWT - kxyFromfcNEQ_SEB + kxyFromfcNEQ_NWB - kxyFromfcNEQ_NET   ) - tbzz;
+      real tc0  = eight*( vx3_SWT + vx3_NWB + vx3_SEB + vx3_NET) + two*(-kxxMzzFromfcNEQ_SWT + kxxMzzFromfcNEQ_SEB - kxxMzzFromfcNEQ_NWB + kxxMzzFromfcNEQ_NET) + two*( kxzFromfcNEQ_SWT - kxzFromfcNEQ_SEB + kxzFromfcNEQ_NWB - kxzFromfcNEQ_NET   ) - tcyy;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       a0  +=  ta0   ;
       ax  +=  tax   ;
@@ -23563,8 +23563,8 @@ extern "C" __global__ void scaleFCEff27(doubflo* DC,
 
 
 //////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void scaleFC27(doubflo* DC, 
-                                     doubflo* DF, 
+extern "C" __global__ void scaleFC27(real* DC, 
+                                     real* DF, 
                                      unsigned int* neighborCX,
                                      unsigned int* neighborCY,
                                      unsigned int* neighborCZ,
@@ -23577,15 +23577,15 @@ extern "C" __global__ void scaleFC27(doubflo* DC,
                                      unsigned int* posC, 
                                      unsigned int* posFSWB, 
                                      unsigned int kFC, 
-										       doubflo omCoarse, 
-										       doubflo omFine, 
-										       doubflo nu, 
+										       real omCoarse, 
+										       real omFine, 
+										       real nu, 
 										       unsigned int nxC, 
 										       unsigned int nyC, 
 										       unsigned int nxF, 
 										       unsigned int nyF)
 {
-   doubflo *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
+   real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, 
          *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF;
 
    feF    = &DF[dirE   *size_MatF];
@@ -23616,7 +23616,7 @@ extern "C" __global__ void scaleFC27(doubflo* DC,
    fbseF  = &DF[dirBSE *size_MatF];
    fbnwF  = &DF[dirBNW *size_MatF];
 
-   doubflo *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
+   real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC,
          *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC;
 
    if (evenOrOdd==true)
@@ -23691,35 +23691,35 @@ extern "C" __global__ void scaleFC27(doubflo* DC,
    //////////////////////////////////////////////////////////////////////////
 
    ////////////////////////////////////////////////////////////////////////////////
-   doubflo epsylon = one;
-   doubflo eps_new = two;
-   doubflo omegaS = omFine;//-omFine;
-   doubflo o  = omCoarse;//-omCoarse;
-   doubflo op = one;
-   doubflo cu_sq;
-
-   doubflo        drho,vx1,vx2,vx3;
-   doubflo        drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
-   doubflo        drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
-   doubflo        drho_NET,vx1_NET,vx2_NET,vx3_NET;
-   doubflo        drho_SET,vx1_SET,vx2_SET,vx3_SET;
-   doubflo        drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
-   doubflo        drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
-   doubflo        drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
-   doubflo        drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
-   doubflo        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
-   doubflo        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
-   doubflo        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
-   doubflo        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
-   doubflo        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
-   doubflo        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
-   doubflo        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
-   doubflo        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
-   doubflo        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
-   doubflo        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
-   doubflo        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz;
-
-   doubflo x,y,z;
+   real epsylon = one;
+   real eps_new = two;
+   real omegaS = omFine;//-omFine;
+   real o  = omCoarse;//-omCoarse;
+   real op = one;
+   real cu_sq;
+
+   real        drho,vx1,vx2,vx3;
+   real        drho_SWT,vx1_SWT,vx2_SWT,vx3_SWT;
+   real        drho_NWT,vx1_NWT,vx2_NWT,vx3_NWT;
+   real        drho_NET,vx1_NET,vx2_NET,vx3_NET;
+   real        drho_SET,vx1_SET,vx2_SET,vx3_SET;
+   real        drho_SWB,vx1_SWB,vx2_SWB,vx3_SWB;
+   real        drho_NWB,vx1_NWB,vx2_NWB,vx3_NWB;
+   real        drho_NEB,vx1_NEB,vx2_NEB,vx3_NEB;
+   real        drho_SEB,vx1_SEB,vx2_SEB,vx3_SEB;
+   real        f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
+   real        feq_E,feq_W,feq_N,feq_S,feq_T,feq_B,feq_NE,feq_SW,feq_SE,feq_NW,feq_TE,feq_BW,feq_BE,feq_TW,feq_TN,feq_BS,feq_BN,feq_TS,feq_ZERO,feq_TNE, feq_TSW, feq_TSE, feq_TNW, feq_BNE, feq_BSW, feq_BSE, feq_BNW;
+   real        kxyFromfcNEQ_SWT, kyzFromfcNEQ_SWT, kxzFromfcNEQ_SWT, kxxMyyFromfcNEQ_SWT, kxxMzzFromfcNEQ_SWT;
+   real        kxyFromfcNEQ_NWT, kyzFromfcNEQ_NWT, kxzFromfcNEQ_NWT, kxxMyyFromfcNEQ_NWT, kxxMzzFromfcNEQ_NWT;
+   real        kxyFromfcNEQ_NET, kyzFromfcNEQ_NET, kxzFromfcNEQ_NET, kxxMyyFromfcNEQ_NET, kxxMzzFromfcNEQ_NET;
+   real        kxyFromfcNEQ_SET, kyzFromfcNEQ_SET, kxzFromfcNEQ_SET, kxxMyyFromfcNEQ_SET, kxxMzzFromfcNEQ_SET;
+   real        kxyFromfcNEQ_SWB, kyzFromfcNEQ_SWB, kxzFromfcNEQ_SWB, kxxMyyFromfcNEQ_SWB, kxxMzzFromfcNEQ_SWB;
+   real        kxyFromfcNEQ_NWB, kyzFromfcNEQ_NWB, kxzFromfcNEQ_NWB, kxxMyyFromfcNEQ_NWB, kxxMzzFromfcNEQ_NWB;
+   real        kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB;
+   real        kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB;
+   real        a0, ax, ay, az, axx, ayy, azz, axy, axz, ayz, b0, bx, by, bz, bxx, byy, bzz, bxy, bxz, byz, c0, cx, cy, cz, cxx, cyy, czz, cxy, cxz, cyz;
+
+   real x,y,z;
 
    if(k<kFC){
       //////////////////////////////////////////////////////////////////////////
diff --git a/src/VirtualFluids_GPU/GPU/SchlafferBCs27.cu b/src/VirtualFluids_GPU/GPU/SchlafferBCs27.cu
index ef58090b2..b4a233d6d 100644
--- a/src/VirtualFluids_GPU/GPU/SchlafferBCs27.cu
+++ b/src/VirtualFluids_GPU/GPU/SchlafferBCs27.cu
@@ -3,16 +3,16 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void PressSchlaff27(doubflo* rhoBC,
-                                          doubflo* DD,
-                                          doubflo* vx0,
-                                          doubflo* vy0,
-                                          doubflo* vz0,
-                                          doubflo* deltaVz0,
+extern "C" __global__ void PressSchlaff27(real* rhoBC,
+                                          real* DD,
+                                          real* vx0,
+                                          real* vy0,
+                                          real* vz0,
+                                          real* deltaVz0,
                                           int* k_Q, 
                                           int* k_N, 
                                           int kQ, 
-                                          doubflo om1, 
+                                          real om1, 
                                           unsigned int* neighborX,
                                           unsigned int* neighborY,
                                           unsigned int* neighborZ,
@@ -125,7 +125,7 @@ extern "C" __global__ void PressSchlaff27(doubflo* rhoBC,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW;
+      real        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW;
 
       f1_E    = (D.f[dirE   ])[ke   ];
       f1_W    = (D.f[dirW   ])[kw   ];
@@ -155,10 +155,10 @@ extern "C" __global__ void PressSchlaff27(doubflo* rhoBC,
       f1_BSE  = (D.f[dirBSE ])[kbse ];
       f1_BNW  = (D.f[dirBNW ])[kbnw ];
       //////////////////////////////////////////////////////////////////////////
-      doubflo cs       = one/sqrt(three);
-      doubflo csp1     = cs + one;
-      doubflo csp1Sq  = (one + cs)*(one + cs);
-      doubflo relFac   = c21o20; // 0.9...1.0
+      real cs       = one/sqrt(three);
+      real csp1     = cs + one;
+      real csp1Sq  = (one + cs)*(one + cs);
+      real relFac   = c21o20; // 0.9...1.0
       //////////////////////////////////////////////////////////////////////////
       // For adaption:
       //     Pressure limits with rho0 = 1:
@@ -171,24 +171,24 @@ extern "C" __global__ void PressSchlaff27(doubflo* rhoBC,
       const double dRlimit  = dPlimit * three;// three = c1oCs2;
       const double uSlimit  = dRlimit * one;// one = c1oRho0;
       //////////////////////////////////////////////////////////////////////////
-      doubflo VX = vx0[k];
-      doubflo VY = vy0[k];
-      doubflo VZ = vz0[k];
+      real VX = vx0[k];
+      real VY = vy0[k];
+      real VZ = vz0[k];
       //////////////////////////////////////////////////////////////////////////
 
-      doubflo temp = two*(f1_TNE + f1_TSE + f1_TSW + f1_TNW) + two*(f1_TE + f1_TW + f1_TN + f1_TS) + f1_NE + f1_SW + f1_SE + f1_NW + two*f1_T + f1_E + f1_W + f1_N + f1_S + f1_ZERO;
+      real temp = two*(f1_TNE + f1_TSE + f1_TSW + f1_TNW) + two*(f1_TE + f1_TW + f1_TN + f1_TS) + f1_NE + f1_SW + f1_SE + f1_NW + two*f1_T + f1_E + f1_W + f1_N + f1_S + f1_ZERO;
 
-      doubflo vs_z = relFac * (VZ+cs) * ( csp1 - sqrt(csp1Sq + two*VZ - two*temp) );    //old =  relFac * cs * ( csp1 - sqrt(csp1Sq + two*VZ - two*temp) );
+      real vs_z = relFac * (VZ+cs) * ( csp1 - sqrt(csp1Sq + two*VZ - two*temp) );    //old =  relFac * cs * ( csp1 - sqrt(csp1Sq + two*VZ - two*temp) );
 
       // 3. Compute density of compensated velocity:		
-      doubflo tempDeltaV = deltaVz0[k];
-      doubflo rholoc = temp - one * (VZ + tempDeltaV + vs_z);
+      real tempDeltaV = deltaVz0[k];
+      real rholoc = temp - one * (VZ + tempDeltaV + vs_z);
 
       // 4. Compute density deviation:
-      doubflo drho = rholoc - rhoBC[k];
+      real drho = rholoc - rhoBC[k];
 
       // 5. Adapt Speed:
-      doubflo dv = tempDeltaV + vs_z;
+      real dv = tempDeltaV + vs_z;
 
       if( drho > dRlimit) {
          VZ += dv + uSlimit;
@@ -270,13 +270,13 @@ extern "C" __global__ void PressSchlaff27(doubflo* rhoBC,
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void VelSchlaff27(  int t,
-                                          doubflo* DD,
-                                          doubflo* vz0,
-                                          doubflo* deltaVz0,
+                                          real* DD,
+                                          real* vz0,
+                                          real* deltaVz0,
                                           int* k_Q, 
                                           int* k_N, 
                                           int kQ, 
-                                          doubflo om1, 
+                                          real om1, 
                                           unsigned int* neighborX,
                                           unsigned int* neighborY,
                                           unsigned int* neighborZ,
@@ -389,7 +389,7 @@ extern "C" __global__ void VelSchlaff27(  int t,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
+      real        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
                      f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW;
 
       f1_E    = (D.f[dirE   ])[ke   ];
@@ -447,10 +447,10 @@ extern "C" __global__ void VelSchlaff27(  int t,
       //f1_TNW  = (D.f[dirBSE ])[kbse ];
       //f1_TSE  = (D.f[dirBNW ])[kbnw ];
       //////////////////////////////////////////////////////////////////////////
-      doubflo cs       = one/sqrt(three);
-      doubflo csp1     = cs + one;
-      doubflo csp1Sq  = (one + cs)*(one + cs);
-      doubflo relFac   = c19o20; // 0.9...1.0
+      real cs       = one/sqrt(three);
+      real csp1     = cs + one;
+      real csp1Sq  = (one + cs)*(one + cs);
+      real relFac   = c19o20; // 0.9...1.0
       //////////////////////////////////////////////////////////////////////////
       // For adaption:
       //     Pressure limits with rho0 = 1:
@@ -459,16 +459,16 @@ extern "C" __global__ void VelSchlaff27(  int t,
       //      6.2e-9  ~  29.9 dB
       //      2.0e-7  ~  60.1 dB   /Vel
       //      2.0e-5  ~ 100.1 dB   /press
-      doubflo uSlimit  = Op0000002; 
+      real uSlimit  = Op0000002; 
       //////////////////////////////////////////////////////////////////////////
-      doubflo VX = zero;
-      doubflo VY = zero;
-      doubflo VZ = vz0[k];
+      real VX = zero;
+      real VY = zero;
+      real VZ = vz0[k];
       //////////////////////////////////////////////////////////////////////////
-      doubflo temp = f1_ZERO + f1_E + f1_W + f1_N + f1_S + f1_NE + f1_SW + f1_SE + f1_NW + two*(f1_B + f1_BE + f1_BW + f1_BN + f1_BS + f1_BNE + f1_BSE + f1_BSW + f1_BNW);
-      //doubflo temp = f1_ZERO + f1_E + f1_W + f1_N + f1_S + f1_NE + f1_SW + f1_SE + f1_NW + two*(f1_T + f1_TE + f1_TW + f1_TN + f1_TS + f1_TNE + f1_TSE + f1_TSW + f1_TNW);
-      ////doubflo temp2= c1mcsSq + two*VZ - two*temp;
-      doubflo vs_z;
+      real temp = f1_ZERO + f1_E + f1_W + f1_N + f1_S + f1_NE + f1_SW + f1_SE + f1_NW + two*(f1_B + f1_BE + f1_BW + f1_BN + f1_BS + f1_BNE + f1_BSE + f1_BSW + f1_BNW);
+      //real temp = f1_ZERO + f1_E + f1_W + f1_N + f1_S + f1_NE + f1_SW + f1_SE + f1_NW + two*(f1_T + f1_TE + f1_TW + f1_TN + f1_TS + f1_TNE + f1_TSE + f1_TSW + f1_TNW);
+      ////real temp2= c1mcsSq + two*VZ - two*temp;
+      real vs_z;
       //if (t < 5)
       //{
       //   vs_z = zero;
@@ -479,8 +479,8 @@ extern "C" __global__ void VelSchlaff27(  int t,
       //}
       
       // 3. Adapt Speed:
-      doubflo tempDeltaV = deltaVz0[k];
-      doubflo dv = tempDeltaV + vs_z;
+      real tempDeltaV = deltaVz0[k];
+      real dv = tempDeltaV + vs_z;
 
       if( dv > uSlimit) {
          VZ  += dv - uSlimit;
diff --git a/src/VirtualFluids_GPU/GPU/SetForcing27.cu b/src/VirtualFluids_GPU/GPU/SetForcing27.cu
index 087070a7d..a10e6b572 100644
--- a/src/VirtualFluids_GPU/GPU/SetForcing27.cu
+++ b/src/VirtualFluids_GPU/GPU/SetForcing27.cu
@@ -3,12 +3,12 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void GetVeloforForcing27( doubflo* DD, 
+extern "C" __global__ void GetVeloforForcing27( real* DD, 
 												int* bcIndex, 
 												int nonAtBC, 
-												doubflo* Vx,
-												doubflo* Vy,
-												doubflo* Vz,
+												real* Vx,
+												real* Vy,
+												real* Vz,
 												unsigned int* neighborX,
 												unsigned int* neighborY,
 												unsigned int* neighborZ,
@@ -119,45 +119,45 @@ extern "C" __global__ void GetVeloforForcing27( doubflo* DD,
 		unsigned int ktne = KQK;
 		unsigned int kbsw = neighborZ[ksw];
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo mfcbb = (D.f[dirE   ])[ke   ];
-		doubflo mfabb = (D.f[dirW   ])[kw   ];
-		doubflo mfbcb = (D.f[dirN   ])[kn   ];
-		doubflo mfbab = (D.f[dirS   ])[ks   ];
-		doubflo mfbbc = (D.f[dirT   ])[kt   ];
-		doubflo mfbba = (D.f[dirB   ])[kb   ];
-		doubflo mfccb = (D.f[dirNE  ])[kne  ];
-		doubflo mfaab = (D.f[dirSW  ])[ksw  ];
-		doubflo mfcab = (D.f[dirSE  ])[kse  ];
-		doubflo mfacb = (D.f[dirNW  ])[knw  ];
-		doubflo mfcbc = (D.f[dirTE  ])[kte  ];
-		doubflo mfaba = (D.f[dirBW  ])[kbw  ];
-		doubflo mfcba = (D.f[dirBE  ])[kbe  ];
-		doubflo mfabc = (D.f[dirTW  ])[ktw  ];
-		doubflo mfbcc = (D.f[dirTN  ])[ktn  ];
-		doubflo mfbaa = (D.f[dirBS  ])[kbs  ];
-		doubflo mfbca = (D.f[dirBN  ])[kbn  ];
-		doubflo mfbac = (D.f[dirTS  ])[kts  ];
-		doubflo mfbbb = (D.f[dirZERO])[kzero];
-		doubflo mfccc = (D.f[dirTNE ])[ktne ];
-		doubflo mfaac = (D.f[dirTSW ])[ktsw ];
-		doubflo mfcac = (D.f[dirTSE ])[ktse ];
-		doubflo mfacc = (D.f[dirTNW ])[ktnw ];
-		doubflo mfcca = (D.f[dirBNE ])[kbne ];
-		doubflo mfaaa = (D.f[dirBSW ])[kbsw ];
-		doubflo mfcaa = (D.f[dirBSE ])[kbse ];
-		doubflo mfaca = (D.f[dirBNW ])[kbnw ];
+		real mfcbb = (D.f[dirE   ])[ke   ];
+		real mfabb = (D.f[dirW   ])[kw   ];
+		real mfbcb = (D.f[dirN   ])[kn   ];
+		real mfbab = (D.f[dirS   ])[ks   ];
+		real mfbbc = (D.f[dirT   ])[kt   ];
+		real mfbba = (D.f[dirB   ])[kb   ];
+		real mfccb = (D.f[dirNE  ])[kne  ];
+		real mfaab = (D.f[dirSW  ])[ksw  ];
+		real mfcab = (D.f[dirSE  ])[kse  ];
+		real mfacb = (D.f[dirNW  ])[knw  ];
+		real mfcbc = (D.f[dirTE  ])[kte  ];
+		real mfaba = (D.f[dirBW  ])[kbw  ];
+		real mfcba = (D.f[dirBE  ])[kbe  ];
+		real mfabc = (D.f[dirTW  ])[ktw  ];
+		real mfbcc = (D.f[dirTN  ])[ktn  ];
+		real mfbaa = (D.f[dirBS  ])[kbs  ];
+		real mfbca = (D.f[dirBN  ])[kbn  ];
+		real mfbac = (D.f[dirTS  ])[kts  ];
+		real mfbbb = (D.f[dirZERO])[kzero];
+		real mfccc = (D.f[dirTNE ])[ktne ];
+		real mfaac = (D.f[dirTSW ])[ktsw ];
+		real mfcac = (D.f[dirTSE ])[ktse ];
+		real mfacc = (D.f[dirTNW ])[ktnw ];
+		real mfcca = (D.f[dirBNE ])[kbne ];
+		real mfaaa = (D.f[dirBSW ])[kbsw ];
+		real mfcaa = (D.f[dirBSE ])[kbse ];
+		real mfaca = (D.f[dirBNW ])[kbnw ];
 		////////////////////////////////////////////////////////////////////////////////////
-		doubflo rho   = (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+		real rho   = (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 + one);//!!!!Achtung + one
 		////////////////////////////////////////////////////////////////////////////////////
-		doubflo vx =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+		real vx =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 			         (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 				       (mfcbb-mfabb))/ rho;
-		doubflo vy =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+		real vy =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 			         (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 			           (mfbcb-mfbab)) / rho;
-		doubflo vz =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+		real vz =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 			         (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 			           (mfbbc-mfbba)) / rho;
 		////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/VirtualFluids_GPU/GPU/SlipBCs27.cu b/src/VirtualFluids_GPU/GPU/SlipBCs27.cu
index 3db0c9144..6a4a7afc2 100644
--- a/src/VirtualFluids_GPU/GPU/SlipBCs27.cu
+++ b/src/VirtualFluids_GPU/GPU/SlipBCs27.cu
@@ -3,11 +3,11 @@
 #include "GPU/constant.h"
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QSlipDevice27(doubflo* DD, 
+extern "C" __global__ void QSlipDevice27(real* DD, 
                                          int* k_Q, 
-                                         doubflo* QQ,
+                                         real* QQ,
                                          unsigned int sizeQ,
-                                         doubflo om1, 
+                                         real om1, 
                                          unsigned int* neighborX,
                                          unsigned int* neighborY,
                                          unsigned int* neighborZ,
@@ -89,7 +89,7 @@ extern "C" __global__ void QSlipDevice27(doubflo* DD,
    if(k<sizeQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -151,34 +151,34 @@ extern "C" __global__ void QSlipDevice27(doubflo* DD,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
                 f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
                 f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -196,7 +196,7 @@ extern "C" __global__ void QSlipDevice27(doubflo* DD,
                  (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                  (f_T - f_B); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -263,10 +263,10 @@ extern "C" __global__ void QSlipDevice27(doubflo* DD,
       //Test
       //(D.f[dirZERO])[k]=c1o10;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo fac = one;//c99o100;
-	  doubflo VeloX = fac*vx1;
-	  doubflo VeloY = fac*vx2;
-	  doubflo VeloZ = fac*vx3;
+	  real fac = one;//c99o100;
+	  real VeloX = fac*vx1;
+	  real VeloY = fac*vx2;
+	  real VeloZ = fac*vx3;
 	  bool x = false;
 	  bool y = false;
 	  bool z = false;
@@ -653,11 +653,11 @@ extern "C" __global__ void QSlipDevice27(doubflo* DD,
 
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QSlipDeviceComp27(doubflo* DD, 
+extern "C" __global__ void QSlipDeviceComp27(real* DD, 
 											 int* k_Q, 
-											 doubflo* QQ,
+											 real* QQ,
 											 unsigned int sizeQ,
-											 doubflo om1, 
+											 real om1, 
 											 unsigned int* neighborX,
 											 unsigned int* neighborY,
 											 unsigned int* neighborZ,
@@ -739,7 +739,7 @@ extern "C" __global__ void QSlipDeviceComp27(doubflo* DD,
    if(k<sizeQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -801,34 +801,34 @@ extern "C" __global__ void QSlipDeviceComp27(doubflo* DD,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
                 f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
                 f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -846,7 +846,7 @@ extern "C" __global__ void QSlipDeviceComp27(doubflo* DD,
                  (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                  (f_T - f_B)) / (one + drho); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -913,10 +913,10 @@ extern "C" __global__ void QSlipDeviceComp27(doubflo* DD,
       //Test
       //(D.f[dirZERO])[k]=c1o10;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo fac = one;//c99o100;
-	  doubflo VeloX = fac*vx1;
-	  doubflo VeloY = fac*vx2;
-	  doubflo VeloZ = fac*vx3;
+	  real fac = one;//c99o100;
+	  real VeloX = fac*vx1;
+	  real VeloY = fac*vx2;
+	  real VeloZ = fac*vx3;
 	  bool x = false;
 	  bool y = false;
 	  bool z = false;
@@ -1355,14 +1355,14 @@ extern "C" __global__ void QSlipDeviceComp27(doubflo* DD,
 
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QSlipGeomDeviceComp27(doubflo* DD, 
+extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, 
 												 int* k_Q, 
-												 doubflo* QQ,
+												 real* QQ,
 												 unsigned int sizeQ,
-												 doubflo om1, 
-												 doubflo* NormalX,
-												 doubflo* NormalY,
-												 doubflo* NormalZ,
+												 real om1, 
+												 real* NormalX,
+												 real* NormalY,
+												 real* NormalZ,
 												 unsigned int* neighborX,
 												 unsigned int* neighborY,
 												 unsigned int* neighborZ,
@@ -1444,7 +1444,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(doubflo* DD,
    if(k<sizeQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -1476,7 +1476,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(doubflo* DD,
       q_dirBSE = &QQ[dirBSE *sizeQ];
       q_dirBNW = &QQ[dirBNW *sizeQ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *nx_dirE,   *nx_dirW,   *nx_dirN,   *nx_dirS,   *nx_dirT,   *nx_dirB, 
+      real *nx_dirE,   *nx_dirW,   *nx_dirN,   *nx_dirS,   *nx_dirT,   *nx_dirB, 
               *nx_dirNE,  *nx_dirSW,  *nx_dirSE,  *nx_dirNW,  *nx_dirTE,  *nx_dirBW,
               *nx_dirBE,  *nx_dirTW,  *nx_dirTN,  *nx_dirBS,  *nx_dirBN,  *nx_dirTS,
               *nx_dirTNE, *nx_dirTSW, *nx_dirTSE, *nx_dirTNW, *nx_dirBNE, *nx_dirBSW,
@@ -1508,7 +1508,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(doubflo* DD,
       nx_dirBSE = &NormalX[dirBSE *sizeQ];
       nx_dirBNW = &NormalX[dirBNW *sizeQ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *ny_dirE,   *ny_dirW,   *ny_dirN,   *ny_dirS,   *ny_dirT,   *ny_dirB, 
+      real *ny_dirE,   *ny_dirW,   *ny_dirN,   *ny_dirS,   *ny_dirT,   *ny_dirB, 
               *ny_dirNE,  *ny_dirSW,  *ny_dirSE,  *ny_dirNW,  *ny_dirTE,  *ny_dirBW,
               *ny_dirBE,  *ny_dirTW,  *ny_dirTN,  *ny_dirBS,  *ny_dirBN,  *ny_dirTS,
               *ny_dirTNE, *ny_dirTSW, *ny_dirTSE, *ny_dirTNW, *ny_dirBNE, *ny_dirBSW,
@@ -1540,7 +1540,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(doubflo* DD,
       ny_dirBSE = &NormalY[dirBSE *sizeQ];
       ny_dirBNW = &NormalY[dirBNW *sizeQ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *nz_dirE,   *nz_dirW,   *nz_dirN,   *nz_dirS,   *nz_dirT,   *nz_dirB, 
+      real *nz_dirE,   *nz_dirW,   *nz_dirN,   *nz_dirS,   *nz_dirT,   *nz_dirB, 
               *nz_dirNE,  *nz_dirSW,  *nz_dirSE,  *nz_dirNW,  *nz_dirTE,  *nz_dirBW,
               *nz_dirBE,  *nz_dirTW,  *nz_dirTN,  *nz_dirBS,  *nz_dirBN,  *nz_dirTS,
               *nz_dirTNE, *nz_dirTSW, *nz_dirTSE, *nz_dirTNW, *nz_dirBNE, *nz_dirBSW,
@@ -1602,34 +1602,34 @@ extern "C" __global__ void QSlipGeomDeviceComp27(doubflo* DD,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
                 f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
                 f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -1647,7 +1647,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(doubflo* DD,
                  (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                  (f_T - f_B)) / (one + drho); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -1711,42 +1711,42 @@ extern "C" __global__ void QSlipGeomDeviceComp27(doubflo* DD,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo VeloX = vx1;
-	  doubflo VeloY = vx2;
-	  doubflo VeloZ = vx3;
-	  doubflo fac = zero;//0.5;
- 	  doubflo phi = zero;
-	  doubflo alpha = c1o100;
+	  real VeloX = vx1;
+	  real VeloY = vx2;
+	  real VeloZ = vx3;
+	  real fac = zero;//0.5;
+ 	  real phi = zero;
+	  real alpha = c1o100;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo kxyFromfcNEQ = -(three * om1 / (one-om1))*((f_SW+f_BSW+f_TSW-f_NW-f_BNW-f_TNW-f_SE-f_BSE-f_TSE+f_NE+f_BNE+f_TNE ) / (one + drho) - ((vx1*vx2)));
-      doubflo kyzFromfcNEQ = -(three * om1 / (one-om1))*((f_BS+f_BSE+f_BSW-f_TS-f_TSE-f_TSW-f_BN-f_BNE-f_BNW+f_TN+f_TNE+f_TNW ) / (one + drho) - ((vx2*vx3)));
-      doubflo kxzFromfcNEQ = -(three * om1 / (one-om1))*((f_BW+f_BSW+f_BNW-f_TW-f_TSW-f_TNW-f_BE-f_BSE-f_BNE+f_TE+f_TSE+f_TNE ) / (one + drho) - ((vx1*vx3)));
+      real kxyFromfcNEQ = -(three * om1 / (one-om1))*((f_SW+f_BSW+f_TSW-f_NW-f_BNW-f_TNW-f_SE-f_BSE-f_TSE+f_NE+f_BNE+f_TNE ) / (one + drho) - ((vx1*vx2)));
+      real kyzFromfcNEQ = -(three * om1 / (one-om1))*((f_BS+f_BSE+f_BSW-f_TS-f_TSE-f_TSW-f_BN-f_BNE-f_BNW+f_TN+f_TNE+f_TNW ) / (one + drho) - ((vx2*vx3)));
+      real kxzFromfcNEQ = -(three * om1 / (one-om1))*((f_BW+f_BSW+f_BNW-f_TW-f_TSW-f_TNW-f_BE-f_BSE-f_BNE+f_TE+f_TSE+f_TNE ) / (one + drho) - ((vx1*vx3)));
 
-	  doubflo kxxFromfcNEQ = -(three * om1 / (one-om1))*((f_E+f_NE+f_SE+f_TE+f_BE+f_W+f_NW+f_SW+f_TW+f_BW+ f_TNE+f_TSE+f_BNE+f_TNE+ f_TNW+f_TSW+f_BNW+f_TNW ) / (one + drho) - ((c1o3*drho + vx1*vx1)));
-	  doubflo kyyFromfcNEQ = -(three * om1 / (one-om1))*((f_N+f_NE+f_NW+f_TN+f_BN+f_S+f_SE+f_SW+f_TS+f_BS+ f_TNE+f_TSE+f_BNE+f_TNE+ f_TNW+f_TSW+f_BNW+f_TNW ) / (one + drho) - ((c1o3*drho + vx2*vx2)));
-	  doubflo kzzFromfcNEQ = -(three * om1 / (one-om1))*((f_T+f_TE+f_TW+f_TN+f_BS+f_B+f_BE+f_BW+f_BN+f_BS+ f_TNE+f_TSE+f_BNE+f_TNE+ f_TNW+f_TSW+f_BNW+f_TNW ) / (one + drho) - ((c1o3*drho + vx3*vx3)));
+	  real kxxFromfcNEQ = -(three * om1 / (one-om1))*((f_E+f_NE+f_SE+f_TE+f_BE+f_W+f_NW+f_SW+f_TW+f_BW+ f_TNE+f_TSE+f_BNE+f_TNE+ f_TNW+f_TSW+f_BNW+f_TNW ) / (one + drho) - ((c1o3*drho + vx1*vx1)));
+	  real kyyFromfcNEQ = -(three * om1 / (one-om1))*((f_N+f_NE+f_NW+f_TN+f_BN+f_S+f_SE+f_SW+f_TS+f_BS+ f_TNE+f_TSE+f_BNE+f_TNE+ f_TNW+f_TSW+f_BNW+f_TNW ) / (one + drho) - ((c1o3*drho + vx2*vx2)));
+	  real kzzFromfcNEQ = -(three * om1 / (one-om1))*((f_T+f_TE+f_TW+f_TN+f_BS+f_B+f_BE+f_BW+f_BN+f_BS+ f_TNE+f_TSE+f_BNE+f_TNE+ f_TNW+f_TSW+f_BNW+f_TNW ) / (one + drho) - ((c1o3*drho + vx3*vx3)));
 
-	  doubflo magS = sqrtf(kxyFromfcNEQ*kxyFromfcNEQ + kyzFromfcNEQ*kyzFromfcNEQ + kxzFromfcNEQ*kxzFromfcNEQ + kxxFromfcNEQ*kxxFromfcNEQ + kyyFromfcNEQ*kyyFromfcNEQ + kzzFromfcNEQ*kzzFromfcNEQ);
+	  real magS = sqrtf(kxyFromfcNEQ*kxyFromfcNEQ + kyzFromfcNEQ*kyzFromfcNEQ + kxzFromfcNEQ*kxzFromfcNEQ + kxxFromfcNEQ*kxxFromfcNEQ + kyyFromfcNEQ*kyyFromfcNEQ + kzzFromfcNEQ*kzzFromfcNEQ);
 
 	  //fac = fac * magS / (c1o3 * (one / om1 - c1o2));
    //   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo *facAst = &QQ[dirZERO *sizeQ];
+	  //real *facAst = &QQ[dirZERO *sizeQ];
 
 	  //fac = fac * alpha + facAst[k] * (one - alpha);
 	  //facAst[k] = fac;
 	  //(&QQ[dirZERO *sizeQ])[KQK] = fac;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  ////doubflo uk = sqrtf(vx1*vx1 + vx2*vx2 + vx3*vx3);
+	  ////real uk = sqrtf(vx1*vx1 + vx2*vx2 + vx3*vx3);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo phi = expf(magS/0.01f) - one;
+	  //real phi = expf(magS/0.01f) - one;
 	  //phi = (phi > one) ? one:phi;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo C = five;
-	  //doubflo kappa = 0.41f;
-	  //doubflo phi = (C * kappa * c1o2 * logf(magS / (c1o3 * (one / om1 - c1o2))) - one) / (C * kappa * c1o2 * logf(magS / (c1o3 * (one / om1 - c1o2))));
+	  //real C = five;
+	  //real kappa = 0.41f;
+	  //real phi = (C * kappa * c1o2 * logf(magS / (c1o3 * (one / om1 - c1o2))) - one) / (C * kappa * c1o2 * logf(magS / (c1o3 * (one / om1 - c1o2))));
 	  //phi = (phi < zero) ? zero:phi;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo sum = zero, count = zero;
+	  //real sum = zero, count = zero;
    //   q = q_dirE   [k]; if (q>=zero && q<=one) sum += (q *   nx_dirE[k] ); count += one;
    //   q = q_dirW   [k]; if (q>=zero && q<=one) sum += (q * (-nx_dirW[k])); count += one;
    //   q = q_dirN   [k]; if (q>=zero && q<=one) sum += (q *   nx_dirN[k] ); count += one;
@@ -1773,11 +1773,11 @@ extern "C" __global__ void QSlipGeomDeviceComp27(doubflo* DD,
    //   q = q_dirBSW [k]; if (q>=zero && q<=one) sum += (q * ((-nx_dirBSW[k])- ny_dirBSW[k] - nz_dirBSW[k])/(sqrtf(three))); count += one;
    //   q = q_dirBSE [k]; if (q>=zero && q<=one) sum += (q * (  nx_dirBSE[k] - ny_dirBSE[k] - nz_dirBSE[k])/(sqrtf(three))); count += one;
    //   q = q_dirBNW [k]; if (q>=zero && q<=one) sum += (q * ((-nx_dirBNW[k])+ ny_dirBNW[k] - nz_dirBNW[k])/(sqrtf(three))); count += one;
-	  //doubflo qMed = sum/count;
-	  //doubflo phi = fac / (qMed + fac);
+	  //real qMed = sum/count;
+	  //real phi = fac / (qMed + fac);
 	  //phi = (phi > one) ? one:one;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo testQ = two;
+	  real testQ = two;
 
       q = q_dirE[k];
       if (q>=zero && q<=one)
@@ -2241,14 +2241,14 @@ extern "C" __global__ void QSlipGeomDeviceComp27(doubflo* DD,
 
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QSlipNormDeviceComp27(doubflo* DD, 
+extern "C" __global__ void QSlipNormDeviceComp27(real* DD, 
 												 int* k_Q, 
-												 doubflo* QQ,
+												 real* QQ,
 												 unsigned int sizeQ,
-												 doubflo om1, 
-												 doubflo* NormalX,
-												 doubflo* NormalY,
-												 doubflo* NormalZ,
+												 real om1, 
+												 real* NormalX,
+												 real* NormalY,
+												 real* NormalZ,
 												 unsigned int* neighborX,
 												 unsigned int* neighborY,
 												 unsigned int* neighborZ,
@@ -2330,7 +2330,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(doubflo* DD,
    if(k<sizeQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -2362,7 +2362,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(doubflo* DD,
       q_dirBSE = &QQ[dirBSE *sizeQ];
       q_dirBNW = &QQ[dirBNW *sizeQ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *nx_dirE,   *nx_dirW,   *nx_dirN,   *nx_dirS,   *nx_dirT,   *nx_dirB, 
+      real *nx_dirE,   *nx_dirW,   *nx_dirN,   *nx_dirS,   *nx_dirT,   *nx_dirB, 
               *nx_dirNE,  *nx_dirSW,  *nx_dirSE,  *nx_dirNW,  *nx_dirTE,  *nx_dirBW,
               *nx_dirBE,  *nx_dirTW,  *nx_dirTN,  *nx_dirBS,  *nx_dirBN,  *nx_dirTS,
               *nx_dirTNE, *nx_dirTSW, *nx_dirTSE, *nx_dirTNW, *nx_dirBNE, *nx_dirBSW,
@@ -2394,7 +2394,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(doubflo* DD,
       nx_dirBSE = &NormalX[dirBSE *sizeQ];
       nx_dirBNW = &NormalX[dirBNW *sizeQ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *ny_dirE,   *ny_dirW,   *ny_dirN,   *ny_dirS,   *ny_dirT,   *ny_dirB, 
+      real *ny_dirE,   *ny_dirW,   *ny_dirN,   *ny_dirS,   *ny_dirT,   *ny_dirB, 
               *ny_dirNE,  *ny_dirSW,  *ny_dirSE,  *ny_dirNW,  *ny_dirTE,  *ny_dirBW,
               *ny_dirBE,  *ny_dirTW,  *ny_dirTN,  *ny_dirBS,  *ny_dirBN,  *ny_dirTS,
               *ny_dirTNE, *ny_dirTSW, *ny_dirTSE, *ny_dirTNW, *ny_dirBNE, *ny_dirBSW,
@@ -2426,7 +2426,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(doubflo* DD,
       ny_dirBSE = &NormalY[dirBSE *sizeQ];
       ny_dirBNW = &NormalY[dirBNW *sizeQ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *nz_dirE,   *nz_dirW,   *nz_dirN,   *nz_dirS,   *nz_dirT,   *nz_dirB, 
+      real *nz_dirE,   *nz_dirW,   *nz_dirN,   *nz_dirS,   *nz_dirT,   *nz_dirB, 
               *nz_dirNE,  *nz_dirSW,  *nz_dirSE,  *nz_dirNW,  *nz_dirTE,  *nz_dirBW,
               *nz_dirBE,  *nz_dirTW,  *nz_dirTN,  *nz_dirBS,  *nz_dirBN,  *nz_dirTS,
               *nz_dirTNE, *nz_dirTSW, *nz_dirTSE, *nz_dirTNW, *nz_dirBNE, *nz_dirBSW,
@@ -2488,34 +2488,34 @@ extern "C" __global__ void QSlipNormDeviceComp27(doubflo* DD,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
                 f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
                 f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -2533,7 +2533,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(doubflo* DD,
                  (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                  (f_T - f_B)) / (one + drho); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -2597,42 +2597,42 @@ extern "C" __global__ void QSlipNormDeviceComp27(doubflo* DD,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo VeloX = vx1;
-	  doubflo VeloY = vx2;
-	  doubflo VeloZ = vx3;
-	  doubflo fac = c1o100;//0.5;
- 	  doubflo phi = zero;
-	  doubflo alpha = c1o100;
+	  real VeloX = vx1;
+	  real VeloY = vx2;
+	  real VeloZ = vx3;
+	  real fac = c1o100;//0.5;
+ 	  real phi = zero;
+	  real alpha = c1o100;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo kxyFromfcNEQ = -(three * om1 / (one-om1))*((f_SW+f_BSW+f_TSW-f_NW-f_BNW-f_TNW-f_SE-f_BSE-f_TSE+f_NE+f_BNE+f_TNE ) / (one + drho) - ((vx1*vx2)));
-      doubflo kyzFromfcNEQ = -(three * om1 / (one-om1))*((f_BS+f_BSE+f_BSW-f_TS-f_TSE-f_TSW-f_BN-f_BNE-f_BNW+f_TN+f_TNE+f_TNW ) / (one + drho) - ((vx2*vx3)));
-      doubflo kxzFromfcNEQ = -(three * om1 / (one-om1))*((f_BW+f_BSW+f_BNW-f_TW-f_TSW-f_TNW-f_BE-f_BSE-f_BNE+f_TE+f_TSE+f_TNE ) / (one + drho) - ((vx1*vx3)));
+      real kxyFromfcNEQ = -(three * om1 / (one-om1))*((f_SW+f_BSW+f_TSW-f_NW-f_BNW-f_TNW-f_SE-f_BSE-f_TSE+f_NE+f_BNE+f_TNE ) / (one + drho) - ((vx1*vx2)));
+      real kyzFromfcNEQ = -(three * om1 / (one-om1))*((f_BS+f_BSE+f_BSW-f_TS-f_TSE-f_TSW-f_BN-f_BNE-f_BNW+f_TN+f_TNE+f_TNW ) / (one + drho) - ((vx2*vx3)));
+      real kxzFromfcNEQ = -(three * om1 / (one-om1))*((f_BW+f_BSW+f_BNW-f_TW-f_TSW-f_TNW-f_BE-f_BSE-f_BNE+f_TE+f_TSE+f_TNE ) / (one + drho) - ((vx1*vx3)));
 
-	  doubflo kxxFromfcNEQ = -(three * om1 / (one-om1))*((f_E+f_NE+f_SE+f_TE+f_BE+f_W+f_NW+f_SW+f_TW+f_BW+ f_TNE+f_TSE+f_BNE+f_TNE+ f_TNW+f_TSW+f_BNW+f_TNW ) / (one + drho) - ((c1o3*drho + vx1*vx1)));
-	  doubflo kyyFromfcNEQ = -(three * om1 / (one-om1))*((f_N+f_NE+f_NW+f_TN+f_BN+f_S+f_SE+f_SW+f_TS+f_BS+ f_TNE+f_TSE+f_BNE+f_TNE+ f_TNW+f_TSW+f_BNW+f_TNW ) / (one + drho) - ((c1o3*drho + vx2*vx2)));
-	  doubflo kzzFromfcNEQ = -(three * om1 / (one-om1))*((f_T+f_TE+f_TW+f_TN+f_BS+f_B+f_BE+f_BW+f_BN+f_BS+ f_TNE+f_TSE+f_BNE+f_TNE+ f_TNW+f_TSW+f_BNW+f_TNW ) / (one + drho) - ((c1o3*drho + vx3*vx3)));
+	  real kxxFromfcNEQ = -(three * om1 / (one-om1))*((f_E+f_NE+f_SE+f_TE+f_BE+f_W+f_NW+f_SW+f_TW+f_BW+ f_TNE+f_TSE+f_BNE+f_TNE+ f_TNW+f_TSW+f_BNW+f_TNW ) / (one + drho) - ((c1o3*drho + vx1*vx1)));
+	  real kyyFromfcNEQ = -(three * om1 / (one-om1))*((f_N+f_NE+f_NW+f_TN+f_BN+f_S+f_SE+f_SW+f_TS+f_BS+ f_TNE+f_TSE+f_BNE+f_TNE+ f_TNW+f_TSW+f_BNW+f_TNW ) / (one + drho) - ((c1o3*drho + vx2*vx2)));
+	  real kzzFromfcNEQ = -(three * om1 / (one-om1))*((f_T+f_TE+f_TW+f_TN+f_BS+f_B+f_BE+f_BW+f_BN+f_BS+ f_TNE+f_TSE+f_BNE+f_TNE+ f_TNW+f_TSW+f_BNW+f_TNW ) / (one + drho) - ((c1o3*drho + vx3*vx3)));
 
-	  doubflo magS = sqrtf(kxyFromfcNEQ*kxyFromfcNEQ + kyzFromfcNEQ*kyzFromfcNEQ + kxzFromfcNEQ*kxzFromfcNEQ + kxxFromfcNEQ*kxxFromfcNEQ + kyyFromfcNEQ*kyyFromfcNEQ + kzzFromfcNEQ*kzzFromfcNEQ);
+	  real magS = sqrtf(kxyFromfcNEQ*kxyFromfcNEQ + kyzFromfcNEQ*kyzFromfcNEQ + kxzFromfcNEQ*kxzFromfcNEQ + kxxFromfcNEQ*kxxFromfcNEQ + kyyFromfcNEQ*kyyFromfcNEQ + kzzFromfcNEQ*kzzFromfcNEQ);
 
 	  fac = fac * magS / (c1o3 * (one / om1 - c1o2));
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo *facAst = &QQ[dirZERO *sizeQ];
+	  real *facAst = &QQ[dirZERO *sizeQ];
 
 	  fac = fac * alpha + facAst[k] * (one - alpha);
 	  facAst[k] = fac;
 	  //(&QQ[dirZERO *sizeQ])[KQK] = fac;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  ////doubflo uk = sqrtf(vx1*vx1 + vx2*vx2 + vx3*vx3);
+	  ////real uk = sqrtf(vx1*vx1 + vx2*vx2 + vx3*vx3);
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo phi = expf(magS/0.01f) - one;
+	  //real phi = expf(magS/0.01f) - one;
 	  //phi = (phi > one) ? one:phi;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo C = five;
-	  //doubflo kappa = 0.41f;
-	  //doubflo phi = (C * kappa * c1o2 * logf(magS / (c1o3 * (one / om1 - c1o2))) - one) / (C * kappa * c1o2 * logf(magS / (c1o3 * (one / om1 - c1o2))));
+	  //real C = five;
+	  //real kappa = 0.41f;
+	  //real phi = (C * kappa * c1o2 * logf(magS / (c1o3 * (one / om1 - c1o2))) - one) / (C * kappa * c1o2 * logf(magS / (c1o3 * (one / om1 - c1o2))));
 	  //phi = (phi < zero) ? zero:phi;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  //doubflo sum = zero, count = zero;
+	  //real sum = zero, count = zero;
    //   q = q_dirE   [k]; if (q>=zero && q<=one) sum += (q *   nx_dirE[k] ); count += one;
    //   q = q_dirW   [k]; if (q>=zero && q<=one) sum += (q * (-nx_dirW[k])); count += one;
    //   q = q_dirN   [k]; if (q>=zero && q<=one) sum += (q *   nx_dirN[k] ); count += one;
@@ -2659,16 +2659,16 @@ extern "C" __global__ void QSlipNormDeviceComp27(doubflo* DD,
    //   q = q_dirBSW [k]; if (q>=zero && q<=one) sum += (q * ((-nx_dirBSW[k])- ny_dirBSW[k] - nz_dirBSW[k])/(sqrtf(three))); count += one;
    //   q = q_dirBSE [k]; if (q>=zero && q<=one) sum += (q * (  nx_dirBSE[k] - ny_dirBSE[k] - nz_dirBSE[k])/(sqrtf(three))); count += one;
    //   q = q_dirBNW [k]; if (q>=zero && q<=one) sum += (q * ((-nx_dirBNW[k])+ ny_dirBNW[k] - nz_dirBNW[k])/(sqrtf(three))); count += one;
-	  //doubflo qMed = sum/count;
-	  //doubflo phi = fac / (qMed + fac);
+	  //real qMed = sum/count;
+	  //real phi = fac / (qMed + fac);
 	  //phi = (phi > one) ? one:one;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo sliplength = 0.9f;//c1o2;
-	  doubflo qSlip = zero;
-	  doubflo un = zero;
-	  doubflo ut = zero;
-	  doubflo tangential = zero;
-	  //doubflo smallSingle = Op0000002;
+	  real sliplength = 0.9f;//c1o2;
+	  real qSlip = zero;
+	  real un = zero;
+	  real ut = zero;
+	  real tangential = zero;
+	  //real smallSingle = Op0000002;
 
       q = q_dirE[k];
       if (q>=zero && q<=one)
diff --git a/src/VirtualFluids_GPU/GPU/VelocityBCs27.cu b/src/VirtualFluids_GPU/GPU/VelocityBCs27.cu
index 6d88f4b5a..809c65ada 100644
--- a/src/VirtualFluids_GPU/GPU/VelocityBCs27.cu
+++ b/src/VirtualFluids_GPU/GPU/VelocityBCs27.cu
@@ -5,15 +5,15 @@
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx,
 													int iny,
-													doubflo* vx,
-													doubflo* vy,
-													doubflo* vz,
-													doubflo* DD, 
+													real* vx,
+													real* vy,
+													real* vz,
+													real* DD, 
 													int* k_Q, 
-													doubflo* QQ,
+													real* QQ,
 													unsigned int sizeQ,
 													int kQ, 
-													doubflo om1, 
+													real om1, 
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
@@ -95,11 +95,11 @@ extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx,
    if (k < kQ)
    {
 	   ////////////////////////////////////////////////////////////////////////////////
-	   doubflo VeloX = vx[k];
-	   doubflo VeloY = vy[k];
-	   doubflo VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
+	   real VeloX = vx[k];
+	   real VeloY = vy[k];
+	   real VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
 	   ////////////////////////////////////////////////////////////////////////////////
-	   doubflo *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB,
+	   real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB,
 		   *q_dirNE, *q_dirSW, *q_dirSE, *q_dirNW, *q_dirTE, *q_dirBW,
 		   *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS,
 		   *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -161,7 +161,7 @@ extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx,
 	   unsigned int ktne = KQK;
 	   unsigned int kbsw = neighborZ[ksw];
 	   ////////////////////////////////////////////////////////////////////////////////
-	   doubflo f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE,
+	   real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE,
 		   f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
 	   f_W = (D.f[dirE])[ke];
@@ -191,7 +191,7 @@ extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx,
 	   f_TNW = (D.f[dirBSE])[kbse];
 	   f_TSE = (D.f[dirBNW])[kbnw];
 	   ////////////////////////////////////////////////////////////////////////////////
-	   doubflo vx1, vx2, vx3, drho, feq, q;
+	   real vx1, vx2, vx3, drho, feq, q;
 	   drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
 		   f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW +
 		   f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]);
@@ -209,7 +209,7 @@ extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx,
 		   (-(f_BN - f_TS) + (f_TN - f_BS)) + ((f_TE - f_BW) - (f_BE - f_TW)) +
 		   (f_T - f_B)) / (one + drho);
 
-	   doubflo cu_sq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3) * (one + drho);
+	   real cu_sq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3) * (one + drho);
 
 	   //////////////////////////////////////////////////////////////////////////
 	   if (evenOrOdd == false)
@@ -285,7 +285,7 @@ extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx,
 		{
 		   // vt=v-(n \dot v) *n
 		   // n=(VeloX,VeloY,VeloZ) a misuse of the velocity variable!
-		   doubflo normalV = VeloX*vx1 + VeloY*vx2 + VeloZ*vx3;
+		   real normalV = VeloX*vx1 + VeloY*vx2 + VeloZ*vx3;
 		   vx1 = vx1 - normalV*VeloX;
 		   vx2 = vx2 - normalV*VeloY;
 		   vx3 = vx3 - normalV*VeloZ;
@@ -542,13 +542,13 @@ extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx,
 
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QVeloDeviceEQ27(doubflo* VeloX,
-										   doubflo* VeloY,
-										   doubflo* VeloZ,
-                                           doubflo* DD, 
+extern "C" __global__ void QVeloDeviceEQ27(real* VeloX,
+										   real* VeloY,
+										   real* VeloZ,
+                                           real* DD, 
                                            int* k_Q, 
                                            int kQ, 
-                                           doubflo om1, 
+                                           real om1, 
                                            unsigned int* neighborX,
                                            unsigned int* neighborY,
                                            unsigned int* neighborZ,
@@ -664,45 +664,45 @@ extern "C" __global__ void QVeloDeviceEQ27(doubflo* VeloX,
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
             // based on BGK Plus Comp
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[ke   ];
-			doubflo mfabb = (D.f[dirW   ])[kw   ];
-			doubflo mfbcb = (D.f[dirN   ])[kn   ];
-			doubflo mfbab = (D.f[dirS   ])[ks   ];
-			doubflo mfbbc = (D.f[dirT   ])[kt   ];
-			doubflo mfbba = (D.f[dirB   ])[kb   ];
-			doubflo mfccb = (D.f[dirNE  ])[kne  ];
-			doubflo mfaab = (D.f[dirSW  ])[ksw  ];
-			doubflo mfcab = (D.f[dirSE  ])[kse  ];
-			doubflo mfacb = (D.f[dirNW  ])[knw  ];
-			doubflo mfcbc = (D.f[dirTE  ])[kte  ];
-			doubflo mfaba = (D.f[dirBW  ])[kbw  ];
-			doubflo mfcba = (D.f[dirBE  ])[kbe  ];
-			doubflo mfabc = (D.f[dirTW  ])[ktw  ];
-			doubflo mfbcc = (D.f[dirTN  ])[ktn  ];
-			doubflo mfbaa = (D.f[dirBS  ])[kbs  ];
-			doubflo mfbca = (D.f[dirBN  ])[kbn  ];
-			doubflo mfbac = (D.f[dirTS  ])[kts  ];
-			doubflo mfbbb = (D.f[dirZERO])[kzero];
-			doubflo mfccc = (D.f[dirTNE ])[ktne ];
-			doubflo mfaac = (D.f[dirTSW ])[ktsw ];
-			doubflo mfcac = (D.f[dirTSE ])[ktse ];
-			doubflo mfacc = (D.f[dirTNW ])[ktnw ];
-			doubflo mfcca = (D.f[dirBNE ])[kbne ];
-			doubflo mfaaa = (D.f[dirBSW ])[kbsw ];
-			doubflo mfcaa = (D.f[dirBSE ])[kbse ];
-			doubflo mfaca = (D.f[dirBNW ])[kbnw ];
+			real mfcbb = (D.f[dirE   ])[ke   ];
+			real mfabb = (D.f[dirW   ])[kw   ];
+			real mfbcb = (D.f[dirN   ])[kn   ];
+			real mfbab = (D.f[dirS   ])[ks   ];
+			real mfbbc = (D.f[dirT   ])[kt   ];
+			real mfbba = (D.f[dirB   ])[kb   ];
+			real mfccb = (D.f[dirNE  ])[kne  ];
+			real mfaab = (D.f[dirSW  ])[ksw  ];
+			real mfcab = (D.f[dirSE  ])[kse  ];
+			real mfacb = (D.f[dirNW  ])[knw  ];
+			real mfcbc = (D.f[dirTE  ])[kte  ];
+			real mfaba = (D.f[dirBW  ])[kbw  ];
+			real mfcba = (D.f[dirBE  ])[kbe  ];
+			real mfabc = (D.f[dirTW  ])[ktw  ];
+			real mfbcc = (D.f[dirTN  ])[ktn  ];
+			real mfbaa = (D.f[dirBS  ])[kbs  ];
+			real mfbca = (D.f[dirBN  ])[kbn  ];
+			real mfbac = (D.f[dirTS  ])[kts  ];
+			real mfbbb = (D.f[dirZERO])[kzero];
+			real mfccc = (D.f[dirTNE ])[ktne ];
+			real mfaac = (D.f[dirTSW ])[ktsw ];
+			real mfcac = (D.f[dirTSE ])[ktse ];
+			real mfacc = (D.f[dirTNW ])[ktnw ];
+			real mfcca = (D.f[dirBNE ])[kbne ];
+			real mfaaa = (D.f[dirBSW ])[kbsw ];
+			real mfcaa = (D.f[dirBSE ])[kbse ];
+			real mfaca = (D.f[dirBNW ])[kbnw ];
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo rho   = (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + 
+			real rho   = (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 + one);//!!!!Achtung + one
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo vvx    = ((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    = ((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb)) / rho;
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab)) / rho;
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
@@ -710,19 +710,19 @@ extern "C" __global__ void QVeloDeviceEQ27(doubflo* VeloX,
 			if(VeloY[k]!=zero) vvy = VeloY[k];
 			if(VeloZ[k]!=zero) vvz = VeloZ[k];
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo vx2    = vvx * vvx;
-			doubflo vy2    = vvy * vvy;
-			doubflo vz2    = vvz * vvz;
+			real vx2    = vvx * vvx;
+			real vy2    = vvy * vvy;
+			real vz2    = vvz * vvz;
 			////////////////////////////////////////////////////////////////////////////////////
-            doubflo XXb    = -c2o3 + vx2;
-            doubflo XXc    = -c1o2 * (XXb + one + vvx);
-            doubflo XXa    = XXc + vvx;
-            doubflo YYb    = -c2o3 + vy2;
-            doubflo YYc    = -c1o2 * (YYb + one + vvy);
-            doubflo YYa    = YYc + vvy;
-            doubflo ZZb    = -c2o3 + vz2;
-            doubflo ZZc    = -c1o2 * (ZZb + one + vvz);
-            doubflo ZZa    = ZZc + vvz;
+            real XXb    = -c2o3 + vx2;
+            real XXc    = -c1o2 * (XXb + one + vvx);
+            real XXa    = XXc + vvx;
+            real YYb    = -c2o3 + vy2;
+            real YYc    = -c1o2 * (YYb + one + vvy);
+            real YYa    = YYc + vvy;
+            real ZZb    = -c2o3 + vz2;
+            real ZZc    = -c1o2 * (ZZb + one + vvz);
+            real ZZa    = ZZc + vvz;
 			////////////////////////////////////////////////////////////////////////////////////
             mfcbb = -rho * XXc * YYb * ZZb - c2over27 ; 
 			mfabb = -rho * XXa * YYb * ZZb - c2over27 ;
@@ -824,15 +824,15 @@ extern "C" __global__ void QVeloDeviceEQ27(doubflo* VeloX,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QVelDeviceIncompHighNu27(int inx,
 													int iny,
-													doubflo* vx,
-													doubflo* vy,
-													doubflo* vz,
-													doubflo* DD, 
+													real* vx,
+													real* vy,
+													real* vz,
+													real* DD, 
 													int* k_Q, 
-													doubflo* QQ,
+													real* QQ,
 													unsigned int sizeQ,
 													int kQ, 
-													doubflo om1, 
+													real om1, 
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
@@ -914,11 +914,11 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo VeloX = vx[k];
-      doubflo VeloY = vy[k];
-      doubflo VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
+      real VeloX = vx[k];
+      real VeloY = vy[k];
+      real VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -980,7 +980,7 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
          f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_E   = (D.f[dirE   ])[ke   ];
@@ -1010,7 +1010,7 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx,
       f_BSE = (D.f[dirBSE ])[kbse ];
       f_BNW = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
                 f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
                 f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -1028,7 +1028,7 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx,
                  (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                  (f_T - f_B));// / (one + drho); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);// * (one + drho);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);// * (one + drho);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -1324,15 +1324,15 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QVelDeviceCompHighNu27(  int inx,
 													int iny,
-													doubflo* vx,
-													doubflo* vy,
-													doubflo* vz,
-													doubflo* DD, 
+													real* vx,
+													real* vy,
+													real* vz,
+													real* DD, 
 													int* k_Q, 
-													doubflo* QQ,
+													real* QQ,
 													unsigned int sizeQ,
 													int kQ, 
-													doubflo om1, 
+													real om1, 
 													unsigned int* neighborX,
 													unsigned int* neighborY,
 													unsigned int* neighborZ,
@@ -1414,11 +1414,11 @@ extern "C" __global__ void QVelDeviceCompHighNu27(  int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo VeloX = vx[k];
-      doubflo VeloY = vy[k];
-      doubflo VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
+      real VeloX = vx[k];
+      real VeloY = vy[k];
+      real VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -1480,7 +1480,7 @@ extern "C" __global__ void QVelDeviceCompHighNu27(  int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
          f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_E   = (D.f[dirE   ])[ke   ];
@@ -1536,7 +1536,7 @@ extern "C" __global__ void QVelDeviceCompHighNu27(  int inx,
       //f_TNW  = (D.f[dirBSE ])[kbse ];
       //f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
                 f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
                 f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -1554,7 +1554,7 @@ extern "C" __global__ void QVelDeviceCompHighNu27(  int inx,
                  (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                  (f_T - f_B)) / (one + drho); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -1902,15 +1902,15 @@ extern "C" __global__ void QVelDeviceCompHighNu27(  int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QVelDeviceCompZeroPress27(   int inx,
 														int iny,
-														doubflo* vx,
-														doubflo* vy,
-														doubflo* vz,
-														doubflo* DD, 
+														real* vx,
+														real* vy,
+														real* vz,
+														real* DD, 
 														int* k_Q, 
-														doubflo* QQ,
+														real* QQ,
 														unsigned int sizeQ,
 														//int kQ, 
-														doubflo om1, 
+														real om1, 
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
@@ -1992,11 +1992,11 @@ extern "C" __global__ void QVelDeviceCompZeroPress27(   int inx,
    if(k<sizeQ/*kQ*/)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo VeloX = vx[k];
-      doubflo VeloY = vy[k];
-      doubflo VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
+      real VeloX = vx[k];
+      real VeloY = vy[k];
+      real VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -2058,7 +2058,7 @@ extern "C" __global__ void QVelDeviceCompZeroPress27(   int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
          f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -2088,7 +2088,7 @@ extern "C" __global__ void QVelDeviceCompZeroPress27(   int inx,
       f_TNW  = (D.f[dirBSE ])[kbse ];
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
                 f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
                 f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -2106,7 +2106,7 @@ extern "C" __global__ void QVelDeviceCompZeroPress27(   int inx,
                  (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                  (f_T - f_B)) / (one + drho); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -2428,23 +2428,23 @@ extern "C" __global__ void QVelDeviceCompZeroPress27(   int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QVelDeviceCompZeroPress1h27( int inx,
 														int iny,
-														doubflo* vx,
-														doubflo* vy,
-														doubflo* vz,
-														doubflo* DD, 
+														real* vx,
+														real* vy,
+														real* vz,
+														real* DD, 
 														int* k_Q, 
-														doubflo* QQ,
+														real* QQ,
 														unsigned int sizeQ,
 														int kQ, 
-														doubflo om1, 
-														doubflo Phi,
-														doubflo angularVelocity,
+														real om1, 
+														real Phi,
+														real angularVelocity,
 														unsigned int* neighborX,
 														unsigned int* neighborY,
 														unsigned int* neighborZ,
-														doubflo* coordX,
-														doubflo* coordY,
-														doubflo* coordZ,
+														real* coordX,
+														real* coordY,
+														real* coordZ,
 														unsigned int size_Mat, 
 														bool evenOrOdd)
 {
@@ -2523,25 +2523,25 @@ extern "C" __global__ void QVelDeviceCompZeroPress1h27( int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      //doubflo VeloX = vx[k];
-      //doubflo VeloY = vy[k];
-      //doubflo VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
+      //real VeloX = vx[k];
+      //real VeloY = vy[k];
+      //real VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo VeloX = cosf(Phi)*vx[k] - sinf(Phi)*vy[k];
-		doubflo VeloY = sinf(Phi)*vx[k] + cosf(Phi)*vy[k];
-		//doubflo VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
+		real VeloX = cosf(Phi)*vx[k] - sinf(Phi)*vy[k];
+		real VeloY = sinf(Phi)*vx[k] + cosf(Phi)*vy[k];
+		//real VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
 		////////////////////////////////////////////////////////////////////////////////////
 		//Ship
-		doubflo coord0X = 281.125f;//7.5f;
-		doubflo coord0Y = 388.125f;//7.5f;
-		doubflo ux = - angularVelocity * (coordY[k_Q[k]] - coord0Y);
-		doubflo uy =   angularVelocity * (coordX[k_Q[k]] - coord0X);
-		doubflo VeloXpur=VeloX;
-		doubflo VeloYpur=VeloY;
+		real coord0X = 281.125f;//7.5f;
+		real coord0Y = 388.125f;//7.5f;
+		real ux = - angularVelocity * (coordY[k_Q[k]] - coord0Y);
+		real uy =   angularVelocity * (coordX[k_Q[k]] - coord0X);
+		real VeloXpur=VeloX;
+		real VeloYpur=VeloY;
 		VeloX-=ux;
 		VeloY-=uy;
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -2664,7 +2664,7 @@ extern "C" __global__ void QVelDeviceCompZeroPress1h27( int inx,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-	  doubflo vx1, vx2, vx3, drho, feq, q, cu_sq;
+	  real vx1, vx2, vx3, drho, feq, q, cu_sq;
 	  ///////// equilibrium BC
 	  cu_sq=c3o2*(VeloX*VeloX +VeloY*VeloY);
 	  VeloXpur*=-one;
@@ -2906,13 +2906,13 @@ extern "C" __global__ void LB_BC_Vel_West_27( int nx,
                                               unsigned int* neighborX,
                                               unsigned int* neighborY,
                                               unsigned int* neighborZ,
-                                              doubflo* DD, 
+                                              real* DD, 
                                               unsigned int size_Mat, 
                                               bool evenOrOdd, 
-                                              doubflo u0x, 
+                                              real u0x, 
                                               unsigned int grid_nx, 
                                               unsigned int grid_ny, 
-                                              doubflo om) 
+                                              real om) 
 {
    //thread-index
    unsigned int ity = blockIdx.x;
@@ -3105,7 +3105,7 @@ extern "C" __global__ void LB_BC_Vel_West_27( int nx,
       //unsigned int k1tne = k1;
       //unsigned int k1bsw = k1 + nxny + nx + 1;
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
+      real        f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,
          f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW;
 
       f1_W    = (D.f[dirE   ])[k1e   ];
@@ -3136,19 +3136,19 @@ extern "C" __global__ void LB_BC_Vel_West_27( int nx,
       f1_TNW  = (D.f[dirBSE ])[k1bse ];
       f1_TSE  = (D.f[dirBNW ])[k1bnw ];
 
-      doubflo drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+
+      real drho1    =  f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+
          f1_TNE+f1_TSW+f1_TSE+f1_TNW+f1_BNE+f1_BSW+f1_BSE+f1_BNW;
 
       __syncthreads();
 
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-      doubflo drho = drho1;
-      doubflo  vx1 = zero;
-      doubflo  vx2 = zero;
-      doubflo  vx3 = u0x;
+      real drho = drho1;
+      real  vx1 = zero;
+      real  vx2 = zero;
+      real  vx3 = u0x;
       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
       (D.f[dirZERO])[kzero] =   c8over27* (drho-cu_sq);
       (D.f[dirE   ])[ke   ] =   c2over27* (drho+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cu_sq);
@@ -3221,15 +3221,15 @@ extern "C" __global__ void LB_BC_Vel_West_27( int nx,
 
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QVelDevPlainBB27(doubflo* vx,
-											doubflo* vy,
-	 										doubflo* vz,
-											doubflo* DD,
+extern "C" __global__ void QVelDevPlainBB27(real* vx,
+											real* vy,
+	 										real* vz,
+											real* DD,
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
@@ -3311,11 +3311,11 @@ extern "C" __global__ void QVelDevPlainBB27(doubflo* vx,
    if(k<kQ)
    {
 	  ////////////////////////////////////////////////////////////////////////////////
-	  doubflo VeloX = vx[k];
-	  doubflo VeloY = vy[k];
-	  doubflo VeloZ = vz[k];
+	  real VeloX = vx[k];
+	  real VeloY = vy[k];
+	  real VeloZ = vz[k];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo*q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real*q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
 			 *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
 			 *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
 			 *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -3379,32 +3379,32 @@ extern "C" __global__ void QVelDevPlainBB27(doubflo* vx,
       ////////////////////////////////////////////////////////////////////////////////
      
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
 	  ////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////
@@ -3469,7 +3469,7 @@ extern "C" __global__ void QVelDevPlainBB27(doubflo* vx,
          D.f[dirBNW ] = &DD[dirTSE *size_Mat];
       }
 	  ////////////////////////////////////////////////////////////////////////////////
-      doubflo q;
+      real q;
       q = q_dirE[k];	if (q>=zero && q<=one)	(D.f[dirW  ])[kw  ]=f_E   + c2over27  * VeloX;	
       q = q_dirW[k];	if (q>=zero && q<=one)	(D.f[dirE  ])[ke  ]=f_W   - c2over27  * VeloX;	
       q = q_dirN[k];	if (q>=zero && q<=one)	(D.f[dirS  ])[ks  ]=f_N   + c2over27  * VeloY;	
@@ -3539,15 +3539,15 @@ extern "C" __global__ void QVelDevPlainBB27(doubflo* vx,
 
 
 //////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void QVelDevCouhette27(doubflo* vx,
-											doubflo* vy,
-	 										doubflo* vz,
-											doubflo* DD,
+extern "C" __global__ void QVelDevCouhette27(real* vx,
+											real* vy,
+	 										real* vz,
+											real* DD,
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
@@ -3629,11 +3629,11 @@ extern "C" __global__ void QVelDevCouhette27(doubflo* vx,
    if(k<kQ)
    {
 	  ////////////////////////////////////////////////////////////////////////////////
-	  doubflo VeloX = vx[k];
-	  doubflo VeloY = vy[k];
-	  doubflo VeloZ = vz[k];
+	  real VeloX = vx[k];
+	  real VeloY = vy[k];
+	  real VeloZ = vz[k];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo*q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real*q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
 			 *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
 			 *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
 			 *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -3697,32 +3697,32 @@ extern "C" __global__ void QVelDevCouhette27(doubflo* vx,
       ////////////////////////////////////////////////////////////////////////////////
      
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_W    = (D.f[dirE   ])[ke   ];
-      doubflo f_E    = (D.f[dirW   ])[kw   ];
-      doubflo f_S    = (D.f[dirN   ])[kn   ];
-      doubflo f_N    = (D.f[dirS   ])[ks   ];
-      doubflo f_B    = (D.f[dirT   ])[kt   ];
-      doubflo f_T    = (D.f[dirB   ])[kb   ];
-      doubflo f_SW   = (D.f[dirNE  ])[kne  ];
-      doubflo f_NE   = (D.f[dirSW  ])[ksw  ];
-      doubflo f_NW   = (D.f[dirSE  ])[kse  ];
-      doubflo f_SE   = (D.f[dirNW  ])[knw  ];
-      doubflo f_BW   = (D.f[dirTE  ])[kte  ];
-      doubflo f_TE   = (D.f[dirBW  ])[kbw  ];
-      doubflo f_TW   = (D.f[dirBE  ])[kbe  ];
-      doubflo f_BE   = (D.f[dirTW  ])[ktw  ];
-      doubflo f_BS   = (D.f[dirTN  ])[ktn  ];
-      doubflo f_TN   = (D.f[dirBS  ])[kbs  ];
-      doubflo f_TS   = (D.f[dirBN  ])[kbn  ];
-      doubflo f_BN   = (D.f[dirTS  ])[kts  ];
-      doubflo f_BSW  = (D.f[dirTNE ])[ktne ];
-      doubflo f_BNE  = (D.f[dirTSW ])[ktsw ];
-      doubflo f_BNW  = (D.f[dirTSE ])[ktse ];
-      doubflo f_BSE  = (D.f[dirTNW ])[ktnw ];
-      doubflo f_TSW  = (D.f[dirBNE ])[kbne ];
-      doubflo f_TNE  = (D.f[dirBSW ])[kbsw ];
-      doubflo f_TNW  = (D.f[dirBSE ])[kbse ];
-      doubflo f_TSE  = (D.f[dirBNW ])[kbnw ];
+      real f_W    = (D.f[dirE   ])[ke   ];
+      real f_E    = (D.f[dirW   ])[kw   ];
+      real f_S    = (D.f[dirN   ])[kn   ];
+      real f_N    = (D.f[dirS   ])[ks   ];
+      real f_B    = (D.f[dirT   ])[kt   ];
+      real f_T    = (D.f[dirB   ])[kb   ];
+      real f_SW   = (D.f[dirNE  ])[kne  ];
+      real f_NE   = (D.f[dirSW  ])[ksw  ];
+      real f_NW   = (D.f[dirSE  ])[kse  ];
+      real f_SE   = (D.f[dirNW  ])[knw  ];
+      real f_BW   = (D.f[dirTE  ])[kte  ];
+      real f_TE   = (D.f[dirBW  ])[kbw  ];
+      real f_TW   = (D.f[dirBE  ])[kbe  ];
+      real f_BE   = (D.f[dirTW  ])[ktw  ];
+      real f_BS   = (D.f[dirTN  ])[ktn  ];
+      real f_TN   = (D.f[dirBS  ])[kbs  ];
+      real f_TS   = (D.f[dirBN  ])[kbn  ];
+      real f_BN   = (D.f[dirTS  ])[kts  ];
+      real f_BSW  = (D.f[dirTNE ])[ktne ];
+      real f_BNE  = (D.f[dirTSW ])[ktsw ];
+      real f_BNW  = (D.f[dirTSE ])[ktse ];
+      real f_BSE  = (D.f[dirTNW ])[ktnw ];
+      real f_TSW  = (D.f[dirBNE ])[kbne ];
+      real f_TNE  = (D.f[dirBSW ])[kbsw ];
+      real f_TNW  = (D.f[dirBSE ])[kbse ];
+      real f_TSE  = (D.f[dirBNW ])[kbnw ];
 	  ////////////////////////////////////////////////////////////////////////////////
 
 	  ////////////////////////////////////////////////////////////////////////////////
@@ -3790,20 +3790,20 @@ extern "C" __global__ void QVelDevCouhette27(doubflo* vx,
 	  ///////               FlowDirection Y !!!!!!!!!!                                                           ///////////////////////////////////
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //calculate velocity
-	  //doubflo vx1 = ((f_TNE-f_BSW)+(f_BSE-f_TNW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)) + (((f_NE-f_SW)+(f_TE-f_BW))+((f_SE-f_NW)+(f_BE-f_TW))) + (f_E-f_W);
-	  doubflo vx2 = ((f_TNE-f_BSW)+(f_TNW-f_BSE)+(f_BNE-f_TSW)+(f_BNW-f_TSE)) + (((f_NE-f_SW)+(f_TN-f_BS))+((f_BN-f_TS)+(f_NW-f_SE))) + (f_N-f_S);
-	  //doubflo vx3 = ((f_TNE-f_BSW)+(f_TNW-f_BSE)+(f_TSW-f_BNE)+(f_TSE-f_BNW)) + (((f_TE-f_BW)+(f_TN-f_BS))+((f_TW-f_BE)+(f_TS-f_BN))) + (f_T-f_B);
+	  //real vx1 = ((f_TNE-f_BSW)+(f_BSE-f_TNW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)) + (((f_NE-f_SW)+(f_TE-f_BW))+((f_SE-f_NW)+(f_BE-f_TW))) + (f_E-f_W);
+	  real vx2 = ((f_TNE-f_BSW)+(f_TNW-f_BSE)+(f_BNE-f_TSW)+(f_BNW-f_TSE)) + (((f_NE-f_SW)+(f_TN-f_BS))+((f_BN-f_TS)+(f_NW-f_SE))) + (f_N-f_S);
+	  //real vx3 = ((f_TNE-f_BSW)+(f_TNW-f_BSE)+(f_TSW-f_BNE)+(f_TSE-f_BNW)) + (((f_TE-f_BW)+(f_TN-f_BS))+((f_TW-f_BE)+(f_TS-f_BN))) + (f_T-f_B);
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //constant
-	  doubflo on=zero;//c1o2;//one;
-	  doubflo ms=-six;
+	  real on=zero;//c1o2;//one;
+	  real ms=-six;
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //2nd order moment
-	  doubflo kxxMyyFromfcNEQ = zero;//-c3o2 * (f_BW+f_W+f_TW-f_BS-f_S-f_TS-f_BN-f_N-f_TN+f_BE+f_E+f_TE-(vx1*vx1-vx2*vx2));		//all E+W minus all N+S (no combinations of xy left)
+	  real kxxMyyFromfcNEQ = zero;//-c3o2 * (f_BW+f_W+f_TW-f_BS-f_S-f_TS-f_BN-f_N-f_TN+f_BE+f_E+f_TE-(vx1*vx1-vx2*vx2));		//all E+W minus all N+S (no combinations of xy left)
 
 	  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	  //set distributions
-      doubflo q;
+      real q;
       q = q_dirE[k];	if (q>=zero && q<=one)	(D.f[dirW  ])[kw  ]=f_E   + ms*c2over27  * VeloX;	
       q = q_dirW[k];	if (q>=zero && q<=one)	(D.f[dirE  ])[ke  ]=f_W   - ms*c2over27  * VeloX;	
       q = q_dirN[k];	if (q>=zero && q<=one)	(D.f[dirS  ])[ks  ]=f_N   + ms*c2over27  * VeloY;	
@@ -3902,23 +3902,23 @@ extern "C" __global__ void QVelDevCouhette27(doubflo* vx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QVelDev1h27( int inx,
 										int iny,
-										doubflo* vx,
-										doubflo* vy,
-										doubflo* vz,
-										doubflo* DD, 
+										real* vx,
+										real* vy,
+										real* vz,
+										real* DD, 
 										int* k_Q, 
-										doubflo* QQ,
+										real* QQ,
 										unsigned int sizeQ,
 										int kQ, 
-										doubflo om1,
-										doubflo Phi,
-										doubflo angularVelocity,
+										real om1,
+										real Phi,
+										real angularVelocity,
 										unsigned int* neighborX,
 										unsigned int* neighborY,
 										unsigned int* neighborZ,
-										doubflo* coordX,
-										doubflo* coordY,
-										doubflo* coordZ,
+										real* coordX,
+										real* coordY,
+										real* coordZ,
 										unsigned int size_Mat, 
 										bool evenOrOdd)
 {
@@ -3997,21 +3997,21 @@ extern "C" __global__ void QVelDev1h27( int inx,
 	if(k<kQ)
 	{
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo VeloX = cosf(Phi)*vx[k] - sinf(Phi)*vy[k];
-		doubflo VeloY = sinf(Phi)*vx[k] + cosf(Phi)*vy[k];
-		//doubflo VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
+		real VeloX = cosf(Phi)*vx[k] - sinf(Phi)*vy[k];
+		real VeloY = sinf(Phi)*vx[k] + cosf(Phi)*vy[k];
+		//real VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
 		////////////////////////////////////////////////////////////////////////////////////
 		//Ship
-		doubflo coord0X = 281.125f;//7.5f;
-		doubflo coord0Y = 388.125f;//7.5f;
-		doubflo ux = - angularVelocity * (coordY[k_Q[k]] - coord0Y);
-		doubflo uy =   angularVelocity * (coordX[k_Q[k]] - coord0X);
-		doubflo VeloXpur=VeloX;
-		doubflo VeloYpur=VeloY;
+		real coord0X = 281.125f;//7.5f;
+		real coord0Y = 388.125f;//7.5f;
+		real ux = - angularVelocity * (coordY[k_Q[k]] - coord0Y);
+		real uy =   angularVelocity * (coordX[k_Q[k]] - coord0X);
+		real VeloXpur=VeloX;
+		real VeloYpur=VeloY;
 		VeloX-=ux;
 		VeloY-=uy;
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+		real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
 			*q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
 			*q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
 			*q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -4101,7 +4101,7 @@ extern "C" __global__ void QVelDev1h27( int inx,
 		//unsigned int ktne = KQK;
 		//unsigned int kbsw = KQK + nxny + nx + 1;
 		////////////////////////////////////////////////////////////////////////////////
-		//doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+		//real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
 		//	f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
 		//f_W    = (D.f[dirE   ])[ke   ];
@@ -4131,7 +4131,7 @@ extern "C" __global__ void QVelDev1h27( int inx,
 		//f_TNW  = (D.f[dirBSE ])[kbse ];
 		//f_TSE  = (D.f[dirBNW ])[kbnw ];
 		////////////////////////////////////////////////////////////////////////////////
-		doubflo /*vx1, vx2,*/ vx3, drho, feq, q, cu_sq;
+		real /*vx1, vx2,*/ vx3, drho, feq, q, cu_sq;
 		//drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
 		//	f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
 		//	f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -4686,15 +4686,15 @@ extern "C" __global__ void QVelDev1h27( int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QVelDeviceComp27(int inx,
 											int iny,
-											doubflo* vx,
-											doubflo* vy,
-											doubflo* vz,
-											doubflo* DD, 
+											real* vx,
+											real* vy,
+											real* vz,
+											real* DD, 
 											int* k_Q, 
-											doubflo* QQ,
+											real* QQ,
 											unsigned int sizeQ,
 											int kQ, 
-											doubflo om1, 
+											real om1, 
 											unsigned int* neighborX,
 											unsigned int* neighborY,
 											unsigned int* neighborZ,
@@ -4776,11 +4776,11 @@ extern "C" __global__ void QVelDeviceComp27(int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo VeloX = vx[k];
-      doubflo VeloY = vy[k];
-      doubflo VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
+      real VeloX = vx[k];
+      real VeloY = vy[k];
+      real VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -4842,7 +4842,7 @@ extern "C" __global__ void QVelDeviceComp27(int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
          f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -4872,7 +4872,7 @@ extern "C" __global__ void QVelDeviceComp27(int inx,
       f_TNW  = (D.f[dirBSE ])[kbse ];
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
                 f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
                 f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -4890,7 +4890,7 @@ extern "C" __global__ void QVelDeviceComp27(int inx,
                  (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                  (f_T - f_B)) / (one + drho); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -5212,15 +5212,15 @@ extern "C" __global__ void QVelDeviceComp27(int inx,
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void QVelDevice27(int inx,
                                         int iny,
-                                        doubflo* vx,
-                                        doubflo* vy,
-                                        doubflo* vz,
-                                        doubflo* DD, 
+                                        real* vx,
+                                        real* vy,
+                                        real* vz,
+                                        real* DD, 
                                         int* k_Q, 
-                                        doubflo* QQ,
+                                        real* QQ,
                                         unsigned int sizeQ,
                                         int kQ, 
-                                        doubflo om1, 
+                                        real om1, 
                                         unsigned int* neighborX,
                                         unsigned int* neighborY,
                                         unsigned int* neighborZ,
@@ -5302,11 +5302,11 @@ extern "C" __global__ void QVelDevice27(int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo VeloX = vx[k];
-      doubflo VeloY = vy[k];
-      doubflo VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
+      real VeloX = vx[k];
+      real VeloY = vy[k];
+      real VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
             *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
             *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
             *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -5396,7 +5396,7 @@ extern "C" __global__ void QVelDevice27(int inx,
       //unsigned int ktne = KQK;
       //unsigned int kbsw = KQK + nxny + nx + 1;
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
          f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -5426,7 +5426,7 @@ extern "C" __global__ void QVelDevice27(int inx,
       f_TNW  = (D.f[dirBSE ])[kbse ];
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
                 f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
                 f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -5444,7 +5444,7 @@ extern "C" __global__ void QVelDevice27(int inx,
                  (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                  (f_T - f_B); 
 
-      doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+      real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
       //////////////////////////////////////////////////////////////////////////
       if (evenOrOdd==false)
@@ -5767,15 +5767,15 @@ extern "C" __global__ void QVelDevice27(int inx,
 extern "C" __global__ void PropellerBC(unsigned int* neighborX,
                                        unsigned int* neighborY,
                                        unsigned int* neighborZ,
-                                       doubflo* rho,
-                                       doubflo* ux,
-                                       doubflo* uy,
-                                       doubflo* uz,
+                                       real* rho,
+                                       real* ux,
+                                       real* uy,
+                                       real* uz,
                                        int* k_Q, 
 									   unsigned int size_Prop,
                                        unsigned int size_Mat,
                                        unsigned int* bcMatD,
-                                       doubflo* DD,
+                                       real* DD,
                                        bool EvenOrOdd)
 {
    ////////////////////////////////////////////////////////////////////////////////
@@ -5859,12 +5859,12 @@ extern "C" __global__ void PropellerBC(unsigned int* neighborX,
 		if( (BC != GEO_SOLID) && (BC != GEO_VOID))
 		{		
 		//////////////////////////////////////////////////////////////////////////
-        doubflo  vx1 = ux[k];
-        doubflo  vx2 = uy[k];
-        doubflo  vx3 = uz[k];
-        //doubflo  vx1 = -c1o100;
-        //doubflo  vx2 = zero;
-        //doubflo  vx3 = zero;
+        real  vx1 = ux[k];
+        real  vx2 = uy[k];
+        real  vx3 = uz[k];
+        //real  vx1 = -c1o100;
+        //real  vx2 = zero;
+        //real  vx3 = zero;
         //////////////////////////////////////////////////////////////////////////
         //index
         //////////////////////////////////////////////////////////////////////////
@@ -5896,7 +5896,7 @@ extern "C" __global__ void PropellerBC(unsigned int* neighborX,
 		unsigned int ktne = KQK;
 		unsigned int kbsw = neighborZ[ksw];
         //////////////////////////////////////////////////////////////////////////
-		doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+		real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
 		f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW, f_ZERO;
 
 		f_ZERO= (D.f[dirZERO])[kzero];
@@ -5953,7 +5953,7 @@ extern "C" __global__ void PropellerBC(unsigned int* neighborX,
 		//f_TNW  = (D.f[dirBSE ])[kbse ];
 		//f_BSE  = (D.f[dirTNW ])[ktnw ];
 		//////////////////////////////////////////////////////////////////////////////////
-		doubflo vxo1, vxo2, vxo3, drho;
+		real vxo1, vxo2, vxo3, drho;
 		drho   =  /*zero;*/f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
 				  f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
 				  f_T + f_B + f_N + f_S + f_E + f_W + f_ZERO; 
@@ -5971,11 +5971,11 @@ extern "C" __global__ void PropellerBC(unsigned int* neighborX,
 		 			(-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
 					(f_T - f_B) )/ (one + drho); 
 
-		doubflo cusq=c3o2*(vxo1*vxo1+vxo2*vxo2+vxo3*vxo3);
+		real cusq=c3o2*(vxo1*vxo1+vxo2*vxo2+vxo3*vxo3);
 		//vx1 = vx1 * two - vxo1;
 		//vx2 = vx2 * two - vxo2;
 		//vx3 = vx3 * two - vxo3;
-		doubflo cusq2=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
+		real cusq2=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);
 
          //f_ZERO = ((one+drho) * (   c8over27 *(one+(-cusq2)))) - c8over27;
          //f_E    = ((one+drho) * (   c2over27 *(one+three*( vx1        )+c9over2*( vx1        )*( vx1        )-cusq2))) - c2over27 ;
diff --git a/src/VirtualFluids_GPU/GPU/WaleCumulant27.cu b/src/VirtualFluids_GPU/GPU/WaleCumulant27.cu
index 933aeab3c..7dd091831 100644
--- a/src/VirtualFluids_GPU/GPU/WaleCumulant27.cu
+++ b/src/VirtualFluids_GPU/GPU/WaleCumulant27.cu
@@ -4,20 +4,20 @@
 #include "GPU/constant.h"
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(doubflo omega_in,
+extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(real omega_in,
 															 unsigned int* bcMatD,
 															 unsigned int* neighborX,
 															 unsigned int* neighborY,
 															 unsigned int* neighborZ,
 															 unsigned int* neighborWSB,
-															 doubflo* veloX,
-															 doubflo* veloY,
-															 doubflo* veloZ,
-															 doubflo* DDStart,
-															 doubflo* turbulentViscosity,
+															 real* veloX,
+															 real* veloY,
+															 real* veloZ,
+															 real* DDStart,
+															 real* turbulentViscosity,
 															 int size_Mat,
 															 int level,
-															 doubflo* forces,
+															 real* forces,
 															 bool EvenOrOdd)
 {
 	////////////////////////////////////////////////////////////////////////////////
@@ -132,52 +132,52 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(doubflo omega_in,
 			unsigned int kbsw = neighborZ[ksw];
 
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];
-			doubflo mfabb = (D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];
-			doubflo mfbab = (D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];
-			doubflo mfbba = (D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];
-			doubflo mfaab = (D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];
-			doubflo mfacb = (D.f[dirNW  ])[kw ];
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];
-			doubflo mfaba = (D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];
-			doubflo mfabc = (D.f[dirTW  ])[kw ];
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];
-			doubflo mfbac = (D.f[dirTS  ])[ks ];
-			doubflo mfbbb = (D.f[dirZERO])[k  ];
-			doubflo mfccc = (D.f[dirTNE ])[k  ];
-			doubflo mfaac = (D.f[dirTSW ])[ksw];
-			doubflo mfcac = (D.f[dirTSE ])[ks ];
-			doubflo mfacc = (D.f[dirTNW ])[kw ];
-			doubflo mfcca = (D.f[dirBNE ])[kb ];
-			doubflo mfaaa = (D.f[dirBSW])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];
-			doubflo mfaca = (D.f[dirBNW ])[kbw];
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			real mfcbb = (D.f[dirE   ])[k  ];
+			real mfabb = (D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];
+			real mfbab = (D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];
+			real mfbba = (D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];
+			real mfaab = (D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];
+			real mfacb = (D.f[dirNW  ])[kw ];
+			real mfcbc = (D.f[dirTE  ])[k  ];
+			real mfaba = (D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];
+			real mfabc = (D.f[dirTW  ])[kw ];
+			real mfbcc = (D.f[dirTN  ])[k  ];
+			real mfbaa = (D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];
+			real mfbac = (D.f[dirTS  ])[ks ];
+			real mfbbb = (D.f[dirZERO])[k  ];
+			real mfccc = (D.f[dirTNE ])[k  ];
+			real mfaac = (D.f[dirTSW ])[ksw];
+			real mfcac = (D.f[dirTSE ])[ks ];
+			real mfacc = (D.f[dirTNW ])[kw ];
+			real mfcca = (D.f[dirBNE ])[kb ];
+			real mfaaa = (D.f[dirBSW])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];
+			real mfaca = (D.f[dirBNW ])[kbw];
+			////////////////////////////////////////////////////////////////////////////////////
+			real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 							(((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 							((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb;
 
-			doubflo rho = one+drho;
+			real rho = one+drho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb)) / rho;
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab)) / rho;
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo nuTurb = zero;
+			real nuTurb = zero;
 			{
 				/////////////      Wale Model     ///////////////
 				//neighbor index
@@ -189,40 +189,40 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(doubflo omega_in,
 				unsigned int kMy   = neighborZ[neighborX[kMxyz]];
 				unsigned int kMz   = neighborY[neighborX[kMxyz]];
 				//getVeloX//
-				doubflo veloXNeighborPx = veloX[kPx];
-				doubflo veloXNeighborMx = veloX[kMx];
-				doubflo veloXNeighborPy = veloX[kPy];
-				doubflo veloXNeighborMy = veloX[kMy];
-				doubflo veloXNeighborPz = veloX[kPz];
-				doubflo veloXNeighborMz = veloX[kMz];
+				real veloXNeighborPx = veloX[kPx];
+				real veloXNeighborMx = veloX[kMx];
+				real veloXNeighborPy = veloX[kPy];
+				real veloXNeighborMy = veloX[kMy];
+				real veloXNeighborPz = veloX[kPz];
+				real veloXNeighborMz = veloX[kMz];
 				//getVeloY//
-				doubflo veloYNeighborPx = veloY[kPx];
-				doubflo veloYNeighborMx = veloY[kMx];
-				doubflo veloYNeighborPy = veloY[kPy];
-				doubflo veloYNeighborMy = veloY[kMy];
-				doubflo veloYNeighborPz = veloY[kPz];
-				doubflo veloYNeighborMz = veloY[kMz];
+				real veloYNeighborPx = veloY[kPx];
+				real veloYNeighborMx = veloY[kMx];
+				real veloYNeighborPy = veloY[kPy];
+				real veloYNeighborMy = veloY[kMy];
+				real veloYNeighborPz = veloY[kPz];
+				real veloYNeighborMz = veloY[kMz];
 				//getVeloZ//
-				doubflo veloZNeighborPx = veloZ[kPx];
-				doubflo veloZNeighborMx = veloZ[kMx];
-				doubflo veloZNeighborPy = veloZ[kPy];
-				doubflo veloZNeighborMy = veloZ[kMy];
-				doubflo veloZNeighborPz = veloZ[kPz];
-				doubflo veloZNeighborMz = veloZ[kMz];
+				real veloZNeighborPx = veloZ[kPx];
+				real veloZNeighborMx = veloZ[kMx];
+				real veloZNeighborPy = veloZ[kPy];
+				real veloZNeighborMy = veloZ[kMy];
+				real veloZNeighborPz = veloZ[kPz];
+				real veloZNeighborMz = veloZ[kMz];
 				//partial Div vx in x, y, z//
-				doubflo dxvx = (veloXNeighborPx - veloXNeighborMx) / two; //deltaX * two??
-				doubflo dyvx = (veloXNeighborPy - veloXNeighborMy) / two; //deltaX * two??
-				doubflo dzvx = (veloXNeighborPz - veloXNeighborMz) / two; //deltaX * two??
+				real dxvx = (veloXNeighborPx - veloXNeighborMx) / two; //deltaX * two??
+				real dyvx = (veloXNeighborPy - veloXNeighborMy) / two; //deltaX * two??
+				real dzvx = (veloXNeighborPz - veloXNeighborMz) / two; //deltaX * two??
 			    //partial Div vy in x, y, z//
-				doubflo dxvy = (veloYNeighborPx - veloYNeighborMx) / two; //deltaX * two??
-				doubflo dyvy = (veloYNeighborPy - veloYNeighborMy) / two; //deltaX * two??
-				doubflo dzvy = (veloYNeighborPz - veloYNeighborMz) / two; //deltaX * two??
+				real dxvy = (veloYNeighborPx - veloYNeighborMx) / two; //deltaX * two??
+				real dyvy = (veloYNeighborPy - veloYNeighborMy) / two; //deltaX * two??
+				real dzvy = (veloYNeighborPz - veloYNeighborMz) / two; //deltaX * two??
 			    //partial Div vz in x, y, z//
-				doubflo dxvz = (veloZNeighborPx - veloZNeighborMx) / two; //deltaX * two??
-				doubflo dyvz = (veloZNeighborPy - veloZNeighborMy) / two; //deltaX * two??
-				doubflo dzvz = (veloZNeighborPz - veloZNeighborMz) / two; //deltaX * two??
+				real dxvz = (veloZNeighborPx - veloZNeighborMx) / two; //deltaX * two??
+				real dyvz = (veloZNeighborPy - veloZNeighborMy) / two; //deltaX * two??
+				real dzvz = (veloZNeighborPz - veloZNeighborMz) / two; //deltaX * two??
 				//SumSd
-				doubflo SumSd = 
+				real SumSd = 
 					c1o2 * powf(dzvx, four) + 
 					c1o2 * powf(dzvy, four) + 
 					c2o3 * powf(dzvz, four) +
@@ -239,7 +239,7 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(doubflo omega_in,
 					c2o3 * powf(dzvz, two) * powf(dxvx, two) -
 					c2o3 * powf(dyvy, two) * powf(dxvx, two);
 				//SumS
-				doubflo SumS =
+				real SumS =
 					powf(dxvx, two) +
 					powf(dyvy, two) +
 					powf(dzvz, two) +
@@ -247,11 +247,11 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(doubflo omega_in,
 					c1o2 * powf(dzvx + dxvz, two) + 
 					c1o2 * powf(dyvz + dzvy, two);
 				//nu turbulent
-				doubflo coefficient = 0.325;
-				doubflo delta = coefficient * one;
+				real coefficient = 0.325;
+				real delta = coefficient * one;
 				/////////////////////////////////
-				doubflo SumSsq = SumS * SumS;
-				doubflo SumSDsq = SumSd * SumSd;
+				real SumSsq = SumS * SumS;
+				real SumSDsq = SumSd * SumSd;
 				nuTurb = powf(delta, two) * powf(SumSDsq, c3o2) / (powf(SumSsq, c5o2) + powf(SumSDsq, c5o4) + smallSingle);
 				/////////////////////////////////
 				//nuTurb = rho * powf(delta, two) * powf(SumSd*SumSd, c3o2) / (powf(SumS*SumS, c5o2) + powf(SumSd*SumSd, c5o4));
@@ -265,32 +265,32 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(doubflo omega_in,
 			////////////////////////////////////////////////////////////////////////////////////
 			//the force be with you
 			{
-				doubflo fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
-				doubflo fy = forces[1] / (pow(two, level)); //zero;
-				doubflo fz = forces[2] / (pow(two, level)); //zero;
+				real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+				real fy = forces[1] / (pow(two, level)); //zero;
+				real fz = forces[2] / (pow(two, level)); //zero;
 				vvx += fx*c1o2;
 				vvy += fy*c1o2;
 				vvz += fz*c1o2;
 			}
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo nuOld = c1o3 * (one / omega_in - c1o2);
-			doubflo omega = one / (three * (nuOld + nuTurb) + c1o2);
-			//doubflo omega = omega_in + nuTurb;
+			real nuOld = c1o3 * (one / omega_in - c1o2);
+			real omega = one / (three * (nuOld + nuTurb) + c1o2);
+			//real omega = omega_in + nuTurb;
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one; // comp special
-			doubflo m0, m1, m2;	
-			doubflo vx2;
-			doubflo vy2;
-			doubflo vz2;
+			real oMdrho = one; // comp special
+			real m0, m1, m2;	
+			real vx2;
+			real vy2;
+			real vz2;
 			vx2=vvx*vvx;
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
 			//////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimitP = 0.01f;// * 0.0001f;
-			doubflo qudricLimitM = 0.01f;// * 0.0001f;
-			doubflo qudricLimitD = 0.01f;// * 0.001f;
+			real wadjust;
+			real qudricLimitP = 0.01f;// * 0.0001f;
+			real qudricLimitM = 0.01f;// * 0.0001f;
+			real qudricLimitD = 0.01f;// * 0.001f;
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
 			////////////////////////////////////////////////////////////////////////////////////
@@ -525,52 +525,52 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(doubflo omega_in,
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cumulants
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = one;
+			real OxxPyyPzz = one;
 
 			////////////////////////////////////////////////////////////
 			//3.
 			//////////////////////////////
-			doubflo OxyyPxzz  = one;
-			doubflo OxyyMxzz  = one;
-			doubflo Oxyz      = one;
+			real OxyyPxzz  = one;
+			real OxyyMxzz  = one;
+			real Oxyz      = one;
 			////////////////////////////////////////////////////////////
 			//4.
 			//////////////////////////////
-			doubflo O4        = one;
+			real O4        = one;
 			//////////////////////////////
-			//doubflo O4        = omega;//TRT
+			//real O4        = omega;//TRT
 			////////////////////////////////////////////////////////////
 			//5.
 			//////////////////////////////
-			doubflo O5        = one;
+			real O5        = one;
 			////////////////////////////////////////////////////////////
 			//6.
 			//////////////////////////////
-			doubflo O6        = one;
+			real O6        = one;
 			////////////////////////////////////////////////////////////
 
 
 			//central moments to cumulants
 			//4.
-			//doubflo CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab) / rho;  //bis 15.05.2015 verwendet
-			//doubflo CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb) / rho;  //bis 15.05.2015 verwendet
-			//doubflo CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb) / rho;  //bis 15.05.2015 verwendet
-			doubflo CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;	//ab 15.05.2015 verwendet
-			doubflo CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; //ab 15.05.2015 verwendet
-			doubflo CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; //ab 15.05.2015 verwendet
+			//real CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + two * mfbba * mfbab) / rho;  //bis 15.05.2015 verwendet
+			//real CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + two * mfbba * mfabb) / rho;  //bis 15.05.2015 verwendet
+			//real CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + two * mfbab * mfabb) / rho;  //bis 15.05.2015 verwendet
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;	//ab 15.05.2015 verwendet
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho; //ab 15.05.2015 verwendet
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho; //ab 15.05.2015 verwendet
 				  	 		
-			doubflo CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
-			doubflo CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
-			doubflo CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
 
 			//5.
-			doubflo CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
-			doubflo CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
-			doubflo CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
 			
 			//6.
 
-			doubflo CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
+			real CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
 							-           (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 							-    four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 							-     two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
@@ -589,17 +589,17 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(doubflo omega_in,
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 			
 			//////////////////////////////////////////////////////////////////////////
-// 			doubflo magicBulk=(CUMacc+CUMcac+CUMcca)*(one/OxxPyyPzz-c1o2)*c3o2*8.;
+// 			real magicBulk=(CUMacc+CUMcac+CUMcca)*(one/OxxPyyPzz-c1o2)*c3o2*8.;
 
 			//////////////////////////////////////////////////////////////////////////
 			//limiter-Scheise Teil 1
-			//doubflo oxxyy,oxxzz,oxy,oxz,oyz;
-			//doubflo smag=0.001;
+			//real oxxyy,oxxzz,oxy,oxz,oyz;
+			//real smag=0.001;
 			//oxxyy    = omega+(one-omega)*abs(mxxMyy)/(abs(mxxMyy)+smag);
 			//oxxzz    = omega+(one-omega)*abs(mxxMzz)/(abs(mxxMzz)+smag);
 			//oxy      = omega+(one-omega)*abs(mfbba)/(abs(mfbba)+smag);
@@ -608,14 +608,14 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(doubflo omega_in,
 
 			////////////////////////////////////////////////////////////////////////////
 			////Teil 1b
-			//doubflo constante = 1000.0;
-			//doubflo nuEddi = constante * abs(mxxPyyPzz);
-			//doubflo omegaLimit = one / (one / omega + three * nuEddi);
+			//real constante = 1000.0;
+			//real nuEddi = constante * abs(mxxPyyPzz);
+			//real omegaLimit = one / (one / omega + three * nuEddi);
 
 			//{
-			//	doubflo dxux = c1o2 * (-omegaLimit) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
-			//	doubflo dyuy = dxux + omegaLimit * c3o2 * mxxMyy;
-			//	doubflo dzuz = dxux + omegaLimit * c3o2 * mxxMzz;
+			//	real dxux = c1o2 * (-omegaLimit) *(mxxMyy + mxxMzz) +  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+			//	real dyuy = dxux + omegaLimit * c3o2 * mxxMyy;
+			//	real dzuz = dxux + omegaLimit * c3o2 * mxxMzz;
 
 				////relax
 				//mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);
@@ -631,9 +631,9 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(doubflo omega_in,
  			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  			//incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
  			{
- 				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
- 				doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
- 				doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+ 				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+ 				real dyuy = dxux + omega * c3o2 * mxxMyy;
+ 				real dzuz = dxux + omega * c3o2 * mxxMzz;
  
  				//relax
  				mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
@@ -674,14 +674,14 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(doubflo omega_in,
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
 			//relax
 			//////////////////////////////////////////////////////////////////////////
@@ -1092,20 +1092,20 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_One_Comp_SP_27(doubflo omega_in,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-extern "C" __global__ void LB_Kernel_Wale_Cum_AA2016_Comp_SP_27( doubflo omega_in,
+extern "C" __global__ void LB_Kernel_Wale_Cum_AA2016_Comp_SP_27( real omega_in,
 																 unsigned int* bcMatD,
 																 unsigned int* neighborX,
 																 unsigned int* neighborY,
 																 unsigned int* neighborZ,
 																 unsigned int* neighborWSB,
-																 doubflo* veloX,
-																 doubflo* veloY,
-																 doubflo* veloZ,
-																 doubflo* DDStart,
-																 doubflo* turbulentViscosity,
+																 real* veloX,
+																 real* veloY,
+																 real* veloZ,
+																 real* DDStart,
+																 real* turbulentViscosity,
 																 int size_Mat,
 																 int level,
-																 doubflo* forces,
+																 real* forces,
 																 bool EvenOrOdd)
 {
 	////////////////////////////////////////////////////////////////////////////////
@@ -1220,52 +1220,52 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_AA2016_Comp_SP_27( doubflo omega_i
 			unsigned int kbsw = neighborZ[ksw];
 
 			//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-			doubflo mfcbb = (D.f[dirE   ])[k  ];
-			doubflo mfabb = (D.f[dirW   ])[kw ];
-			doubflo mfbcb = (D.f[dirN   ])[k  ];
-			doubflo mfbab = (D.f[dirS   ])[ks ];
-			doubflo mfbbc = (D.f[dirT   ])[k  ];
-			doubflo mfbba = (D.f[dirB   ])[kb ];
-			doubflo mfccb = (D.f[dirNE  ])[k  ];
-			doubflo mfaab = (D.f[dirSW  ])[ksw];
-			doubflo mfcab = (D.f[dirSE  ])[ks ];
-			doubflo mfacb = (D.f[dirNW  ])[kw ];
-			doubflo mfcbc = (D.f[dirTE  ])[k  ];
-			doubflo mfaba = (D.f[dirBW  ])[kbw];
-			doubflo mfcba = (D.f[dirBE  ])[kb ];
-			doubflo mfabc = (D.f[dirTW  ])[kw ];
-			doubflo mfbcc = (D.f[dirTN  ])[k  ];
-			doubflo mfbaa = (D.f[dirBS  ])[kbs];
-			doubflo mfbca = (D.f[dirBN  ])[kb ];
-			doubflo mfbac = (D.f[dirTS  ])[ks ];
-			doubflo mfbbb = (D.f[dirZERO])[k  ];
-			doubflo mfccc = (D.f[dirTNE ])[k  ];
-			doubflo mfaac = (D.f[dirTSW ])[ksw];
-			doubflo mfcac = (D.f[dirTSE ])[ks ];
-			doubflo mfacc = (D.f[dirTNW ])[kw ];
-			doubflo mfcca = (D.f[dirBNE ])[kb ];
-			doubflo mfaaa = (D.f[dirBSW])[kbsw];
-			doubflo mfcaa = (D.f[dirBSE ])[kbs];
-			doubflo mfaca = (D.f[dirBNW ])[kbw];
-			////////////////////////////////////////////////////////////////////////////////////
-			doubflo drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
+			real mfcbb = (D.f[dirE   ])[k  ];
+			real mfabb = (D.f[dirW   ])[kw ];
+			real mfbcb = (D.f[dirN   ])[k  ];
+			real mfbab = (D.f[dirS   ])[ks ];
+			real mfbbc = (D.f[dirT   ])[k  ];
+			real mfbba = (D.f[dirB   ])[kb ];
+			real mfccb = (D.f[dirNE  ])[k  ];
+			real mfaab = (D.f[dirSW  ])[ksw];
+			real mfcab = (D.f[dirSE  ])[ks ];
+			real mfacb = (D.f[dirNW  ])[kw ];
+			real mfcbc = (D.f[dirTE  ])[k  ];
+			real mfaba = (D.f[dirBW  ])[kbw];
+			real mfcba = (D.f[dirBE  ])[kb ];
+			real mfabc = (D.f[dirTW  ])[kw ];
+			real mfbcc = (D.f[dirTN  ])[k  ];
+			real mfbaa = (D.f[dirBS  ])[kbs];
+			real mfbca = (D.f[dirBN  ])[kb ];
+			real mfbac = (D.f[dirTS  ])[ks ];
+			real mfbbb = (D.f[dirZERO])[k  ];
+			real mfccc = (D.f[dirTNE ])[k  ];
+			real mfaac = (D.f[dirTSW ])[ksw];
+			real mfcac = (D.f[dirTSE ])[ks ];
+			real mfacc = (D.f[dirTNW ])[kw ];
+			real mfcca = (D.f[dirBNE ])[kb ];
+			real mfaaa = (D.f[dirBSW])[kbsw];
+			real mfcaa = (D.f[dirBSE ])[kbs];
+			real mfaca = (D.f[dirBNW ])[kbw];
+			////////////////////////////////////////////////////////////////////////////////////
+			real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + 
 							(((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) +
 							((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb;
 
-			doubflo rho = one+drho;
+			real rho = one+drho;
 			////////////////////////////////////////////////////////////////////////////////////
 			//slow
-			doubflo vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
+			real vvx    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + 
 						     (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) +
 						       (mfcbb-mfabb)) / rho;
-			doubflo vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
+			real vvy    =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + 
 				             (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) +
 				               (mfbcb-mfbab)) / rho;
-			doubflo vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
+			real vvz    =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + 
 				             (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) +
 				               (mfbbc-mfbba)) / rho;
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo nuTurb = zero;
+			real nuTurb = zero;
 			{
 				/////////////      Wale Model     ///////////////
 				//neighbor index
@@ -1277,40 +1277,40 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_AA2016_Comp_SP_27( doubflo omega_i
 				unsigned int kMy   = neighborZ[neighborX[kMxyz]];
 				unsigned int kMz   = neighborY[neighborX[kMxyz]];
 				//getVeloX//
-				doubflo veloXNeighborPx = veloX[kPx];
-				doubflo veloXNeighborMx = veloX[kMx];
-				doubflo veloXNeighborPy = veloX[kPy];
-				doubflo veloXNeighborMy = veloX[kMy];
-				doubflo veloXNeighborPz = veloX[kPz];
-				doubflo veloXNeighborMz = veloX[kMz];
+				real veloXNeighborPx = veloX[kPx];
+				real veloXNeighborMx = veloX[kMx];
+				real veloXNeighborPy = veloX[kPy];
+				real veloXNeighborMy = veloX[kMy];
+				real veloXNeighborPz = veloX[kPz];
+				real veloXNeighborMz = veloX[kMz];
 				//getVeloY//
-				doubflo veloYNeighborPx = veloY[kPx];
-				doubflo veloYNeighborMx = veloY[kMx];
-				doubflo veloYNeighborPy = veloY[kPy];
-				doubflo veloYNeighborMy = veloY[kMy];
-				doubflo veloYNeighborPz = veloY[kPz];
-				doubflo veloYNeighborMz = veloY[kMz];
+				real veloYNeighborPx = veloY[kPx];
+				real veloYNeighborMx = veloY[kMx];
+				real veloYNeighborPy = veloY[kPy];
+				real veloYNeighborMy = veloY[kMy];
+				real veloYNeighborPz = veloY[kPz];
+				real veloYNeighborMz = veloY[kMz];
 				//getVeloZ//
-				doubflo veloZNeighborPx = veloZ[kPx];
-				doubflo veloZNeighborMx = veloZ[kMx];
-				doubflo veloZNeighborPy = veloZ[kPy];
-				doubflo veloZNeighborMy = veloZ[kMy];
-				doubflo veloZNeighborPz = veloZ[kPz];
-				doubflo veloZNeighborMz = veloZ[kMz];
+				real veloZNeighborPx = veloZ[kPx];
+				real veloZNeighborMx = veloZ[kMx];
+				real veloZNeighborPy = veloZ[kPy];
+				real veloZNeighborMy = veloZ[kMy];
+				real veloZNeighborPz = veloZ[kPz];
+				real veloZNeighborMz = veloZ[kMz];
 				//partial Div vx in x, y, z//
-				doubflo dxvx = (veloXNeighborPx - veloXNeighborMx) / two; //deltaX * two??
-				doubflo dyvx = (veloXNeighborPy - veloXNeighborMy) / two; //deltaX * two??
-				doubflo dzvx = (veloXNeighborPz - veloXNeighborMz) / two; //deltaX * two??
+				real dxvx = (veloXNeighborPx - veloXNeighborMx) / two; //deltaX * two??
+				real dyvx = (veloXNeighborPy - veloXNeighborMy) / two; //deltaX * two??
+				real dzvx = (veloXNeighborPz - veloXNeighborMz) / two; //deltaX * two??
 			    //partial Div vy in x, y, z//
-				doubflo dxvy = (veloYNeighborPx - veloYNeighborMx) / two; //deltaX * two??
-				doubflo dyvy = (veloYNeighborPy - veloYNeighborMy) / two; //deltaX * two??
-				doubflo dzvy = (veloYNeighborPz - veloYNeighborMz) / two; //deltaX * two??
+				real dxvy = (veloYNeighborPx - veloYNeighborMx) / two; //deltaX * two??
+				real dyvy = (veloYNeighborPy - veloYNeighborMy) / two; //deltaX * two??
+				real dzvy = (veloYNeighborPz - veloYNeighborMz) / two; //deltaX * two??
 			    //partial Div vz in x, y, z//
-				doubflo dxvz = (veloZNeighborPx - veloZNeighborMx) / two; //deltaX * two??
-				doubflo dyvz = (veloZNeighborPy - veloZNeighborMy) / two; //deltaX * two??
-				doubflo dzvz = (veloZNeighborPz - veloZNeighborMz) / two; //deltaX * two??
+				real dxvz = (veloZNeighborPx - veloZNeighborMx) / two; //deltaX * two??
+				real dyvz = (veloZNeighborPy - veloZNeighborMy) / two; //deltaX * two??
+				real dzvz = (veloZNeighborPz - veloZNeighborMz) / two; //deltaX * two??
 				//SumSd
-				doubflo SumSd = 
+				real SumSd = 
 					c1o2 * powf(dzvx, four) + 
 					c1o2 * powf(dzvy, four) + 
 					c2o3 * powf(dzvz, four) +
@@ -1327,7 +1327,7 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_AA2016_Comp_SP_27( doubflo omega_i
 					c2o3 * powf(dzvz, two) * powf(dxvx, two) -
 					c2o3 * powf(dyvy, two) * powf(dxvx, two);
 				//SumS
-				doubflo SumS =
+				real SumS =
 					powf(dxvx, two) +
 					powf(dyvy, two) +
 					powf(dzvz, two) +
@@ -1335,11 +1335,11 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_AA2016_Comp_SP_27( doubflo omega_i
 					c1o2 * powf(dzvx + dxvz, two) + 
 					c1o2 * powf(dyvz + dzvy, two);
 				//nu turbulent
-				doubflo coefficient = 0.325;
-				doubflo delta = coefficient * one;
+				real coefficient = 0.325;
+				real delta = coefficient * one;
 				/////////////////////////////////
-				doubflo SumSsq = SumS * SumS;
-				doubflo SumSDsq = SumSd * SumSd;
+				real SumSsq = SumS * SumS;
+				real SumSDsq = SumSd * SumSd;
 				nuTurb = powf(delta, two) * powf(SumSDsq, c3o2) / (powf(SumSsq, c5o2) + powf(SumSDsq, c5o4) + smallSingle);
 				/////////////////////////////////
 				//nuTurb = rho * powf(delta, two) * powf(SumSd*SumSd, c3o2) / (powf(SumS*SumS, c5o2) + powf(SumSd*SumSd, c5o4));
@@ -1353,32 +1353,32 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_AA2016_Comp_SP_27( doubflo omega_i
 			////////////////////////////////////////////////////////////////////////////////////
 			//the force be with you
 			{
-				doubflo fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
-				doubflo fy = forces[1] / (pow(two, level)); //zero;
-				doubflo fz = forces[2] / (pow(two, level)); //zero;
+				real fx = forces[0] / (pow(two, level)); //zero;//0.0032653/(pow(two,level)); //0.000000005;//(two/1600000.0) / 120.0; //
+				real fy = forces[1] / (pow(two, level)); //zero;
+				real fz = forces[2] / (pow(two, level)); //zero;
 				vvx += fx*c1o2;
 				vvy += fy*c1o2;
 				vvz += fz*c1o2;
 			}
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo nuOld = c1o3 * (one / omega_in - c1o2);
-			doubflo omega = one / (three * (nuOld + nuTurb) + c1o2);
-			//doubflo omega = omega_in + nuTurb;
+			real nuOld = c1o3 * (one / omega_in - c1o2);
+			real omega = one / (three * (nuOld + nuTurb) + c1o2);
+			//real omega = omega_in + nuTurb;
 			////////////////////////////////////////////////////////////////////////////////////
 			//fast
-			doubflo oMdrho = one; // comp special
-			doubflo m0, m1, m2;	
-			doubflo vx2;
-			doubflo vy2;
-			doubflo vz2;
+			real oMdrho = one; // comp special
+			real m0, m1, m2;	
+			real vx2;
+			real vy2;
+			real vz2;
 			vx2=vvx*vvx;
 			vy2=vvy*vvy;
 			vz2=vvz*vvz;
 			//////////////////////////////////////////////////////////////////////////////////////
-			doubflo wadjust;
-			doubflo qudricLimitP = 0.01f;// * 0.0001f;
-			doubflo qudricLimitM = 0.01f;// * 0.0001f;
-			doubflo qudricLimitD = 0.01f;// * 0.001f;
+			real wadjust;
+			real qudricLimitP = 0.01f;// * 0.0001f;
+			real qudricLimitM = 0.01f;// * 0.0001f;
+			real qudricLimitD = 0.01f;// * 0.001f;
 			////////////////////////////////////////////////////////////////////////////////////
 			//Hin
 			////////////////////////////////////////////////////////////////////////////////////
@@ -1613,49 +1613,49 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_AA2016_Comp_SP_27( doubflo omega_i
 			////////////////////////////////////////////////////////////////////////////////////
 			// Cumulants
 			////////////////////////////////////////////////////////////////////////////////////
-			doubflo OxxPyyPzz = one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
+			real OxxPyyPzz = one;	//set the bulk viscosity one is high / two is very low and zero is (too) high ... (also called omega 2)
 
 			////////////////////////////////////////////////////////////
 			//3.
 			//////////////////////////////
-			doubflo OxyyPxzz  = eight*(-two+omega)*(one+two*omega)/(-eight-fourteen*omega+seven*omega*omega);//one;
-			doubflo OxyyMxzz  = eight*(-two+omega)*(-seven+four*omega)/(fiftysix-fifty*omega+nine*omega*omega);//one;
-			doubflo Oxyz      = twentyfour*(-two+omega)*(-two-seven*omega+three*omega*omega)/(fourtyeight+c152*omega-c130*omega*omega+twentynine*omega*omega*omega);//one;
+			real OxyyPxzz  = eight*(-two+omega)*(one+two*omega)/(-eight-fourteen*omega+seven*omega*omega);//one;
+			real OxyyMxzz  = eight*(-two+omega)*(-seven+four*omega)/(fiftysix-fifty*omega+nine*omega*omega);//one;
+			real Oxyz      = twentyfour*(-two+omega)*(-two-seven*omega+three*omega*omega)/(fourtyeight+c152*omega-c130*omega*omega+twentynine*omega*omega*omega);//one;
 			////////////////////////////////////////////////////////////
 			//4.
 			//////////////////////////////
-			doubflo O4        = one;
+			real O4        = one;
 			//////////////////////////////
-			//doubflo O4        = omega;//TRT
+			//real O4        = omega;//TRT
 			////////////////////////////////////////////////////////////
 			//5.
 			//////////////////////////////
-			doubflo O5        = one;
+			real O5        = one;
 			////////////////////////////////////////////////////////////
 			//6.
 			//////////////////////////////
-			doubflo O6        = one;
+			real O6        = one;
 			////////////////////////////////////////////////////////////
 
 
 			//central moments to cumulants
 			//4.
-			doubflo CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
-			doubflo CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
-			doubflo CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
+			real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + two * mfbba * mfbab) / rho;
+			real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + two * mfbba * mfabb) / rho;
+			real CUMbbc = mfbbc - ((mfaac + c1o3) * mfbba + two * mfbab * mfabb) / rho;
 				  	 		
-			doubflo CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
-			doubflo CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
-			doubflo CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcca = mfcca - (((mfcaa * mfaca + two * mfbba * mfbba) + c1o3 * (mfcaa + mfaca)) / rho  - c1o9*(drho/rho));
+			real CUMcac = mfcac - (((mfcaa * mfaac + two * mfbab * mfbab) + c1o3 * (mfcaa + mfaac)) / rho  - c1o9*(drho/rho));
+			real CUMacc = mfacc - (((mfaac * mfaca + two * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho  - c1o9*(drho/rho));
 
 			//5.
-			doubflo CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
-			doubflo CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
-			doubflo CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
+			real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + four * mfabb * mfbbb + two * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac) ) / rho ;
+			real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + four * mfbab * mfbbb + two * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc) ) / rho ;
+			real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + four * mfbba * mfbbb + two * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab) ) / rho ;
 			
 			//6.
 
-			doubflo CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
+			real CUMccc = mfccc + ((-four *  mfbbb * mfbbb  
 							-           (mfcaa * mfacc + mfaca * mfcac + mfaac * mfcca)
 							-    four * (mfabb * mfcbb + mfbab * mfbcb + mfbba * mfbbc)
 							-     two * (mfbca * mfbac + mfcba * mfabc + mfcab * mfacb)) / rho
@@ -1670,33 +1670,33 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_AA2016_Comp_SP_27( doubflo omega_i
 
 			//2.
 			// linear combinations
-			doubflo mxxPyyPzz = mfcaa + mfaca + mfaac;
-			doubflo mxxMyy    = mfcaa - mfaca;
-			doubflo mxxMzz	   = mfcaa - mfaac;
+			real mxxPyyPzz = mfcaa + mfaca + mfaac;
+			real mxxMyy    = mfcaa - mfaca;
+			real mxxMzz	   = mfcaa - mfaac;
 			
 			////////////////////////////////////////////////////////////////////////////
-            doubflo Dxy =-three*omega*mfbba;
-            doubflo Dxz =-three*omega*mfbab;
-            doubflo Dyz =-three*omega*mfabb;
+            real Dxy =-three*omega*mfbba;
+            real Dxz =-three*omega*mfbab;
+            real Dyz =-three*omega*mfabb;
 
 			//3.
 			// linear combinations
 
-			doubflo mxxyPyzz = mfcba + mfabc;
-			doubflo mxxyMyzz = mfcba - mfabc;
+			real mxxyPyzz = mfcba + mfabc;
+			real mxxyMyzz = mfcba - mfabc;
 
-			doubflo mxxzPyyz = mfcab + mfacb;
-			doubflo mxxzMyyz = mfcab - mfacb;
+			real mxxzPyyz = mfcab + mfacb;
+			real mxxzMyyz = mfcab - mfacb;
 
-			doubflo mxyyPxzz = mfbca + mfbac;
-			doubflo mxyyMxzz = mfbca - mfbac;
+			real mxyyPxzz = mfbca + mfbac;
+			real mxyyMxzz = mfbca - mfbac;
 
  			///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  			//incl. correction		(hat noch nicht so gut funktioniert...Optimierungsbedarf??)
  			
- 				doubflo dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
- 				doubflo dyuy = dxux + omega * c3o2 * mxxMyy;
- 				doubflo dzuz = dxux + omega * c3o2 * mxxMzz;
+ 				real dxux = c1o2 * (-omega) *(mxxMyy + mxxMzz) + c1o2 *  OxxPyyPzz * (mfaaa - mxxPyyPzz);
+ 				real dyuy = dxux + omega * c3o2 * mxxMyy;
+ 				real dzuz = dxux + omega * c3o2 * mxxMzz;
  
  				//relax
 				mxxPyyPzz += OxxPyyPzz*(mfaaa  - mxxPyyPzz)- three * (one - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz);//-magicBulk*OxxPyyPzz;
@@ -1775,8 +1775,8 @@ extern "C" __global__ void LB_Kernel_Wale_Cum_AA2016_Comp_SP_27( doubflo omega_i
  		//	wadjust    = O4+(one-O4)*abs(CUMcbb)/(abs(CUMcbb)+qudricLimit);
 			//CUMcbb    += wadjust * (-CUMcbb); 
 			//////////////////////////////////////////////////////////////////////////
-			doubflo A = (four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega);
-			doubflo B = (four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega);
+			real A = (four + two*omega - three*omega*omega) / (two - seven*omega + five*omega*omega);
+			real B = (four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega);
 			//////////////////////////////////////////////////////////////////////////
 			//ohne limiter
 			//CUMacc += O4 * (-CUMacc); 
diff --git a/src/VirtualFluids_GPU/GPU/WallFunction.cu b/src/VirtualFluids_GPU/GPU/WallFunction.cu
index fe32ae5b1..a45a4ec60 100644
--- a/src/VirtualFluids_GPU/GPU/WallFunction.cu
+++ b/src/VirtualFluids_GPU/GPU/WallFunction.cu
@@ -6,15 +6,15 @@
 //////////////////////////////////////////////////////////////////////////////
 extern "C" __global__ void WallFunction27(int inx,
 										  int iny,
-										  doubflo* vx,
-										  doubflo* vy,
-										  doubflo* vz,
-										  doubflo* DD, 
+										  real* vx,
+										  real* vy,
+										  real* vz,
+										  real* DD, 
 										  int* k_Q, 
-										  doubflo* QQ,
+										  real* QQ,
 										  unsigned int sizeQ,
 									      int kQ, 
-										  doubflo om1, 
+										  real om1, 
 										  unsigned int* neighborX,
 										  unsigned int* neighborY,
 										  unsigned int* neighborZ,
@@ -96,11 +96,11 @@ extern "C" __global__ void WallFunction27(int inx,
    if(k<kQ)
    {
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo VeloX = vx[k];
-      doubflo VeloY = vy[k];
-      doubflo VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
+      real VeloX = vx[k];
+      real VeloY = vy[k];
+      real VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny)
       ////////////////////////////////////////////////////////////////////////////////
-      //doubflo *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
+      //real *q_dirE,   *q_dirW,   *q_dirN,   *q_dirS,   *q_dirT,   *q_dirB, 
       //      *q_dirNE,  *q_dirSW,  *q_dirSE,  *q_dirNW,  *q_dirTE,  *q_dirBW,
       //      *q_dirBE,  *q_dirTW,  *q_dirTN,  *q_dirBS,  *q_dirBN,  *q_dirTS,
       //      *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW,
@@ -162,7 +162,7 @@ extern "C" __global__ void WallFunction27(int inx,
       unsigned int ktne = KQK;
       unsigned int kbsw = neighborZ[ksw];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
+      real f_E,  f_W,  f_N,  f_S,  f_T,  f_B,   f_NE,  f_SW,  f_SE,  f_NW,  f_TE,  f_BW,  f_BE,
          f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW;
 
       f_W    = (D.f[dirE   ])[ke   ];
@@ -192,7 +192,7 @@ extern "C" __global__ void WallFunction27(int inx,
       f_TNW  = (D.f[dirBSE ])[kbse ];
       f_TSE  = (D.f[dirBNW ])[kbnw ];
       ////////////////////////////////////////////////////////////////////////////////
-      doubflo vx1, vx2, vx3, drho, feq, q;
+      real vx1, vx2, vx3, drho, feq, q;
       drho   =  f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW +
                 f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + 
                 f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); 
@@ -210,11 +210,11 @@ extern "C" __global__ void WallFunction27(int inx,
                  (-(f_BN - f_TS)  + (f_TN - f_BS))   + ((f_TE - f_BW)   - (f_BE - f_TW)) +
                  (f_T - f_B)) / (one + drho); 
 
-      //doubflo cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
+      //real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho);
 
-	  doubflo nu = c1o3 * (one / om1 - c1o2);
-	  doubflo qw = one;
-	  doubflo uTau = sqrt(nu * (vx1 - VeloX) / qw);
+	  real nu = c1o3 * (one / om1 - c1o2);
+	  real qw = one;
+	  real uTau = sqrt(nu * (vx1 - VeloX) / qw);
 
 	  if (abs(uTau)/nu>11){
 	  uTau = vx1 * 0.41 / (log10(9.8 * uTau * qw / nu));
diff --git a/src/VirtualFluids_GPU/GPU/constant.h b/src/VirtualFluids_GPU/GPU/constant.h
index 1e5396774..9be225085 100644
--- a/src/VirtualFluids_GPU/GPU/constant.h
+++ b/src/VirtualFluids_GPU/GPU/constant.h
@@ -4,7 +4,7 @@
 #include <cuda_runtime.h>
 #include "LBM/LB.h"
 
-#ifdef ISDOUBLE
+#ifdef VF_DOUBLE_ACCURACY
 #define c1o2		0.5
 #define c3o2		1.5
 #define c1o3		0.333333333333333
@@ -109,9 +109,7 @@
 
 #define Op0000002   0.0000002
 #define smallSingle 0.0000000002f
-#endif
-
-#ifdef ISFLOAT
+#else
 #define c1o2		0.5f
 #define c3o2		1.5f
 #define c1o3		0.333333f
@@ -223,75 +221,75 @@
 
 
 
-//__constant__ doubflo c1o2			= 0.5				 ;
-//__constant__ doubflo c3o2			= 1.5				 ;
-//__constant__ doubflo c1o3			= 0.333333333333333	 ;
-//__constant__ doubflo c2o3			= 0.666666666666667	 ;
-//__constant__ doubflo c1o4			= 0.25				 ;
-//__constant__ doubflo c1o6			= 0.166666666666667	 ;
-//__constant__ doubflo c1o8			= 0.125				 ;
-//__constant__ doubflo c1o9			= 0.111111111111111	 ;
-//__constant__ doubflo c2o9			= 0.222222222222222	 ;
-//__constant__ doubflo c4o9			= 0.444444444444444	 ;
-//__constant__ doubflo c1o10			= 0.1				 ;
-//__constant__ doubflo c1o12			= 0.083333333333333	 ;
-//__constant__ doubflo c1o16			= 0.0625			 ;
-//__constant__ doubflo c3o16			= 0.1875			 ;
-//__constant__ doubflo c9o16			= 0.5625			 ;
-//__constant__ doubflo c1o18			= 0.055555555555556	 ;
-//__constant__ doubflo c1o20			= 0.05				 ;
-//__constant__ doubflo c19o20			= 0.95				 ;
-//__constant__ doubflo c21o20			= 1.05				 ;
-//__constant__ doubflo c1o24			= 0.041666666666667	 ;
-//__constant__ doubflo c1o27			= 0.037037037037037	 ;
-//__constant__ doubflo c4o32			= 0.125				 ;
-//__constant__ doubflo c1o36			= 0.027777777777778	 ;
-//__constant__ doubflo c1o48			= 0.020833333333333	 ;
-//__constant__ doubflo c1o64			= 0.015625			 ;
-//__constant__ doubflo c3o64			= 0.046875			 ;
-//__constant__ doubflo c9o64			= 0.140625			 ;
-//__constant__ doubflo c27o64			= 0.421875			 ;
-//__constant__ doubflo c1o72			= 0.013888888888889	 ;
-//__constant__ doubflo c8over27		= 0.296296296296296	 ;
-//__constant__ doubflo c2over27		= 0.074074074074074	 ;
-//__constant__ doubflo c1over54		= 0.018518518518519	 ;
-//__constant__ doubflo c1o100			= 0.01				 ;
-//__constant__ doubflo c99o100		= 0.99				 ;
-//__constant__ doubflo c1over126		= 0.007936507936508	 ;
-//__constant__ doubflo c1over216		= 0.004629629629630	 ;
-//__constant__ doubflo c9over2		= 4.5				 ;
+//__constant__ real c1o2			= 0.5				 ;
+//__constant__ real c3o2			= 1.5				 ;
+//__constant__ real c1o3			= 0.333333333333333	 ;
+//__constant__ real c2o3			= 0.666666666666667	 ;
+//__constant__ real c1o4			= 0.25				 ;
+//__constant__ real c1o6			= 0.166666666666667	 ;
+//__constant__ real c1o8			= 0.125				 ;
+//__constant__ real c1o9			= 0.111111111111111	 ;
+//__constant__ real c2o9			= 0.222222222222222	 ;
+//__constant__ real c4o9			= 0.444444444444444	 ;
+//__constant__ real c1o10			= 0.1				 ;
+//__constant__ real c1o12			= 0.083333333333333	 ;
+//__constant__ real c1o16			= 0.0625			 ;
+//__constant__ real c3o16			= 0.1875			 ;
+//__constant__ real c9o16			= 0.5625			 ;
+//__constant__ real c1o18			= 0.055555555555556	 ;
+//__constant__ real c1o20			= 0.05				 ;
+//__constant__ real c19o20			= 0.95				 ;
+//__constant__ real c21o20			= 1.05				 ;
+//__constant__ real c1o24			= 0.041666666666667	 ;
+//__constant__ real c1o27			= 0.037037037037037	 ;
+//__constant__ real c4o32			= 0.125				 ;
+//__constant__ real c1o36			= 0.027777777777778	 ;
+//__constant__ real c1o48			= 0.020833333333333	 ;
+//__constant__ real c1o64			= 0.015625			 ;
+//__constant__ real c3o64			= 0.046875			 ;
+//__constant__ real c9o64			= 0.140625			 ;
+//__constant__ real c27o64			= 0.421875			 ;
+//__constant__ real c1o72			= 0.013888888888889	 ;
+//__constant__ real c8over27		= 0.296296296296296	 ;
+//__constant__ real c2over27		= 0.074074074074074	 ;
+//__constant__ real c1over54		= 0.018518518518519	 ;
+//__constant__ real c1o100			= 0.01				 ;
+//__constant__ real c99o100		= 0.99				 ;
+//__constant__ real c1over126		= 0.007936507936508	 ;
+//__constant__ real c1over216		= 0.004629629629630	 ;
+//__constant__ real c9over2		= 4.5				 ;
 //
-//__constant__ doubflo zero			= 0.				 ;
-//__constant__ doubflo one			= 1.				 ;
-//__constant__ doubflo two			= 2.				 ;
-//__constant__ doubflo three			= 3.				 ;
-//__constant__ doubflo four			= 4.				 ;
-//__constant__ doubflo five			= 5.				 ;
-//__constant__ doubflo six			= 6.				 ;
-//__constant__ doubflo eight			= 8.				 ;
-//__constant__ doubflo nine			= 9.				 ;
-//__constant__ doubflo ten 			= 10.				 ;
-//__constant__ doubflo eleven  		= 11.				 ;
-//__constant__ doubflo twelve  		= 12.				 ;
-//__constant__ doubflo fourteen		= 14.				 ;
-//__constant__ doubflo sixteen 		= 16.				 ;
-//__constant__ doubflo seventeen 		= 17.				 ;
-//__constant__ doubflo eighteen		= 18.				 ;
-//__constant__ doubflo twentyseven	= 27.				 ;
-//__constant__ doubflo thirty  		= 30.				 ;
-//__constant__ doubflo thirtytwo		= 32.				 ;
-//__constant__ doubflo thirtythree	= 33.				 ;
-//__constant__ doubflo thirtyfour		= 34.				 ;
-//__constant__ doubflo thirtysix		= 36.				 ;
-//__constant__ doubflo fortytwo		= 42.				 ;
-//__constant__ doubflo fiftyfour		= 54.				 ;
-//__constant__ doubflo sixtyfour		= 64.				 ;
-//__constant__ doubflo sixtysix		= 66.				 ;
-//__constant__ doubflo sixtyeight		= 68.				 ;
-//__constant__ doubflo seventytwo		= 72.				 ;
-//__constant__ doubflo eightyfour		= 84.				 ;
-//__constant__ doubflo ninetysix		= 96.				 ;
+//__constant__ real zero			= 0.				 ;
+//__constant__ real one			= 1.				 ;
+//__constant__ real two			= 2.				 ;
+//__constant__ real three			= 3.				 ;
+//__constant__ real four			= 4.				 ;
+//__constant__ real five			= 5.				 ;
+//__constant__ real six			= 6.				 ;
+//__constant__ real eight			= 8.				 ;
+//__constant__ real nine			= 9.				 ;
+//__constant__ real ten 			= 10.				 ;
+//__constant__ real eleven  		= 11.				 ;
+//__constant__ real twelve  		= 12.				 ;
+//__constant__ real fourteen		= 14.				 ;
+//__constant__ real sixteen 		= 16.				 ;
+//__constant__ real seventeen 		= 17.				 ;
+//__constant__ real eighteen		= 18.				 ;
+//__constant__ real twentyseven	= 27.				 ;
+//__constant__ real thirty  		= 30.				 ;
+//__constant__ real thirtytwo		= 32.				 ;
+//__constant__ real thirtythree	= 33.				 ;
+//__constant__ real thirtyfour		= 34.				 ;
+//__constant__ real thirtysix		= 36.				 ;
+//__constant__ real fortytwo		= 42.				 ;
+//__constant__ real fiftyfour		= 54.				 ;
+//__constant__ real sixtyfour		= 64.				 ;
+//__constant__ real sixtysix		= 66.				 ;
+//__constant__ real sixtyeight		= 68.				 ;
+//__constant__ real seventytwo		= 72.				 ;
+//__constant__ real eightyfour		= 84.				 ;
+//__constant__ real ninetysix		= 96.				 ;
 //
-//__constant__ doubflo Op0000002		= 0.0000002			 ;
+//__constant__ real Op0000002		= 0.0000002			 ;
 
 #endif
\ No newline at end of file
diff --git a/src/VirtualFluids_GPU/GPU/devCheck.cu b/src/VirtualFluids_GPU/GPU/devCheck.cpp
similarity index 94%
rename from src/VirtualFluids_GPU/GPU/devCheck.cu
rename to src/VirtualFluids_GPU/GPU/devCheck.cpp
index 776721a0a..9b4853fef 100644
--- a/src/VirtualFluids_GPU/GPU/devCheck.cu
+++ b/src/VirtualFluids_GPU/GPU/devCheck.cpp
@@ -1,8 +1,12 @@
-#include "GPU/devCheck.h"
-#include <cuda_runtime.h>
+#include "devCheck.h"
+
+#include <stdio.h>
 #include <stdlib.h> 
+
+#include <cuda_runtime.h>
+
   
-extern "C" int devCheck(int gpudevice) 
+int devCheck(int gpudevice) 
 { 
    int device_count=0; 
     int device;  // used with  cudaGetDevice() to verify cudaSetDevice() 
diff --git a/src/VirtualFluids_GPU/GPU/devCheck.h b/src/VirtualFluids_GPU/GPU/devCheck.h
index 9405221dc..e33af3297 100644
--- a/src/VirtualFluids_GPU/GPU/devCheck.h
+++ b/src/VirtualFluids_GPU/GPU/devCheck.h
@@ -1,8 +1,7 @@
 #ifndef DEVCHECK_H
 #define DEVCHECK_H
 
-#include <stdio.h>
   
-extern "C" int devCheck(int gpudevice); 
+int devCheck(int gpudevice); 
 
 #endif
\ No newline at end of file
diff --git a/src/VirtualFluids_GPU/Init/DefineGrid.cpp b/src/VirtualFluids_GPU/Init/DefineGrid.cpp
index 15f90f0f1..5f9eb5af6 100644
--- a/src/VirtualFluids_GPU/Init/DefineGrid.cpp
+++ b/src/VirtualFluids_GPU/Init/DefineGrid.cpp
@@ -17,7 +17,7 @@ void defineGrid(Parameter* para, Communicator* comm)
 		///////////////////////////////////////////////////////////////////////////////////////////////////
 		if (para->getDiffOn()==true)
 		{
-			checkCudaErrors( cudaMallocHost((void**) &(para->getParH(lev)->Conc_Full ), para->getParH(lev)->mem_size_doubflo));
+			checkCudaErrors( cudaMallocHost((void**) &(para->getParH(lev)->Conc_Full ), para->getParH(lev)->mem_size_real));
 		}
 		///////////////////////////////////////////////////////////////////////////////////////////////////
 		if (lev==para->getCoarse())
@@ -59,14 +59,14 @@ void defineGrid(Parameter* para, Communicator* comm)
 							////unsigned int centerX = para->getParH(lev)->gridNX / 2 + STARTOFFX;
 							////unsigned int centerY = para->getParH(lev)->gridNY / 2 + STARTOFFY;
 							////unsigned int centerZ = para->getParH(lev)->gridNZ / 4 + STARTOFFZ;
-							//doubflo centerX = para->getParH(lev)->gridNX / 2. + STARTOFFX - 0.5;
-							//doubflo centerY = para->getParH(lev)->gridNY / 2. + STARTOFFY - 0.5;
-							//doubflo centerZ = para->getParH(lev)->gridNZ / 4. + STARTOFFZ - 0.5;
-							//doubflo      radius  = para->getParH(lev)->gridNY / 10.;//2.56f;
+							//real centerX = para->getParH(lev)->gridNX / 2. + STARTOFFX - 0.5;
+							//real centerY = para->getParH(lev)->gridNY / 2. + STARTOFFY - 0.5;
+							//real centerZ = para->getParH(lev)->gridNZ / 4. + STARTOFFZ - 0.5;
+							//real      radius  = para->getParH(lev)->gridNY / 10.;//2.56f;
 							//////unsigned int distSq  = (centerX-i)*(centerX-i)+(centerY-j)*(centerY-j);
 							////unsigned int distSq  = (centerX-i)*(centerX-i)+(centerY-j)*(centerY-j)+(centerZ-k)*(centerZ-k);
-							//doubflo distSq  = (centerX-i)*(centerX-i)+(centerY-j)*(centerY-j)+(centerZ-k)*(centerZ-k);
-							//doubflo      radiSq  = radius*radius;
+							//real distSq  = (centerX-i)*(centerX-i)+(centerY-j)*(centerY-j)+(centerZ-k)*(centerZ-k);
+							//real      radiSq  = radius*radius;
 							////////////////////////////////////////////////////////////////////////////////////////////////
 
 							if (   i < STARTOFFX || i > para->getParH(lev)->gridNX + STARTOFFX - 1 
@@ -150,7 +150,7 @@ void defineGrid(Parameter* para, Communicator* comm)
 								para->getParH(lev)->geo[m] = GEO_FLUID;
 								if (para->getDiffOn()==true)
 								{
-									para->getParH(lev)->Conc_Full[m] = (doubflo)para->getTemperatureInit();
+									para->getParH(lev)->Conc_Full[m] = (real)para->getTemperatureInit();
 								}
 							}
 							//if (i == STARTOFFZ)
@@ -179,20 +179,20 @@ void defineGrid(Parameter* para, Communicator* comm)
 						//unsigned int centerX = para->getParH(lev)->gridNX / 2 + STARTOFFX;
 						//unsigned int centerY = para->getParH(lev)->gridNY / 2 + STARTOFFY;
 						//unsigned int centerZ = para->getParH(lev)->gridNZ / 2 + STARTOFFZ;
-						//doubflo        radius  = para->getParH(lev)->gridNY / 5.f;//2.56f;
-						//doubflo centerX = para->getParH(lev)->gridNX / 2.f + STARTOFFX - 0.5f;
-						//doubflo centerY = para->getParH(lev)->gridNY / 2.f + STARTOFFY - 0.5f;
-						//doubflo centerZ = para->getParH(lev)->gridNZ / 2.f + STARTOFFZ - 0.5f;
-						//doubflo      radius  = para->getParH(lev)->gridNY / 5.f;//2.56f;
+						//real        radius  = para->getParH(lev)->gridNY / 5.f;//2.56f;
+						//real centerX = para->getParH(lev)->gridNX / 2.f + STARTOFFX - 0.5f;
+						//real centerY = para->getParH(lev)->gridNY / 2.f + STARTOFFY - 0.5f;
+						//real centerZ = para->getParH(lev)->gridNZ / 2.f + STARTOFFZ - 0.5f;
+						//real      radius  = para->getParH(lev)->gridNY / 5.f;//2.56f;
 
 						int m = para->getParH(lev)->nx*(para->getParH(lev)->ny*k + j) + i;
 
 						////unsigned int distSq = (centerX-i)*(centerX-i)+(centerY-j)*(centerY-j)+(centerZ-k)*(centerZ-k);
-						//doubflo distSq = (centerX-i)*(centerX-i)+(centerY-j)*(centerY-j)+(centerZ-k)*(centerZ-k);
-						//doubflo radiSq = radius*radius;
+						//real distSq = (centerX-i)*(centerX-i)+(centerY-j)*(centerY-j)+(centerZ-k)*(centerZ-k);
+						//real radiSq = radius*radius;
 
 						//diff stuff
-						//doubflo mradsq = (doubflo)((doubflo)i-(STARTOFFX + 30)) * (doubflo)((doubflo)i-(STARTOFFX + 30)) + (doubflo)((doubflo)j-(STARTOFFY + 30)) *  (doubflo)((doubflo)j-(STARTOFFY + 30)) +(doubflo) ((doubflo)k-(STARTOFFZ + 30)) * (doubflo) ((doubflo)k-(STARTOFFZ + 30)); 
+						//real mradsq = (real)((real)i-(STARTOFFX + 30)) * (real)((real)i-(STARTOFFX + 30)) + (real)((real)j-(STARTOFFY + 30)) *  (real)((real)j-(STARTOFFY + 30)) +(real) ((real)k-(STARTOFFZ + 30)) * (real) ((real)k-(STARTOFFZ + 30)); 
 
 						if (  i <  STARTOFFX || i >  para->getParH(lev)->gridNX + STARTOFFX - 1 
 							|| j <  STARTOFFY || j >  para->getParH(lev)->gridNY + STARTOFFY - 1 
diff --git a/src/VirtualFluids_GPU/Init/InitLattice.cpp b/src/VirtualFluids_GPU/Init/InitLattice.cpp
index 4def7036a..0fe9374e0 100644
--- a/src/VirtualFluids_GPU/Init/InitLattice.cpp
+++ b/src/VirtualFluids_GPU/Init/InitLattice.cpp
@@ -2,8 +2,12 @@
 #include <cuda_runtime.h>
 #include <helper_cuda.h>
 
+#include "Parameter/Parameter.h"
+#include "GPU/GPU_Interface.h"
+#include "Temperature/FindTemperature.h"
+
 ////////////////////////////////////////////////////////////////////////////////
-void initLattice(Parameter* para)
+void initLattice(SPtr<Parameter> para)
 {
     for (int lev=para->getFine(); lev >= para->getCoarse(); lev--)
     {
@@ -153,7 +157,7 @@ void initLattice(Parameter* para)
 			}
 			//malloc and init fs
 			//printf("vor initTemperatur\n");
-			initTemperatur(para, lev);
+			initTemperatur(para.get(), lev);
 		}
 		////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     }
diff --git a/src/VirtualFluids_GPU/Init/InitLattice.h b/src/VirtualFluids_GPU/Init/InitLattice.h
index cc37c876e..539a29201 100644
--- a/src/VirtualFluids_GPU/Init/InitLattice.h
+++ b/src/VirtualFluids_GPU/Init/InitLattice.h
@@ -1,11 +1,10 @@
 #ifndef INIT_LATTICE_H
 #define INIT_LATTICE_H
 
-#include "LBM/LB.h"
-#include "GPU/GPU_Interface.h"
-#include "Parameter/Parameter.h"
-#include "Temperature/FindTemperature.h"
+#include "core/PointerDefinitions.h"
 
-extern "C" void initLattice(Parameter* para);
+class Parameter;
+
+void initLattice(SPtr<Parameter> para);
 
 #endif
diff --git a/src/VirtualFluids_GPU/Init/SetParameter.cpp b/src/VirtualFluids_GPU/Init/SetParameter.cpp
index 98ac416ca..08fd70961 100644
--- a/src/VirtualFluids_GPU/Init/SetParameter.cpp
+++ b/src/VirtualFluids_GPU/Init/SetParameter.cpp
@@ -1,260 +1,260 @@
-#include "Init/SetParameter.h"
-#include "Interface_OpenFOAM/Interface.h"
-
-////////////////////////////////////////////////////////////////////////////////
-void setParameters(Parameter* para, Communicator* comm, std::string &cstr)
-{
-   ConfigFile cf(cstr.c_str());
-   if ( !cf.read() )
-   {
-      std::string exceptionText = "Unable to read configuration file\n";
-      throw exceptionText;
-   }
-   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-   para->setMaxDev(              StringUtil::toInt(cf.getValue( "NumberOfDevices" )));
-   para->setMyID(                comm->getPID());                                     
-   para->setNumprocs(            comm->getNummberOfProcess());                        
-   para->setDevices(             StringUtil::toVector<int>(cf.getValue( "Devices" )));
-   devCheck(                     comm->mapCudaDevice(para->getMyID(), para->getNumprocs(), para->getDevices(), para->getMaxDev()));
-   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-   std::string _path = cf.getValue( "Path" );
-   std::string _prefix = cf.getValue( "Prefix" );
-   std::string _gridpath = cf.getValue( "GridPath" );
-   std::string gridPath = getGridPath(para, _gridpath);
-   para->setOutputPath(          _path);
-   para->setOutputPrefix(        _prefix);
-   para->setFName(               _path + "/" + _prefix);
-   para->setPrintFiles(          false);                                                                  
-   para->setPrintFiles(          StringUtil::toBool( cf.getValue( "WriteGrid" )));                        
-   para->setGeometryValues(      StringUtil::toBool( cf.getValue( "GeometryValues" )));                        
-   para->setCalc2ndOrderMoments( StringUtil::toBool( cf.getValue( "calc2ndOrderMoments" )));                        
-   para->setCalc3rdOrderMoments( StringUtil::toBool( cf.getValue( "calc3rdOrderMoments" )));                        
-   para->setCalcHighOrderMoments(StringUtil::toBool( cf.getValue( "calcHigherOrderMoments" )));                        
-   para->setReadGeo(             StringUtil::toBool( cf.getValue( "ReadGeometry" )));                     
-   para->setCalcMedian(          StringUtil::toBool( cf.getValue( "calcMedian" )));                       
-   para->setConcFile(            StringUtil::toBool( cf.getValue( "UseConcFile" )));                       
-   para->setUseMeasurePoints(    StringUtil::toBool( cf.getValue( "UseMeasurePoints")));
-   para->setUseWale(             StringUtil::toBool( cf.getValue( "UseWale" )));
-   para->setSimulatePorousMedia( StringUtil::toBool( cf.getValue( "SimulatePorousMedia" )));
-   para->setD3Qxx(               StringUtil::toInt(  cf.getValue( "D3Qxx" )));
-   para->setMaxLevel(            StringUtil::toInt(  cf.getValue( "NOGL" )));                             
-   para->setTEnd(                StringUtil::toInt(  cf.getValue( "TimeEnd" )));                          
-   para->setTOut(                StringUtil::toInt(  cf.getValue( "TimeOut" )));                          
-   para->setTStartOut(			 StringUtil::toInt(  cf.getValue( "TimeStartOut")));
-   para->setTimeCalcMedStart(    StringUtil::toInt(  cf.getValue( "TimeStartCalcMedian" )));
-   para->setTimeCalcMedEnd(      StringUtil::toInt(  cf.getValue( "TimeEndCalcMedian" )));                  
-   para->setPressInID(           StringUtil::toInt(  cf.getValue( "PressInID" )));                          
-   para->setPressOutID(          StringUtil::toInt(  cf.getValue( "PressOutID" )));                         
-   para->setPressInZ(            StringUtil::toInt(  cf.getValue( "PressInZ" )));                           
-   para->setPressOutZ(           StringUtil::toInt(  cf.getValue( "PressOutZ" )));                          
-   //////////////////////////////////////////////////////////////////////////
-   para->setDiffOn(              StringUtil::toBool( cf.getValue( "DiffOn" )));                           
-   para->setDiffMod(             StringUtil::toInt(  cf.getValue( "DiffMod" )));                          
-   para->setDiffusivity(         StringUtil::toFloat(cf.getValue( "Diffusivity" )));                      
-   para->setTemperatureInit(     StringUtil::toFloat(cf.getValue( "Temp" )));                             
-   para->setTemperatureBC(       StringUtil::toFloat(cf.getValue( "TempBC" )));                           
-   //////////////////////////////////////////////////////////////////////////
-   para->setViscosity(           StringUtil::toFloat(cf.getValue( "Viscosity_LB" )));                     
-   para->setVelocity(            StringUtil::toFloat(cf.getValue( "Velocity_LB" )));                      
-   para->setViscosityRatio(      StringUtil::toFloat(cf.getValue( "Viscosity_Ratio_World_to_LB" )));      
-   para->setVelocityRatio(       StringUtil::toFloat(cf.getValue( "Velocity_Ratio_World_to_LB" )));       
-   para->setDensityRatio(        StringUtil::toFloat(cf.getValue( "Density_Ratio_World_to_LB" )));        
-   para->setPressRatio(          StringUtil::toFloat(cf.getValue( "Delta_Press" )));                      
-   para->setRealX(               StringUtil::toFloat(cf.getValue( "SliceRealX" )));                       
-   para->setRealY(               StringUtil::toFloat(cf.getValue( "SliceRealY" )));                       
-   para->setFactorPressBC(       StringUtil::toFloat(cf.getValue( "dfpbc" )));                      
-   para->setGeometryFileC(       cf.getValue( "GeometryC" ));                                             
-   para->setGeometryFileM(       cf.getValue( "GeometryM" ));                                             
-   para->setGeometryFileF(       cf.getValue( "GeometryF" ));                                             
-   //////////////////////////////////////////////////////////////////////////
-   para->setgeoVec(              gridPath + cf.getValue( "geoVec" ));
-   para->setcoordX(              gridPath + cf.getValue( "coordX" ));
-   para->setcoordY(              gridPath + cf.getValue( "coordY" ));
-   para->setcoordZ(              gridPath + cf.getValue( "coordZ" ));
-   para->setneighborX(           gridPath + cf.getValue( "neighborX" ));
-   para->setneighborY(           gridPath + cf.getValue( "neighborY" ));
-   para->setneighborZ(           gridPath + cf.getValue( "neighborZ" ));
-   para->setscaleCFC(            gridPath + cf.getValue( "scaleCFC" ));
-   para->setscaleCFF(            gridPath + cf.getValue( "scaleCFF" ));
-   para->setscaleFCC(            gridPath + cf.getValue( "scaleFCC" ));
-   para->setscaleFCF(            gridPath + cf.getValue( "scaleFCF" ));
-   para->setscaleOffsetCF(       gridPath + cf.getValue( "scaleOffsetCF" ));
-   para->setscaleOffsetFC(       gridPath + cf.getValue( "scaleOffsetFC" ));
-   para->setgeomBoundaryBcQs(    gridPath + cf.getValue( "geomBoundaryBcQs" ));
-   para->setgeomBoundaryBcValues(gridPath + cf.getValue( "geomBoundaryBcValues" ));
-   para->setinletBcQs(           gridPath + cf.getValue( "inletBcQs"        ));
-   para->setinletBcValues(       gridPath + cf.getValue( "inletBcValues"    ));
-   para->setoutletBcQs(          gridPath + cf.getValue( "outletBcQs"       ));
-   para->setoutletBcValues(      gridPath + cf.getValue( "outletBcValues"   ));
-   para->settopBcQs(             gridPath + cf.getValue( "topBcQs"          ));
-   para->settopBcValues(         gridPath + cf.getValue( "topBcValues"      ));
-   para->setbottomBcQs(          gridPath + cf.getValue( "bottomBcQs"       ));
-   para->setbottomBcValues(      gridPath + cf.getValue( "bottomBcValues"   ));
-   para->setfrontBcQs(           gridPath + cf.getValue( "frontBcQs"        ));
-   para->setfrontBcValues(       gridPath + cf.getValue( "frontBcValues"    ));
-   para->setbackBcQs(            gridPath + cf.getValue( "backBcQs"         ));
-   para->setbackBcValues(        gridPath + cf.getValue( "backBcValues"     ));
-   para->setnumberNodes(         gridPath + cf.getValue( "numberNodes"      ));
-   para->setLBMvsSI(             gridPath + cf.getValue( "LBMvsSI"          ));
-   //////////////////////////////gridPath + ////////////////////////////////////////////
-   para->setmeasurePoints(       gridPath + cf.getValue( "measurePoints" ));
-   para->setpropellerValues(	 gridPath + cf.getValue( "propellerValues"  ));
-   para->setclockCycleForMP(     StringUtil::toFloat(cf.getValue( "measureClockCycle" )));
-   para->settimestepForMP(       StringUtil::toInt(cf.getValue( "measureTimestep" )));
-   para->setcpTop(               gridPath + cf.getValue( "cpTop"            ));
-   para->setcpBottom(            gridPath + cf.getValue( "cpBottom"         ));
-   para->setcpBottom2(           gridPath + cf.getValue( "cpBottom2"        ));
-   para->setConcentration(       gridPath + cf.getValue( "Concentration"    ));
-   //////////////////////////////////////////////////////////////////////////
-   //Normals - Geometry
-   para->setgeomBoundaryNormalX(    gridPath + cf.getValue( "geomBoundaryNormalX" ));
-   para->setgeomBoundaryNormalY(    gridPath + cf.getValue( "geomBoundaryNormalY" ));
-   para->setgeomBoundaryNormalZ(    gridPath + cf.getValue( "geomBoundaryNormalZ" ));
-   //Normals - Inlet
-   para->setInflowBoundaryNormalX(    gridPath + cf.getValue( "inletBoundaryNormalX" ));
-   para->setInflowBoundaryNormalY(    gridPath + cf.getValue( "inletBoundaryNormalY" ));
-   para->setInflowBoundaryNormalZ(    gridPath + cf.getValue( "inletBoundaryNormalZ" ));
-   //Normals - Outlet
-   para->setOutflowBoundaryNormalX(    gridPath + cf.getValue( "outletBoundaryNormalX" ));
-   para->setOutflowBoundaryNormalY(    gridPath + cf.getValue( "outletBoundaryNormalY" ));
-   para->setOutflowBoundaryNormalZ(    gridPath + cf.getValue( "outletBoundaryNormalZ" ));
-   //////////////////////////////////////////////////////////////////////////
-   //Forcing
-   para->setForcing(StringUtil::toFloat(cf.getValue( "ForcingX")), StringUtil::toFloat(cf.getValue( "ForcingY")), StringUtil::toFloat(cf.getValue( "ForcingZ")));
-   //////////////////////////////////////////////////////////////////////////
-   //Particles
-   para->setCalcParticles(     StringUtil::toBool( cf.getValue( "calcParticles"     )));                             
-   para->setParticleBasicLevel(StringUtil::toInt(  cf.getValue( "baseLevel"         )));                             
-   para->setParticleInitLevel( StringUtil::toInt(  cf.getValue( "initLevel"         )));                             
-   para->setNumberOfParticles( StringUtil::toInt(  cf.getValue( "numberOfParticles" )));                             
-   para->setneighborWSB(                gridPath + cf.getValue( "neighborWSB"       ));
-   para->setStartXHotWall(     StringUtil::toDouble(cf.getValue("startXHotWall"     )));
-   para->setEndXHotWall(       StringUtil::toDouble(cf.getValue("endXHotWall"       )));
-   //////////////////////////////////////////////////////////////////////////
-   //for Multi GPU
-   if (para->getNumprocs()>1)
-   {
-	   ////////////////////////////////////////////////////////////////////////////
-	   ////1D domain decomposition
-	   //std::vector<std::string> sendProcNeighbors;
-	   //std::vector<std::string> recvProcNeighbors;
-	   //for (int i = 0; i<para->getNumprocs();i++)
-	   //{
-		  // sendProcNeighbors.push_back(gridPath + StringUtil::toString(i) + "s.dat");
-		  // recvProcNeighbors.push_back(gridPath + StringUtil::toString(i) + "r.dat");
-	   //}
-	   //para->setPossNeighborFiles(sendProcNeighbors, "send");
-	   //para->setPossNeighborFiles(recvProcNeighbors, "recv");
-	   //////////////////////////////////////////////////////////////////////////
-	   //3D domain decomposition
-	   std::vector<std::string> sendProcNeighborsX, sendProcNeighborsY, sendProcNeighborsZ;
-	   std::vector<std::string> recvProcNeighborsX, recvProcNeighborsY, recvProcNeighborsZ;
-	   for (int i = 0; i<para->getNumprocs();i++)
-	   {
-		   sendProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xs.dat");
-		   sendProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Ys.dat");
-		   sendProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zs.dat");
-		   recvProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xr.dat");
-		   recvProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Yr.dat");
-		   recvProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zr.dat");
-	   }
-	   para->setPossNeighborFilesX(sendProcNeighborsX, "send");
-	   para->setPossNeighborFilesY(sendProcNeighborsY, "send");
-	   para->setPossNeighborFilesZ(sendProcNeighborsZ, "send");
-	   para->setPossNeighborFilesX(recvProcNeighborsX, "recv");
-	   para->setPossNeighborFilesY(recvProcNeighborsY, "recv");
-	   para->setPossNeighborFilesZ(recvProcNeighborsZ, "recv");
-   }
-   //////////////////////////////////////////////////////////////////////////
-   //para->setkFull(             cf.getValue( "kFull" ));
-   //para->setgeoFull(           cf.getValue( "geoFull" ));
-   //para->setnoSlipBcPos(       cf.getValue( "noSlipBcPos" ));
-   //para->setnoSlipBcQs(          cf.getValue( "noSlipBcQs" ));
-   //para->setnoSlipBcValues(      cf.getValue( "noSlipBcValues" ));
-   //para->setnoSlipBcValue(     cf.getValue( "noSlipBcValue" ));
-   //para->setslipBcPos(         cf.getValue( "slipBcPos" ));
-   //para->setslipBcQs(          cf.getValue( "slipBcQs" ));
-   //para->setslipBcValue(       cf.getValue( "slipBcValue" ));
-   //para->setpressBcPos(        cf.getValue( "pressBcPos" ));
-   //para->setpressBcQs(           cf.getValue( "pressBcQs" ));
-   //para->setpressBcValues(       cf.getValue( "pressBcValues" ));
-   //para->setpressBcValue(      cf.getValue( "pressBcValue" ));
-   //para->setvelBcQs(             cf.getValue( "velBcQs" ));
-   //para->setvelBcValues(         cf.getValue( "velBcValues" ));
-   //para->setpropellerCylinder( cf.getValue( "propellerCylinder" ));
-   //para->setpropellerQs(		 cf.getValue( "propellerQs"      ));
-   //para->setwallBcQs(            cf.getValue( "wallBcQs"         ));
-   //para->setwallBcValues(        cf.getValue( "wallBcValues"     ));
-   //para->setperiodicBcQs(        cf.getValue( "periodicBcQs"     ));
-   //para->setperiodicBcValues(    cf.getValue( "periodicBcValues" ));
-   //cout << "Try this: " << para->getgeomBoundaryBcValues() << endl;
-
-   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-   //Restart
-   para->setTimeDoCheckPoint(    StringUtil::toInt(  cf.getValue( "TimeDoCheckPoint" )));
-   para->setTimeDoRestart(       StringUtil::toInt(  cf.getValue( "TimeDoRestart" )));
-   para->setDoCheckPoint(        StringUtil::toBool( cf.getValue( "DoCheckPoint" )));
-   para->setDoRestart(           StringUtil::toBool( cf.getValue( "DoRestart" )));
-   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-   para->setGridX(               StringUtil::toVector<int>(cf.getValue( "GridX" )));                      //GridX = StringUtil::toVector<int>(cf.getValue( "GridX" ));          
-   para->setGridY(               StringUtil::toVector<int>(cf.getValue( "GridY" )));                      //GridY = StringUtil::toVector<int>(cf.getValue( "GridY" ));          
-   para->setGridZ(               StringUtil::toVector<int>(cf.getValue( "GridZ" )));                      //GridZ = StringUtil::toVector<int>(cf.getValue( "GridZ" ));
-   para->setDistX(               StringUtil::toVector<int>(cf.getValue( "DistX" )));                      //DistX = StringUtil::toVector<int>(cf.getValue( "DistX" ));
-   para->setDistY(               StringUtil::toVector<int>(cf.getValue( "DistY" )));                      //DistY = StringUtil::toVector<int>(cf.getValue( "DistY" ));
-   para->setDistZ(               StringUtil::toVector<int>(cf.getValue( "DistZ" )));                      //DistZ = StringUtil::toVector<int>(cf.getValue( "DistZ" )); 
-   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-   para->setNeedInterface(       StringUtil::toVector<bool>(cf.getValue( "NeedInterface" )));
-   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-   Interface *config = new Interface(false);
-   config->setDimensions(para);
-   config->setBoundingBox(para);
-   delete config;
-   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-   para->initParameter();
-   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-   para->setRe(para->getVelocity() * (doubflo)1.0 / para->getViscosity());
-   para->setPhi((doubflo) 0.0);
-   para->setlimitOfNodesForVTK(30000000); //max 30 Million nodes per VTK file
-   if (para->getDoRestart())
-   {
-	   para->setStartTurn(para->getTimeDoRestart());
-   } 
-   else
-   {
-	   para->setStartTurn((unsigned int)0); //100000
-   }
-   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-std::string getGridPath(Parameter* para, std::string Gridpath)
-{
-	if(para->getNumprocs()==1)
-	{
-		return Gridpath + "/";
-	}
-	else
-	{
-		return Gridpath + "/" + StringUtil::toString(para->getMyID()) + "/";
-	}
-
-}
-////////////////////////////////////////////////////////////////////////////////
-
+//#include "Init/SetParameter.h"
+//#include "Interface_OpenFOAM/Interface.h"
+//
+//////////////////////////////////////////////////////////////////////////////////
+//void setParameters(Parameter* para, Communicator* comm, std::string &cstr)
+//{
+//   ConfigFile cf(cstr.c_str());
+//   if ( !cf.read() )
+//   {
+//      std::string exceptionText = "Unable to read configuration file\n";
+//      throw exceptionText;
+//   }
+//   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//   para->setMaxDev(              StringUtil::toInt(cf.getValue( "NumberOfDevices" )));
+//   para->setMyID(                comm->getPID());                                     
+//   para->setNumprocs(            comm->getNummberOfProcess());                        
+//   para->setDevices(             StringUtil::toVector<int>(cf.getValue( "Devices" )));
+//   devCheck(                     comm->mapCudaDevice(para->getMyID(), para->getNumprocs(), para->getDevices(), para->getMaxDev()));
+//   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//   std::string _path = cf.getValue( "Path" );
+//   std::string _prefix = cf.getValue( "Prefix" );
+//   std::string _gridpath = cf.getValue( "GridPath" );
+//   std::string gridPath = getGridPath(para, _gridpath);
+//   para->setOutputPath(          _path);
+//   para->setOutputPrefix(        _prefix);
+//   para->setFName(               _path + "/" + _prefix);
+//   para->setPrintFiles(          false);                                                                  
+//   para->setPrintFiles(          StringUtil::toBool( cf.getValue( "WriteGrid" )));                        
+//   para->setGeometryValues(      StringUtil::toBool( cf.getValue( "GeometryValues" )));                        
+//   para->setCalc2ndOrderMoments( StringUtil::toBool( cf.getValue( "calc2ndOrderMoments" )));                        
+//   para->setCalc3rdOrderMoments( StringUtil::toBool( cf.getValue( "calc3rdOrderMoments" )));                        
+//   para->setCalcHighOrderMoments(StringUtil::toBool( cf.getValue( "calcHigherOrderMoments" )));                        
+//   para->setReadGeo(             StringUtil::toBool( cf.getValue( "ReadGeometry" )));                     
+//   para->setCalcMedian(          StringUtil::toBool( cf.getValue( "calcMedian" )));                       
+//   para->setConcFile(            StringUtil::toBool( cf.getValue( "UseConcFile" )));                       
+//   para->setUseMeasurePoints(    StringUtil::toBool( cf.getValue( "UseMeasurePoints")));
+//   para->setUseWale(             StringUtil::toBool( cf.getValue( "UseWale" )));
+//   para->setSimulatePorousMedia( StringUtil::toBool( cf.getValue( "SimulatePorousMedia" )));
+//   para->setD3Qxx(               StringUtil::toInt(  cf.getValue( "D3Qxx" )));
+//   para->setMaxLevel(            StringUtil::toInt(  cf.getValue( "NOGL" )));                             
+//   para->setTEnd(                StringUtil::toInt(  cf.getValue( "TimeEnd" )));                          
+//   para->setTOut(                StringUtil::toInt(  cf.getValue( "TimeOut" )));                          
+//   para->setTStartOut(			 StringUtil::toInt(  cf.getValue( "TimeStartOut")));
+//   para->setTimeCalcMedStart(    StringUtil::toInt(  cf.getValue( "TimeStartCalcMedian" )));
+//   para->setTimeCalcMedEnd(      StringUtil::toInt(  cf.getValue( "TimeEndCalcMedian" )));                  
+//   para->setPressInID(           StringUtil::toInt(  cf.getValue( "PressInID" )));                          
+//   para->setPressOutID(          StringUtil::toInt(  cf.getValue( "PressOutID" )));                         
+//   para->setPressInZ(            StringUtil::toInt(  cf.getValue( "PressInZ" )));                           
+//   para->setPressOutZ(           StringUtil::toInt(  cf.getValue( "PressOutZ" )));                          
+//   //////////////////////////////////////////////////////////////////////////
+//   para->setDiffOn(              StringUtil::toBool( cf.getValue( "DiffOn" )));                           
+//   para->setDiffMod(             StringUtil::toInt(  cf.getValue( "DiffMod" )));                          
+//   para->setDiffusivity(         StringUtil::toFloat(cf.getValue( "Diffusivity" )));                      
+//   para->setTemperatureInit(     StringUtil::toFloat(cf.getValue( "Temp" )));                             
+//   para->setTemperatureBC(       StringUtil::toFloat(cf.getValue( "TempBC" )));                           
+//   //////////////////////////////////////////////////////////////////////////
+//   para->setViscosity(           StringUtil::toFloat(cf.getValue( "Viscosity_LB" )));                     
+//   para->setVelocity(            StringUtil::toFloat(cf.getValue( "Velocity_LB" )));                      
+//   para->setViscosityRatio(      StringUtil::toFloat(cf.getValue( "Viscosity_Ratio_World_to_LB" )));      
+//   para->setVelocityRatio(       StringUtil::toFloat(cf.getValue( "Velocity_Ratio_World_to_LB" )));       
+//   para->setDensityRatio(        StringUtil::toFloat(cf.getValue( "Density_Ratio_World_to_LB" )));        
+//   para->setPressRatio(          StringUtil::toFloat(cf.getValue( "Delta_Press" )));                      
+//   para->setRealX(               StringUtil::toFloat(cf.getValue( "SliceRealX" )));                       
+//   para->setRealY(               StringUtil::toFloat(cf.getValue( "SliceRealY" )));                       
+//   para->setFactorPressBC(       StringUtil::toFloat(cf.getValue( "dfpbc" )));                      
+//   para->setGeometryFileC(       cf.getValue( "GeometryC" ));                                             
+//   para->setGeometryFileM(       cf.getValue( "GeometryM" ));                                             
+//   para->setGeometryFileF(       cf.getValue( "GeometryF" ));                                             
+//   //////////////////////////////////////////////////////////////////////////
+//   para->setgeoVec(              gridPath + cf.getValue( "geoVec" ));
+//   para->setcoordX(              gridPath + cf.getValue( "coordX" ));
+//   para->setcoordY(              gridPath + cf.getValue( "coordY" ));
+//   para->setcoordZ(              gridPath + cf.getValue( "coordZ" ));
+//   para->setneighborX(           gridPath + cf.getValue( "neighborX" ));
+//   para->setneighborY(           gridPath + cf.getValue( "neighborY" ));
+//   para->setneighborZ(           gridPath + cf.getValue( "neighborZ" ));
+//   para->setscaleCFC(            gridPath + cf.getValue( "scaleCFC" ));
+//   para->setscaleCFF(            gridPath + cf.getValue( "scaleCFF" ));
+//   para->setscaleFCC(            gridPath + cf.getValue( "scaleFCC" ));
+//   para->setscaleFCF(            gridPath + cf.getValue( "scaleFCF" ));
+//   para->setscaleOffsetCF(       gridPath + cf.getValue( "scaleOffsetCF" ));
+//   para->setscaleOffsetFC(       gridPath + cf.getValue( "scaleOffsetFC" ));
+//   para->setgeomBoundaryBcQs(    gridPath + cf.getValue( "geomBoundaryBcQs" ));
+//   para->setgeomBoundaryBcValues(gridPath + cf.getValue( "geomBoundaryBcValues" ));
+//   para->setinletBcQs(           gridPath + cf.getValue( "inletBcQs"        ));
+//   para->setinletBcValues(       gridPath + cf.getValue( "inletBcValues"    ));
+//   para->setoutletBcQs(          gridPath + cf.getValue( "outletBcQs"       ));
+//   para->setoutletBcValues(      gridPath + cf.getValue( "outletBcValues"   ));
+//   para->settopBcQs(             gridPath + cf.getValue( "topBcQs"          ));
+//   para->settopBcValues(         gridPath + cf.getValue( "topBcValues"      ));
+//   para->setbottomBcQs(          gridPath + cf.getValue( "bottomBcQs"       ));
+//   para->setbottomBcValues(      gridPath + cf.getValue( "bottomBcValues"   ));
+//   para->setfrontBcQs(           gridPath + cf.getValue( "frontBcQs"        ));
+//   para->setfrontBcValues(       gridPath + cf.getValue( "frontBcValues"    ));
+//   para->setbackBcQs(            gridPath + cf.getValue( "backBcQs"         ));
+//   para->setbackBcValues(        gridPath + cf.getValue( "backBcValues"     ));
+//   para->setnumberNodes(         gridPath + cf.getValue( "numberNodes"      ));
+//   para->setLBMvsSI(             gridPath + cf.getValue( "LBMvsSI"          ));
+//   //////////////////////////////gridPath + ////////////////////////////////////////////
+//   para->setmeasurePoints(       gridPath + cf.getValue( "measurePoints" ));
+//   para->setpropellerValues(	 gridPath + cf.getValue( "propellerValues"  ));
+//   para->setclockCycleForMP(     StringUtil::toFloat(cf.getValue( "measureClockCycle" )));
+//   para->settimestepForMP(       StringUtil::toInt(cf.getValue( "measureTimestep" )));
+//   para->setcpTop(               gridPath + cf.getValue( "cpTop"            ));
+//   para->setcpBottom(            gridPath + cf.getValue( "cpBottom"         ));
+//   para->setcpBottom2(           gridPath + cf.getValue( "cpBottom2"        ));
+//   para->setConcentration(       gridPath + cf.getValue( "Concentration"    ));
+//   //////////////////////////////////////////////////////////////////////////
+//   //Normals - Geometry
+//   para->setgeomBoundaryNormalX(    gridPath + cf.getValue( "geomBoundaryNormalX" ));
+//   para->setgeomBoundaryNormalY(    gridPath + cf.getValue( "geomBoundaryNormalY" ));
+//   para->setgeomBoundaryNormalZ(    gridPath + cf.getValue( "geomBoundaryNormalZ" ));
+//   //Normals - Inlet
+//   para->setInflowBoundaryNormalX(    gridPath + cf.getValue( "inletBoundaryNormalX" ));
+//   para->setInflowBoundaryNormalY(    gridPath + cf.getValue( "inletBoundaryNormalY" ));
+//   para->setInflowBoundaryNormalZ(    gridPath + cf.getValue( "inletBoundaryNormalZ" ));
+//   //Normals - Outlet
+//   para->setOutflowBoundaryNormalX(    gridPath + cf.getValue( "outletBoundaryNormalX" ));
+//   para->setOutflowBoundaryNormalY(    gridPath + cf.getValue( "outletBoundaryNormalY" ));
+//   para->setOutflowBoundaryNormalZ(    gridPath + cf.getValue( "outletBoundaryNormalZ" ));
+//   //////////////////////////////////////////////////////////////////////////
+//   //Forcing
+//   para->setForcing(StringUtil::toFloat(cf.getValue( "ForcingX")), StringUtil::toFloat(cf.getValue( "ForcingY")), StringUtil::toFloat(cf.getValue( "ForcingZ")));
+//   //////////////////////////////////////////////////////////////////////////
+//   //Particles
+//   para->setCalcParticles(     StringUtil::toBool( cf.getValue( "calcParticles"     )));                             
+//   para->setParticleBasicLevel(StringUtil::toInt(  cf.getValue( "baseLevel"         )));                             
+//   para->setParticleInitLevel( StringUtil::toInt(  cf.getValue( "initLevel"         )));                             
+//   para->setNumberOfParticles( StringUtil::toInt(  cf.getValue( "numberOfParticles" )));                             
+//   para->setneighborWSB(                gridPath + cf.getValue( "neighborWSB"       ));
+//   para->setStartXHotWall(     StringUtil::toDouble(cf.getValue("startXHotWall"     )));
+//   para->setEndXHotWall(       StringUtil::toDouble(cf.getValue("endXHotWall"       )));
+//   //////////////////////////////////////////////////////////////////////////
+//   //for Multi GPU
+//   if (para->getNumprocs()>1)
+//   {
+//	   ////////////////////////////////////////////////////////////////////////////
+//	   ////1D domain decomposition
+//	   //std::vector<std::string> sendProcNeighbors;
+//	   //std::vector<std::string> recvProcNeighbors;
+//	   //for (int i = 0; i<para->getNumprocs();i++)
+//	   //{
+//		  // sendProcNeighbors.push_back(gridPath + StringUtil::toString(i) + "s.dat");
+//		  // recvProcNeighbors.push_back(gridPath + StringUtil::toString(i) + "r.dat");
+//	   //}
+//	   //para->setPossNeighborFiles(sendProcNeighbors, "send");
+//	   //para->setPossNeighborFiles(recvProcNeighbors, "recv");
+//	   //////////////////////////////////////////////////////////////////////////
+//	   //3D domain decomposition
+//	   std::vector<std::string> sendProcNeighborsX, sendProcNeighborsY, sendProcNeighborsZ;
+//	   std::vector<std::string> recvProcNeighborsX, recvProcNeighborsY, recvProcNeighborsZ;
+//	   for (int i = 0; i<para->getNumprocs();i++)
+//	   {
+//		   sendProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xs.dat");
+//		   sendProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Ys.dat");
+//		   sendProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zs.dat");
+//		   recvProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xr.dat");
+//		   recvProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Yr.dat");
+//		   recvProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zr.dat");
+//	   }
+//	   para->setPossNeighborFilesX(sendProcNeighborsX, "send");
+//	   para->setPossNeighborFilesY(sendProcNeighborsY, "send");
+//	   para->setPossNeighborFilesZ(sendProcNeighborsZ, "send");
+//	   para->setPossNeighborFilesX(recvProcNeighborsX, "recv");
+//	   para->setPossNeighborFilesY(recvProcNeighborsY, "recv");
+//	   para->setPossNeighborFilesZ(recvProcNeighborsZ, "recv");
+//   }
+//   //////////////////////////////////////////////////////////////////////////
+//   //para->setkFull(             cf.getValue( "kFull" ));
+//   //para->setgeoFull(           cf.getValue( "geoFull" ));
+//   //para->setnoSlipBcPos(       cf.getValue( "noSlipBcPos" ));
+//   //para->setnoSlipBcQs(          cf.getValue( "noSlipBcQs" ));
+//   //para->setnoSlipBcValues(      cf.getValue( "noSlipBcValues" ));
+//   //para->setnoSlipBcValue(     cf.getValue( "noSlipBcValue" ));
+//   //para->setslipBcPos(         cf.getValue( "slipBcPos" ));
+//   //para->setslipBcQs(          cf.getValue( "slipBcQs" ));
+//   //para->setslipBcValue(       cf.getValue( "slipBcValue" ));
+//   //para->setpressBcPos(        cf.getValue( "pressBcPos" ));
+//   //para->setpressBcQs(           cf.getValue( "pressBcQs" ));
+//   //para->setpressBcValues(       cf.getValue( "pressBcValues" ));
+//   //para->setpressBcValue(      cf.getValue( "pressBcValue" ));
+//   //para->setvelBcQs(             cf.getValue( "velBcQs" ));
+//   //para->setvelBcValues(         cf.getValue( "velBcValues" ));
+//   //para->setpropellerCylinder( cf.getValue( "propellerCylinder" ));
+//   //para->setpropellerQs(		 cf.getValue( "propellerQs"      ));
+//   //para->setwallBcQs(            cf.getValue( "wallBcQs"         ));
+//   //para->setwallBcValues(        cf.getValue( "wallBcValues"     ));
+//   //para->setperiodicBcQs(        cf.getValue( "periodicBcQs"     ));
+//   //para->setperiodicBcValues(    cf.getValue( "periodicBcValues" ));
+//   //cout << "Try this: " << para->getgeomBoundaryBcValues() << endl;
+//
+//   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//   //Restart
+//   para->setTimeDoCheckPoint(    StringUtil::toInt(  cf.getValue( "TimeDoCheckPoint" )));
+//   para->setTimeDoRestart(       StringUtil::toInt(  cf.getValue( "TimeDoRestart" )));
+//   para->setDoCheckPoint(        StringUtil::toBool( cf.getValue( "DoCheckPoint" )));
+//   para->setDoRestart(           StringUtil::toBool( cf.getValue( "DoRestart" )));
+//   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//   para->setGridX(               StringUtil::toVector<int>(cf.getValue( "GridX" )));                      //GridX = StringUtil::toVector<int>(cf.getValue( "GridX" ));          
+//   para->setGridY(               StringUtil::toVector<int>(cf.getValue( "GridY" )));                      //GridY = StringUtil::toVector<int>(cf.getValue( "GridY" ));          
+//   para->setGridZ(               StringUtil::toVector<int>(cf.getValue( "GridZ" )));                      //GridZ = StringUtil::toVector<int>(cf.getValue( "GridZ" ));
+//   para->setDistX(               StringUtil::toVector<int>(cf.getValue( "DistX" )));                      //DistX = StringUtil::toVector<int>(cf.getValue( "DistX" ));
+//   para->setDistY(               StringUtil::toVector<int>(cf.getValue( "DistY" )));                      //DistY = StringUtil::toVector<int>(cf.getValue( "DistY" ));
+//   para->setDistZ(               StringUtil::toVector<int>(cf.getValue( "DistZ" )));                      //DistZ = StringUtil::toVector<int>(cf.getValue( "DistZ" )); 
+//   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//   para->setNeedInterface(       StringUtil::toVector<bool>(cf.getValue( "NeedInterface" )));
+//   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//   Interface *config = new Interface(false);
+//   config->setDimensions(para);
+//   config->setBoundingBox(para);
+//   delete config;
+//   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//   para->initParameter();
+//   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//   para->setRe(para->getVelocity() * (real)1.0 / para->getViscosity());
+//   para->setPhi((real) 0.0);
+//   para->setlimitOfNodesForVTK(30000000); //max 30 Million nodes per VTK file
+//   if (para->getDoRestart())
+//   {
+//	   para->setStartTurn(para->getTimeDoRestart());
+//   } 
+//   else
+//   {
+//	   para->setStartTurn((unsigned int)0); //100000
+//   }
+//   //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//}
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//////////////////////////////////////////////////////////////////////////////////
+//std::string getGridPath(Parameter* para, std::string Gridpath)
+//{
+//	if(para->getNumprocs()==1)
+//	{
+//		return Gridpath + "/";
+//	}
+//	else
+//	{
+//		return Gridpath + "/" + StringUtil::toString(para->getMyID()) + "/";
+//	}
+//
+//}
+//////////////////////////////////////////////////////////////////////////////////
+//
diff --git a/src/VirtualFluids_GPU/Init/SetParameter.h b/src/VirtualFluids_GPU/Init/SetParameter.h
index c02cb01d6..9fad54f04 100644
--- a/src/VirtualFluids_GPU/Init/SetParameter.h
+++ b/src/VirtualFluids_GPU/Init/SetParameter.h
@@ -1,15 +1,15 @@
-#ifndef SET_PARAMETER_H
-#define SET_PARAMETER_H
-
-#include "Parameter/Parameter.h"
-#include "Input/ConfigFile.h"
-#include "Utilities/StringUtil.hpp"
-#include "GPU/devCheck.h"
-#include "Communication/Communicator.h"
-
-#include <iostream>
-
-void setParameters(Parameter* para, Communicator* comm, std::string &cstr);
-std::string getGridPath(Parameter* para, std::string Gridpath);
-
-#endif
+//#ifndef SET_PARAMETER_H
+//#define SET_PARAMETER_H
+//
+//#include "Parameter/Parameter.h"
+//#include "Input/ConfigFile.h"
+//#include "Utilities/StringUtil.hpp"
+//#include "GPU/devCheck.h"
+//#include "Communication/Communicator.h"
+//
+//#include <iostream>
+//
+//void setParameters(Parameter* para, Communicator* comm, std::string &cstr);
+//std::string getGridPath(Parameter* para, std::string Gridpath);
+//
+//#endif
diff --git a/src/VirtualFluids_GPU/Init/VfReader.cpp b/src/VirtualFluids_GPU/Init/VfReader.cpp
index d6130cc30..189ae2c1b 100644
--- a/src/VirtualFluids_GPU/Init/VfReader.cpp
+++ b/src/VirtualFluids_GPU/Init/VfReader.cpp
@@ -312,10 +312,10 @@ void readMeasurePoints(Parameter* para)
 		para->getParH(lev)->memSizeIntkMP = sizeof(unsigned int)*(int)para->getParH(lev)->MP.size();
 		para->getParD(lev)->memSizeIntkMP = para->getParH(lev)->memSizeIntkMP;
 
-		para->getParH(lev)->memSizeDoubflokMP = sizeof(doubflo)*para->getParH(lev)->numberOfValuesMP;
-		para->getParD(lev)->memSizeDoubflokMP = para->getParH(lev)->memSizeDoubflokMP;		
+		para->getParH(lev)->memSizerealkMP = sizeof(real)*para->getParH(lev)->numberOfValuesMP;
+		para->getParD(lev)->memSizerealkMP = para->getParH(lev)->memSizerealkMP;		
 		
-		printf("Level: %d, numberOfValuesMP: %d, memSizeIntkMP: %d, memSizeDoubflokMP: %d\n",lev,para->getParH(lev)->numberOfValuesMP,para->getParH(lev)->memSizeIntkMP, para->getParD(lev)->memSizeDoubflokMP);
+		printf("Level: %d, numberOfValuesMP: %d, memSizeIntkMP: %d, memSizerealkMP: %d\n",lev,para->getParH(lev)->numberOfValuesMP,para->getParH(lev)->memSizeIntkMP, para->getParD(lev)->memSizerealkMP);
 
 		para->cudaAllocMeasurePointsIndex(lev);
 
@@ -329,10 +329,10 @@ void readMeasurePoints(Parameter* para)
 		for(int index = 0; index < (int)para->getParH(lev)->numberOfValuesMP; index++)
 		{
 			//init values
-			para->getParH(lev)->VxMP[index]  = (doubflo)0.0;
-			para->getParH(lev)->VyMP[index]  = (doubflo)0.0;
-			para->getParH(lev)->VzMP[index]  = (doubflo)0.0;
-			para->getParH(lev)->RhoMP[index] = (doubflo)0.0;
+			para->getParH(lev)->VxMP[index]  = (real)0.0;
+			para->getParH(lev)->VyMP[index]  = (real)0.0;
+			para->getParH(lev)->VzMP[index]  = (real)0.0;
+			para->getParH(lev)->RhoMP[index] = (real)0.0;
 		}
 
 		//copy indices-arrays
diff --git a/src/VirtualFluids_GPU/Input/PositionReader.cpp b/src/VirtualFluids_GPU/Input/PositionReader.cpp
index 8bde6a75f..d0df59759 100644
--- a/src/VirtualFluids_GPU/Input/PositionReader.cpp
+++ b/src/VirtualFluids_GPU/Input/PositionReader.cpp
@@ -106,12 +106,12 @@ void PositionReader::readFileForAlloc(const std::string fileName, Parameter* par
    {
 	   //Host
 	   para->getParH(level)->size_Mat_SP = in.readInteger();
-	   para->getParH(level)->mem_size_doubflo_SP    = sizeof(doubflo     ) * para->getParH(level)->size_Mat_SP;
+	   para->getParH(level)->mem_size_real_SP    = sizeof(real     ) * para->getParH(level)->size_Mat_SP;
 	   para->getParH(level)->mem_size_int_SP        = sizeof(unsigned int) * para->getParH(level)->size_Mat_SP;
 	   //Device
 	   para->getParD(level)->size_Mat_SP            = para->getParH(level)->size_Mat_SP;
 	   para->getParD(level)->mem_size_int_SP        = sizeof(unsigned int) * para->getParD(level)->size_Mat_SP;
-	   para->getParD(level)->mem_size_doubflo_SP    = sizeof(doubflo     ) * para->getParD(level)->size_Mat_SP;
+	   para->getParD(level)->mem_size_real_SP    = sizeof(real     ) * para->getParD(level)->size_Mat_SP;
 
 	   in.readLine();
 	   for(unsigned int u = /*1*/0; u<para->getParH(level)->size_Mat_SP; u++)
@@ -320,8 +320,8 @@ void PositionReader::readFileInterfaceOffsetForAlloc(const std::string fileName,
 			para->getParD(level)->K_CF                = para->getParH(level)->K_CF;
 			para->getParH(level)->intCF.kCF           = para->getParH(level)->K_CF;
 			para->getParD(level)->intCF.kCF           = para->getParH(level)->K_CF;
-			para->getParH(level)->mem_size_kCF_off    = sizeof(doubflo) * para->getParH(level)->K_CF;
-			para->getParD(level)->mem_size_kCF_off    = sizeof(doubflo) * para->getParD(level)->K_CF;
+			para->getParH(level)->mem_size_kCF_off    = sizeof(real) * para->getParH(level)->K_CF;
+			para->getParD(level)->mem_size_kCF_off    = sizeof(real) * para->getParD(level)->K_CF;
 			in.readLine();
 			for(unsigned int u=0; u<para->getParH(level)->K_CF; u++)
 			{
@@ -336,8 +336,8 @@ void PositionReader::readFileInterfaceOffsetForAlloc(const std::string fileName,
 			para->getParD(level)->K_FC                = para->getParH(level)->K_FC;
 			para->getParH(level)->intFC.kFC           = para->getParH(level)->K_FC;
 			para->getParD(level)->intFC.kFC           = para->getParH(level)->K_FC;
-			para->getParH(level)->mem_size_kFC_off    = sizeof(doubflo) * para->getParH(level)->K_FC;
-			para->getParD(level)->mem_size_kFC_off    = sizeof(doubflo) * para->getParD(level)->K_FC;
+			para->getParH(level)->mem_size_kFC_off    = sizeof(real) * para->getParH(level)->K_FC;
+			para->getParD(level)->mem_size_kFC_off    = sizeof(real) * para->getParD(level)->K_FC;
 			in.readLine();
 			for(unsigned int u=0; u<para->getParH(level)->K_FC; u++)
 			{
@@ -369,9 +369,9 @@ void PositionReader::readFileInterfaceOffset(const std::string fileName, std::st
 			in.readLine();
 			for(unsigned int u=0; u<para->getParH(level)->K_CF; u++)
 			{
-				para->getParH(level)->offCF.xOffCF[u] = (doubflo)in.readDouble();       
-				para->getParH(level)->offCF.yOffCF[u] = (doubflo)in.readDouble();       
-				para->getParH(level)->offCF.zOffCF[u] = (doubflo)in.readDouble();       
+				para->getParH(level)->offCF.xOffCF[u] = (real)in.readDouble();       
+				para->getParH(level)->offCF.yOffCF[u] = (real)in.readDouble();       
+				para->getParH(level)->offCF.zOffCF[u] = (real)in.readDouble();       
 			}
 			in.readLine();
 		}
@@ -388,9 +388,9 @@ void PositionReader::readFileInterfaceOffset(const std::string fileName, std::st
 				//para->getParH(level)->offFC.yOffFC[u] = 0.0;       
 				//para->getParH(level)->offFC.zOffFC[u] = 0.0;  
 				//in.readInteger();
-				para->getParH(level)->offFC.xOffFC[u] = (doubflo)in.readDouble();       
-				para->getParH(level)->offFC.yOffFC[u] = (doubflo)in.readDouble();       
-				para->getParH(level)->offFC.zOffFC[u] = (doubflo)in.readDouble();       
+				para->getParH(level)->offFC.xOffFC[u] = (real)in.readDouble();       
+				para->getParH(level)->offFC.yOffFC[u] = (real)in.readDouble();       
+				para->getParH(level)->offFC.zOffFC[u] = (real)in.readDouble();       
 			}
 			in.readLine();
 		}
@@ -470,7 +470,7 @@ void PositionReader::readFileNoSlipBcPos(const std::string fileName, Parameter*
 void PositionReader::readFileNoSlipBcQs(const std::string fileName, Parameter* para)
 {
 	UbFileInputASCII in(fileName);
-	doubflo test;
+	real test;
 	int maxlevel = in.readInteger();
 	in.readLine();
 
@@ -480,7 +480,7 @@ void PositionReader::readFileNoSlipBcQs(const std::string fileName, Parameter* p
 		in.readLine();
 		for(unsigned int u=0; u<para->getParH(level)->kQread; u++)
 		{
-			test = (doubflo)in.readFloat();
+			test = (real)in.readFloat();
 			//if (test <= 0. && test >= -1.)
 			//{
 			//	test = -0.5;
@@ -498,7 +498,7 @@ void PositionReader::readFileNoSlipBcQs(const std::string fileName, Parameter* p
 			//para->getParH(level)->QWall.qread[u] = 0.5f;
 			//orig
 			para->getParH(level)->QWall.qread[u] = test;
-			//para->getParH(level)->QWall.qread[u] = (doubflo)in.readFloat();
+			//para->getParH(level)->QWall.qread[u] = (real)in.readFloat();
 		}
 		in.readLine();
 	}
@@ -534,7 +534,7 @@ void PositionReader::findQs(Parameter* para)
 	{
 		//////////////////////////////////////////////////////////////////
 		//preprocessing
-		doubflo* QQ                  = para->getParH(lev)->QWall.q27[0]; 
+		real* QQ                  = para->getParH(lev)->QWall.q27[0]; 
 		unsigned int sizeQ           = para->getParH(lev)->kQ; 
 		QforBoundaryConditions Q;
 		Q.q27[dirE   ] = &QQ[dirE   *sizeQ];
@@ -675,7 +675,7 @@ void PositionReader::readFileSlipBcQs(const std::string fileName, Parameter* par
 		in.readLine();
 		for(unsigned int u=0; u<para->getParH(level)->kSlipQread; u++)
 		{
-			para->getParH(level)->QSlip.qread[u] = (doubflo)in.readFloat();
+			para->getParH(level)->QSlip.qread[u] = (real)in.readFloat();
 		}
 		in.readLine();
 	}
@@ -711,7 +711,7 @@ void PositionReader::findSlipQs(Parameter* para)
 	{
 		//////////////////////////////////////////////////////////////////
 		//preprocessing
-		doubflo* QQ                  = para->getParH(lev)->QSlip.q27[0]; 
+		real* QQ                  = para->getParH(lev)->QSlip.q27[0]; 
 		unsigned int sizeQ           = para->getParH(lev)->kSlipQ; 
 		QforBoundaryConditions Q;
 		Q.q27[dirE   ] = &QQ[dirE   *sizeQ];
@@ -853,7 +853,7 @@ void PositionReader::readFilePressBcPos(const std::string fileName, Parameter* p
 				para->getParH(level)->QPress.k[u] = in.readInteger();
 			}
 			//setRhoBC
-			para->getParH(level)->QPress.RhoBC[u] = (doubflo)0.f;
+			para->getParH(level)->QPress.RhoBC[u] = (real)0.f;
 		}
 		in.readLine();
 	}
@@ -874,7 +874,7 @@ void PositionReader::readFilePressBcQs(const std::string fileName, Parameter* pa
 		in.readLine();
 		for(unsigned int u=0; u<para->getParH(level)->kPressQread; u++)
 		{
-			para->getParH(level)->QPress.qread[u] = (doubflo)in.readFloat();
+			para->getParH(level)->QPress.qread[u] = (real)in.readFloat();
 		}
 		in.readLine();
 	}
@@ -910,7 +910,7 @@ void PositionReader::findPressQs(Parameter* para)
 	{
 		//////////////////////////////////////////////////////////////////
 		//preprocessing
-		doubflo* QQ                  = para->getParH(lev)->QPress.q27[0]; 
+		real* QQ                  = para->getParH(lev)->QPress.q27[0]; 
 		unsigned int sizeQ           = para->getParH(lev)->kPressQ; 
 		QforBoundaryConditions Q;
 		Q.q27[dirE   ] = &QQ[dirE   *sizeQ];
@@ -1056,9 +1056,9 @@ void PositionReader::readFilePropellerCylinder(Parameter* para)
 				if (para->getParH(level)->geoSP[test] == GEO_FLUID)
 				{
 					para->getParH(level)->QPropeller.k[count] = test; 
-					para->getParH(level)->QPropeller.Vx[count] = (doubflo)in.readDouble();
-					para->getParH(level)->QPropeller.Vy[count] = (doubflo)in.readDouble();
-					para->getParH(level)->QPropeller.Vz[count] = (doubflo)in.readDouble();
+					para->getParH(level)->QPropeller.Vx[count] = (real)in.readDouble();
+					para->getParH(level)->QPropeller.Vy[count] = (real)in.readDouble();
+					para->getParH(level)->QPropeller.Vz[count] = (real)in.readDouble();
 					para->getParH(level)->QPropeller.RhoBC[count] = 0.0f;									
 					count++;
 				}
@@ -1069,9 +1069,9 @@ void PositionReader::readFilePropellerCylinder(Parameter* para)
 					in.readDouble();
 				}
 				//para->getParH(level)->QPropeller.k[count] = test; 
-				//para->getParH(level)->QPropeller.Vx[count] = (doubflo)in.readDouble();
-				//para->getParH(level)->QPropeller.Vy[count] = (doubflo)in.readDouble();
-				//para->getParH(level)->QPropeller.Vz[count] = (doubflo)in.readDouble();
+				//para->getParH(level)->QPropeller.Vx[count] = (real)in.readDouble();
+				//para->getParH(level)->QPropeller.Vy[count] = (real)in.readDouble();
+				//para->getParH(level)->QPropeller.Vz[count] = (real)in.readDouble();
 				//para->getParH(level)->QPropeller.Vx[count]	  = 0.07f;
 				//para->getParH(level)->QPropeller.Vy[count]	  = 0.0f;
 				//para->getParH(level)->QPropeller.Vz[count]	  = 0.0f;
@@ -1100,7 +1100,7 @@ void PositionReader::definePropellerQs(Parameter* para)
 {
 	//////////////////////////////////////////////////////////////////
 	//preprocessing
-	doubflo* QQ                  = para->getParH(para->getFine())->QPropeller.q27[0]; 
+	real* QQ                  = para->getParH(para->getFine())->QPropeller.q27[0]; 
 	unsigned int sizeQ           = para->getParH(para->getFine())->QPropeller.kQ; 
 	QforBoundaryConditions Q;
 	Q.q27[dirE   ] = &QQ[dirE   *sizeQ];
diff --git a/src/VirtualFluids_GPU/Interface_OpenFOAM/CoordNeighborGeoV.h b/src/VirtualFluids_GPU/Interface_OpenFOAM/CoordNeighborGeoV.h
index bf193f904..b1e3a16a7 100644
--- a/src/VirtualFluids_GPU/Interface_OpenFOAM/CoordNeighborGeoV.h
+++ b/src/VirtualFluids_GPU/Interface_OpenFOAM/CoordNeighborGeoV.h
@@ -1,7 +1,7 @@
 #pragma once
-#include "Standard.h"
-
 
+#include <vector>
+#include <fstream>
 
 using namespace std;
 
diff --git a/src/VirtualFluids_GPU/Interface_OpenFOAM/package.include b/src/VirtualFluids_GPU/Interface_OpenFOAM/package.include
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/VirtualFluids_GPU/LBM/LB.h b/src/VirtualFluids_GPU/LBM/LB.h
index 2e01d16c4..5d71ca926 100644
--- a/src/VirtualFluids_GPU/LBM/LB.h
+++ b/src/VirtualFluids_GPU/LBM/LB.h
@@ -40,18 +40,7 @@
 //////////////////////////////////////////////////////////////////////////
 // precision                             (change between double and float)
 //
-//#define ISFLOAT
-#define ISDOUBLE
-///////////////////////////
-#ifdef ISDOUBLE
-typedef double doubflo;
-#define DOUBFLO double
-#endif
-///////////////////////////
-#ifdef ISFLOAT
-typedef float doubflo;
-#define DOUBFLO float
-#endif
+#include <core/DataTypes.h>
 //////////////////////////////////////////////////////////////////////////
 
 #include <string>
@@ -61,18 +50,18 @@ typedef float doubflo;
 
 // Initial condition
 typedef struct InitCond{
-   doubflo Re;
-   doubflo factorPressBC;
-   doubflo Diffusivity, Temp, TempBC;
-   doubflo RealX, RealY;
+   real Re;
+   real factorPressBC;
+   real Diffusivity, Temp, TempBC;
+   real RealX, RealY;
    int numprocs, myid, maxdev;
    unsigned int tend, tout, tStartOut, tCalcMedStart, tCalcMedEnd, tDoCheckPoint, tDoRestart;
    unsigned int PressInID, PressOutID;
    unsigned int PressInZ, PressOutZ;
    std::vector<int> devices;
    std::vector<int> GridX, GridY, GridZ, DistX, DistY, DistZ;
-   std::vector<doubflo> scaleLBMtoSI, translateLBMtoSI;
-   std::vector<doubflo> minCoordX, minCoordY, minCoordZ, maxCoordX, maxCoordY, maxCoordZ;
+   std::vector<real> scaleLBMtoSI, translateLBMtoSI;
+   std::vector<real> minCoordX, minCoordY, minCoordZ, maxCoordX, maxCoordY, maxCoordZ;
    std::vector<bool> NeedInterface;
    std::string fname, oPath, oPrefix;
    std::string geometryFileC, geometryFileM, geometryFileF;
@@ -96,10 +85,10 @@ typedef struct InitCond{
    std::string concentration;
    std::string geomNormalX, geomNormalY, geomNormalZ, inflowNormalX, inflowNormalY, inflowNormalZ, outflowNormalX, outflowNormalY, outflowNormalZ;
    unsigned int timeStepForMP;
-   doubflo clockCycleForMP;
-   doubflo vis, vis_ratio;
-   doubflo u0, u0_ratio;
-   doubflo delta_rho, delta_press;
+   real clockCycleForMP;
+   real vis, vis_ratio;
+   real u0, u0_ratio;
+   real delta_rho, delta_press;
    bool  printFiles, readGeo, doRestart, doCheckPoint, isGeo, isProp, isCp, calcMedian, GeometryValues, isConc, is2ndOrderMoments, is3rdOrderMoments, isHighOrderMoments, isWale, isMeasurePoints;
    bool isGeoNormal, isInflowNormal, isOutflowNormal;
    bool simulatePorousMedia;
@@ -120,35 +109,35 @@ typedef struct ICellFC{
 
 //Offset of the interface cells at the wall
 typedef struct OffCF{
-   doubflo* xOffCF;
-   doubflo* yOffCF;
-   doubflo* zOffCF;
+   real* xOffCF;
+   real* yOffCF;
+   real* zOffCF;
 } OffsetCF;
 
 typedef struct OffFC{
-   doubflo* xOffFC;
-   doubflo* yOffFC;
-   doubflo* zOffFC;
+   real* xOffFC;
+   real* yOffFC;
+   real* zOffFC;
 } OffsetFC;
 
 // Distribution functions g 6
 typedef struct  Distri6 {
-	doubflo* g[6];
+	real* g[6];
 } Distributions6;
 
 // Distribution functions f 7
 typedef struct  Distri7{
-   doubflo* f[7];
+   real* f[7];
 } Distributions7;
 
 // Distribution functions f 19
 typedef struct  Distri19{
-   doubflo* f[19];
+   real* f[19];
 } Distributions19;
 
 // Distribution functions f 27
 typedef struct  Distri27{
-   doubflo* f[27];
+   real* f[27];
    ////////////////////////////////////////////////////////////////////////////
    ////Restart
    //friend class boost::serialization::access;
@@ -166,35 +155,35 @@ typedef struct QforBC{
    int* k;
    int* kN;
    long long* valueQ;
-   doubflo* qread;
-   doubflo* q27[27];
-   doubflo* q19[19];
+   real* qread;
+   real* q27[27];
+   real* q19[19];
    int kQ;
    int kArray;
-   doubflo *Vx, *Vy, *Vz, *deltaVz, *RhoBC;
+   real *Vx, *Vy, *Vz, *deltaVz, *RhoBC;
 }QforBoundaryConditions;
 
 //BCTemp
 typedef struct TempforBC{
    int* k;
-   doubflo* temp;
+   real* temp;
    int kTemp;
 }TempforBoundaryConditions;
 
 //BCTempVel
 typedef struct TempVelforBC{
    int* k;
-   doubflo* temp;
-   doubflo* tempPulse;
-   doubflo* velo;
+   real* temp;
+   real* tempPulse;
+   real* velo;
    int kTemp;
 }TempVelforBoundaryConditions;
 
 //BCTempPress
 typedef struct TempPressforBC{
    int* k;
-   doubflo* temp;
-   doubflo* velo;
+   real* temp;
+   real* velo;
    int kTemp;
 }TempPressforBoundaryConditions;
 
@@ -202,19 +191,19 @@ typedef struct TempPressforBC{
 typedef struct MeasP{
 	std::string name;
 	unsigned int k;
-	std::vector<doubflo> Vx;
-	std::vector<doubflo> Vy;
-	std::vector<doubflo> Vz;
-	std::vector<doubflo> Rho;
-	//doubflo* Vx;
-	//doubflo* Vy;
-	//doubflo* Vz;
-	//doubflo* Rho;
+	std::vector<real> Vx;
+	std::vector<real> Vy;
+	std::vector<real> Vz;
+	std::vector<real> Rho;
+	//real* Vx;
+	//real* Vy;
+	//real* Vz;
+	//real* Rho;
 }MeasurePoints;
 
 //Process Neighbors
 typedef struct PN27{
-	doubflo* f[27];
+	real* f[27];
 	unsigned int memsizeFs;
 	int* index;
 	unsigned int memsizeIndex;
@@ -226,15 +215,15 @@ typedef struct PN27{
 //path line particles
 typedef struct PLP{
 	bool    *stuck, *hot;
-	doubflo *coordXabsolut, *coordYabsolut, *coordZabsolut;
-	doubflo *coordXlocal,   *coordYlocal,   *coordZlocal;
-	doubflo *veloX,         *veloY,         *veloZ;
-	doubflo *randomLocationInit;
+	real *coordXabsolut, *coordYabsolut, *coordZabsolut;
+	real *coordXlocal,   *coordYlocal,   *coordZlocal;
+	real *veloX,         *veloY,         *veloZ;
+	real *randomLocationInit;
 	unsigned int *timestep;
 	unsigned int *ID;
 	unsigned int *cellBaseID;
 	unsigned int numberOfParticles, numberOfTimestepsParticles;
-	unsigned int memSizeID, memSizeTimestep, memSizeDoubfloAll, memSizeDoubflo, memSizeBool, memSizeBoolBC;
+	unsigned int memSizeID, memSizeTimestep, memSizerealAll, memSizereal, memSizeBool, memSizeBoolBC;
 }PathLineParticles;
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/VirtualFluids_GPU/LBM/Simulation.cpp b/src/VirtualFluids_GPU/LBM/Simulation.cpp
index f3cebe10a..4cbd57222 100644
--- a/src/VirtualFluids_GPU/LBM/Simulation.cpp
+++ b/src/VirtualFluids_GPU/LBM/Simulation.cpp
@@ -4,7 +4,7 @@
 #include "Communication/ExchangeData27.h"
 #include "Parameter/Parameter.h"
 #include "GPU/GPU_Interface.h"
-#include "Interface_OpenFOAM/Interface.h"
+#include "GPU/devCheck.h"
 #include "basics/utilities/UbFileOutputASCII.h"
 //////////////////////////////////////////////////////////////////////////
 #include "Input/ConfigFile.h"
@@ -50,27 +50,43 @@
 #include <boost/foreach.hpp>
 #include <stdio.h>
 #include <vector>
+#include "Restart/RestartPostprocessor.h"
 //////////////////////////////////////////////////////////////////////////
+#include "DataStructureInitializer/GridProvider.h"
 
-Simulation::Simulation(void)
+Simulation::Simulation()
 {
 
 }
 
-Simulation::~Simulation(void)
+Simulation::~Simulation()
 {
 
 }
 
-void Simulation::init(std::string &cstr)
+void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider)
 {
-   comm = Communicator::getInstanz();
-   //myid = comm->getPID();
-   //numprocs = comm->getNummberOfProcess();
-   para = Parameter::getInstanz();
+   this->gridProvider = gridProvider;
+   comm = SPtr<Communicator>(Communicator::getInstanz());
+   this->para = para;
+
+   para->setMyID(comm->getPID());
+   para->setNumprocs(comm->getNummberOfProcess());
+   devCheck(comm->mapCudaDevice(para->getMyID(), para->getNumprocs(), para->getDevices(), para->getMaxDev()));
+
+   gridProvider->allocAndCopyForcing();
+   gridProvider->setDimensions();
+   gridProvider->setBoundingBox();
+
+   para->initParameter();
+   para->setRe(para->getVelocity() * (real)1.0 / para->getViscosity());
+   para->setPhi((real) 0.0);
+   para->setlimitOfNodesForVTK(30000000); //max 30 Million nodes per VTK file
+   if (para->getDoRestart())
+       para->setStartTurn(para->getTimeDoRestart());
+   else
+       para->setStartTurn((unsigned int)0); //100000
 
-   //read from config file and set the parameters
-   setParameters(para, comm, cstr);
    //Restart object
    restObj = new RestartObject();
    rest = new RestartPostprocessor(restObj, RestartPostprocessor::TXT);
@@ -99,23 +115,13 @@ void Simulation::init(std::string &cstr)
    output << "delta_rho:  "   << para->getDensityRatio()   << "\n";
    //////////////////////////////////////////////////////////////////////////
 
-
-
-   //////////////////////////////////////////////////////////////////////////
+   /////////////////////////////////////////////////////////////////////////
    para->setMemsizeGPU(0, true);
    //////////////////////////////////////////////////////////////////////////
-
-
-
-   //////////////////////////////////////////////////////////////////////////
-   //read AS
-   //////////////////////////////////////////////////////////////////////////
-   Interface *config = new Interface(true); //binaer == true, ascii== false
-   config->allocArrays_CoordNeighborGeo(para);
-   config->allocArrays_OffsetScale(para);
-   config->allocArrays_BoundaryValues(para);
-   config->allocArrays_BoundaryQs(para);
-   delete config;
+   gridProvider->allocArrays_CoordNeighborGeo();
+   gridProvider->allocArrays_BoundaryValues();
+   gridProvider->allocArrays_BoundaryQs();
+   gridProvider->allocArrays_OffsetScale();
 
 
    //////////////////////////////////////////////////////////////////////////
@@ -123,9 +129,9 @@ void Simulation::init(std::string &cstr)
    //////////////////////////////////////////////////////////////////////////
    if (para->getCalcParticle())
    {
-	   rearrangeGeometry(para);
+	   rearrangeGeometry(para.get());
 	   //////////////////////////////////////////////////////////////////////////
-	   allocParticles(para);
+	   allocParticles(para.get());
 	   //////////////////////////////////////////////////////////////////////////
 	   ////CUDA random number generation
 	   //para->cudaAllocRandomValues();
@@ -142,7 +148,7 @@ void Simulation::init(std::string &cstr)
 		  // para->getParD(0)->numberofthreads);
 
 	   //////////////////////////////////////////////////////////////////////////////
-	   initParticles(para);
+	   initParticles(para.get());
    }
    ////////////////////////////////////////////////////////////////////////////
 
@@ -159,21 +165,21 @@ void Simulation::init(std::string &cstr)
    //////////////////////////////////////////////////////////////////////////
    //Allocate Memory for Plane Conc Calculation
    //////////////////////////////////////////////////////////////////////////
-   if (para->getDiffOn()) allocPlaneConc(para);
+   if (para->getDiffOn()) allocPlaneConc(para.get());
 
 
    //////////////////////////////////////////////////////////////////////////
    //Median
    //////////////////////////////////////////////////////////////////////////
-   if (para->getCalcMedian())   allocMedian(para);
+   if (para->getCalcMedian())   allocMedian(para.get());
 
 
    //////////////////////////////////////////////////////////////////////////
    //allocate memory and initialize 2nd, 3rd and higher order moments
    //////////////////////////////////////////////////////////////////////////
-   if (para->getCalc2ndOrderMoments()){  alloc2ndMoments(para);         init2ndMoments(para);         }
-   if (para->getCalc3rdOrderMoments()){  alloc3rdMoments(para);         init3rdMoments(para);         }
-   if (para->getCalcHighOrderMoments()){ allocHigherOrderMoments(para); initHigherOrderMoments(para); }
+   if (para->getCalc2ndOrderMoments()){  alloc2ndMoments(para.get());         init2ndMoments(para.get());         }
+   if (para->getCalc3rdOrderMoments()){  alloc3rdMoments(para.get());         init3rdMoments(para.get());         }
+   if (para->getCalcHighOrderMoments()){ allocHigherOrderMoments(para.get()); initHigherOrderMoments(para.get()); }
 
 
    //////////////////////////////////////////////////////////////////////////
@@ -182,7 +188,7 @@ void Simulation::init(std::string &cstr)
    if (para->getUseMeasurePoints())
    {
 	   output << "read measure points...";
-	   readMeasurePoints(para);
+	   readMeasurePoints(para.get());
 	   output << "done.\n";
    }
 
@@ -211,7 +217,7 @@ void Simulation::init(std::string &cstr)
    //Forcing
    //////////////////////////////////////////////////////////////////////////
    //allocVeloForForcing(para);
-   forceCalculator = new ForceCalculations(para);
+   forceCalculator = new ForceCalculations(para.get());
 
    //////////////////////////////////////////////////////////////////////////
    //output << "define the Grid..." ;
@@ -279,7 +285,7 @@ void Simulation::init(std::string &cstr)
 	   output << "Restart...\n...get the Object...\n";
 	   restObj = rest->restart(para->getFName(), para->getTimeDoRestart(), para->getMyID());
 	   output << "...load...\n";
-	   restObj->load(para);
+	   restObj->load(para.get());
 	   //para = rest->restart(para->getTimeDoRestart());
 	   output << "...copy Memory for Restart...\n";
 	   for (int lev=para->getCoarse(); lev <= para->getFine(); lev++)
@@ -314,7 +320,7 @@ void Simulation::init(std::string &cstr)
    //////////////////////////////////////////////////////////////////////////
    output << "Print files Init...";
    writeInit(para);
-   if (para->getCalcParticle()) copyAndPrintParticles(para, 0, true);
+   if (para->getCalcParticle()) copyAndPrintParticles(para.get(), 0, true);
    output << "done.\n";
 
    //////////////////////////////////////////////////////////////////////////
@@ -340,20 +346,20 @@ void Simulation::run()
    //////////////////////////////////////////////////////////////////////////
    para->setStepEnsight(0);
    //////////////////////////////////////////////////////////////////////////
-   doubflo visSponge = 0.001f;
-   doubflo omegaSponge = 1.f / ( 3.f * visSponge + 0.5f );
+   real visSponge = 0.001f;
+   real omegaSponge = 1.f / ( 3.f * visSponge + 0.5f );
    //////////////////////////////////////////////////////////////////////////
    //turning Ship
-   doubflo Pi = (doubflo)3.14159265358979323846;
-   doubflo delta_x_F = (doubflo)0.1;
-   doubflo delta_t_F = (doubflo)(para->getVelocity() * delta_x_F / 3.75); 
-   doubflo delta_t_C = (doubflo)(delta_t_F * pow(2.,para->getMaxLevel()));
-   doubflo timesteps_C = (doubflo)(12.5 / delta_t_C);
-   doubflo AngularVelocity = (doubflo)(12.5 / timesteps_C * Pi / 180.);
+   real Pi = (real)3.14159265358979323846;
+   real delta_x_F = (real)0.1;
+   real delta_t_F = (real)(para->getVelocity() * delta_x_F / 3.75); 
+   real delta_t_C = (real)(delta_t_F * pow(2.,para->getMaxLevel()));
+   real timesteps_C = (real)(12.5 / delta_t_C);
+   real AngularVelocity = (real)(12.5 / timesteps_C * Pi / 180.);
    para->setAngularVelocity(AngularVelocity);
    for (int i = 0; i<= para->getMaxLevel(); i++)
    {
-	   para->getParD(i)->deltaPhi = (doubflo)(para->getAngularVelocity()/(pow(2.,i)));
+	   para->getParD(i)->deltaPhi = (real)(para->getAngularVelocity()/(pow(2.,i)));
    }
    //////////////////////////////////////////////////////////////////////////
 
@@ -380,7 +386,7 @@ void Simulation::run()
 		getLastCudaError("before starting a kernel we get an execution failed");
 		if (para->getMaxLevel()>=1)
          {
-            updateGrid27(para, comm, pm, 1, para->getMaxLevel(), t);
+            updateGrid27(para.get(), comm.get(), pm, 1, para->getMaxLevel(), t);
          }
          ////////////////////////////////////////////////////////////////////////////////
          // Collision and Propagation
@@ -418,8 +424,8 @@ void Simulation::run()
 			// //////////////////////////////////////////////////////////////////////////
 			// KernelKum1hSP27(    para->getParD(0)->numberofthreads,       
 			//					 para->getParD(0)->omega,
-			//					 (doubflo)0.0,
-			//					 (doubflo)0.0,
+			//					 (real)0.0,
+			//					 (real)0.0,
 			//					 para->getParD(0)->geoSP, 
 			//					 para->getParD(0)->neighborX_SP, 
 			//					 para->getParD(0)->neighborY_SP, 
@@ -436,7 +442,7 @@ void Simulation::run()
 			//					para->getParD(0)->Qinflow.Vx,      para->getParD(0)->Qinflow.Vy,   para->getParD(0)->Qinflow.Vz,
 			//					para->getParD(0)->d0SP.f[0],       para->getParD(0)->Qinflow.k,    para->getParD(0)->Qinflow.q27[0], 
 			//					para->getParD(0)->kInflowQ,        para->getParD(0)->kInflowQ,     para->getParD(0)->omega,          
-			//					para->getPhi(),                    (doubflo)0.0,
+			//					para->getPhi(),                    (real)0.0,
 			//					para->getParD(0)->neighborX_SP,    para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP,
 			//					para->getParD(0)->coordX_SP,       para->getParD(0)->coordY_SP,    para->getParD(0)->coordZ_SP,
 			//					para->getParD(0)->size_Mat_SP,     para->getParD(0)->evenOrOdd);
@@ -1004,21 +1010,21 @@ void Simulation::run()
 			//////////////////////////////////////////////////////////////////////////
 			//3D domain decomposition
 			//output << "start exchange Post X (level 0) \n";
-			exchangePostCollDataXGPU27(para, comm, 0);
+			exchangePostCollDataXGPU27(para.get(), comm.get(), 0);
 			//output << "end exchange Post X (level 0) \n";
 			//output << "start exchange Post Y (level 0) \n";
-			exchangePostCollDataYGPU27(para, comm, 0);
+			exchangePostCollDataYGPU27(para.get(), comm.get(), 0);
 			//output << "end exchange Post Y (level 0) \n";
 			//output << "start exchange Post Z (level 0) \n";
-			exchangePostCollDataZGPU27(para, comm, 0);
+			exchangePostCollDataZGPU27(para.get(), comm.get(), 0);
 			//output << "end exchange Post Z (level 0) \n";
 			////////////////////////////////////////////////////////////////////////
 			//3D domain decomposition convection diffusion
 			if (para->getDiffOn()==true)
 			{
-				exchangePostCollDataADXGPU27(para, comm, 0);
-				exchangePostCollDataADYGPU27(para, comm, 0);
-				exchangePostCollDataADZGPU27(para, comm, 0);
+				exchangePostCollDataADXGPU27(para.get(), comm.get(), 0);
+				exchangePostCollDataADYGPU27(para.get(), comm.get(), 0);
+				exchangePostCollDataADZGPU27(para.get(), comm.get(), 0);
 			}
 		}
 		////////////////////////////////////////////////////////////////////////////////
@@ -1713,24 +1719,24 @@ void Simulation::run()
 			 if (para->getNumprocs() > 1)
 			 {
 				 ////1D domain decomposition
-				 //exchangePreCollDataGPU27(para, comm, 0);
+				 //exchangePreCollDataGPU27(para, comm.get(), 0);
 				 //3D domain decomposition
 				 //output << "start exchange Pre X (level 0) \n";
-				 exchangePreCollDataXGPU27(para, comm, 0);
+				 exchangePreCollDataXGPU27(para.get(), comm.get(), 0);
 				 //output << "end exchange Pre X (level 0) \n";
 				 //output << "start exchange Pre Y (level 0) \n";
-				 exchangePreCollDataYGPU27(para, comm, 0);
+				 exchangePreCollDataYGPU27(para.get(), comm.get(), 0);
 				 //output << "end exchange Pre Y (level 0) \n";
 				 //output << "start exchange Pre Z (level 0) \n";
-				 exchangePreCollDataZGPU27(para, comm, 0);
+				 exchangePreCollDataZGPU27(para.get(), comm.get(), 0);
 				 //output << "end exchange Pre Z (level 0) \n";
 				 //////////////////////////////////////////////////////////////////////////
 				 //3D domain decomposition convection diffusion
 				 if (para->getDiffOn()==true)
 				 {
-					 exchangePreCollDataADXGPU27(para, comm, 0);
-					 exchangePreCollDataADYGPU27(para, comm, 0);
-					 exchangePreCollDataADZGPU27(para, comm, 0);
+					 exchangePreCollDataADXGPU27(para.get(), comm.get(), 0);
+					 exchangePreCollDataADYGPU27(para.get(), comm.get(), 0);
+					 exchangePreCollDataADZGPU27(para.get(), comm.get(), 0);
 				 }
 			 }
 		    //////////////////////////////////////////////////////////////////////////
@@ -1926,7 +1932,7 @@ void Simulation::run()
 	  ////////////////////////////////////////////////////////////////////////////////
 	  //Particles
 	  ////////////////////////////////////////////////////////////////////////////////
-	  if (para->getCalcParticle()) propagateParticles(para, t);
+	  if (para->getCalcParticle()) propagateParticles(para.get(), t);
 	  ////////////////////////////////////////////////////////////////////////////////
 
 
@@ -1999,7 +2005,7 @@ void Simulation::run()
 			  }
 
 			  output << "Dateien fuer CheckPoint schreiben t=" << t << "...";
-			  restObj->safe(para);
+			  restObj->safe(para.get());
 			  rest->doCheckPoint(para->getFName(), t, para->getMyID());
 			  output << "\n fertig\n";
 		  }
@@ -2048,9 +2054,9 @@ void Simulation::run()
 				  output << "\n Write MeasurePoints at level = " << lev << " and timestep = " << t << "\n";
 				  for (int j = 0; j < (int)para->getParH(lev)->MP.size(); j++)
 				  {
-					  MeasurePointWriter::writeMeasurePoints(para, lev, j, t);
+					  MeasurePointWriter::writeMeasurePoints(para.get(), lev, j, t);
 				  }
-				  MeasurePointWriter::calcAndWriteMeanAndFluctuations(para, lev, t, para->getTStartOut());
+				  MeasurePointWriter::calcAndWriteMeanAndFluctuations(para.get(), lev, t, para->getTStartOut());
 			  }
 			  t_MP = 0;
 		  }
@@ -2103,7 +2109,7 @@ void Simulation::run()
 		  //////////////////////////////////////////////////////////////////////////////////
 		  ////Calculation of concentration at the plane
 		  //////////////////////////////////////////////////////////////////////////////////
-		  calcPlaneConc(para, 0);
+		  calcPlaneConc(para.get(), 0);
 	  }
 	  //////////////////////////////////////////////////////////////////////////////////
 
@@ -2113,7 +2119,7 @@ void Simulation::run()
 	  ////////////////////////////////////////////////////////////////////////////////
       // File IO
       ////////////////////////////////////////////////////////////////////////////////
-      //comm->startTimer();
+      //comm.get()->startTimer();
       if(para->getTOut()>0 && t%para->getTOut()==0 && t>para->getTStartOut())
       {
 		  //////////////////////////////////////////////////////////////////////////////////
@@ -2156,24 +2162,24 @@ void Simulation::run()
 		 if (para->getNumprocs() > 1)
 		 {
 			 ////1D domain decomposition
-			 //exchangePreCollDataGPU27(para, comm, 0);
+			 //exchangePreCollDataGPU27(para, comm.get(), 0);
 			 //3D domain decomposition
 			 //output << "(print) start exchange Pre X (level 0) \n";
-			 exchangePreCollDataXGPU27(para, comm, 0);
+			 exchangePreCollDataXGPU27(para.get(), comm.get(), 0);
 			 //output << "(print) end exchange Pre X (level 0) \n";
 			 //output << "(print) start exchange Pre Y (level 0) \n";
-			 exchangePreCollDataYGPU27(para, comm, 0);
+			 exchangePreCollDataYGPU27(para.get(), comm.get(), 0);
 			 //output << "(print) end exchange Pre Y (level 0) \n";
 			 //output << "(print) start exchange Pre Z (level 0) \n";
-			 exchangePreCollDataZGPU27(para, comm, 0);
+			 exchangePreCollDataZGPU27(para.get(), comm.get(), 0);
 			 //output << "(print) end exchange Pre Z (level 0) \n";
 			 //////////////////////////////////////////////////////////////////////////
 			 //3D domain decomposition convection diffusion
 			 if (para->getDiffOn()==true)
 			 {
-				 exchangePreCollDataADXGPU27(para, comm, 0);
-				 exchangePreCollDataADYGPU27(para, comm, 0);
-				 exchangePreCollDataADZGPU27(para, comm, 0);
+				 exchangePreCollDataADXGPU27(para.get(), comm.get(), 0);
+				 exchangePreCollDataADYGPU27(para.get(), comm.get(), 0);
+				 exchangePreCollDataADZGPU27(para.get(), comm.get(), 0);
 			 }
 		 }
 		 //////////////////////////////////////////////////////////////////////////
@@ -2323,7 +2329,7 @@ void Simulation::run()
                   }
 
 				  para->cudaCopyConcDH(lev);
-                  //cudaMemoryCopy(para->getParH(lev)->Conc, para->getParD(lev)->Conc,  para->getParH(lev)->mem_size_doubflo_SP , cudaMemcpyDeviceToHost);
+                  //cudaMemoryCopy(para->getParH(lev)->Conc, para->getParD(lev)->Conc,  para->getParH(lev)->mem_size_real_SP , cudaMemcpyDeviceToHost);
                }
                ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 			   ////print cp
@@ -2400,9 +2406,9 @@ void Simulation::run()
 			////////////////////////////////////////////////////////////////////////
 			//calculate 2nd, 3rd and higher order moments
 			////////////////////////////////////////////////////////////////////////
-			if (para->getCalc2ndOrderMoments())  calc2ndMoments(para);
-			if (para->getCalc3rdOrderMoments())  calc3rdMoments(para);
-			if (para->getCalcHighOrderMoments()) calcHigherOrderMoments(para);
+			if (para->getCalc2ndOrderMoments())  calc2ndMoments(para.get());
+			if (para->getCalc3rdOrderMoments())  calc3rdMoments(para.get());
+			if (para->getCalcHighOrderMoments()) calcHigherOrderMoments(para.get());
 			////////////////////////////////////////////////////////////////////////
 
 			////////////////////////////////////////////////////////////////////////
@@ -2411,14 +2417,14 @@ void Simulation::run()
 			if (para->getCalcMedian() && ((int)t > para->getTimeCalcMedStart()) && ((int)t <= para->getTimeCalcMedEnd()) && ((t%(unsigned int)para->getclockCycleForMP())==0))
 			{
 				unsigned int tdiff = t - t_prev;
-				calcMedian(para, tdiff);
+				calcMedian(para.get(), tdiff);
 			}
 			////////////////////////////////////////////////////////////////////////
-			writeTimestep(para, t);
+			writeTimestep(para.get(), t);
 			////////////////////////////////////////////////////////////////////////
 			//printDragLift(para, t);
 			////////////////////////////////////////////////////////////////////////
-			if (para->getCalcParticle()) copyAndPrintParticles(para, t, false);
+			if (para->getCalcParticle()) copyAndPrintParticles(para.get(), t, false);
 			////////////////////////////////////////////////////////////////////////
 			output << "done.\n";
 			////////////////////////////////////////////////////////////////////////
@@ -2465,7 +2471,7 @@ void Simulation::run()
 	////////////////////////////////////////////////////////////////////////////////
 
 	////////////////////////////////////////////////////////////////////////////////
-	if (para->getDiffOn()==true) printPlaneConc(para);
+	if (para->getDiffOn()==true) printPlaneConc(para.get());
 	////////////////////////////////////////////////////////////////////////////////
 
 	////////////////////////////////////////////////////////////////////////////////
diff --git a/src/VirtualFluids_GPU/LBM/Simulation.h b/src/VirtualFluids_GPU/LBM/Simulation.h
index fcb4973a0..fb3d12ab3 100644
--- a/src/VirtualFluids_GPU/LBM/Simulation.h
+++ b/src/VirtualFluids_GPU/LBM/Simulation.h
@@ -1,50 +1,52 @@
 #ifndef _SIMULATION_H_
 #define _SIMULATION_H_
 
+#include <memory>
+#include <core/PointerDefinitions.h>
+
 #include <VirtualFluidsDefinitions.h>
 
 #include "Output/LogWriter.hpp"
 #include "Utilities/Buffer2D.hpp"
-//#include "Input/ConfigFile.h"
-#include "Calculation/ForceCalculations.h"
-#include "Calculation/PorousMedia.h"
-#include "Parameter/Parameter.h"
-#include "Restart/RestartPostprocessor.h"
-#include "Restart/RestartObject.h"
 #include "LBM/LB.h"
-//#include "LBM/D3Q27.h"
 
 class Communicator;
+class Parameter;
+class GridProvider;
+class PorousMedia;
+class RestartObject;
+class RestartPostprocessor;
+class ForceCalculations;
 
 
 class VF_PUBLIC Simulation
 {
 public:
-	Simulation(void);
-	~Simulation(void);
+	Simulation();
+	~Simulation();
 	void run();
-	void init(std::string &cstr);
+	void init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider);
 	void bulk();
 	void porousMedia();
 	void definePMarea(PorousMedia* pm);
-protected:
 
-	Buffer2D <doubflo> sbuf_t; 
-	Buffer2D <doubflo> rbuf_t;
-	Buffer2D <doubflo> sbuf_b;
-	Buffer2D <doubflo> rbuf_b;
+protected:
+	Buffer2D <real> sbuf_t; 
+	Buffer2D <real> rbuf_t;
+	Buffer2D <real> sbuf_b;
+	Buffer2D <real> rbuf_b;
 
 	Buffer2D <int> geo_sbuf_t; 
 	Buffer2D <int> geo_rbuf_t;
 	Buffer2D <int> geo_sbuf_b;
 	Buffer2D <int> geo_rbuf_b;
 
-	//for MPI
-	Communicator* comm;
+
 	LogWriter output;
 
-	//Parameter
-	Parameter* para;
+    SPtr<Communicator> comm;
+    SPtr<Parameter> para;
+    SPtr<GridProvider> gridProvider;
 
 	//Restart object
 	RestartObject* restObj;
@@ -65,13 +67,13 @@ protected:
 	QforBoundaryConditions  QsH, QsD;
 	QforBoundaryConditions  QeH, QeD;
 	QforBoundaryConditions  QwH, QwD;
-	doubflo *VxNH,          *VyNH,       *VzNH,       *deltaVNH;
-	doubflo *VxND,          *VyND,       *VzND,       *deltaVND;
-	doubflo *VxSH,          *VySH,       *VzSH,       *deltaVSH;
-	doubflo *VxSD,          *VySD,       *VzSD,       *deltaVSD;
-	doubflo *VxEH,          *VyEH,       *VzEH,       *deltaVEH;
-	doubflo *VxED,          *VyED,       *VzED,       *deltaVED;
-	doubflo *VxWH,          *VyWH,       *VzWH,       *deltaVWH;
-	doubflo *VxWD,          *VyWD,       *VzWD,       *deltaVWD;
+	real *VxNH,          *VyNH,       *VzNH,       *deltaVNH;
+	real *VxND,          *VyND,       *VzND,       *deltaVND;
+	real *VxSH,          *VySH,       *VzSH,       *deltaVSH;
+	real *VxSD,          *VySD,       *VzSD,       *deltaVSD;
+	real *VxEH,          *VyEH,       *VzEH,       *deltaVEH;
+	real *VxED,          *VyED,       *VzED,       *deltaVED;
+	real *VxWH,          *VyWH,       *VzWH,       *deltaVWH;
+	real *VxWD,          *VyWD,       *VzWD,       *deltaVWD;
  };
 #endif
diff --git a/src/VirtualFluids_GPU/Output/AnalysisData.hpp b/src/VirtualFluids_GPU/Output/AnalysisData.hpp
index 9cf6525b0..8163a612f 100644
--- a/src/VirtualFluids_GPU/Output/AnalysisData.hpp
+++ b/src/VirtualFluids_GPU/Output/AnalysisData.hpp
@@ -51,9 +51,9 @@ public:
 		//}
 		int numberNodes = (int)para->getParH(0)->size_Mat_SP;
 
-		doubflo deltaX = 1.0f;
-		doubflo halfDx = deltaX / 2.0f;
-		doubflo middleOfTheGrid = (para->getMaxCoordY()[0] + para->getMinCoordY()[0]) / 2.f;
+		real deltaX = 1.0f;
+		real halfDx = deltaX / 2.0f;
+		real middleOfTheGrid = (para->getMaxCoordY()[0] + para->getMinCoordY()[0]) / 2.f;
 
 		for (int u = 0; u < numberNodes; u++)
 		{
@@ -89,12 +89,12 @@ public:
 	{
 		UbFileOutputASCII out(para->getFName() + "_AD_X_" + StringUtil::toString<int>(t) + ".dat");
 
-		doubflo level = 0; //uniform
+		real level = 0; //uniform
 		int numberNodes = (int)para->getParH(level)->size_Mat_SP;
 
-		doubflo deltaX = 1.0f / pow(2, level);
-		doubflo halfDx = deltaX / 2.0f;
-		doubflo middleOfTheGrid = (para->getMaxCoordY()[0] + para->getMinCoordY()[0]) / 2.f;
+		real deltaX = 1.0f / pow(2, level);
+		real halfDx = deltaX / 2.0f;
+		real middleOfTheGrid = (para->getMaxCoordY()[0] + para->getMinCoordY()[0]) / 2.f;
 
 		for (int u = 0; u < numberNodes; u++)
 		{
@@ -111,12 +111,12 @@ public:
 	{
 		UbFileOutputASCII out(para->getFName() + "_AD_Y_" + StringUtil::toString<int>(t) + ".dat");
 
-		doubflo level = 0; //uniform
+		real level = 0; //uniform
 		int numberNodes = (int)para->getParH(level)->size_Mat_SP;
 
-		doubflo deltaX = 1.0f / pow(2, level);
-		doubflo halfDx = deltaX / 2.0f;
-		doubflo middleOfTheGrid = (para->getMaxCoordY()[0] + para->getMinCoordY()[0]) / 2.f;
+		real deltaX = 1.0f / pow(2, level);
+		real halfDx = deltaX / 2.0f;
+		real middleOfTheGrid = (para->getMaxCoordY()[0] + para->getMinCoordY()[0]) / 2.f;
 
 		for (int u = 0; u < numberNodes; u++)
 		{
@@ -133,12 +133,12 @@ public:
 	{
 		UbFileOutputASCII out(para->getFName() + "_AD_Z_" + StringUtil::toString<int>(t) + ".dat");
 
-		doubflo level = 0; //uniform
+		real level = 0; //uniform
 		int numberNodes = (int)para->getParH(level)->size_Mat_SP;
 
-		doubflo deltaX = 1.0f / pow(2, level);
-		doubflo halfDx = deltaX / 2.0f;
-		doubflo middleOfTheGrid = (para->getMaxCoordY()[0] + para->getMinCoordY()[0]) / 2.f;
+		real deltaX = 1.0f / pow(2, level);
+		real halfDx = deltaX / 2.0f;
+		real middleOfTheGrid = (para->getMaxCoordY()[0] + para->getMinCoordY()[0]) / 2.f;
 
 		for (int u = 0; u < numberNodes; u++)
 		{
diff --git a/src/VirtualFluids_GPU/Output/InterfaceDebugWriter.hpp b/src/VirtualFluids_GPU/Output/InterfaceDebugWriter.hpp
index 615016b16..4bd731d16 100644
--- a/src/VirtualFluids_GPU/Output/InterfaceDebugWriter.hpp
+++ b/src/VirtualFluids_GPU/Output/InterfaceDebugWriter.hpp
@@ -420,9 +420,9 @@ namespace InterfaceDebugWriter
 			{
 				int pos = para->getParH(level)->QPress.kN[u];
 
-				doubflo x1 = para->getParH(level)->coordX_SP[pos];
-				doubflo x2 = para->getParH(level)->coordY_SP[pos];
-				doubflo x3 = para->getParH(level)->coordZ_SP[pos];
+				real x1 = para->getParH(level)->coordX_SP[pos];
+				real x2 = para->getParH(level)->coordY_SP[pos];
+				real x3 = para->getParH(level)->coordZ_SP[pos];
 
 				nodesVec[nodeCount2++]=( makeUbTuple( (float)(x1),(float)(x2),(float)(x3) ) );
 			}
@@ -449,9 +449,9 @@ namespace InterfaceDebugWriter
 		{
 			for(unsigned int u=0;u<para->getParH(level)->size_Mat_SP;u++)
 			{
-				doubflo x1 = para->getParH(level)->coordX_SP[para->getParH(level)->neighborX_SP[u]];
-				doubflo x2 = para->getParH(level)->coordY_SP[para->getParH(level)->neighborX_SP[u]];
-				doubflo x3 = para->getParH(level)->coordZ_SP[para->getParH(level)->neighborX_SP[u]];
+				real x1 = para->getParH(level)->coordX_SP[para->getParH(level)->neighborX_SP[u]];
+				real x2 = para->getParH(level)->coordY_SP[para->getParH(level)->neighborX_SP[u]];
+				real x3 = para->getParH(level)->coordZ_SP[para->getParH(level)->neighborX_SP[u]];
 
 				nodesVec[nodeCount2++]=( makeUbTuple( (float)(x1),(float)(x2),(float)(x3) ) );
 			}
@@ -479,12 +479,12 @@ namespace InterfaceDebugWriter
 		{
 			for(unsigned int u=0;u<para->getParH(level)->size_Mat_SP;u++)
 			{
-				doubflo x1 = para->getParH(level)->coordX_SP[u];
-				doubflo x2 = para->getParH(level)->coordY_SP[u];
-				doubflo x3 = para->getParH(level)->coordZ_SP[u];
-				doubflo x1N = para->getParH(level)->coordX_SP[para->getParH(level)->neighborX_SP[u]];
-				doubflo x2N = para->getParH(level)->coordY_SP[para->getParH(level)->neighborX_SP[u]];
-				doubflo x3N = para->getParH(level)->coordZ_SP[para->getParH(level)->neighborX_SP[u]];
+				real x1 = para->getParH(level)->coordX_SP[u];
+				real x2 = para->getParH(level)->coordY_SP[u];
+				real x3 = para->getParH(level)->coordZ_SP[u];
+				real x1N = para->getParH(level)->coordX_SP[para->getParH(level)->neighborX_SP[u]];
+				real x2N = para->getParH(level)->coordY_SP[para->getParH(level)->neighborX_SP[u]];
+				real x3N = para->getParH(level)->coordZ_SP[para->getParH(level)->neighborX_SP[u]];
 
 				nodesVec[nodeCount++]=( makeUbTuple( (float)(x1),(float)(x2),(float)(x3) ) );
 				nodesVec[nodeCount++]=( makeUbTuple( (float)(x1N),(float)(x2N),(float)(x3N) ) );
@@ -518,9 +518,9 @@ namespace InterfaceDebugWriter
 		{
 			for(unsigned int u=0;u<para->getParH(level)->size_Mat_SP;u++)
 			{
-				doubflo x1 = para->getParH(level)->coordX_SP[para->getParH(level)->neighborY_SP[u]];
-				doubflo x2 = para->getParH(level)->coordY_SP[para->getParH(level)->neighborY_SP[u]];
-				doubflo x3 = para->getParH(level)->coordZ_SP[para->getParH(level)->neighborY_SP[u]];
+				real x1 = para->getParH(level)->coordX_SP[para->getParH(level)->neighborY_SP[u]];
+				real x2 = para->getParH(level)->coordY_SP[para->getParH(level)->neighborY_SP[u]];
+				real x3 = para->getParH(level)->coordZ_SP[para->getParH(level)->neighborY_SP[u]];
 
 				nodesVec[nodeCount2++]=( makeUbTuple( (float)(x1),(float)(x2),(float)(x3) ) );
 			}
@@ -548,12 +548,12 @@ namespace InterfaceDebugWriter
 		{
 			for(unsigned int u=0;u<para->getParH(level)->size_Mat_SP;u++)
 			{
-				doubflo x1 = para->getParH(level)->coordX_SP[u];
-				doubflo x2 = para->getParH(level)->coordY_SP[u];
-				doubflo x3 = para->getParH(level)->coordZ_SP[u];
-				doubflo x1N = para->getParH(level)->coordX_SP[para->getParH(level)->neighborY_SP[u]];
-				doubflo x2N = para->getParH(level)->coordY_SP[para->getParH(level)->neighborY_SP[u]];
-				doubflo x3N = para->getParH(level)->coordZ_SP[para->getParH(level)->neighborY_SP[u]];
+				real x1 = para->getParH(level)->coordX_SP[u];
+				real x2 = para->getParH(level)->coordY_SP[u];
+				real x3 = para->getParH(level)->coordZ_SP[u];
+				real x1N = para->getParH(level)->coordX_SP[para->getParH(level)->neighborY_SP[u]];
+				real x2N = para->getParH(level)->coordY_SP[para->getParH(level)->neighborY_SP[u]];
+				real x3N = para->getParH(level)->coordZ_SP[para->getParH(level)->neighborY_SP[u]];
 
 				nodesVec[nodeCount++]=( makeUbTuple( (float)(x1),(float)(x2),(float)(x3) ) );
 				nodesVec[nodeCount++]=( makeUbTuple( (float)(x1N),(float)(x2N),(float)(x3N) ) );
@@ -587,9 +587,9 @@ namespace InterfaceDebugWriter
 		{
 			for(unsigned int u=0;u<para->getParH(level)->size_Mat_SP;u++)
 			{
-				doubflo x1 = para->getParH(level)->coordX_SP[para->getParH(level)->neighborZ_SP[u]];
-				doubflo x2 = para->getParH(level)->coordY_SP[para->getParH(level)->neighborZ_SP[u]];
-				doubflo x3 = para->getParH(level)->coordZ_SP[para->getParH(level)->neighborZ_SP[u]];
+				real x1 = para->getParH(level)->coordX_SP[para->getParH(level)->neighborZ_SP[u]];
+				real x2 = para->getParH(level)->coordY_SP[para->getParH(level)->neighborZ_SP[u]];
+				real x3 = para->getParH(level)->coordZ_SP[para->getParH(level)->neighborZ_SP[u]];
 
 				nodesVec[nodeCount2++]=( makeUbTuple( (float)(x1),(float)(x2),(float)(x3) ) );
 			}
@@ -617,12 +617,12 @@ namespace InterfaceDebugWriter
 		{
 			for(unsigned int u=0;u<para->getParH(level)->size_Mat_SP;u++)
 			{
-				doubflo x1 = para->getParH(level)->coordX_SP[u];
-				doubflo x2 = para->getParH(level)->coordY_SP[u];
-				doubflo x3 = para->getParH(level)->coordZ_SP[u];
-				doubflo x1N = para->getParH(level)->coordX_SP[para->getParH(level)->neighborZ_SP[u]];
-				doubflo x2N = para->getParH(level)->coordY_SP[para->getParH(level)->neighborZ_SP[u]];
-				doubflo x3N = para->getParH(level)->coordZ_SP[para->getParH(level)->neighborZ_SP[u]];
+				real x1 = para->getParH(level)->coordX_SP[u];
+				real x2 = para->getParH(level)->coordY_SP[u];
+				real x3 = para->getParH(level)->coordZ_SP[u];
+				real x1N = para->getParH(level)->coordX_SP[para->getParH(level)->neighborZ_SP[u]];
+				real x2N = para->getParH(level)->coordY_SP[para->getParH(level)->neighborZ_SP[u]];
+				real x3N = para->getParH(level)->coordZ_SP[para->getParH(level)->neighborZ_SP[u]];
 
 				nodesVec[nodeCount++]=( makeUbTuple( (float)(x1),(float)(x2),(float)(x3) ) );
 				nodesVec[nodeCount++]=( makeUbTuple( (float)(x1N),(float)(x2N),(float)(x3N) ) );
diff --git a/src/VirtualFluids_GPU/Output/MeasurePointWriter.hpp b/src/VirtualFluids_GPU/Output/MeasurePointWriter.hpp
index e72c15e96..23fa28c6e 100644
--- a/src/VirtualFluids_GPU/Output/MeasurePointWriter.hpp
+++ b/src/VirtualFluids_GPU/Output/MeasurePointWriter.hpp
@@ -60,9 +60,9 @@ public:
 
 		int numberNodes = (int)para->getParH(level)->size_Mat_SP;
 		
-		doubflo deltaX = 1.0f / pow(2, level);
-		doubflo halfDx = deltaX / 2.0f;
-		doubflo middleOfTheGrid = (para->getMaxCoordZ()[0] + para->getMinCoordZ()[0]) / 2.f;
+		real deltaX = 1.0f / pow(2, level);
+		real halfDx = deltaX / 2.0f;
+		real middleOfTheGrid = (para->getMaxCoordZ()[0] + para->getMinCoordZ()[0]) / 2.f;
 		//cout << "deltax: " << deltaX << ", halfDx: " << halfDx << ", middle of the grid: " << middleOfTheGrid << endl;
 
 		for (int u = 0; u < numberNodes; u++)
@@ -93,9 +93,9 @@ public:
 
 		int numberNodes = (int)para->getParH(level)->size_Mat_SP;
 
-		doubflo deltaX = 1.0f / pow(2, level);
-		doubflo halfDx = deltaX / 2.0f;
-		doubflo middleOfTheGrid = (para->getMaxCoordX()[0] + para->getMinCoordX()[0]) / 2.f;
+		real deltaX = 1.0f / pow(2, level);
+		real halfDx = deltaX / 2.0f;
+		real middleOfTheGrid = (para->getMaxCoordX()[0] + para->getMinCoordX()[0]) / 2.f;
 
 		for (int u = 0; u < numberNodes; u++)
 		{
@@ -125,9 +125,9 @@ public:
 
 		int numberNodes = (int)para->getParH(level)->size_Mat_SP;
 
-		doubflo deltaX = 1.0f / pow(2, level);
-		doubflo halfDx = deltaX / 2.0f;
-		doubflo middleOfTheGrid = (para->getMaxCoordY()[0] + para->getMinCoordY()[0]) / 2.f;
+		real deltaX = 1.0f / pow(2, level);
+		real halfDx = deltaX / 2.0f;
+		real middleOfTheGrid = (para->getMaxCoordY()[0] + para->getMinCoordY()[0]) / 2.f;
 
 		for (int u = 0; u < numberNodes; u++)
 		{
diff --git a/src/VirtualFluids_GPU/Output/UnstructuredGridWriter.hpp b/src/VirtualFluids_GPU/Output/UnstructuredGridWriter.hpp
index e0d3a91a9..967331b98 100644
--- a/src/VirtualFluids_GPU/Output/UnstructuredGridWriter.hpp
+++ b/src/VirtualFluids_GPU/Output/UnstructuredGridWriter.hpp
@@ -1851,7 +1851,7 @@ namespace UnstrucuredGridWriter
 		int wall = 1;
 		int line = 0;
 		double dx = 1.0 / pow(2, level);
-		doubflo* QQ;
+		real* QQ;
 		QforBoundaryConditions Q;
 		double nodeX1, nodeX2, nodeX3, wallX1, wallX2, wallX3, q;
 		//////////////////////////////////////////////////////////////////////////
diff --git a/src/VirtualFluids_GPU/Output/VtkSGWriter.hpp b/src/VirtualFluids_GPU/Output/VtkSGWriter.hpp
index 6b7cd6efb..28e79d673 100644
--- a/src/VirtualFluids_GPU/Output/VtkSGWriter.hpp
+++ b/src/VirtualFluids_GPU/Output/VtkSGWriter.hpp
@@ -117,15 +117,15 @@ void writeVTKsg(unsigned int nx, unsigned int ny, unsigned int nz, int startoffx
 
 void writeVTKsgSP(unsigned int nx_D, unsigned int ny_D, unsigned int nz_D, int startoffx_D, int startoffy_D, int startoffz_D,
                   unsigned int nnx_D, unsigned int nny_D, unsigned int nnz_D, unsigned int start_z, unsigned int end_z, std::string& fname,
-                  unsigned int*   bcMatH, doubflo* vxH_D, doubflo* vyH_D, doubflo* vzH_D, doubflo* rhoH_D, doubflo* pressH_D, doubflo v_ratio_D, doubflo rho_ratio_D, 
-                  doubflo startx_D, doubflo starty_D, doubflo startz_D, doubflo deltax_D, unsigned int *kFull)
+                  unsigned int*   bcMatH, real* vxH_D, real* vyH_D, real* vzH_D, real* rhoH_D, real* pressH_D, real v_ratio_D, real rho_ratio_D, 
+                  real startx_D, real starty_D, real startz_D, real deltax_D, unsigned int *kFull)
  {
     //Test
-	DOUBFLO* /*float* double**/ vxH      = vxH_D      ;
-	DOUBFLO* /*float* double**/ vyH      = vyH_D      ;
-	DOUBFLO* /*float* double**/ vzH      = vzH_D      ;
-	DOUBFLO* /*float* double**/ rhoH     = rhoH_D     ;
-	DOUBFLO* /*float* double**/ pressH   = pressH_D   ;
+	real* /*float* double**/ vxH      = vxH_D      ;
+	real* /*float* double**/ vyH      = vyH_D      ;
+	real* /*float* double**/ vzH      = vzH_D      ;
+	real* /*float* double**/ rhoH     = rhoH_D     ;
+	real* /*float* double**/ pressH   = pressH_D   ;
     double  v_ratio  = v_ratio_D  ;
     double  rho_ratio= rho_ratio_D;
     double  startx   = startx_D   ;
@@ -271,15 +271,15 @@ void writeVTKsgSP(unsigned int nx_D, unsigned int ny_D, unsigned int nz_D, int s
 
  void writeVTKsgSPbin(unsigned int nx_D, unsigned int ny_D, unsigned int nz_D, int startoffx_D, int startoffy_D, int startoffz_D,
 					 unsigned int nnx_D, unsigned int nny_D, unsigned int nnz_D, unsigned int start_z, unsigned int end_z, std::string& fname,
-					 unsigned int*   bcMatH, int*   bcMatHFull, doubflo* vxH_D, doubflo* vyH_D, doubflo* vzH_D, doubflo* rhoH_D, doubflo* pressH_D, doubflo v_ratio_D, doubflo rho_ratio_D, 
-					 doubflo startx_D, doubflo starty_D, doubflo startz_D, doubflo deltax_D, unsigned int *kFull)
+					 unsigned int*   bcMatH, int*   bcMatHFull, real* vxH_D, real* vyH_D, real* vzH_D, real* rhoH_D, real* pressH_D, real v_ratio_D, real rho_ratio_D, 
+					 real startx_D, real starty_D, real startz_D, real deltax_D, unsigned int *kFull)
  {
 	 //Test 
-	 DOUBFLO* /*float* double**/ vxH      = vxH_D      ;
-	 DOUBFLO* /*float* double**/ vyH      = vyH_D      ;
-	 DOUBFLO* /*float* double**/ vzH      = vzH_D      ;
-	 DOUBFLO* /*float* double**/ rhoH     = rhoH_D     ;
-	 DOUBFLO* /*float* double**/ pressH   = pressH_D   ;
+	 real* /*float* double**/ vxH      = vxH_D      ;
+	 real* /*float* double**/ vyH      = vyH_D      ;
+	 real* /*float* double**/ vzH      = vzH_D      ;
+	 real* /*float* double**/ rhoH     = rhoH_D     ;
+	 real* /*float* double**/ pressH   = pressH_D   ;
 	 float  v_ratio  = (float)v_ratio_D  ;
 	 float  rho_ratio= (float)rho_ratio_D;
 	 float  startx   = (float)startx_D   ;
@@ -412,15 +412,15 @@ void writeVTKsgSP(unsigned int nx_D, unsigned int ny_D, unsigned int nz_D, int s
 
 void writeVTKmedSPbin(   unsigned int nx_D, unsigned int ny_D, unsigned int nz_D, int startoffx_D, int startoffy_D, int startoffz_D,
 						 unsigned int nnx_D, unsigned int nny_D, unsigned int nnz_D, unsigned int start_z, unsigned int end_z, std::string& fname,
-						 unsigned int*   bcMatH, int*   bcMatHFull, doubflo* vxH_D, doubflo* vyH_D, doubflo* vzH_D, doubflo* rhoH_D, doubflo* pressH_D, doubflo tdiff, doubflo v_ratio_D, doubflo rho_ratio_D, 
-						 doubflo startx_D, doubflo starty_D, doubflo startz_D, doubflo deltax_D, unsigned int *kFull)
+						 unsigned int*   bcMatH, int*   bcMatHFull, real* vxH_D, real* vyH_D, real* vzH_D, real* rhoH_D, real* pressH_D, real tdiff, real v_ratio_D, real rho_ratio_D, 
+						 real startx_D, real starty_D, real startz_D, real deltax_D, unsigned int *kFull)
  {
 	 //Test 
-	 DOUBFLO* /*float* double**/ vxH      = vxH_D      ;
-	 DOUBFLO* /*float* double**/ vyH      = vyH_D      ;
-	 DOUBFLO* /*float* double**/ vzH      = vzH_D      ;
-	 DOUBFLO* /*float* double**/ rhoH     = rhoH_D     ;
-	 DOUBFLO* /*float* double**/ pressH   = pressH_D   ;
+	 real* /*float* double**/ vxH      = vxH_D      ;
+	 real* /*float* double**/ vyH      = vyH_D      ;
+	 real* /*float* double**/ vzH      = vzH_D      ;
+	 real* /*float* double**/ rhoH     = rhoH_D     ;
+	 real* /*float* double**/ pressH   = pressH_D   ;
 	 float  v_ratio  = (float)v_ratio_D  ;
 	 float  rho_ratio= (float)rho_ratio_D;
 	 float  startx   = (float)startx_D   ;
@@ -645,15 +645,15 @@ void writeVTKmedSPbin(   unsigned int nx_D, unsigned int ny_D, unsigned int nz_D
 
 void writeVTKsgThS(unsigned int nx, unsigned int ny, unsigned int nz, int startoffx, int startoffy, int startoffz,
                    unsigned int nnx, unsigned int nny, unsigned int nnz, unsigned int start_z, unsigned int end_z, std::string& fname,
-                   unsigned int*   bcMatH, doubflo* vxH_D, doubflo* vyH_D, doubflo* vzH_D, doubflo* rhoH_D, doubflo v_ratio_D, doubflo rho_ratio_D, 
-                   doubflo startx_D, doubflo starty_D, doubflo startz_D, doubflo deltax_D, unsigned int *kFull, doubflo* ConcD)
+                   unsigned int*   bcMatH, real* vxH_D, real* vyH_D, real* vzH_D, real* rhoH_D, real v_ratio_D, real rho_ratio_D, 
+                   real startx_D, real starty_D, real startz_D, real deltax_D, unsigned int *kFull, real* ConcD)
 {
    //Test
-	DOUBFLO* /*float* double**/ vxH      = vxH_D      ;
-	DOUBFLO* /*float* double**/ vyH      = vyH_D      ;
-	DOUBFLO* /*float* double**/ vzH      = vzH_D      ;
-	DOUBFLO* /*float* double**/ rhoH     = rhoH_D     ;
-	DOUBFLO* /*float* double**/ ConcH    = ConcD   ;
+	real* /*float* double**/ vxH      = vxH_D      ;
+	real* /*float* double**/ vyH      = vyH_D      ;
+	real* /*float* double**/ vzH      = vzH_D      ;
+	real* /*float* double**/ rhoH     = rhoH_D     ;
+	real* /*float* double**/ ConcH    = ConcD   ;
    double  v_ratio  = v_ratio_D  ;
    double  rho_ratio= rho_ratio_D;
    double  startx   = startx_D   ;
@@ -775,17 +775,17 @@ void writeVTKsgThS(unsigned int nx, unsigned int ny, unsigned int nz, int starto
 
  void writeVTKsgSPbinAS(unsigned int nx_D, unsigned int ny_D, unsigned int nz_D, int startoffx_D, int startoffy_D, int startoffz_D,
 						unsigned int nnx_D, unsigned int nny_D, unsigned int nnz_D, unsigned int start_z, unsigned int end_z, std::string& fname,
-						unsigned int*   bcMatH, int*   bcMatHFull, doubflo* vxH_D, doubflo* vyH_D, doubflo* vzH_D, doubflo* rhoH_D, doubflo* pressH_D, 
-						doubflo v_ratio_D, doubflo rho_ratio_D, 
-						doubflo startx_D, doubflo starty_D, doubflo startz_D, doubflo deltax_D, 
-						doubflo *coordX, doubflo *coordY, doubflo *coordZ)
+						unsigned int*   bcMatH, int*   bcMatHFull, real* vxH_D, real* vyH_D, real* vzH_D, real* rhoH_D, real* pressH_D, 
+						real v_ratio_D, real rho_ratio_D, 
+						real startx_D, real starty_D, real startz_D, real deltax_D, 
+						real *coordX, real *coordY, real *coordZ)
  {
 	 //Test 
-	 DOUBFLO* /*float* double**/ vxH      = vxH_D      ;
-	 DOUBFLO* /*float* double**/ vyH      = vyH_D      ;
-	 DOUBFLO* /*float* double**/ vzH      = vzH_D      ;
-	 DOUBFLO* /*float* double**/ rhoH     = rhoH_D     ;
-	 DOUBFLO* /*float* double**/ pressH   = pressH_D   ;
+	 real* /*float* double**/ vxH      = vxH_D      ;
+	 real* /*float* double**/ vyH      = vyH_D      ;
+	 real* /*float* double**/ vzH      = vzH_D      ;
+	 real* /*float* double**/ rhoH     = rhoH_D     ;
+	 real* /*float* double**/ pressH   = pressH_D   ;
 	 float  v_ratio  = (float)v_ratio_D  ;
 	 float  rho_ratio= (float)rho_ratio_D;
 	 float  startx   = (float)startx_D   ;
@@ -931,17 +931,17 @@ void writeVTKsgThS(unsigned int nx, unsigned int ny, unsigned int nz, int starto
 
  void writeVTKmedSPbinAS(unsigned int nx_D, unsigned int ny_D, unsigned int nz_D, int startoffx_D, int startoffy_D, int startoffz_D,
 						 unsigned int nnx_D, unsigned int nny_D, unsigned int nnz_D, unsigned int start_z, unsigned int end_z, std::string& fname,
-						 unsigned int*   bcMatH, int*   bcMatHFull, doubflo* vxH_D, doubflo* vyH_D, doubflo* vzH_D, doubflo* rhoH_D, doubflo* pressH_D, 
-						 doubflo tdiff, doubflo v_ratio_D, doubflo rho_ratio_D, 
-						 doubflo startx_D, doubflo starty_D, doubflo startz_D, doubflo deltax_D, 
+						 unsigned int*   bcMatH, int*   bcMatHFull, real* vxH_D, real* vyH_D, real* vzH_D, real* rhoH_D, real* pressH_D, 
+						 real tdiff, real v_ratio_D, real rho_ratio_D, 
+						 real startx_D, real starty_D, real startz_D, real deltax_D, 
 						 unsigned int *coordX, unsigned int *coordY, unsigned int *coordZ)
  {
 	 //Test 
-	 DOUBFLO* /*float* double**/ vxH      = vxH_D      ;
-	 DOUBFLO* /*float* double**/ vyH      = vyH_D      ;
-	 DOUBFLO* /*float* double**/ vzH      = vzH_D      ;
-	 DOUBFLO* /*float* double**/ rhoH     = rhoH_D     ;
-	 DOUBFLO* /*float* double**/ pressH   = pressH_D   ;
+	 real* /*float* double**/ vxH      = vxH_D      ;
+	 real* /*float* double**/ vyH      = vyH_D      ;
+	 real* /*float* double**/ vzH      = vzH_D      ;
+	 real* /*float* double**/ rhoH     = rhoH_D     ;
+	 real* /*float* double**/ pressH   = pressH_D   ;
 	 float  v_ratio  = (float)v_ratio_D  ;
 	 float  rho_ratio= (float)rho_ratio_D;
 	 float  startx   = (float)startx_D   ;
diff --git a/src/VirtualFluids_GPU/Output/WriteData.cpp b/src/VirtualFluids_GPU/Output/WriteData.cpp
index 0674a4b94..3063a7440 100644
--- a/src/VirtualFluids_GPU/Output/WriteData.cpp
+++ b/src/VirtualFluids_GPU/Output/WriteData.cpp
@@ -11,8 +11,11 @@
 #include "Output/OffsetWriter.hpp"
 #include "Output/MeasurePointWriter.hpp"
 
+#include "Parameter/Parameter.h"
+
+
 ////////////////////////////////////////////////////////////////////////////////
-void writeInit(Parameter* para)
+void writeInit(SPtr<Parameter> para)
 {
 	for (int lev=para->getCoarse(); lev <= para->getFine(); lev++)
 	{
@@ -60,7 +63,7 @@ void writeInit(Parameter* para)
 		if (para->getDiffOn()==true)
 		{
 			//printf("vor writeUnstrucuredGridLTConc");
-			UnstrucuredGridWriter::writeUnstrucuredGridLTConc(para, lev, fname);
+			UnstrucuredGridWriter::writeUnstrucuredGridLTConc(para.get(), lev, fname);
 			//printf("nach writeUnstrucuredGridLTConc");
 			//VtkSGWriter::writeVTKsgThS(para->getParH(lev)->nx,      para->getParH(lev)->ny,     para->getParH(lev)->nz, STARTOFFX, STARTOFFY, STARTOFFZ, 
 			//                           para->getParH(lev)->gridNX,  para->getParH(lev)->gridNY, para->getParH(lev)->gridNZ, 
@@ -78,7 +81,7 @@ void writeInit(Parameter* para)
 
 			if (para->getUseWale())
 			{
-				UnstrucuredGridWriter::writeUnstrucuredGridLTwithTurbulentViscosity(para, lev, fname);
+				UnstrucuredGridWriter::writeUnstrucuredGridLTwithTurbulentViscosity(para.get(), lev, fname);
 			}
 			//else if (para->getSimulatePorousMedia())
 			//{
@@ -86,7 +89,7 @@ void writeInit(Parameter* para)
 			//}
 			else
 			{
-				UnstrucuredGridWriter::writeUnstrucuredGridLT(para, lev, fname);
+				UnstrucuredGridWriter::writeUnstrucuredGridLT(para.get(), lev, fname);
 			}
 
 			//Debug
@@ -314,7 +317,7 @@ void writeTimestep(Parameter* para, unsigned int t)
 			//if (((int)t > para->getTimeCalcMedStart()) && ((int)t <= para->getTimeCalcMedEnd()))
 			//{
 			// //Median
-			// doubflo tdiff = (doubflo)t - (doubflo)t_prev;
+			// real tdiff = (real)t - (real)t_prev;
 			// VtkSGWriter::writeVTKmedSPbin(para->getParH(lev)->nx,           para->getParH(lev)->ny,         para->getParH(lev)->nz,         STARTOFFX, STARTOFFY, STARTOFFZ, 
 			//									    para->getParH(lev)->gridNX,       para->getParH(lev)->gridNY,     para->getParH(lev)->gridNZ, 
 			//									    para->getParH(lev)->startz,       para->getParH(lev)->endz,       ffname_bin_med,                 para->getParH(lev)->geoSP,  para->getParH(lev)->geo,    
diff --git a/src/VirtualFluids_GPU/Output/WriteData.h b/src/VirtualFluids_GPU/Output/WriteData.h
index e83022c8f..d0b29e46f 100644
--- a/src/VirtualFluids_GPU/Output/WriteData.h
+++ b/src/VirtualFluids_GPU/Output/WriteData.h
@@ -1,14 +1,12 @@
 #ifndef WRITE_DATA_H
 #define WRITE_DATA_H
 
-#include "Parameter/Parameter.h"
-#include "Utilities/StringUtil.hpp"
-#include "Communication/Communicator.h"
+#include <core/PointerDefinitions.h>
 
-#include <iostream>
+class Parameter;
 
-extern "C" void writeInit(Parameter* para);
-extern "C" void writeTimestep(Parameter* para, unsigned int t);
-extern "C" void writeParticle(Parameter* para, unsigned int t);
+void writeInit(SPtr<Parameter> para);
+void writeTimestep(Parameter* para, unsigned int t);
+void writeParticle(Parameter* para, unsigned int t);
 
 #endif
diff --git a/src/VirtualFluids_GPU/Parameter/Parameter.cpp b/src/VirtualFluids_GPU/Parameter/Parameter.cpp
index 3566268c2..fbebf5f35 100644
--- a/src/VirtualFluids_GPU/Parameter/Parameter.cpp
+++ b/src/VirtualFluids_GPU/Parameter/Parameter.cpp
@@ -12,6 +12,10 @@
 //#endif
 //lib for windows Ws2_32.lib
 
+SPtr<Parameter> Parameter::make()
+{
+    return SPtr<Parameter>(new Parameter());
+}
 
 Parameter::Parameter()
 {
@@ -52,56 +56,56 @@ void Parameter::initParameter()
 		parH[i]->sizePlaneXY           = parH[i]->nx * parH[i]->ny;
 		parH[i]->sizePlaneYZ           = parH[i]->ny * parH[i]->nz;
 		parH[i]->sizePlaneXZ           = parH[i]->nx * parH[i]->nz;
-		parH[i]->mem_size_doubflo      = sizeof(doubflo     ) * parH[i]->size_Mat;
+		parH[i]->mem_size_real      = sizeof(real     ) * parH[i]->size_Mat;
 		parH[i]->mem_size_int          = sizeof(unsigned int) * parH[i]->size_Mat;
 		parH[i]->mem_size_bool         = sizeof(bool        ) * parH[i]->size_Mat;
-		parH[i]->mem_size_doubflo_yz   = sizeof(doubflo     ) * parH[i]->ny * parH[i]->nz;
+		parH[i]->mem_size_real_yz   = sizeof(real     ) * parH[i]->ny * parH[i]->nz;
 		parH[i]->evenOrOdd             = true;
 		parH[i]->startz                = parH[i]->gridNZ * ic.myid;
 		parH[i]->endz                  = parH[i]->gridNZ * ic.myid + parH[i]->gridNZ;
-		parH[i]->Lx                    = (doubflo)((1.f*parH[i]->gridNX - 1.f)/(pow(2.f,i)));
-		parH[i]->Ly                    = (doubflo)((1.f*parH[i]->gridNY - 1.f)/(pow(2.f,i)));
-		parH[i]->Lz                    = (doubflo)((1.f*parH[i]->gridNZ - 1.f)/(pow(2.f,i)));
-		parH[i]->dx                    = (doubflo)(1.f/(pow(2.f,i)));
+		parH[i]->Lx                    = (real)((1.f*parH[i]->gridNX - 1.f)/(pow(2.f,i)));
+		parH[i]->Ly                    = (real)((1.f*parH[i]->gridNY - 1.f)/(pow(2.f,i)));
+		parH[i]->Lz                    = (real)((1.f*parH[i]->gridNZ - 1.f)/(pow(2.f,i)));
+		parH[i]->dx                    = (real)(1.f/(pow(2.f,i)));
 		parH[i]->XdistKn               = getDistX().at(i);
 		parH[i]->YdistKn               = getDistY().at(i);
 		parH[i]->ZdistKn               = getDistZ().at(i);
 		if (i==coarse)
 		{
-			parH[i]->distX                 = (doubflo)getDistX().at(i);
-			parH[i]->distY                 = (doubflo)getDistY().at(i);
-			parH[i]->distZ                 = (doubflo)getDistZ().at(i);
-			parH[i]->mTtoWx                = (doubflo)1.0f;
-			parH[i]->mTtoWy                = (doubflo)1.0f;
-			parH[i]->mTtoWz                = (doubflo)1.0f;
-			parH[i]->cTtoWx                = (doubflo)0.0f;
-			parH[i]->cTtoWy                = (doubflo)0.0f;
-			parH[i]->cTtoWz                = (doubflo)0.0f;
+			parH[i]->distX                 = (real)getDistX().at(i);
+			parH[i]->distY                 = (real)getDistY().at(i);
+			parH[i]->distZ                 = (real)getDistZ().at(i);
+			parH[i]->mTtoWx                = (real)1.0f;
+			parH[i]->mTtoWy                = (real)1.0f;
+			parH[i]->mTtoWz                = (real)1.0f;
+			parH[i]->cTtoWx                = (real)0.0f;
+			parH[i]->cTtoWy                = (real)0.0f;
+			parH[i]->cTtoWz                = (real)0.0f;
 			////MGs Trafo///////////////////////////////////////////////////////////////
-			//parH[i]->cStartx               = (doubflo)parH[i]->XdistKn;
-			//parH[i]->cStarty               = (doubflo)parH[i]->XdistKn;
-			//parH[i]->cStartz               = (doubflo)parH[i]->XdistKn;
+			//parH[i]->cStartx               = (real)parH[i]->XdistKn;
+			//parH[i]->cStarty               = (real)parH[i]->XdistKn;
+			//parH[i]->cStartz               = (real)parH[i]->XdistKn;
 			////////////////////////////////////////////////////////////////////////////
 		} 
 		else
 		{
 			//Geller
-			parH[i]->distX                 = ((doubflo)getDistX().at(i) + 0.25f) * parH[i-1]->dx;
-			parH[i]->distY                 = ((doubflo)getDistY().at(i) + 0.25f) * parH[i-1]->dx;
-			parH[i]->distZ                 = ((doubflo)getDistZ().at(i) + 0.25f) * parH[i-1]->dx;
-			//parH[i]->distX                 = ((doubflo)getDistX().at(i) + 0.25f) * parH[i-1]->dx + parH[i-1]->distX;
-			//parH[i]->distY                 = ((doubflo)getDistY().at(i) + 0.25f) * parH[i-1]->dx + parH[i-1]->distY;
-			//parH[i]->distZ                 = ((doubflo)getDistZ().at(i) + 0.25f) * parH[i-1]->dx + parH[i-1]->distZ;
-			parH[i]->mTtoWx                = (doubflo)pow(0.5f,i);
-			parH[i]->mTtoWy                = (doubflo)pow(0.5f,i);
-			parH[i]->mTtoWz                = (doubflo)pow(0.5f,i);
-			parH[i]->cTtoWx                = (doubflo)(STARTOFFX/2.f + (parH[i]->gridNX+1.f)/4.f); //funzt nur für zwei level
-			parH[i]->cTtoWy                = (doubflo)(STARTOFFY/2.f + (parH[i]->gridNY+1.f)/4.f); //funzt nur für zwei level
-			parH[i]->cTtoWz                = (doubflo)(STARTOFFZ/2.f + (parH[i]->gridNZ+1.f)/4.f); //funzt nur für zwei level
+			parH[i]->distX                 = ((real)getDistX().at(i) + 0.25f) * parH[i-1]->dx;
+			parH[i]->distY                 = ((real)getDistY().at(i) + 0.25f) * parH[i-1]->dx;
+			parH[i]->distZ                 = ((real)getDistZ().at(i) + 0.25f) * parH[i-1]->dx;
+			//parH[i]->distX                 = ((real)getDistX().at(i) + 0.25f) * parH[i-1]->dx + parH[i-1]->distX;
+			//parH[i]->distY                 = ((real)getDistY().at(i) + 0.25f) * parH[i-1]->dx + parH[i-1]->distY;
+			//parH[i]->distZ                 = ((real)getDistZ().at(i) + 0.25f) * parH[i-1]->dx + parH[i-1]->distZ;
+			parH[i]->mTtoWx                = (real)pow(0.5f,i);
+			parH[i]->mTtoWy                = (real)pow(0.5f,i);
+			parH[i]->mTtoWz                = (real)pow(0.5f,i);
+			parH[i]->cTtoWx                = (real)(STARTOFFX/2.f + (parH[i]->gridNX+1.f)/4.f); //funzt nur für zwei level
+			parH[i]->cTtoWy                = (real)(STARTOFFY/2.f + (parH[i]->gridNY+1.f)/4.f); //funzt nur für zwei level
+			parH[i]->cTtoWz                = (real)(STARTOFFZ/2.f + (parH[i]->gridNZ+1.f)/4.f); //funzt nur für zwei level
 			////MGs Trafo///////////////////////////////////////////////////////////////
-			//parH[i]->cStartx               = (doubflo)parH[i]->XdistKn;
-			//parH[i]->cStarty               = (doubflo)parH[i]->XdistKn;
-			//parH[i]->cStartz               = (doubflo)parH[i]->XdistKn;
+			//parH[i]->cStartx               = (real)parH[i]->XdistKn;
+			//parH[i]->cStarty               = (real)parH[i]->XdistKn;
+			//parH[i]->cStartz               = (real)parH[i]->XdistKn;
 			////////////////////////////////////////////////////////////////////////////
 		}
 		parH[i]->need_interface[INTERFACE_E]=getNeedInterface().at(INTERFACE_E);
@@ -130,10 +134,10 @@ void Parameter::initParameter()
 		parD[i]->sizePlaneXY           = parH[i]->sizePlaneXY;
 		parD[i]->sizePlaneYZ           = parH[i]->sizePlaneYZ;
 		parD[i]->sizePlaneXZ           = parH[i]->sizePlaneXZ;
-		parD[i]->mem_size_doubflo      = sizeof(doubflo     ) * parD[i]->size_Mat;
+		parD[i]->mem_size_real      = sizeof(real     ) * parD[i]->size_Mat;
 		parD[i]->mem_size_int          = sizeof(unsigned int) * parD[i]->size_Mat;
 		parD[i]->mem_size_bool         = sizeof(bool        ) * parD[i]->size_Mat;
-		parD[i]->mem_size_doubflo_yz   = sizeof(doubflo     ) * parD[i]->ny * parD[i]->nz;
+		parD[i]->mem_size_real_yz   = sizeof(real     ) * parD[i]->ny * parD[i]->nz;
 		parD[i]->evenOrOdd             = parH[i]->evenOrOdd;
 		parD[i]->startz                = parH[i]->startz;
 		parD[i]->endz                  = parH[i]->endz;
@@ -241,18 +245,18 @@ void Parameter::setSizeMatSparse(int level)
 			}
 		}
 	}
-	parH[level]->mem_size_doubflo_SP    = sizeof(doubflo     ) * parH[level]->size_Mat_SP;
+	parH[level]->mem_size_real_SP    = sizeof(real     ) * parH[level]->size_Mat_SP;
 	parH[level]->mem_size_int_SP        = sizeof(unsigned int) * parH[level]->size_Mat_SP;
-	parD[level]->mem_size_doubflo_SP    = sizeof(doubflo     ) * parD[level]->size_Mat_SP;
+	parD[level]->mem_size_real_SP    = sizeof(real     ) * parD[level]->size_Mat_SP;
 	parD[level]->mem_size_int_SP        = sizeof(unsigned int) * parD[level]->size_Mat_SP;
 }
 void Parameter::fillSparse(int level)
 {
 	unsigned int li = ((parH[level]->gridNX+STARTOFFX-2)-(STARTOFFX+1)-1);
 	unsigned int lj = ((parH[level]->gridNY+STARTOFFY-2)-(STARTOFFY+1)-1);
-	doubflo globalX, globalY, globalZ;
-	//doubflo InitglobalX, InitglobalY, InitglobalZ;
-	doubflo PI = 3.141592653589793238462643383279f;
+	real globalX, globalY, globalZ;
+	//real InitglobalX, InitglobalY, InitglobalZ;
+	real PI = 3.141592653589793238462643383279f;
 
 	for (unsigned int k=1; k<parH[level]->gridNZ + 2 * STARTOFFZ - 1; k++)
 	{
@@ -309,69 +313,69 @@ void Parameter::fillSparse(int level)
 				//   if(   i == parH[level]->gridNX/2 + STARTOFFX
 				//      && j == parH[level]->gridNY/2 + STARTOFFY 
 				//      && k == parH[level]->gridNZ/2 + STARTOFFZ) 
-				//      parH[level]->rho_SP[parH[level]->k[m]]       = (doubflo)0.1f;             
+				//      parH[level]->rho_SP[parH[level]->k[m]]       = (real)0.1f;             
 				//   else 
-				//      parH[level]->rho_SP[parH[level]->k[m]]       = (doubflo)0.0f;
+				//      parH[level]->rho_SP[parH[level]->k[m]]       = (real)0.0f;
 				//} 
 				//else
 				//{
-				//   parH[level]->rho_SP[parH[level]->k[m]]       = (doubflo)0.0f;
+				//   parH[level]->rho_SP[parH[level]->k[m]]       = (real)0.0f;
 				//}
 				globalX = TrafoXtoWorld(i,level);
 				globalY = TrafoYtoWorld(j,level);
 				globalZ = TrafoZtoWorld(k,level);
 				//without setting a pressure
-				parH[level]->rho_SP[parH[level]->k[m]]       = (doubflo)0.0f;       //parH[level]->Conc_Full[m];//bitte schnell wieder entfernen!!!
+				parH[level]->rho_SP[parH[level]->k[m]]       = (real)0.0f;       //parH[level]->Conc_Full[m];//bitte schnell wieder entfernen!!!
 				//////////////////////////////////////////////////////////////////////////
-				parH[level]->vx_SP[parH[level]->k[m]]        = (doubflo)0.0f;
+				parH[level]->vx_SP[parH[level]->k[m]]        = (real)0.0f;
 				//parH[level]->vx_SP[parH[level]->k[m]]        = u0/3.0;
-				parH[level]->vy_SP[parH[level]->k[m]]        = (doubflo)0.0f;
+				parH[level]->vy_SP[parH[level]->k[m]]        = (real)0.0f;
 				//parH[level]->vy_SP[parH[level]->k[m]]        = u0/3.0;
-				parH[level]->vz_SP[parH[level]->k[m]]        = (doubflo)0.0f;
+				parH[level]->vz_SP[parH[level]->k[m]]        = (real)0.0f;
 				//parH[level]->vz_SP[parH[level]->k[m]]        = u0/3.0;
-				//parH[level]->vz_SP[parH[level]->k[m]]        = (doubflo)(u0*2.f)*((-4.f*globalX*globalX + parH[level]->gridNX*(-2.f - 4.f*STARTOFFX) - 4.f*(-1.5f + STARTOFFX)*(0.5f + STARTOFFX) + globalX*(-4.f + 4.f*parH[level]->gridNX + 8.f*STARTOFFX))*(-4.f*globalY*globalY + parH[level]->gridNY*(-2.f - 4.f*STARTOFFY) - 4.f*(-1.5f + STARTOFFY)*(0.5f + STARTOFFY) + globalY*(-4.f + 4.f*parH[level]->gridNY + 8.f*STARTOFFY)))/((2.f - parH[level]->gridNX)*(2.f - parH[level]->gridNX)*(2.f - parH[level]->gridNY)*(2.f - parH[level]->gridNY));
-				//parH[level]->vz_SP[parH[level]->k[m]]        = (doubflo)(u0*2.f)*((-4.f*i*i + parH[level]->gridNX*(-2.f - 4.f*STARTOFFX) - 4.f*(-1.5f + STARTOFFX)*(0.5f + STARTOFFX) + i*(-4.f + 4.f*parH[level]->gridNX + 8.f*STARTOFFX))*(-4.f*j*j + parH[level]->gridNY*(-2.f - 4.f*STARTOFFY) - 4.f*(-1.5f + STARTOFFY)*(0.5f + STARTOFFY) + j*(-4.f + 4.f*parH[level]->gridNY + 8.f*STARTOFFY)))/((2.f - parH[level]->gridNX)*(2.f - parH[level]->gridNX)*(2.f - parH[level]->gridNY)*(2.f - parH[level]->gridNY));
-				//parH[level]->vz_SP[parH[level]->k[m]]        = (doubflo)(16.f*(u0*2.f)*(i-(STARTOFFX+1)-0.5f)*(li-1.5f-(i-(STARTOFFX+1)))*(j-(STARTOFFY+1)-0.5f)*(lj-1.5f-(j-(STARTOFFY+1))))/(li*lj*li*lj);//(16.f*(u0*2.f)*i*j*(parH[level]->nx-i)*(parH[level]->ny-j))/(parH[level]->nx*parH[level]->nx*parH[level]->ny*parH[level]->ny); //u0;
+				//parH[level]->vz_SP[parH[level]->k[m]]        = (real)(u0*2.f)*((-4.f*globalX*globalX + parH[level]->gridNX*(-2.f - 4.f*STARTOFFX) - 4.f*(-1.5f + STARTOFFX)*(0.5f + STARTOFFX) + globalX*(-4.f + 4.f*parH[level]->gridNX + 8.f*STARTOFFX))*(-4.f*globalY*globalY + parH[level]->gridNY*(-2.f - 4.f*STARTOFFY) - 4.f*(-1.5f + STARTOFFY)*(0.5f + STARTOFFY) + globalY*(-4.f + 4.f*parH[level]->gridNY + 8.f*STARTOFFY)))/((2.f - parH[level]->gridNX)*(2.f - parH[level]->gridNX)*(2.f - parH[level]->gridNY)*(2.f - parH[level]->gridNY));
+				//parH[level]->vz_SP[parH[level]->k[m]]        = (real)(u0*2.f)*((-4.f*i*i + parH[level]->gridNX*(-2.f - 4.f*STARTOFFX) - 4.f*(-1.5f + STARTOFFX)*(0.5f + STARTOFFX) + i*(-4.f + 4.f*parH[level]->gridNX + 8.f*STARTOFFX))*(-4.f*j*j + parH[level]->gridNY*(-2.f - 4.f*STARTOFFY) - 4.f*(-1.5f + STARTOFFY)*(0.5f + STARTOFFY) + j*(-4.f + 4.f*parH[level]->gridNY + 8.f*STARTOFFY)))/((2.f - parH[level]->gridNX)*(2.f - parH[level]->gridNX)*(2.f - parH[level]->gridNY)*(2.f - parH[level]->gridNY));
+				//parH[level]->vz_SP[parH[level]->k[m]]        = (real)(16.f*(u0*2.f)*(i-(STARTOFFX+1)-0.5f)*(li-1.5f-(i-(STARTOFFX+1)))*(j-(STARTOFFY+1)-0.5f)*(lj-1.5f-(j-(STARTOFFY+1))))/(li*lj*li*lj);//(16.f*(u0*2.f)*i*j*(parH[level]->nx-i)*(parH[level]->ny-j))/(parH[level]->nx*parH[level]->nx*parH[level]->ny*parH[level]->ny); //u0;
 				//////////////////////////////////////////////////////////////////////////
 				////gerade
-				//parH[level]->vx_SP[parH[level]->k[m]] = (doubflo)((32. * 32. * 3.) / (1000.*(doubflo)parH[level]->gridNX));//(doubflo)parH[level]->gridNX / (doubflo)1000 * 3.0;
-				//parH[level]->vy_SP[parH[level]->k[m]] = (doubflo)((getVelocity() * sin(2.0 * i / parH[level]->gridNX * PI) * cos(2.0 * k / parH[level]->gridNZ * PI)) * (32. / (doubflo)parH[level]->gridNX));
-				//parH[level]->vz_SP[parH[level]->k[m]] = (doubflo)0.0f;
+				//parH[level]->vx_SP[parH[level]->k[m]] = (real)((32. * 32. * 3.) / (1000.*(real)parH[level]->gridNX));//(real)parH[level]->gridNX / (real)1000 * 3.0;
+				//parH[level]->vy_SP[parH[level]->k[m]] = (real)((getVelocity() * sin(2.0 * i / parH[level]->gridNX * PI) * cos(2.0 * k / parH[level]->gridNZ * PI)) * (32. / (real)parH[level]->gridNX));
+				//parH[level]->vz_SP[parH[level]->k[m]] = (real)0.0f;
 				//schräg x
-				// 			parH[level]->vx_SP[parH[level]->k[m]]        = (doubflo)((32. * 32. * 3.)/(1000.*(doubflo)parH[level]->gridNX) + (getVelocity() * cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI))));
-				// 			parH[level]->vy_SP[parH[level]->k[m]]        = (doubflo)0.0;
-				// 			parH[level]->vz_SP[parH[level]->k[m]]        = (doubflo)(getVelocity() * cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI)));
+				// 			parH[level]->vx_SP[parH[level]->k[m]]        = (real)((32. * 32. * 3.)/(1000.*(real)parH[level]->gridNX) + (getVelocity() * cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI))));
+				// 			parH[level]->vy_SP[parH[level]->k[m]]        = (real)0.0;
+				// 			parH[level]->vz_SP[parH[level]->k[m]]        = (real)(getVelocity() * cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI)));
 				//schräg z
-				//parH[level]->vx_SP[parH[level]->k[m]]        = (doubflo)(getVelocity() * std::cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI)));
-				//parH[level]->vy_SP[parH[level]->k[m]]        = (doubflo)0.0;
-				//parH[level]->vz_SP[parH[level]->k[m]]        = (doubflo)((32. * 32. * 3.)/(1000.*(doubflo)parH[level]->gridNZ) + (getVelocity() * std::cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI))));
+				//parH[level]->vx_SP[parH[level]->k[m]]        = (real)(getVelocity() * std::cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI)));
+				//parH[level]->vy_SP[parH[level]->k[m]]        = (real)0.0;
+				//parH[level]->vz_SP[parH[level]->k[m]]        = (real)((32. * 32. * 3.)/(1000.*(real)parH[level]->gridNZ) + (getVelocity() * std::cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI))));
 
 				  			//Taylor Green Vortex uniform
-				  			parH[level]->rho_SP[parH[level]->k[m]]       = (doubflo)((getVelocity()*getVelocity())*3.0/4.0*(cos((i)*4.0*PI/(doubflo)parH[level]->gridNX)+cos((k)*4.0*PI/(doubflo)parH[level]->gridNZ)))*(doubflo)(parH[level]->gridNZ)/(doubflo)(parH[level]->gridNX);
+				  			parH[level]->rho_SP[parH[level]->k[m]]       = (real)((getVelocity()*getVelocity())*3.0/4.0*(cos((i)*4.0*PI/(real)parH[level]->gridNX)+cos((k)*4.0*PI/(real)parH[level]->gridNZ)))*(real)(parH[level]->gridNZ)/(real)(parH[level]->gridNX);
 				  			//inkl. überlagerter Geschwindigkeit
-				  // 			parH[level]->vx_SP[parH[level]->k[m]]        = (doubflo)((32. * 32. * 3.)/(1000.*(doubflo)parH[level]->gridNX) + getVelocity()*sin(((i)*2.0*PI/(doubflo)parH[level]->gridNX))*cos((k)*2.0*PI/(doubflo)parH[level]->gridNZ));
-				  			parH[level]->vx_SP[parH[level]->k[m]]        = (doubflo)((32. * 32. * 3.)/(1000. * 32.) * getVelocity() / 0.001 + getVelocity()*sin(((i)*2.0*PI/(doubflo)parH[level]->gridNX))*cos((k)*2.0*PI/(doubflo)parH[level]->gridNZ));
+				  // 			parH[level]->vx_SP[parH[level]->k[m]]        = (real)((32. * 32. * 3.)/(1000.*(real)parH[level]->gridNX) + getVelocity()*sin(((i)*2.0*PI/(real)parH[level]->gridNX))*cos((k)*2.0*PI/(real)parH[level]->gridNZ));
+				  			parH[level]->vx_SP[parH[level]->k[m]]        = (real)((32. * 32. * 3.)/(1000. * 32.) * getVelocity() / 0.001 + getVelocity()*sin(((i)*2.0*PI/(real)parH[level]->gridNX))*cos((k)*2.0*PI/(real)parH[level]->gridNZ));
 				  			//ohne überlagerter Geschwindigkeit
-				  //			parH[level]->vx_SP[parH[level]->k[m]]        = (doubflo)(getVelocity()*sin(((i)*2.0*PI/(doubflo)parH[level]->gridNX))*cos((k)*2.0*PI/(doubflo)parH[level]->gridNZ));
-				  			parH[level]->vy_SP[parH[level]->k[m]]        = (doubflo)0.0;
-				  			parH[level]->vz_SP[parH[level]->k[m]]        = (doubflo)(-getVelocity()*cos(((i)*2.0*PI/(doubflo)parH[level]->gridNX))*sin((k)*2.0*PI/(doubflo)parH[level]->gridNZ))*(doubflo)(parH[level]->gridNZ)/(doubflo)(parH[level]->gridNX);            
+				  //			parH[level]->vx_SP[parH[level]->k[m]]        = (real)(getVelocity()*sin(((i)*2.0*PI/(real)parH[level]->gridNX))*cos((k)*2.0*PI/(real)parH[level]->gridNZ));
+				  			parH[level]->vy_SP[parH[level]->k[m]]        = (real)0.0;
+				  			parH[level]->vz_SP[parH[level]->k[m]]        = (real)(-getVelocity()*cos(((i)*2.0*PI/(real)parH[level]->gridNX))*sin((k)*2.0*PI/(real)parH[level]->gridNZ))*(real)(parH[level]->gridNZ)/(real)(parH[level]->gridNX);            
 
 				//Kernel Fix Test
-				//parH[level]->vx_SP[parH[level]->k[m]]        = (doubflo)((32. * 32. * 3.)/(1000.*(doubflo)parH[level]->gridNX) + (getVelocity() * std::cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI))));
-				//parH[level]->vy_SP[parH[level]->k[m]]        = (doubflo)0.0;
-				//parH[level]->vz_SP[parH[level]->k[m]]        = (doubflo)(getVelocity() * std::cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI)));
-				////parH[level]->vx_SP[parH[level]->k[m]]        = (doubflo)(getVelocity() * std::cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI)));
-				////parH[level]->vy_SP[parH[level]->k[m]]        = (doubflo)0.0;
-				////parH[level]->vz_SP[parH[level]->k[m]]        = (doubflo)((32. * 32. * 3.)/(1000.*(doubflo)parH[level]->gridNZ) + (getVelocity() * std::cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI))));
+				//parH[level]->vx_SP[parH[level]->k[m]]        = (real)((32. * 32. * 3.)/(1000.*(real)parH[level]->gridNX) + (getVelocity() * std::cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI))));
+				//parH[level]->vy_SP[parH[level]->k[m]]        = (real)0.0;
+				//parH[level]->vz_SP[parH[level]->k[m]]        = (real)(getVelocity() * std::cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI)));
+				////parH[level]->vx_SP[parH[level]->k[m]]        = (real)(getVelocity() * std::cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI)));
+				////parH[level]->vy_SP[parH[level]->k[m]]        = (real)0.0;
+				////parH[level]->vz_SP[parH[level]->k[m]]        = (real)((32. * 32. * 3.)/(1000.*(real)parH[level]->gridNZ) + (getVelocity() * std::cos((2.0 * k / parH[level]->gridNZ * PI) + (2.0 * i / parH[level]->gridNX * PI))));
 				//////////////////////////////////////////////////////////////////////////
 				//Taylor Green Vortex
 				//InitglobalX = TrafoXtoMGsWorld(i,level);
 				//InitglobalY = TrafoYtoMGsWorld(j,level);
 				//InitglobalZ = TrafoZtoMGsWorld(k,level);
-				//parH[level]->rho_SP[parH[level]->k[m]]       = (doubflo)((u0*u0)*3.f/4.f*(cos((InitglobalX)*4.f*PI/parH[level]->gridNX)+cos((InitglobalY)*4.f*PI/parH[level]->gridNY)));
-				//parH[level]->vx_SP[parH[level]->k[m]]        = (doubflo)( u0*sin(((InitglobalX)*2.f*PI/parH[level]->gridNX))*cos((InitglobalY)*2.f*PI/parH[level]->gridNY));
-				//parH[level]->vy_SP[parH[level]->k[m]]        = (doubflo)(-u0*cos(((InitglobalX)*2.f*PI/parH[level]->gridNX))*sin((InitglobalY)*2.f*PI/parH[level]->gridNY));
-				//parH[level]->vz_SP[parH[level]->k[m]]        = (doubflo)0.0f;            
+				//parH[level]->rho_SP[parH[level]->k[m]]       = (real)((u0*u0)*3.f/4.f*(cos((InitglobalX)*4.f*PI/parH[level]->gridNX)+cos((InitglobalY)*4.f*PI/parH[level]->gridNY)));
+				//parH[level]->vx_SP[parH[level]->k[m]]        = (real)( u0*sin(((InitglobalX)*2.f*PI/parH[level]->gridNX))*cos((InitglobalY)*2.f*PI/parH[level]->gridNY));
+				//parH[level]->vy_SP[parH[level]->k[m]]        = (real)(-u0*cos(((InitglobalX)*2.f*PI/parH[level]->gridNX))*sin((InitglobalY)*2.f*PI/parH[level]->gridNY));
+				//parH[level]->vz_SP[parH[level]->k[m]]        = (real)0.0f;            
 				//////////////////////////////////////////////////////////////////////////
 			}
 		}
@@ -380,10 +384,10 @@ void Parameter::fillSparse(int level)
 	parH[level]->neighborY_SP[parH[level]->k[0]] = 0;
 	parH[level]->neighborZ_SP[parH[level]->k[0]] = 0;
 	parH[level]->geoSP[       parH[level]->k[0]] = GEO_VOID;
-	parH[level]->rho_SP[      parH[level]->k[0]] = (doubflo)0.f;
-	parH[level]->vx_SP[       parH[level]->k[0]] = (doubflo)0.f;
-	parH[level]->vy_SP[       parH[level]->k[0]] = (doubflo)0.f;
-	parH[level]->vz_SP[       parH[level]->k[0]] = (doubflo)0.f;
+	parH[level]->rho_SP[      parH[level]->k[0]] = (real)0.f;
+	parH[level]->vx_SP[       parH[level]->k[0]] = (real)0.f;
+	parH[level]->vy_SP[       parH[level]->k[0]] = (real)0.f;
+	parH[level]->vz_SP[       parH[level]->k[0]] = (real)0.f;
 	////////////////////////////////////////////////////////////////////////////
 	////Coordinates
 	//parH[level]->coordX_SP[parH[level]->k[0]]    = 0;
@@ -428,24 +432,24 @@ void Parameter::cudaFreeFull(int lev)
 void Parameter::cudaAllocCoord(int lev)
 {
 	//Host
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->coordX_SP      ), parH[lev]->mem_size_doubflo_SP  ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->coordY_SP      ), parH[lev]->mem_size_doubflo_SP  ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->coordZ_SP      ), parH[lev]->mem_size_doubflo_SP  ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->coordX_SP      ), parH[lev]->mem_size_real_SP  ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->coordY_SP      ), parH[lev]->mem_size_real_SP  ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->coordZ_SP      ), parH[lev]->mem_size_real_SP  ));
 	//Device (spinning ship)
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->coordX_SP      ), parH[lev]->mem_size_doubflo_SP  ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->coordY_SP      ), parH[lev]->mem_size_doubflo_SP  ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->coordZ_SP      ), parH[lev]->mem_size_doubflo_SP  ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->coordX_SP      ), parH[lev]->mem_size_real_SP  ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->coordY_SP      ), parH[lev]->mem_size_real_SP  ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->coordZ_SP      ), parH[lev]->mem_size_real_SP  ));
 	//////////////////////////////////////////////////////////////////////////
-	double tmp = 3. * (double)parH[lev]->mem_size_doubflo_SP;
+	double tmp = 3. * (double)parH[lev]->mem_size_real_SP;
 	setMemsizeGPU(tmp, false);
 	//printf("Coord = %f MB",tmp/1000000.);  
 }
 void Parameter::cudaCopyCoord(int lev)
 {
 	//copy host to device
-	checkCudaErrors( cudaMemcpy(parD[lev]->coordX_SP,  parH[lev]->coordX_SP,  parH[lev]->mem_size_doubflo_SP     , cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->coordY_SP,  parH[lev]->coordY_SP,  parH[lev]->mem_size_doubflo_SP     , cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->coordZ_SP,  parH[lev]->coordZ_SP,  parH[lev]->mem_size_doubflo_SP     , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->coordX_SP,  parH[lev]->coordX_SP,  parH[lev]->mem_size_real_SP     , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->coordY_SP,  parH[lev]->coordY_SP,  parH[lev]->mem_size_real_SP     , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->coordZ_SP,  parH[lev]->coordZ_SP,  parH[lev]->mem_size_real_SP     , cudaMemcpyHostToDevice));
 }
 void Parameter::cudaFreeCoord(int lev)
 {
@@ -456,19 +460,19 @@ void Parameter::cudaFreeCoord(int lev)
 //print
 void Parameter::cudaCopyPrint(int lev)
 {
-	checkCudaErrors( cudaMemcpy(parH[lev]->vx_SP   , parD[lev]->vx_SP   , parH[lev]->mem_size_doubflo_SP , cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->vy_SP   , parD[lev]->vy_SP   , parH[lev]->mem_size_doubflo_SP , cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->vz_SP   , parD[lev]->vz_SP   , parH[lev]->mem_size_doubflo_SP , cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->rho_SP  , parD[lev]->rho_SP  , parH[lev]->mem_size_doubflo_SP , cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->press_SP, parD[lev]->press_SP, parH[lev]->mem_size_doubflo_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->vx_SP   , parD[lev]->vx_SP   , parH[lev]->mem_size_real_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->vy_SP   , parD[lev]->vy_SP   , parH[lev]->mem_size_real_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->vz_SP   , parD[lev]->vz_SP   , parH[lev]->mem_size_real_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->rho_SP  , parD[lev]->rho_SP  , parH[lev]->mem_size_real_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->press_SP, parD[lev]->press_SP, parH[lev]->mem_size_real_SP , cudaMemcpyDeviceToHost));
 }
 void Parameter::cudaCopyMedianPrint(int lev)
 {
-	checkCudaErrors( cudaMemcpy(parH[lev]->vx_SP_Med   , parD[lev]->vx_SP_Med   , parH[lev]->mem_size_doubflo_SP , cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->vy_SP_Med   , parD[lev]->vy_SP_Med   , parH[lev]->mem_size_doubflo_SP , cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->vz_SP_Med   , parD[lev]->vz_SP_Med   , parH[lev]->mem_size_doubflo_SP , cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->rho_SP_Med  , parD[lev]->rho_SP_Med  , parH[lev]->mem_size_doubflo_SP , cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->press_SP_Med, parD[lev]->press_SP_Med, parH[lev]->mem_size_doubflo_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->vx_SP_Med   , parD[lev]->vx_SP_Med   , parH[lev]->mem_size_real_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->vy_SP_Med   , parD[lev]->vy_SP_Med   , parH[lev]->mem_size_real_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->vz_SP_Med   , parD[lev]->vz_SP_Med   , parH[lev]->mem_size_real_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->rho_SP_Med  , parD[lev]->rho_SP_Med  , parH[lev]->mem_size_real_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->press_SP_Med, parD[lev]->press_SP_Med, parH[lev]->mem_size_real_SP , cudaMemcpyDeviceToHost));
 }
 //sparse
 void Parameter::cudaAllocSP(int lev)
@@ -478,25 +482,25 @@ void Parameter::cudaAllocSP(int lev)
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->neighborX_SP    ), parH[lev]->mem_size_int_SP    ));
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->neighborY_SP    ), parH[lev]->mem_size_int_SP    ));
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->neighborZ_SP    ), parH[lev]->mem_size_int_SP    ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->rho_SP          ), parH[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vx_SP           ), parH[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vy_SP           ), parH[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vz_SP           ), parH[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->press_SP        ), parH[lev]->mem_size_doubflo_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->rho_SP          ), parH[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vx_SP           ), parH[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vy_SP           ), parH[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vz_SP           ), parH[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->press_SP        ), parH[lev]->mem_size_real_SP));
 	//Device						 
 	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->geoSP               ), parD[lev]->mem_size_int_SP    ));
 	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->neighborX_SP        ), parD[lev]->mem_size_int_SP    ));
 	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->neighborY_SP        ), parD[lev]->mem_size_int_SP    ));
 	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->neighborZ_SP        ), parD[lev]->mem_size_int_SP    ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->rho_SP              ), parD[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->vx_SP               ), parD[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->vy_SP               ), parD[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->vz_SP               ), parD[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->press_SP            ), parD[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->d0SP.f[0]           ), (unsigned long long)getD3Qxx()*(unsigned long long)parD[lev]->mem_size_doubflo_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->rho_SP              ), parD[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->vx_SP               ), parD[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->vy_SP               ), parD[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->vz_SP               ), parD[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->press_SP            ), parD[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->d0SP.f[0]           ), (unsigned long long)getD3Qxx()*(unsigned long long)parD[lev]->mem_size_real_SP));
 	//////////////////////////////////////////////////////////////////////////
-	//double tmp = 4. * (double)parH[lev]->mem_size_int_SP + 10. * (double)parH[lev]->mem_size_doubflo_SP + (double)getD3Qxx() * (double)parH[lev]->mem_size_doubflo_SP;
-	double tmp = 4. * (double)parH[lev]->mem_size_int_SP + 5. * (double)parH[lev]->mem_size_doubflo_SP + (double)getD3Qxx() * (double)parH[lev]->mem_size_doubflo_SP;
+	//double tmp = 4. * (double)parH[lev]->mem_size_int_SP + 10. * (double)parH[lev]->mem_size_real_SP + (double)getD3Qxx() * (double)parH[lev]->mem_size_real_SP;
+	double tmp = 4. * (double)parH[lev]->mem_size_int_SP + 5. * (double)parH[lev]->mem_size_real_SP + (double)getD3Qxx() * (double)parH[lev]->mem_size_real_SP;
 	setMemsizeGPU(tmp, false);
 
 	//int test = sizeof(int);
@@ -505,7 +509,7 @@ void Parameter::cudaAllocSP(int lev)
 	//printf("AlocSP = %f MB \n",tmp/1000000.);  
 	//int test = sizeof(float*);
 	//printf("float* = %d \n",test); 
-	//unsigned long long test2 = (unsigned long long)getD3Qxx()*(unsigned long long)parD[lev]->mem_size_doubflo_SP;
+	//unsigned long long test2 = (unsigned long long)getD3Qxx()*(unsigned long long)parD[lev]->mem_size_real_SP;
 	//test2 = test2 / 1000000000; 
 	//printf("test2 = %d \n",test2); 
 }
@@ -516,11 +520,11 @@ void Parameter::cudaCopySP(int lev)
 	checkCudaErrors( cudaMemcpy(parD[lev]->neighborX_SP,  parH[lev]->neighborX_SP,  parH[lev]->mem_size_int_SP     , cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->neighborY_SP,  parH[lev]->neighborY_SP,  parH[lev]->mem_size_int_SP     , cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->neighborZ_SP,  parH[lev]->neighborZ_SP,  parH[lev]->mem_size_int_SP     , cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->rho_SP      ,  parH[lev]->rho_SP      ,  parH[lev]->mem_size_doubflo_SP , cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->vx_SP       ,  parH[lev]->vx_SP       ,  parH[lev]->mem_size_doubflo_SP , cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->vy_SP       ,  parH[lev]->vy_SP       ,  parH[lev]->mem_size_doubflo_SP , cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->vz_SP       ,  parH[lev]->vz_SP       ,  parH[lev]->mem_size_doubflo_SP , cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->press_SP    ,  parH[lev]->press_SP    ,  parH[lev]->mem_size_doubflo_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->rho_SP      ,  parH[lev]->rho_SP      ,  parH[lev]->mem_size_real_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->vx_SP       ,  parH[lev]->vx_SP       ,  parH[lev]->mem_size_real_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->vy_SP       ,  parH[lev]->vy_SP       ,  parH[lev]->mem_size_real_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->vz_SP       ,  parH[lev]->vz_SP       ,  parH[lev]->mem_size_real_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->press_SP    ,  parH[lev]->press_SP    ,  parH[lev]->mem_size_real_SP , cudaMemcpyHostToDevice));
 }
 void Parameter::cudaFreeSP(int lev)
 {
@@ -538,9 +542,9 @@ void Parameter::cudaFreeSP(int lev)
 void Parameter::cudaAllocF3SP(int lev)
 {
 	//Device						 
-	checkCudaErrors(cudaMalloc((void**) &(parD[lev]->g6.g[0]), (unsigned long long)6*(unsigned long long)parD[lev]->mem_size_doubflo_SP));
+	checkCudaErrors(cudaMalloc((void**) &(parD[lev]->g6.g[0]), (unsigned long long)6*(unsigned long long)parD[lev]->mem_size_real_SP));
 	//////////////////////////////////////////////////////////////////////////
-	double tmp = (double)6 * (double)parH[lev]->mem_size_doubflo_SP;
+	double tmp = (double)6 * (double)parH[lev]->mem_size_real_SP;
 	setMemsizeGPU(tmp, false);
 }
 //negative neighbor (WSB)
@@ -567,22 +571,22 @@ void Parameter::cudaFreeNeighborWSB(int lev)
 void Parameter::cudaAllocTurbulentViscosity(int lev)
 {
 	//Host
-	checkCudaErrors(cudaMallocHost((void**) &(parH[lev]->turbViscosity), parH[lev]->mem_size_doubflo_SP));
+	checkCudaErrors(cudaMallocHost((void**) &(parH[lev]->turbViscosity), parH[lev]->mem_size_real_SP));
 	//Device						 
-	checkCudaErrors(cudaMalloc((void**) &(parD[lev]->turbViscosity), parD[lev]->mem_size_doubflo_SP));
+	checkCudaErrors(cudaMalloc((void**) &(parD[lev]->turbViscosity), parD[lev]->mem_size_real_SP));
 	//////////////////////////////////////////////////////////////////////////
-	double tmp = (double)parH[lev]->mem_size_doubflo_SP;
+	double tmp = (double)parH[lev]->mem_size_real_SP;
 	setMemsizeGPU(tmp, false);
 }
 void Parameter::cudaCopyTurbulentViscosityHD(int lev)
 {
 	//copy host to device
-	checkCudaErrors(cudaMemcpy(parD[lev]->turbViscosity, parH[lev]->turbViscosity, parH[lev]->mem_size_doubflo_SP, cudaMemcpyHostToDevice));
+	checkCudaErrors(cudaMemcpy(parD[lev]->turbViscosity, parH[lev]->turbViscosity, parH[lev]->mem_size_real_SP, cudaMemcpyHostToDevice));
 }
 void Parameter::cudaCopyTurbulentViscosityDH(int lev)
 {
 	//copy device to host
-	checkCudaErrors(cudaMemcpy(parH[lev]->turbViscosity, parD[lev]->turbViscosity, parH[lev]->mem_size_doubflo_SP, cudaMemcpyDeviceToHost));
+	checkCudaErrors(cudaMemcpy(parH[lev]->turbViscosity, parD[lev]->turbViscosity, parH[lev]->mem_size_real_SP, cudaMemcpyDeviceToHost));
 }
 void Parameter::cudaFreeTurbulentViscosity(int lev)
 {
@@ -592,29 +596,29 @@ void Parameter::cudaFreeTurbulentViscosity(int lev)
 void Parameter::cudaAllocMedianSP(int lev)
 {
 	//Host
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->rho_SP_Med      ), parH[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vx_SP_Med       ), parH[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vy_SP_Med       ), parH[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vz_SP_Med       ), parH[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->press_SP_Med    ), parH[lev]->mem_size_doubflo_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->rho_SP_Med      ), parH[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vx_SP_Med       ), parH[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vy_SP_Med       ), parH[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vz_SP_Med       ), parH[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->press_SP_Med    ), parH[lev]->mem_size_real_SP));
 	//Device						 
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->rho_SP_Med          ), parD[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->vx_SP_Med           ), parD[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->vy_SP_Med           ), parD[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->vz_SP_Med           ), parD[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->press_SP_Med        ), parD[lev]->mem_size_doubflo_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->rho_SP_Med          ), parD[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->vx_SP_Med           ), parD[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->vy_SP_Med           ), parD[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->vz_SP_Med           ), parD[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->press_SP_Med        ), parD[lev]->mem_size_real_SP));
 	//////////////////////////////////////////////////////////////////////////
-	double tmp = 5. * (double)parH[lev]->mem_size_doubflo_SP;
+	double tmp = 5. * (double)parH[lev]->mem_size_real_SP;
 	setMemsizeGPU(tmp, false);
 }
 void Parameter::cudaCopyMedianSP(int lev)
 {
 	//copy host to device
-	checkCudaErrors( cudaMemcpy(parD[lev]->rho_SP_Med  ,  parH[lev]->rho_SP_Med  ,  parH[lev]->mem_size_doubflo_SP , cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->vx_SP_Med   ,  parH[lev]->vx_SP_Med   ,  parH[lev]->mem_size_doubflo_SP , cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->vy_SP_Med   ,  parH[lev]->vy_SP_Med   ,  parH[lev]->mem_size_doubflo_SP , cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->vz_SP_Med   ,  parH[lev]->vz_SP_Med   ,  parH[lev]->mem_size_doubflo_SP , cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->press_SP_Med,  parH[lev]->press_SP_Med,  parH[lev]->mem_size_doubflo_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->rho_SP_Med  ,  parH[lev]->rho_SP_Med  ,  parH[lev]->mem_size_real_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->vx_SP_Med   ,  parH[lev]->vx_SP_Med   ,  parH[lev]->mem_size_real_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->vy_SP_Med   ,  parH[lev]->vy_SP_Med   ,  parH[lev]->mem_size_real_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->vz_SP_Med   ,  parH[lev]->vz_SP_Med   ,  parH[lev]->mem_size_real_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->press_SP_Med,  parH[lev]->press_SP_Med,  parH[lev]->mem_size_real_SP , cudaMemcpyHostToDevice));
 }
 void Parameter::cudaFreeMedianSP(int lev)
 {
@@ -627,11 +631,11 @@ void Parameter::cudaFreeMedianSP(int lev)
 void Parameter::cudaAllocMedianOut(int lev)
 {
 	//Host
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->rho_SP_Med_Out      ), parH[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vx_SP_Med_Out       ), parH[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vy_SP_Med_Out       ), parH[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vz_SP_Med_Out       ), parH[lev]->mem_size_doubflo_SP));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->press_SP_Med_Out    ), parH[lev]->mem_size_doubflo_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->rho_SP_Med_Out      ), parH[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vx_SP_Med_Out       ), parH[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vy_SP_Med_Out       ), parH[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->vz_SP_Med_Out       ), parH[lev]->mem_size_real_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->press_SP_Med_Out    ), parH[lev]->mem_size_real_SP));
 }
 void Parameter::cudaFreeMedianOut(int lev)
 {
@@ -752,9 +756,9 @@ void Parameter::cudaFreeInterfaceOffFC(int lev)
 void Parameter::cudaAllocVeloBC(int lev)
 {
 	unsigned int mem_size_inflow_Q_k = sizeof(int)*parH[lev]->Qinflow.kArray;
-	unsigned int mem_size_inflow_Q_q = sizeof(doubflo)*parH[lev]->Qinflow.kArray;
+	unsigned int mem_size_inflow_Q_q = sizeof(real)*parH[lev]->Qinflow.kArray;
 	//unsigned int mem_size_inflow_Q_k = sizeof(int)*parH[lev]->Qinflow.kQ;
-	//unsigned int mem_size_inflow_Q_q = sizeof(doubflo)*parH[lev]->Qinflow.kQ;
+	//unsigned int mem_size_inflow_Q_q = sizeof(real)*parH[lev]->Qinflow.kQ;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->Qinflow.q27[0]),  getD3Qxx()*mem_size_inflow_Q_q ));
@@ -780,9 +784,9 @@ void Parameter::cudaAllocVeloBC(int lev)
 void Parameter::cudaCopyVeloBC(int lev)
 {
 	unsigned int mem_size_inflow_Q_k = sizeof(int)*parH[lev]->Qinflow.kArray;
-	unsigned int mem_size_inflow_Q_q = sizeof(doubflo)*parH[lev]->Qinflow.kArray;
+	unsigned int mem_size_inflow_Q_q = sizeof(real)*parH[lev]->Qinflow.kArray;
 	//unsigned int mem_size_inflow_Q_k = sizeof(int)*parH[lev]->Qinflow.kQ;
-	//unsigned int mem_size_inflow_Q_q = sizeof(doubflo)*parH[lev]->Qinflow.kQ;
+	//unsigned int mem_size_inflow_Q_q = sizeof(real)*parH[lev]->Qinflow.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->Qinflow.q27[0],  parH[lev]->Qinflow.q27[0], getD3Qxx()* mem_size_inflow_Q_q,  cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->Qinflow.k,       parH[lev]->Qinflow.k,                  mem_size_inflow_Q_k,  cudaMemcpyHostToDevice));
@@ -805,7 +809,7 @@ void Parameter::cudaFreeVeloBC(int lev)
 void Parameter::cudaAllocOutflowBC(int lev)
 {
 	unsigned int mem_size_outflow_Q_k = sizeof(int)*parH[lev]->Qoutflow.kQ;
-	unsigned int mem_size_outflow_Q_q = sizeof(doubflo)*parH[lev]->Qoutflow.kQ;
+	unsigned int mem_size_outflow_Q_q = sizeof(real)*parH[lev]->Qoutflow.kQ;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->Qoutflow.q27[0]), getD3Qxx()*mem_size_outflow_Q_q ));
@@ -826,7 +830,7 @@ void Parameter::cudaAllocOutflowBC(int lev)
 void Parameter::cudaCopyOutflowBC(int lev)
 {
 	unsigned int mem_size_outflow_Q_k = sizeof(int)*parH[lev]->Qoutflow.kQ;
-	unsigned int mem_size_outflow_Q_q = sizeof(doubflo)*parH[lev]->Qoutflow.kQ;
+	unsigned int mem_size_outflow_Q_q = sizeof(real)*parH[lev]->Qoutflow.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->Qoutflow.q27[0],  parH[lev]->Qoutflow.q27[0], getD3Qxx()* mem_size_outflow_Q_q,  cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->Qoutflow.k,       parH[lev]->Qoutflow.k,                  mem_size_outflow_Q_k,  cudaMemcpyHostToDevice));
@@ -844,7 +848,7 @@ void Parameter::cudaFreeOutflowBC(int lev)
 void Parameter::cudaAllocInlet(int lev)
 {
 	unsigned int mem_size_inlet_Q_k = sizeof(int)*parH[lev]->QInlet.kQ;
-	unsigned int mem_size_inlet_Q_q = sizeof(doubflo)*parH[lev]->QInlet.kQ;
+	unsigned int mem_size_inlet_Q_q = sizeof(real)*parH[lev]->QInlet.kQ;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->QInlet.q27[0]), getD3Qxx()*mem_size_inlet_Q_q ));
@@ -865,7 +869,7 @@ void Parameter::cudaAllocInlet(int lev)
 void Parameter::cudaCopyInlet(int lev)
 {
 	unsigned int mem_size_inlet_Q_k = sizeof(int)*parH[lev]->QInlet.kQ;
-	unsigned int mem_size_inlet_Q_q = sizeof(doubflo)*parH[lev]->QInlet.kQ;
+	unsigned int mem_size_inlet_Q_q = sizeof(real)*parH[lev]->QInlet.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->QInlet.q27[0],  parH[lev]->QInlet.q27[0], getD3Qxx()* mem_size_inlet_Q_q,  cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->QInlet.k,       parH[lev]->QInlet.k,                  mem_size_inlet_Q_k,  cudaMemcpyHostToDevice));
@@ -883,7 +887,7 @@ void Parameter::cudaFreeInlet(int lev)
 void Parameter::cudaAllocOutlet(int lev)
 {
 	unsigned int mem_size_outlet_Q_k = sizeof(int)*parH[lev]->QOutlet.kQ;
-	unsigned int mem_size_outlet_Q_q = sizeof(doubflo)*parH[lev]->QOutlet.kQ;
+	unsigned int mem_size_outlet_Q_q = sizeof(real)*parH[lev]->QOutlet.kQ;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->QOutlet.q27[0]), getD3Qxx()*mem_size_outlet_Q_q ));
@@ -904,7 +908,7 @@ void Parameter::cudaAllocOutlet(int lev)
 void Parameter::cudaCopyOutlet(int lev)
 {
 	unsigned int mem_size_outlet_Q_k = sizeof(int)*parH[lev]->QOutlet.kQ;
-	unsigned int mem_size_outlet_Q_q = sizeof(doubflo)*parH[lev]->QOutlet.kQ;
+	unsigned int mem_size_outlet_Q_q = sizeof(real)*parH[lev]->QOutlet.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->QOutlet.q27[0],  parH[lev]->QOutlet.q27[0], getD3Qxx()* mem_size_outlet_Q_q,  cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->QOutlet.k,       parH[lev]->QOutlet.k,                  mem_size_outlet_Q_k,  cudaMemcpyHostToDevice));
@@ -922,9 +926,9 @@ void Parameter::cudaFreeOutlet(int lev)
 void Parameter::cudaAllocWallBC(int lev)
 {
 	unsigned int mem_size_Q_k      = sizeof(int)*parH[lev]->QWall.kQ;
-	unsigned int mem_size_Q_q      = sizeof(doubflo)*parH[lev]->QWall.kQ;
+	unsigned int mem_size_Q_q      = sizeof(real)*parH[lev]->QWall.kQ;
 	unsigned int mem_size_Q_value  = sizeof(long long)*parH[lev]->QWall.kQ; //Geller
-	unsigned int mem_size_Q_q_read = sizeof(doubflo)*parH[lev]->kQread;     //Geller
+	unsigned int mem_size_Q_q_read = sizeof(real)*parH[lev]->kQread;     //Geller
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->QWall.q27[0]), getD3Qxx()*mem_size_Q_q      ));
@@ -943,7 +947,7 @@ void Parameter::cudaAllocWallBC(int lev)
 void Parameter::cudaCopyWallBC(int lev)
 {
 	unsigned int mem_size_Q_k = sizeof(int)*parH[lev]->QWall.kQ;
-	unsigned int mem_size_Q_q = sizeof(doubflo)*parH[lev]->QWall.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parH[lev]->QWall.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->QWall.q27[0], parH[lev]->QWall.q27[0], getD3Qxx()* mem_size_Q_q,       cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->QWall.k,      parH[lev]->QWall.k,                  mem_size_Q_k,       cudaMemcpyHostToDevice));
@@ -959,7 +963,7 @@ void Parameter::cudaFreeWallBC(int lev)
 void Parameter::cudaAllocGeomBC(int lev)
 {
 	unsigned int mem_size_Q_k      = sizeof(int)*parH[lev]->QGeom.kQ;
-	unsigned int mem_size_Q_q      = sizeof(doubflo)*parH[lev]->QGeom.kQ;
+	unsigned int mem_size_Q_q      = sizeof(real)*parH[lev]->QGeom.kQ;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->QGeom.q27[0]), getD3Qxx()*mem_size_Q_q      ));
@@ -976,7 +980,7 @@ void Parameter::cudaAllocGeomBC(int lev)
 void Parameter::cudaCopyGeomBC(int lev)
 {
 	unsigned int mem_size_Q_k = sizeof(int)*parH[lev]->QGeom.kQ;
-	unsigned int mem_size_Q_q = sizeof(doubflo)*parH[lev]->QGeom.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parH[lev]->QGeom.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->QGeom.q27[0], parH[lev]->QGeom.q27[0], getD3Qxx()* mem_size_Q_q,       cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->QGeom.k,      parH[lev]->QGeom.k,                  mem_size_Q_k,       cudaMemcpyHostToDevice));
@@ -989,7 +993,7 @@ void Parameter::cudaFreeGeomBC(int lev)
 //Geometrie inkl. Values
 void Parameter::cudaAllocGeomValuesBC(int lev)
 {
-	unsigned int mem_size_Q_q      = sizeof(doubflo)*parH[lev]->QGeom.kQ;
+	unsigned int mem_size_Q_q      = sizeof(real)*parH[lev]->QGeom.kQ;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->QGeom.Vx),  mem_size_Q_q ));
@@ -1007,7 +1011,7 @@ void Parameter::cudaAllocGeomValuesBC(int lev)
 }
 void Parameter::cudaCopyGeomValuesBC(int lev)
 {
-	unsigned int mem_size_Q_q = sizeof(doubflo)*parH[lev]->QGeom.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parH[lev]->QGeom.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->QGeom.Vx, parH[lev]->QGeom.Vx,  mem_size_Q_q,       cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->QGeom.Vy, parH[lev]->QGeom.Vy,  mem_size_Q_q,       cudaMemcpyHostToDevice));
@@ -1023,7 +1027,7 @@ void Parameter::cudaFreeGeomValuesBC(int lev)
 void Parameter::cudaAllocGeomNormals(int lev)
 {
 	unsigned int mem_size_Q_k      = sizeof(int)*parH[lev]->QGeomNormalX.kQ;
-	unsigned int mem_size_Q_q      = sizeof(doubflo)*parH[lev]->QGeomNormalX.kQ;
+	unsigned int mem_size_Q_q      = sizeof(real)*parH[lev]->QGeomNormalX.kQ;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->QGeomNormalX.q27[0]), getD3Qxx()*mem_size_Q_q      ));
@@ -1048,7 +1052,7 @@ void Parameter::cudaAllocGeomNormals(int lev)
 void Parameter::cudaCopyGeomNormals(int lev)
 {
 	unsigned int mem_size_Q_k = sizeof(int)*parH[lev]->QGeomNormalX.kQ;
-	unsigned int mem_size_Q_q = sizeof(doubflo)*parH[lev]->QGeomNormalX.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parH[lev]->QGeomNormalX.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->QGeomNormalX.q27[0], parH[lev]->QGeomNormalX.q27[0], getD3Qxx()* mem_size_Q_q,       cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->QGeomNormalX.k,      parH[lev]->QGeomNormalX.k,                  mem_size_Q_k,       cudaMemcpyHostToDevice));
@@ -1070,7 +1074,7 @@ void Parameter::cudaFreeGeomNormals(int lev)
 void Parameter::cudaAllocInflowNormals(int lev)
 {
 	unsigned int mem_size_Q_k      = sizeof(int)*parH[lev]->QInflowNormalX.kQ;
-	unsigned int mem_size_Q_q      = sizeof(doubflo)*parH[lev]->QInflowNormalX.kQ;
+	unsigned int mem_size_Q_q      = sizeof(real)*parH[lev]->QInflowNormalX.kQ;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->QInflowNormalX.q27[0]), getD3Qxx()*mem_size_Q_q      ));
@@ -1095,7 +1099,7 @@ void Parameter::cudaAllocInflowNormals(int lev)
 void Parameter::cudaCopyInflowNormals(int lev)
 {
 	unsigned int mem_size_Q_k = sizeof(int)*parH[lev]->QInflowNormalX.kQ;
-	unsigned int mem_size_Q_q = sizeof(doubflo)*parH[lev]->QInflowNormalX.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parH[lev]->QInflowNormalX.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->QInflowNormalX.q27[0], parH[lev]->QInflowNormalX.q27[0], getD3Qxx()* mem_size_Q_q,       cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->QInflowNormalX.k,      parH[lev]->QInflowNormalX.k,                  mem_size_Q_k,       cudaMemcpyHostToDevice));
@@ -1117,7 +1121,7 @@ void Parameter::cudaFreeInflowNormals(int lev)
 void Parameter::cudaAllocOutflowNormals(int lev)
 {
 	unsigned int mem_size_Q_k      = sizeof(int)*parH[lev]->QOutflowNormalX.kQ;
-	unsigned int mem_size_Q_q      = sizeof(doubflo)*parH[lev]->QOutflowNormalX.kQ;
+	unsigned int mem_size_Q_q      = sizeof(real)*parH[lev]->QOutflowNormalX.kQ;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->QOutflowNormalX.q27[0]), getD3Qxx()*mem_size_Q_q      ));
@@ -1142,7 +1146,7 @@ void Parameter::cudaAllocOutflowNormals(int lev)
 void Parameter::cudaCopyOutflowNormals(int lev)
 {
 	unsigned int mem_size_Q_k = sizeof(int)*parH[lev]->QOutflowNormalX.kQ;
-	unsigned int mem_size_Q_q = sizeof(doubflo)*parH[lev]->QOutflowNormalX.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parH[lev]->QOutflowNormalX.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->QOutflowNormalX.q27[0], parH[lev]->QOutflowNormalX.q27[0], getD3Qxx()* mem_size_Q_q,       cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->QOutflowNormalX.k,      parH[lev]->QOutflowNormalX.k,                  mem_size_Q_k,       cudaMemcpyHostToDevice));
@@ -1164,9 +1168,9 @@ void Parameter::cudaFreeOutflowNormals(int lev)
 void Parameter::cudaAllocSlipBC(int lev)
 {
 	unsigned int mem_size_Q_k      = sizeof(int)*parH[lev]->QSlip.kQ;
-	unsigned int mem_size_Q_q      = sizeof(doubflo)*parH[lev]->QSlip.kQ;
+	unsigned int mem_size_Q_q      = sizeof(real)*parH[lev]->QSlip.kQ;
 	//unsigned int mem_size_Q_value  = sizeof(long long)*parH[lev]->QSlip.kQ; //Geller
-	//unsigned int mem_size_Q_q_read = sizeof(doubflo)*parH[lev]->kSlipQread;     //Geller
+	//unsigned int mem_size_Q_q_read = sizeof(real)*parH[lev]->kSlipQread;     //Geller
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->QSlip.q27[0]), getD3Qxx()*mem_size_Q_q      ));
@@ -1185,7 +1189,7 @@ void Parameter::cudaAllocSlipBC(int lev)
 void Parameter::cudaCopySlipBC(int lev)
 {
 	unsigned int mem_size_Q_k = sizeof(int)*parH[lev]->QSlip.kQ;
-	unsigned int mem_size_Q_q = sizeof(doubflo)*parH[lev]->QSlip.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parH[lev]->QSlip.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->QSlip.q27[0], parH[lev]->QSlip.q27[0], getD3Qxx()* mem_size_Q_q,       cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->QSlip.k,      parH[lev]->QSlip.k,                  mem_size_Q_k,       cudaMemcpyHostToDevice));
@@ -1201,9 +1205,9 @@ void Parameter::cudaFreeSlipBC(int lev)
 void Parameter::cudaAllocPress(int lev)
 {
 	unsigned int mem_size_Q_k      = sizeof(int)*parH[lev]->QPress.kQ;
-	unsigned int mem_size_Q_q      = sizeof(doubflo)*parH[lev]->QPress.kQ;
+	unsigned int mem_size_Q_q      = sizeof(real)*parH[lev]->QPress.kQ;
 	//unsigned int mem_size_Q_value  = sizeof(long long)*parH[lev]->QPress.kQ; //Geller
-	//unsigned int mem_size_Q_q_read = sizeof(doubflo)*parH[lev]->kPressQread;     //Geller
+	//unsigned int mem_size_Q_q_read = sizeof(real)*parH[lev]->kPressQread;     //Geller
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->QPress.q27[0]), getD3Qxx()*mem_size_Q_q      ));
@@ -1226,7 +1230,7 @@ void Parameter::cudaAllocPress(int lev)
 void Parameter::cudaCopyPress(int lev)
 {
 	unsigned int mem_size_Q_k = sizeof(int)*parH[lev]->QPress.kQ;
-	unsigned int mem_size_Q_q = sizeof(doubflo)*parH[lev]->QPress.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parH[lev]->QPress.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->QPress.q27[0], parH[lev]->QPress.q27[0], getD3Qxx()* mem_size_Q_q,       cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->QPress.k,      parH[lev]->QPress.k,                  mem_size_Q_k,       cudaMemcpyHostToDevice));
@@ -1245,7 +1249,7 @@ void Parameter::cudaFreePress(int lev)
 //Test roundoff error
 void Parameter::cudaAllocTestRE(int lev, unsigned int size)
 {
-	unsigned int mem_size = sizeof(doubflo)*size;
+	unsigned int mem_size = sizeof(real)*size;
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->kDistTestRE.f[0]), (1+getD3Qxx())*mem_size));
 	//Device
@@ -1256,12 +1260,12 @@ void Parameter::cudaAllocTestRE(int lev, unsigned int size)
 }
 void Parameter::cudaCopyTestREtoDevice(int lev, unsigned int size)
 {
-	unsigned int mem_size = sizeof(doubflo)*size;
+	unsigned int mem_size = sizeof(real)*size;
 	checkCudaErrors( cudaMemcpy(parD[lev]->kDistTestRE.f[0], parH[lev]->kDistTestRE.f[0], (1+getD3Qxx())*mem_size, cudaMemcpyHostToDevice));
 }
 void Parameter::cudaCopyTestREtoHost(int lev, unsigned int size)
 {
-	unsigned int mem_size = sizeof(doubflo)*size;
+	unsigned int mem_size = sizeof(real)*size;
 	checkCudaErrors( cudaMemcpy(parH[lev]->kDistTestRE.f[0], parD[lev]->kDistTestRE.f[0], (1+getD3Qxx())*mem_size, cudaMemcpyDeviceToHost));
 }
 void Parameter::cudaFreeTestRE(int lev)
@@ -1272,7 +1276,7 @@ void Parameter::cudaFreeTestRE(int lev)
 void Parameter::cudaAllocPressX0(int lev)
 {
 	unsigned int mem_size_Q_k = sizeof(int)*parH[lev]->QpressX0.kQ;
-	unsigned int mem_size_Q_q = sizeof(doubflo)*parH[lev]->QpressX0.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parH[lev]->QpressX0.kQ;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->QpressX0.q27[0]), getD3Qxx()*mem_size_Q_q ));
@@ -1301,7 +1305,7 @@ void Parameter::cudaAllocPressX0(int lev)
 void Parameter::cudaCopyPressX0(int lev)
 {
 	unsigned int mem_size_Q_k = sizeof(int)*parH[lev]->QpressX0.kQ;
-	unsigned int mem_size_Q_q = sizeof(doubflo)*parH[lev]->QpressX0.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parH[lev]->QpressX0.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->QpressX0.q27[0],  parH[lev]->QpressX0.q27[0], getD3Qxx()* mem_size_Q_q,  cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->QpressX0.k,       parH[lev]->QpressX0.k,                  mem_size_Q_k,  cudaMemcpyHostToDevice));
@@ -1327,7 +1331,7 @@ void Parameter::cudaFreePressX0(int lev)
 void Parameter::cudaAllocPressX1(int lev)
 {
 	unsigned int mem_size_Q_k = sizeof(int)*parH[lev]->QpressX1.kQ;
-	unsigned int mem_size_Q_q = sizeof(doubflo)*parH[lev]->QpressX1.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parH[lev]->QpressX1.kQ;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->QpressX1.q27[0]), getD3Qxx()*mem_size_Q_q ));
@@ -1356,7 +1360,7 @@ void Parameter::cudaAllocPressX1(int lev)
 void Parameter::cudaCopyPressX1(int lev)
 {
 	unsigned int mem_size_Q_k = sizeof(int)*parH[lev]->QpressX1.kQ;
-	unsigned int mem_size_Q_q = sizeof(doubflo)*parH[lev]->QpressX1.kQ;
+	unsigned int mem_size_Q_q = sizeof(real)*parH[lev]->QpressX1.kQ;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->QpressX1.q27[0],  parH[lev]->QpressX1.q27[0], getD3Qxx()* mem_size_Q_q,  cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->QpressX1.k,       parH[lev]->QpressX1.k,                  mem_size_Q_k,  cudaMemcpyHostToDevice));
@@ -1382,7 +1386,7 @@ void Parameter::cudaFreePressX1(int lev)
 void Parameter::cudaAllocVeloPropeller(int lev)
 {
 	unsigned int mem_size_Propeller_k = sizeof(int)*parH[lev]->QPropeller.kQ;
-	unsigned int mem_size_Propeller_q = sizeof(doubflo)*parH[lev]->QPropeller.kQ;
+	unsigned int mem_size_Propeller_q = sizeof(real)*parH[lev]->QPropeller.kQ;
 
 	//Host
 	//checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->QPropeller.q27[0]),  getD3Qxx()*mem_size_Propeller_q ));
@@ -1407,7 +1411,7 @@ void Parameter::cudaAllocVeloPropeller(int lev)
 void Parameter::cudaCopyVeloPropeller(int lev)
 {
 	unsigned int mem_size_Propeller_k = sizeof(int)*parH[lev]->QPropeller.kQ;
-	unsigned int mem_size_Propeller_q = sizeof(doubflo)*parH[lev]->QPropeller.kQ;
+	unsigned int mem_size_Propeller_q = sizeof(real)*parH[lev]->QPropeller.kQ;
 
 	//checkCudaErrors( cudaMemcpy(parD[lev]->QPropeller.q27[0],  parH[lev]->QPropeller.q27[0], getD3Qxx()* mem_size_Propeller_q,  cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->QPropeller.k,       parH[lev]->QPropeller.k,                  mem_size_Propeller_k,  cudaMemcpyHostToDevice));
@@ -1429,23 +1433,23 @@ void Parameter::cudaFreeVeloPropeller(int lev)
 //void Parameter::cudaAllocMeasurePoints(int lev, int i)
 //{
 //	//Host
-//	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->MP[i].Vx),                 parH[lev]->memSizeDoubfloMP ));
-//	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->MP[i].Vy),                 parH[lev]->memSizeDoubfloMP ));
-//	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->MP[i].Vz),                 parH[lev]->memSizeDoubfloMP ));
-//	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->MP[i].Rho),                parH[lev]->memSizeDoubfloMP ));
+//	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->MP[i].Vx),                 parH[lev]->memSizerealMP ));
+//	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->MP[i].Vy),                 parH[lev]->memSizerealMP ));
+//	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->MP[i].Vz),                 parH[lev]->memSizerealMP ));
+//	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->MP[i].Rho),                parH[lev]->memSizerealMP ));
 //
 //	//Device
-//	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->MP[i].Vx),                     parD[lev]->memSizeDoubfloMP ));
-//	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->MP[i].Vy),                     parD[lev]->memSizeDoubfloMP ));
-//	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->MP[i].Vz),                     parD[lev]->memSizeDoubfloMP ));
-//	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->MP[i].Rho),                    parD[lev]->memSizeDoubfloMP ));
+//	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->MP[i].Vx),                     parD[lev]->memSizerealMP ));
+//	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->MP[i].Vy),                     parD[lev]->memSizerealMP ));
+//	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->MP[i].Vz),                     parD[lev]->memSizerealMP ));
+//	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->MP[i].Rho),                    parD[lev]->memSizerealMP ));
 //}
 //void Parameter::cudaCopyMeasurePoints(int lev, int i)
 //{
-//	checkCudaErrors( cudaMemcpy(parD[lev]->MP[i].Vx,      parH[lev]->MP[i].Vx,           parH[lev]->memSizeDoubfloMP,  cudaMemcpyHostToDevice));
-//	checkCudaErrors( cudaMemcpy(parD[lev]->MP[i].Vy,      parH[lev]->MP[i].Vy,           parH[lev]->memSizeDoubfloMP,  cudaMemcpyHostToDevice));
-//	checkCudaErrors( cudaMemcpy(parD[lev]->MP[i].Vz,      parH[lev]->MP[i].Vz,           parH[lev]->memSizeDoubfloMP,  cudaMemcpyHostToDevice));
-//	checkCudaErrors( cudaMemcpy(parD[lev]->MP[i].Rho,     parH[lev]->MP[i].Rho,          parH[lev]->memSizeDoubfloMP,  cudaMemcpyHostToDevice));
+//	checkCudaErrors( cudaMemcpy(parD[lev]->MP[i].Vx,      parH[lev]->MP[i].Vx,           parH[lev]->memSizerealMP,  cudaMemcpyHostToDevice));
+//	checkCudaErrors( cudaMemcpy(parD[lev]->MP[i].Vy,      parH[lev]->MP[i].Vy,           parH[lev]->memSizerealMP,  cudaMemcpyHostToDevice));
+//	checkCudaErrors( cudaMemcpy(parD[lev]->MP[i].Vz,      parH[lev]->MP[i].Vz,           parH[lev]->memSizerealMP,  cudaMemcpyHostToDevice));
+//	checkCudaErrors( cudaMemcpy(parD[lev]->MP[i].Rho,     parH[lev]->MP[i].Rho,          parH[lev]->memSizerealMP,  cudaMemcpyHostToDevice));
 //}
 //void Parameter::cudaFreeMeasurePoints(int lev, int i)
 //{
@@ -1458,37 +1462,37 @@ void Parameter::cudaAllocMeasurePointsIndex(int lev)
 {
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->kMP),						parH[lev]->memSizeIntkMP     ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->VxMP),					parH[lev]->memSizeDoubflokMP ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->VyMP),					parH[lev]->memSizeDoubflokMP ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->VzMP),					parH[lev]->memSizeDoubflokMP ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->RhoMP),					parH[lev]->memSizeDoubflokMP ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->VxMP),					parH[lev]->memSizerealkMP ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->VyMP),					parH[lev]->memSizerealkMP ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->VzMP),					parH[lev]->memSizerealkMP ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->RhoMP),					parH[lev]->memSizerealkMP ));
 
 	//Device
 	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->kMP),							parD[lev]->memSizeIntkMP     ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->VxMP),						parD[lev]->memSizeDoubflokMP ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->VyMP),						parD[lev]->memSizeDoubflokMP ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->VzMP),						parD[lev]->memSizeDoubflokMP ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->RhoMP),						parD[lev]->memSizeDoubflokMP ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->VxMP),						parD[lev]->memSizerealkMP ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->VyMP),						parD[lev]->memSizerealkMP ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->VzMP),						parD[lev]->memSizerealkMP ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->RhoMP),						parD[lev]->memSizerealkMP ));
 
 	//////////////////////////////////////////////////////////////////////////
-	double tmp = (double)parH[lev]->memSizeIntkMP + 4. * (double)parH[lev]->memSizeDoubflokMP;
+	double tmp = (double)parH[lev]->memSizeIntkMP + 4. * (double)parH[lev]->memSizerealkMP;
 	setMemsizeGPU(tmp, false);
 }
 void Parameter::cudaCopyMeasurePointsIndex(int lev)
 {
 	checkCudaErrors( cudaMemcpy(parD[lev]->kMP,           parH[lev]->kMP,                parH[lev]->memSizeIntkMP,      cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->VxMP,          parH[lev]->VxMP,               parH[lev]->memSizeDoubflokMP,  cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->VyMP,          parH[lev]->VyMP,               parH[lev]->memSizeDoubflokMP,  cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->VzMP,          parH[lev]->VzMP,               parH[lev]->memSizeDoubflokMP,  cudaMemcpyHostToDevice));
-	checkCudaErrors( cudaMemcpy(parD[lev]->RhoMP,         parH[lev]->RhoMP,              parH[lev]->memSizeDoubflokMP,  cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->VxMP,          parH[lev]->VxMP,               parH[lev]->memSizerealkMP,  cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->VyMP,          parH[lev]->VyMP,               parH[lev]->memSizerealkMP,  cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->VzMP,          parH[lev]->VzMP,               parH[lev]->memSizerealkMP,  cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->RhoMP,         parH[lev]->RhoMP,              parH[lev]->memSizerealkMP,  cudaMemcpyHostToDevice));
 }
 void Parameter::cudaCopyMeasurePointsToHost(int lev)
 {
 	checkCudaErrors( cudaMemcpy(parH[lev]->kMP,           parD[lev]->kMP,                parH[lev]->memSizeIntkMP,      cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->VxMP,          parD[lev]->VxMP,               parH[lev]->memSizeDoubflokMP,  cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->VyMP,          parD[lev]->VyMP,               parH[lev]->memSizeDoubflokMP,  cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->VzMP,          parD[lev]->VzMP,               parH[lev]->memSizeDoubflokMP,  cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->RhoMP,         parD[lev]->RhoMP,              parH[lev]->memSizeDoubflokMP,  cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->VxMP,          parD[lev]->VxMP,               parH[lev]->memSizerealkMP,  cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->VyMP,          parD[lev]->VyMP,               parH[lev]->memSizerealkMP,  cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->VzMP,          parD[lev]->VzMP,               parH[lev]->memSizerealkMP,  cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->RhoMP,         parD[lev]->RhoMP,              parH[lev]->memSizerealkMP,  cudaMemcpyDeviceToHost));
 }
 void Parameter::cudaFreeMeasurePointsIndex(int lev)
 {
@@ -1500,15 +1504,15 @@ void Parameter::cudaFreeMeasurePointsIndex(int lev)
 }
 void Parameter::cudaAllocFsForCheckPointAndRestart(int lev)
 {
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->d0SP.f[0] ),           (unsigned long long)getD3Qxx()*(unsigned long long)parH[lev]->mem_size_doubflo_SP));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->d0SP.f[0] ),           (unsigned long long)getD3Qxx()*(unsigned long long)parH[lev]->mem_size_real_SP));
 }
 void Parameter::cudaCopyFsForRestart(int lev)
 {
-	checkCudaErrors( cudaMemcpy(parD[lev]->d0SP.f[0],  parH[lev]->d0SP.f[0],     (unsigned long long)getD3Qxx()*(unsigned long long)parH[lev]->mem_size_doubflo_SP , cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->d0SP.f[0],  parH[lev]->d0SP.f[0],     (unsigned long long)getD3Qxx()*(unsigned long long)parH[lev]->mem_size_real_SP , cudaMemcpyHostToDevice));
 }
 void Parameter::cudaCopyFsForCheckPoint(int lev)
 {
-	checkCudaErrors( cudaMemcpy(parH[lev]->d0SP.f[0],  parD[lev]->d0SP.f[0],     (unsigned long long)getD3Qxx()*(unsigned long long)parH[lev]->mem_size_doubflo_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->d0SP.f[0],  parD[lev]->d0SP.f[0],     (unsigned long long)getD3Qxx()*(unsigned long long)parH[lev]->mem_size_real_SP , cudaMemcpyDeviceToHost));
 }
 void Parameter::cudaFreeFsForCheckPointAndRestart(int lev)
 {
@@ -1562,7 +1566,7 @@ void Parameter::cudaFreeDragLift(int lev)
 //2ndMoments
 void Parameter::cudaAlloc2ndMoments(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->kxyFromfcNEQ   ), mem_size  ));
@@ -1579,12 +1583,12 @@ void Parameter::cudaAlloc2ndMoments(int lev, int numofelem)
 	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->kxxMzzFromfcNEQ), mem_size  ));
 
 	//////////////////////////////////////////////////////////////////////////
-	double tmp = 5. * (doubflo)mem_size;
+	double tmp = 5. * (real)mem_size;
 	setMemsizeGPU(tmp, false);
 }
 void Parameter::cudaCopy2ndMoments(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 
 	checkCudaErrors( cudaMemcpy(parH[lev]->kxyFromfcNEQ   , parD[lev]->kxyFromfcNEQ   , mem_size, cudaMemcpyDeviceToHost));
 	checkCudaErrors( cudaMemcpy(parH[lev]->kyzFromfcNEQ   , parD[lev]->kyzFromfcNEQ   , mem_size, cudaMemcpyDeviceToHost));
@@ -1603,7 +1607,7 @@ void Parameter::cudaFree2ndMoments(int lev)
 //3rdMoments
 void Parameter::cudaAlloc3rdMoments(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->CUMbbb ), mem_size ));
@@ -1624,12 +1628,12 @@ void Parameter::cudaAlloc3rdMoments(int lev, int numofelem)
 	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->CUMcab ), mem_size ));
 
 	//////////////////////////////////////////////////////////////////////////
-	double tmp = 7. * (doubflo)mem_size;
+	double tmp = 7. * (real)mem_size;
 	setMemsizeGPU(tmp, false);
 }
 void Parameter::cudaCopy3rdMoments(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 
 	checkCudaErrors( cudaMemcpy(parH[lev]->CUMbbb, parD[lev]->CUMbbb, mem_size, cudaMemcpyDeviceToHost));
 	checkCudaErrors( cudaMemcpy(parH[lev]->CUMabc, parD[lev]->CUMabc, mem_size, cudaMemcpyDeviceToHost));
@@ -1652,7 +1656,7 @@ void Parameter::cudaFree3rdMoments(int lev)
 //higher order moments
 void Parameter::cudaAllocHigherMoments(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->CUMcbb ), mem_size ));
@@ -1679,12 +1683,12 @@ void Parameter::cudaAllocHigherMoments(int lev, int numofelem)
 	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->CUMccc ), mem_size ));
 
 	//////////////////////////////////////////////////////////////////////////
-	double tmp = 7. * (doubflo)mem_size;
+	double tmp = 7. * (real)mem_size;
 	setMemsizeGPU(tmp, false);
 }
 void Parameter::cudaCopyHigherMoments(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 
 	checkCudaErrors( cudaMemcpy(parH[lev]->CUMcbb, parD[lev]->CUMcbb, mem_size, cudaMemcpyDeviceToHost));
 	checkCudaErrors( cudaMemcpy(parH[lev]->CUMbcb, parD[lev]->CUMbcb, mem_size, cudaMemcpyDeviceToHost));
@@ -1713,7 +1717,7 @@ void Parameter::cudaFreeHigherMoments(int lev)
 //Velcities to fit the Forcing
 void Parameter::cudaAllocForceVelo(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->VxForce   ), mem_size  ));
@@ -1726,12 +1730,12 @@ void Parameter::cudaAllocForceVelo(int lev, int numofelem)
 	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->VzForce   ), mem_size  ));
 
 	//////////////////////////////////////////////////////////////////////////
-	double tmp = 3. * (doubflo)mem_size;
+	double tmp = 3. * (real)mem_size;
 	setMemsizeGPU(tmp, false);
 }
 void Parameter::cudaCopyForceVelo(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 
 	checkCudaErrors( cudaMemcpy(parH[lev]->VxForce   , parD[lev]->VxForce   , mem_size, cudaMemcpyDeviceToHost));
 	checkCudaErrors( cudaMemcpy(parH[lev]->VyForce   , parD[lev]->VyForce   , mem_size, cudaMemcpyDeviceToHost));
@@ -1746,23 +1750,23 @@ void Parameter::cudaFreeForceVelo(int lev)
 //Forcing
 void Parameter::cudaAllocForcing()
 {
-	unsigned int mem_size = sizeof(doubflo) * 3;
+	unsigned int mem_size = sizeof(real) * 3;
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(this->forcingH ), mem_size));
 	//Device
 	checkCudaErrors( cudaMalloc(    (void**) &(this->forcingD ), mem_size));
 	//////////////////////////////////////////////////////////////////////////
-	double tmp = (doubflo)mem_size;
+	double tmp = (real)mem_size;
 	setMemsizeGPU(tmp, false);
 }
 void Parameter::cudaCopyForcingToDevice()
 {
-	unsigned int mem_size = sizeof(doubflo) * 3;
+	unsigned int mem_size = sizeof(real) * 3;
 	checkCudaErrors( cudaMemcpy(this->forcingD, this->forcingH , mem_size, cudaMemcpyHostToDevice));
 }
 void Parameter::cudaCopyForcingToHost()
 {
-	unsigned int mem_size = sizeof(doubflo) * 3;
+	unsigned int mem_size = sizeof(real) * 3;
 	checkCudaErrors( cudaMemcpy(this->forcingH, this->forcingD , mem_size, cudaMemcpyDeviceToHost));
 }
 void Parameter::cudaFreeForcing()
@@ -1889,16 +1893,16 @@ void Parameter::cudaFreeCpBottom2(int lev)
 void Parameter::cudaAllocParticles(int lev)
 {
 	//Host
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.coordXlocal),        parH[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.coordYlocal),        parH[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.coordZlocal),        parH[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.coordXabsolut),      parH[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.coordYabsolut),      parH[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.coordZabsolut),      parH[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.veloX),              parH[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.veloY),              parH[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.veloZ),              parH[lev]->plp.memSizeDoubfloAll  ));
-	//checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.randomLocationInit), parH[lev]->plp.memSizeDoubflo     ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.coordXlocal),        parH[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.coordYlocal),        parH[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.coordZlocal),        parH[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.coordXabsolut),      parH[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.coordYabsolut),      parH[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.coordZabsolut),      parH[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.veloX),              parH[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.veloY),              parH[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.veloZ),              parH[lev]->plp.memSizerealAll  ));
+	//checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.randomLocationInit), parH[lev]->plp.memSizereal     ));
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.ID),                 parH[lev]->plp.memSizeID          ));
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.cellBaseID),         parH[lev]->plp.memSizeID          ));
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.timestep),           parH[lev]->plp.memSizeTimestep    ));
@@ -1906,16 +1910,16 @@ void Parameter::cudaAllocParticles(int lev)
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->plp.hot),                parH[lev]->plp.memSizeBoolBC      ));
 
 	//Device
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.coordXlocal),            parD[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.coordYlocal),            parD[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.coordZlocal),            parD[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.coordXabsolut),          parD[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.coordYabsolut),          parD[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.coordZabsolut),          parD[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.veloX),                  parD[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.veloY),                  parD[lev]->plp.memSizeDoubfloAll  ));
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.veloZ),                  parD[lev]->plp.memSizeDoubfloAll  ));
-	//checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.randomLocationInit),     parD[lev]->plp.memSizeDoubflo     ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.coordXlocal),            parD[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.coordYlocal),            parD[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.coordZlocal),            parD[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.coordXabsolut),          parD[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.coordYabsolut),          parD[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.coordZabsolut),          parD[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.veloX),                  parD[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.veloY),                  parD[lev]->plp.memSizerealAll  ));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.veloZ),                  parD[lev]->plp.memSizerealAll  ));
+	//checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.randomLocationInit),     parD[lev]->plp.memSizereal     ));
 	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.ID),                     parD[lev]->plp.memSizeID          ));
 	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.cellBaseID),             parD[lev]->plp.memSizeID          ));
 	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.timestep),               parD[lev]->plp.memSizeTimestep    ));
@@ -1923,22 +1927,22 @@ void Parameter::cudaAllocParticles(int lev)
 	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->plp.hot),                    parD[lev]->plp.memSizeBoolBC      ));
 
 	//////////////////////////////////////////////////////////////////////////
-	double tmp = (double)parD[lev]->plp.memSizeDoubfloAll * (double)9.0 + (double)parD[lev]->plp.memSizeID * (double)2.0 + (double)parD[lev]->plp.memSizeTimestep 
+	double tmp = (double)parD[lev]->plp.memSizerealAll * (double)9.0 + (double)parD[lev]->plp.memSizeID * (double)2.0 + (double)parD[lev]->plp.memSizeTimestep 
 		+ (double)parD[lev]->plp.memSizeBool + (double)parD[lev]->plp.memSizeBoolBC;
 	setMemsizeGPU(tmp, false);
 }
 void Parameter::cudaCopyParticles(int lev)
 {
-	checkCudaErrors( cudaMemcpy(parH[lev]->plp.coordXlocal,        parD[lev]->plp.coordXlocal,        parH[lev]->plp.memSizeDoubfloAll,  cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->plp.coordYlocal,        parD[lev]->plp.coordYlocal,        parH[lev]->plp.memSizeDoubfloAll,  cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->plp.coordZlocal,        parD[lev]->plp.coordZlocal,        parH[lev]->plp.memSizeDoubfloAll,  cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->plp.coordXabsolut,      parD[lev]->plp.coordXabsolut,      parH[lev]->plp.memSizeDoubfloAll,  cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->plp.coordYabsolut,      parD[lev]->plp.coordYabsolut,      parH[lev]->plp.memSizeDoubfloAll,  cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->plp.coordZabsolut,      parD[lev]->plp.coordZabsolut,      parH[lev]->plp.memSizeDoubfloAll,  cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->plp.veloX,              parD[lev]->plp.veloX,              parH[lev]->plp.memSizeDoubfloAll,  cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->plp.veloY,              parD[lev]->plp.veloY,              parH[lev]->plp.memSizeDoubfloAll,  cudaMemcpyDeviceToHost));
-	checkCudaErrors( cudaMemcpy(parH[lev]->plp.veloZ,              parD[lev]->plp.veloZ,              parH[lev]->plp.memSizeDoubfloAll,  cudaMemcpyDeviceToHost));
-	//checkCudaErrors( cudaMemcpy(parH[lev]->plp.randomLocationInit, parD[lev]->plp.randomLocationInit, parH[lev]->plp.memSizeDoubflo,     cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->plp.coordXlocal,        parD[lev]->plp.coordXlocal,        parH[lev]->plp.memSizerealAll,  cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->plp.coordYlocal,        parD[lev]->plp.coordYlocal,        parH[lev]->plp.memSizerealAll,  cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->plp.coordZlocal,        parD[lev]->plp.coordZlocal,        parH[lev]->plp.memSizerealAll,  cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->plp.coordXabsolut,      parD[lev]->plp.coordXabsolut,      parH[lev]->plp.memSizerealAll,  cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->plp.coordYabsolut,      parD[lev]->plp.coordYabsolut,      parH[lev]->plp.memSizerealAll,  cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->plp.coordZabsolut,      parD[lev]->plp.coordZabsolut,      parH[lev]->plp.memSizerealAll,  cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->plp.veloX,              parD[lev]->plp.veloX,              parH[lev]->plp.memSizerealAll,  cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->plp.veloY,              parD[lev]->plp.veloY,              parH[lev]->plp.memSizerealAll,  cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->plp.veloZ,              parD[lev]->plp.veloZ,              parH[lev]->plp.memSizerealAll,  cudaMemcpyDeviceToHost));
+	//checkCudaErrors( cudaMemcpy(parH[lev]->plp.randomLocationInit, parD[lev]->plp.randomLocationInit, parH[lev]->plp.memSizereal,     cudaMemcpyDeviceToHost));
 	checkCudaErrors( cudaMemcpy(parH[lev]->plp.ID,                 parD[lev]->plp.ID,                 parH[lev]->plp.memSizeID,          cudaMemcpyDeviceToHost));
 	checkCudaErrors( cudaMemcpy(parH[lev]->plp.cellBaseID,         parD[lev]->plp.cellBaseID,         parH[lev]->plp.memSizeID,          cudaMemcpyDeviceToHost));
 	checkCudaErrors( cudaMemcpy(parH[lev]->plp.timestep,           parD[lev]->plp.timestep,           parH[lev]->plp.memSizeTimestep,    cudaMemcpyDeviceToHost));
@@ -2006,17 +2010,17 @@ void Parameter::cudaFreePorousMedia(PorousMedia* pm, int lev)
 void Parameter::cudaAllocConc(int lev)
 {
 	//Host
-	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->Conc), parH[lev]->mem_size_doubflo_SP));	
+	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->Conc), parH[lev]->mem_size_real_SP));	
 	//Device
-	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->Conc), parD[lev]->mem_size_doubflo_SP));
+	checkCudaErrors( cudaMalloc((void**) &(parD[lev]->Conc), parD[lev]->mem_size_real_SP));
 }
 void Parameter::cudaCopyConcDH(int lev)
 {
-	checkCudaErrors( cudaMemcpy(parH[lev]->Conc, parD[lev]->Conc,  parH[lev]->mem_size_doubflo_SP , cudaMemcpyDeviceToHost));
+	checkCudaErrors( cudaMemcpy(parH[lev]->Conc, parD[lev]->Conc,  parH[lev]->mem_size_real_SP , cudaMemcpyDeviceToHost));
 }
 void Parameter::cudaCopyConcHD(int lev)
 {
-	checkCudaErrors( cudaMemcpy(parD[lev]->Conc, parH[lev]->Conc, parH[lev]->mem_size_doubflo_SP, cudaMemcpyHostToDevice));
+	checkCudaErrors( cudaMemcpy(parD[lev]->Conc, parH[lev]->Conc, parH[lev]->mem_size_real_SP, cudaMemcpyHostToDevice));
 }
 void Parameter::cudaFreeConc(int lev)
 {
@@ -2028,18 +2032,18 @@ void Parameter::cudaAllocTempFs(int lev)
 	//Device
 	if (getDiffMod() == 7)
 	{
-		checkCudaErrors( cudaMalloc((void**) &(parD[lev]->d7.f[0]), getDiffMod()*parH[lev]->mem_size_doubflo_SP));
+		checkCudaErrors( cudaMalloc((void**) &(parD[lev]->d7.f[0]), getDiffMod()*parH[lev]->mem_size_real_SP));
 	} 
 	else if (getDiffMod() == 27)
 	{
-		checkCudaErrors( cudaMalloc((void**) &(parD[lev]->d27.f[0]), getDiffMod()*parH[lev]->mem_size_doubflo_SP));
+		checkCudaErrors( cudaMalloc((void**) &(parD[lev]->d27.f[0]), getDiffMod()*parH[lev]->mem_size_real_SP));
 	}	
 }
 //////////////////////////////////////////////////////////////////////////
 void Parameter::cudaAllocTempPressBC(int lev)
 {
 	unsigned int mem_size_TempPress_k = sizeof(int)*parH[lev]->TempPress.kTemp;
-	unsigned int mem_size_TempPress_q = sizeof(doubflo)*parH[lev]->TempPress.kTemp;
+	unsigned int mem_size_TempPress_q = sizeof(real)*parH[lev]->TempPress.kTemp;
 
 	// Host Memory
 	checkCudaErrors( cudaMallocHost((void**) &parH[lev]->TempPress.temp, mem_size_TempPress_q ));
@@ -2055,7 +2059,7 @@ void Parameter::cudaAllocTempPressBC(int lev)
 void Parameter::cudaCopyTempPressBCHD(int lev)
 {
 	unsigned int mem_size_TempPress_k = sizeof(int)*parH[lev]->TempPress.kTemp;
-	unsigned int mem_size_TempPress_q = sizeof(doubflo)*parH[lev]->TempPress.kTemp;
+	unsigned int mem_size_TempPress_q = sizeof(real)*parH[lev]->TempPress.kTemp;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->TempPress.temp, parH[lev]->TempPress.temp, mem_size_TempPress_q,  cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->TempPress.velo, parH[lev]->TempPress.velo, mem_size_TempPress_q,  cudaMemcpyHostToDevice));
@@ -2071,7 +2075,7 @@ void Parameter::cudaFreeTempPressBC(int lev)
 void Parameter::cudaAllocTempVeloBC(int lev)
 {
 	unsigned int mem_size_TempVel_k = sizeof(int)*parH[lev]->TempVel.kTemp;
-	unsigned int mem_size_TempVel_q = sizeof(doubflo)*parH[lev]->TempVel.kTemp;
+	unsigned int mem_size_TempVel_q = sizeof(real)*parH[lev]->TempVel.kTemp;
 
 	printf("mem_size_TempVel_k = %d,  mem_size_TempVel_q = %d \n", mem_size_TempVel_k, mem_size_TempVel_q);
 	// Host Memory
@@ -2089,7 +2093,7 @@ void Parameter::cudaAllocTempVeloBC(int lev)
 void Parameter::cudaCopyTempVeloBCHD(int lev)
 {
 	unsigned int mem_size_TempVel_k = sizeof(int)*parH[lev]->TempVel.kTemp;
-	unsigned int mem_size_TempVel_q = sizeof(doubflo)*parH[lev]->TempVel.kTemp;
+	unsigned int mem_size_TempVel_q = sizeof(real)*parH[lev]->TempVel.kTemp;
 
 	printf("mem_size_TempVel_k = %d,  mem_size_TempVel_q = %d \n", mem_size_TempVel_k, mem_size_TempVel_q);
 	checkCudaErrors( cudaMemcpy(parD[lev]->TempVel.temp,      parH[lev]->TempVel.temp,      mem_size_TempVel_q,  cudaMemcpyHostToDevice));
@@ -2108,7 +2112,7 @@ void Parameter::cudaFreeTempVeloBC(int lev)
 void Parameter::cudaAllocTempNoSlipBC(int lev)
 {
 	unsigned int mem_size_Temp_k = sizeof(int)*parH[lev]->Temp.kTemp;
-	unsigned int mem_size_Temp_q = sizeof(doubflo)*parH[lev]->Temp.kTemp;
+	unsigned int mem_size_Temp_q = sizeof(real)*parH[lev]->Temp.kTemp;
 
 	// Host Memory
 	checkCudaErrors( cudaMallocHost((void**) &parH[lev]->Temp.temp, mem_size_Temp_q ));
@@ -2122,7 +2126,7 @@ void Parameter::cudaAllocTempNoSlipBC(int lev)
 void Parameter::cudaCopyTempNoSlipBCHD(int lev)
 {
 	unsigned int mem_size_Temp_k = sizeof(int)*parH[lev]->Temp.kTemp;
-	unsigned int mem_size_Temp_q = sizeof(doubflo)*parH[lev]->Temp.kTemp;
+	unsigned int mem_size_Temp_q = sizeof(real)*parH[lev]->Temp.kTemp;
 
 	checkCudaErrors( cudaMemcpy(parD[lev]->Temp.temp, parH[lev]->Temp.temp, mem_size_Temp_q,  cudaMemcpyHostToDevice));
 	checkCudaErrors( cudaMemcpy(parD[lev]->Temp.k,    parH[lev]->Temp.k,    mem_size_Temp_k,  cudaMemcpyHostToDevice));
@@ -2135,7 +2139,7 @@ void Parameter::cudaFreeTempNoSlipBC(int lev)
 //PlaneConc
 void Parameter::cudaAllocPlaneConcIn(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->ConcPlaneIn), mem_size  ));
 	//Device
@@ -2146,13 +2150,13 @@ void Parameter::cudaAllocPlaneConcIn(int lev, int numofelem)
 }
 void Parameter::cudaCopyPlaneConcIn(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 	checkCudaErrors( cudaMemcpy(parH[lev]->ConcPlaneIn,   parD[lev]->ConcPlaneIn,   mem_size, cudaMemcpyDeviceToHost));
 }
 //////////////////////////////////////////////////////////////////////////
 void Parameter::cudaAllocPlaneConcOut1(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->ConcPlaneOut1), mem_size  ));
 	//Device
@@ -2163,13 +2167,13 @@ void Parameter::cudaAllocPlaneConcOut1(int lev, int numofelem)
 }
 void Parameter::cudaCopyPlaneConcOut1(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 	checkCudaErrors( cudaMemcpy(parH[lev]->ConcPlaneOut1, parD[lev]->ConcPlaneOut1, mem_size, cudaMemcpyDeviceToHost));
 }
 //////////////////////////////////////////////////////////////////////////
 void Parameter::cudaAllocPlaneConcOut2(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 	//Host
 	checkCudaErrors( cudaMallocHost((void**) &(parH[lev]->ConcPlaneOut2), mem_size  ));
 	//Device
@@ -2181,7 +2185,7 @@ void Parameter::cudaAllocPlaneConcOut2(int lev, int numofelem)
 }
 void Parameter::cudaCopyPlaneConcOut2(int lev, int numofelem)
 {
-	unsigned int mem_size = sizeof(doubflo)*numofelem;
+	unsigned int mem_size = sizeof(real)*numofelem;
 	checkCudaErrors( cudaMemcpy(parH[lev]->ConcPlaneOut2, parD[lev]->ConcPlaneOut2, mem_size, cudaMemcpyDeviceToHost));
 }
 void Parameter::cudaFreePlaneConc(int lev)
@@ -2617,7 +2621,7 @@ void Parameter::cudaFreeProcessNeighborADZ(int lev, unsigned int processNeighbor
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //set-methods
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void Parameter::setForcing(doubflo forcingX, doubflo forcingY, doubflo forcingZ)
+void Parameter::setForcing(real forcingX, real forcingY, real forcingZ)
 {
 	cudaAllocForcing();
 	//copy forces
@@ -2627,11 +2631,11 @@ void Parameter::setForcing(doubflo forcingX, doubflo forcingY, doubflo forcingZ)
 	//copy data to device
 	cudaCopyForcingToDevice();
 }
-void Parameter::setPhi(doubflo inPhi)
+void Parameter::setPhi(real inPhi)
 {
 	Phi = inPhi;
 }
-void Parameter::setAngularVelocity(doubflo inAngVel)
+void Parameter::setAngularVelocity(real inAngVel)
 {
 	angularVelocity = inAngVel;
 }
@@ -2683,11 +2687,11 @@ void Parameter::setCalcParticles(bool calcParticles)
 {
 	this->calcParticles = calcParticles;
 }
-void Parameter::setStartXHotWall(doubflo startXHotWall)
+void Parameter::setStartXHotWall(real startXHotWall)
 {
 	this->startXHotWall = startXHotWall;
 }
-void Parameter::setEndXHotWall(doubflo endXHotWall)
+void Parameter::setEndXHotWall(real endXHotWall)
 {
 	this->endXHotWall = endXHotWall;
 }
@@ -2737,47 +2741,47 @@ void Parameter::setReadGeo(bool readGeo)
 {
 	ic.readGeo = readGeo;
 }
-void Parameter::setDiffusivity(doubflo Diffusivity)
+void Parameter::setDiffusivity(real Diffusivity)
 {
 	ic.Diffusivity = Diffusivity;
 }
-void Parameter::setTemperatureInit(doubflo Temp)
+void Parameter::setTemperatureInit(real Temp)
 {
 	ic.Temp = Temp;
 }
-void Parameter::setTemperatureBC(doubflo TempBC)
+void Parameter::setTemperatureBC(real TempBC)
 {
 	ic.TempBC = TempBC;
 }
-void Parameter::setViscosity(doubflo Viscosity)
+void Parameter::setViscosity(real Viscosity)
 {
 	ic.vis = Viscosity;
 }
-void Parameter::setVelocity(doubflo Velocity)
+void Parameter::setVelocity(real Velocity)
 {
 	ic.u0 = Velocity;
 }
-void Parameter::setViscosityRatio(doubflo ViscosityRatio)
+void Parameter::setViscosityRatio(real ViscosityRatio)
 {
 	ic.vis_ratio = ViscosityRatio;
 }
-void Parameter::setVelocityRatio(doubflo VelocityRatio)
+void Parameter::setVelocityRatio(real VelocityRatio)
 {
 	ic.u0_ratio = VelocityRatio;
 }
-void Parameter::setDensityRatio(doubflo DensityRatio)
+void Parameter::setDensityRatio(real DensityRatio)
 {
 	ic.delta_rho = DensityRatio;
 }
-void Parameter::setPressRatio(doubflo PressRatio)
+void Parameter::setPressRatio(real PressRatio)
 {
 	ic.delta_press = PressRatio;
 }
-void Parameter::setRealX(doubflo RealX)
+void Parameter::setRealX(real RealX)
 {
 	ic.RealX = RealX;
 }
-void Parameter::setRealY(doubflo RealY)
+void Parameter::setRealY(real RealY)
 {
 	ic.RealY = RealY;
 }
@@ -2829,11 +2833,11 @@ void Parameter::setNeedInterface(std::vector<bool> NeedInterface)
 {
 	ic.NeedInterface = NeedInterface;
 }
-void Parameter::setRe(doubflo Re)
+void Parameter::setRe(real Re)
 {
 	ic.Re = Re;
 }
-void Parameter::setFactorPressBC(doubflo factorPressBC)
+void Parameter::setFactorPressBC(real factorPressBC)
 {
 	ic.factorPressBC = factorPressBC;
 }
@@ -2901,35 +2905,35 @@ void Parameter::setDistZ(std::vector<int> DistZ)
 {
 	ic.DistZ = DistZ;
 }
-void Parameter::setScaleLBMtoSI(std::vector<doubflo> scaleLBMtoSI)
+void Parameter::setScaleLBMtoSI(std::vector<real> scaleLBMtoSI)
 {
 	ic.scaleLBMtoSI = scaleLBMtoSI;
 }
-void Parameter::setTranslateLBMtoSI(std::vector<doubflo> translateLBMtoSI)
+void Parameter::setTranslateLBMtoSI(std::vector<real> translateLBMtoSI)
 {
 	ic.translateLBMtoSI = translateLBMtoSI;
 }
-void Parameter::setMinCoordX(std::vector<doubflo> MinCoordX)
+void Parameter::setMinCoordX(std::vector<real> MinCoordX)
 {
 	ic.minCoordX = MinCoordX;
 }
-void Parameter::setMinCoordY(std::vector<doubflo> MinCoordY)
+void Parameter::setMinCoordY(std::vector<real> MinCoordY)
 {
 	ic.minCoordY = MinCoordY;
 }
-void Parameter::setMinCoordZ(std::vector<doubflo> MinCoordZ)
+void Parameter::setMinCoordZ(std::vector<real> MinCoordZ)
 {
 	ic.minCoordZ = MinCoordZ;
 }
-void Parameter::setMaxCoordX(std::vector<doubflo> MaxCoordX)
+void Parameter::setMaxCoordX(std::vector<real> MaxCoordX)
 {
 	ic.maxCoordX = MaxCoordX;
 }
-void Parameter::setMaxCoordY(std::vector<doubflo> MaxCoordY)
+void Parameter::setMaxCoordY(std::vector<real> MaxCoordY)
 {
 	ic.maxCoordY = MaxCoordY;
 }
-void Parameter::setMaxCoordZ(std::vector<doubflo> MaxCoordZ)
+void Parameter::setMaxCoordZ(std::vector<real> MaxCoordZ)
 {
 	ic.maxCoordZ = MaxCoordZ;
 }
@@ -3209,7 +3213,7 @@ void Parameter::setConcentration(std::string concFile)
 {
 	ic.concentration = concFile;
 }
-void Parameter::setclockCycleForMP(doubflo clockCycleForMP)
+void Parameter::setclockCycleForMP(real clockCycleForMP)
 {
 	ic.clockCycleForMP = clockCycleForMP;
 }
@@ -3484,27 +3488,27 @@ double* Parameter::getForcesDouble()
 {
 	return this->hostForcing;
 }
-doubflo* Parameter::getForcesHost()
+real* Parameter::getForcesHost()
 {
 	return this->forcingH;
 }
-doubflo* Parameter::getForcesDev()
+real* Parameter::getForcesDev()
 {
 	return this->forcingD;
 }
-doubflo Parameter::getPhi()
+real Parameter::getPhi()
 {
 	return Phi;
 }
-doubflo Parameter::getAngularVelocity()
+real Parameter::getAngularVelocity()
 {
 	return angularVelocity;
 }
-doubflo Parameter::getStartXHotWall()
+real Parameter::getStartXHotWall()
 {
 	return this->startXHotWall;
 }
-doubflo Parameter::getEndXHotWall()
+real Parameter::getEndXHotWall()
 {
 	return this->endXHotWall;
 }
@@ -3536,9 +3540,9 @@ unsigned int Parameter::getSizeMat(int level)
 {
 	return parH[level]->size_Mat;
 }
-unsigned int Parameter::getMemSizedoubflo(int level)
+unsigned int Parameter::getMemSizereal(int level)
 {
-	return parH[level]->mem_size_doubflo;
+	return parH[level]->mem_size_real;
 }
 unsigned int Parameter::getMemSizeInt(int level)
 {
@@ -3548,9 +3552,9 @@ unsigned int Parameter::getMemSizeBool(int level)
 {
 	return parH[level]->mem_size_bool;
 }
-unsigned int Parameter::getMemSizedoubfloYZ(int level)
+unsigned int Parameter::getMemSizerealYZ(int level)
 {
-	return parH[level]->mem_size_doubflo_yz;
+	return parH[level]->mem_size_real_yz;
 }
 int Parameter::getFine()
 {
@@ -3666,47 +3670,47 @@ bool Parameter::getReadGeo()
 {
 	return ic.readGeo;
 }
-doubflo Parameter::getDiffusivity()
+real Parameter::getDiffusivity()
 {
 	return ic.Diffusivity;
 }
-doubflo Parameter::getTemperatureInit()
+real Parameter::getTemperatureInit()
 {
 	return ic.Temp;
 }
-doubflo Parameter::getTemperatureBC()
+real Parameter::getTemperatureBC()
 {
 	return ic.TempBC;
 }
-doubflo Parameter::getViscosity()
+real Parameter::getViscosity()
 {
 	return ic.vis;
 }
-doubflo Parameter::getVelocity()
+real Parameter::getVelocity()
 {
 	return ic.u0;
 }
-doubflo Parameter::getViscosityRatio()
+real Parameter::getViscosityRatio()
 {
 	return ic.vis_ratio;
 }
-doubflo Parameter::getVelocityRatio()
+real Parameter::getVelocityRatio()
 {
 	return ic.u0_ratio;
 }
-doubflo Parameter::getDensityRatio()
+real Parameter::getDensityRatio()
 {
 	return ic.delta_rho;
 }
-doubflo Parameter::getPressRatio()
+real Parameter::getPressRatio()
 {
 	return ic.delta_press;
 }
-doubflo Parameter::getRealX()
+real Parameter::getRealX()
 {
 	return ic.RealX;
 }
-doubflo Parameter::getRealY()
+real Parameter::getRealY()
 {
 	return ic.RealY;
 }
@@ -3758,11 +3762,11 @@ std::vector<bool> Parameter::getNeedInterface()
 {
 	return ic.NeedInterface;
 }
-doubflo Parameter::getRe()
+real Parameter::getRe()
 {
 	return ic.Re;
 }
-doubflo Parameter::getFactorPressBC()
+real Parameter::getFactorPressBC()
 {
 	return ic.factorPressBC;
 }
@@ -3790,35 +3794,35 @@ std::vector<int> Parameter::getDistZ()
 {
 	return ic.DistZ;
 }
-std::vector<doubflo> Parameter::getScaleLBMtoSI()
+std::vector<real> Parameter::getScaleLBMtoSI()
 {
 	return ic.scaleLBMtoSI;
 }
-std::vector<doubflo> Parameter::getTranslateLBMtoSI()
+std::vector<real> Parameter::getTranslateLBMtoSI()
 {
 	return ic.translateLBMtoSI;
 }
-std::vector<doubflo> Parameter::getMinCoordX()
+std::vector<real> Parameter::getMinCoordX()
 {
 	return ic.minCoordX;
 }
-std::vector<doubflo> Parameter::getMinCoordY()
+std::vector<real> Parameter::getMinCoordY()
 {
 	return ic.minCoordY;
 }
-std::vector<doubflo> Parameter::getMinCoordZ()
+std::vector<real> Parameter::getMinCoordZ()
 {
 	return ic.minCoordZ;
 }
-std::vector<doubflo> Parameter::getMaxCoordX()
+std::vector<real> Parameter::getMaxCoordX()
 {
 	return ic.maxCoordX;
 }
-std::vector<doubflo> Parameter::getMaxCoordY()
+std::vector<real> Parameter::getMaxCoordY()
 {
 	return ic.maxCoordY;
 }
-std::vector<doubflo> Parameter::getMaxCoordZ()
+std::vector<real> Parameter::getMaxCoordZ()
 {
 	return ic.maxCoordZ;
 }
@@ -4098,7 +4102,7 @@ std::string Parameter::getConcentration()
 {
 	return ic.concentration;
 }
-doubflo Parameter::getclockCycleForMP()
+real Parameter::getclockCycleForMP()
 {
 	return ic.clockCycleForMP;
 }
@@ -4390,8 +4394,8 @@ void Parameter::initInterfaceParameter(int level)
 	//                                  (((parH[level+1]->gridNY-6)/2)*((parH[level+1]->gridNX-6)/2)*2);
 	parH[level]->mem_size_kCF       = sizeof(unsigned int)*parH[level]->K_CF;
 	parH[level]->mem_size_kFC       = sizeof(unsigned int)*parH[level]->K_FC;
-	parH[level]->mem_size_kCF_off   = sizeof(doubflo)*parH[level]->K_CF;
-	parH[level]->mem_size_kFC_off   = sizeof(doubflo)*parH[level]->K_FC;
+	parH[level]->mem_size_kCF_off   = sizeof(real)*parH[level]->K_CF;
+	parH[level]->mem_size_kFC_off   = sizeof(real)*parH[level]->K_FC;
 	///////////////////////////////////////////////////////////////////////////////////////////////////
 	//device
 	parD[level]->K_CF               = parH[level]->K_CF;
@@ -4402,46 +4406,46 @@ void Parameter::initInterfaceParameter(int level)
 	parD[level]->mem_size_kFC_off   = parH[level]->mem_size_kFC_off;
 	///////////////////////////////////////////////////////////////////////////////////////////////////
 }
-doubflo Parameter::TrafoXtoWorld(int CoordX, int level)
+real Parameter::TrafoXtoWorld(int CoordX, int level)
 {
 	return (parH[level]->mTtoWx*CoordX+parH[level]->cTtoWx);
 }
-doubflo Parameter::TrafoYtoWorld(int CoordY, int level)
+real Parameter::TrafoYtoWorld(int CoordY, int level)
 {
 	return (parH[level]->mTtoWy*CoordY+parH[level]->cTtoWy);
 }
-doubflo Parameter::TrafoZtoWorld(int CoordZ, int level)
+real Parameter::TrafoZtoWorld(int CoordZ, int level)
 {
 	return (parH[level]->mTtoWz*CoordZ+parH[level]->cTtoWz);
 }
-doubflo Parameter::TrafoXtoMGsWorld(int CoordX, int level)
+real Parameter::TrafoXtoMGsWorld(int CoordX, int level)
 {
-	doubflo temp = 0;
+	real temp = 0;
 	for (int i = 0; i <= level; i++)
 	{
 		temp += (parH[i]->XdistKn + 0.25f) * 2.f * parH[i]->dx;
 	}
-	temp += (doubflo)((CoordX - STARTOFFX) * parH[level]->dx);
+	temp += (real)((CoordX - STARTOFFX) * parH[level]->dx);
 	return temp;
 }
-doubflo Parameter::TrafoYtoMGsWorld(int CoordY, int level)
+real Parameter::TrafoYtoMGsWorld(int CoordY, int level)
 {
-	doubflo temp = 0;
+	real temp = 0;
 	for (int i = 0; i <= level; i++)
 	{
 		temp += (parH[i]->YdistKn + 0.25f) * 2.f * parH[i]->dx;
 	}
-	temp += (doubflo)((CoordY - STARTOFFY) * parH[level]->dx);
+	temp += (real)((CoordY - STARTOFFY) * parH[level]->dx);
 	return temp;
 }
-doubflo Parameter::TrafoZtoMGsWorld(int CoordZ, int level)
+real Parameter::TrafoZtoMGsWorld(int CoordZ, int level)
 {
-	doubflo temp = 0;
+	real temp = 0;
 	for (int i = 0; i <= level; i++)
 	{
 		temp += (parH[i]->ZdistKn + 0.25f) * 2.f * parH[i]->dx;
 	}
-	temp += (doubflo)((CoordZ - STARTOFFZ) * parH[level]->dx);
+	temp += (real)((CoordZ - STARTOFFZ) * parH[level]->dx);
 	return temp;
 }
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/VirtualFluids_GPU/Parameter/Parameter.h b/src/VirtualFluids_GPU/Parameter/Parameter.h
index dfaccd56d..26630c1c1 100644
--- a/src/VirtualFluids_GPU/Parameter/Parameter.h
+++ b/src/VirtualFluids_GPU/Parameter/Parameter.h
@@ -14,6 +14,8 @@
 //random numbers
 #include <curand.h>
 #include <curand_kernel.h>
+#include "core/PointerDefinitions.h"
+#include "VirtualFluidsDefinitions.h"
 
 //struct
 struct ParameterStruct{
@@ -31,8 +33,8 @@ struct ParameterStruct{
 	//thermo//////////////////
 	Distributions7 d7;
 	Distributions27 d27;
-	doubflo *Conc, *Conc_Full;
-	doubflo diffusivity;
+	real *Conc, *Conc_Full;
+	real diffusivity;
 	//BC NoSlip
 	TempforBoundaryConditions Temp;
 	//BC Velocity
@@ -40,16 +42,16 @@ struct ParameterStruct{
 	//BC Pressure
 	TempPressforBoundaryConditions TempPress;
 	//Plane Conc
-	doubflo *ConcPlaneIn, *ConcPlaneOut1, *ConcPlaneOut2;
+	real *ConcPlaneIn, *ConcPlaneOut1, *ConcPlaneOut2;
 	std::vector<double> PlaneConcVectorIn, PlaneConcVectorOut1, PlaneConcVectorOut2;
 
 	//trafo///////////////////
-	doubflo mTtoWx, mTtoWy, mTtoWz;
-	doubflo cTtoWx, cTtoWy, cTtoWz;
+	real mTtoWx, mTtoWy, mTtoWz;
+	real cTtoWx, cTtoWy, cTtoWz;
 
 	//MGstrafo////////////////
-	doubflo cStartx, cStarty, cStartz;
-	doubflo cFx, cFy, cFz;
+	real cStartx, cStarty, cStartz;
+	real cFx, cFy, cFz;
 
 	//geo/////////////////////
 	int *geo;
@@ -64,22 +66,22 @@ struct ParameterStruct{
 
 	//coordinates////////////
 	//unsigned int *coordX_SP, *coordY_SP, *coordZ_SP;
-	doubflo *coordX_SP, *coordY_SP, *coordZ_SP;
+	real *coordX_SP, *coordY_SP, *coordZ_SP;
 
 	//vel parab///////////////
-	doubflo *vParab;
+	real *vParab;
 
 	// turbulent viscosity ///
-	doubflo *turbViscosity;
+	real *turbViscosity;
 
 	//macroscopic values//////
-	doubflo *vx,    *vy,    *vz,    *rho;
-	doubflo *vx_SP, *vy_SP, *vz_SP, *rho_SP, *press_SP;
-	doubflo vis, omega;
+	real *vx,    *vy,    *vz,    *rho;
+	real *vx_SP, *vy_SP, *vz_SP, *rho_SP, *press_SP;
+	real vis, omega;
 
 	//median-macro-values/////
-	doubflo *vx_SP_Med, *vy_SP_Med, *vz_SP_Med, *rho_SP_Med, *press_SP_Med;
-	doubflo *vx_SP_Med_Out, *vy_SP_Med_Out, *vz_SP_Med_Out, *rho_SP_Med_Out, *press_SP_Med_Out;
+	real *vx_SP_Med, *vy_SP_Med, *vz_SP_Med, *rho_SP_Med, *press_SP_Med;
+	real *vx_SP_Med_Out, *vy_SP_Med_Out, *vz_SP_Med_Out, *rho_SP_Med_Out, *press_SP_Med_Out;
 
 	//grid////////////////////
 	unsigned int nx, ny, nz;
@@ -106,19 +108,19 @@ struct ParameterStruct{
 	bool isSetPress;
 
 	//memsizeSP/////////////////
-	unsigned int mem_size_doubflo_SP;
+	unsigned int mem_size_real_SP;
 	unsigned int mem_size_int_SP;
 
 	//memsize/////////////////
-	unsigned int mem_size_doubflo;
+	unsigned int mem_size_real;
 	unsigned int mem_size_int;
 	unsigned int mem_size_bool;
-	unsigned int mem_size_doubflo_yz;
+	unsigned int mem_size_real_yz;
 
 	//print///////////////////
 	unsigned int startz, endz;
-	doubflo Lx,Ly,Lz,dx;
-	doubflo distX, distY, distZ;
+	real Lx,Ly,Lz,dx;
+	real distX, distY, distZ;
 
 	//interface////////////////
 	bool need_interface[6];
@@ -156,17 +158,17 @@ struct ParameterStruct{
 
 	//////////////////////////////////////////////////////////////////////////
 	//velocities to fit the force
-	doubflo *VxForce, *VyForce, *VzForce;
+	real *VxForce, *VyForce, *VzForce;
 	//////////////////////////////////////////////////////////////////////////
 
 	//Measure Points/////////
 	std::vector<MeasurePoints> MP; 
 	unsigned int* kMP;
-	doubflo* VxMP;
-	doubflo* VyMP;
-	doubflo* VzMP;
-	doubflo* RhoMP;
-	unsigned int memSizeDoubflokMP, memSizeIntkMP,    numberOfPointskMP;
+	real* VxMP;
+	real* VyMP;
+	real* VzMP;
+	real* RhoMP;
+	unsigned int memSizerealkMP, memSizeIntkMP,    numberOfPointskMP;
 	unsigned int numberOfValuesMP;
 
 	//Drag Lift//////////////
@@ -178,13 +180,13 @@ struct ParameterStruct{
 	std::vector<double> DragZvector;
 
 	//2ndMoments////////////
-	doubflo *kxyFromfcNEQ, *kyzFromfcNEQ, *kxzFromfcNEQ, *kxxMyyFromfcNEQ, *kxxMzzFromfcNEQ;
+	real *kxyFromfcNEQ, *kyzFromfcNEQ, *kxzFromfcNEQ, *kxxMyyFromfcNEQ, *kxxMzzFromfcNEQ;
 
 	//3rdMoments////////////
-	doubflo *CUMbbb, *CUMabc, *CUMbac, *CUMbca, *CUMcba, *CUMacb, *CUMcab;
+	real *CUMbbb, *CUMabc, *CUMbac, *CUMbca, *CUMcba, *CUMacb, *CUMcab;
 																				
 	//HigherMoments/////////
-	doubflo *CUMcbb, *CUMbcb, *CUMbbc, *CUMcca, *CUMcac, *CUMacc, *CUMbcc, *CUMcbc, *CUMccb, *CUMccc;
+	real *CUMcbb, *CUMbcb, *CUMbbc, *CUMcca, *CUMcac, *CUMacc, *CUMbcc, *CUMcbc, *CUMccb, *CUMccc;
 
 	//CpTop/////////////////													
 	int *cpTopIndex;															
@@ -213,7 +215,7 @@ struct ParameterStruct{
 	unsigned int numberOfPointsConc;
 
 	//deltaPhi
-	doubflo deltaPhi;
+	real deltaPhi;
 
 	////////////////////////////////////////////////////////////////////////////
 	//particles
@@ -264,13 +266,15 @@ struct ParameterStruct{
 	////////////////////////////////////////////////////////////////////////////
 };
 
-class Parameter
+class VF_PUBLIC Parameter
 {
 public:
 	////////////////////////////////////////////////////////////////////////////
 	////really ugly...should be in private...
 	//Parameter();
 	////////////////////////////////////////////////////////////////////////////
+    static SPtr<Parameter> make();
+
 
 	static Parameter* getInstanz();
 	ParameterStruct* getParH(int level);
@@ -543,9 +547,9 @@ public:
 
 	//////////////////////////////////////////////////////////////////////////
 	//setter
-	void setForcing(doubflo forcingX, doubflo forcingY, doubflo forcingZ);
-	void setPhi(doubflo inPhi);
-	void setAngularVelocity(doubflo inAngVel);
+	void setForcing(real forcingX, real forcingY, real forcingZ);
+	void setPhi(real inPhi);
+	void setAngularVelocity(real inAngVel);
 	void setStepEnsight(unsigned int step);
 	void setOutputCount(unsigned int outputCount);
 	void setlimitOfNodesForVTK(unsigned int limitOfNodesForVTK);
@@ -553,15 +557,15 @@ public:
 	void setSizeMatSparse(int level);
 	void setDiffOn(bool isDiff);
 	void setDiffMod(int DiffMod);
-	void setDiffusivity(doubflo Diffusivity);
+	void setDiffusivity(real Diffusivity);
 	void setD3Qxx(int d3qxx);
 	void setMaxLevel(int maxlevel);
 	void setParticleBasicLevel(int pbl);
 	void setParticleInitLevel(int pil);
 	void setNumberOfParticles(int nop);
 	void setCalcParticles(bool calcParticles);
-	void setStartXHotWall(doubflo startXHotWall);
-	void setEndXHotWall(doubflo endXHotWall);
+	void setStartXHotWall(real startXHotWall);
+	void setEndXHotWall(real endXHotWall);
 	void setTEnd(unsigned int tend);
 	void setTOut(unsigned int tout);
 	void setTStartOut(unsigned int tStartOut);
@@ -641,18 +645,18 @@ public:
 	void setConcentration(std::string concFile);
 	void setPrintFiles(bool printfiles);
 	void setReadGeo(bool readGeo);
-	void setTemperatureInit(doubflo Temp);
-	void setTemperatureBC(doubflo TempBC);
-	void setViscosity(doubflo Viscosity);
-	void setVelocity(doubflo Velocity);
-	void setViscosityRatio(doubflo ViscosityRatio);
-	void setVelocityRatio(doubflo VelocityRatio);
-	void setDensityRatio(doubflo DensityRatio);
-	void setPressRatio(doubflo PressRatio);
-	void setRealX(doubflo RealX);
-	void setRealY(doubflo RealY);
-	void setRe(doubflo Re);
-	void setFactorPressBC(doubflo factorPressBC);
+	void setTemperatureInit(real Temp);
+	void setTemperatureBC(real TempBC);
+	void setViscosity(real Viscosity);
+	void setVelocity(real Velocity);
+	void setViscosityRatio(real ViscosityRatio);
+	void setVelocityRatio(real VelocityRatio);
+	void setDensityRatio(real DensityRatio);
+	void setPressRatio(real PressRatio);
+	void setRealX(real RealX);
+	void setRealY(real RealY);
+	void setRe(real Re);
+	void setFactorPressBC(real factorPressBC);
 	void setIsGeo(bool isGeo);
 	void setIsGeoNormal(bool isGeoNormal);
 	void setIsInflowNormal(bool isInflowNormal);
@@ -663,7 +667,7 @@ public:
 	void setUseMeasurePoints(bool useMeasurePoints);
 	void setUseWale(bool useWale);
 	void setSimulatePorousMedia(bool simulatePorousMedia);
-	void setclockCycleForMP(doubflo clockCycleForMP);
+	void setclockCycleForMP(real clockCycleForMP);
 	void setDevices(std::vector<int> devices);
 	void setGridX(std::vector<int> GridX);
 	void setGridY(std::vector<int> GridY);
@@ -671,14 +675,14 @@ public:
 	void setDistX(std::vector<int> DistX);
 	void setDistY(std::vector<int> DistY);
 	void setDistZ(std::vector<int> DistZ);
-	void setScaleLBMtoSI(std::vector<doubflo> scaleLBMtoSI);
-	void setTranslateLBMtoSI(std::vector<doubflo> translateLBMtoSI);
-	void setMinCoordX(std::vector<doubflo> MinCoordX);
-	void setMinCoordY(std::vector<doubflo> MinCoordY);
-	void setMinCoordZ(std::vector<doubflo> MinCoordZ);
-	void setMaxCoordX(std::vector<doubflo> MaxCoordX);
-	void setMaxCoordY(std::vector<doubflo> MaxCoordY);
-	void setMaxCoordZ(std::vector<doubflo> MaxCoordZ);
+	void setScaleLBMtoSI(std::vector<real> scaleLBMtoSI);
+	void setTranslateLBMtoSI(std::vector<real> translateLBMtoSI);
+	void setMinCoordX(std::vector<real> MinCoordX);
+	void setMinCoordY(std::vector<real> MinCoordY);
+	void setMinCoordZ(std::vector<real> MinCoordZ);
+	void setMaxCoordX(std::vector<real> MaxCoordX);
+	void setMaxCoordY(std::vector<real> MaxCoordY);
+	void setMaxCoordZ(std::vector<real> MaxCoordZ);
 	void setNeedInterface(std::vector<bool> NeedInterface);
 	void setTempH(TempforBoundaryConditions* TempH);
 	void setTempD(TempforBoundaryConditions* TempD);
@@ -729,12 +733,12 @@ public:
 
 	//getter
 	double* getForcesDouble();
-	doubflo* getForcesHost();
-	doubflo* getForcesDev();
-	doubflo getPhi();
-	doubflo getAngularVelocity();
-	doubflo getStartXHotWall();
-	doubflo getEndXHotWall();	
+	real* getForcesHost();
+	real* getForcesDev();
+	real getPhi();
+	real getAngularVelocity();
+	real getStartXHotWall();
+	real getEndXHotWall();	
 	unsigned int getStepEnsight();
 	unsigned int getOutputCount();
 	unsigned int getlimitOfNodesForVTK();
@@ -826,10 +830,10 @@ public:
 	unsigned int getPressOutID();
 	unsigned int getPressInZ();
 	unsigned int getPressOutZ();
-	unsigned int getMemSizedoubflo(int level);
+	unsigned int getMemSizereal(int level);
 	unsigned int getMemSizeInt(int level);
 	unsigned int getMemSizeBool(int level);
-	unsigned int getMemSizedoubfloYZ(int level);
+	unsigned int getMemSizerealYZ(int level);
 	unsigned int getSizeMat(int level);
 	unsigned int getTStart();
 	unsigned int getTInit();
@@ -837,20 +841,20 @@ public:
 	unsigned int getTOut();
 	unsigned int getTStartOut();
 	unsigned int getTimestepForMP();
-	doubflo getDiffusivity();
-	doubflo getTemperatureInit();
-	doubflo getTemperatureBC();
-	doubflo getViscosity();
-	doubflo getVelocity();
-	doubflo getViscosityRatio();
-	doubflo getVelocityRatio();
-	doubflo getDensityRatio();
-	doubflo getPressRatio();
-	doubflo getRealX();
-	doubflo getRealY();
-	doubflo getRe();
-	doubflo getFactorPressBC();
-	doubflo getclockCycleForMP();
+	real getDiffusivity();
+	real getTemperatureInit();
+	real getTemperatureBC();
+	real getViscosity();
+	real getVelocity();
+	real getViscosityRatio();
+	real getVelocityRatio();
+	real getDensityRatio();
+	real getPressRatio();
+	real getRealX();
+	real getRealY();
+	real getRe();
+	real getFactorPressBC();
+	real getclockCycleForMP();
 	std::vector<int> getDevices();
 	std::vector<int> getGridX();
 	std::vector<int> getGridY();
@@ -858,14 +862,14 @@ public:
 	std::vector<int> getDistX();
 	std::vector<int> getDistY();
 	std::vector<int> getDistZ();
-	std::vector<doubflo> getScaleLBMtoSI();
-	std::vector<doubflo> getTranslateLBMtoSI();
-	std::vector<doubflo> getMinCoordX();
-	std::vector<doubflo> getMinCoordY();
-	std::vector<doubflo> getMinCoordZ();
-	std::vector<doubflo> getMaxCoordX();
-	std::vector<doubflo> getMaxCoordY();
-	std::vector<doubflo> getMaxCoordZ();
+	std::vector<real> getScaleLBMtoSI();
+	std::vector<real> getTranslateLBMtoSI();
+	std::vector<real> getMinCoordX();
+	std::vector<real> getMinCoordY();
+	std::vector<real> getMinCoordZ();
+	std::vector<real> getMaxCoordX();
+	std::vector<real> getMaxCoordY();
+	std::vector<real> getMaxCoordZ();
 	std::vector<bool> getNeedInterface();
 	TempforBoundaryConditions* getTempH();
 	TempforBoundaryConditions* getTempD();
@@ -921,7 +925,10 @@ public:
 	curandState* getRandomState();
 
 
-
+    public:
+        //Forcing///////////////
+        real *forcingH, *forcingD;
+        double hostForcing[3];
 
 protected:
 private:
@@ -941,8 +948,8 @@ private:
 	int particleBasicLevel, particleInitLevel;
 	int numberOfParticles;
 	bool calcParticles;
-	doubflo stickToSolid;
-	doubflo startXHotWall, endXHotWall;
+	real stickToSolid;
+	real startXHotWall, endXHotWall;
 	//////////////////////////////////////////////////////////////////////////
 	//CUDA random number generation
 	curandState* devState;
@@ -956,16 +963,12 @@ private:
 	TempPressforBoundaryConditions *TempPressH, *TempPressD;
 
 	//Drehung///////////////
-	doubflo Phi, angularVelocity;
+	real Phi, angularVelocity;
 	unsigned int startTurn;
 
 	//Step of Ensight writing//
 	unsigned int stepEnsight;
 
-	//Forcing///////////////
-	doubflo *forcingH, *forcingD;
-	double hostForcing[3];
-
 	std::vector<ParameterStruct*> parH;
 	std::vector<ParameterStruct*> parD;
 	//LogWriter output;
@@ -973,12 +976,12 @@ private:
 	Parameter();
 	Parameter(const Parameter&);
 	void initInterfaceParameter(int level);
-	doubflo TrafoXtoWorld(int CoordX, int level);
-	doubflo TrafoYtoWorld(int CoordY, int level);
-	doubflo TrafoZtoWorld(int CoordZ, int level);
-	doubflo TrafoXtoMGsWorld(int CoordX, int level);
-	doubflo TrafoYtoMGsWorld(int CoordY, int level);
-	doubflo TrafoZtoMGsWorld(int CoordZ, int level);
+	real TrafoXtoWorld(int CoordX, int level);
+	real TrafoYtoWorld(int CoordY, int level);
+	real TrafoZtoWorld(int CoordZ, int level);
+	real TrafoXtoMGsWorld(int CoordX, int level);
+	real TrafoYtoMGsWorld(int CoordY, int level);
+	real TrafoZtoMGsWorld(int CoordZ, int level);
 
 	//Multi GPGPU///////////////
 	//1D domain decomposition
diff --git a/src/VirtualFluids_GPU/Particles/Particles.cpp b/src/VirtualFluids_GPU/Particles/Particles.cpp
index fc36a0e9e..8e82b5258 100644
--- a/src/VirtualFluids_GPU/Particles/Particles.cpp
+++ b/src/VirtualFluids_GPU/Particles/Particles.cpp
@@ -32,14 +32,14 @@ void allocParticles(Parameter* para)
 		//set memory size
 		para->getParH(lev)->plp.memSizeTimestep      = sizeof(unsigned int)*(para->getParH(lev)->plp.numberOfTimestepsParticles);
 		para->getParH(lev)->plp.memSizeID            = sizeof(unsigned int)*(para->getParH(lev)->plp.numberOfParticles);
-		para->getParH(lev)->plp.memSizeDoubflo       = sizeof(doubflo)*(para->getParH(lev)->plp.numberOfParticles);
-		para->getParH(lev)->plp.memSizeDoubfloAll	 = sizeof(doubflo)*(para->getParH(lev)->plp.numberOfParticles * para->getParH(lev)->plp.numberOfTimestepsParticles);
+		para->getParH(lev)->plp.memSizereal       = sizeof(real)*(para->getParH(lev)->plp.numberOfParticles);
+		para->getParH(lev)->plp.memSizerealAll	 = sizeof(real)*(para->getParH(lev)->plp.numberOfParticles * para->getParH(lev)->plp.numberOfTimestepsParticles);
 		para->getParH(lev)->plp.memSizeBool          = sizeof(bool)*(para->getParH(lev)->plp.numberOfParticles);
 		para->getParH(lev)->plp.memSizeBoolBC        = sizeof(bool)*(para->getParH(lev)->QGeom.kQ);//depends on Geometry!!!
 		para->getParD(lev)->plp.memSizeTimestep      = para->getParH(lev)->plp.memSizeTimestep;
 		para->getParD(lev)->plp.memSizeID            = para->getParH(lev)->plp.memSizeID;        
-		para->getParD(lev)->plp.memSizeDoubflo       = para->getParH(lev)->plp.memSizeDoubflo;
-		para->getParD(lev)->plp.memSizeDoubfloAll	 = para->getParH(lev)->plp.memSizeDoubfloAll;
+		para->getParD(lev)->plp.memSizereal       = para->getParH(lev)->plp.memSizereal;
+		para->getParD(lev)->plp.memSizerealAll	 = para->getParH(lev)->plp.memSizerealAll;
 		para->getParD(lev)->plp.memSizeBool          = para->getParH(lev)->plp.memSizeBool;
 		para->getParD(lev)->plp.memSizeBoolBC        = para->getParH(lev)->plp.memSizeBoolBC;
 		//////////////////////////////////////////////////////////////////////////
@@ -93,21 +93,21 @@ void initParticles(Parameter* para)
 		int maximumT = para->getParH(lev)->plp.numberOfParticles * para->getParH(lev)->plp.numberOfTimestepsParticles;
 		for (int i = 0; i < maximumT; i++)
 		{
-			para->getParH(lev)->plp.coordXlocal[i]   = (doubflo)0.0;
-			para->getParH(lev)->plp.coordYlocal[i]   = (doubflo)0.0; 
-			para->getParH(lev)->plp.coordZlocal[i]   = (doubflo)0.0; 
-			para->getParH(lev)->plp.coordXabsolut[i] = (doubflo)0.0; 
-			para->getParH(lev)->plp.coordYabsolut[i] = (doubflo)0.0; 
-			para->getParH(lev)->plp.coordZabsolut[i] = (doubflo)0.0; 
-			para->getParH(lev)->plp.veloX[i]         = (doubflo)0.0; 
-			para->getParH(lev)->plp.veloY[i]         = (doubflo)0.0; 
-			para->getParH(lev)->plp.veloZ[i]         = (doubflo)0.0; 
+			para->getParH(lev)->plp.coordXlocal[i]   = (real)0.0;
+			para->getParH(lev)->plp.coordYlocal[i]   = (real)0.0; 
+			para->getParH(lev)->plp.coordZlocal[i]   = (real)0.0; 
+			para->getParH(lev)->plp.coordXabsolut[i] = (real)0.0; 
+			para->getParH(lev)->plp.coordYabsolut[i] = (real)0.0; 
+			para->getParH(lev)->plp.coordZabsolut[i] = (real)0.0; 
+			para->getParH(lev)->plp.veloX[i]         = (real)0.0; 
+			para->getParH(lev)->plp.veloY[i]         = (real)0.0; 
+			para->getParH(lev)->plp.veloZ[i]         = (real)0.0; 
 		}
 		//////////////////////////////////////////////////////////////////////////
-		doubflo centerX  =  1.0f;					//uebergabeparameter
-		doubflo centerY  = 10.5f;					//uebergabeparameter
-		doubflo centerZ  = 10.5f;					//uebergabeparameter
-		doubflo diameter = 15.0f;//21.0f;					//uebergabeparameter
+		real centerX  =  1.0f;					//uebergabeparameter
+		real centerY  = 10.5f;					//uebergabeparameter
+		real centerZ  = 10.5f;					//uebergabeparameter
+		real diameter = 15.0f;//21.0f;					//uebergabeparameter
 		unsigned int numberOfParticleSizes = 41;	//uebergabeparameter
 		//////////////////////////////////////////////////////////////////////////
 		//random
@@ -121,7 +121,7 @@ void initParticles(Parameter* para)
 		std::vector< double > zCoordVec;
 		double dist;
 		//////////////////////////////////////////////////////////////////////////
-		doubflo dx = (doubflo)(1.0/pow(2,lev));
+		real dx = (real)(1.0/pow(2,lev));
 		std::vector< int > tempID;
 		//////////////////////////////////////////////////////////////////////////
 
@@ -136,9 +136,9 @@ void initParticles(Parameter* para)
 			{
 				zCoordVec[i] = sqrt(pow((diameter/2),2) - pow((yCoordVec[i]-centerY),2)) + centerZ;
 			}
-			para->getParH(lev)->plp.coordXabsolut[i] = (doubflo)2.0; 
-			para->getParH(lev)->plp.coordYabsolut[i] = (doubflo)yCoordVec[i]; 
-			para->getParH(lev)->plp.coordZabsolut[i] = (doubflo)zCoordVec[i]; 
+			para->getParH(lev)->plp.coordXabsolut[i] = (real)2.0; 
+			para->getParH(lev)->plp.coordYabsolut[i] = (real)yCoordVec[i]; 
+			para->getParH(lev)->plp.coordZabsolut[i] = (real)zCoordVec[i]; 
 
 			// find IDs
 			for (unsigned int ii = 0; ii < para->getParH(lev)->size_Mat_SP; ii++)
@@ -256,15 +256,15 @@ void initParticles(Parameter* para)
 		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.stuck,         para->getParH(lev)->plp.stuck,         para->getParH(lev)->plp.memSizeBool,       cudaMemcpyHostToDevice));
 		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.ID,            para->getParH(lev)->plp.ID,            para->getParH(lev)->plp.memSizeID,         cudaMemcpyHostToDevice));
 		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.cellBaseID,    para->getParH(lev)->plp.cellBaseID,    para->getParH(lev)->plp.memSizeID,         cudaMemcpyHostToDevice));
-		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordXlocal,   para->getParH(lev)->plp.coordXlocal,   para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordYlocal,   para->getParH(lev)->plp.coordYlocal,   para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordZlocal,   para->getParH(lev)->plp.coordZlocal,   para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordXabsolut, para->getParH(lev)->plp.coordXabsolut, para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordYabsolut, para->getParH(lev)->plp.coordYabsolut, para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordZabsolut, para->getParH(lev)->plp.coordZabsolut, para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.veloX,         para->getParH(lev)->plp.veloX,         para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.veloY,         para->getParH(lev)->plp.veloY,         para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.veloZ,         para->getParH(lev)->plp.veloZ,         para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
+		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordXlocal,   para->getParH(lev)->plp.coordXlocal,   para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordYlocal,   para->getParH(lev)->plp.coordYlocal,   para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordZlocal,   para->getParH(lev)->plp.coordZlocal,   para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordXabsolut, para->getParH(lev)->plp.coordXabsolut, para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordYabsolut, para->getParH(lev)->plp.coordYabsolut, para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordZabsolut, para->getParH(lev)->plp.coordZabsolut, para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.veloX,         para->getParH(lev)->plp.veloX,         para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.veloY,         para->getParH(lev)->plp.veloY,         para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+		checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.veloZ,         para->getParH(lev)->plp.veloZ,         para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
 		////////////////////////////////////////////////////////////////////////////
 		////put some particles in the flow domain
 		//InitParticlesDevice(para->getParD(lev)->coordX_SP,
@@ -418,15 +418,15 @@ void copyAndPrintParticles(Parameter* para, unsigned int t, bool isInit)
 			//para->getParH(lev)->plp.veloY[0]         = para->getParH(lev)->plp.veloY[maximumT]        ; 
 			//para->getParH(lev)->plp.veloZ[0]         = para->getParH(lev)->plp.veloZ[maximumT]        ; 
 			//////////////////////////////////////////////////////////////////////////
-			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordXlocal,   para->getParH(lev)->plp.coordXlocal,   para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordYlocal,   para->getParH(lev)->plp.coordYlocal,   para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordZlocal,   para->getParH(lev)->plp.coordZlocal,   para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordXabsolut, para->getParH(lev)->plp.coordXabsolut, para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordYabsolut, para->getParH(lev)->plp.coordYabsolut, para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordZabsolut, para->getParH(lev)->plp.coordZabsolut, para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.veloX,         para->getParH(lev)->plp.veloX,         para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.veloY,         para->getParH(lev)->plp.veloY,         para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
-			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.veloZ,         para->getParH(lev)->plp.veloZ,         para->getParH(lev)->plp.memSizeDoubfloAll, cudaMemcpyHostToDevice));
+			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordXlocal,   para->getParH(lev)->plp.coordXlocal,   para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordYlocal,   para->getParH(lev)->plp.coordYlocal,   para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordZlocal,   para->getParH(lev)->plp.coordZlocal,   para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordXabsolut, para->getParH(lev)->plp.coordXabsolut, para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordYabsolut, para->getParH(lev)->plp.coordYabsolut, para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.coordZabsolut, para->getParH(lev)->plp.coordZabsolut, para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.veloX,         para->getParH(lev)->plp.veloX,         para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.veloY,         para->getParH(lev)->plp.veloY,         para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
+			checkCudaErrors( cudaMemcpy(para->getParD(lev)->plp.veloZ,         para->getParH(lev)->plp.veloZ,         para->getParH(lev)->plp.memSizerealAll, cudaMemcpyHostToDevice));
 			////////////////////////////////////////////////////////////////////////////
 		}
 	}
diff --git a/src/VirtualFluids_GPU/Restart/RestartObject.cpp b/src/VirtualFluids_GPU/Restart/RestartObject.cpp
index e6a35ee2b..ac01d57a1 100644
--- a/src/VirtualFluids_GPU/Restart/RestartObject.cpp
+++ b/src/VirtualFluids_GPU/Restart/RestartObject.cpp
@@ -14,7 +14,7 @@ void RestartObject::load(Parameter* para)
 {
 	for (int j = para->getCoarse(); j <= para->getFine(); j++)
 	{
-		std::vector<doubflo> vec;
+		std::vector<real> vec;
 		fs.push_back(vec);
 
 		for (unsigned int i = 0; i < (para->getD3Qxx()*para->getParH(j)->size_Mat_SP); i++)
@@ -32,14 +32,14 @@ void RestartObject::safe(Parameter* para)
 	}
 	for (int j = para->getCoarse(); j <= para->getFine(); j++)
 	{
-		std::vector<doubflo> vec;
+		std::vector<real> vec;
 		fs.push_back(vec);
 
 		for (unsigned int i = 0; i < (para->getD3Qxx()*para->getParH(j)->size_Mat_SP); i++)
 		{
 			if (UbMath::isNaN(para->getParH(j)->d0SP.f[0][i]))
 			{
-				fs[j].push_back((doubflo)0.0);
+				fs[j].push_back((real)0.0);
 			}
 			else
 			{
diff --git a/src/VirtualFluids_GPU/Restart/RestartObject.h b/src/VirtualFluids_GPU/Restart/RestartObject.h
index 3dd8fe18d..9e919b4b6 100644
--- a/src/VirtualFluids_GPU/Restart/RestartObject.h
+++ b/src/VirtualFluids_GPU/Restart/RestartObject.h
@@ -28,7 +28,7 @@ private:
 		ar & fs;
 	}
 	//////////////////////////////////////////////////////////////////////////
-	std::vector< std::vector<doubflo> > fs;
+	std::vector< std::vector<real> > fs;
 	//////////////////////////////////////////////////////////////////////////
 
 };
diff --git a/src/VirtualFluids_GPU/Temperature/FindQTemp.cpp b/src/VirtualFluids_GPU/Temperature/FindQTemp.cpp
index 262fc4087..5f209e355 100644
--- a/src/VirtualFluids_GPU/Temperature/FindQTemp.cpp
+++ b/src/VirtualFluids_GPU/Temperature/FindQTemp.cpp
@@ -8,7 +8,7 @@ void findTempPress(Parameter* para)
    int   ex[6]={   1, -1,  0,  0,  0,  0};
    int   ey[6]={   0,  0,  1, -1,  0,  0};
    int   ez[6]={   0,  0,  0,  0,  1, -1};
-   doubflo T, test;
+   real T, test;
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    unsigned int i, j, k, m, mm, l;
    int nx                                = para->getParH(para->getCoarse())->nx;
@@ -18,8 +18,8 @@ void findTempPress(Parameter* para)
    unsigned int nnz                      = para->getParH(para->getCoarse())->gridNZ;
    int* geo_mat                          = para->getParH(para->getCoarse())->geo;
    unsigned int* kk                      = para->getParH(para->getCoarse())->k;
-   doubflo TempBC                        = para->getTemperatureBC();
-   doubflo VelBC                         = para->getVelocity();
+   real TempBC                        = para->getTemperatureBC();
+   real VelBC                         = para->getVelocity();
    TempPressforBoundaryConditions  Temp  = para->getParH(para->getCoarse())->TempPress;
    Temp.kTemp = 0;
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -31,31 +31,31 @@ void findTempPress(Parameter* para)
          for(i=STARTOFFX+1; i<=nnx+STARTOFFX-2 ; i++){
             m = nx*(ny*k + j) + i;
             if(geo_mat[m]==GEO_FLUID){
-               test = (doubflo)-1.f;
+               test = (real)-1.f;
                for(l=0;l<=5;l++){
                   mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
                   if((geo_mat[mm] == GEO_SOLID) || (geo_mat[mm] == GEO_VOID)){
                      if (ez[l]==1)
                      {
-                        T = (doubflo)1.f;
+                        T = (real)1.f;
                      } 
                      //else if (ez[l]==-1)
                      //{
-                     //   T = (doubflo)1.f;//2.f;
+                     //   T = (real)1.f;//2.f;
                      //}
-                     test = (doubflo)1.f;
+                     test = (real)1.f;
                   }
                }
-               if (test == (doubflo)1.f)
+               if (test == (real)1.f)
                {
-                  if (T == (doubflo)1.f)
+                  if (T == (real)1.f)
                   {
                      Temp.k[Temp.kTemp]          = kk[m];
-                     Temp.temp[Temp.kTemp]       = (doubflo)0.f;//TempBC;                  
-                     Temp.velo[Temp.kTemp]       = (doubflo)0.f;//VelBC;                  
+                     Temp.temp[Temp.kTemp]       = (real)0.f;//TempBC;                  
+                     Temp.velo[Temp.kTemp]       = (real)0.f;//VelBC;                  
                      Temp.kTemp++;              
                   }                         
-                  //else if (T == (doubflo)2.f)
+                  //else if (T == (real)2.f)
                   //{
                   //   Temp.k[Temp.kTemp]          = kk[m];
                   //   Temp.temp[Temp.kTemp]       = -TempBC;                  
@@ -83,10 +83,10 @@ void findKforTempPress(Parameter* para)
    int   ex[6]={   1, -1,  0,  0,  0,  0,};
    int   ey[6]={   0,  0,  1, -1,  0,  0,};
    int   ez[6]={   0,  0,  0,  0,  1, -1,};
-   doubflo ON;
+   real ON;
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    unsigned int i, j, k, m, mm, l;
-   doubflo test = (doubflo)0.f;
+   real test = (real)0.f;
    int nx                                = para->getParH(para->getCoarse())->nx;
    int ny                                = para->getParH(para->getCoarse())->ny;
    unsigned int nnx                      = para->getParH(para->getCoarse())->gridNX;
@@ -104,14 +104,14 @@ void findKforTempPress(Parameter* para)
          for(i=STARTOFFX+1; i<=nnx+STARTOFFX-2 ; i++){
             m = nx*(ny*k + j) + i;
             if(geo_mat[m]==GEO_FLUID){
-               test =(doubflo)0.f;
+               test =(real)0.f;
                for(l=0;l<=5;l++){
                   mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
                   if((geo_mat[mm] == GEO_SOLID) || (geo_mat[mm] == GEO_VOID)){
-                     ON =(doubflo) 1.f; 
+                     ON =(real) 1.f; 
                   }
                   else{
-                     ON = (doubflo)0.f;
+                     ON = (real)0.f;
                   }
                   test += ON;
                }
@@ -132,7 +132,7 @@ void findTempVel(Parameter* para)
    int   ex[6]={   1, -1,  0,  0,  0,  0};
    int   ey[6]={   0,  0,  1, -1,  0,  0};
    int   ez[6]={   0,  0,  0,  0,  1, -1};
-   doubflo T, test;
+   real T, test;
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    unsigned int i, j, k, m, mm, l;
    int nx                             = para->getParH(para->getCoarse())->nx;
@@ -142,8 +142,8 @@ void findTempVel(Parameter* para)
    unsigned int nnz                   = para->getParH(para->getCoarse())->gridNZ;
    int* geo_mat                       = para->getParH(para->getCoarse())->geo;
    unsigned int* kk                   = para->getParH(para->getCoarse())->k;
-   doubflo TempBC                     = para->getTemperatureBC();
-   doubflo VelBC                      = para->getVelocity();
+   real TempBC                     = para->getTemperatureBC();
+   real VelBC                      = para->getVelocity();
    TempVelforBoundaryConditions  Temp = para->getParH(para->getCoarse())->TempVel;
    Temp.kTemp = 0;
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -154,31 +154,31 @@ void findTempVel(Parameter* para)
          for(i=STARTOFFX+1; i<=nnx+STARTOFFX-2 ; i++){
             m = nx*(ny*k + j) + i;
             if(geo_mat[m]==GEO_FLUID){
-               test = (doubflo)-1.f;
+               test = (real)-1.f;
                for(l=0;l<=5;l++){
                   mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
                   if((geo_mat[mm] == GEO_SOLID) || (geo_mat[mm] == GEO_VOID)){
                      /*if (ez[l]==1)
                      {
-                        T = (doubflo)1.f;
+                        T = (real)1.f;
                      } 
                      else*/ if (ez[l]==-1)
                      {
-                        T = (doubflo)1.f;//2.f;
+                        T = (real)1.f;//2.f;
                      }
-                     test = (doubflo)1.f;
+                     test = (real)1.f;
                   }
                }
-               if (test == (doubflo)1.f)
+               if (test == (real)1.f)
                {
-                  if (T == (doubflo)1.f)
+                  if (T == (real)1.f)
                   {
                      Temp.k[Temp.kTemp]          = kk[m];
                      Temp.temp[Temp.kTemp]       = TempBC;                  
                      Temp.velo[Temp.kTemp]       = VelBC;                  
                      Temp.kTemp++;              
                   }                         
-                  //else if (T == (doubflo)2.f)
+                  //else if (T == (real)2.f)
                   //{
                   //   Temp.k[Temp.kTemp]          = kk[m];
                   //   Temp.temp[Temp.kTemp]       = -TempBC;                  
@@ -209,10 +209,10 @@ void findKforTempVel(Parameter* para)
    int   ex[6]={   1, -1,  0,  0,  0,  0,};
    int   ey[6]={   0,  0,  1, -1,  0,  0,};
    int   ez[6]={   0,  0,  0,  0,  1, -1,};
-   doubflo ON;
+   real ON;
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    unsigned int i, j, k, m, mm, l;
-   doubflo test = (doubflo)0.f;
+   real test = (real)0.f;
    int nx                             = para->getParH(para->getCoarse())->nx;
    int ny                             = para->getParH(para->getCoarse())->ny;
    unsigned int nnx                   = para->getParH(para->getCoarse())->gridNX;
@@ -229,14 +229,14 @@ void findKforTempVel(Parameter* para)
          for(i=STARTOFFX+1; i<=nnx+STARTOFFX-2 ; i++){
             m = nx*(ny*k + j) + i;
             if(geo_mat[m]==GEO_FLUID){
-               test =(doubflo)0.f;
+               test =(real)0.f;
                for(l=0;l<=5;l++){
                   mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
                   if((geo_mat[mm] == GEO_SOLID) || (geo_mat[mm] == GEO_VOID)){
-                     ON =(doubflo) 1.f; 
+                     ON =(real) 1.f; 
                   }
                   else{
-                     ON = (doubflo)0.f;
+                     ON = (real)0.f;
                   }
                   test += ON;
                }
@@ -261,7 +261,7 @@ void findTemp(Parameter* para)
    int   ex[6]={   1, -1,  0,  0,  0,  0};
    int   ey[6]={   0,  0,  1, -1,  0,  0};
    int   ez[6]={   0,  0,  0,  0,  1, -1};
-   doubflo ON[7];
+   real ON[7];
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    unsigned int i, j, k, m, mm, l;
    int nx                          = para->getParH(para->getCoarse())->nx;
@@ -271,7 +271,7 @@ void findTemp(Parameter* para)
    unsigned int nny                = para->getParH(para->getCoarse())->gridNY;
    unsigned int nnz                = para->getParH(para->getCoarse())->gridNZ;
    unsigned int* kk                = para->getParH(para->getCoarse())->k;
-   doubflo TempBC                  = para->getTemperatureBC();
+   real TempBC                  = para->getTemperatureBC();
    TempforBoundaryConditions Temp = para->getParH(para->getCoarse())->Temp;
    Temp.kTemp = 0;
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -280,30 +280,30 @@ void findTemp(Parameter* para)
          for(i=STARTOFFX+1; i<=nnx+STARTOFFX-2 ; i++){
             m = nx*(ny*k + j) + i;
             if(geo_mat[m]==GEO_FLUID){
-               ON[6] = (doubflo)-1.f;
+               ON[6] = (real)-1.f;
                for(l=0;l<=5;l++){
                   mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
                   if((geo_mat[mm] == GEO_SOLID) || (geo_mat[mm] == GEO_VOID)){
                      if (ey[l]==1)
                      {
-                        ON[2] = (doubflo)1.f;
+                        ON[2] = (real)1.f;
                      } 
                      else if (ey[l]==-1)
                      {
-                        ON[2] = (doubflo)2.f;
+                        ON[2] = (real)2.f;
                      }
-                     ON[6] = (doubflo)1.f;
+                     ON[6] = (real)1.f;
                   }
                }
-               if (ON[6] == (doubflo)1.f)
+               if (ON[6] == (real)1.f)
                {
-                  if (ON[2] == (doubflo)1.f)
+                  if (ON[2] == (real)1.f)
                   {
                      Temp.k[Temp.kTemp]          = kk[m];
                      Temp.temp[Temp.kTemp]       = TempBC;                  
                      Temp.kTemp++;              
                   }                         
-                  else if (ON[2] == (doubflo)2.f)
+                  else if (ON[2] == (real)2.f)
                   {
                      Temp.k[Temp.kTemp]          = kk[m];
                      Temp.temp[Temp.kTemp]       = -TempBC;                  
@@ -335,8 +335,8 @@ void findKforTemp(Parameter* para)
    int   ez[6]={   0,  0,  0,  0,  1, -1,};
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    unsigned int i, j, k, m, mm, l;
-   doubflo test = (doubflo)0.f;
-   doubflo ON;
+   real test = (real)0.f;
+   real ON;
    para->getTempH()->kTemp = 0;
    int nx           = para->getParH(para->getCoarse())->nx;
    int ny           = para->getParH(para->getCoarse())->ny;
@@ -350,14 +350,14 @@ void findKforTemp(Parameter* para)
          for(i=STARTOFFX+1; i<=nnx+STARTOFFX-2 ; i++){
             m = nx*(ny*k + j) + i;
             if(geo_mat[m]==GEO_FLUID){
-               test =(doubflo)0.f;
+               test =(real)0.f;
                for(l=0;l<=5;l++){
                   mm = nx*(ny*(k+ez[l]) + (j+ey[l])) + (i+ex[l]);
                   if((geo_mat[mm] == GEO_SOLID) || (geo_mat[mm] == GEO_VOID)){
-                     ON =(doubflo) 1.f; 
+                     ON =(real) 1.f; 
                   }
                   else{
-                     ON = (doubflo)0.f;
+                     ON = (real)0.f;
                   }
                   test += ON;
                }
diff --git a/src/core/DataTypes.h b/src/core/DataTypes.h
new file mode 100644
index 000000000..625e3d16d
--- /dev/null
+++ b/src/core/DataTypes.h
@@ -0,0 +1,16 @@
+/*
+*  Author: S. Peters
+*  mail: peters@irmb.tu-bs.de
+*/
+#ifndef DATATYPES_H
+#define DATATYPES_H
+
+#include "VirtualFluidsDefinitions.h"
+
+#ifdef VF_DOUBLE_ACCURACY
+typedef double real;
+#else
+typedef float  real;
+#endif
+
+#endif
diff --git a/src/core/PointerDefinitions.h b/src/core/PointerDefinitions.h
new file mode 100644
index 000000000..849fa4500
--- /dev/null
+++ b/src/core/PointerDefinitions.h
@@ -0,0 +1,22 @@
+/*
+*  Author: S. Peters
+*  mail: peters@irmb.tu-bs.de
+*/
+#ifndef SHARED_POINTER_H
+#define SHARED_POINTER_H
+
+#include <memory>
+
+template <class T>
+using SPtr = std::shared_ptr<T>;
+
+template <class T>
+using WPtr = std::weak_ptr<T>;
+
+template <class T>
+using UPtr = std::unique_ptr<T>;
+
+template <class T>
+using RPtr = T*;
+
+#endif
diff --git a/targets/apps/HULC/CMakeLists.txt b/targets/apps/HULC/CMakeLists.txt
index 2714e6c93..fdf315d8d 100644
--- a/targets/apps/HULC/CMakeLists.txt
+++ b/targets/apps/HULC/CMakeLists.txt
@@ -1,8 +1,8 @@
 setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR}) 
 
 set(linkDirectories "")
-set(libsToLink VirtualFluids_GPU)
-set(includeDirectories "${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/src/VirtualFluids_GPU")
+set(libsToLink VirtualFluids_GPU GridGenerator)
+set(includeDirectories "${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/src/VirtualFluids_GPU" "${CMAKE_SOURCE_DIR}/src/GridGenerator")
 
 #glob files and save in MY_SRCS
 include(CMakePackage.cmake)
diff --git a/targets/apps/HULC/main.cpp b/targets/apps/HULC/main.cpp
index 4bc2a1704..8612f653f 100644
--- a/targets/apps/HULC/main.cpp
+++ b/targets/apps/HULC/main.cpp
@@ -10,23 +10,134 @@
 #include <iostream>
 
 #include "LBM/Simulation.h"
-using namespace std;
+
+#include "Parameter/Parameter.h"
+#include "DataStructureInitializer/GridProvider.h"
+#include "VirtualFluidsBasics/utilities/input/Input.h"
+#include "VirtualFluidsBasics/utilities/StringUtil/StringUtil.h"
+
+
+std::string getGridPath(std::shared_ptr<Parameter> para, std::string Gridpath)
+{
+    if (para->getNumprocs() == 1)
+        return Gridpath + "/";
+    else
+        return Gridpath + "/" + StringUtil::toString(para->getMyID()) + "/";
+}
+
+void setParameters(std::shared_ptr<Parameter> para, std::unique_ptr<input::Input> &input)
+{
+    para->setMaxDev(StringUtil::toInt(input->getValue("NumberOfDevices")));
+    para->setDevices(StringUtil::toVector/*<int>*/(input->getValue("Devices")));
+
+    std::string _path = input->getValue("Path");
+    std::string _prefix = input->getValue("Prefix");
+    std::string _gridpath = input->getValue("GridPath");
+    std::string gridPath = getGridPath(para, _gridpath);
+    para->setFName(_path + "/" + _prefix);
+    para->setPrintFiles(false);
+    para->setPrintFiles(StringUtil::toBool(input->getValue("WriteGrid")));
+    para->setD3Qxx(StringUtil::toInt(input->getValue("D3Qxx")));
+    para->setMaxLevel(StringUtil::toInt(input->getValue("NOGL")));
+    para->setTEnd(StringUtil::toInt(input->getValue("TimeEnd")));
+    para->setTOut(StringUtil::toInt(input->getValue("TimeOut")));
+
+    para->setViscosity(StringUtil::toFloat(input->getValue("Viscosity_LB")));
+    para->setVelocity(StringUtil::toFloat(input->getValue("Velocity_LB")));
+    para->setViscosityRatio(StringUtil::toFloat(input->getValue("Viscosity_Ratio_World_to_LB")));
+    para->setVelocityRatio(StringUtil::toFloat(input->getValue("Velocity_Ratio_World_to_LB")));
+    para->setDensityRatio(StringUtil::toFloat(input->getValue("Density_Ratio_World_to_LB")));
+    para->setFactorPressBC(StringUtil::toFloat(input->getValue("dfpbc")));
+
+    para->setgeoVec(gridPath + input->getValue("geoVec"));
+    para->setcoordX(gridPath + input->getValue("coordX"));
+    para->setcoordY(gridPath + input->getValue("coordY"));
+    para->setcoordZ(gridPath + input->getValue("coordZ"));
+    para->setneighborX(gridPath + input->getValue("neighborX"));
+    para->setneighborY(gridPath + input->getValue("neighborY"));
+    para->setneighborZ(gridPath + input->getValue("neighborZ"));
+    para->setgeomBoundaryBcQs(gridPath + input->getValue("geomBoundaryBcQs"));
+    para->setgeomBoundaryBcValues(gridPath + input->getValue("geomBoundaryBcValues"));
+    para->setinletBcQs(gridPath + input->getValue("inletBcQs"));
+    para->setinletBcValues(gridPath + input->getValue("inletBcValues"));
+    para->setoutletBcQs(gridPath + input->getValue("outletBcQs"));
+    para->setoutletBcValues(gridPath + input->getValue("outletBcValues"));
+    para->settopBcQs(gridPath + input->getValue("topBcQs"));
+    para->settopBcValues(gridPath + input->getValue("topBcValues"));
+    para->setbottomBcQs(gridPath + input->getValue("bottomBcQs"));
+    para->setbottomBcValues(gridPath + input->getValue("bottomBcValues"));
+    para->setfrontBcQs(gridPath + input->getValue("frontBcQs"));
+    para->setfrontBcValues(gridPath + input->getValue("frontBcValues"));
+    para->setbackBcQs(gridPath + input->getValue("backBcQs"));
+    para->setbackBcValues(gridPath + input->getValue("backBcValues"));
+    para->setnumberNodes(gridPath + input->getValue("numberNodes"));
+    para->setLBMvsSI(gridPath + input->getValue("LBMvsSI"));
+
+
+    para->setForcing(StringUtil::toFloat(input->getValue("ForcingX")), StringUtil::toFloat(input->getValue("ForcingY")), StringUtil::toFloat(input->getValue("ForcingZ")));
+
+    para->setDistX(StringUtil::toVector/*<int>*/(input->getValue("DistX")));
+    para->setDistY(StringUtil::toVector/*<int>*/(input->getValue("DistY")));
+    para->setDistZ(StringUtil::toVector/*<int>*/(input->getValue("DistZ")));
+
+    //////////////////////////////////////////////////////////////////////////
+    //for Multi GPU
+    if (para->getNumprocs() > 1)
+    {
+        //////////////////////////////////////////////////////////////////////////
+        //3D domain decomposition
+        std::vector<std::string> sendProcNeighborsX, sendProcNeighborsY, sendProcNeighborsZ;
+        std::vector<std::string> recvProcNeighborsX, recvProcNeighborsY, recvProcNeighborsZ;
+        for (int i = 0; i < para->getNumprocs(); i++)
+        {
+            sendProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xs.dat");
+            sendProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Ys.dat");
+            sendProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zs.dat");
+            recvProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xr.dat");
+            recvProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Yr.dat");
+            recvProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zr.dat");
+        }
+        para->setPossNeighborFilesX(sendProcNeighborsX, "send");
+        para->setPossNeighborFilesY(sendProcNeighborsY, "send");
+        para->setPossNeighborFilesZ(sendProcNeighborsZ, "send");
+        para->setPossNeighborFilesX(recvProcNeighborsX, "recv");
+        para->setPossNeighborFilesY(recvProcNeighborsY, "recv");
+        para->setPossNeighborFilesZ(recvProcNeighborsZ, "recv");
+    }
+}
+
+void simulate(const std::string& configPath)
+{
+    std::shared_ptr<Parameter> para = Parameter::make();
+    std::shared_ptr<GridProvider> reader = GridProvider::makeGridReader(true, para);
+
+    std::ifstream stream;
+    stream.open(configPath.c_str(), std::ios::in);
+    if (stream.fail())
+        throw "can not open config file!\n";
+
+    std::unique_ptr<input::Input> input = input::Input::makeInput(stream, "config");
+
+    setParameters(para, input);
+
+    Simulation sim;
+    sim.init(para, reader);
+    sim.run();
+}
 
 int main( int argc, char* argv[])
 {
    MPI_Init(&argc, &argv);
-   string str, str2; 
+   std::string str, str2; 
    if ( argv != NULL )
    {
-      str = static_cast<string>(argv[0]);
+      str = static_cast<std::string>(argv[0]);
       if (argc > 1)
       {
-         str2 = static_cast<string>(argv[1]);
+         str2 = static_cast<std::string>(argv[1]);
          try
          {
-             Simulation sim;
-             sim.init(str2);
-             sim.run();
+             simulate(str2);
          }
          catch (std::string e)
          {
@@ -36,7 +147,7 @@ int main( int argc, char* argv[])
       }
       else
       {
-         cout << "Configuration file must be set!: lbmgm <config file>" << endl << std::flush;
+          std::cout << "Configuration file must be set!: lbmgm <config file>" << std::endl << std::flush;
          //MPI_Abort(MPI_COMM_WORLD, -1);
       }
    }
diff --git a/targets/libs/GridGenerator/CMakeLists.txt b/targets/libs/GridGenerator/CMakeLists.txt
index b3b11f3c1..0d751001e 100644
--- a/targets/libs/GridGenerator/CMakeLists.txt
+++ b/targets/libs/GridGenerator/CMakeLists.txt
@@ -1,8 +1,8 @@
 setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR}) 
 
 set(linkDirectories "")
-set(libsToLink VirtualFluidsBasics)
-set(includeDirectories ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/${targetName} ${CMAKE_SOURCE_DIR}/src/VirtualFluidsBasics)
+set(libsToLink VirtualFluidsBasics core)
+set(includeDirectories ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/${targetName} ${CMAKE_SOURCE_DIR}/src/VirtualFluidsBasics ${CMAKE_SOURCE_DIR}/src/core)
 
 #glob files and save in MY_SRCS
 include(CMakePackage.cmake)
diff --git a/targets/libs/VirtualFluids_GPU/CMakeLists.txt b/targets/libs/VirtualFluids_GPU/CMakeLists.txt
index de03b5bc2..a5e025dba 100644
--- a/targets/libs/VirtualFluids_GPU/CMakeLists.txt
+++ b/targets/libs/VirtualFluids_GPU/CMakeLists.txt
@@ -1,8 +1,8 @@
 setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR}) 
 
 set(linkDirectories "")
-set(libsToLink ws2_32)
-set(includeDirectories ${CMAKE_SOURCE_DIR}/src/${targetName} ${CMAKE_SOURCE_DIR}/src)
+set(libsToLink ws2_32 GridGenerator VirtualFluidsBasics core)
+set(includeDirectories ${CMAKE_SOURCE_DIR}/src/${targetName} ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/src/VirtualFluidsBasics ${CMAKE_SOURCE_DIR}/src/GridGenerator ${CMAKE_SOURCE_DIR}/src/core)
 
 #glob files and save in MY_SRCS
 include(CMakePackage.cmake)
-- 
GitLab