From 2dfb9307a83baafeba82e1c45509076e973fadc6 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Wed, 17 Jan 2007 08:14:24 +0000
Subject: [PATCH] - new option Geometry.Tolerance (or -tol on the command line)
 to set the tolerance for the old CAD engine, for OCC healing and for STL
 import

- removed more unused options
---
 Common/CommandLine.cpp        | 16 ++++----------
 Common/Context.h              |  9 ++------
 Common/DefaultOptions.h       | 13 +++--------
 Common/Options.cpp            | 41 ++++++++++-------------------------
 Common/Options.h              |  7 ++----
 Fltk/Callbacks.cpp            |  3 ++-
 Fltk/GUI.cpp                  |  7 +++++-
 Geo/GModelIO_OCC.cpp          |  9 +++++---
 Geo/Geo.cpp                   |  4 ++--
 Mesh/meshGFace.cpp            |  4 ++--
 Parser/OpenFile.cpp           |  4 ++--
 doc/TODO                      | 10 +--------
 doc/gmsh.1                    |  8 +++----
 doc/texinfo/command_line.texi |  2 ++
 doc/texinfo/opt_geometry.texi |  5 +++++
 doc/texinfo/opt_mesh.texi     | 28 ++++--------------------
 doc/texinfo/opt_plugin.texi   | 16 --------------
 17 files changed, 59 insertions(+), 127 deletions(-)

diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
index 488a6cb6c9..c68fee9f24 100644
--- a/Common/CommandLine.cpp
+++ b/Common/CommandLine.cpp
@@ -1,4 +1,4 @@
-// $Id: CommandLine.cpp,v 1.90 2007-01-12 19:47:52 geuzaine Exp $
+// $Id: CommandLine.cpp,v 1.91 2007-01-17 08:14:22 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -76,6 +76,7 @@ void Print_Usage(char *name){
   Msg(DIRECT, "Usage: %s [options] [files]", name);
   Msg(DIRECT, "Geometry options:");
   Msg(DIRECT, "  -0                    Output unrolled geometry, then exit");
+  Msg(DIRECT, "  -tol float            Set geometrical tolerance");
   Msg(DIRECT, "Mesh options:");
   Msg(DIRECT, "  -1, -2, -3            Perform 1D, 2D or 3D mesh generation, then exit");
   Msg(DIRECT, "  -saveall              Save all elements (discard physical group definitions)");
@@ -295,19 +296,10 @@ void Get_Options(int argc, char *argv[])
           fprintf(stderr, "Usage: %s -convert file file\n", argv[0]);
         exit(1);
       }
-      else if(!strcmp(argv[i] + 1, "initial")) {
+      else if(!strcmp(argv[i] + 1, "tol")) {
         i++;
         if(argv[i] != NULL)
-          CTX.mesh.initial_only = atoi(argv[i++]);
-        else {
-          fprintf(stderr, ERROR_STR "Missing number\n");
-          exit(1);
-        }
-      }
-      else if(!strcmp(argv[i] + 1, "quality")) {
-        i++;
-        if(argv[i] != NULL)
-          CTX.mesh.quality = atof(argv[i++]);
+          CTX.geom.tolerance = atof(argv[i++]);
         else {
           fprintf(stderr, ERROR_STR "Missing number\n");
           exit(1);
diff --git a/Common/Context.h b/Common/Context.h
index 6ccd9884ad..c47b2d9bcf 100644
--- a/Common/Context.h
+++ b/Common/Context.h
@@ -151,6 +151,7 @@ public :
     double normals, tangents;
     double scaling_factor;
     int auto_coherence;
+    double tolerance;
     double snap[3];
   } geom;
 
@@ -165,17 +166,15 @@ public :
     int point_type; // flat or 3D
     double point_size, line_width;
     int optimize;
-    double quality;
     int quality_type, label_type;
     double quality_inf, quality_sup, radius_inf, radius_sup;
     double scaling_factor, lc_factor, rand_factor;
     int dual;
     int light, light_two_side, light_lines;
-    int format, nbPartitions, nb_smoothing, algo2d, algo3d, algo_recombine;
+    int format, nb_smoothing, algo2d, algo3d, algo_recombine;
     int order, second_order_linear, second_order_incomplete;
     int min_circ_points;
     int bgmesh_type, constrained_bgmesh, lc_from_curvature;
-    int initial_only;
     double normals, tangents, explode;
     int color_carousel;
     int use_cut_plane, cut_plane_draw_intersect, cut_plane_only_volume;
@@ -188,10 +187,6 @@ public :
     char *triangle_options;
     int smooth_normals, reverse_all_normals;
     double angle_smooth_normals;
-    double stl_distance_tol, dihedral_angle_tol;
-    int edge_prolongation_threshold, do_not_coarsen;
-    double  nb_elem_per_rc, min_elem_size_fact, target_elem_size_fact, beta_smooth_metric;
-    //    int use_curvature_control_for_mesh_size;
   } mesh;
 
   // post processing options 
diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index b77c086457..18d02a0a6b 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -826,6 +826,8 @@ StringXNumber GeometryOptions_Number[] = {
 
   { F|O, "Tangents" , opt_geometry_tangents , 0. ,
     "Display size of tangent vectors (in pixels)" },
+  { F|O, "Tolerance" , opt_geometry_tolerance, 1.e-6 ,
+    "Geometrical tolerance" },
 
   { F|O, "Volumes" , opt_geometry_volumes , 0. , 
     "Display geometry volumes? (not implemented yet)" },
@@ -885,9 +887,6 @@ StringXNumber MeshOptions_Number[] = {
   { F|O, "Hexahedra" , opt_mesh_hexahedra , 1. , 
     "Display mesh hexahedra?" },
 
-  { F|O, "InitialOnly" , opt_mesh_initial_only , 0. ,
-    "Only contruct the n-dimensional initial mesh (no refinement)" },
-
   { F|O, "LabelType" , opt_mesh_label_type , 0. , 
     "Type of element label (0=element number, 1=elementary entity number, 2=physical entity number, 3=partition number, 4=coordinates)" },
   { F|O, "Light" , opt_mesh_light , 1. , 
@@ -930,8 +929,6 @@ StringXNumber MeshOptions_Number[] = {
   { F|O, "Optimize" , opt_mesh_optimize , 0. , 
     "Optimize the mesh using Netgen to improve the quality of tetrahedral elements" },
 
-  { F|O, "Partitioning" , opt_mesh_nb_partitions , 1. ,
-    "Number of partitions applied to the final mesh" },
   { F|O, "Points" , opt_mesh_points , 0. , 
     "Display mesh vertices (nodes)?" },
   { F|O, "PointNumbers" , opt_mesh_points_num , 0. , 
@@ -947,8 +944,6 @@ StringXNumber MeshOptions_Number[] = {
 
   { F|O, "Quadrangles" , opt_mesh_quadrangles , 1. , 
     "Display mesh quadrangles?" },
-  { F|O, "Quality" , opt_mesh_quality , 1.0 ,
-    "Target quality for tetrahedral elements (currently only used by Tetgen)" },
   { F|O, "QualityInf" , opt_mesh_quality_inf , 0.0 , 
     "Only display elements whose quality measure is greater than QualityInf" },
   { F|O, "QualitySup" , opt_mesh_quality_sup , 0.0 , 
@@ -960,7 +955,7 @@ StringXNumber MeshOptions_Number[] = {
     "Only display elements whose longest edge is greater than RadiusInf" },
   { F|O, "RadiusSup" , opt_mesh_radius_sup , 0.0 , 
     "Only display elements whose longest edge is smaller than RadiusSup" },
-  { F|O, "RandomFactor" , opt_mesh_rand_factor , 1.e-10 ,
+  { 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, "RecombineAlgo" , opt_mesh_recombine_algo , 1 ,
     "Recombine algorithm (1=mixed triangles-quadrangles, 2=all quadrangles)" }, 
@@ -979,8 +974,6 @@ StringXNumber MeshOptions_Number[] = {
     "Number of smoothing steps applied to the final mesh" },
   { F|O, "SmoothNormals" , opt_mesh_smooth_normals , 0. , 
     "Smooth the mesh normals?" },
-  { F|O, "StlDistanceTol" , opt_mesh_stl_distance_tol, 5.e-7 ,
-    "Distance tolerance between two distinct vertices in STL meshes" },
   { F|O, "StlBinary" , opt_mesh_stl_binary , 0. , 
     "Save STL files in binary format?" },
   { F|O, "SurfaceEdges" , opt_mesh_surfaces_edges , 1. , 
diff --git a/Common/Options.cpp b/Common/Options.cpp
index 2c23df190a..fbc01826a7 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.326 2007-01-12 19:47:52 geuzaine Exp $
+// $Id: Options.cpp,v 1.327 2007-01-17 08:14:22 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -3761,6 +3761,17 @@ double opt_geometry_auto_coherence(OPT_ARGS_NUM)
   return CTX.geom.auto_coherence;
 }
 
+double opt_geometry_tolerance(OPT_ARGS_NUM)
+{
+  if(action & GMSH_SET)
+    CTX.geom.tolerance = val;
+#if defined(HAVE_FLTK)
+  if(WID && (action & GMSH_GUI))
+    WID->geo_value[2]->value(CTX.geom.tolerance);
+#endif
+  return CTX.geom.tolerance;
+}
+
 double opt_geometry_normals(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET)
@@ -4032,13 +4043,6 @@ double opt_mesh_optimize(OPT_ARGS_NUM)
   return CTX.mesh.optimize;
 }
 
-double opt_mesh_quality(OPT_ARGS_NUM)
-{
-  if(action & GMSH_SET)
-    CTX.mesh.quality = val;
-  return CTX.mesh.quality;
-}
-
 double opt_mesh_normals(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
@@ -4572,13 +4576,6 @@ double opt_mesh_format(OPT_ARGS_NUM)
   return CTX.mesh.format;
 }
 
-double opt_mesh_stl_distance_tol(OPT_ARGS_NUM)
-{
-  if(action & GMSH_SET)
-    CTX.mesh.stl_distance_tol = val;
-  return CTX.mesh.stl_distance_tol;
-}
-
 double opt_mesh_msh_file_version(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET)
@@ -4622,13 +4619,6 @@ double opt_mesh_nb_smoothing(OPT_ARGS_NUM)
   return CTX.mesh.nb_smoothing;
 }
 
-double opt_mesh_nb_partitions(OPT_ARGS_NUM)
-{
-  if(action & GMSH_SET)
-    CTX.mesh.nbPartitions = (int)val;
-  return CTX.mesh.nbPartitions;
-}
-
 double opt_mesh_algo2d(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET){
@@ -4750,13 +4740,6 @@ double opt_mesh_dual(OPT_ARGS_NUM)
   return CTX.mesh.dual;
 }
 
-double opt_mesh_initial_only(OPT_ARGS_NUM)
-{
-  if(action & GMSH_SET)
-    CTX.mesh.initial_only = (int)val;
-  return CTX.mesh.initial_only;
-}
-
 double opt_mesh_use_cut_plane(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET){
diff --git a/Common/Options.h b/Common/Options.h
index c4bb57f129..f20e8a7641 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -378,6 +378,7 @@ double opt_general_light51(OPT_ARGS_NUM);
 double opt_general_light52(OPT_ARGS_NUM);
 double opt_general_light53(OPT_ARGS_NUM);
 double opt_geometry_auto_coherence(OPT_ARGS_NUM);
+double opt_geometry_tolerance(OPT_ARGS_NUM);
 double opt_geometry_normals(OPT_ARGS_NUM);
 double opt_geometry_tangents(OPT_ARGS_NUM);
 double opt_geometry_points(OPT_ARGS_NUM);
@@ -405,7 +406,6 @@ double opt_geometry_snap0(OPT_ARGS_NUM);
 double opt_geometry_snap1(OPT_ARGS_NUM);
 double opt_geometry_snap2(OPT_ARGS_NUM);
 double opt_mesh_optimize(OPT_ARGS_NUM);
-double opt_mesh_quality(OPT_ARGS_NUM);
 double opt_mesh_normals(OPT_ARGS_NUM);
 double opt_mesh_tangents(OPT_ARGS_NUM);
 double opt_mesh_explode(OPT_ARGS_NUM);
@@ -451,18 +451,15 @@ double opt_mesh_msh_binary(OPT_ARGS_NUM);
 double opt_mesh_stl_binary(OPT_ARGS_NUM);
 double opt_mesh_bdf_field_format(OPT_ARGS_NUM);
 double opt_mesh_nb_smoothing(OPT_ARGS_NUM);
-double opt_mesh_stl_distance_tol(OPT_ARGS_NUM);
-double opt_mesh_nb_partitions(OPT_ARGS_NUM);
 double opt_mesh_algo2d(OPT_ARGS_NUM);
-double opt_mesh_recombine_algo(OPT_ARGS_NUM);
 double opt_mesh_algo3d(OPT_ARGS_NUM);
+double opt_mesh_recombine_algo(OPT_ARGS_NUM);
 double opt_mesh_min_circ_points(OPT_ARGS_NUM);
 double opt_mesh_constrained_bgmesh(OPT_ARGS_NUM);
 double opt_mesh_order(OPT_ARGS_NUM);
 double opt_mesh_second_order_linear(OPT_ARGS_NUM);
 double opt_mesh_second_order_incomplete(OPT_ARGS_NUM);
 double opt_mesh_dual(OPT_ARGS_NUM);
-double opt_mesh_initial_only(OPT_ARGS_NUM);
 double opt_mesh_use_cut_plane(OPT_ARGS_NUM);
 double opt_mesh_cut_plane_draw_intersect(OPT_ARGS_NUM);
 double opt_mesh_cut_plane_only_volume(OPT_ARGS_NUM);
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index ee7d04166d..f997f9d3bf 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.503 2007-01-16 11:31:40 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.504 2007-01-17 08:14:22 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -1008,6 +1008,7 @@ void geometry_options_ok_cb(CALLBACK_ARGS)
 
   opt_geometry_normals(0, GMSH_SET, WID->geo_value[0]->value());
   opt_geometry_tangents(0, GMSH_SET, WID->geo_value[1]->value());
+  opt_geometry_tolerance(0, GMSH_SET, WID->geo_value[2]->value());
   opt_geometry_point_size(0, GMSH_SET, WID->geo_value[3]->value());
   opt_geometry_line_width(0, GMSH_SET, WID->geo_value[4]->value());
   opt_geometry_point_sel_size(0, GMSH_SET, WID->geo_value[5]->value());
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 46c45cdd8e..e0a4db9d2b 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.590 2007-01-12 13:49:38 remacle Exp $
+// $Id: GUI.cpp,v 1.591 2007-01-17 08:14:23 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -2081,10 +2081,15 @@ void GUI::create_option_window()
     {
       Fl_Group *o = new Fl_Group(L + WB, WB + BH, width - 2 * WB, height - 2 * WB - BH, "General");
       o->hide();
+
       geo_butt[8] = new Fl_Check_Button(L + 2 * WB, 2 * WB + 1 * BH, BW, BH, "Remove duplicate entities automatically");
       geo_butt[8]->type(FL_TOGGLE_BUTTON);
       geo_butt[8]->callback(geometry_options_ok_cb);
 
+      geo_value[2] = new Fl_Value_Input(L + 2 * WB, 2 * WB + 2 * BH, IW, BH, "Geometrical tolerance");
+      geo_value[2]->align(FL_ALIGN_RIGHT);
+      geo_value[2]->callback(geometry_options_ok_cb);
+
       o->end();
     }
     {
diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp
index e4cbd77fec..918eebd7a4 100644
--- a/Geo/GModelIO_OCC.cpp
+++ b/Geo/GModelIO_OCC.cpp
@@ -1,4 +1,4 @@
-// $Id: GModelIO_OCC.cpp,v 1.15 2007-01-16 11:31:41 geuzaine Exp $
+// $Id: GModelIO_OCC.cpp,v 1.16 2007-01-17 08:14:23 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -21,12 +21,15 @@
 
 #include "GModel.h"
 #include "Message.h"
+#include "Context.h"
 #include "OCCIncludes.h"
 #include "OCCVertex.h"
 #include "OCCEdge.h"
 #include "OCCFace.h"
 #include "OCCRegion.h"
 
+extern Context_T CTX;
+
 #if defined(HAVE_OCC)
 
 #include "ShapeAnalysis_ShapeTolerance.hxx"
@@ -53,7 +56,7 @@ public:
     wmap.Clear();
     emap.Clear();
     vmap.Clear();
-    tolerance = 1.e-3;
+    tolerance = CTX.geom.tolerance;
   }
   void HealGeometry(bool fixsmalledges = true, bool fixspotstripfaces = true,
 		    bool sewfaces = false, bool makesolids = false);
@@ -251,7 +254,7 @@ void OCC_Internals::HealGeometry(bool fixsmalledges, bool fixspotstripfaces,
       TopExp_Explorer exp1;
       for(exp1.Init(fmap(i), TopAbs_WIRE); exp1.More(); exp1.Next()){
 	TopoDS_Wire oldwire = TopoDS::Wire(exp1.Current());
-	sfw = new ShapeFix_Wire(oldwire, TopoDS::Face(fmap(i)),tolerance);
+	sfw = new ShapeFix_Wire(oldwire, TopoDS::Face(fmap(i)), tolerance);
 	sfw->ModifyTopologyMode() = Standard_True;
 	
 	if(sfw->FixSmall(false, tolerance)){
diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp
index a63e52ae1f..70107c0ba8 100644
--- a/Geo/Geo.cpp
+++ b/Geo/Geo.cpp
@@ -1,4 +1,4 @@
-// $Id: Geo.cpp,v 1.69 2007-01-12 08:10:32 geuzaine Exp $
+// $Id: Geo.cpp,v 1.70 2007-01-17 08:14:23 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -71,7 +71,7 @@ int compareVertex(const void *a, const void *b)
 int comparePosition(const void *a, const void *b)
 {
   // Warning: tolerance! (before 1.61, it was set to 1.e-10 * CTX.lc)
-  double eps = 1.e-6 * CTX.lc; 
+  double eps = CTX.geom.tolerance * CTX.lc; 
 
   Vertex **q = (Vertex **) a;
   Vertex **w = (Vertex **) b;
diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index c3fcd0c80a..9ef0292634 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -1,4 +1,4 @@
-// $Id: meshGFace.cpp,v 1.50 2007-01-16 16:56:25 geuzaine Exp $
+// $Id: meshGFace.cpp,v 1.51 2007-01-17 08:14:23 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -922,7 +922,7 @@ bool buildConsecutiveListOfVertices (  GFace *gf,
 
      bool seam = ges.ge->isSeam(gf);
      
-     printf("face %d edge %d seam %d (%d %d)\n",gf->tag(),ges.ge->tag(),seam,ges.ge->getBeginVertex()->tag(),ges.ge->getEndVertex()->tag());
+     //printf("face %d edge %d seam %d (%d %d)\n",gf->tag(),ges.ge->tag(),seam,ges.ge->getBeginVertex()->tag(),ges.ge->getEndVertex()->tag());
      
      Range<double> range = ges.ge->parBounds(0);
 
diff --git a/Parser/OpenFile.cpp b/Parser/OpenFile.cpp
index 99b5a7a7c8..ea629b52bf 100644
--- a/Parser/OpenFile.cpp
+++ b/Parser/OpenFile.cpp
@@ -1,4 +1,4 @@
-// $Id: OpenFile.cpp,v 1.138 2007-01-12 13:17:00 remacle Exp $
+// $Id: OpenFile.cpp,v 1.139 2007-01-17 08:14:24 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -315,7 +315,7 @@ int MergeFile(char *name, int warn_if_missing)
   CTX.geom.draw = 0; // don't try to draw the model while reading
   int status = 0;
   if(!strcmp(ext, ".stl") || !strcmp(ext, ".STL")){
-    status = GMODEL->readSTL(name, CTX.mesh.stl_distance_tol);
+    status = GMODEL->readSTL(name, CTX.geom.tolerance);
   }
   else if(!strcmp(ext, ".brep") || !strcmp(ext, ".rle") ||
 	  !strcmp(ext, ".brp") || !strcmp(ext, ".BRP")){
diff --git a/doc/TODO b/doc/TODO
index 544cebd244..b87b045d5e 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -1,4 +1,4 @@
-$Id: TODO,v 1.35 2007-01-08 16:42:42 geuzaine Exp $
+$Id: TODO,v 1.36 2007-01-17 08:14:24 geuzaine Exp $
 
 ********************************************************************
 
@@ -10,14 +10,6 @@ fix second order mesh for periodic surfaces
 
 ********************************************************************
 
-reimplement subdivision of extruded meshes
-
-********************************************************************
-
-reclassify volumes in new/tetgen 3D mesh
-
-********************************************************************
-
 bug: quads orientation is wrong after recombine + quads wrong in some
 cases
 
diff --git a/doc/gmsh.1 b/doc/gmsh.1
index 5fb1e30036..e3709e38b4 100644
--- a/doc/gmsh.1
+++ b/doc/gmsh.1
@@ -1,4 +1,4 @@
-.\" $Id: gmsh.1,v 1.74 2006-11-30 14:09:07 geuzaine Exp $
+.\" $Id: gmsh.1,v 1.75 2007-01-17 08:14:24 geuzaine Exp $
 .TH Gmsh 1 "09 March 2006" "Gmsh 2.0" "Gmsh Manual Pages"
 .UC 4
 .\" ********************************************************************
@@ -24,6 +24,9 @@ ASCII text files using \fIGmsh\fR's own scripting language.
 .TP 4
 .B \-0
 parse all input files, output unrolled geometry, and exit. 
+.TP 4
+.B \-tol float
+set geometrical tolerance. 
 .\" ********************************************************************
 .SH MESH OPTIONS
 .TP 4
@@ -75,9 +78,6 @@ load the post-processing view in file as the current background mesh.
 .B \-constrain
 constrain the background mesh with the characteristic lengths of the
 model.
-.TP 4
-.B \-histogram
-print mesh quality histogram.
 .\" ********************************************************************
 .SH POST-PROCESSING OPTIONS
 .TP 4
diff --git a/doc/texinfo/command_line.texi b/doc/texinfo/command_line.texi
index b6edbfb54d..afe17a5ca8 100644
--- a/doc/texinfo/command_line.texi
+++ b/doc/texinfo/command_line.texi
@@ -3,6 +3,8 @@
 @ftable @code
 @item -0
 Output unrolled geometry, then exit
+@item -tol float
+Set geometrical tolerance
 @end ftable
 
 @sp 1 
diff --git a/doc/texinfo/opt_geometry.texi b/doc/texinfo/opt_geometry.texi
index 50c2d13522..9793269455 100644
--- a/doc/texinfo/opt_geometry.texi
+++ b/doc/texinfo/opt_geometry.texi
@@ -124,6 +124,11 @@ Display size of tangent vectors (in pixels)@*
 Default value: @code{0}@*
 Saved in: @code{General.OptionsFileName}
 
+@item Geometry.Tolerance
+Geometrical tolerance@*
+Default value: @code{1e-06}@*
+Saved in: @code{General.OptionsFileName}
+
 @item Geometry.Volumes
 Display geometry volumes? (not implemented yet)@*
 Default value: @code{0}@*
diff --git a/doc/texinfo/opt_mesh.texi b/doc/texinfo/opt_mesh.texi
index 766b7ccf8d..86097cc7cc 100644
--- a/doc/texinfo/opt_mesh.texi
+++ b/doc/texinfo/opt_mesh.texi
@@ -10,13 +10,13 @@ Default value: @code{"praqzBPY"}@*
 Saved in: @code{General.OptionsFileName}
 
 @item Mesh.Algorithm
-2D mesh algorithm (1=isotropic, 2=anisotropic, 3=triangle)@*
+2D mesh algorithm (1=meshadapt, 2=delaunay)@*
 Default value: @code{1}@*
 Saved in: @code{General.OptionsFileName}
 
 @item Mesh.Algorithm3D
-3D mesh algorithm (1=isotropic, 4=netgen, 5=tetgen)@*
-Default value: @code{1}@*
+3D mesh algorithm (1=delaunay, 4=netgen)@*
+Default value: @code{4}@*
 Saved in: @code{General.OptionsFileName}
 
 @item Mesh.AngleSmoothNormals
@@ -114,11 +114,6 @@ Display mesh hexahedra?@*
 Default value: @code{1}@*
 Saved in: @code{General.OptionsFileName}
 
-@item Mesh.InitialOnly
-Only contruct the n-dimensional initial mesh (no refinement)@*
-Default value: @code{0}@*
-Saved in: @code{General.OptionsFileName}
-
 @item Mesh.LabelType
 Type of element label (0=element number, 1=elementary entity number, 2=physical entity number, 3=partition number, 4=coordinates)@*
 Default value: @code{0}@*
@@ -214,11 +209,6 @@ Optimize the mesh using Netgen to improve the quality of tetrahedral elements@*
 Default value: @code{0}@*
 Saved in: @code{General.OptionsFileName}
 
-@item Mesh.Partitioning
-Number of partitions applied to the final mesh@*
-Default value: @code{1}@*
-Saved in: @code{General.OptionsFileName}
-
 @item Mesh.Points
 Display mesh vertices (nodes)?@*
 Default value: @code{0}@*
@@ -254,11 +244,6 @@ Display mesh quadrangles?@*
 Default value: @code{1}@*
 Saved in: @code{General.OptionsFileName}
 
-@item Mesh.Quality
-Target quality for tetrahedral elements (currently only used by Tetgen)@*
-Default value: @code{1}@*
-Saved in: @code{General.OptionsFileName}
-
 @item Mesh.QualityInf
 Only display elements whose quality measure is greater than QualityInf@*
 Default value: @code{0}@*
@@ -286,7 +271,7 @@ Saved in: @code{General.OptionsFileName}
 
 @item Mesh.RandomFactor
 Random factor used in 2D and 3D meshing algorithm (test other values when the algorithm fails)@*
-Default value: @code{1e-10}@*
+Default value: @code{1e-09}@*
 Saved in: @code{General.OptionsFileName}
 
 @item Mesh.RecombineAlgo
@@ -329,11 +314,6 @@ Smooth the mesh normals?@*
 Default value: @code{0}@*
 Saved in: @code{General.OptionsFileName}
 
-@item Mesh.StlDistanceTol
-Distance tolerance between two distinct vertices in STL meshes@*
-Default value: @code{5e-07}@*
-Saved in: @code{General.OptionsFileName}
-
 @item Mesh.StlBinary
 Save STL files in binary format?@*
 Default value: @code{0}@*
diff --git a/doc/texinfo/opt_plugin.texi b/doc/texinfo/opt_plugin.texi
index 4e0bf1a243..37d3202575 100644
--- a/doc/texinfo/opt_plugin.texi
+++ b/doc/texinfo/opt_plugin.texi
@@ -407,22 +407,6 @@ Default value: @code{-1}
 Default value: @code{-1}
 @end table
 
-@item Plugin(ExtractEdges)
-Plugin(ExtractEdges) extracts the geometry edges
-from the surface view `iView', using `Angle' as
-the dihedral angle tolerance. If `iView' < 0, then
-plugin is run on the current view.
-
-Plugin(ExtractEdges) creates one new view.
-
-Numeric options:
-@table @code
-@item Angle
-Default value: @code{22}
-@item iView
-Default value: @code{-1}
-@end table
-
 @item Plugin(ExtractElements)
 Plugin(ExtractElements) extracts the elements
 from the view `iView' whose `TimeStep'-th values
-- 
GitLab