diff --git a/src/autoMesh/Make/files b/src/autoMesh/Make/files index 96141445be..fecec5db5d 100644 --- a/src/autoMesh/Make/files +++ b/src/autoMesh/Make/files @@ -15,6 +15,7 @@ $(autoHexMeshDriver)/pointData/pointData.C $(autoHexMesh)/meshRefinement/meshRefinementBaffles.C $(autoHexMesh)/meshRefinement/meshRefinement.C $(autoHexMesh)/meshRefinement/meshRefinementMerge.C +$(autoHexMesh)/meshRefinement/meshRefinementProblemCells.C $(autoHexMesh)/meshRefinement/meshRefinementRefine.C $(autoHexMesh)/refinementSurfaces/refinementSurfaces.C $(autoHexMesh)/shellSurfaces/shellSurfaces.C diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C index ed9fd05808..fc70f98ccc 100644 --- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C +++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoRefineDriver.C @@ -518,7 +518,9 @@ void Foam::autoRefineDriver::baffleAndSplitMesh // be like boundary face from now on so not coupled anymore. meshRefiner_.baffleAndSplitMesh ( - handleSnapProblems, + handleSnapProblems, // detect&remove potential snap problem + false, // perpendicular edge connected cells + scalarField(0), // per region perpendicular angle !handleSnapProblems, // merge free standing baffles? motionDict, const_cast(mesh.time()), @@ -592,10 +594,14 @@ void Foam::autoRefineDriver::splitAndMergeBaffles const_cast(mesh.time())++; } + const scalarField& perpAngle = meshRefiner_.surfaces().perpendicularAngle(); + meshRefiner_.baffleAndSplitMesh ( handleSnapProblems, - false, // merge free standing baffles? + handleSnapProblems, // remove perp edge connected cells + perpAngle, // perp angle + false, // merge free standing baffles? motionDict, const_cast(mesh.time()), globalToPatch_, diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H index da533c4d13..5895f5ae3a 100644 --- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H +++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H @@ -36,6 +36,7 @@ SourceFiles meshRefinement.C meshRefinementBaffles.C meshRefinementMerge.C + meshRefinementProblemCells.C meshRefinementRefine.C \*---------------------------------------------------------------------------*/ @@ -51,6 +52,7 @@ SourceFiles #include "indirectPrimitivePatch.H" #include "pointFieldsFwd.H" #include "Tuple2.H" +#include "pointIndexHit.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -345,6 +347,8 @@ private: polyTopoChange& meshMod ) const; + // Problem cell handling + //- Helper function to mark face as being on 'boundary'. Used by // markFacesOnProblemCells void markBoundaryFace @@ -355,15 +359,32 @@ private: boolList& isBoundaryPoint ) const; - //- Returns list with for every internal face -1 or the patch - // they should be baffled into. - labelList markFacesOnProblemCells + void findNearest ( - const labelList& globalToPatch + const labelList& meshFaces, + List& nearestInfo, + labelList& nearestSurface, + labelList& nearestRegion, + vectorField& nearestNormal + ) const; + + Map