diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H index cde15d0662..f9648dc1e7 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H @@ -536,6 +536,11 @@ private: const Delaunay::Finite_edges_iterator& eit ) const; + boolList dualFaceBoundaryPoints + ( + const Delaunay::Finite_edges_iterator& eit + ) const; + //- Finds the maximum filterCount of the dual vertices // (Delaunay cells) that form the dual face produced by the // supplied edge @@ -842,6 +847,13 @@ private: const Delaunay::Finite_facets_iterator& fit ) const; + //- Merge adjacent edges that are not attached to other faces + label mergeNearlyParallelEdges + ( + const pointField& pts, + const scalar maxCosAngle + ); + //- Merge vertices that are very close together void mergeCloseDualVertices ( diff --git a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C index 7cc8957de0..85b4ba7b27 100644 --- a/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C +++ b/applications/utilities/mesh/generation/cvMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C @@ -212,6 +212,20 @@ void Foam::conformalVoronoiMesh::calcDualMesh Info<< nl << "Collapsing unnecessary faces" << endl; collapseFaces(points, boundaryPts, deferredCollapseFaces); + + const scalar maxCosAngle + = cos(degToRad(cvMeshControls().edgeMergeAngle())); + + Info<< nl << "Merging adjacent edges which have an angle " + << "of greater than " + << cvMeshControls().edgeMergeAngle() << ": " << endl; + + label nRemovedEdges = + mergeNearlyParallelEdges(points, maxCosAngle); + + reduce(nRemovedEdges, sumOp