From ec76bca02403d0fb786113ab76d380c8187e8520 Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 28 Oct 2015 15:02:17 +0000 Subject: [PATCH] ENH: snappyHexMesh: improvements to gap detection: - shoot rays to nearest point on surface and two perpendicular rays (instead of always shooting in the 3 coordinate directions) - avoid bleeding through the surface intersection --- .../meshRefinement/meshRefinementGapRefine.C | 7 +++++-- .../autoHexMesh/meshRefinement/transportData.H | 18 +++++++++++++++++- .../meshRefinement/transportDataI.H | 17 ++++++++++++++++- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementGapRefine.C b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementGapRefine.C index 8b05d6f39c..d73ea12a0b 100644 --- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementGapRefine.C +++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementGapRefine.C @@ -1366,14 +1366,17 @@ Foam::label Foam::meshRefinement::markInternalGapRefinement << mesh_.globalData().nTotalFaces() << endl; - FaceCellWave deltaCalc + transportData::trackData td(surfaceIndex_); + + FaceCellWave deltaCalc ( mesh_, frontFaces, frontData, faceData, cellData, - mesh_.globalData().nTotalCells()+1 + mesh_.globalData().nTotalCells()+1, + td ); diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/transportData.H b/src/mesh/autoMesh/autoHexMesh/meshRefinement/transportData.H index f601d7e315..eec088e6d2 100644 --- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/transportData.H +++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/transportData.H @@ -45,7 +45,6 @@ namespace Foam // Forward declaration of classes class polyMesh; -class hexRef8; /*---------------------------------------------------------------------------*\ Class transportData Declaration @@ -55,6 +54,23 @@ class transportData : public wallPointData { +public: + + //- Class used to pass additional data in + class trackData + { + public: + + //- Per face the index of the surface hit + const labelList& surfaceIndex_; + + trackData(const labelList& surfaceIndex) + : + surfaceIndex_(surfaceIndex) + {} + }; + + private: // Private Member Functions diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/transportDataI.H b/src/mesh/autoMesh/autoHexMesh/meshRefinement/transportDataI.H index 16b497f4c0..e0bbeaeaf3 100644 --- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/transportDataI.H +++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/transportDataI.H @@ -101,12 +101,17 @@ inline bool Foam::transportData::updateCell ( const polyMesh& mesh, const label cellI, - const label, + const label faceI, const transportData& neighbourWallInfo, const scalar tol, TrackingData& td ) { + if (td.surfaceIndex_[faceI] != -1) + { + return false; + } + const vectorField& cellCentres = mesh.primitiveMesh::cellCentres(); bool updated = update @@ -132,6 +137,11 @@ inline bool Foam::transportData::updateFace TrackingData& td ) { + if (td.surfaceIndex_[thisFaceI] != -1) + { + return false; + } + return update ( mesh.faceCentres()[thisFaceI], @@ -152,6 +162,11 @@ inline bool Foam::transportData::updateFace TrackingData& td ) { + if (td.surfaceIndex_[thisFaceI] != -1) + { + return false; + } + return update ( mesh.faceCentres()[thisFaceI],