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