From 385025d90192e0bd3bafda670e9f1aa25de35631 Mon Sep 17 00:00:00 2001 From: Thomas Toulorge <thomas.toulorge@mines-paristech.fr> Date: Fri, 8 Aug 2014 15:32:48 +0000 Subject: [PATCH] Avoid computing distance to CAD when detecting bad elements in HighOrderMeshOptimizer if optCAD is not enabled --- contrib/HighOrderMeshOptimizer/OptHomRun.cpp | 21 +++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/contrib/HighOrderMeshOptimizer/OptHomRun.cpp b/contrib/HighOrderMeshOptimizer/OptHomRun.cpp index f99522a5ea..5342856ebd 100644 --- a/contrib/HighOrderMeshOptimizer/OptHomRun.cpp +++ b/contrib/HighOrderMeshOptimizer/OptHomRun.cpp @@ -690,7 +690,7 @@ void HighOrderMeshOptimizer(GModel *gm, OptHomParameters &p) std::map<MVertex*, std::vector<MElement *> > vertex2elements; std::map<MElement*,GEntity*> element2entity; std::set<MElement*> badasses; - double maxdist = 0; + double maxdist = 0.; // TODO: To be cleaned? for (int iEnt = 0; iEnt < entities.size(); ++iEnt) { GEntity* &entity = entities[iEnt]; if (entity->dim() != p.dim || (p.onlyVisible && !entity->getVisibility())) continue; @@ -698,21 +698,18 @@ void HighOrderMeshOptimizer(GModel *gm, OptHomParameters &p) entity->tag()); calcVertex2Elements(p.dim,entity,vertex2elements); if (p.optPrimSurfMesh) calcElement2Entity(entity,element2entity); - for (int iEl = 0; iEl < entity->getNumMeshElements();iEl++) { // Detect bad elements + for (int iEl = 0; iEl < entity->getNumMeshElements();iEl++) { // Detect bad elements double jmin, jmax; MElement *el = entity->getMeshElement(iEl); - const double DISTE =computeBndDist(el,2,fabs(p.discrTolerance)); - // printf("Element %d Distance %12.5E\n",iEl,DISTE); - maxdist = std::max(DISTE, maxdist); if (el->getDim() == p.dim) { - if (p.optCAD && DISTE > p.optCADDistMax) - badasses.insert(el); - - el->scaledJacRange(jmin, jmax, p.optPrimSurfMesh ? entity : 0); - if (p.BARRIER_MIN_METRIC > 0) jmax = jmin; - if (jmin < p.BARRIER_MIN || jmax > p.BARRIER_MAX){ - badasses.insert(el); + if (p.optCAD) { + const double DISTE =computeBndDist(el,2,fabs(p.discrTolerance)); + maxdist = std::max(DISTE, maxdist); + if (DISTE > p.optCADDistMax) badasses.insert(el); } + el->scaledJacRange(jmin, jmax, p.optPrimSurfMesh ? entity : 0); + if (p.BARRIER_MIN_METRIC > 0) jmax = jmin; + if (jmin < p.BARRIER_MIN || jmax > p.BARRIER_MAX) badasses.insert(el); } } } -- GitLab