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