diff --git a/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h
index 78a4fa174e07df992f8e8566711fbc9e69c4c17f..7f4be24b9f39ae54916358880372f71ebf857069 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h
+++ b/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h
@@ -86,16 +86,16 @@ public:
     virtual uint getNumberOfReceiveIndices( int direction, uint level ) = 0;
     virtual void getSendIndices( int* sendIndices, int direction, int level ) = 0;
     virtual void getReceiveIndices( int* sendIndices, int direction, int level ) = 0;
-    virtual void reorderSendIndexForCommAfterFtoC(int *sendIndices, int &numberOfSendNeighborsAfterFtoC,
+    virtual void reorderSendIndexForCommAfterFtoC(int *sendIndices, uint &numberOfSendNeighborsAfterFtoC,
                                                   uint *iCellFCCBorder, uint sizeOfICellFCCBorder, int direction,
                                                   int level)                       = 0;
-    virtual void reorderRecvIndexForCommAfterFtoC(int *recvIndices, int &numberOfRecvNeighborsAfterFtoC,
+    virtual void reorderRecvIndexForCommAfterFtoC(int *recvIndices, uint &numberOfRecvNeighborsAfterFtoC,
                                                   uint *iCellFCCBorder, uint sizeOfICellFCCBorder, int direction,
                                                   int level)                       = 0;
-    virtual void getAndReorderSendIndices(int *sendIndices, int &numberOfSendNeighborsAfterFtoC, uint *iCellFCCBorder,
+    virtual void getAndReorderSendIndices(int *sendIndices, uint &numberOfSendNeighborsAfterFtoC, uint *iCellFCCBorder,
                                           uint sizeOfICellFCCBorder, int direction, int level,
                                           bool sendIndicesNeedToBeReordered)       = 0;
-    virtual void getAndReorderReceiveIndices(int *recvIndices, int &numberOfRecvNeighborsAfterFtoC,
+    virtual void getAndReorderReceiveIndices(int *recvIndices, uint &numberOfRecvNeighborsAfterFtoC,
                                              uint *iCellFCCBorder, uint sizeOfICellFCCBorder, int direction, int level,
                                              bool receiveIndicesNeedToBeReordered) = 0;
 
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
index acc2f872bcd40e1b7ea16d6e0541589f59b61831..2ccf96b4e9b03dca89d6bca7e0bdab38f18cdff0 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
+++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
@@ -266,7 +266,7 @@ GRIDGENERATOR_EXPORT void LevelGridBuilder::getReceiveIndices(int * receiveIndic
     }
 }
 GRIDGENERATOR_EXPORT void LevelGridBuilder::getAndReorderSendIndices(int *sendIndices,
-                                                                     int &numberOfSendNeighborsAfterFtoC,
+                                                                     uint &numberOfSendNeighborsAfterFtoC,
                                                                      uint *iCellFCCBorder, uint sizeOfICellFCCBorder,
                                                                      int direction, int level,
                                                                      bool sendIndicesNeedToBeReordered)
@@ -277,7 +277,7 @@ GRIDGENERATOR_EXPORT void LevelGridBuilder::getAndReorderSendIndices(int *sendIn
                                          sizeOfICellFCCBorder, direction, level);
 }
 GRIDGENERATOR_EXPORT void LevelGridBuilder::getAndReorderReceiveIndices(int *recvIndices,
-                                                                        int &numberOfRecvNeighborsAfterFtoC,
+                                                                        uint &numberOfRecvNeighborsAfterFtoC,
                                                                         uint *iCellFCCBorder, uint sizeOfICellFCCBorder,
                                                                         int direction, int level,
                                                                         bool receiveIndicesNeedToBeReordered)
@@ -288,7 +288,7 @@ GRIDGENERATOR_EXPORT void LevelGridBuilder::getAndReorderReceiveIndices(int *rec
                                          sizeOfICellFCCBorder, direction, level);
 }
 
-GRIDGENERATOR_EXPORT void LevelGridBuilder::reorderSendIndexForCommAfterFtoC(int *sendIndices, int &numberOfSendNeighborsAfterFtoC,
+GRIDGENERATOR_EXPORT void LevelGridBuilder::reorderSendIndexForCommAfterFtoC(int *sendIndices, uint &numberOfSendNeighborsAfterFtoC,
                                                                              uint* iCellFCCBorder,  uint sizeOfICellFCCBorder,
                                                                              int direction, int level)
 {
@@ -316,11 +316,14 @@ GRIDGENERATOR_EXPORT void LevelGridBuilder::reorderSendIndexForCommAfterFtoC(int
 
         // check if sparse index is in ICellFCC border
         isInICellFCCBorder = false;
-        for (uint j = 0; j < sizeOfICellFCCBorder; j++)
-            if (iCellFCCBorder[j] == sparseIndexSend) {
+        for (uint j = 0; j < sizeOfICellFCCBorder; j++) {
+            if (sparseIndexSend < 0)
+                continue;
+            if (iCellFCCBorder[j] == (uint) sparseIndexSend) {
                 isInICellFCCBorder = true;
                 break;
             }
+        }
 
         // add index to corresponding vector
         if (isInICellFCCBorder)
@@ -344,7 +347,7 @@ GRIDGENERATOR_EXPORT void LevelGridBuilder::reorderSendIndexForCommAfterFtoC(int
     std::cout << "correct number of nodes?: " << numberOfNodesIsCorrect << std::endl;
 }
 
-GRIDGENERATOR_EXPORT void LevelGridBuilder::reorderRecvIndexForCommAfterFtoC(int *recvIndices, int &numberOfRecvNeighborsAfterFtoC,
+GRIDGENERATOR_EXPORT void LevelGridBuilder::reorderRecvIndexForCommAfterFtoC(int *recvIndices, uint &numberOfRecvNeighborsAfterFtoC,
                                                                              uint *iCellFCCBorder, uint sizeOfICellFCCBorder, 
                                                                              int direction, int level)
 {
@@ -374,11 +377,14 @@ GRIDGENERATOR_EXPORT void LevelGridBuilder::reorderRecvIndexForCommAfterFtoC(int
 
         // check if sparse index is in ICellFCC border
         isInICellFCCBorder = false;
-        for (uint j = 0; j < sizeOfICellFCCBorder; j++)
-            if (iCellFCCBorder[j] == sparseIndexRecv) {
+        for (uint j = 0; j < sizeOfICellFCCBorder; j++) {
+            if (sparseIndexRecv < 0)
+                continue;
+            if (iCellFCCBorder[j] == (uint) sparseIndexRecv) {
                 isInICellFCCBorder = true;
                 break;
             }
+        }
 
         // add index to corresponding vector
         if (isInICellFCCBorder)
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
index 8c3fe9256ee6a4ca24450431fbd0869f605010ce..ba4b09986bca320557c23135efec58083dda0dbc 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
+++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
@@ -149,17 +149,17 @@ public:
     GRIDGENERATOR_EXPORT uint getNumberOfReceiveIndices( int direction, uint level ) override;
     GRIDGENERATOR_EXPORT void getSendIndices( int* sendIndices, int direction, int level ) override;
     GRIDGENERATOR_EXPORT void getReceiveIndices( int* sendIndices, int direction, int level ) override;
-    GRIDGENERATOR_EXPORT void getAndReorderSendIndices(int *sendIndices, int &numberOfSendNeighborsAfterFtoC,
+    GRIDGENERATOR_EXPORT void getAndReorderSendIndices(int *sendIndices, uint &numberOfSendNeighborsAfterFtoC,
                                                        uint *iCellFCCBorder, uint sizeOfICellFCCBorder, int direction,
                                                        int level, bool sendIndicesNeedToBeReordered) override;
-    GRIDGENERATOR_EXPORT void getAndReorderReceiveIndices(int *recvIndices, int &numberOfRecvNeighborsAfterFtoC,
+    GRIDGENERATOR_EXPORT void getAndReorderReceiveIndices(int *recvIndices, uint &numberOfRecvNeighborsAfterFtoC,
                                                           uint *iCellFCCBorder, uint sizeOfICellFCCBorder,
                                                           int direction, int level,
                                                           bool receiveIndicesNeedToBeReordered) override;
-    GRIDGENERATOR_EXPORT void reorderSendIndexForCommAfterFtoC(int *sendIndices, int &numberOfSendNeighborsAfterFtoC,
+    GRIDGENERATOR_EXPORT void reorderSendIndexForCommAfterFtoC(int *sendIndices, uint &numberOfSendNeighborsAfterFtoC,
                                                                uint *iCellFCCBorder, uint sizeOfICellFCCBorder,
                                                                int direction, int level) override;
-    GRIDGENERATOR_EXPORT void reorderRecvIndexForCommAfterFtoC(int *recvIndices, int &numberOfRecvNeighborsAfterFtoC,
+    GRIDGENERATOR_EXPORT void reorderRecvIndexForCommAfterFtoC(int *recvIndices, uint &numberOfRecvNeighborsAfterFtoC,
                                                                uint *iCellFCCBorder, uint sizeOfICellFCCBorder,
                                                                int direction, int level) override;
 
diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
index f0ff5e7222322d74ab00f353c85f8d14e433f64b..d5583df04b104d9c6e71e3d70f4fd8d43f05a966 100644
--- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
+++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
@@ -294,12 +294,12 @@ struct LBMSimulationParameter
     std::vector<ProcessNeighbor27> recvProcessNeighborY;
     std::vector<ProcessNeighbor27> recvProcessNeighborZ;
 
-    std::vector<int> numberOfSendProcessNeighborsAfterFtoCX;
-    std::vector<int> numberOfSendProcessNeighborsAfterFtoCY;
-    std::vector<int> numberOfSendProcessNeighborsAfterFtoCZ;
-    std::vector<int> numberOfRecvProcessNeighborsAfterFtoCX;
-    std::vector<int> numberOfRecvProcessNeighborsAfterFtoCY;
-    std::vector<int> numberOfRecvProcessNeighborsAfterFtoCZ;
+    std::vector<uint> numberOfSendProcessNeighborsAfterFtoCX;
+    std::vector<uint> numberOfSendProcessNeighborsAfterFtoCY;
+    std::vector<uint> numberOfSendProcessNeighborsAfterFtoCZ;
+    std::vector<uint> numberOfRecvProcessNeighborsAfterFtoCX;
+    std::vector<uint> numberOfRecvProcessNeighborsAfterFtoCY;
+    std::vector<uint> numberOfRecvProcessNeighborsAfterFtoCZ;
     ///////////////////////////////////////////////////////
     // 3D domain decomposition convection diffusion
     std::vector<ProcessNeighbor27> sendProcessNeighborADX;