diff --git a/Common/Context.h b/Common/Context.h index f378299e51eaa21b2c981c9d28fa410926c83fd2..c14a3cbf5b76b1f2f4924345cf856589425b5cf9 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 057746aa2399d527d1f83bdf69610b9f5a865d35..4d33b58a370dfa0ef766b83e8a44cd812ba997b0 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 f750f3e9f8b3a698fbaece268c3e7e7b0a10f66c..e30d3d2bd5748ef3eb4a435a979438266181bf00 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 c0cb6754175cc886459b3826b304ba0e17a6085b..793c33033cf6c8506384d7755dee278740abf5ea 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 31f7deb689467b05e65e9c2ca50d15780b0f42b0..e407d139404c92639e72c6e812be377f074551a1 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)