diff --git a/src/sampling/surface/isoSurface/isoSurfaceCell.C b/src/sampling/surface/isoSurface/isoSurfaceCell.C index 05d2eb00f2cc95f56cc545927d1087120cd9d9e2..47b539f2509c4e0a9a12d83f017f90cdd4a2567f 100644 --- a/src/sampling/surface/isoSurface/isoSurfaceCell.C +++ b/src/sampling/surface/isoSurface/isoSurfaceCell.C @@ -284,16 +284,18 @@ Foam::pointIndexHit Foam::isoSurfaceCell::collapseSurface if (shared[0] != -1) { - vector n0 = tri0.normal(localPoints); - n0 /= mag(n0); - vector n1 = tri1.normal(localPoints); - n1 /= mag(n1); + const vector n0 = tri0.normal(localPoints); + const vector n1 = tri1.normal(localPoints); - if ((n0 & n1) < 0) - { - // Too big an angle. Do not simplify. - } - else + // Merge any zero-sized triangles, + // or if they point in the same direction. + + if + ( + mag(n0) <= ROOTVSMALL + || mag(n1) <= ROOTVSMALL + || (n0 & n1) >= 0 + ) { info.setPoint (