From be97bf6b74e38eea31c6fc238a2a6f5eeda580b2 Mon Sep 17 00:00:00 2001
From: Soeren Peters <peters@irmb.tu-bs.de>
Date: Mon, 7 May 2018 13:29:15 +0200
Subject: [PATCH] - set inner nodes to solid and overlap stopper

---
 src/GridGenerator/grid/GridImp.cu | 19 ++++++++++---------
 src/GridGenerator/grid/GridImp.h  |  2 +-
 2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/GridGenerator/grid/GridImp.cu b/src/GridGenerator/grid/GridImp.cu
index 536c28e84..ff1e7651c 100644
--- a/src/GridGenerator/grid/GridImp.cu
+++ b/src/GridGenerator/grid/GridImp.cu
@@ -204,8 +204,8 @@ HOSTDEVICE void GridImp::findStopperNode(uint index)
     if(isValidEndOfGridStopper(index))
         this->field.setFieldEntryToStopperEndOfGrid(index);
 
-    if (isValidStartOfGridStopper(index))
-        this->field.setFieldEntryToStopperEndOfGrid(index);
+    if (isValidInnerStopper(index))
+        this->field.setFieldEntryToStopperOverlapGrid(index);
 }
 
 HOSTDEVICE void GridImp::removeOddBoundaryCellNode(uint index)
@@ -254,15 +254,16 @@ HOSTDEVICE bool GridImp::isNode(uint index, char type) const
     return field.is(index, type);
 }
 
-
-HOSTDEVICE bool GridImp::isValidStartOfGridStopper(uint index) const
+HOSTDEVICE bool GridImp::isValidEndOfGridStopper(uint index) const
 {
-    return this->field.is(index, OUT_OF_GRID) && (nodeInNextCellIs(index, FLUID) || nodeInNextCellIs(index, FLUID_CFF));
+    return this->field.is(index, OUT_OF_GRID) && (nodeInNextCellIs(index, FLUID) || nodeInNextCellIs(index, FLUID_CFF))
+        || this->field.is(index, OUT_OF_GRID) && (nodeInPreviousCellIs(index, FLUID) || nodeInPreviousCellIs(index, FLUID_CFF));
 }
 
-HOSTDEVICE bool GridImp::isValidEndOfGridStopper(uint index) const
+HOSTDEVICE bool GridImp::isValidInnerStopper(uint index) const
 {
-    return this->field.is(index, OUT_OF_GRID) && (nodeInPreviousCellIs(index, FLUID) || nodeInPreviousCellIs(index, FLUID_CFF));
+    return this->field.is(index, SOLID) && (nodeInNextCellIs(index, FLUID) || nodeInNextCellIs(index, FLUID_CFF))
+        || this->field.is(index, SOLID) && (nodeInPreviousCellIs(index, FLUID) || nodeInPreviousCellIs(index, FLUID_CFF));
 }
 
 
@@ -424,7 +425,7 @@ HOST void GridImp::updateSparseIndices()
     int newIndex = 0;
     for (uint index = 0; index < size; index++)
     {
-        if (this->field.isInvalid(index) || this->field.isOutOfGrid(index))
+        if (this->field.isInvalid(index) || this->field.isOutOfGrid(index) || this->field.isSolid(index))
         {
             sparseIndices[index] = -1;
             removedNodes++;
@@ -558,7 +559,7 @@ HOST void GridImp::mesh(Object* object)
 {
     TriangularMesh* triangularMesh = dynamic_cast<TriangularMesh*>(object);
     if (triangularMesh)
-        triangularMeshDiscretizationStrategy->discretize(triangularMesh, this, OUT_OF_GRID, FLUID);
+        triangularMeshDiscretizationStrategy->discretize(triangularMesh, this, SOLID, FLUID);
     else
         gridStrategy->findInnerNodes(shared_from_this());
 
diff --git a/src/GridGenerator/grid/GridImp.h b/src/GridGenerator/grid/GridImp.h
index a6c3d2df0..adad56d3a 100644
--- a/src/GridGenerator/grid/GridImp.h
+++ b/src/GridGenerator/grid/GridImp.h
@@ -33,7 +33,7 @@ public:
 private:
     HOST void initalNumberOfNodesAndSize();
     HOSTDEVICE Cell getOddCellFromIndex(uint index) const;
-    HOSTDEVICE bool isValidStartOfGridStopper(uint index) const;
+    HOSTDEVICE bool isValidInnerStopper(uint index) const;
     HOSTDEVICE bool isValidEndOfGridStopper(uint index) const;
     HOSTDEVICE bool isOutSideOfGrid(Cell &cell) const;
     HOSTDEVICE bool contains(Cell &cell, char type) const;
-- 
GitLab