From 7c27b02438f3d8b074e793264b0fcf7856fb7e55 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Wed, 19 Sep 2007 14:21:56 +0000
Subject: [PATCH] new Mesh.RefineSteps to control how many refinement steps we
 perform in 2D MeshAdapt-based algorithms

---
 Common/Context.h        |  2 +-
 Common/DefaultOptions.h |  2 ++
 Common/Options.cpp      |  9 ++++++++-
 Common/Options.h        |  1 +
 Mesh/meshGFace.cpp      | 10 +++++-----
 5 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/Common/Context.h b/Common/Context.h
index f378299e51..c14a3cbf5b 100644
--- a/Common/Context.h
+++ b/Common/Context.h
@@ -172,7 +172,7 @@ public :
     double label_frequency;
     int point_type; // flat or 3D
     double point_size, line_width;
-    int optimize;
+    int optimize, refine_steps;
     int quality_type, label_type;
     double quality_inf, quality_sup, radius_inf, radius_sup;
     double scaling_factor, lc_factor, rand_factor, lc_integration_precision;
diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index 057746aa23..4d33b58a37 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -1007,6 +1007,8 @@ StringXNumber MeshOptions_Number[] = {
     "Only display elements whose longest edge is smaller than RadiusSup" },
   { F|O, "RandomFactor" , opt_mesh_rand_factor , 1.e-9 ,
     "Random factor used in 2D and 3D meshing algorithm (test other values when the algorithm fails)" },
+  { F|O, "RefineSteps" , opt_mesh_refine_steps , 10 ,
+    "Number of refinement steps in the MeshAdapt-based 2D algorithms" }, 
   { F|O, "RecombineAlgo" , opt_mesh_recombine_algo , 1 ,
     "Recombine algorithm (1=mixed triangles-quadrangles, 2=all quadrangles)" }, 
   { F|O, "ReverseAllNormals" , opt_mesh_reverse_all_normals , 0. , 
diff --git a/Common/Options.cpp b/Common/Options.cpp
index f750f3e9f8..e30d3d2bd5 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.358 2007-09-15 17:11:50 geuzaine Exp $
+// $Id: Options.cpp,v 1.359 2007-09-19 14:21:56 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -4206,6 +4206,13 @@ double opt_mesh_optimize(OPT_ARGS_NUM)
   return CTX.mesh.optimize;
 }
 
+double opt_mesh_refine_steps(OPT_ARGS_NUM)
+{
+  if(action & GMSH_SET)
+    CTX.mesh.refine_steps =(int) val;
+  return CTX.mesh.refine_steps;
+}
+
 double opt_mesh_normals(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
diff --git a/Common/Options.h b/Common/Options.h
index c0cb675417..793c33033c 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -426,6 +426,7 @@ double opt_geometry_snap1(OPT_ARGS_NUM);
 double opt_geometry_snap2(OPT_ARGS_NUM);
 double opt_mesh_label_frequency(OPT_ARGS_NUM);
 double opt_mesh_optimize(OPT_ARGS_NUM);
+double opt_mesh_refine_steps(OPT_ARGS_NUM);
 double opt_mesh_normals(OPT_ARGS_NUM);
 double opt_mesh_tangents(OPT_ARGS_NUM);
 double opt_mesh_explode(OPT_ARGS_NUM);
diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index 31f7deb689..e407d13940 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGFace.cpp,v 1.87 2007-09-12 20:14:34 geuzaine Exp $
+// $Id: meshGFace.cpp,v 1.88 2007-09-19 14:21:56 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -923,9 +923,9 @@ bool gmsh2DMeshGenerator ( GFace *gf , bool debug = true)
   // start mesh generation
   if (!AlgoDelaunay2D ( gf ))
     {
-      RefineMesh (gf,*m,10);
+      RefineMesh (gf,*m, CTX.mesh.refine_steps);
       OptimizeMesh(gf, *m, 2);
-      RefineMesh (gf,*m,-10);
+      RefineMesh (gf,*m, -CTX.mesh.refine_steps);
       OptimizeMesh(gf, *m, 2);
       if (gf->meshAttributes.recombine)
 	{
@@ -1466,9 +1466,9 @@ bool gmsh2DMeshGeneratorPeriodic ( GFace *gf , bool debug = true)
   
   if (!AlgoDelaunay2D ( gf ))
     {
-      RefineMesh (gf,*m,10);
+      RefineMesh (gf,*m,CTX.mesh.refine_steps);
       OptimizeMesh(gf, *m, 2);
-      RefineMesh (gf,*m,-10);
+      RefineMesh (gf,*m,-CTX.mesh.refine_steps);
       OptimizeMesh(gf, *m, 2);
 
       if (gf->meshAttributes.recombine)
-- 
GitLab