From 615a74626e15e63daf8be2769a0a2c9b65943160 Mon Sep 17 00:00:00 2001 From: laurence Date: Wed, 25 Sep 2013 12:37:19 +0100 Subject: [PATCH] ENH: foamyHexMesh: Include baffle handling --- .../advanced/collapseEdges/collapseEdges.C | 45 +- .../mesh/generation/foamyHexMesh/Make/options | 1 + .../DelaunayMesh/DelaunayMesh.C | 29 +- .../DelaunayMesh/DelaunayMesh.H | 8 +- .../DelaunayMesh/DistributedDelaunayMesh.C | 3 +- .../conformalVoronoiMesh/Make/files | 1 + .../conformalVoronoiMesh/Make/options | 1 + .../cellShapeControlMesh.C | 117 ++-- .../cellShapeControlMesh.H | 11 +- .../searchableSurfaceControl.C | 5 + .../controlMeshRefinement.C | 2 +- .../conformalVoronoiMesh.C | 173 +++-- .../conformalVoronoiMesh.H | 48 +- .../conformalVoronoiMeshCalcDualMesh.C | 607 ++---------------- .../conformalVoronoiMeshConformToSurface.C | 452 ++++++------- .../conformalVoronoiMeshFeaturePoints.C | 443 +++++++++++-- .../conformalVoronoiMeshI.H | 109 +--- .../conformalVoronoiMeshIO.C | 142 +++- .../featurePointConformer.C | 12 +- .../featurePointConformer.H | 7 + .../featurePointConformerI.H | 6 + .../featurePointConformerSpecialisations.C | 196 +++++- .../indexedCell/indexedCell.H | 2 + .../indexedCell/indexedCellI.H | 17 + .../conformationSurfaces.C | 29 +- .../autoDensity/autoDensity.C | 20 +- .../pointPairs/pointPairs.C | 244 +++++++ .../pointPairs/pointPairs.H | 163 +++++ .../searchableBoxFeatures.C | 11 +- .../searchablePlateFeatures.C | 218 +++++++ .../searchablePlateFeatures.H | 120 ++++ .../triSurfaceMeshFeatures.C | 24 +- .../triSurfaceMeshFeatures.H | 3 + .../surfaceBooleanFeatures.C | 285 ++++++-- .../surfaceFeatureExtract.C | 29 +- .../extendedFeatureEdgeMesh.C | 32 +- .../extendedFeatureEdgeMesh.H | 31 +- .../extendedFeatureEdgeMeshI.H | 23 + .../surfaceIntersection/edgeIntersections.C | 136 ++-- .../surfaceIntersection/surfaceIntersection.C | 7 +- .../surfaceIntersection/surfaceIntersection.H | 2 +- .../mixerVessel/system/foamyHexMeshDict | 10 +- 42 files changed, 2444 insertions(+), 1380 deletions(-) create mode 100644 applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/pointPairs/pointPairs.C create mode 100644 applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/pointPairs/pointPairs.H create mode 100644 applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/searchableSurfaceFeatures/searchablePlateFeatures.C create mode 100644 applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/searchableSurfaceFeatures/searchablePlateFeatures.H diff --git a/applications/utilities/mesh/advanced/collapseEdges/collapseEdges.C b/applications/utilities/mesh/advanced/collapseEdges/collapseEdges.C index 0515205c78..5b24606613 100644 --- a/applications/utilities/mesh/advanced/collapseEdges/collapseEdges.C +++ b/applications/utilities/mesh/advanced/collapseEdges/collapseEdges.C @@ -52,6 +52,7 @@ Usage #include "polyTopoChange.H" #include "fvMesh.H" #include "polyMeshFilter.H" +#include "faceSet.H" using namespace Foam; @@ -74,9 +75,9 @@ int main(int argc, char *argv[]) argList::addOption ( - "collapseFaceZone", - "zoneName", - "Collapse faces that are in the supplied face zone" + "collapseFaceSet", + "faceSet", + "Collapse faces that are in the supplied face set" ); # include "addOverwriteOption.H" @@ -93,15 +94,15 @@ int main(int argc, char *argv[]) const bool overwrite = args.optionFound("overwrite"); const bool collapseFaces = args.optionFound("collapseFaces"); - const bool collapseFaceZone = args.optionFound("collapseFaceZone"); + const bool collapseFaceSet = args.optionFound("collapseFaceSet"); - if (collapseFaces && collapseFaceZone) + if (collapseFaces && collapseFaceSet) { FatalErrorIn("main(int, char*[])") << "Both face zone collapsing and face collapsing have been" << "selected. Choose only one of:" << nl << " -collapseFaces" << nl - << " -collapseFaceZone " + << " -collapseFaceSet " << abort(FatalError); } @@ -117,7 +118,6 @@ int main(int argc, char *argv[]) ), labelList(mesh.nPoints(), labelMin) ); - forAll(timeDirs, timeI) { runTime.setTime(timeDirs[timeI], timeI); @@ -128,6 +128,14 @@ int main(int argc, char *argv[]) label nBadFaces = 0; + faceSet indirectPatchFaces + ( + mesh, + "indirectPatchFaces", + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ); + { meshFilterPtr.set(new polyMeshFilter(mesh, pointPriority)); polyMeshFilter& meshFilter = meshFilterPtr(); @@ -139,19 +147,26 @@ int main(int argc, char *argv[]) // the face filtering is sped up. nBadFaces = meshFilter.filterEdges(0); { - polyTopoChange meshMod(newMesh); + polyTopoChange meshMod(newMesh()); meshMod.changeMesh(mesh, false); + + polyMeshFilter::copySets(newMesh(), mesh); } pointPriority = meshFilter.pointPriority(); } - if (collapseFaceZone) + if (collapseFaceSet) { - const word faceZoneName = args.optionRead("collapseFaceZone"); - - const faceZone& fZone = mesh.faceZones()[faceZoneName]; + const word faceSetName(args.optionRead("collapseFaceSet")); + faceSet fSet + ( + mesh, + faceSetName, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ); meshFilterPtr.reset(new polyMeshFilter(mesh, pointPriority)); polyMeshFilter& meshFilter = meshFilterPtr(); @@ -160,11 +175,13 @@ int main(int argc, char *argv[]) // Filter faces. Pass in the number of bad faces that are present // from the previous edge filtering to use as a stopping criterion. - meshFilter.filter(fZone); + meshFilter.filter(fSet); { polyTopoChange meshMod(newMesh); meshMod.changeMesh(mesh, false); + + polyMeshFilter::copySets(newMesh(), mesh); } pointPriority = meshFilter.pointPriority(); @@ -184,6 +201,8 @@ int main(int argc, char *argv[]) polyTopoChange meshMod(newMesh); meshMod.changeMesh(mesh, false); + + polyMeshFilter::copySets(newMesh(), mesh); } pointPriority = meshFilter.pointPriority(); diff --git a/applications/utilities/mesh/generation/foamyHexMesh/Make/options b/applications/utilities/mesh/generation/foamyHexMesh/Make/options index f03dbf9097..f0483b99be 100644 --- a/applications/utilities/mesh/generation/foamyHexMesh/Make/options +++ b/applications/utilities/mesh/generation/foamyHexMesh/Make/options @@ -10,6 +10,7 @@ include $(GENERAL_RULES)/CGAL EXE_INC = \ ${EXE_FROUNDING_MATH} \ ${EXE_NDEBUG} \ + ${CGAL_EXACT} \ ${CGAL_INEXACT} \ ${CGAL_INC} \ -IconformalVoronoiMesh/lnInclude \ diff --git a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C index 3afdf9cf13..8f90bb2118 100644 --- a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C +++ b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/DelaunayMesh/DelaunayMesh.C @@ -190,20 +190,25 @@ void Foam::DelaunayMesh::reset() resetVertexCount(); resetCellCount(); - insertPoints(vertices); + insertPoints(vertices, false); Info<< "Inserted " << vertexCount() << " fixed points" << endl; } template -void Foam::DelaunayMesh::insertPoints(const List& vertices) +Foam::Map Foam::DelaunayMesh::insertPoints +( + const List& vertices, + const bool reIndex +) { - rangeInsertWithInfo + return rangeInsertWithInfo ( vertices.begin(), vertices.end(), - false + false, + reIndex ); } @@ -268,7 +273,7 @@ const template template -void Foam::DelaunayMesh::rangeInsertWithInfo +Foam::Map Foam::DelaunayMesh::rangeInsertWithInfo ( PointIterator begin, PointIterator end, @@ -307,6 +312,10 @@ void Foam::DelaunayMesh::rangeInsertWithInfo Vertex_handle hint; + Map