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