diff --git a/src/GridGenerator/grid/GridInterface.cu b/src/GridGenerator/grid/GridInterface.cu
index 85f076fa03f88c3ab824b9602a692ef5b688a0cc..74d038f4e92f03cf3e52d0e85d0cff6205a74a93 100644
--- a/src/GridGenerator/grid/GridInterface.cu
+++ b/src/GridGenerator/grid/GridInterface.cu
@@ -34,8 +34,8 @@ void GridInterface::findInterfaceCF(const uint& indexOnCoarseGrid, GridImp* coar
 
     for(const auto dir : coarseGrid->distribution)
     {
-        const bool isFineGridNeighborFluid = isNeighborFineFluid(x + dir[0] * coarseGrid->getDelta(), y + dir[1] * coarseGrid->getDelta(), z + dir[2] * coarseGrid->getDelta(), coarseGrid, fineGrid);
-        if(!isFineGridNeighborFluid)
+        const bool isFineGridNeighborInvalid = isNeighborFineInvalid(x + dir[0] * coarseGrid->getDelta(), y + dir[1] * coarseGrid->getDelta(), z + dir[2] * coarseGrid->getDelta(), coarseGrid, fineGrid);
+        if(isFineGridNeighborInvalid)
         {
             cf.coarse[cf.numberOfEntries] = indexOnCoarseGrid;
             cf.fine[cf.numberOfEntries] = indexOnFineGridCF;
@@ -97,9 +97,10 @@ void GridInterface::findOverlapStopper(const uint& indexOnCoarseGrid, GridImp* c
     if (indexOnFineGridFC == -1)
         return;
 
-    const bool fineGridNodeIsFluid = fineGrid->getField().isFluid(indexOnFineGridFC);
-    if (!fineGridNodeIsFluid)
-        return;
+    //const bool fineGridNodeIsFluid = fineGrid->getField().isFluid(indexOnFineGridFC);
+    //if (!fineGridNodeIsFluid)
+    //    return;
+
 
     real x, y, z;
     coarseGrid->transIndexToCoords(indexOnCoarseGrid, x, y, z);
@@ -123,13 +124,13 @@ void GridInterface::findOverlapStopper(const uint& indexOnCoarseGrid, GridImp* c
         coarseGrid->getField().setFieldEntryToInvalid(indexOnCoarseGrid);
 }
 
-bool GridInterface::isNeighborFineFluid(real x, real y, real z, const GridImp* coarseGrid, const GridImp* fineGrid)
+bool GridInterface::isNeighborFineInvalid(real x, real y, real z, const GridImp* coarseGrid, const GridImp* fineGrid)
 {
     const int neighbor = coarseGrid->transCoordToIndex(x, y, z);
     const int indexOnFineGrid = getCoarseToFineIndexOnFineGrid(neighbor, coarseGrid, fineGrid);
     if (indexOnFineGrid == -1)
-        return false;
-    return fineGrid->getField().isFluid(indexOnFineGrid);
+        return true;
+    return fineGrid->getField().isOutOfGrid(indexOnFineGrid) || fineGrid->getField().isStopperEndOfGrid(indexOnFineGrid);
 }
 
 int GridInterface::getCoarseToFineIndexOnFineGrid(const uint& indexOnCoarseGrid, const GridImp* coarseGrid, const GridImp* fineGrid)
diff --git a/src/GridGenerator/grid/GridInterface.h b/src/GridGenerator/grid/GridInterface.h
index b37a554e1dae99c0576102b21d938b57c2c8cd9f..a81ed6992a4c38b7b05043e57eb2dce6581b8dbd 100644
--- a/src/GridGenerator/grid/GridInterface.h
+++ b/src/GridGenerator/grid/GridInterface.h
@@ -33,7 +33,7 @@ public:
 
 private:
     HOSTDEVICE int getCoarseToFineIndexOnFineGrid(const uint& indexOnCoarseGrid, const GridImp* coarseGrid, const GridImp* fineGrid);
-    HOSTDEVICE bool isNeighborFineFluid(real x, real y, real z, 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);