Skip to content
Snippets Groups Projects
Commit 1fb86e4e authored by LEGOLAS\lenz's avatar LEGOLAS\lenz
Browse files

implements a fix in the grid generator, that sets invalid...

implements a fix in the grid generator, that sets invalid STOPPER_UOT_OF_GRID_BOUNDARY nodes to INVALID_OUT_OF_GRID
parent ee00efa2
No related branches found
No related tags found
No related merge requests found
......@@ -1046,6 +1046,11 @@ HOSTDEVICE void GridImp::findOverlapStopper(uint index, GridImp& finerGrid)
gridInterface->findOverlapStopper(index, this, &finerGrid);
}
HOSTDEVICE void GridImp::findInvalidBoundaryNodes(uint index)
{
gridInterface->findInvalidBoundaryNodes(index, this);
}
// --------------------------------------------------------- //
// Mesh Triangle //
// --------------------------------------------------------- //
......
......@@ -156,6 +156,7 @@ public:
HOSTDEVICE void findGridInterfaceCF(uint index, GridImp& finerGrid, LbmOrGks lbmOrGks);
HOSTDEVICE void findGridInterfaceFC(uint index, GridImp& finerGrid);
HOSTDEVICE void findOverlapStopper(uint index, GridImp& finerGrid);
HOSTDEVICE void findInvalidBoundaryNodes(uint index);
HOSTDEVICE void setNodeTo(uint index, char type);
HOSTDEVICE bool isNode(uint index, char type) const;
......
......@@ -185,6 +185,16 @@ void GridInterface::findOverlapStopper(const uint& indexOnCoarseGrid, GridImp* c
coarseGrid->getField().setFieldEntryToInvalidCoarseUnderFine(indexOnCoarseGrid);
}
void GridInterface::findInvalidBoundaryNodes(const uint& indexOnCoarseGrid, GridImp* coarseGrid)
{
if( !coarseGrid->getField().is(indexOnCoarseGrid, STOPPER_OUT_OF_GRID_BOUNDARY ) ) return;
if( !coarseGrid->hasNeighborOfType(indexOnCoarseGrid, FLUID) &&
!coarseGrid->hasNeighborOfType(indexOnCoarseGrid, FLUID_CFC) &&
!coarseGrid->hasNeighborOfType(indexOnCoarseGrid, FLUID_CFF) )
coarseGrid->getField().setFieldEntryToInvalidCoarseUnderFine(indexOnCoarseGrid);
}
bool GridInterface::isNeighborFineInvalid(real x, real y, real z, const GridImp* coarseGrid, const GridImp* fineGrid)
{
const uint neighbor = coarseGrid->transCoordToIndex(x, y, z);
......
......@@ -19,6 +19,8 @@ public:
HOSTDEVICE void VF_PUBLIC findInterfaceFC(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
HOSTDEVICE void VF_PUBLIC findOverlapStopper(const uint& indexOnCoarseGrid, GridImp* coarseGrid, GridImp* fineGrid);
HOSTDEVICE void VF_PUBLIC findInvalidBoundaryNodes(const uint& indexOnCoarseGrid, GridImp* coarseGrid);
HOSTDEVICE void VF_PUBLIC findForGridInterfaceSparseIndexCF(GridImp* coarseGrid, GridImp* fineGrid, uint index);
HOSTDEVICE void VF_PUBLIC findForGridInterfaceSparseIndexFC(GridImp* coarseGrid, GridImp* fineGrid, uint index);
......
......@@ -216,10 +216,15 @@ void GridCpuStrategy::findGridInterface(SPtr<GridImp> grid, SPtr<GridImp> fineGr
for (int index = 0; index < grid->getSize(); index++)
grid->findGridInterfaceFC(index, *fineGrid);
for (int index = 0; index < grid->getSize(); index++)
grid->findOverlapStopper(index, *fineGrid);
if( lbmOrGks == GKS )
{
for (int index = 0; index < grid->getSize(); index++)
grid->findInvalidBoundaryNodes(index);
}
const uint newGridSize = grid->getSparseSize();
*logging::out << logging::Logger::INFO_INTERMEDIATE << " ... done. \n";
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment