diff --git a/src/GridGenerator/grid/Grid.h b/src/GridGenerator/grid/Grid.h
index 7ac05f91159327f287ac2786a76c49e843e48d90..9913ea66c7bb08f6643be3a6c4afaeedde7674f4 100644
--- a/src/GridGenerator/grid/Grid.h
+++ b/src/GridGenerator/grid/Grid.h
@@ -2,6 +2,9 @@
 #define GRID_H
 
 #include "GridGenerator/global.h"
+
+#include "core/LbmOrGks.h"
+
 #include "Cell.h"
 #include "geometries/Vertex/Vertex.h"
 
@@ -67,7 +70,7 @@ public:
 
     HOST virtual void inital() = 0;
 
-    HOST virtual void findGridInterface(SPtr<Grid> grid) = 0;
+    HOST virtual void findGridInterface(SPtr<Grid> grid, LbmOrGks lbmOrGks) = 0;
 
     HOST virtual void mesh(TriangularMesh& geometry) = 0;
     HOST virtual void mesh(Object* object) = 0;
diff --git a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp
index e4ad3f157fb6127b65b7f27e84ec02dd553927a9..1cc743e48dd1581096e6f227170782883db19fbd 100644
--- a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp
+++ b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp
@@ -323,7 +323,7 @@ std::vector<SPtr<Grid> > MultipleGridBuilder::getGrids() const
     return this->grids;
 }
 
-void MultipleGridBuilder::buildGrids()
+void MultipleGridBuilder::buildGrids(LbmOrGks lbmOrGks)
 {
     for (auto grid : grids)
         grid->inital();
@@ -336,14 +336,14 @@ void MultipleGridBuilder::buildGrids()
 
 
     for (size_t i = 0; i < grids.size() - 1; i++)
-        grids[i]->findGridInterface(grids[i + 1]);
+        grids[i]->findGridInterface(grids[i + 1], lbmOrGks);
 
+	if (lbmOrGks == LBM) {
+		for (size_t i = 0; i < grids.size() - 1; i++)
+			grids[i]->findSparseIndices(grids[i + 1]);
 
-    for (size_t i = 0; i < grids.size() - 1; i++)
-        grids[i]->findSparseIndices(grids[i + 1]);
-
-
-    grids[grids.size() - 1]->findSparseIndices(nullptr);
+		grids[grids.size() - 1]->findSparseIndices(nullptr);
+	}
 }
 
 
diff --git a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h
index 3283190f827e04c25095b95a3c86832b5f052fee..ffc0e7771bee17819efc97d3f9cafdfbff71bdea 100644
--- a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h
+++ b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h
@@ -6,8 +6,9 @@
 #include <vector>
 #include <array>
 
-#include "LevelGridBuilder.h"
+#include "core/LbmOrGks.h"
 
+#include "LevelGridBuilder.h"
 
 #include "../GridFactory.h"
 
@@ -41,7 +42,7 @@ public:
     VF_PUBLIC real getEndZ(uint level) const;
 
     VF_PUBLIC std::vector<SPtr<Grid> > getGrids() const;
-    VF_PUBLIC void buildGrids();
+    VF_PUBLIC void buildGrids(LbmOrGks lbmOrGks);
 
     VF_PUBLIC void writeGridsToVtk(const std::string& path) const;
 
diff --git a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilderTest.cpp b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilderTest.cpp
index 1a256df412a33b65611e011773755b32d2f398d2..67bc2059fe1639a2f9c255ada50370e27582c86a 100644
--- a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilderTest.cpp
+++ b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilderTest.cpp
@@ -91,7 +91,7 @@ TEST(MultipleGridBuilderTest, everyExceptTheFinestGrid_shouldHaveAGridInterface)
     gridBuilder->addCoarseGrid(0.0, 0.0, 0.0, 15.0, 15.0, 15.0, 1.0);
     gridBuilder->addGrid(new Cuboid(7.0, 7.0, 7.0, 10.0, 10.0, 10.0), 2);
 
-    gridBuilder->buildGrids();
+    gridBuilder->buildGrids(LBM);
 
     auto grid0 = std::dynamic_pointer_cast<GridSpy>(gridBuilder->getGrid(0));
     auto grid1 = std::dynamic_pointer_cast<GridSpy>(gridBuilder->getGrid(1));
@@ -110,7 +110,7 @@ TEST(MultipleGridBuilderTest, afterCreatingGridInterface_FineGridsShouldNotBeHav
     gridBuilder->addCoarseGrid(0.0, 0.0, 0.0, 15.0, 15.0, 15.0, 1.0);
     gridBuilder->addGrid(new Cuboid(7.0, 7.0, 7.0, 10.0, 10.0, 10.0), 2);
 
-    gridBuilder->buildGrids();
+    gridBuilder->buildGrids(LBM);
 
     auto grid1 = std::dynamic_pointer_cast<GridSpy>(gridBuilder->getGrid(1));
     auto grid2 = std::dynamic_pointer_cast<GridSpy>(gridBuilder->getGrid(2));
diff --git a/src/GridGenerator/grid/GridImp.cu b/src/GridGenerator/grid/GridImp.cu
index 333cb99d9f820443a6fe8e688d4113f8c354dc08..fc5ec72459a3f2827a63f46986741f4a46ff209e 100644
--- a/src/GridGenerator/grid/GridImp.cu
+++ b/src/GridGenerator/grid/GridImp.cu
@@ -586,14 +586,17 @@ HOSTDEVICE int GridImp::getSparseIndex(const real &x, const real &y, const real
 // --------------------------------------------------------- //
 //                    Find Interface                         //
 // --------------------------------------------------------- //
-HOST void GridImp::findGridInterface(SPtr<Grid> finerGrid)
+HOST void GridImp::findGridInterface(SPtr<Grid> finerGrid, LbmOrGks lbmOrGks)
 {
-    gridStrategy->findGridInterface(shared_from_this(), std::static_pointer_cast<GridImp>(finerGrid));
+    gridStrategy->findGridInterface(shared_from_this(), std::static_pointer_cast<GridImp>(finerGrid), lbmOrGks);
 }
 
-HOSTDEVICE void GridImp::findGridInterfaceCF(uint index, GridImp& finerGrid)
+HOSTDEVICE void GridImp::findGridInterfaceCF(uint index, GridImp& finerGrid, LbmOrGks lbmOrGks)
 {
-    gridInterface->findInterfaceCF(index, this, &finerGrid);
+	if(lbmOrGks == LBM)
+		gridInterface->findInterfaceCF(index, this, &finerGrid);
+	else if (lbmOrGks == GKS)
+		gridInterface->findInterfaceCF_GKS(index, this, &finerGrid);
 }
 
 HOSTDEVICE void GridImp::findGridInterfaceFC(uint index, GridImp& finerGrid)
diff --git a/src/GridGenerator/grid/GridImp.h b/src/GridGenerator/grid/GridImp.h
index 7b40bd004e681195cda1b88db88feb3aa517e4c5..86d22654fbbd594cd3fe70a585bfb13294465dd9 100644
--- a/src/GridGenerator/grid/GridImp.h
+++ b/src/GridGenerator/grid/GridImp.h
@@ -4,6 +4,8 @@
 #include "GridGenerator/global.h"
 #include "distributions/Distribution.h"
 
+#include "core/LbmOrGks.h"
+
 #include "Grid.h"
 #include "Cell.h"
 #include "Field.h"
@@ -80,7 +82,7 @@ public:
     HOSTDEVICE int transCoordToIndex(const real &x, const real &y, const real &z) const override;
     HOSTDEVICE void transIndexToCoords(int index, real &x, real &y, real &z) const override;
 
-    HOST void findGridInterface(SPtr<Grid> grid) override;
+    HOST virtual void findGridInterface(SPtr<Grid> grid, LbmOrGks lbmOrGks) override;
     HOST void freeMemory() override;
 
     HOST uint getLevel(real levelNull) const;
@@ -99,7 +101,7 @@ public:
 	HOSTDEVICE void findEndOfGridStopperNode(uint index);
 	HOSTDEVICE void findSolidStopperNode(uint index);
 
-    HOSTDEVICE void findGridInterfaceCF(uint index, GridImp& finerGrid);
+    HOSTDEVICE void findGridInterfaceCF(uint index, GridImp& finerGrid, LbmOrGks lbmOrGks);
     HOSTDEVICE void findGridInterfaceFC(uint index, GridImp& finerGrid);
     HOSTDEVICE void findOverlapStopper(uint index, GridImp& finerGrid);
 
diff --git a/src/GridGenerator/grid/GridInterface.cu b/src/GridGenerator/grid/GridInterface.cu
index efedc4b9cc16ea8da2106b4f9f51b3a18e406e4c..5859a59237b738de9e263cde3d1ce380cb742a3b 100644
--- a/src/GridGenerator/grid/GridInterface.cu
+++ b/src/GridGenerator/grid/GridInterface.cu
@@ -49,6 +49,29 @@ void GridInterface::findInterfaceCF(const uint& indexOnCoarseGrid, GridImp* coar
     }
 }
 
+void GridInterface::findInterfaceCF_GKS(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid)
+{
+	const bool nodeOnCoarseGridIsFluid = coarseGrid->getField().isFluid(indexOnCoarseGrid);
+	if (!nodeOnCoarseGridIsFluid)
+		return;
+
+	real x, y, z;
+	coarseGrid->transIndexToCoords(indexOnCoarseGrid, x, y, z);
+
+	for (const auto dir : coarseGrid->distribution)
+	{
+		const uint indexOnFineGrid = fineGrid->transCoordToIndex(x + 0.25 * dir[0] * coarseGrid->getDelta(),
+																 y + 0.25 * dir[1] * coarseGrid->getDelta(),
+																 z + 0.25 * dir[2] * coarseGrid->getDelta());
+
+		if (indexOnFineGrid != -1 && fineGrid->getField().is(indexOnFineGrid, STOPPER_END_OF_GRID)) 
+		{
+			coarseGrid->getField().setFieldEntry(indexOnCoarseGrid, FLUID_CFC);
+			break;
+		}
+	}
+}
+
 void GridInterface::findInterfaceFC(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid)
 {
     const bool nodeOnCoarseGridIsFluid = coarseGrid->getField().isFluid(indexOnCoarseGrid);
diff --git a/src/GridGenerator/grid/GridInterface.h b/src/GridGenerator/grid/GridInterface.h
index a81ed6992a4c38b7b05043e57eb2dce6581b8dbd..cb9d4fdb1a1086887b2d8e09f90d309c9df9d9a3 100644
--- a/src/GridGenerator/grid/GridInterface.h
+++ b/src/GridGenerator/grid/GridInterface.h
@@ -16,7 +16,8 @@ public:
     HOSTDEVICE VF_PUBLIC ~GridInterface();
 
     HOSTDEVICE void VF_PUBLIC findInterfaceCF(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
-    HOSTDEVICE void VF_PUBLIC findInterfaceFC(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
+	HOSTDEVICE void VF_PUBLIC findInterfaceCF_GKS(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
+	HOSTDEVICE void VF_PUBLIC findInterfaceFC(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
     HOSTDEVICE void VF_PUBLIC findOverlapStopper(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
 
     HOSTDEVICE void VF_PUBLIC findForGridInterfaceSparseIndexCF(GridImp* coarseGrid, GridImp* fineGrid, uint index);
diff --git a/src/GridGenerator/grid/GridMocks.h b/src/GridGenerator/grid/GridMocks.h
index 0229958add6f2300548a4c031228ee9b55e9e40d..b9dda6d689af21c8128cc9e64bc4c3e9c48236eb 100644
--- a/src/GridGenerator/grid/GridMocks.h
+++ b/src/GridGenerator/grid/GridMocks.h
@@ -55,7 +55,7 @@ public:
     virtual void setPeriodicity(bool periodicityX, bool periodicityY, bool periodicityZ) override {}
     virtual void freeMemory() override {}
 
-    virtual void findGridInterface(SPtr<Grid> grid) override {}
+    virtual void findGridInterface(SPtr<Grid> grid, LbmOrGks lbmOrGks) override {}
     virtual void mesh(TriangularMesh& geometry) override {}
     virtual int transCoordToIndex(const real& x, const real& y, const real& z) const override { return 0; }
     virtual int* getNeighborsX() const override { return nullptr; }
@@ -133,7 +133,7 @@ public:
         this->periodicityZ = periodicityZ;
     }
 
-    virtual void findGridInterface(SPtr<Grid> grid) override
+    virtual void findGridInterface(SPtr<Grid> grid, LbmOrGks lbmOrGks) override
     {
         _hasGridInterface = true;
     }
diff --git a/src/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.cpp b/src/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.cpp
index 7f91d9995def9f3180b1991a535f979f9852aa78..147fce067a215c5709a4c892482f42af06333562 100644
--- a/src/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.cpp
+++ b/src/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.cpp
@@ -98,7 +98,7 @@ void GridCpuStrategy::findQs(SPtr<GridImp> grid, TriangularMesh &geom)
 }
 
 
-void GridCpuStrategy::findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> fineGrid)
+void GridCpuStrategy::findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> fineGrid, LbmOrGks lbmOrGks)
 {
     const auto coarseLevel = grid->getLevel(1.0);
     const auto fineLevel = fineGrid->getLevel(1.0);
@@ -115,7 +115,7 @@ void GridCpuStrategy::findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> fineGr
     grid->gridInterface->fc.fine = new uint[sizeCF];
 
     for (uint index = 0; index < grid->getSize(); index++)
-        grid->findGridInterfaceCF(index, *fineGrid);
+        grid->findGridInterfaceCF(index, *fineGrid, lbmOrGks);
 
     for (uint index = 0; index < grid->getSize(); index++)
         grid->findGridInterfaceFC(index, *fineGrid);
diff --git a/src/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.h b/src/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.h
index fcd4dffae38a3206115b6f33515a1bdd7de429ee..d516bc3a6e024acaf335112f24eceb0c4cf005e6 100644
--- a/src/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.h
+++ b/src/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.h
@@ -27,7 +27,7 @@ public:
     void mesh(SPtr<GridImp> grid, TriangularMesh &geom) override;
     void findQs(SPtr<GridImp> grid, TriangularMesh &geom) override;
 
-    void findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> fineGrid) override;
+    void findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> fineGrid, LbmOrGks lbmOrGks) override;
 
     void freeMemory(SPtr<GridImp> grid) override;
 
diff --git a/src/GridGenerator/grid/GridStrategy/GridGpuStrategy/GridGpuStrategy.cpp b/src/GridGenerator/grid/GridStrategy/GridGpuStrategy/GridGpuStrategy.cpp
index 3535ee3e927f67292b58d131ed90f290a0b23322..8ac7c8813fae17489c885eb07877ea8302be113c 100644
--- a/src/GridGenerator/grid/GridStrategy/GridGpuStrategy/GridGpuStrategy.cpp
+++ b/src/GridGenerator/grid/GridStrategy/GridGpuStrategy/GridGpuStrategy.cpp
@@ -79,7 +79,7 @@ void GridGpuStrategy::findQs(SPtr<GridImp> grid, TriangularMesh &geom)
 }
 
 
-void GridGpuStrategy::findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> fineGrid)
+void GridGpuStrategy::findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> fineGrid, LbmOrGks lbmOrGks)
 {
     copyAndFreeFieldFromGPU(grid->getField());
     copyAndFreeFieldFromGPU(fineGrid->getField());
diff --git a/src/GridGenerator/grid/GridStrategy/GridGpuStrategy/GridGpuStrategy.h b/src/GridGenerator/grid/GridStrategy/GridGpuStrategy/GridGpuStrategy.h
index 84acaedf4850b4e57f8a10f7958820970c16e2d0..231483b1cbd3507ddf3deea5af81222b372c4f4c 100644
--- a/src/GridGenerator/grid/GridStrategy/GridGpuStrategy/GridGpuStrategy.h
+++ b/src/GridGenerator/grid/GridStrategy/GridGpuStrategy/GridGpuStrategy.h
@@ -26,7 +26,7 @@ public:
     void findQs(SPtr<GridImp> grid, TriangularMesh &geom) override;
 
 
-    void findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> fineGrid) override;
+    void findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> fineGrid, LbmOrGks lbmOrGks) override;
 
     void freeMemory(SPtr<GridImp> grid) override;
 
diff --git a/src/GridGenerator/grid/GridStrategy/GridStrategy.h b/src/GridGenerator/grid/GridStrategy/GridStrategy.h
index def1af56c88784237922141b8dcb732e0bb88767..bdbca1ca6ea567c7d4c8d990aa732ccac02194f2 100644
--- a/src/GridGenerator/grid/GridStrategy/GridStrategy.h
+++ b/src/GridGenerator/grid/GridStrategy/GridStrategy.h
@@ -3,6 +3,7 @@
 
 #include <VirtualFluidsDefinitions.h>
 #include "core/PointerDefinitions.h"
+#include "core/LbmOrGks.h"
 #include "grid/Field.h"
 
 struct Vertex;
@@ -29,7 +30,7 @@ public:
 
     virtual void findQs(SPtr<GridImp> grid, TriangularMesh &geom) = 0;
 
-    virtual void findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> finerGrid) = 0;
+    virtual void findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> fineGrid, LbmOrGks lbmOrGks) = 0;
 
     virtual void findSparseIndices(SPtr<GridImp> coarseGrid, SPtr<GridImp> fineGrid) = 0;
 
diff --git a/src/GridGenerator/grid/GridStrategy/GridStrategyMocks.h b/src/GridGenerator/grid/GridStrategy/GridStrategyMocks.h
index 39c33d9a011a7ac22851054ca9266532835c4dd2..f5883b72aee0a4c694d82fbd2f7f9a3fba588302 100644
--- a/src/GridGenerator/grid/GridStrategy/GridStrategyMocks.h
+++ b/src/GridGenerator/grid/GridStrategy/GridStrategyMocks.h
@@ -24,7 +24,7 @@ public:
 
     virtual void mesh(SPtr<GridImp> grid, TriangularMesh &geom) override {}
 
-    virtual void findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> finerGrid) override {}
+    virtual void findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> finerGrid, LbmOrGks lbmOrGks) override {}
 
 
     virtual void freeMemory(SPtr<GridImp> grid) override {}
diff --git a/src/GridGenerator/grid/kernel/runGridKernelGPU.cu b/src/GridGenerator/grid/kernel/runGridKernelGPU.cu
index 6bb55f528bc8ab721310db5f94058e29f8b33758..fce27d3cac39ce6329c28cf1c2130d85a39fc2fd 100644
--- a/src/GridGenerator/grid/kernel/runGridKernelGPU.cu
+++ b/src/GridGenerator/grid/kernel/runGridKernelGPU.cu
@@ -83,9 +83,10 @@ float runKernelSetOverlapNodesToInvalid(const LaunchParameter& para, GridImp &gr
 
 GLOBAL void setOverlapNodesToInvalid(GridImp grid, GridImp finerGrid)
 {
-    const uint index = LaunchParameter::getGlobalIdx_2D_1D();
-    if (index < grid.getSize())
-        grid.findGridInterfaceCF(index, finerGrid);
+	// not up to date
+    //const uint index = LaunchParameter::getGlobalIdx_2D_1D();
+    //if (index < grid.getSize())
+        //grid.findGridInterfaceCF(index, finerGrid);
 }
 
 
@@ -168,9 +169,10 @@ float runKernelToFindGridInterface(const LaunchParameter& para, GridImp &grid, G
 
 GLOBAL void findGridInterface(GridImp grid, GridImp finerGrid)
 {
-    uint index = LaunchParameter::getGlobalIdx_2D_1D();
-    if (index < grid.getSize())
-        grid.findGridInterfaceCF(index, finerGrid);
+	// not up to date
+    //uint index = LaunchParameter::getGlobalIdx_2D_1D();
+    //if (index < grid.getSize())
+    //    grid.findGridInterfaceCF(index, finerGrid);
 }
 /*#################################################################################*/
 
diff --git a/src/core/LbmOrGks.h b/src/core/LbmOrGks.h
new file mode 100644
index 0000000000000000000000000000000000000000..bd9a55ae12ddc3a904105afd9c607c5da7841440
--- /dev/null
+++ b/src/core/LbmOrGks.h
@@ -0,0 +1,14 @@
+/*
+*  Author: St. Lenz
+*  mail: lenz@irmb.tu-bs.de
+*/
+#ifndef LBMORGKS_H
+#define LBMORGKS_H
+
+enum LbmOrGks
+{
+	LBM,
+	GKS
+};
+
+#endif
diff --git a/targets/apps/HULC/main.cpp b/targets/apps/HULC/main.cpp
index 79139fd8062b0a13ed22ad7593a06e64504170d9..18e0fc89af9ecf8945147b1fcc488bb189c6ab97 100644
--- a/targets/apps/HULC/main.cpp
+++ b/targets/apps/HULC/main.cpp
@@ -9,6 +9,8 @@
 #include <string>
 #include <iostream>
 
+#include "core/LbmOrGks.h"
+
 #include "LBM/Simulation.h"
 
 #include "DataStructureInitializer/GridReaderGenerator/GridGenerator.h"
@@ -274,29 +276,55 @@ void multipleLevel(const std::string& configPath)
     ////TriangularMesh* triangularMesh = TriangularMesh::make("D:/GRIDGENERATION/STL/quadarBinaer.stl", DiscretizationMethod::POINT_IN_OBJECT);
 
 
+	//////////////////////////////////////////////////////////////////////////
+	// Test int cast
+	real L = 2.2;
+	real H = 0.41;
+
+	uint nx = 440;
+
+	real dx = L / real(nx);
+
+	real startX = -0.5*dx;
+	real startY = -0.5*dx;
+
+	real endX = round(L / dx)*dx + 0.5 * dx;
+	real endY = round(H / dx)*dx + 0.5 * dx;
+
+	real startZ = -10.0*dx;
+	real endZ = 10.0*dx;
+
+	gridBuilder->addCoarseGrid(startX, startY, startZ, endX, endY, endZ, dx);
+
+	Object* refCyln = new VerticalCylinder(0.20, 0.20, 0, 0.05, 8.0*dx);
+
+	gridBuilder->addGrid(refCyln, 2);
+	//////////////////////////////////////////////////////////////////////////
 
     //gridBuilder->addGrid(new Cuboid(-10, -8, -8, 50, 22, 22), 1);
 
     //gridBuilder->addCoarseGrid(-16, -14, -14, 59, 28, 29, 1.0);
     //TriangularMesh* triangularMesh = TriangularMesh::make("D:/GRIDGENERATION/STL/input/local_input/bruecke.stl");
 
-    gridBuilder->addCoarseGrid(0, -25, -40, 100, 75, 60, 2.0);
+    //gridBuilder->addCoarseGrid(0, -25, -40, 100, 75, 60, 2.0);
     //TriangularMesh* triangularMesh = TriangularMesh::make("D:/GRIDGENERATION/STL/circleBinaer.stl");
     //gridBuilder->addGrid(new Sphere(50,25,10,15), 2);
-	gridBuilder->addGrid(new VerticalCylinder(50, 25, 10, 15, 15), 2);
+	//gridBuilder->addGrid(new VerticalCylinder(50, 25, 10, 15, 15), 2);
 
     //gridBuilder->addGeometry(triangularMesh);
 
     gridBuilder->setPeriodicBoundaryCondition(false, false, false);
 
 
-    gridBuilder->buildGrids(); // buildGrids() has to be called before setting the BCs!!!!
+    gridBuilder->buildGrids(LBM); // buildGrids() has to be called before setting the BCs!!!!
 
     //gridBuilder->writeGridsToVtk("D:/GRIDGENERATION/");
-    //gridBuilder->writeArrows("D:/arrows");
+	//gridBuilder->writeArrows("D:/arrows");
 
-
-    gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0);
+	//gridBuilder->writeGridsToVtk("M:/TestGridGeneration/results/gridTest_level_");
+	//return;
+    
+	gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0);
     gridBuilder->setVelocityBoundaryCondition(SideType::MX, 0.001, 0.0, 0.0);
     //gridBuilder->setVelocityBoundaryCondition(SideType::MY, 0.001, 0.0, 0.0);
     //gridBuilder->setVelocityBoundaryCondition(SideType::PY, 0.001, 0.0, 0.0);
@@ -334,7 +362,7 @@ void multipleLevel(const std::string& configPath)
     //gridBuilder->addFineGrid(10.0, 10.0, 10.0, 20.0, 20.0, 20.0, 3);
 
 
-    //gridBuilder->writeGridToVTK("D:/GRIDGENERATION/gridTest_level_2", 2);
+    gridBuilder->writeGridsToVtk("M:/TestGridGeneration/results/gridTest_level_");
 
     //SimulationFileWriter::write("D:/GRIDGENERATION/files/", gridBuilder, FILEFORMAT::ASCII);