From a2a7a4be21df9e33ad8cde61d41c409af115a05a Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Fri, 4 Oct 2013 07:06:57 +0000 Subject: [PATCH] make thomas' experimental flipped element opti available in .geo --- Common/Context.h | 2 +- Common/DefaultOptions.h | 2 ++ Common/Options.cpp | 7 +++++++ Common/Options.h | 1 + Mesh/Generator.cpp | 2 +- 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Common/Context.h b/Common/Context.h index 601aecd383..2c21f2c4ee 100644 --- a/Common/Context.h +++ b/Common/Context.h @@ -42,7 +42,7 @@ struct contextMeshOptions { int order, secondOrderLinear, secondOrderIncomplete; int secondOrderExperimental, meshOnlyVisible; int minCircPoints, minCurvPoints; - int hoOptimize, hoNLayers; + int hoOptimize, hoNLayers, hoOptPrimSurfMesh; double hoThresholdMin, hoThresholdMax, hoPoissonRatio; int saveAll, saveTri, saveGroupsOfNodes, binary, bdfFieldFormat, saveParametric; int smoothNormals, reverseAllNormals, zoneDefinition, clip; diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index fb60147fbb..35058f056a 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -980,6 +980,8 @@ StringXNumber MeshOptions_Number[] = { "Minimum threshold for high order element optimization"}, { F|O, "HighOrderThresholdMax", opt_mesh_ho_threshold_max, 2.0, "Maximum threshold for high order element optimization"}, + { F|O, "HighOrderOptPrimSurfMesh", opt_mesh_ho_opt_prim_surf_mesh, 0, + "Try to fix flipped surface mesh elements in high-order optimizer"}, { F|O, "LabelSampling" , opt_mesh_label_sampling , 1. , "Label sampling rate (display one label every `LabelSampling' elements)" }, diff --git a/Common/Options.cpp b/Common/Options.cpp index 796e342d5d..f980418be9 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -5638,6 +5638,13 @@ double opt_mesh_ho_threshold_max(OPT_ARGS_NUM) return CTX::instance()->mesh.hoThresholdMax; } +double opt_mesh_ho_opt_prim_surf_mesh(OPT_ARGS_NUM) +{ + if(action & GMSH_SET) + CTX::instance()->mesh.hoOptPrimSurfMesh = (int)val; + return CTX::instance()->mesh.hoOptPrimSurfMesh; +} + double opt_mesh_ho_poisson(OPT_ARGS_NUM) { if(action & GMSH_SET) { diff --git a/Common/Options.h b/Common/Options.h index e2b3dd6cbd..1007a85cad 100644 --- a/Common/Options.h +++ b/Common/Options.h @@ -453,6 +453,7 @@ double opt_mesh_ho_nlayers(OPT_ARGS_NUM); double opt_mesh_ho_threshold_min(OPT_ARGS_NUM); double opt_mesh_ho_threshold_max(OPT_ARGS_NUM); double opt_mesh_ho_poisson(OPT_ARGS_NUM); +double opt_mesh_ho_opt_prim_surf_mesh(OPT_ARGS_NUM); double opt_mesh_second_order_experimental(OPT_ARGS_NUM); double opt_mesh_second_order_linear(OPT_ARGS_NUM); double opt_mesh_second_order_incomplete(OPT_ARGS_NUM); diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp index 5eb70430af..1505d49996 100644 --- a/Mesh/Generator.cpp +++ b/Mesh/Generator.cpp @@ -808,7 +808,7 @@ void GenerateMesh(GModel *m, int ask) p.BARRIER_MIN = CTX::instance()->mesh.hoThresholdMin; p.BARRIER_MAX = CTX::instance()->mesh.hoThresholdMax; p.dim = GModel::current()->getDim(); - //p.optPrimSurfMesh = true; + p.optPrimSurfMesh = CTX::instance()->mesh.hoOptPrimSurfMesh; HighOrderMeshOptimizer(GModel::current(), p); } #else -- GitLab