diff --git a/src/GridGenerator/grid/GridInterface.cu b/src/GridGenerator/grid/GridInterface.cu
index 2d7387807403e440a26a41876b31245dcf235afa..7e30fde2e3100d1f916efc18358487fb89aefa7a 100644
--- a/src/GridGenerator/grid/GridInterface.cu
+++ b/src/GridGenerator/grid/GridInterface.cu
@@ -64,7 +64,7 @@ void GridInterface::findInterfaceCF_GKS(const uint& indexOnCoarseGrid, GridImp*
 																 y + 0.25 * dir[1] * coarseGrid->getDelta(),
 																 z + 0.25 * dir[2] * coarseGrid->getDelta());
 
-		if (indexOnFineGrid != -1 && fineGrid->getField().is(indexOnFineGrid, STOPPER_OUT_OF_GRID)) 
+		if (indexOnFineGrid != INVALID_INDEX && fineGrid->getField().is(indexOnFineGrid, STOPPER_OUT_OF_GRID)) 
 		{
 			coarseGrid->getField().setFieldEntry(indexOnCoarseGrid, FLUID_CFC);
 			break;
@@ -79,8 +79,8 @@ void GridInterface::findInterfaceFC(const uint& indexOnCoarseGrid, GridImp* coar
     if (!nodeOnCoarseGridIsFluid || nodeOnCoarseGridIsCoarseToFine)
         return;
 
-    const int indexOnFineGridFC = getFineToCoarseIndexOnFineGrid(indexOnCoarseGrid, coarseGrid, fineGrid);
-    if (indexOnFineGridFC == -1)
+    const uint indexOnFineGridFC = getFineToCoarseIndexOnFineGrid(indexOnCoarseGrid, coarseGrid, fineGrid);
+    if (indexOnFineGridFC == INVALID_INDEX)
         return;
 
     const bool fineGridNodeIsFluid = fineGrid->getField().isFluid(indexOnFineGridFC);
@@ -93,18 +93,21 @@ void GridInterface::findInterfaceFC(const uint& indexOnCoarseGrid, GridImp* coar
     for (const auto dir : coarseGrid->distribution)
     {
         const int neighborIndex = coarseGrid->transCoordToIndex(x + dir[0] * coarseGrid->getDelta(), y + dir[1] * coarseGrid->getDelta(), z + dir[2] * coarseGrid->getDelta());
-        const bool neighborBelongsToCoarseToFineInterpolationCell = coarseGrid->getField().isCoarseToFineNode(neighborIndex);
-        if (neighborBelongsToCoarseToFineInterpolationCell)
-        {
-            fc.coarse[fc.numberOfEntries] = indexOnCoarseGrid;
-            fc.fine[fc.numberOfEntries] = indexOnFineGridFC;
-
-            fc.numberOfEntries++;
-
-            fineGrid->setNonStopperOutOfGridCellTo(indexOnFineGridFC, FLUID_FCF);
-            coarseGrid->getField().setFieldEntry(indexOnCoarseGrid, FLUID_FCC);
-            break;
-        }
+		if (neighborIndex != INVALID_INDEX)
+		{
+			const bool neighborBelongsToCoarseToFineInterpolationCell = coarseGrid->getField().isCoarseToFineNode(neighborIndex);
+			if (neighborBelongsToCoarseToFineInterpolationCell)
+			{
+				fc.coarse[fc.numberOfEntries] = indexOnCoarseGrid;
+				fc.fine[fc.numberOfEntries] = indexOnFineGridFC;
+
+				fc.numberOfEntries++;
+
+				fineGrid->setNonStopperOutOfGridCellTo(indexOnFineGridFC, FLUID_FCF);
+				coarseGrid->getField().setFieldEntry(indexOnCoarseGrid, FLUID_FCC);
+				break;
+			}
+		}
     }
 }
 
@@ -130,7 +133,7 @@ void GridInterface::findOverlapStopper(const uint& indexOnCoarseGrid, GridImp* c
         //    continue;								   //should not be here, should be made conditional
 
         const int neighborIndex = coarseGrid->transCoordToIndex(x + dir[0] * coarseGrid->getDelta(), y + dir[1] * coarseGrid->getDelta(), z + dir[2] * coarseGrid->getDelta());
-        neighborBelongsToFineToCoarseInterpolationCell = coarseGrid->getField().isFineToCoarseNode(neighborIndex);
+        neighborBelongsToFineToCoarseInterpolationCell = neighborIndex != INVALID_INDEX ? coarseGrid->getField().isFineToCoarseNode(neighborIndex) : false;
         if (neighborBelongsToFineToCoarseInterpolationCell)
         {
             coarseGrid->getField().setFieldEntryToStopperCoarseUnderFine(indexOnCoarseGrid);
@@ -150,17 +153,17 @@ bool GridInterface::isNeighborFineInvalid(real x, real y, real z, const GridImp*
 {
     const int neighbor = coarseGrid->transCoordToIndex(x, y, z);
 
-    if( coarseGrid->getField().isStopperOutOfGrid(neighbor) || coarseGrid->getField().is(neighbor, STOPPER_OUT_OF_GRID_BOUNDARY) )
+    if( neighbor != INVALID_INDEX || coarseGrid->getField().isStopperOutOfGrid(neighbor) || coarseGrid->getField().is(neighbor, STOPPER_OUT_OF_GRID_BOUNDARY) )
         return false;
 
-    const int indexOnFineGrid = getCoarseToFineIndexOnFineGrid(neighbor, coarseGrid, fineGrid);
-    if (indexOnFineGrid == -1)
+    const uint indexOnFineGrid = getCoarseToFineIndexOnFineGrid(neighbor, coarseGrid, fineGrid);
+    if (indexOnFineGrid == INVALID_INDEX)
         return true;
 
     return fineGrid->getField().isInvalidOutOfGrid(indexOnFineGrid) || fineGrid->getField().isStopperOutOfGrid(indexOnFineGrid);
 }
 
-int GridInterface::getCoarseToFineIndexOnFineGrid(const uint& indexOnCoarseGrid, const GridImp* coarseGrid, const GridImp* fineGrid)
+uint GridInterface::getCoarseToFineIndexOnFineGrid(const uint& indexOnCoarseGrid, const GridImp* coarseGrid, const GridImp* fineGrid)
 {
     real x, y, z;
     coarseGrid->transIndexToCoords(indexOnCoarseGrid, x, y, z);
@@ -171,7 +174,7 @@ int GridInterface::getCoarseToFineIndexOnFineGrid(const uint& indexOnCoarseGrid,
     return fineGrid->transCoordToIndex(xFine, yFine, zFine);
 }
 
-int GridInterface::getFineToCoarseIndexOnFineGrid(const uint& indexOnCoarseGrid, const GridImp* coarseGrid, const GridImp* fineGrid)
+uint GridInterface::getFineToCoarseIndexOnFineGrid(const uint& indexOnCoarseGrid, const GridImp* coarseGrid, const GridImp* fineGrid)
 {
     real x, y, z;
     coarseGrid->transIndexToCoords(indexOnCoarseGrid, x, y, z);
diff --git a/src/GridGenerator/grid/GridInterface.h b/src/GridGenerator/grid/GridInterface.h
index cb9d4fdb1a1086887b2d8e09f90d309c9df9d9a3..719a3ec9d87ff6b78c188079ff9a7974aad58eb1 100644
--- a/src/GridGenerator/grid/GridInterface.h
+++ b/src/GridGenerator/grid/GridInterface.h
@@ -33,10 +33,10 @@ public:
 
 
 private:
-    HOSTDEVICE int getCoarseToFineIndexOnFineGrid(const uint& indexOnCoarseGrid, const GridImp* coarseGrid, const GridImp* fineGrid);
+    HOSTDEVICE uint getCoarseToFineIndexOnFineGrid(const uint& indexOnCoarseGrid, const GridImp* coarseGrid, const GridImp* fineGrid);
     HOSTDEVICE bool isNeighborFineInvalid(real x, real y, real z, const GridImp* coarseGrid, const GridImp* fineGrid);
 
-    HOSTDEVICE int getFineToCoarseIndexOnFineGrid(const uint& indexOnCoarseGrid, const GridImp* coarseGrid, const GridImp* fineGrid);
+    HOSTDEVICE uint getFineToCoarseIndexOnFineGrid(const uint& indexOnCoarseGrid, const GridImp* coarseGrid, const GridImp* fineGrid);
 
     HOSTDEVICE static void findSparseIndex(uint* indices, GridImp* grid, uint index);
 };