From e312a5bfb47b7686275dfa5b57e84f18c93e784a Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Wed, 16 Apr 2003 01:51:44 +0000
Subject: [PATCH] Major rewrite of the Overview section + web page

---
 Common/DefaultOptions.h      |  64 ++++----
 doc/gmsh.html                | 124 +++-------------
 doc/texinfo/gmsh.texi        | 274 ++++++++++++++++++-----------------
 doc/texinfo/opt_general.texi |  62 ++++----
 doc/texinfo/opt_mesh.texi    |   2 +-
 doc/texinfo/opt_solver.texi  |   4 +-
 6 files changed, 225 insertions(+), 305 deletions(-)

diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index 82f41cc829..0d1de45d9d 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -352,63 +352,63 @@ StringXNumber GeneralOptions_Number[] = {
   { F,   "Clip0" , opt_general_clip0 , 0. ,
     "Enable clip plane 0" },
   { F,   "Clip0A" , opt_general_clip0a , 0.0 ,
-    "First clip plane 0 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
+    "First coefficient in equation for clip plane 0 ('A' in equation 'AX+BY+CZ+D=0')" },
   { F,   "Clip0B" , opt_general_clip0b , 0.0 , 
-    "Second clip plane 0 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
+    "Second coefficient in equation for clip plane 0 ('B' in equation 'AX+BY+CZ+D=0')" },
   { F,   "Clip0C" , opt_general_clip0c , 0.0 , 
-    "Third clip plane 0 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
+    "Third coefficient in equation for clip plane 0 ('C' in equation 'AX+BY+CZ+D=0')" },
   { F,   "Clip0D" , opt_general_clip0d , 0.0 , 
-    "Fourth clip plane 0 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
+    "Fourth coefficient in equation for clip plane 0 ('D' in equation 'AX+BY+CZ+D=0')" },
   { F,   "Clip1" , opt_general_clip1 , 0.,
     "Enable clip plane 1" },
   { F,   "Clip1A" , opt_general_clip1a , 0.0 , 
-    "First clip plane 1 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
+    "First coefficient in equation for clip plane 1" },
   { F,   "Clip1B" , opt_general_clip1b , 0.0 , 
-    "Second clip plane 1 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
+    "Second coefficient in equation for clip plane 1" },
   { F,   "Clip1C" , opt_general_clip1c , 0.0 , 
-    "Third clip plane 1 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
+    "Third coefficient in equation for clip plane 1" },
   { F,   "Clip1D" , opt_general_clip1d , 0.0 , 
-    "Fourth clip plane 1 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
+    "Fourth coefficient in equation for clip plane 1" },
   { F,   "Clip2" , opt_general_clip2 , 0.,
     "Enable clip plane 2" },
   { F,   "Clip2A" , opt_general_clip2a , 0.0 , 
-    "First clip plane 2 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
+    "First coefficient in equation for clip plane 2" },
   { F,   "Clip2B" , opt_general_clip2b , 0.0 , 
-    "Second clip plane 2 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
+    "Second coefficient in equation for clip plane 2" },
   { F,   "Clip2C" , opt_general_clip2c , 0.0 , 
-    "Third clip plane 2 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
+    "Third coefficient in equation for clip plane 2" },
   { F,   "Clip2D" , opt_general_clip2d , 0.0 , 
-    "Fourth clip plane 2 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
+    "Fourth coefficient in equation for clip plane 2" },
   { F,   "Clip3" , opt_general_clip3 , 0.,
     "Enable clip plane 3" },
   { F,   "Clip3A" , opt_general_clip3a , 0.0 , 
-    "First clip plane 3 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
+    "First coefficient in equation for clip plane 3" },
   { F,   "Clip3B" , opt_general_clip3b , 0.0 , 
-    "Second clip plane 3 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
+    "Second coefficient in equation for clip plane 3" },
   { F,   "Clip3C" , opt_general_clip3c , 0.0 , 
-    "Third clip plane 3 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
+    "Third coefficient in equation for clip plane 3" },
   { F,   "Clip3D" , opt_general_clip3d , 0.0 , 
-    "Fourth clip plane 3 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
+    "Fourth coefficient in equation for clip plane 3" },
   { F,   "Clip4" , opt_general_clip4 , 0.,
     "Enable clip plane 4" },
   { F,   "Clip4A" , opt_general_clip4a , 0.0 , 
-    "First clip plane 4 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
+    "First coefficient in equation for clip plane 4" },
   { F,   "Clip4B" , opt_general_clip4b , 0.0 , 
-    "Second clip plane 4 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
+    "Second coefficient in equation for clip plane 4" },
   { F,   "Clip4C" , opt_general_clip4c , 0.0 , 
-    "Third clip plane 4 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
+    "Third coefficient in equation for clip plane 4" },
   { F,   "Clip4D" , opt_general_clip4d , 0.0 , 
-    "Fourth clip plane 4 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
+    "Fourth coefficient in equation for clip plane 4" },
   { F,   "Clip5" , opt_general_clip5 , 0.,
     "Enable clip plane 5" },
   { F,   "Clip5A" , opt_general_clip5a , 0.0 , 
-    "First clip plane 5 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
+    "First coefficient in equation for clip plane 5" },
   { F,   "Clip5B" , opt_general_clip5b , 0.0 , 
-    "Second clip plane 5 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
+    "Second coefficient in equation for clip plane 5" },
   { F,   "Clip5C" , opt_general_clip5c , 0.0 , 
-    "Third clip plane 5 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
+    "Third coefficient in equation for clip plane 5" },
   { F,   "Clip5D" , opt_general_clip5d , 0.0 , 
-    "Fourth clip plane 5 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
+    "Fourth coefficient in equation for clip plane 5" },
   { F|O, "ColorScheme", opt_general_color_scheme , 0. ,
     "Default color scheme (0, 1 or 2)" },
   { F|S, "ConfirmOverwrite" , opt_general_confirm_overwrite, 1. , 
@@ -518,11 +518,11 @@ StringXNumber GeneralOptions_Number[] = {
     "Number of subdivisions used to draw points or lines as spheres or cylinders" },
 
   { F,   "RotationX" , opt_general_rotation0 , 0.0 , 
-    "First Euler angle (used if Trackball == 0)" }, 
+    "First Euler angle (used if Trackball=0)" }, 
   { F,   "RotationY" , opt_general_rotation1 , 0.0 , 
-    "Second Euler angle (used if Trackball == 0)" }, 
+    "Second Euler angle (used if Trackball=0)" }, 
   { F,   "RotationZ" , opt_general_rotation2 , 0.0 , 
-    "Third Euler angle (used if Trackball == 0)" }, 
+    "Third Euler angle (used if Trackball=0)" }, 
   { F|O, "RotationCenterGravity" , opt_general_rotation_center_cg , 1. ,
     "Rotate around the center of gravity instead of (RotationCenterX, RotationCenterY, RotationCenterZ)" },
   { F,   "RotationCenterX" , opt_general_rotation_center0 , 0.0 , 
@@ -566,13 +566,13 @@ StringXNumber GeneralOptions_Number[] = {
   { F|O, "Trackball" , opt_general_trackball , 1. ,
     "Use trackball rotation mode" },
   { F,   "TrackballQuaternion0" , opt_general_quaternion0 , 0.0 , 
-    "First trackball quaternion component (used if Trackball == 1)" }, 
+    "First trackball quaternion component (used if Trackball=1)" }, 
   { F,   "TrackballQuaternion1" , opt_general_quaternion1 , 0.0 , 
-    "Second trackball quaternion component (used if Trackball == 1)" }, 
+    "Second trackball quaternion component (used if Trackball=1)" }, 
   { F,   "TrackballQuaternion2" , opt_general_quaternion2 , 0.0 , 
-    "Third trackball quaternion component (used if Trackball == 1)" }, 
+    "Third trackball quaternion component (used if Trackball=1)" }, 
   { F,   "TrackballQuaternion3" , opt_general_quaternion3 , 1.0 , 
-    "Fourth trackball quaternion component (used if Trackball == 1)" }, 
+    "Fourth trackball quaternion component (used if Trackball=1)" }, 
   { F,   "TranslationX" , opt_general_translation0 , 0.0 , 
     "X-axis translation (in model units)" },
   { F,   "TranslationY" , opt_general_translation1 , 0.0 , 
@@ -699,7 +699,7 @@ StringXNumber MeshOptions_Number[] = {
     "Display mesh with non adjacent elements (factor between 0 and 1)" },
 
   { F|O, "Format" , opt_mesh_format , FORMAT_MSH , 
-    "Mesh output format (1=MSH, 2=UNV)" },
+    "Mesh output format (1=MSH, 2=UNV, 3=GREF, 19=VRML)" },
 
   { F|O, "GammaInf" , opt_mesh_gamma_inf , 0.0 , 
     "Only display elements whose Gamma factor is greater than GammaInf" },
diff --git a/doc/gmsh.html b/doc/gmsh.html
index 311dd52bb8..73ea22835a 100644
--- a/doc/gmsh.html
+++ b/doc/gmsh.html
@@ -41,114 +41,23 @@ generator with built-in pre- and post-processing facilities</h1>
 
 <h2><a name="Description"></a>Description</h2>
 
-Gmsh is an automatic three-dimensional finite element mesh generator,
-primarily Delaunay, with built-in pre- and post-processing
-facilities. Its primal design goal is to provide a simple meshing tool
-for academic test cases with parametric input and up to date
-visualization capabilities. One of the strengths of Gmsh is its
-ability to respect a characteristic length field for the generation of
-adapted meshes on lines, surfaces and volumes. These adapted meshes
-can be mixed with simple structured (transfinite, elliptic, etc.)
-meshes in order to augment the flexibility.
-
-Gmsh is structured around four modules: <a
-href="#geometry">geometry</a>, <a href="#mesh">mesh</a>, <a
-href="#solver">solver</a> and <a
-href="#post-processing">post-processing</a>. The specification of any
-input to these modules is done either interactively, or in text data
-files (interactive specifications generate language bits in the input
-file, and vice versa). The accessibility of most features in the ASCII
-text file makes it possible to automate all treatments (loops, tests
-and external access methods permit advanced scripting capabilities). A
-brief description of the four modules is given hereafter.
-
-<h3><a name="geometry"></a>Geometry: geometrical entity definition</h3>
-
-Geometries are created in a bottom-up flow by successively defining
-points, oriented curves (segments, circles, ellipses, splines, etc.),
-oriented surfaces (plane surfaces, ruled surfaces, etc.) and
-volumes. Compound groups of geometrical entities can be defined, based
-on these elementary parametrized geometric entities. Data can be
-defined either interactively thanks to the menu system, or directly in
-the ASCII input files.  The scripting possibilities (with loops,
-tests, arrays of variables, etc.) allow fully parametrized definitions
-of all geometrical entities.
-
-<h3><a name="mesh"></a>Mesh: finite element mesh generation</h3>
-
-A finite element mesh is a tessellation of a given subset of
-R<sup>3</sup> by elementary geometrical elements of various shapes (in
-this case lines, triangles, quadrangles, tetrahedra, prisms, hexahedra
-and pyramids), arranged in such a way that if two of them intersect,
-they do so along a face, an edge or a node, and never otherwise. All
-the finite element meshes produced by Gmsh as unstructured, even if
-they were generated in a structured way. This implies that the
-elementary geometrical elements are defined only by an ordered list of
-their vertices (which allows the orientation of all their lower order
-geometrical entities) but no predefined relation is assumed between
-any two elementary elements.
+Gmsh is an automatic 3D finite element mesh generator (primarily
+Delaunay) with build-in CAD and post-processing facilities. Its primal
+design goal is to provide a simple meshing tool for academic test
+cases with parametric input and up to date visualization
+capabilities. One of its strengths is the ability to respect a
+characteristic length field for the generation of adapted meshes on
+lines, surfaces and volumes, and to mix these with simple structured
+meshes.
 <p>
-The mesh generation is performed in the same order as the geometry
-creation: curves are discretized first; the mesh of the curves is then
-used to mesh the surfaces; then the mesh of the surfaces is used to
-mesh the volumes. This automatically assures the continuity of the
-mesh when, for example, two surfaces share a common curve. Every
-meshing step is constrained by the characteristic length field, which
-can be uniform, specified by characteristic length associated to
-elementary geometrical entities, or associated to another mesh (the
-background mesh).
+Gmsh is built around four modules: geometry, mesh, solver and
+post-processing. The specification of any input to these modules is
+done either interactively using the graphical user interface or in
+ASCII text data files using Gmsh's own scripting language.
 <p>
-For each meshing step (i.e. the discretization of lines, surfaces and
-volumes), all structured mesh directives are executed first, and serve
-as additional constraints for the unstructured parts. The implemented
-Delaunay algorithm is subdivided in the following five steps for
-surface/volume discretization:
-<p>
-<ol>
-<li>trivial meshing of a box including the convex polygon/polyhedron
-defined by the boundary nodes resulting from the discretization of the
-curves/surfaces;
-
-<li>creation of the initial mesh by insertion of all the nodes on the
-curves/surfaces thanks to the Bowyer algorithm;
-
-<li>boundary restoration to force all the edges/faces of the
-curves/surfaces to be present in the initial mesh;
-
-<li>suppression of all the unwanted triangles/tetrahedra (in
-particular those containing the nodes of the initial box);
-
-<li>insertion of new nodes by the Bowyer algorithm until the
-characteristic size of each simplex is lower or equal to the
-characteristic length field evaluated at the center of its
-circumscribed circle/sphere.
-</ol>
-
-<h3><a name="solver"></a>Solver: external solver interface</h3>
-
-External solvers can be interfaced with Gmsh through a socket
-mechanism, which permits to easily launch computations either locally
-or on remote computers, and to collect and exploit the simulation
-results within Gmsh. The default solver interfaced with Gmsh is <a
-href="/getdp/">GetDP</a>. Check the <a href="#mysolver">solver
-examples</a> to see how to define your own solver (be sure to also
-read the answer to the question 6.1 in the <a
-HREF="/gmsh/doc/FAQ">FAQ</a>).
-
-<h3><a name="post-processing"></a>Post-processing: scalar and vector field visualization</h3>
-
-Multiple post-processing scalar or vector maps can be loaded and
-manipulated (globally or individually) along with the geometry and the
-mesh. Scalar fields are represented by iso-value curves/surfaces or
-color maps and vector fields by three-dimensional arrows or
-displacement maps. Post-processing functions include arbitrary section
-computation, offset, elevation, boundary extraction, color map and
-range modification, animation, <a href="/gl2ps/">vector graphic
-output</a>, etc. All post-processing options can be accessed either
-interactively or through the input ASCII text files. Scripting permits
-to automate all the post-processing operations (e.g. for the creation
-of complex animations).
-
+See Gmsh's reference manual for a more thorough <a
+href="/gmsh/doc/texinfo/gmsh_2.html">overview of Gmsh's
+capabilities</a>.
 
 <h2><a name="Documentation"></a>Documentation</h2>
 
@@ -156,7 +65,8 @@ of complex animations).
   <li><a href="/gmsh/doc/texinfo/gmsh.html">Reference manual</a> 
       (also available in
       <a href="/gmsh/doc/texinfo/gmsh.ps">postscript</a>,
-      <a href="/gmsh/doc/texinfo/gmsh.pdf">pdf</a> and 
+      <a href="/gmsh/doc/texinfo/gmsh.pdf">pdf</a>,
+      <a href="/gmsh/doc/texinfo/gmsh.txt">text</a> and 
       <a href="/gmsh/doc/texinfo/gmsh-info.tgz">info</a> formats)
   <li><a href="/gmsh/doc/FAQ">Frequently asked questions (FAQ)</a>
   <li><a href="/gmsh/doc/VERSIONS">Version history</a>
diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi
index c4cb52ff70..7cbfdbebf6 100644
--- a/doc/texinfo/gmsh.texi
+++ b/doc/texinfo/gmsh.texi
@@ -1,5 +1,5 @@
 \input texinfo.tex @c -*-texinfo-*-
-@c $Id: gmsh.texi,v 1.21 2003-04-15 18:35:46 geuzaine Exp $
+@c $Id: gmsh.texi,v 1.22 2003-04-16 01:51:44 geuzaine Exp $
 @c
 @c Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 @c
@@ -47,7 +47,7 @@
 @set EDITION        1.0
 @set GMSH-VERSION   1.44
 @set GMSH-WEB       @uref{http://www.geuz.org/gmsh/}
-@set COPYRIGHT      @copyright{} 1997-2003 Christophe Geuzaine, Jean-Francois Remacle
+@set COPYRIGHT      @copyright{} 1997-2003 Christophe Geuzaine, Jean-Fran@,{c}ois Remacle
 @c
 @settitle Gmsh @value{GMSH-VERSION}
 @footnotestyle separate
@@ -92,7 +92,7 @@ Copyright @value{COPYRIGHT}
 @subtitle Edition @value{EDITION} (@today{})
 
 @author Christophe Geuzaine
-@author Jean-Francois Remacle
+@author Jean-Fran@,{c}ois Remacle
 
 @page
 @vskip 0pt plus 1filll
@@ -119,7 +119,7 @@ all copies.
 @node Top, Copying conditions, (dir), (dir)
 @top Gmsh
 
-Christophe Geuzaine and Jean-Francois Remacle
+Christophe Geuzaine and Jean-Fran@,{c}ois Remacle
 
 Gmsh is an automatic 3D finite element mesh generator with build-in pre- and
 post-processing facilities. This is edition @value{EDITION} (@today{}) of
@@ -141,7 +141,7 @@ the @cite{Gmsh Reference Manual}, for Gmsh @value{GMSH-VERSION}.
 * Tutorial::                    A step-by-step tutorial.
 * Running Gmsh::                How to run Gmsh on your operating system.
 * File formats::                Input and output file formats.
-* Programming comments::        Some random notes for developpers.
+* Programming notes::           
 * Bugs and versions::           Contact information, version history and list of contributors.
 * Tips and tricks::             Some tips to make your life easier with Gmsh.
 * GNU General Public License::  Copy of the GNU GPL.
@@ -272,12 +272,11 @@ Project webpage @uref{http://www.gnu.org/copyleft/gpl-faq.html}.
 
 The source code and various pre-compiled versions of Gmsh (for most of the
 classical UNIX platforms, for Windows and for Mac OS) can be downloaded from
-the web site @value{GMSH-WEB}.
+the webpage @value{GMSH-WEB}.
 
 If you use Gmsh, we would appreciate that you mention it in your
-work. Published references, as well as the latest news about Gmsh
-developments and download information, are always available on
-@value{GMSH-WEB}.
+work. References, as well as the latest news about Gmsh development, are
+always available on @value{GMSH-WEB}.
 
 @end ifclear
 
@@ -295,23 +294,18 @@ Gmsh is an automatic three-dimensional finite element mesh generator,
 primarily Delaunay, with built-in pre- and post-processing facilities. Its
 primal design goal is to provide a simple meshing tool for academic test
 cases with parametric input and up to date visualization capabilities.  One
-of the strengths of Gmsh is its ability to respect a characteristic length
-field for the generation of adapted meshes on lines, surfaces and
-volumes. These adapted meshes can be mixed with simple structured
-(transfinite, extruded, etc.) meshes in order to augment the flexibility.
-All geometrical, mesh, solver and post-processing instructions are
-prescribed either interactively using the graphical user interface or in
-ASCII data files using Gmsh's own scripting language.
+of its strengths is the ability to respect a characteristic length field for
+the generation of adapted meshes on lines, surfaces and volumes, and to mix
+these with simple structured (transfinite, extruded, etc.) meshes.  
 
 Gmsh is structured around four modules: geometry, mesh, solver and
-post-processing. The specification of any input to these modules is done
-either interactively, or in text data files (interactive specifications
-generate language bits in the input file, and vice versa). The accessibility
-of most features in the ASCII text file makes it possible to automate all
-treatments (loops, tests and external access methods permit advanced
-scripting capabilities). The internal kernel of Gmsh reflects this
-structure: it is built around a geometry, mesh, solver and post-processing
-module. A brief description of these four modules is given hereafter.
+post-processing. All geometrical, mesh, solver and post-processing
+instructions are prescribed either interactively using the graphical user
+interface or in ASCII data files using Gmsh's own scripting language.
+Interactive actions generate language bits in the input files, and vice
+versa. This makes it possible to automate all treatments, using loops,
+conditionals and external system calls. A brief description of the four
+modules is given hereafter.
 
 @menu
 * Geometry::                    
@@ -330,15 +324,12 @@ module. A brief description of these four modules is given hereafter.
 @node Geometry, Mesh, Overview, Overview
 @section Geometry: geometrical entity definition
 
-Geometries are created in a bottom-up flow by successively defining
-points, oriented curves (segments, circles, ellipses, splines, etc.),
-oriented surfaces (plane surfaces, ruled surfaces, etc.) and
-volumes. Compound groups of geometrical entities can be defined, based
-on these elementary parametrized geometric entities. Data can be
-defined either interactively thanks to the menu system, or directly in
-the ASCII input files.  The scripting possibilities (with loops,
-tests, arrays of variables, etc.) allow fully parametrized definitions
-of all geometrical entities.
+Geometries are created in a bottom-up flow by successively defining points,
+oriented curves (segments, circles, ellipses, splines, @dots{}), oriented
+surfaces (plane surfaces, ruled surfaces, @dots{}) and volumes. Compound
+groups of geometrical entities can be defined, based on these elementary
+geometric entities. Gmsh's scripting language allows all geometrical
+entities to be fully parameterized.
 
 @c -------------------------------------------------------------------------
 @c Mesh: finite element mesh generation
@@ -347,21 +338,22 @@ of all geometrical entities.
 @node Mesh, Solver, Geometry, Overview
 @section Mesh: finite element mesh generation
 
-A finite element mesh is a tessellation of a given subset of R3 by
-elementary geometrical elements of various shapes (in this case lines,
-triangles, quadrangles, tetrahedra, prisms, hexahedra and pyramids),
-arranged in such a way that if two of them intersect, they do so along a
-face, an edge or a node, and never otherwise. All the finite element meshes
-produced by Gmsh as unstructured, even if they were generated in a
-structured way. This implies that the elementary geometrical elements are
-defined only by an ordered list of their vertices (which allows the
-orientation of all their lower order geometrical entities) but no predefined
-relation is assumed between any two elementary elements.
+A finite element mesh is a tessellation of a given subset of the
+three-dimensional space by elementary geometrical elements of various shapes
+(in Gmsh's case: lines, triangles, quadrangles, tetrahedra, prisms,
+hexahedra and pyramids), arranged in such a way that if two of them
+intersect, they do so along a face, an edge or a node, and never
+otherwise. All the finite element meshes produced by Gmsh as unstructured,
+even if they were generated in a structured way (e.g. by extrusion). This
+implies that the elementary geometrical elements are defined only by an
+ordered list of their vertices (which allows the orientation of all their
+lower order geometrical entities) but no predefined relation is assumed
+between any two elementary elements.
 
 The mesh generation is performed in the same order as the geometry
 creation: curves are discretized first; the mesh of the curves is then
 used to mesh the surfaces; then the mesh of the surfaces is used to
-mesh the volumes. This automatically assures the continuity of the
+mesh the volumes. This automatically assures the conformity of the
 mesh when, for example, two surfaces share a common curve. Every
 meshing step is constrained by the characteristic length field, which
 can be uniform, specified by characteristic length associated to
@@ -401,30 +393,30 @@ evaluated at the center of its circumscribed circle/sphere.
 @section Solver: external solver interface
 
 External solvers can be interfaced with Gmsh through Unix sockets, which
-permits to easily launch computations either locally or on remote computers,
-and to collect and exploit the simulation results within Gmsh. The default
+permits to easily launch external computations and to collect and exploit
+the simulation results within Gmsh's post-processing module. The default
 solver interfaced with Gmsh is GetDP
-(@uref{http://www.geuz.org/getdp/}). @xref{Solver}, to see how to define
-your own solver.
+(@uref{http://www.geuz.org/getdp/}).
 
 @c -------------------------------------------------------------------------
-@c Post-processing: scalar and vector field visualization
+@c Post-processing: scalar, vector and tensor field visualization
 @c -------------------------------------------------------------------------
 
 @node Post-processing, What Gmsh is pretty good at, Solver, Overview
-@section Post-processing: scalar and vector field visualization
-
-Multiple post-processing scalar or vector maps can be loaded and manipulated
-(globally or individually) along with the geometry and the mesh. Scalar
-fields are represented by iso-value curves/surfaces or color maps and vector
-fields by three-dimensional arrows or displacement maps. Post-processing
-functions include arbitrary section computation, offset, elevation, boundary
-extraction, color map and range modification, animation, vector graphic
-output, etc. All post-processing options can be accessed either
-interactively or through the input ASCII text files. Scripting permits to
-automate all the post-processing operations (e.g. for the creation of
-complex animations). User-defined operations can also be performed on
-post-proessing views through to dynamically loadable modules (plug-ins).
+@section Post-processing: scalar, vector and tensor field visualization
+
+Multiple post-processing scalar, vector or tensor maps can be loaded and
+manipulated (globally or individually) along with the geometry and the
+mesh. Scalar fields are represented by iso-value curves/surfaces or color
+maps, while vector and tensor fields are represented by three-dimensional
+arrows or displacement maps. Post-processing functions include arbitrary
+section computation, offset, elevation, boundary extraction, color map and
+range modification, animation, vector graphic output, etc. All
+post-processing options can be accessed either interactively or through the
+input ASCII text files. Scripting permits to automate all post-processing
+operations, e.g. for the creation of animations. User-defined operations can
+also be performed on post-proessing views through to dynamically loadable
+plugins.
 
 @c -------------------------------------------------------------------------
 @c What Gmsh is pretty good at...
@@ -433,53 +425,62 @@ post-proessing views through to dynamically loadable modules (plug-ins).
 @node What Gmsh is pretty good at, and what it is not so good at, Post-processing, Overview
 @section What Gmsh is pretty good at @dots{}
 
+Gmsh is a (relatively) small program, and was principally developped ``in
+academia, to solve academic problems''@dots{} Nevertheless, over the
+years, many people outside universities have found Gmsh useful in their
+day-to-day jobs. So here is a tentative list of what Gmsh does best:
+
 @itemize @bullet
 @item
-Describe quickly simple and/or ``repetitive'' geometries. Models are
-constructed by defining successively points, curves, surfaces and volumes
-(@pxref{Geometry}). Loops and includes can be used to perform repetitive
-tasks (@pxref{Loops and tests}, @pxref{General commands}).
+Quickly describe simple and/or ``repetitive'' geometries, thanks to
+user-defined functions, loops, conditionals and includes (see
+@ref{User-defined functions}, @ref{Loops and tests} and @pxref{General
+commands}).
 @item
-Parameterize these geometries: the model is described in Gmsh's own
-language, where all commands and command arguments can depend on previous
-calculations.
+Parameterize these geometries. Gmsh's scripting language permits all
+commands and command arguments to depend on previous calculations (see
+@ref{Expressions} and @ref{Geometry commands}).
 @item
 Generate 1D, 2D and 3D simplicial (i.e. using line segments, triangles and
 tetrahedra) finite element meshes. The 1D and 2D algorithms should have
-pretty good performance in most cases. The 3D algorithm is still more
-experimental.
+pretty good performance in most cases; the 3D algorithm is still somewhat
+experimental and slow (see @ref{Mesh module} and @ref{Tutorial}).
 @item
-Specify target element sizes: Gmsh provides several mechanisms to control
-the size of the elements in the final (interpolation from geometrical point
-characteristic lengths, explicit background mesh, attractors).
+Specify target element sizes. Gmsh provides several mechanisms to control
+the size of the elements in the final mesh: through interpolation from
+geometrical point characteristic lengths or geometrical attractors, or from
+a user-defined background mesh (@pxref{Mesh commands}).
 @item
-Create simple extruded geometries and meshes.
+Create simple extruded geometries and meshes (see @ref{Geometry commands}
+and @ref{Mesh commands}).
 @item
-Interact with your solver: Gmsh provides C/C++ and perl interfaces, and
+Interact with external solvers. Gmsh provides C/C++ and Perl interfaces, and
 others can be easily added (@pxref{Solver}).
 @item
-Visualize computational results in a great variety of ways. Gmsh can
-display scalar, vector and tensor data sets in many different ways.
+Visualize computational results in a great variety of ways. Gmsh can display
+scalar, vector and tensor data sets, and can perform various operations on
+the resulting post-processing views (@pxref{Post-processing}).
 @item
-Perform various operations on the post-processing views using plugins
-(@pxref{Post-processing}).
+Export plots in many different formats: vector PostScript or encapsulated
+PostScript, LaTeX, PNG, JPEG, @dots{} (@pxref{General options}).
 @item
-Exports plots in many different formats (vector PostScript or encapsulated
-PostScript, LaTeX, PNG, JPEG, GIF, etc.).
+Generate complex animations (see @ref{General tools} and @ref{t8.geo}).
 @item
-Generate complex animations.
+Run on low end machines and/or machines with no graphic system. Gmsh can be
+compiled with or without the graphical user interface, and all versions can
+be used either interactively or not, directly from the command line
+(@pxref{Running Gmsh}).
 @item
-Run on low end machines and/or machines without graphic systems: Gmsh can be
-compiled with or without the graphical user interface; graphical versions
-can be used either interactively or without graphicak output, directly from
-the command-line.
+Configure your preferred options. Gmsh has a large number of configurations
+options that can be set interactively using the GUI, scattered inside
+command files, changed on the fly in scripts, set in per-user configuration
+files, or specified on the command-line (see @ref{General options},
+@ref{Geometry options}, @ref{Mesh options}, @ref{Post-processing options}
+and @ref{Running Gmsh}).
 @item
-Configure your preferred options for all subsequent operations: Gmsh has a
-large number of configurations options that can be set interactively,
-scattered inside command files (and changed on the fly in scripts), set in
-per-user configuration files, or specified on the command-line
-(@pxref{General options}, @ref{Geometry options}, @ref{Mesh options},
-@ref{Post-processing options} and @ref{Running Gmsh}).
+Do all the above on various platforms, for free (@pxref{Copying
+conditions}), using clear-text ASCII files and/or a small but powerful
+graphical user interface.
 @end itemize
 
 @c -------------------------------------------------------------------------
@@ -489,32 +490,39 @@ per-user configuration files, or specified on the command-line
 @node and what it is not so good at, Syntactic rules, What Gmsh is pretty good at, Overview
 @section @dots{} and what it is not so good at
 
+Due to its small size, its academic roots and limited developer manpower,
+Gmsh has also some (a lot of?) weaknesses:
+
 @itemize @bullet
 @item
-The bottom-up approach for describing geometries can become tedious for
-complex structures.
+The bottom-up approach for describing geometries can become impractical for
+complex models.
 @item
 There is no support for NURBS and only very limited support for trimmed
 surfaces.
 @item
 Gmsh is not primarily a structured mesh generator: no automatic
 quadrilateral or hexahedral meshing algorithm is provided. If you want
-quadrangles, you have to use transfinite or extruded meshes (@pxref{Mesh})
-or recombine unstructured triangular meshes. For hexahedra, your only choice
-is transfinite or extruded meshes.
+quadrangles, you have to use transfinite or extruded meshes or recombine
+unstructured triangular meshes. For hexahedra, your only choice is
+transfinite or extruded meshes.
 @item
 Gmsh is not a multibloc generator: all meshes produced by Gmsh are
-conforming in the sense of finite element meshes (@pxref{Mesh})
+conforming in the sense of finite element meshes.
 @item
 There is not support for curved mesh elements as of this writing (Gmsh
 1.44).
 @item
-Gmsh is designed for solving academic test-cases, not industrial-size
+Gmsh was designed to solve academic test-cases, not industrial-size
 problems. You may find that Gmsh is too slow for large problems (with
-thousands of geometric primitives; or millions of mesh/post-processing
+thousands of geometric primitives, or millions of mesh/post-processing
 elements).
 @end itemize
 
+If you have the skill and time, feel free to contribute to the project: we
+will gladly accept any code contributions (@pxref{Programming notes}) to
+remedy these (and all other) shortcommings!
+
 @c -------------------------------------------------------------------------
 @c Syntactic Rules Used in this Document
 @c -------------------------------------------------------------------------
@@ -1645,7 +1653,7 @@ pop up menu on post-processing view button
 @c File Formats
 @c =========================================================================
 
-@node File formats, Programming comments, Running Gmsh, Top
+@node File formats, Programming notes, Running Gmsh, Top
 @chapter File formats
 
 @cindex File formats
@@ -2000,34 +2008,34 @@ The same 26 base objects can be displayed as in the ASCII or binary
 post-processing file formats:
 
 @example
-                    type  #list-of-coords #list-of-values
+                    @var{type}  #@var{list-of-coords}  #@var{list-of-values}
 ------------------------------------------------------------
-scalar point        SP    3               1  * @var{nb-time-step}
-vector point        VP    3               3  * @var{nb-time-step}
-tensor point        TP    3               9  * @var{nb-time-step}
-scalar line         SL    6               2  * @var{nb-time-step}
-vector line         VL    6               6  * @var{nb-time-step}
-tensor line         TL    6               18 * @var{nb-time-step}
-scalar triangle     ST    9               3  * @var{nb-time-step}
-vector triangle     VT    9               9  * @var{nb-time-step}
-tensor triangle     TT    9               27 * @var{nb-time-step}
-scalar quadrangle   SQ    12              4  * @var{nb-time-step}
-vector quadrangle   VQ    12              12 * @var{nb-time-step}
-tensor quadrangle   TQ    12              36 * @var{nb-time-step}
-scalar tetrahedron  SS    12              4  * @var{nb-time-step}
-vector tetrahedron  VS    12              12 * @var{nb-time-step}
-tensor tetrahedron  TS    12              36 * @var{nb-time-step}
-scalar hexahedron   SH    24              8  * @var{nb-time-step}
-vector hexahedron   VH    24              24 * @var{nb-time-step}
-tensor hexahedron   TH    24              72 * @var{nb-time-step}
-scalar prism        SI    18              6  * @var{nb-time-step}
-vector prism        VI    18              18 * @var{nb-time-step}
-tensor prism        TI    18              54 * @var{nb-time-step}
-scalar pyramid      SY    15              5  * @var{nb-time-step}
-vector pyramid      VY    15              15 * @var{nb-time-step}
-tensor pyramid      TY    15              45 * @var{nb-time-step}
-text 2d             T2    4               arbitrary
-text 3d             T3    5               arbitrary
+scalar point        SP    3            1  * @var{nb-time-step}
+vector point        VP    3            3  * @var{nb-time-step}
+tensor point        TP    3            9  * @var{nb-time-step}
+scalar line         SL    6            2  * @var{nb-time-step}
+vector line         VL    6            6  * @var{nb-time-step}
+tensor line         TL    6            18 * @var{nb-time-step}
+scalar triangle     ST    9            3  * @var{nb-time-step}
+vector triangle     VT    9            9  * @var{nb-time-step}
+tensor triangle     TT    9            27 * @var{nb-time-step}
+scalar quadrangle   SQ    12           4  * @var{nb-time-step}
+vector quadrangle   VQ    12           12 * @var{nb-time-step}
+tensor quadrangle   TQ    12           36 * @var{nb-time-step}
+scalar tetrahedron  SS    12           4  * @var{nb-time-step}
+vector tetrahedron  VS    12           12 * @var{nb-time-step}
+tensor tetrahedron  TS    12           36 * @var{nb-time-step}
+scalar hexahedron   SH    24           8  * @var{nb-time-step}
+vector hexahedron   VH    24           24 * @var{nb-time-step}
+tensor hexahedron   TH    24           72 * @var{nb-time-step}
+scalar prism        SI    18           6  * @var{nb-time-step}
+vector prism        VI    18           18 * @var{nb-time-step}
+tensor prism        TI    18           54 * @var{nb-time-step}
+scalar pyramid      SY    15           5  * @var{nb-time-step}
+vector pyramid      VY    15           15 * @var{nb-time-step}
+tensor pyramid      TY    15           45 * @var{nb-time-step}
+text 2d             T2    4            arbitrary
+text 3d             T3    5            arbitrary
 @end example
 
 But, for historical rerasons, contrary to the ASCII and binary
@@ -2187,11 +2195,11 @@ Pyramid:
  @end example
 
 @c =========================================================================
-@c Programming Comments
+@c Programming notes
 @c =========================================================================
 
-@node Programming comments, Bugs and versions, File formats, Top
-@chapter Programming comments
+@node Programming notes, Bugs and versions, File formats, Top
+@chapter Programming notes
 
 todo: ceci peut constituer une intro a un futur guide de programmation
 dans Gmsh...
@@ -2230,7 +2238,7 @@ The user interface is based on the FLTK widget set.
 
 @ifclear COMMERCIAL
 
-@node Bugs and versions, Tips and tricks, Programming comments, Top
+@node Bugs and versions, Tips and tricks, Programming notes, Top
 @chapter Bugs, versions and contributors
 
 @menu
diff --git a/doc/texinfo/opt_general.texi b/doc/texinfo/opt_general.texi
index 4f50d87d6f..2061a50aa9 100644
--- a/doc/texinfo/opt_general.texi
+++ b/doc/texinfo/opt_general.texi
@@ -60,22 +60,22 @@ Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip0A
-First clip plane 0 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')@*
+First coefficient in equation for clip plane 0 ('A' in equation 'AX+BY+CZ+D=0')@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip0B
-Second clip plane 0 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')@*
+Second coefficient in equation for clip plane 0 ('B' in equation 'AX+BY+CZ+D=0')@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip0C
-Third clip plane 0 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')@*
+Third coefficient in equation for clip plane 0 ('C' in equation 'AX+BY+CZ+D=0')@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip0D
-Fourth clip plane 0 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')@*
+Fourth coefficient in equation for clip plane 0 ('D' in equation 'AX+BY+CZ+D=0')@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
@@ -85,22 +85,22 @@ Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip1A
-First clip plane 1 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')@*
+First coefficient in equation for clip plane 1@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip1B
-Second clip plane 1 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')@*
+Second coefficient in equation for clip plane 1@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip1C
-Third clip plane 1 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')@*
+Third coefficient in equation for clip plane 1@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip1D
-Fourth clip plane 1 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')@*
+Fourth coefficient in equation for clip plane 1@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
@@ -110,22 +110,22 @@ Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip2A
-First clip plane 2 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')@*
+First coefficient in equation for clip plane 2@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip2B
-Second clip plane 2 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')@*
+Second coefficient in equation for clip plane 2@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip2C
-Third clip plane 2 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')@*
+Third coefficient in equation for clip plane 2@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip2D
-Fourth clip plane 2 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')@*
+Fourth coefficient in equation for clip plane 2@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
@@ -135,22 +135,22 @@ Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip3A
-First clip plane 3 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')@*
+First coefficient in equation for clip plane 3@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip3B
-Second clip plane 3 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')@*
+Second coefficient in equation for clip plane 3@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip3C
-Third clip plane 3 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')@*
+Third coefficient in equation for clip plane 3@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip3D
-Fourth clip plane 3 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')@*
+Fourth coefficient in equation for clip plane 3@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
@@ -160,22 +160,22 @@ Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip4A
-First clip plane 4 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')@*
+First coefficient in equation for clip plane 4@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip4B
-Second clip plane 4 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')@*
+Second coefficient in equation for clip plane 4@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip4C
-Third clip plane 4 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')@*
+Third coefficient in equation for clip plane 4@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip4D
-Fourth clip plane 4 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')@*
+Fourth coefficient in equation for clip plane 4@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
@@ -185,22 +185,22 @@ Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip5A
-First clip plane 5 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')@*
+First coefficient in equation for clip plane 5@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip5B
-Second clip plane 5 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')@*
+Second coefficient in equation for clip plane 5@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip5C
-Third clip plane 5 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')@*
+Third coefficient in equation for clip plane 5@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.Clip5D
-Fourth clip plane 5 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')@*
+Fourth coefficient in equation for clip plane 5@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
@@ -450,17 +450,17 @@ Default value: @code{10}@*
 Saved in: @code{General.OptionsFileName}
 
 @item General.RotationX
-First Euler angle (used if Trackball == 0)@*
+First Euler angle (used if Trackball=0)@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.RotationY
-Second Euler angle (used if Trackball == 0)@*
+Second Euler angle (used if Trackball=0)@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.RotationZ
-Third Euler angle (used if Trackball == 0)@*
+Third Euler angle (used if Trackball=0)@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
@@ -555,22 +555,22 @@ Default value: @code{1}@*
 Saved in: @code{General.OptionsFileName}
 
 @item General.TrackballQuaternion0
-First trackball quaternion component (used if Trackball == 1)@*
+First trackball quaternion component (used if Trackball=1)@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.TrackballQuaternion1
-Second trackball quaternion component (used if Trackball == 1)@*
+Second trackball quaternion component (used if Trackball=1)@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.TrackballQuaternion2
-Third trackball quaternion component (used if Trackball == 1)@*
+Third trackball quaternion component (used if Trackball=1)@*
 Default value: @code{0}@*
 Saved in: @code{-}
 
 @item General.TrackballQuaternion3
-Fourth trackball quaternion component (used if Trackball == 1)@*
+Fourth trackball quaternion component (used if Trackball=1)@*
 Default value: @code{1}@*
 Saved in: @code{-}
 
diff --git a/doc/texinfo/opt_mesh.texi b/doc/texinfo/opt_mesh.texi
index 190f768388..966c851874 100644
--- a/doc/texinfo/opt_mesh.texi
+++ b/doc/texinfo/opt_mesh.texi
@@ -85,7 +85,7 @@ Default value: @code{1}@*
 Saved in: @code{General.OptionsFileName}
 
 @item Mesh.Format
-Mesh output format (1=MSH, 2=UNV)@*
+Mesh output format (1=MSH, 2=UNV, 3=GREF, 19=VRML)@*
 Default value: @code{1}@*
 Saved in: @code{General.OptionsFileName}
 
diff --git a/doc/texinfo/opt_solver.texi b/doc/texinfo/opt_solver.texi
index 9fd73afaf3..60fb5a5fa2 100644
--- a/doc/texinfo/opt_solver.texi
+++ b/doc/texinfo/opt_solver.texi
@@ -7,7 +7,9 @@ Saved in: @code{General.OptionsFileName}
 @item Solver.Help0
 Help string for solver 0@*
 Default value: @code{"A General environment for the treatment of
-Discrete Problems. Copyright (c) 1997-2003 Patrick Dular and Christophe Geuzaine.
+Discrete Problems.
+Copyright (c) 1997-2003
+Patrick Dular and Christophe Geuzaine.
 Visit http://www.geuz.org/getdp/ for more info"}@*
 Saved in: @code{General.OptionsFileName}
 
-- 
GitLab