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