From 1b46e0515851e40647d3134779e7d8d4151ad2d3 Mon Sep 17 00:00:00 2001 From: mattijs Date: Tue, 30 Mar 2010 21:52:48 +0100 Subject: [PATCH] BUG: allowed sliver triangle to be collapsed down to illegal 2 vertex face. Added simple check to disable collapsing faces to <3 vertices. --- .../polyTopoChange/removePoints.C | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/removePoints.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/removePoints.C index 78108a6523..382391e3a5 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/removePoints.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/removePoints.C @@ -203,12 +203,45 @@ Foam::label Foam::removePoints::countPointUsage pointCanBeDeleted[pointI] = true; nDeleted++; } - } edge0.clear(); edge1.clear(); + // Protect any points on faces that would collapse down to nothing + // No particular intelligence so might protect too many points + forAll(mesh_.faces(), faceI) + { + const face& f = mesh_.faces()[faceI]; + + label nCollapse = 0; + forAll(f, fp) + { + if (pointCanBeDeleted[f[fp]]) + { + nCollapse++; + } + } + + if ((f.size() - nCollapse) < 3) + { + // Just unmark enough points + forAll(f, fp) + { + if (pointCanBeDeleted[f[fp]]) + { + pointCanBeDeleted[f[fp]] = false; + --nCollapse; + if (nCollapse == 0) + { + break; + } + } + } + } + } + + // Point can be deleted only if all processors want to delete it syncTools::syncPointList (