From a38126ab5e9f21b42334f13b9a94b3deb2b58800 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Sun, 29 Jul 2012 12:20:52 +0000
Subject: [PATCH] progress bar for 1D and 2D meshing

---
 Mesh/Generator.cpp | 32 +++++++++++++++++++-------------
 1 file changed, 19 insertions(+), 13 deletions(-)

diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index 5572324de0..43ca7e2f7a 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -364,17 +364,20 @@ static void Mesh1D(GModel *m)
   for(GModel::eiter it = m->firstEdge(); it != m->lastEdge(); ++it)
     (*it)->meshStatistics.status = GEdge::PENDING;
 
-  int nIter = 0;
+  Msg::ResetProgressMeter();
+
+  int nIter = 0, nTot = m->getNumEdges();
   while(1){
     meshGEdge mesher;
-    int nbPending = 0;
+    int nPending = 0;
     for(GModel::eiter it = m->firstEdge(); it != m->lastEdge(); ++it){
       if ((*it)->meshStatistics.status == GEdge::PENDING){
 	mesher(*it);
-	nbPending++;
+	nPending++;
       }
+      if(!nIter) Msg::ProgressMeter(nPending, nTot, "Meshing 1D...");
     }
-    if(!nbPending) break;
+    if(!nPending) break;
     if(nIter++ > 10) break;
   }
 
@@ -424,7 +427,7 @@ static void PrintMesh2dStatistics(GModel *m)
   }
 
   Msg::Info("*** Efficiency index for surface mesh tau=%g ", 100*exp(e_avg/(double)nTotE));
-  
+
   fprintf(statreport,"\t%16s\t%d\t\t%d\t\t", m->getName().c_str(), numFaces, nUnmeshed);
   fprintf(statreport,"%d\t\t%8.7f\t%8.7f\t%8.7f\t%d\t\t%8.7f\t",
           nTotT, avg / (double)nTotT, best, worst, nTotGoodQuality,
@@ -458,24 +461,28 @@ static void Mesh2D(GModel *m)
       else
         f.insert(*it);
 
-    int nIter = 0;
+    Msg::ResetProgressMeter();
+
+    int nIter = 0, nTot = m->getNumFaces();
     while(1){
-      int nbPending = 0;
+      int nPending = 0;
       for(std::set<GFace*>::iterator it = f.begin(); it != f.end(); ++it){
         if ((*it)->meshStatistics.status == GFace::PENDING){
 	  meshGFace mesher (true, CTX::instance()->mesh.multiplePasses);
           mesher(*it);
-          nbPending++;
+          nPending++;
         }
+        if(!nIter) Msg::ProgressMeter(nPending, nTot, "Meshing 2D...");
       }
       for(std::set<GFace*>::iterator it = cf.begin(); it != cf.end(); ++it){
         if ((*it)->meshStatistics.status == GFace::PENDING){
 	  meshGFace mesher (true, CTX::instance()->mesh.multiplePasses);
           mesher(*it);
-          nbPending++;
+          nPending++;
         }
+        if(!nIter) Msg::ProgressMeter(nPending, nTot, "Meshing 2D...");
       }
-      if(!nbPending) break;
+      if(!nPending) break;
       if(nIter++ > 10) break;
     }
   }
@@ -561,7 +568,6 @@ static void Mesh3D(GModel *m)
   double t2 = Cpu();
   CTX::instance()->meshTimer[2] = t2 - t1;
   Msg::StatusBar(2, true, "Done meshing 3D (%g s)", CTX::instance()->meshTimer[2]);
-
 }
 
 void OptimizeMeshNetgen(GModel *m)
@@ -618,7 +624,7 @@ void RecombineMesh(GModel *m)
 
 void GenerateMesh(GModel *m, int ask)
 {
-  //  ProfilerStart("gmsh.prof");
+  // ProfilerStart("gmsh.prof");
   if(CTX::instance()->lock) {
     Msg::Info("I'm busy! Ask me that later...");
     return;
@@ -688,5 +694,5 @@ void GenerateMesh(GModel *m, int ask)
 
   CTX::instance()->lock = 0;
   CTX::instance()->mesh.changed = ENT_ALL;
-  //  ProfilerStop();
+  // ProfilerStop();
 }
-- 
GitLab