From 83e321d3e449d84ff76c2e52106b45f92c31d429 Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 27 Mar 2019 15:04:48 +0000 Subject: [PATCH] ENH: snappyHexMesh: allow cross-patch merging of patch faces. Fixes #1255. --- .../generation/snappyHexMesh/snappyHexMesh.C | 48 ++++++++---- .../polyTopoChange/combineFaces.C | 77 ++++++++++++++++--- .../polyTopoChange/combineFaces.H | 21 +++-- .../meshRefinement/meshRefinement.H | 18 ++++- .../meshRefinement/meshRefinementMerge.C | 14 ++-- .../snappyHexMeshDriver/snappyLayerDriver.C | 16 ++-- .../snappyHexMeshDriver/snappyLayerDriver.H | 6 +- .../snappyHexMeshDriver/snappyRefineDriver.C | 18 +++-- .../snappyHexMeshDriver/snappyRefineDriver.H | 6 +- .../snappyHexMeshDriver/snappySnapDriver.C | 11 ++- .../snappyHexMeshDriver/snappySnapDriver.H | 3 +- 11 files changed, 179 insertions(+), 59 deletions(-) diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C index 7b0eba46d6..d3040ffac3 100644 --- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C +++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2015-2018 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2015-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -1691,19 +1691,41 @@ int main(int argc, char *argv[]) } - const bool mergePatchFaces - ( - meshDict.lookupOrDefault("mergePatchFaces", true) - ); - - if (!mergePatchFaces) + // How to treat co-planar faces + meshRefinement::FaceMergeType mergeType = + meshRefinement::FaceMergeType::GEOMETRIC; { - Info<< "Not merging patch-faces of cell to preserve" - << " (split)hex cell shape." - << nl << endl; + const bool mergePatchFaces + ( + meshDict.lookupOrDefault("mergePatchFaces", true) + ); + + if (!mergePatchFaces) + { + Info<< "Not merging patch-faces of cell to preserve" + << " (split)hex cell shape." + << nl << endl; + mergeType = meshRefinement::FaceMergeType::NONE; + } + else + { + const bool mergeAcrossPatches + ( + meshDict.lookupOrDefault("mergeAcrossPatches", false) + ); + + if (mergeAcrossPatches) + { + Info<< "Merging co-planar patch-faces of cells" + << ", regardless of patch assignment" + << nl << endl; + mergeType = meshRefinement::FaceMergeType::IGNOREPATCH; + } + } } + if (wantRefine) { cpuTime timer; @@ -1732,7 +1754,7 @@ int main(int argc, char *argv[]) refineParams, snapParams, refineParams.handleSnapProblems(), - mergePatchFaces, // merge co-planar faces + mergeType, motionDict ); @@ -1784,7 +1806,7 @@ int main(int argc, char *argv[]) ( snapDict, motionDict, - mergePatchFaces, + mergeType, curvature, planarAngle, snapParams @@ -1851,7 +1873,7 @@ int main(int argc, char *argv[]) layerDict, motionDict, layerParams, - mergePatchFaces, + mergeType, preBalance, decomposer, distributor diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/combineFaces.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/combineFaces.C index ca9427f357..6755147426 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/combineFaces.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/combineFaces.C @@ -129,6 +129,7 @@ bool Foam::combineFaces::validFace void Foam::combineFaces::regioniseFaces ( const scalar minCos, + const bool mergeAcrossPatches, const label celli, const labelList& cEdges, Map