From d8a8d47c577c02c5231aaa1d785622eca43f4e22 Mon Sep 17 00:00:00 2001 From: Thomas Toulorge <thomas.toulorge@mines-paristech.fr> Date: Thu, 28 Jul 2016 00:33:59 +0000 Subject: [PATCH] Changed mesh optimizers to work with std::vector<GEntity*> in addition to GModel --- contrib/HighOrderMeshOptimizer/OptHomRun.cpp | 12 ++++++++++-- contrib/MeshOptimizer/MeshOptimizer.cpp | 5 +---- contrib/MeshOptimizer/MeshOptimizer.h | 4 ++-- .../MeshQualityOptimizer/MeshQualityOptimizer.cpp | 13 +++++++++++-- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/contrib/HighOrderMeshOptimizer/OptHomRun.cpp b/contrib/HighOrderMeshOptimizer/OptHomRun.cpp index cd62cfd667..83ff11f5b0 100644 --- a/contrib/HighOrderMeshOptimizer/OptHomRun.cpp +++ b/contrib/HighOrderMeshOptimizer/OptHomRun.cpp @@ -790,7 +790,7 @@ int HOPatchDefParameters::inPatch(const SPoint3 &badBary, } -void HighOrderMeshOptimizerNew(GModel *gm, OptHomParameters &p) +void HighOrderMeshOptimizerNew(std::vector<GEntity*> &entities, OptHomParameters &p) { Msg::StatusBar(true, "Optimizing high order mesh..."); @@ -849,7 +849,7 @@ void HighOrderMeshOptimizerNew(GModel *gm, OptHomParameters &p) par.pass.push_back(maxCADDistPass); } - meshOptimizer(gm, par); + meshOptimizer(entities, par); p.CPU = par.CPU; p.minJac = minMaxJacBarFunc.getMin(); @@ -857,3 +857,11 @@ void HighOrderMeshOptimizerNew(GModel *gm, OptHomParameters &p) Msg::StatusBar(true, "Done optimizing high order mesh (%g s)", p.CPU); } + + +void HighOrderMeshOptimizerNew(GModel *gm, OptHomParameters &p) +{ + std::vector<GEntity*> entities; + gm->getEntities(entities); + HighOrderMeshOptimizerNew(entities, p); +} diff --git a/contrib/MeshOptimizer/MeshOptimizer.cpp b/contrib/MeshOptimizer/MeshOptimizer.cpp index 5754127c59..98b118299b 100644 --- a/contrib/MeshOptimizer/MeshOptimizer.cpp +++ b/contrib/MeshOptimizer/MeshOptimizer.cpp @@ -687,7 +687,7 @@ void optimizeOneByOne(const vertElVecMap &vertex2elements, #endif -void meshOptimizer(GModel *gm, MeshOptParameters &par) +void meshOptimizer(std::vector<GEntity*> &entities, MeshOptParameters &par) { #if defined(HAVE_BFGS) if (par.nCurses) @@ -709,9 +709,6 @@ void meshOptimizer(GModel *gm, MeshOptParameters &par) } if (par.verbose > 0) Msg::StatusBar(true, "Optimizing mesh..."); - std::vector<GEntity*> entities; - gm->getEntities(entities); - vertElVecMap vertex2elements; elEntMap element2entity, bndEl2Ent; elElMap el2BndEl; diff --git a/contrib/MeshOptimizer/MeshOptimizer.h b/contrib/MeshOptimizer/MeshOptimizer.h index 76a6690481..969efa889e 100644 --- a/contrib/MeshOptimizer/MeshOptimizer.h +++ b/contrib/MeshOptimizer/MeshOptimizer.h @@ -31,11 +31,11 @@ #define _MESHOPTIMIZER_H_ -class GModel; +class GEntity; class MeshOptParameters; -void meshOptimizer(GModel *gm, MeshOptParameters &par); +void meshOptimizer(std::vector<GEntity*> &entities, MeshOptParameters &par); #endif diff --git a/contrib/MeshQualityOptimizer/MeshQualityOptimizer.cpp b/contrib/MeshQualityOptimizer/MeshQualityOptimizer.cpp index 5ea5c00a92..54699091c4 100644 --- a/contrib/MeshQualityOptimizer/MeshQualityOptimizer.cpp +++ b/contrib/MeshQualityOptimizer/MeshQualityOptimizer.cpp @@ -4,6 +4,7 @@ #include "GEntity.h" #include "GFace.h" #include "GRegion.h" +#include "GModel.h" #include "MElement.h" #include "MTriangle.h" #include "MQuadrangle.h" @@ -117,7 +118,7 @@ int QualPatchDefParameters::inPatch(const SPoint3 &badBary, double limDist, } -void MeshQualityOptimizer(GModel *gm, MeshQualOptParameters &p) +void MeshQualityOptimizer(std::vector<GEntity*> &entities, MeshQualOptParameters &p) { Msg::StatusBar(true, "Optimizing mesh quality..."); @@ -160,7 +161,7 @@ void MeshQualityOptimizer(GModel *gm, MeshQualOptParameters &p) par.pass.push_back(minInvCondNumPass); } - meshOptimizer(gm, par); + meshOptimizer(entities, par); p.CPU = par.CPU; if (p.onlyValidity) { @@ -172,3 +173,11 @@ void MeshQualityOptimizer(GModel *gm, MeshQualOptParameters &p) p.maxInvCondNum = minInvCondNumBarFunc.getMax(); } } + + +void MeshQualityOptimizer(GModel *gm, MeshQualOptParameters &p) +{ + std::vector<GEntity*> entities; + gm->getEntities(entities); + MeshQualityOptimizer(entities, p); +} -- GitLab