diff --git a/Mesh/meshGFaceOptimize.cpp b/Mesh/meshGFaceOptimize.cpp index 24ef02767e44cd1dc7f85db02373ef8228e43044..87b4ad663b4eb71b58d04aadf70ad27a12b6ee13 100644 --- a/Mesh/meshGFaceOptimize.cpp +++ b/Mesh/meshGFaceOptimize.cpp @@ -631,17 +631,21 @@ static bool _isItAGoodIdeaToMoveThatVertex (GFace *gf, v1->setParameter(1,after.y()); v1->setXYZ(pafter.x(),pafter.y(),pafter.z()); + bool badQuality = false; for (unsigned int j=0;j<e1.size();++j){ surface_new += surfaceFaceUV(e1[j],gf); qualityNew[j] = (e1[j]->getNumVertices() == 4) ? e1[j]->etaShapeMeasure() : e1[j]->gammaShapeMeasure(); - if (qualityNew[j] < 0.01)return false; + if (qualityNew[j] < 0.01) { + badQuality = true; + break; + } } v1->setParameter(0,before.x()); v1->setParameter(1,before.y()); v1->setXYZ(pbefore.x(),pbefore.y(),pbefore.z()); - if ( (surface_new - surface_old) > 1.e-10 * surface_old) { + if (badQuality || (surface_new - surface_old) > 1.e-10 * surface_old) { return false; } return true; @@ -1886,7 +1890,6 @@ static void _relocateVertex(GFace *gf, MVertex *ver, after = SPoint2(gp.u(),gp.v()); } bool success = _isItAGoodIdeaToMoveThatVertex (gf, lt, ver,before,after); - if (success){ ver->setParameter(0, after.x()); ver->setParameter(1, after.y());