diff --git a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C index 156d01bb2b..e8b0a018f3 100644 --- a/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C +++ b/src/mesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshCalcDualMesh.C @@ -525,17 +525,27 @@ Foam::label Foam::conformalVoronoiMesh::smoothSurfaceDualFaces Cell_circulator ccStart = incident_cells(*eit); Cell_circulator cc = ccStart; + bool skipFace = false; + do { if (dualPtIndexMap.found(cc->cellIndex())) { // One of the points of this face has already been // collapsed this sweep, leave for next sweep - continue; + + skipFace = true; + + break; } } while (++cc != ccStart); + if (skipFace) + { + continue; + } + if (isBoundaryDualFace(eit)) { face dualFace = buildDualFace(eit); @@ -664,17 +674,27 @@ Foam::label Foam::conformalVoronoiMesh::collapseFaces Cell_circulator ccStart = incident_cells(*eit); Cell_circulator cc = ccStart; + bool skipFace = false; + do { if (dualPtIndexMap.found(cc->cellIndex())) { // One of the points of this face has already been // collapsed this sweep, leave for next sweep - continue; + + skipFace = true; + + break; } } while (++cc != ccStart); + if (skipFace) + { + continue; + } + Cell_handle c = eit->first; Vertex_handle vA = c->vertex(eit->second); Vertex_handle vB = c->vertex(eit->third); @@ -725,7 +745,7 @@ bool Foam::conformalVoronoiMesh::collapseFace scalar collapseSizeLimitCoeff ) const { - bool limitToQuadsOrTris = true; + bool limitToQuadsOrTris = false; const vector fC = f.centre(pts); @@ -920,7 +940,7 @@ bool Foam::conformalVoronoiMesh::collapseFace if ( (fA < aspectRatio*sqr(targetFaceSize*collapseSizeLimitCoeff)) - && (limitToQuadsOrTris && f.size() <= 4) + && (!limitToQuadsOrTris || f.size() <= 4) ) { scalar guardFraction = cvMeshControls().edgeCollapseGuardFraction();