From 65c7cd88e7c0a101d4597224ec3d3bdc5250e5b6 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Thu, 23 Jan 2014 14:10:54 +0000 Subject: [PATCH] call setVolumePositive after mesh optimization, as the optimizer can revert elements --- Geo/GModel.cpp | 9 ++++----- Mesh/Generator.cpp | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index c4a7d50a6e..466a04c8e1 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -541,11 +541,10 @@ int GModel::mesh(int dimension) bool GModel::setAllVolumesPositive() { bool ok = true; - for(riter it = regions.begin(); it != regions.end(); ++it) { - int nbEl = (*it)->getNumMeshElements(); - for (int iEl = 0; iEl < nbEl; ++iEl) - ok = (ok && (*it)->getMeshElement(iEl)->setVolumePositive()); - } + for(riter it = regions.begin(); it != regions.end(); ++it) + for (int i = 0; i < (*it)->getNumMeshElements(); ++i) + if(!(*it)->getMeshElement(i)->setVolumePositive()) + ok = false; return ok; } diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp index fba73a065a..d2753f1db5 100644 --- a/Mesh/Generator.cpp +++ b/Mesh/Generator.cpp @@ -671,8 +671,6 @@ static void Mesh3D(GModel *m) } } - m->setAllVolumesPositive(); - double t2 = Cpu(); CTX::instance()->meshTimer[2] = t2 - t1; Msg::StatusBar(true, "Done meshing 3D (%g s)", CTX::instance()->meshTimer[2]); @@ -784,6 +782,8 @@ void GenerateMesh(GModel *m, int ask) } } + m->setAllVolumesPositive(); + // Subdivide into quads or hexas if(m->getMeshStatus() == 2 && CTX::instance()->mesh.algoSubdivide == 1) RefineMesh(m, CTX::instance()->mesh.secondOrderLinear, true); -- GitLab